From d45ef0148c997efef3612e25b895b2af15c54da4 Mon Sep 17 00:00:00 2001 From: tayttt Date: Fri, 26 Jun 2026 01:13:44 +0800 Subject: [PATCH] fix: close app on failed login and update SharpZipLib --- .../Txgy.EWS.Client.PageModule.csproj | 4 +- Txgy.EWS.Client.PageModule/packages.config | 2 +- Txgy.EWS.Client.Start/App.config | 4 + Txgy.EWS.Client.Start/App.xaml.cs | 2 + packages/SharpZipLib.1.3.3/.signature.p7s | Bin 0 -> 9467 bytes .../SharpZipLib.1.3.3/SharpZipLib.1.3.3.nupkg | Bin 0 -> 655974 bytes .../images/sharpziplib-nuget-256x256.png | Bin 0 -> 5435 bytes .../lib/net45/ICSharpCode.SharpZipLib.dll | Bin 0 -> 204800 bytes .../lib/net45/ICSharpCode.SharpZipLib.pdb | Bin 0 -> 102612 bytes .../lib/net45/ICSharpCode.SharpZipLib.xml | 10977 ++++++++++++++++ .../ICSharpCode.SharpZipLib.dll | Bin 0 -> 204288 bytes .../ICSharpCode.SharpZipLib.pdb | Bin 0 -> 108456 bytes .../ICSharpCode.SharpZipLib.xml | 10977 ++++++++++++++++ .../ICSharpCode.SharpZipLib.dll | Bin 0 -> 204800 bytes .../ICSharpCode.SharpZipLib.pdb | Bin 0 -> 109016 bytes .../ICSharpCode.SharpZipLib.xml | 10977 ++++++++++++++++ packages/sharpziplib/1.3.3/.nupkg.metadata | 5 + packages/sharpziplib/1.3.3/.signature.p7s | Bin 0 -> 9467 bytes .../images/sharpziplib-nuget-256x256.png | Bin 0 -> 5435 bytes .../lib/net45/ICSharpCode.SharpZipLib.dll | Bin 0 -> 204800 bytes .../lib/net45/ICSharpCode.SharpZipLib.pdb | Bin 0 -> 102612 bytes .../lib/net45/ICSharpCode.SharpZipLib.xml | 10977 ++++++++++++++++ .../ICSharpCode.SharpZipLib.dll | Bin 0 -> 204288 bytes .../ICSharpCode.SharpZipLib.pdb | Bin 0 -> 108456 bytes .../ICSharpCode.SharpZipLib.xml | 10977 ++++++++++++++++ .../ICSharpCode.SharpZipLib.dll | Bin 0 -> 204800 bytes .../ICSharpCode.SharpZipLib.pdb | Bin 0 -> 109016 bytes .../ICSharpCode.SharpZipLib.xml | 10977 ++++++++++++++++ .../sharpziplib/1.3.3/sharpziplib.1.3.3.nupkg | Bin 0 -> 655974 bytes .../1.3.3/sharpziplib.1.3.3.nupkg.sha512 | 1 + packages/sharpziplib/1.3.3/sharpziplib.nuspec | 22 + 31 files changed, 65899 insertions(+), 3 deletions(-) create mode 100644 packages/SharpZipLib.1.3.3/.signature.p7s create mode 100644 packages/SharpZipLib.1.3.3/SharpZipLib.1.3.3.nupkg create mode 100644 packages/SharpZipLib.1.3.3/images/sharpziplib-nuget-256x256.png create mode 100644 packages/SharpZipLib.1.3.3/lib/net45/ICSharpCode.SharpZipLib.dll create mode 100644 packages/SharpZipLib.1.3.3/lib/net45/ICSharpCode.SharpZipLib.pdb create mode 100644 packages/SharpZipLib.1.3.3/lib/net45/ICSharpCode.SharpZipLib.xml create mode 100644 packages/SharpZipLib.1.3.3/lib/netstandard2.0/ICSharpCode.SharpZipLib.dll create mode 100644 packages/SharpZipLib.1.3.3/lib/netstandard2.0/ICSharpCode.SharpZipLib.pdb create mode 100644 packages/SharpZipLib.1.3.3/lib/netstandard2.0/ICSharpCode.SharpZipLib.xml create mode 100644 packages/SharpZipLib.1.3.3/lib/netstandard2.1/ICSharpCode.SharpZipLib.dll create mode 100644 packages/SharpZipLib.1.3.3/lib/netstandard2.1/ICSharpCode.SharpZipLib.pdb create mode 100644 packages/SharpZipLib.1.3.3/lib/netstandard2.1/ICSharpCode.SharpZipLib.xml create mode 100644 packages/sharpziplib/1.3.3/.nupkg.metadata create mode 100644 packages/sharpziplib/1.3.3/.signature.p7s create mode 100644 packages/sharpziplib/1.3.3/images/sharpziplib-nuget-256x256.png create mode 100644 packages/sharpziplib/1.3.3/lib/net45/ICSharpCode.SharpZipLib.dll create mode 100644 packages/sharpziplib/1.3.3/lib/net45/ICSharpCode.SharpZipLib.pdb create mode 100644 packages/sharpziplib/1.3.3/lib/net45/ICSharpCode.SharpZipLib.xml create mode 100644 packages/sharpziplib/1.3.3/lib/netstandard2.0/ICSharpCode.SharpZipLib.dll create mode 100644 packages/sharpziplib/1.3.3/lib/netstandard2.0/ICSharpCode.SharpZipLib.pdb create mode 100644 packages/sharpziplib/1.3.3/lib/netstandard2.0/ICSharpCode.SharpZipLib.xml create mode 100644 packages/sharpziplib/1.3.3/lib/netstandard2.1/ICSharpCode.SharpZipLib.dll create mode 100644 packages/sharpziplib/1.3.3/lib/netstandard2.1/ICSharpCode.SharpZipLib.pdb create mode 100644 packages/sharpziplib/1.3.3/lib/netstandard2.1/ICSharpCode.SharpZipLib.xml create mode 100644 packages/sharpziplib/1.3.3/sharpziplib.1.3.3.nupkg create mode 100644 packages/sharpziplib/1.3.3/sharpziplib.1.3.3.nupkg.sha512 create mode 100644 packages/sharpziplib/1.3.3/sharpziplib.nuspec diff --git a/Txgy.EWS.Client.PageModule/Txgy.EWS.Client.PageModule.csproj b/Txgy.EWS.Client.PageModule/Txgy.EWS.Client.PageModule.csproj index 36500b5..c05c61e 100644 --- a/Txgy.EWS.Client.PageModule/Txgy.EWS.Client.PageModule.csproj +++ b/Txgy.EWS.Client.PageModule/Txgy.EWS.Client.PageModule.csproj @@ -106,8 +106,8 @@ ..\packages\HandyControl.3.3.0\lib\net48\HandyControl.dll - - ..\packages\SharpZipLib.1.2.0\lib\net45\ICSharpCode.SharpZipLib.dll + + ..\packages\SharpZipLib.1.3.3\lib\net45\ICSharpCode.SharpZipLib.dll ..\packages\K4os.Compression.LZ4.1.2.6\lib\net46\K4os.Compression.LZ4.dll diff --git a/Txgy.EWS.Client.PageModule/packages.config b/Txgy.EWS.Client.PageModule/packages.config index 9d5ac23..5c14ef1 100644 --- a/Txgy.EWS.Client.PageModule/packages.config +++ b/Txgy.EWS.Client.PageModule/packages.config @@ -21,7 +21,7 @@ - + diff --git a/Txgy.EWS.Client.Start/App.config b/Txgy.EWS.Client.Start/App.config index 84dc288..3d9e45c 100644 --- a/Txgy.EWS.Client.Start/App.config +++ b/Txgy.EWS.Client.Start/App.config @@ -41,6 +41,10 @@ + + + + diff --git a/Txgy.EWS.Client.Start/App.xaml.cs b/Txgy.EWS.Client.Start/App.xaml.cs index 22676ef..87683da 100644 --- a/Txgy.EWS.Client.Start/App.xaml.cs +++ b/Txgy.EWS.Client.Start/App.xaml.cs @@ -67,6 +67,7 @@ namespace Txgy.EWS.Client.Start GlobalConfig.ReadConfig(); //Debug.WriteLine(GlobalConfig.LoadDataTimeLenMins); //Debug.WriteLine(GlobalConfig.DataCacheTimeLenMins); + ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown; _loginSucceeded = Container.Resolve().ShowDialog() == true; if (!_loginSucceeded) { @@ -91,6 +92,7 @@ namespace Txgy.EWS.Client.Start { //GlobalConfig.ReadConfig(); //CommonLogHelper.Debug("====Start=====>"); + ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose; base.InitializeShell(shell); } } diff --git a/packages/SharpZipLib.1.3.3/.signature.p7s b/packages/SharpZipLib.1.3.3/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..8ada451761972f3dfc40dcbcd495c34b5092ca27 GIT binary patch literal 9467 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

&WnOh*cjj8XXp&4%e)Ju_| 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

?GDzZmI90 z*?UpS;z*oChO21D?ry{2xA7D!-G6%uR-!h)6c437r_`s^omTPti+r;wGZ6UlRal^!(1F03cxnM# z%Y+fcCXfU~;#-d!-*bR{~LXA0v%|IY_5784e#3Gtau4)wV=lqrh+2zDee7+TuRz8 zNKp>ju)W3ZE_PNRQ1cny%8L+8Dv_$pW^C_}lDtP^IJ-#|{iltU8IppwA)mm|q*z)$ zifA@lQ24ir;>UV!60#o|fTnw|WCPG2X*|_VoM=FyS-I8JH~wq}sYCik#VNaw1#|Ng z_5r^jU?oBp<3*7R$>jf%q(=H5PMD9jk)p~nwmqY}Um&M$0h3i;XUCI}j{q0<;_`~Y z_v!n}9n4nQq5A`>S!euQWy&@BTAOb zy)~iNoEI~Lm<3lbV3IFGhS2~mSuG_SLHXj%?Lksk(jocNcW#FAC%%+V#Y!bQBRwL) zawHK$VSPMJtEG@0hNJnjI7%cC1x^Wnq{fA=qceb*46V9%f68S=CLm2ObT03N4S1S# z?NXSoi#wM9qkkoJf14~H4NKsQWwG>%E(FwJ zykb8+wfZwylh%%sK7n&0h=umrB!kx90$#p>6nL-V4Vi_LK3L~5BP>!dpOd?o*~oO} zUuqd&PUMOgF;T=>7F2eaScwBXXNxLC3i|AY=7lAY(G|QYc$8&<&X1&si5(y*>U;`8 zBjt%1t)BB`+7GO5u

xGBd8OG9JUFEaGQeB@e5!ll#X%s`umAEUaVW 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 literal 0 HcmV?d00001 diff --git a/packages/SharpZipLib.1.3.3/images/sharpziplib-nuget-256x256.png b/packages/SharpZipLib.1.3.3/images/sharpziplib-nuget-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..60b3a8dae4021d51356ffcb25261306cc14afa58 GIT binary patch literal 5435 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 B_~ZZp literal 0 HcmV?d00001 diff --git a/packages/SharpZipLib.1.3.3/lib/net45/ICSharpCode.SharpZipLib.dll b/packages/SharpZipLib.1.3.3/lib/net45/ICSharpCode.SharpZipLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..4dc2759ee7b6f130c89360208aa66a6676365bd4 GIT binary patch literal 204800 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 literal 0 HcmV?d00001 diff --git a/packages/SharpZipLib.1.3.3/lib/net45/ICSharpCode.SharpZipLib.xml b/packages/SharpZipLib.1.3.3/lib/net45/ICSharpCode.SharpZipLib.xml new file mode 100644 index 0000000..ada193d --- /dev/null +++ b/packages/SharpZipLib.1.3.3/lib/net45/ICSharpCode.SharpZipLib.xml @@ -0,0 +1,10977 @@ + + + + ICSharpCode.SharpZipLib + + + +

+ An example class to demonstrate compression and decompression of BZip2 streams. + + + + + Decompress the input writing + uncompressed data to the output stream + + The readable stream containing data to decompress. + The output stream to receive the decompressed data. + Both streams are closed on completion if true. + + + + Compress the input stream sending + result data to output stream + + The readable stream to compress. + The output stream to receive the compressed data. + Both streams are closed on completion if true. + Block size acts as compression level (1 to 9) with 1 giving + the lowest compression and 9 the highest. + + + + Defines internal values for both compression and decompression + + + + + Random numbers used to randomise repetitive blocks + + + + + When multiplied by compression parameter (1-9) gives the block size for compression + 9 gives the best compression but uses the most memory. + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + BZip2Exception represents exceptions specific to BZip2 classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the BZip2Exception class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + An input stream that decompresses files in the BZip2 format + + + + + Construct instance for reading from stream + + Data source + + + + Get/set flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + + + + Gets a value indicating if the stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking. + + + + + Gets a value indicating whether the current stream supports writing. + This property always returns false + + + + + Gets the length in bytes of the stream. + + + + + Gets the current position of the stream. + Setting the position is not supported and will throw a NotSupportException. + + Any attempt to set the position. + + + + Flushes the stream. + + + + + Set the streams position. This operation is not supported and will throw a NotSupportedException + + A byte offset relative to the parameter. + A value of type indicating the reference point used to obtain the new position. + The new position of the stream. + Any access + + + + Sets the length of this stream to the given value. + This operation is not supported and will throw a NotSupportedExceptionortedException + + The new length for the stream. + Any access + + + + Writes a block of bytes to this stream using data from a buffer. + This operation is not supported and will throw a NotSupportedException + + The buffer to source data from. + The offset to start obtaining data from. + The number of bytes of data to write. + Any access + + + + Writes a byte to the current position in the file stream. + This operation is not supported and will throw a NotSupportedException + + The value to write. + Any access + + + + Read a sequence of bytes and advances the read position by one byte. + + Array of bytes to store values in + Offset in array to begin storing data + The maximum number of bytes to read + The total number of bytes read into the buffer. This might be less + than the number of bytes requested if that number of bytes are not + currently available or zero if the end of the stream is reached. + + + + + Closes the stream, releasing any associated resources. + + + + + Read a byte from stream advancing position + + byte read or -1 on end of stream + + + + An output stream that compresses into the BZip2 format + including file header chars into another stream. + + + + + Construct a default output stream with maximum block size + + The stream to write BZip data onto. + + + + Initialise a new instance of the + for the specified stream, using the given blocksize. + + The stream to write compressed data to. + The block size to use. + + Valid block sizes are in the range 1..9, with 1 giving + the lowest compression and 9 the highest. + + + + + Ensures that resources are freed and other cleanup operations + are performed when the garbage collector reclaims the BZip2OutputStream. + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking + + + + + Gets a value indicating whether the current stream supports writing + + + + + Gets the length in bytes of the stream + + + + + Gets or sets the current position of this stream. + + + + + Sets the current position of this stream to the given value. + + The point relative to the offset from which to being seeking. + The reference point from which to begin seeking. + The new position in the stream. + + + + Sets the length of this stream to the given value. + + The new stream length. + + + + Read a byte from the stream advancing the position. + + The byte read cast to an int; -1 if end of stream. + + + + Read a block of bytes + + The buffer to read into. + The offset in the buffer to start storing data at. + The maximum number of bytes to read. + The total number of bytes read. This might be less than the number of bytes + requested if that number of bytes are not currently available, or zero + if the end of the stream is reached. + + + + Write a block of bytes to the stream + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + + + + Write a byte to the stream. + + The byte to write to the stream. + + + + Get the number of bytes written to output. + + + + + Get the number of bytes written to the output. + + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Flush output buffers + + + + + Computes Adler32 checksum for a stream of data. An Adler32 + checksum is not as reliable as a CRC32 checksum, but a lot faster to + compute. + + The specification for Adler32 may be found in RFC 1950. + ZLIB Compressed Data Format Specification version 3.3) + + + From that document: + + "ADLER32 (Adler-32 checksum) + This contains a checksum value of the uncompressed data + (excluding any dictionary data) computed according to Adler-32 + algorithm. This algorithm is a 32-bit extension and improvement + of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 + standard. + + Adler-32 is composed of two sums accumulated per byte: s1 is + the sum of all bytes, s2 is the sum of all s1 values. Both sums + are done modulo 65521. s1 is initialized to 1, s2 to zero. The + Adler-32 checksum is stored as s2*65536 + s1 in most- + significant-byte first (network) order." + + "8.2. The Adler-32 algorithm + + The Adler-32 algorithm is much faster than the CRC32 algorithm yet + still provides an extremely low probability of undetected errors. + + The modulo on unsigned long accumulators can be delayed for 5552 + bytes, so the modulo operation time is negligible. If the bytes + are a, b, c, the second sum is 3a + 2b + c + 3, and so is position + and order sensitive, unlike the first sum, which is just a + checksum. That 65521 is prime is important to avoid a possible + large class of two-byte errors that leave the check unchanged. + (The Fletcher checksum uses 255, which is not prime and which also + makes the Fletcher check insensitive to single byte changes 0 - + 255.) + + The sum s1 is initialized to 1 instead of zero to make the length + of the sequence part of s2, so that the length does not have to be + checked separately. (Any sequence of zeroes has a Fletcher + checksum of zero.)" + + + + + + + largest prime smaller than 65536 + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the Adler32 data checksum as if no update was ever called. + + + + + Returns the Adler32 data checksum computed so far. + + + + + Updates the checksum with the byte b. + + + The data value to add. The high byte of the int is ignored. + + + + + Updates the Adler32 data checksum with the bytes taken from + a block of data. + + Contains the data to update the checksum with. + + + + Update Adler32 data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + CRC-32 with unreversed data and reversed output + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + This implementation uses sixteen lookup tables stored in one linear array + to implement the slicing-by-16 algorithm, a variant of the slicing-by-8 + algorithm described in this Intel white paper: + + https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf + + The first lookup table is simply the CRC of all possible eight bit values. + Each successive lookup table is derived from the original table generated + by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs + together will produce the same output as a byte-by-byte CRC loop with + fewer arithmetic and bit manipulation operations, at the cost of increased + memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table, + which is still small enough to fit in most processors' L1 cache.) + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the CRC data checksum as if no update was ever called. + + + + + Returns the CRC data checksum computed so far. + + Reversed Out = true + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of bval + + Reversed Data = false + + + + Updates the CRC data checksum with the bytes taken from + a block of data. + + Contains the data to update the CRC with. + + + + Update CRC data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + Internal helper function for updating a block of data using slicing. + + The array containing the data to add + Range start for (inclusive) + The number of bytes to checksum starting from + + + + A non-inlined function for updating data that doesn't fit in a 16-byte + block. We don't expect to enter this function most of the time, and when + we do we're not here for long, so disabling inlining here improves + performance overall. + + The array containing the data to add + Range start for (inclusive) + Range end for (exclusive) + + + + CRC-32 with reversed data and unreversed output + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + This implementation uses sixteen lookup tables stored in one linear array + to implement the slicing-by-16 algorithm, a variant of the slicing-by-8 + algorithm described in this Intel white paper: + + https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf + + The first lookup table is simply the CRC of all possible eight bit values. + Each successive lookup table is derived from the original table generated + by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs + together will produce the same output as a byte-by-byte CRC loop with + fewer arithmetic and bit manipulation operations, at the cost of increased + memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table, + which is still small enough to fit in most processors' L1 cache.) + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the CRC data checksum as if no update was ever called. + + + + + Returns the CRC data checksum computed so far. + + Reversed Out = false + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of bval + + Reversed Data = true + + + + Updates the CRC data checksum with the bytes taken from + a block of data. + + Contains the data to update the CRC with. + + + + Update CRC data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + Internal helper function for updating a block of data using slicing. + + The array containing the data to add + Range start for (inclusive) + The number of bytes to checksum starting from + + + + A non-inlined function for updating data that doesn't fit in a 16-byte + block. We don't expect to enter this function most of the time, and when + we do we're not here for long, so disabling inlining here improves + performance overall. + + The array containing the data to add + Range start for (inclusive) + Range end for (exclusive) + + + + The number of slicing lookup tables to generate. + + + + + Generates multiple CRC lookup tables for a given polynomial, stored + in a linear array of uints. The first block (i.e. the first 256 + elements) is the same as the byte-by-byte CRC lookup table. + + The generating CRC polynomial + Whether the polynomial is in reversed bit order + A linear array of 256 * elements + + This table could also be generated as a rectangular array, but the + JIT compiler generates slower code than if we use a linear array. + Known issue, see: https://github.com/dotnet/runtime/issues/30275 + + + + + Mixes the first four bytes of input with + using normal ordering before calling . + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + Checksum state before this update call + A new unfinalized checksum value + + + Assumes input[offset]..input[offset + 15] are valid array indexes. + For performance reasons, this must be checked by the caller. + + + + + Mixes the first four bytes of input with + using reflected ordering before calling . + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + Checksum state before this update call + A new unfinalized checksum value + + + Assumes input[offset]..input[offset + 15] are valid array indexes. + For performance reasons, this must be checked by the caller. + + + + + A shared method for updating an unfinalized CRC checksum using slicing-by-16. + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + First byte of input after mixing with the old CRC + Second byte of input after mixing with the old CRC + Third byte of input after mixing with the old CRC + Fourth byte of input after mixing with the old CRC + A new unfinalized checksum value + + + Even though the first four bytes of input are fed in as arguments, + should be the same value passed to this + function's caller (either or + ). This method will get inlined + into both functions, so using the same offset produces faster code. + + + Because most processors running C# have some kind of instruction-level + parallelism, the order of XOR operations can affect performance. This + ordering assumes that the assembly code generated by the just-in-time + compiler will emit a bunch of arithmetic operations for checking array + bounds. Then it opportunistically XORs a1 and a2 to keep the processor + busy while those other parts of the pipeline handle the range check + calculations. + + + + + + Interface to compute a data checksum used by checked input/output streams. + A data checksum can be updated by one byte or with a byte array. After each + update the value of the current checksum can be returned by calling + getValue. The complete checksum object can also be reset + so it can be used again with new data. + + + + + Resets the data checksum as if no update was ever called. + + + + + Returns the data checksum computed so far. + + + + + Adds one byte to the data checksum. + + + the data value to add. The high byte of the int is ignored. + + + + + Updates the data checksum with the bytes taken from the array. + + + buffer an array of bytes + + + + + Adds the byte array to the data checksum. + + + The chunk of data to add + + + + + Event arguments for scanning. + + + + + Initialise a new instance of + + The file or directory name. + + + + The file or directory name for this event. + + + + + Get set a value indicating if scanning should continue or not. + + + + + Event arguments during processing of a single file or directory. + + + + + Initialise a new instance of + + The file or directory name if known. + The number of bytes processed so far + The total number of bytes to process, 0 if not known + + + + The name for this event if known. + + + + + Get set a value indicating whether scanning should continue or not. + + + + + Get a percentage representing how much of the has been processed + + 0.0 to 100.0 percent; 0 if target is not known. + + + + The number of bytes processed so far + + + + + The number of bytes to process. + + Target may be 0 or negative if the value isnt known. + + + + Event arguments for directories. + + + + + Initialize an instance of . + + The name for this directory. + Flag value indicating if any matching files are contained in this directory. + + + + Get a value indicating if the directory contains any matching files or not. + + + + + Arguments passed when scan failures are detected. + + + + + Initialise a new instance of + + The name to apply. + The exception to use. + + + + The applicable name. + + + + + The applicable exception. + + + + + Get / set a value indicating whether scanning should continue. + + + + + Delegate invoked before starting to process a file. + + The source of the event + The event arguments. + + + + Delegate invoked during processing of a file or directory + + The source of the event + The event arguments. + + + + Delegate invoked when a file has been completely processed. + + The source of the event + The event arguments. + + + + Delegate invoked when a directory failure is detected. + + The source of the event + The event arguments. + + + + Delegate invoked when a file failure is detected. + + The source of the event + The event arguments. + + + + FileSystemScanner provides facilities scanning of files and directories. + + + + + Initialise a new instance of + + The file filter to apply when scanning. + + + + Initialise a new instance of + + The file filter to apply. + The directory filter to apply. + + + + Initialise a new instance of + + The file filter to apply. + + + + Initialise a new instance of + + The file filter to apply. + The directory filter to apply. + + + + Delegate to invoke when a directory is processed. + + + + + Delegate to invoke when a file is processed. + + + + + Delegate to invoke when processing for a file has finished. + + + + + Delegate to invoke when a directory failure is detected. + + + + + Delegate to invoke when a file failure is detected. + + + + + Raise the DirectoryFailure event. + + The directory name. + The exception detected. + + + + Raise the FileFailure event. + + The file name. + The exception detected. + + + + Raise the ProcessFile event. + + The file name. + + + + Raise the complete file event + + The file name + + + + Raise the ProcessDirectory event. + + The directory name. + Flag indicating if the directory has matching files. + + + + Scan a directory. + + The base directory to scan. + True to recurse subdirectories, false to scan a single directory. + + + + The file filter currently in use. + + + + + The directory filter currently in use. + + + + + Flag indicating if scanning should continue running. + + + + + INameTransform defines how file system names are transformed for use with archives, or vice versa. + + + + + Given a file name determine the transformed value. + + The name to transform. + The transformed file name. + + + + Given a directory name determine the transformed value. + + The name to transform. + The transformed directory name + + + + InvalidNameException is thrown for invalid names such as directory traversal paths and names with invalid characters + + + + + Initializes a new instance of the InvalidNameException class with a default error message. + + + + + Initializes a new instance of the InvalidNameException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the InvalidNameException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the InvalidNameException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Scanning filters support filtering of names. + + + + + Test a name to see if it 'matches' the filter. + + The name to test. + Returns true if the name matches the filter, false if it does not match. + + + + NameFilter is a string matching class which allows for both positive and negative + matching. + A filter is a sequence of independant regular expressions separated by semi-colons ';'. + To include a semi-colon it may be quoted as in \;. Each expression can be prefixed by a plus '+' sign or + a minus '-' sign to denote the expression is intended to include or exclude names. + If neither a plus or minus sign is found include is the default. + A given name is tested for inclusion before checking exclusions. Only names matching an include spec + and not matching an exclude spec are deemed to match the filter. + An empty filter matches any name. + + The following expression includes all name ending in '.dat' with the exception of 'dummy.dat' + "+\.dat$;-^dummy\.dat$" + + + + + Construct an instance based on the filter expression passed + + The filter expression. + + + + Test a string to see if it is a valid regular expression. + + The expression to test. + True if expression is a valid false otherwise. + + + + Test an expression to see if it is valid as a filter. + + The filter expression to test. + True if the expression is valid, false otherwise. + + + + Split a string into its component pieces + + The original string + Returns an array of values containing the individual filter elements. + + + + Convert this filter to its string equivalent. + + The string equivalent for this filter. + + + + Test a value to see if it is included by the filter. + + The value to test. + True if the value is included, false otherwise. + + + + Test a value to see if it is excluded by the filter. + + The value to test. + True if the value is excluded, false otherwise. + + + + Test a value to see if it matches the filter. + + The value to test. + True if the value matches, false otherwise. + + + + Compile this filter. + + + + + PathFilter filters directories and files using a form of regular expressions + by full path name. + See NameFilter for more detail on filtering. + + + + + Initialise a new instance of . + + The filter expression to apply. + + + + Test a name to see if it matches the filter. + + The name to test. + True if the name matches, false otherwise. + is used to get the full path before matching. + + + + ExtendedPathFilter filters based on name, file size, and the last write time of the file. + + Provides an example of how to customise filtering. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum to include. + The maximum to include. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + The minimum to include. + The maximum to include. + + + + Test a filename to see if it matches the filter. + + The filename to test. + True if the filter matches, false otherwise. + The doesnt exist + + + + Get/set the minimum size/length for a file that will match this filter. + + The default value is zero. + value is less than zero; greater than + + + + Get/set the maximum size/length for a file that will match this filter. + + The default value is + value is less than zero or less than + + + + Get/set the minimum value that will match for this filter. + + Files with a LastWrite time less than this value are excluded by the filter. + + + + Get/set the maximum value that will match for this filter. + + Files with a LastWrite time greater than this value are excluded by the filter. + + + + NameAndSizeFilter filters based on name and file size. + + A sample showing how filters might be extended. + + + + Initialise a new instance of NameAndSizeFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + + + + Test a filename to see if it matches the filter. + + The filename to test. + True if the filter matches, false otherwise. + + + + Get/set the minimum size for a file that will match this filter. + + + + + Get/set the maximum size for a file that will match this filter. + + + + + PathUtils provides simple utilities for handling paths. + + + + + Remove any path root present in the path + + A containing path information. + The path with the root removed if it was present; path otherwise. + + + + Returns a random file name in the users temporary directory, or in directory of if specified + + If specified, used as the base file name for the temporary file + Returns a temporary file name + + + + Provides simple " utilities. + + + + + Read from a ensuring all the required data is read. + + The stream to read. + The buffer to fill. + + + + + Read from a " ensuring all the required data is read. + + The stream to read data from. + The buffer to store data in. + The offset at which to begin storing data. + The number of bytes of data to store. + Required parameter is null + and or are invalid. + End of stream is encountered before all the data has been read. + + + + Read as much data as possible from a ", up to the requested number of bytes + + The stream to read data from. + The buffer to store data in. + The offset at which to begin storing data. + The number of bytes of data to store. + Required parameter is null + and or are invalid. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + The progress handler delegate to use. + The minimum between progress updates. + The source for this event. + The name to use with the event. + This form is specialised for use within #Zip to support events during archive operations. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + The progress handler delegate to use. + The minimum between progress updates. + The source for this event. + The name to use with the event. + A predetermined fixed target value to use with progress updates. + If the value is negative the target is calculated by looking at the stream. + This form is specialised for use within #Zip to support events during archive operations. + + + + Initialise an instance of + + + + + SharpZipBaseException is the base exception class for SharpZipLib. + All library exceptions are derived from this. + + NOTE: Not all exceptions thrown will be derived from this class. + A variety of other exceptions are possible for example + + + + Initializes a new instance of the SharpZipBaseException class. + + + + + Initializes a new instance of the SharpZipBaseException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the SharpZipBaseException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the SharpZipBaseException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that an error occurred during decoding of a input stream due to corrupt + data or (unintentional) library incompatibility. + + + + + Initializes a new instance of the StreamDecodingException with a generic message + + + + + Initializes a new instance of the StreamDecodingException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the StreamDecodingException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the StreamDecodingException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that the input stream could not decoded due to known library incompability or missing features + + + + + Initializes a new instance of the StreamUnsupportedException with a generic message + + + + + Initializes a new instance of the StreamUnsupportedException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the StreamUnsupportedException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the StreamUnsupportedException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that the input stream could not decoded due to the stream ending before enough data had been provided + + + + + Initializes a new instance of the UnexpectedEndOfStreamException with a generic message + + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that a value was outside of the expected range when decoding an input stream + + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable + + Name of the variable, use: nameof() + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable, + it's current value and expected range. + + Name of the variable, use: nameof() + The invalid value + Expected maximum value + Expected minimum value + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable, + it's current value and expected range. + + Name of the variable, use: nameof() + The invalid value + Expected maximum value + Expected minimum value + + + + Initializes a new instance of the ValueOutOfRangeException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + PkzipClassic embodies the classic or original encryption facilities used in Pkzip archives. + While it has been superceded by more recent and more powerful algorithms, its still in use and + is viable for preventing casual snooping + + + + + Generates new encryption keys based on given seed + + The seed value to initialise keys with. + A new key value. + + + + PkzipClassicCryptoBase provides the low level facilities for encryption + and decryption using the PkzipClassic algorithm. + + + + + Transform a single byte + + + The transformed value + + + + + Set the key schedule for encryption/decryption. + + The data use to set the keys from. + + + + Update encryption keys + + + + + Reset the internal state. + + + + + PkzipClassic CryptoTransform for encryption. + + + + + Initialise a new instance of + + The key block to use. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Cleanup internal state. + + + + + PkzipClassic CryptoTransform for decryption. + + + + + Initialise a new instance of . + + The key block to decrypt with. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Cleanup internal state. + + + + + Defines a wrapper object to access the Pkzip algorithm. + This class cannot be inherited. + + + + + Get / set the applicable block size in bits. + + The only valid block size is 8. + + + + Get an array of legal key sizes. + + + + + Generate an initial vector. + + + + + Get an array of legal block sizes. + + + + + Get / set the key value applicable. + + + + + Generate a new random key. + + + + + Create an encryptor. + + The key to use for this encryptor. + Initialisation vector for the new encryptor. + Returns a new PkzipClassic encryptor + + + + Create a decryptor. + + Keys to use for this new decryptor. + Initialisation vector for the new decryptor. + Returns a new decryptor. + + + + Encrypts and decrypts AES ZIP + + + Based on information from http://www.winzip.com/aes_info.htm + and http://www.gladman.me.uk/cryptography_technology/fileencrypt/ + + + + + Constructor + + The stream on which to perform the cryptographic transformation. + Instance of ZipAESTransform + Read or Write + + + + Reads a sequence of bytes from the current CryptoStream into buffer, + and advances the position within the stream by the number of bytes read. + + + + + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + + + + Transforms stream using AES in CTR mode + + + + + Constructor. + + Password string + Random bytes, length depends on encryption strength. + 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes. + The encryption strength, in bytes eg 16 for 128 bits. + True when creating a zip, false when reading. For the AuthCode. + + + + + Implement the ICryptoTransform method. + + + + + Returns the 2 byte password verifier + + + + + Returns the 10 byte AUTH CODE to be checked or appended immediately following the AES data stream. + + + + + Not implemented. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Gets a value indicating whether the current transform can be reused. + + + + + Cleanup internal state. + + + + + An example class to demonstrate compression and decompression of GZip streams. + + + + + Decompress the input writing + uncompressed data to the output stream + + The readable stream containing data to decompress. + The output stream to receive the decompressed data. + Both streams are closed on completion if true. + Input or output stream is null + + + + Compress the input stream sending + result data to output stream + + The readable stream to compress. + The output stream to receive the compressed data. + Both streams are closed on completion if true. + Deflate buffer size, minimum 512 + Deflate compression level, 0-9 + Input or output stream is null + Buffer Size is smaller than 512 + Compression level outside 0-9 + + + + This class contains constants used for gzip. + + + + + First GZip identification byte + + + + + Second GZip identification byte + + + + + Deflate compression method + + + + + Get the GZip specified encoding (CP-1252 if supported, otherwise ASCII) + + + + + GZip header flags + + + + + Text flag hinting that the file is in ASCII + + + + + CRC flag indicating that a CRC16 preceeds the data + + + + + Extra flag indicating that extra fields are present + + + + + Filename flag indicating that the original filename is present + + + + + Flag bit mask indicating that a comment is present + + + + + GZipException represents exceptions specific to GZip classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the GZipException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + This filter stream is used to decompress a "GZIP" format stream. + The "GZIP" format is described baseInputStream RFC 1952. + + author of the original java version : John Leuner + + This sample shows how to unzip a gzipped file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.GZip; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream inStream = new GZipInputStream(File.OpenRead(args[0]))) + using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { + byte[] buffer = new byte[4096]; + StreamUtils.Copy(inStream, outStream, buffer); + } + } + } + + + + + + CRC-32 value for uncompressed data + + + + + Flag to indicate if we've read the GZIP header yet for the current member (block of compressed data). + This is tracked per-block as the file is parsed. + + + + + Flag to indicate if at least one block in a stream with concatenated blocks was read successfully. + This allows us to exit gracefully if downstream data is not in gzip format. + + + + + Creates a GZipInputStream with the default buffer size + + + The stream to read compressed data from (baseInputStream GZIP format) + + + + + Creates a GZIPInputStream with the specified buffer size + + + The stream to read compressed data from (baseInputStream GZIP format) + + + Size of the buffer to use + + + + + Reads uncompressed data into an array of bytes + + + The buffer to read uncompressed data into + + + The offset indicating where the data should be placed + + + The number of uncompressed bytes to be read + + Returns the number of bytes actually read. + + + + Retrieves the filename header field for the block last read + + + + + + This filter stream is used to compress a stream into a "GZIP" stream. + The "GZIP" format is described in RFC 1952. + + author of the original java version : John Leuner + + This sample shows how to gzip a file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.GZip; + using ICSharpCode.SharpZipLib.Core; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream s = new GZipOutputStream(File.Create(args[0] + ".gz"))) + using (FileStream fs = File.OpenRead(args[0])) { + byte[] writeData = new byte[4096]; + Streamutils.Copy(s, fs, writeData); + } + } + } + } + + + + + + CRC-32 value for uncompressed data + + + + + Creates a GzipOutputStream with the default buffer size + + + The stream to read data (to be compressed) from + + + + + Creates a GZipOutputStream with the specified buffer size + + + The stream to read data (to be compressed) from + + + Size of the buffer to use + + + + + Sets the active compression level (0-9). The new level will be activated + immediately. + + The compression level to set. + + Level specified is not supported. + + + + + + Get the current compression level. + + The current compression level. + + + + Original filename + + + + + Write given buffer to output updating crc + + Buffer to write + Offset of first byte in buf to write + Number of bytes to write + + + + Writes remaining compressed output data to the output stream + and closes it. + + + + + Flushes the stream by ensuring the header is written, and then calling Flush + on the deflater. + + + + + Finish compression and write any footer information required to stream + + + + + This class contains constants used for LZW + + + + + Magic number found at start of LZW header: 0x1f 0x9d + + + + + Maximum number of bits per code + + + + + Mask for 'number of compression bits' + + + + + Indicates the presence of a fourth header byte + + + + + Reserved bits + + + + + Block compression: if table is full and compression rate is dropping, + clear the dictionary. + + + + + LZW file header size (in bytes) + + + + + Initial number of bits per code + + + + + LzwException represents exceptions specific to LZW classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the LzwException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + This filter stream is used to decompress a LZW format stream. + Specifically, a stream that uses the LZC compression method. + This file format is usually associated with the .Z file extension. + + See http://en.wikipedia.org/wiki/Compress + See http://wiki.wxwidgets.org/Development:_Z_File_Format + + The file header consists of 3 (or optionally 4) bytes. The first two bytes + contain the magic marker "0x1f 0x9d", followed by a byte of flags. + + Based on Java code by Ronald Tschalar, which in turn was based on the unlzw.c + code in the gzip package. + + This sample shows how to unzip a compressed file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.LZW; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream inStream = new LzwInputStream(File.OpenRead(args[0]))) + using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { + byte[] buffer = new byte[4096]; + StreamUtils.Copy(inStream, outStream, buffer); + // OR + inStream.Read(buffer, 0, buffer.Length); + // now do something with the buffer + } + } + } + + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Creates a LzwInputStream + + + The stream to read compressed data from (baseInputStream LZW format) + + + + + See + + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + + + Moves the unread data in the buffer to the beginning and resets + the pointers. + + + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Flag indicating wether this instance has been closed or not. + + + + + This exception is used to indicate that there is a problem + with a TAR archive header. + + + + + Initialise a new instance of the InvalidHeaderException class. + + + + + Initialises a new instance of the InvalidHeaderException class with a specified message. + + Message describing the exception cause. + + + + Initialise a new instance of InvalidHeaderException + + Message describing the problem. + The exception that is the cause of the current exception. + + + + Initializes a new instance of the InvalidHeaderException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Used to advise clients of 'events' while processing archives + + + + + The TarArchive class implements the concept of a + 'Tape Archive'. A tar archive is a series of entries, each of + which represents a file system object. Each entry in + the archive consists of a header block followed by 0 or more data blocks. + Directory entries consist only of the header block, and are followed by entries + for the directory's contents. File entries consist of a + header followed by the number of blocks needed to + contain the file's contents. All entries are written on + block boundaries. Blocks are 512 bytes long. + + TarArchives are instantiated in either read or write mode, + based upon whether they are instantiated with an InputStream + or an OutputStream. Once instantiated TarArchives read/write + mode can not be changed. + + There is currently no support for random access to tar archives. + However, it seems that subclassing TarArchive, and using the + TarBuffer.CurrentRecord and TarBuffer.CurrentBlock + properties, this would be rather trivial. + + + + + Client hook allowing detailed information to be reported during processing + + + + + Raises the ProgressMessage event + + The TarEntry for this event + message for this event. Null is no message + + + + Constructor for a default . + + + + + Initialise a TarArchive for input. + + The to use for input. + + + + Initialise a TarArchive for output. + + The to use for output. + + + + The InputStream based constructors create a TarArchive for the + purposes of extracting or listing a tar archive. Thus, use + these constructors when you wish to extract files from or list + the contents of an existing tar archive. + + The stream to retrieve archive data from. + Returns a new suitable for reading from. + + + + The InputStream based constructors create a TarArchive for the + purposes of extracting or listing a tar archive. Thus, use + these constructors when you wish to extract files from or list + the contents of an existing tar archive. + + The stream to retrieve archive data from. + The used for the Name fields, or null for ASCII only + Returns a new suitable for reading from. + + + + Create TarArchive for reading setting block factor + + A stream containing the tar archive contents + The blocking factor to apply + Returns a suitable for reading. + + + + Create TarArchive for reading setting block factor + + A stream containing the tar archive contents + The blocking factor to apply + The used for the Name fields, or null for ASCII only + Returns a suitable for reading. + + + + Create a TarArchive for writing to, using the default blocking factor + + The to write to + The used for the Name fields, or null for ASCII only + Returns a suitable for writing. + + + + Create a TarArchive for writing to, using the default blocking factor + + The to write to + Returns a suitable for writing. + + + + Create a tar archive for writing. + + The stream to write to + The blocking factor to use for buffering. + Returns a suitable for writing. + + + + Create a tar archive for writing. + + The stream to write to + The blocking factor to use for buffering. + The used for the Name fields, or null for ASCII only + Returns a suitable for writing. + + + + Set the flag that determines whether existing files are + kept, or overwritten during extraction. + + + If true, do not overwrite existing files. + + + + + Get/set the ascii file translation flag. If ascii file translation + is true, then the file is checked to see if it a binary file or not. + If the flag is true and the test indicates it is ascii text + file, it will be translated. The translation converts the local + operating system's concept of line ends into the UNIX line end, + '\n', which is the defacto standard for a TAR archive. This makes + text files compatible with UNIX. + + + + + Set the ascii file translation flag. + + + If true, translate ascii text files. + + + + + PathPrefix is added to entry names as they are written if the value is not null. + A slash character is appended after PathPrefix + + + + + RootPath is removed from entry names if it is found at the + beginning of the name. + + + + + Set user and group information that will be used to fill in the + tar archive's entry headers. This information is based on that available + for the linux operating system, which is not always available on other + operating systems. TarArchive allows the programmer to specify values + to be used in their place. + is set to true by this call. + + + The user id to use in the headers. + + + The user name to use in the headers. + + + The group id to use in the headers. + + + The group name to use in the headers. + + + + + Get or set a value indicating if overrides defined by SetUserInfo should be applied. + + If overrides are not applied then the values as set in each header will be used. + + + + Get the archive user id. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current user id. + + + + + Get the archive user name. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current user name. + + + + + Get the archive group id. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current group id. + + + + + Get the archive group name. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current group name. + + + + + Get the archive's record size. Tar archives are composed of + a series of RECORDS each containing a number of BLOCKS. + This allowed tar archives to match the IO characteristics of + the physical device being used. Archives are expected + to be properly "blocked". + + + The record size this archive is using. + + + + + Sets the IsStreamOwner property on the underlying stream. + Set this to false to prevent the Close of the TarArchive from closing the stream. + + + + + Close the archive. + + + + + Perform the "list" command for the archive contents. + + NOTE That this method uses the progress event to actually list + the contents. If the progress display event is not set, nothing will be listed! + + + + + Perform the "extract" command and extract the contents of the archive. + + + The destination directory into which to extract. + + + + + Perform the "extract" command and extract the contents of the archive. + + + The destination directory into which to extract. + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Extract an entry from the archive. This method assumes that the + tarIn stream has been properly set with a call to GetNextEntry(). + + + The destination directory into which to extract. + + + The TarEntry returned by tarIn.GetNextEntry(). + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Write an entry to the archive. This method will call the putNextEntry + and then write the contents of the entry, and finally call closeEntry() + for entries that are files. For directories, it will call putNextEntry(), + and then, if the recurse flag is true, process each entry that is a + child of the directory. + + + The TarEntry representing the entry to write to the archive. + + + If true, process the children of directory entries. + + + + + Write an entry to the archive. This method will call the putNextEntry + and then write the contents of the entry, and finally call closeEntry() + for entries that are files. For directories, it will call putNextEntry(), + and then, if the recurse flag is true, process each entry that is a + child of the directory. + + + The TarEntry representing the entry to write to the archive. + + + If true, process the children of directory entries. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases the unmanaged resources used by the FileStream and optionally releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Closes the archive and releases any associated resources. + + + + + Ensures that resources are freed and other cleanup operations are performed + when the garbage collector reclaims the . + + + + + The TarBuffer class implements the tar archive concept + of a buffered input stream. This concept goes back to the + days of blocked tape drives and special io devices. In the + C# universe, the only real function that this class + performs is to ensure that files have the correct "record" + size, or other tars will complain. +

+ You should never have a need to access this class directly. + TarBuffers are created by Tar IO Streams. +

+
+
+ + + The size of a block in a tar archive in bytes. + + This is 512 bytes. + + + + The number of blocks in a default record. + + + The default value is 20 blocks per record. + + + + + The size in bytes of a default record. + + + The default size is 10KB. + + + + + Get the record size for this buffer + + The record size in bytes. + This is equal to the multiplied by the + + + + Get the TAR Buffer's record size. + + The record size in bytes. + This is equal to the multiplied by the + + + + Get the Blocking factor for the buffer + + This is the number of blocks in each record. + + + + Get the TAR Buffer's block factor + + The block factor; the number of blocks per record. + + + + Construct a default TarBuffer + + + + + Create TarBuffer for reading with default BlockFactor + + Stream to buffer + A new suitable for input. + + + + Construct TarBuffer for reading inputStream setting BlockFactor + + Stream to buffer + Blocking factor to apply + A new suitable for input. + + + + Construct TarBuffer for writing with default BlockFactor + + output stream for buffer + A new suitable for output. + + + + Construct TarBuffer for writing Tar output to streams. + + Output stream to write to. + Blocking factor to apply + A new suitable for output. + + + + Initialization common to all constructors. + + + + + Determine if an archive block indicates End of Archive. End of + archive is indicated by a block that consists entirely of null bytes. + All remaining blocks for the record should also be null's + However some older tars only do a couple of null blocks (Old GNU tar for one) + and also partial records + + The data block to check. + Returns true if the block is an EOF block; false otherwise. + + + + Determine if an archive block indicates the End of an Archive has been reached. + End of archive is indicated by a block that consists entirely of null bytes. + All remaining blocks for the record should also be null's + However some older tars only do a couple of null blocks (Old GNU tar for one) + and also partial records + + The data block to check. + Returns true if the block is an EOF block; false otherwise. + + + + Skip over a block on the input stream. + + + + + Read a block from the input stream. + + + The block of data read. + + + + + Read a record from data stream. + + + false if End-Of-File, else true. + + + + + Get the current block number, within the current record, zero based. + + Block numbers are zero based values + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Get the current block number, within the current record, zero based. + + + The current zero based block number. + + + The absolute block number = (record number * block factor) + block number. + + + + + Get the current record number. + + + The current zero based record number. + + + + + Get the current record number. + + + The current zero based record number. + + + + + Write a block of data to the archive. + + + The data to write to the archive. + + + + + Write an archive record to the archive, where the record may be + inside of a larger array buffer. The buffer must be "offset plus + record size" long. + + + The buffer containing the record data to write. + + + The offset of the record data within buffer. + + + + + Write a TarBuffer record to the archive. + + + + + WriteFinalRecord writes the current record buffer to output any unwritten data is present. + + Any trailing bytes are set to zero which is by definition correct behaviour + for the end of a tar stream. + + + + Close the TarBuffer. If this is an output buffer, also flush the + current block before closing. + + + + + This class represents an entry in a Tar archive. It consists + of the entry's header, as well as the entry's File. Entries + can be instantiated in one of three ways, depending on how + they are to be used. +

+ TarEntries that are created from the header bytes read from + an archive are instantiated with the TarEntry( byte[] ) + constructor. These entries will be used when extracting from + or listing the contents of an archive. These entries have their + header filled in using the header bytes. They also set the File + to null, since they reference an archive entry not a file.

+

+ TarEntries that are created from files that are to be written + into an archive are instantiated with the CreateEntryFromFile(string) + pseudo constructor. These entries have their header filled in using + the File's information. They also keep a reference to the File + for convenience when writing entries.

+

+ Finally, TarEntries can be constructed from nothing but a name. + This allows the programmer to construct the entry by hand, for + instance when only an InputStream is available for writing to + the archive, and the header information is constructed from + other information. In this case the header fields are set to + defaults and the File is set to null.

+ +
+
+ + + Initialise a default instance of . + + + + + Construct an entry from an archive's header bytes. File is set + to null. + + + The header bytes from a tar archive entry. + + + + + Construct an entry from an archive's header bytes. File is set + to null. + + + The header bytes from a tar archive entry. + + + The used for the Name fields, or null for ASCII only + + + + + Construct a TarEntry using the header provided + + Header details for entry + + + + Clone this tar entry. + + Returns a clone of this entry. + + + + Construct an entry with only a name. + This allows the programmer to construct the entry's header "by hand". + + The name to use for the entry + Returns the newly created + + + + Construct an entry for a file. File is set to file, and the + header is constructed from information from the file. + + The file name that the entry represents. + Returns the newly created + + + + Determine if the two entries are equal. Equality is determined + by the header names being equal. + + The to compare with the current Object. + + True if the entries are equal; false if not. + + + + + Derive a Hash value for the current + + A Hash code for the current + + + + Determine if the given entry is a descendant of this entry. + Descendancy is determined by the name of the descendant + starting with this entry's name. + + + Entry to be checked as a descendent of this. + + + True if entry is a descendant of this. + + + + + Get this entry's header. + + + This entry's TarHeader. + + + + + Get/Set this entry's name. + + + + + Get/set this entry's user id. + + + + + Get/set this entry's group id. + + + + + Get/set this entry's user name. + + + + + Get/set this entry's group name. + + + + + Convenience method to set this entry's group and user ids. + + + This entry's new user id. + + + This entry's new group id. + + + + + Convenience method to set this entry's group and user names. + + + This entry's new user name. + + + This entry's new group name. + + + + + Get/Set the modification time for this entry + + + + + Get this entry's file. + + + This entry's file. + + + + + Get/set this entry's recorded file size. + + + + + Return true if this entry represents a directory, false otherwise + + + True if this entry is a directory. + + + + + Fill in a TarHeader with information from a File. + + + The TarHeader to fill in. + + + The file from which to get the header information. + + + + + Get entries for all files present in this entries directory. + If this entry doesnt represent a directory zero entries are returned. + + + An array of TarEntry's for this entry's children. + + + + + Write an entry's header information to a header buffer. + + + The tar entry header buffer to fill in. + + + + + Write an entry's header information to a header buffer. + + + The tar entry header buffer to fill in. + + + The used for the Name fields, or null for ASCII only + + + + + Convenience method that will modify an entry's name directly + in place in an entry header buffer byte array. + + + The buffer containing the entry header to modify. + + + The new name to place into the header buffer. + + + + + Convenience method that will modify an entry's name directly + in place in an entry header buffer byte array. + + + The buffer containing the entry header to modify. + + + The new name to place into the header buffer. + + + The used for the Name fields, or null for ASCII only + + + + + Fill in a TarHeader given only the entry's name. + + + The TarHeader to fill in. + + + The tar entry name. + + + + + The name of the file this entry represents or null if the entry is not based on a file. + + + + + The entry's header information. + + + + + TarException represents exceptions specific to Tar classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the TarException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Reads the extended header of a Tar stream + + + + + Creates a new . + + + + + Read bytes from + + + + + + + Returns the parsed headers as key-value strings + + + + + This class encapsulates the Tar Entry Header used in Tar Archives. + The class also holds a number of tar constants, used mostly in headers. + + + The tar format and its POSIX successor PAX have a long history which makes for compatability + issues when creating and reading files. + + This is further complicated by a large number of programs with variations on formats + One common issue is the handling of names longer than 100 characters. + GNU style long names are currently supported. + + This is the ustar (Posix 1003.1) header. + + struct header + { + char t_name[100]; // 0 Filename + char t_mode[8]; // 100 Permissions + char t_uid[8]; // 108 Numerical User ID + char t_gid[8]; // 116 Numerical Group ID + char t_size[12]; // 124 Filesize + char t_mtime[12]; // 136 st_mtime + char t_chksum[8]; // 148 Checksum + char t_typeflag; // 156 Type of File + char t_linkname[100]; // 157 Target of Links + char t_magic[6]; // 257 "ustar" or other... + char t_version[2]; // 263 Version fixed to 00 + char t_uname[32]; // 265 User Name + char t_gname[32]; // 297 Group Name + char t_devmajor[8]; // 329 Major for devices + char t_devminor[8]; // 337 Minor for devices + char t_prefix[155]; // 345 Prefix for t_name + char t_mfill[12]; // 500 Filler up to 512 + }; + + + + + The length of the name field in a header buffer. + + + + + The length of the mode field in a header buffer. + + + + + The length of the user id field in a header buffer. + + + + + The length of the group id field in a header buffer. + + + + + The length of the checksum field in a header buffer. + + + + + Offset of checksum in a header buffer. + + + + + The length of the size field in a header buffer. + + + + + The length of the magic field in a header buffer. + + + + + The length of the version field in a header buffer. + + + + + The length of the modification time field in a header buffer. + + + + + The length of the user name field in a header buffer. + + + + + The length of the group name field in a header buffer. + + + + + The length of the devices field in a header buffer. + + + + + The length of the name prefix field in a header buffer. + + + + + The "old way" of indicating a normal file. + + + + + Normal file type. + + + + + Link file type. + + + + + Symbolic link file type. + + + + + Character device file type. + + + + + Block device file type. + + + + + Directory file type. + + + + + FIFO (pipe) file type. + + + + + Contiguous file type. + + + + + Posix.1 2001 global extended header + + + + + Posix.1 2001 extended header + + + + + Solaris access control list file type + + + + + GNU dir dump file type + This is a dir entry that contains the names of files that were in the + dir at the time the dump was made + + + + + Solaris Extended Attribute File + + + + + Inode (metadata only) no file content + + + + + Identifies the next file on the tape as having a long link name + + + + + Identifies the next file on the tape as having a long name + + + + + Continuation of a file that began on another volume + + + + + For storing filenames that dont fit in the main header (old GNU) + + + + + GNU Sparse file + + + + + GNU Tape/volume header ignore on extraction + + + + + The magic tag representing a POSIX tar archive. (would be written with a trailing NULL) + + + + + The magic tag representing an old GNU tar archive where version is included in magic and overwrites it + + + + + Initialise a default TarHeader instance + + + + + Get/set the name for this tar entry. + + Thrown when attempting to set the property to null. + + + + Get the name of this entry. + + The entry's name. + + + + Get/set the entry's Unix style permission mode. + + + + + The entry's user id. + + + This is only directly relevant to unix systems. + The default is zero. + + + + + Get/set the entry's group id. + + + This is only directly relevant to linux/unix systems. + The default value is zero. + + + + + Get/set the entry's size. + + Thrown when setting the size to less than zero. + + + + Get/set the entry's modification time. + + + The modification time is only accurate to within a second. + + Thrown when setting the date time to less than 1/1/1970. + + + + Get the entry's checksum. This is only valid/updated after writing or reading an entry. + + + + + Get value of true if the header checksum is valid, false otherwise. + + + + + Get/set the entry's type flag. + + + + + The entry's link name. + + Thrown when attempting to set LinkName to null. + + + + Get/set the entry's magic tag. + + Thrown when attempting to set Magic to null. + + + + The entry's version. + + Thrown when attempting to set Version to null. + + + + The entry's user name. + + + + + Get/set the entry's group name. + + + This is only directly relevant to unix systems. + + + + + Get/set the entry's major device number. + + + + + Get/set the entry's minor device number. + + + + + Create a new that is a copy of the current instance. + + A new that is a copy of the current instance. + + + + Parse TarHeader information from a header buffer. + + + The tar entry header buffer to get information from. + + + The used for the Name field, or null for ASCII only + + + + + Parse TarHeader information from a header buffer. + + + The tar entry header buffer to get information from. + + + + + 'Write' header information to buffer provided, updating the check sum. + + output buffer for header information + + + + 'Write' header information to buffer provided, updating the check sum. + + output buffer for header information + The used for the Name field, or null for ASCII only + + + + Get a hash code for the current object. + + A hash code for the current object. + + + + Determines if this instance is equal to the specified object. + + The object to compare with. + true if the objects are equal, false otherwise. + + + + Set defaults for values used when constructing a TarHeader instance. + + Value to apply as a default for userId. + Value to apply as a default for userName. + Value to apply as a default for groupId. + Value to apply as a default for groupName. + + + + Parse an octal string from a header buffer. + + The header buffer from which to parse. + The offset into the buffer from which to parse. + The number of header bytes to parse. + The long equivalent of the octal string. + + + + Parse a name from a header buffer. + + + The header buffer from which to parse. + + + The offset into the buffer from which to parse. + + + The number of header bytes to parse. + + + The name parsed. + + + + + Parse a name from a header buffer. + + + The header buffer from which to parse. + + + The offset into the buffer from which to parse. + + + The number of header bytes to parse. + + + name encoding, or null for ASCII only + + + The name parsed. + + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + The next free index in the + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + The next free index in the + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + name encoding, or null for ASCII only + The next free index in the + + + + Add an entry name to the buffer + + + The name to add + + + The buffer to add to + + + The offset into the buffer from which to start adding + + + The number of header bytes to add + + + The index of the next free byte in the buffer + + TODO: what should be default behavior?(omit upper byte or UTF8?) + + + + Add an entry name to the buffer + + + The name to add + + + The buffer to add to + + + The offset into the buffer from which to start adding + + + The number of header bytes to add + + + + + The index of the next free byte in the buffer + + + + + Add an entry name to the buffer + + The name to add + The buffer to add to + The offset into the buffer from which to start adding + The number of header bytes to add + The index of the next free byte in the buffer + TODO: what should be default behavior?(omit upper byte or UTF8?) + + + + Add an entry name to the buffer + + The name to add + The buffer to add to + The offset into the buffer from which to start adding + The number of header bytes to add + + The index of the next free byte in the buffer + + + + Add a string to a buffer as a collection of ascii bytes. + + The string to add + The offset of the first character to add. + The buffer to add to. + The offset to start adding at. + The number of ascii characters to add. + The next free index in the buffer. + + + + Add a string to a buffer as a collection of ascii bytes. + + The string to add + The offset of the first character to add. + The buffer to add to. + The offset to start adding at. + The number of ascii characters to add. + String encoding, or null for ASCII only + The next free index in the buffer. + + + + Put an octal representation of a value into a buffer + + + the value to be converted to octal + + + buffer to store the octal string + + + The offset into the buffer where the value starts + + + The length of the octal string to create + + + The offset of the character next byte after the octal string + + + + + Put an octal or binary representation of a value into a buffer + + Value to be convert to octal + The buffer to update + The offset into the buffer to store the value + The length of the octal string. Must be 12. + Index of next byte + + + + Add the checksum integer to header buffer. + + + The header buffer to set the checksum for + The offset into the buffer for the checksum + The number of header bytes to update. + It's formatted differently from the other fields: it has 6 digits, a + null, then a space -- rather than digits, a space, then a null. + The final space is already there, from checksumming + + The modified buffer offset + + + + Compute the checksum for a tar entry header. + The checksum field must be all spaces prior to this happening + + The tar entry's header buffer. + The computed checksum. + + + + Make a checksum for a tar entry ignoring the checksum contents. + + The tar entry's header buffer. + The checksum for the buffer + + + + The TarInputStream reads a UNIX tar archive as an InputStream. + methods are provided to position at each successive entry in + the archive, and the read each entry as a normal input stream + using read(). + + + + + Construct a TarInputStream with default block factor + + stream to source data from + + + + Construct a TarInputStream with default block factor + + stream to source data from + The used for the Name fields, or null for ASCII only + + + + Construct a TarInputStream with user specified block factor + + stream to source data from + block factor to apply to archive + + + + Construct a TarInputStream with user specified block factor + + stream to source data from + block factor to apply to archive + The used for the Name fields, or null for ASCII only + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking + This property always returns false. + + + + + Gets a value indicating if the stream supports writing. + This property always returns false. + + + + + The length in bytes of the stream + + + + + Gets or sets the position within the stream. + Setting the Position is not supported and throws a NotSupportedExceptionNotSupportedException + + Any attempt to set position + + + + Flushes the baseInputStream + + + + + Set the streams position. This operation is not supported and will throw a NotSupportedException + + The offset relative to the origin to seek to. + The to start seeking from. + The new position in the stream. + Any access + + + + Sets the length of the stream + This operation is not supported and will throw a NotSupportedException + + The new stream length. + Any access + + + + Writes a block of bytes to this stream using data from a buffer. + This operation is not supported and will throw a NotSupportedException + + The buffer containing bytes to write. + The offset in the buffer of the frist byte to write. + The number of bytes to write. + Any access + + + + Writes a byte to the current position in the file stream. + This operation is not supported and will throw a NotSupportedException + + The byte value to write. + Any access + + + + Reads a byte from the current tar archive entry. + + A byte cast to an int; -1 if the at the end of the stream. + + + + Reads bytes from the current tar archive entry. + + This method is aware of the boundaries of the current + entry in the archive and will deal with them appropriately + + + The buffer into which to place bytes read. + + + The offset at which to place bytes read. + + + The number of bytes to read. + + + The number of bytes read, or 0 at end of stream/EOF. + + + + + Closes this stream. Calls the TarBuffer's close() method. + The underlying stream is closed by the TarBuffer. + + + + + Set the entry factory for this instance. + + The factory for creating new entries + + + + Get the record size being used by this stream's TarBuffer. + + + + + Get the record size being used by this stream's TarBuffer. + + + TarBuffer record size. + + + + + Get the available data that can be read from the current + entry in the archive. This does not indicate how much data + is left in the entire archive, only in the current entry. + This value is determined from the entry's size header field + and the amount of data already read from the current entry. + + + The number of available bytes for the current entry. + + + + + Skip bytes in the input buffer. This skips bytes in the + current entry's data, not the entire archive, and will + stop at the end of the current entry's data if the number + to skip extends beyond that point. + + + The number of bytes to skip. + + + + + Return a value of true if marking is supported; false otherwise. + + Currently marking is not supported, the return value is always false. + + + + Since we do not support marking just yet, we do nothing. + + + The limit to mark. + + + + + Since we do not support marking just yet, we do nothing. + + + + + Get the next entry in this tar archive. This will skip + over any remaining data in the current entry, if there + is one, and place the input stream at the header of the + next entry, and read the header and instantiate a new + TarEntry from the header bytes and return that entry. + If there are no more entries in the archive, null will + be returned to indicate that the end of the archive has + been reached. + + + The next TarEntry in the archive, or null. + + + + + Copies the contents of the current tar archive entry directly into + an output stream. + + + The OutputStream into which to write the entry's data. + + + + + This interface is provided, along with the method , to allow + the programmer to have their own subclass instantiated for the + entries return from . + + + + + Create an entry based on name alone + + + Name of the new EntryPointNotFoundException to create + + created TarEntry or descendant class + + + + Create an instance based on an actual file + + + Name of file to represent in the entry + + + Created TarEntry or descendant class + + + + + Create a tar entry based on the header information passed + + + Buffer containing header information to create an entry from. + + + Created TarEntry or descendant class + + + + + Standard entry factory class creating instances of the class TarEntry + + + + + Construct standard entry factory class with ASCII name encoding + + + + + Construct standard entry factory with name encoding + + The used for the Name fields, or null for ASCII only + + + + Create a based on named + + The name to use for the entry + A new + + + + Create a tar entry with details obtained from file + + The name of the file to retrieve details from. + A new + + + + Create an entry based on details in header + + The buffer containing entry details. + A new + + + + Flag set when last block has been read + + + + + Size of this entry as recorded in header + + + + + Number of bytes read for this entry so far + + + + + Buffer used with calls to Read() + + + + + Working buffer + + + + + Current entry being read + + + + + Factory used to create TarEntry or descendant class instance + + + + + Stream used as the source of input data. + + + + + The TarOutputStream writes a UNIX tar archive as an OutputStream. + Methods are provided to put entries, and then write their contents + by writing to this stream using write(). + + public + + + + Construct TarOutputStream using default block factor + + stream to write to + + + + Construct TarOutputStream using default block factor + + stream to write to + The used for the Name fields, or null for ASCII only + + + + Construct TarOutputStream with user specified block factor + + stream to write to + blocking factor + + + + Construct TarOutputStream with user specified block factor + + stream to write to + blocking factor + The used for the Name fields, or null for ASCII only + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + true if the stream supports reading; otherwise, false. + + + + + true if the stream supports seeking; otherwise, false. + + + + + true if stream supports writing; otherwise, false. + + + + + length of stream in bytes + + + + + gets or sets the position within the current stream. + + + + + set the position within the current stream + + The offset relative to the to seek to + The to seek from. + The new position in the stream. + + + + Set the length of the current stream + + The new stream length. + + + + Read a byte from the stream and advance the position within the stream + by one byte or returns -1 if at the end of the stream. + + The byte value or -1 if at end of stream + + + + read bytes from the current stream and advance the position within the + stream by the number of bytes read. + + The buffer to store read bytes in. + The index into the buffer to being storing bytes at. + The desired number of bytes to read. + The total number of bytes read, or zero if at the end of the stream. + The number of bytes may be less than the count + requested if data is not available. + + + + All buffered data is written to destination + + + + + Ends the TAR archive without closing the underlying OutputStream. + The result is that the EOF block of nulls is written. + + + + + Ends the TAR archive and closes the underlying OutputStream. + + This means that Finish() is called followed by calling the + TarBuffer's Close(). + + + + Get the record size being used by this stream's TarBuffer. + + + + + Get the record size being used by this stream's TarBuffer. + + + The TarBuffer record size. + + + + + Get a value indicating whether an entry is open, requiring more data to be written. + + + + + Put an entry on the output stream. This writes the entry's + header and positions the output stream for writing + the contents of the entry. Once this method is called, the + stream is ready for calls to write() to write the entry's + contents. Once the contents are written, closeEntry() + MUST be called to ensure that all buffered data + is completely written to the output stream. + + + The TarEntry to be written to the archive. + + + + + Close an entry. This method MUST be called for all file + entries that contain data. The reason is that we must + buffer data written to the stream in order to satisfy + the buffer's block based writes. Thus, there may be + data fragments still being assembled that must be written + to the output stream before this entry is closed and the + next entry written. + + + + + Writes a byte to the current tar archive entry. + This method simply calls Write(byte[], int, int). + + + The byte to be written. + + + + + Writes bytes to the current tar archive entry. This method + is aware of the current entry and will throw an exception if + you attempt to write bytes past the length specified for the + current entry. The method is also (painfully) aware of the + record buffering required by TarBuffer, and manages buffers + that are not a multiple of recordsize in length, including + assembling records from small buffers. + + + The buffer to write to the archive. + + + The offset in the buffer from which to get bytes. + + + The number of bytes to write. + + + + + Write an EOF (end of archive) block to the tar archive. + The end of the archive is indicated by two blocks consisting entirely of zero bytes. + + + + + bytes written for this entry so far + + + + + current 'Assembly' buffer length + + + + + Flag indicating whether this instance has been closed or not. + + + + + Size for the current entry + + + + + single block working buffer + + + + + 'Assembly' buffer used to assemble data before writing + + + + + TarBuffer used to provide correct blocking factor + + + + + the destination stream for the archive contents + + + + + name encoding + + + + + This is the Deflater class. The deflater class compresses input + with the deflate algorithm described in RFC 1951. It has several + compression levels and three different strategies described below. + + This class is not thread safe. This is inherent in the API, due + to the split of deflate and setInput. + + author of the original java version : Jochen Hoenicke + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Compression Level as an enum for safer use + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Creates a new deflater with default compression level. + + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION, or DEFAULT_COMPRESSION. + + if lvl is out of range. + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION. + + + true, if we should suppress the Zlib/RFC1950 header at the + beginning and the adler checksum at the end of the output. This is + useful for the GZIP/PKZIP formats. + + if lvl is out of range. + + + + Resets the deflater. The deflater acts afterwards as if it was + just created with the same compression level and strategy as it + had before. + + + + + Gets the current adler checksum of the data that was processed so far. + + + + + Gets the number of input bytes processed so far. + + + + + Gets the number of output bytes so far. + + + + + Flushes the current input block. Further calls to deflate() will + produce enough output to inflate everything in the current input + block. This is not part of Sun's JDK so I have made it package + private. It is used by DeflaterOutputStream to implement + flush(). + + + + + Finishes the deflater with the current input block. It is an error + to give more input after this method was called. This method must + be called to force all bytes to be flushed. + + + + + Returns true if the stream was finished and no more output bytes + are available. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method can also return true when the stream + was finished. + + + + + Sets the data which should be compressed next. This should be only + called when needsInput indicates that more input is needed. + If you call setInput when needsInput() returns false, the + previous input that is still pending will be thrown away. + The given byte array should not be changed, before needsInput() returns + true again. + This call is equivalent to setInput(input, 0, input.length). + + + the buffer containing the input data. + + + if the buffer was finished() or ended(). + + + + + Sets the data which should be compressed next. This should be + only called when needsInput indicates that more input is needed. + The given byte array should not be changed, before needsInput() returns + true again. + + + the buffer containing the input data. + + + the start of the data. + + + the number of data bytes of input. + + + if the buffer was Finish()ed or if previous input is still pending. + + + + + Sets the compression level. There is no guarantee of the exact + position of the change, but if you call this when needsInput is + true the change of compression level will occur somewhere near + before the end of the so far given input. + + + the new compression level. + + + + + Get current compression level + + Returns the current compression level + + + + Sets the compression strategy. Strategy is one of + DEFAULT_STRATEGY, HUFFMAN_ONLY and FILTERED. For the exact + position where the strategy is changed, the same as for + SetLevel() applies. + + + The new compression strategy. + + + + + Deflates the current input block with to the given array. + + + The buffer where compressed data is stored + + + The number of compressed bytes added to the output, or 0 if either + IsNeedingInput() or IsFinished returns true or length is zero. + + + + + Deflates the current input block to the given array. + + + Buffer to store the compressed data. + + + Offset into the output array. + + + The maximum number of bytes that may be stored. + + + The number of compressed bytes added to the output, or 0 if either + needsInput() or finished() returns true or length is zero. + + + If Finish() was previously called. + + + If offset or length don't match the array length. + + + + + Sets the dictionary which should be used in the deflate process. + This call is equivalent to setDictionary(dict, 0, dict.Length). + + + the dictionary. + + + if SetInput () or Deflate () were already called or another dictionary was already set. + + + + + Sets the dictionary which should be used in the deflate process. + The dictionary is a byte array containing strings that are + likely to occur in the data which should be compressed. The + dictionary is not stored in the compressed output, only a + checksum. To decompress the output you need to supply the same + dictionary again. + + + The dictionary data + + + The index where dictionary information commences. + + + The number of bytes in the dictionary. + + + If SetInput () or Deflate() were already called or another dictionary was already set. + + + + + Compression level. + + + + + If true no Zlib/RFC1950 headers or footers are generated + + + + + The current state. + + + + + The total bytes of output written. + + + + + The pending output. + + + + + The deflater engine. + + + + + This class contains constants used for deflation. + + + + + Set to true to enable debugging + + + + + Written to Zip file to identify a stored block + + + + + Identifies static tree in Zip file + + + + + Identifies dynamic tree in Zip file + + + + + Header flag indicating a preset dictionary for deflation + + + + + Sets internal buffer sizes for Huffman encoding + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Strategies for deflater + + + + + The default strategy + + + + + This strategy will only allow longer string repetitions. It is + useful for random data with a small character set. + + + + + This strategy will not look for string repetitions at all. It + only encodes with Huffman trees (which means, that more common + characters get a smaller encoding. + + + + + Low level compression engine for deflate algorithm which uses a 32K sliding window + with secondary compression from Huffman/Shannon-Fano codes. + + + + + Construct instance with pending buffer + Adler calculation will be performed + + + Pending buffer to use + + + + + Construct instance with pending buffer + + + Pending buffer to use + + + If no adler calculation should be performed + + + + + Deflate drives actual compression of data + + True to flush input buffers + Finish deflation with the current input. + Returns true if progress has been made. + + + + Sets input data to be deflated. Should only be called when NeedsInput() + returns true + + The buffer containing input data. + The offset of the first byte of data. + The number of bytes of data to use as input. + + + + Determines if more input is needed. + + Return true if input is needed via SetInput + + + + Set compression dictionary + + The buffer containing the dictionary data + The offset in the buffer for the first byte of data + The length of the dictionary data. + + + + Reset internal state + + + + + Reset Adler checksum + + + + + Get current value of Adler checksum + + + + + Total data processed + + + + + Get/set the deflate strategy + + + + + Set the deflate level (0-9) + + The value to set the level to. + + + + Fill the window + + + + + Inserts the current string in the head hash and returns the previous + value for this hash. + + The previous hash value + + + + Find the best (longest) string in the window matching the + string starting at strstart. + + Preconditions: + + strstart + DeflaterConstants.MAX_MATCH <= window.length. + + + True if a match greater than the minimum length is found + + + + Hashtable, hashing three characters to an index for window, so + that window[index]..window[index+2] have this hash code. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + prev[index & WMASK] points to the previous index that has the + same hash code as the string starting at index. This way + entries with the same hash code are in a linked list. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + Points to the current character in the window. + + + + + lookahead is the number of characters starting at strstart in + window that are valid. + So window[strstart] until window[strstart+lookahead-1] are valid + characters. + + + + + This array contains the part of the uncompressed stream that + is of relevance. The current character is indexed by strstart. + + + + + The current compression function. + + + + + The input data for compression. + + + + + The total bytes of input read. + + + + + The offset into inputBuf, where input data starts. + + + + + The end offset of the input data. + + + + + The adler checksum + + + + + This is the DeflaterHuffman class. + + This class is not thread safe. This is inherent in the API, due + to the split of Deflate and SetInput. + + author of the original java version : Jochen Hoenicke + + + + + Resets the internal state of the tree + + + + + Check that all frequencies are zero + + + At least one frequency is non-zero + + + + + Set static codes and length + + new codes + length for new codes + + + + Build dynamic codes and lengths + + + + + Get encoded length + + Encoded length, the sum of frequencies * lengths + + + + Scan a literal or distance tree to determine the frequencies of the codes + in the bit length tree. + + + + + Write tree values + + Tree to write + + + + Pending buffer to use + + + + + Construct instance with pending buffer + + Pending buffer to use + + + + Reset internal state + + + + + Write all trees to pending buffer + + The number/rank of treecodes to send. + + + + Compress current buffer writing data to pending buffer + + + + + Flush block to output with no compression + + Data to write + Index of first byte to write + Count of bytes to write + True if this is the last block + + + + Flush block to output with compression + + Data to flush + Index of first byte to flush + Count of bytes to flush + True if this is the last block + + + + Get value indicating if internal buffer is full + + true if buffer is full + + + + Add literal to buffer + + Literal value to add to buffer. + Value indicating internal buffer is full + + + + Add distance code and length to literal and distance trees + + Distance code + Length + Value indicating if internal buffer is full + + + + Reverse the bits of a 16 bit value. + + Value to reverse bits + Value with bits reversed + + + + This class stores the pending output of the Deflater. + + author of the original java version : Jochen Hoenicke + + + + + Construct instance with default buffer size + + + + + Inflater is used to decompress data that has been compressed according + to the "deflate" standard described in rfc1951. + + By default Zlib (rfc1950) headers and footers are expected in the input. + You can use constructor public Inflater(bool noHeader) passing true + if there is no Zlib header information + + The usage is as following. First you have to set some input with + SetInput(), then Inflate() it. If inflate doesn't + inflate any bytes there may be three reasons: +
    +
  • IsNeedingInput() returns true because the input buffer is empty. + You have to provide more input with SetInput(). + NOTE: IsNeedingInput() also returns true when, the stream is finished. +
  • +
  • IsNeedingDictionary() returns true, you have to provide a preset + dictionary with SetDictionary().
  • +
  • IsFinished returns true, the inflater has finished.
  • +
+ Once the first output byte is produced, a dictionary will not be + needed at a later stage. + + author of the original java version : John Leuner, Jochen Hoenicke +
+
+ + + Copy lengths for literal codes 257..285 + + + + + Extra bits for literal codes 257..285 + + + + + Copy offsets for distance codes 0..29 + + + + + Extra bits for distance codes + + + + + These are the possible states for an inflater + + + + + This variable contains the current state. + + + + + The adler checksum of the dictionary or of the decompressed + stream, as it is written in the header resp. footer of the + compressed stream. + Only valid if mode is DECODE_DICT or DECODE_CHKSUM. + + + + + The number of bits needed to complete the current state. This + is valid, if mode is DECODE_DICT, DECODE_CHKSUM, + DECODE_HUFFMAN_LENBITS or DECODE_HUFFMAN_DISTBITS. + + + + + True, if the last block flag was set in the last block of the + inflated stream. This means that the stream ends after the + current block. + + + + + The total number of inflated bytes. + + + + + The total number of bytes set with setInput(). This is not the + value returned by the TotalIn property, since this also includes the + unprocessed input. + + + + + This variable stores the noHeader flag that was given to the constructor. + True means, that the inflated stream doesn't contain a Zlib header or + footer. + + + + + Creates a new inflater or RFC1951 decompressor + RFC1950/Zlib headers and footers will be expected in the input data + + + + + Creates a new inflater. + + + True if no RFC1950/Zlib header and footer fields are expected in the input data + + This is used for GZIPed/Zipped input. + + For compatibility with + Sun JDK you should provide one byte of input more than needed in + this case. + + + + + Resets the inflater so that a new stream can be decompressed. All + pending input and output will be discarded. + + + + + Decodes a zlib/RFC1950 header. + + + False if more input is needed. + + + The header is invalid. + + + + + Decodes the dictionary checksum after the deflate header. + + + False if more input is needed. + + + + + Decodes the huffman encoded symbols in the input stream. + + + false if more input is needed, true if output window is + full or the current block ends. + + + if deflated stream is invalid. + + + + + Decodes the adler checksum after the deflate stream. + + + false if more input is needed. + + + If checksum doesn't match. + + + + + Decodes the deflated stream. + + + false if more input is needed, or if finished. + + + if deflated stream is invalid. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + The index into buffer where the dictionary starts. + + + The number of bytes in the dictionary. + + + No dictionary is needed. + + + The adler checksum for the buffer is invalid + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + the input. + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + The source of input data + + + The index into buffer where the input starts. + + + The number of bytes of input to use. + + + No input is needed. + + + The index and/or count are wrong. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether IsNeedingDictionary(), + IsNeedingInput() or IsFinished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + The number of bytes written to the buffer, 0 if no further + output can be produced. + + + if buffer has length 0. + + + if deflated stream is invalid. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether needsDictionary(), + needsInput() or finished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + the offset in buffer where storing starts. + + + the maximum number of bytes to output. + + + the number of bytes written to the buffer, 0 if no further output can be produced. + + + if count is less than 0. + + + if the index and / or count are wrong. + + + if deflated stream is invalid. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method also returns true when the stream is finished. + + + + + Returns true, if a preset dictionary is needed to inflate the input. + + + + + Returns true, if the inflater has finished. This means, that no + input is needed and no output can be produced. + + + + + Gets the adler checksum. This is either the checksum of all + uncompressed bytes returned by inflate(), or if needsDictionary() + returns true (and thus no output was yet produced) this is the + adler checksum of the expected dictionary. + + + the adler checksum. + + + + + Gets the total number of output bytes returned by Inflate(). + + + the total number of output bytes. + + + + + Gets the total number of processed compressed input bytes. + + + The total number of bytes of processed input bytes. + + + + + Gets the number of unprocessed input bytes. Useful, if the end of the + stream is reached and you want to further process the bytes after + the deflate stream. + + + The number of bytes of the input which have not been processed. + + + + + Continue decoding header from until more bits are needed or decoding has been completed + + Returns whether decoding could be completed + + + + Get literal/length huffman tree, must not be used before has returned true + + If hader has not been successfully read by the state machine + + + + Get distance huffman tree, must not be used before has returned true + + If hader has not been successfully read by the state machine + + + + Huffman tree used for inflation + + + + + Literal length tree + + + + + Distance tree + + + + + Constructs a Huffman tree from the array of code lengths. + + + the array of code lengths + + + + + Reads the next symbol from input. The symbol is encoded using the + huffman tree. + + + input the input source. + + + the next symbol, or -1 if not enough input is available. + + + + + This class is general purpose class for writing data to a buffer. + + It allows you to write bits as well as bytes + Based on DeflaterPending.java + + author of the original java version : Jochen Hoenicke + + + + + Internal work buffer + + + + + construct instance using default buffer size of 4096 + + + + + construct instance using specified buffer size + + + size to use for internal buffer + + + + + Clear internal state/buffers + + + + + Write a byte to buffer + + + The value to write + + + + + Write a short value to buffer LSB first + + + The value to write. + + + + + write an integer LSB first + + The value to write. + + + + Write a block of data to buffer + + data to write + offset of first byte to write + number of bytes to write + + + + The number of bits written to the buffer + + + + + Align internal buffer on a byte boundary + + + + + Write bits to internal buffer + + source of bits + number of bits to write + + + + Write a short value to internal buffer most significant byte first + + value to write + + + + Indicates if buffer has been flushed + + + + + Flushes the pending buffer into the given output array. If the + output array is to small, only a partial flush is done. + + The output array. + The offset into output array. + The maximum number of bytes to store. + The number of bytes flushed. + + + + Convert internal buffer to byte array. + Buffer is empty on completion + + + The internal buffer contents converted to a byte array. + + + + + A special stream deflating or compressing the bytes that are + written to it. It uses a Deflater to perform actual deflating.
+ Authors of the original java version : Tom Tromey, Jochen Hoenicke +
+
+ + + Creates a new DeflaterOutputStream with a default Deflater and default buffer size. + + + the output stream where deflated output should be written. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + default buffer size. + + + the output stream where deflated output should be written. + + + the underlying deflater. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + buffer size. + + + The output stream where deflated output is written. + + + The underlying deflater to use + + + The buffer size in bytes to use when deflating (minimum value 512) + + + bufsize is less than or equal to zero. + + + baseOutputStream does not support writing + + + deflater instance is null + + + + + Finishes the stream by calling finish() on the deflater. + + + Not all input is deflated + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Allows client to determine if an entry can be patched after its added + + + + + The CryptoTransform currently being used to encrypt the compressed data. + + + + + Returns the 10 byte AUTH CODE to be appended immediately following the AES data stream. + + + + + Encrypt a block of data + + + Data to encrypt. NOTE the original contents of the buffer are lost + + + Offset of first byte in buffer to encrypt + + + Number of bytes in buffer to encrypt + + + + + Deflates everything in the input buffers. This will call + def.deflate() until all bytes from the input buffers + are processed. + + + + + Gets value indicating stream can be read from + + + + + Gets a value indicating if seeking is supported for this stream + This property always returns false + + + + + Get value indicating if this stream supports writing + + + + + Get current length of stream + + + + + Gets the current position within the stream. + + Any attempt to set position + + + + Sets the current position of this stream to the given value. Not supported by this class! + + The offset relative to the to seek. + The to seek from. + The new position in the stream. + Any access + + + + Sets the length of this stream to the given value. Not supported by this class! + + The new stream length. + Any access + + + + Read a byte from stream advancing position by one + + The byte read cast to an int. THe value is -1 if at the end of the stream. + Any access + + + + Read a block of bytes from stream + + The buffer to store read data in. + The offset to start storing at. + The maximum number of bytes to read. + The actual number of bytes read. Zero if end of stream is detected. + Any access + + + + Flushes the stream by calling Flush on the deflater and then + on the underlying stream. This ensures that all bytes are flushed. + + + + + Calls and closes the underlying + stream when is true. + + + + + Get the Auth code for AES encrypted entries + + + + + Writes a single byte to the compressed output stream. + + + The byte value. + + + + + Writes bytes from an array to the compressed stream. + + + The byte array + + + The offset into the byte array where to start. + + + The number of bytes to write. + + + + + This buffer is used temporarily to retrieve the bytes from the + deflater and write them to the underlying output stream. + + + + + The deflater which is used to deflate the stream. + + + + + Base stream the deflater depends on. + + + + + An input buffer customised for use by + + + The buffer supports decryption of incoming data. + + + + + Initialise a new instance of with a default buffer size + + The stream to buffer. + + + + Initialise a new instance of + + The stream to buffer. + The size to use for the buffer + A minimum buffer size of 1KB is permitted. Lower sizes are treated as 1KB. + + + + Get the length of bytes in the + + + + + Get the contents of the raw data buffer. + + This may contain encrypted data. + + + + Get the number of useable bytes in + + + + + Get the contents of the clear text buffer. + + + + + Get/set the number of bytes available + + + + + Call passing the current clear text buffer contents. + + The inflater to set input for. + + + + Fill the buffer from the underlying input stream. + + + + + Read a buffer directly from the input stream + + The buffer to fill + Returns the number of bytes read. + + + + Read a buffer directly from the input stream + + The buffer to read into + The offset to start reading data into. + The number of bytes to read. + Returns the number of bytes read. + + + + Read clear text data from the input stream. + + The buffer to add data to. + The offset to start adding data at. + The number of bytes to read. + Returns the number of bytes actually read. + + + + Read a from the input stream. + + Returns the byte read. + + + + Read an in little endian byte order. + + The short value read case to an int. + + + + Read an in little endian byte order. + + The int value read. + + + + Read a in little endian byte order. + + The long value read. + + + + Get/set the to apply to any data. + + Set this value to null to have no transform applied. + + + + This filter stream is used to decompress data compressed using the "deflate" + format. The "deflate" format is described in RFC 1951. + + This stream may form the basis for other decompression filters, such + as the GZipInputStream. + + Author of the original java version : John Leuner. + + + + + Create an InflaterInputStream with the default decompressor + and a default buffer size of 4KB. + + + The InputStream to read bytes from + + + + + Create an InflaterInputStream with the specified decompressor + and a default buffer size of 4KB. + + + The source of input data + + + The decompressor used to decompress data read from baseInputStream + + + + + Create an InflaterInputStream with the specified decompressor + and the specified buffer size. + + + The InputStream to read bytes from + + + The decompressor to use + + + Size of the buffer to use + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Skip specified number of bytes of uncompressed data + + + Number of bytes to skip + + + The number of bytes skipped, zero if the end of + stream has been reached + + + The number of bytes to skip is less than or equal to zero. + + + + + Clear any cryptographic state. + + + + + Returns 0 once the end of the stream (EOF) has been reached. + Otherwise returns 1. + + + + + Fills the buffer with more data to decompress. + + + Stream ends early + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + Inflater needs a dictionary + + + + + Decompressor for this stream + + + + + Input buffer for this stream. + + + + + Base stream the inflater reads from. + + + + + The compressed size + + + + + Flag indicating whether this instance has been closed or not. + + + + + Contains the output from the Inflation process. + We need to have a window so that we can refer backwards into the output stream + to repeat stuff.
+ Author of the original java version : John Leuner +
+
+ + + Write a byte to this output window + + value to write + + if window is full + + + + + Append a byte pattern already in the window itself + + length of pattern to copy + distance from end of window pattern occurs + + If the repeated data overflows the window + + + + + Copy from input manipulator to internal window + + source of data + length of data to copy + the number of bytes copied + + + + Copy dictionary to window + + source dictionary + offset of start in source dictionary + length of dictionary + + If window isnt empty + + + + + Get remaining unfilled space in window + + Number of bytes left in window + + + + Get bytes available for output in window + + Number of bytes filled + + + + Copy contents of window to output + + buffer to copy to + offset to start at + number of bytes to count + The number of bytes copied + + If a window underflow occurs + + + + + Reset by clearing window so GetAvailable returns 0 + + + + + This class allows us to retrieve a specified number of bits from + the input buffer, as well as copy big byte blocks. + + It uses an int buffer to store up to 31 bits for direct + manipulation. This guarantees that we can get at least 16 bits, + but we only need at most 15, so this is all safe. + + There are some optimizations in this class, for example, you must + never peek more than 8 bits more than needed, and you must first + peek bits before you may drop them. This is not a general purpose + class but optimized for the behaviour of the Inflater. + + authors of the original java version : John Leuner, Jochen Hoenicke + + + + + Get the next sequence of bits but don't increase input pointer. bitCount must be + less or equal 16 and if this call succeeds, you must drop + at least n - 8 bits in the next call. + + The number of bits to peek. + + the value of the bits, or -1 if not enough bits available. */ + + + + + Tries to grab the next bits from the input and + sets to the value, adding . + + true if enough bits could be read, otherwise false + + + + Tries to grab the next bits from the input and + sets of to the value. + + true if enough bits could be read, otherwise false + + + + Drops the next n bits from the input. You should have called PeekBits + with a bigger or equal n before, to make sure that enough bits are in + the bit buffer. + + The number of bits to drop. + + + + Gets the next n bits and increases input pointer. This is equivalent + to followed by , except for correct error handling. + + The number of bits to retrieve. + + the value of the bits, or -1 if not enough bits available. + + + + + Gets the number of bits available in the bit buffer. This must be + only called when a previous PeekBits() returned -1. + + + the number of bits available. + + + + + Gets the number of bytes available. + + + The number of bytes available. + + + + + Skips to the next byte boundary. + + + + + Returns true when SetInput can be called + + + + + Copies bytes from input buffer to output buffer starting + at output[offset]. You have to make sure, that the buffer is + byte aligned. If not enough bytes are available, copies fewer + bytes. + + + The buffer to copy bytes to. + + + The offset in the buffer at which copying starts + + + The length to copy, 0 is allowed. + + + The number of bytes copied, 0 if no bytes were available. + + + Length is less than zero + + + Bit buffer isnt byte aligned + + + + + Resets state and empties internal buffers + + + + + Add more input for consumption. + Only call when IsNeedingInput returns true + + data to be input + offset of first byte of input + number of bytes of input to add. + + + + FastZipEvents supports all events applicable to FastZip operations. + + + + + Delegate to invoke when processing directories. + + + + + Delegate to invoke when processing files. + + + + + Delegate to invoke during processing of files. + + + + + Delegate to invoke when processing for a file has been completed. + + + + + Delegate to invoke when processing directory failures. + + + + + Delegate to invoke when processing file failures. + + + + + Raise the directory failure event. + + The directory causing the failure. + The exception for this event. + A boolean indicating if execution should continue or not. + + + + Fires the file failure handler delegate. + + The file causing the failure. + The exception for this failure. + A boolean indicating if execution should continue or not. + + + + Fires the ProcessFile delegate. + + The file being processed. + A boolean indicating if execution should continue or not. + + + + Fires the delegate + + The file whose processing has been completed. + A boolean indicating if execution should continue or not. + + + + Fires the process directory delegate. + + The directory being processed. + Flag indicating if the directory has matching files as determined by the current filter. + A of true if the operation should continue; false otherwise. + + + + The minimum timespan between events. + + The minimum period of time between events. + + The default interval is three seconds. + + + + FastZip provides facilities for creating and extracting zip files. + + + + + Defines the desired handling when overwriting files during extraction. + + + + + Prompt the user to confirm overwriting + + + + + Never overwrite files. + + + + + Always overwrite files. + + + + + Initialise a default instance of . + + + + + Initialise a new instance of using the specified + + The time setting to use when creating or extracting Zip entries. + Using TimeSetting.LastAccessTime[Utc] when + creating an archive will set the file time to the moment of reading. + + + + + Initialise a new instance of using the specified + + The time to set all values for created or extracted Zip Entries. + + + + Initialise a new instance of + + The events to use during operations. + + + + Get/set a value indicating whether empty directories should be created. + + + + + Get / set the password value. + + + + + Get / set the method of encrypting entries. + + + Only applies when is set. + Defaults to ZipCrypto for backwards compatibility purposes. + + + + + Get or set the active when creating Zip files. + + + + + + Get or set the active when creating Zip files. + + + + + Gets or sets the setting for Zip64 handling when writing. + + + The default value is dynamic which is not backwards compatible with old + programs and can cause problems with XP's built in compression which cant + read Zip64 archives. However it does avoid the situation were a large file + is added and cannot be completed correctly. + NOTE: Setting the size for entries before they are added is the best solution! + By default the EntryFactory used by FastZip will set the file size. + + + + + Get/set a value indicating whether file dates and times should + be restored when extracting files from an archive. + + The default value is false. + + + + Get/set a value indicating whether file attributes should + be restored during extract operations + + + + + Get/set the Compression Level that will be used + when creating the zip + + + + + Delegate called when confirming overwriting of files. + + + + + Create a zip file. + + The name of the zip file to create. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + + + + Create a zip file/archive. + + The name of the zip file to create. + The directory to obtain files and directories from. + True to recurse directories, false for no recursion. + The file filter to apply. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + The is closed after creation. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + true to leave open after the zip has been created, false to dispose it. + + + + Create a zip file. + + The name of the zip file to create. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + true to leave open after the zip has been created, false to dispose it. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + For performing the actual file system scan + true to leave open after the zip has been created, false to dispose it. + The is closed after creation. + + + + Extract the contents of a zip file. + + The zip file to extract from. + The directory to save extracted information in. + A filter to apply to files. + + + + Extract the contents of a zip file. + + The zip file to extract from. + The directory to save extracted information in. + The style of overwriting to apply. + A delegate to invoke when confirming overwriting. + A filter to apply to files. + A filter to apply to directories. + Flag indicating whether to restore the date and time for extracted files. + Allow parent directory traversal in file paths (e.g. ../file) + + + + Extract the contents of a zip file held in a stream. + + The seekable input stream containing the zip to extract from. + The directory to save extracted information in. + The style of overwriting to apply. + A delegate to invoke when confirming overwriting. + A filter to apply to files. + A filter to apply to directories. + Flag indicating whether to restore the date and time for extracted files. + Flag indicating whether the inputStream will be closed by this method. + Allow parent directory traversal in file paths (e.g. ../file) + + + + Defines factory methods for creating new values. + + + + + Create a for a file given its name + + The name of the file to create an entry for. + Returns a file entry based on the passed. + + + + Create a for a file given its name + + The name of the file to create an entry for. + If true get details from the file system if the file exists. + Returns a file entry based on the passed. + + + + Create a for a file given its actual name and optional override name + + The name of the file to create an entry for. + An alternative name to be used for the new entry. Null if not applicable. + If true get details from the file system if the file exists. + Returns a file entry based on the passed. + + + + Create a for a directory given its name + + The name of the directory to create an entry for. + Returns a directory entry based on the passed. + + + + Create a for a directory given its name + + The name of the directory to create an entry for. + If true get details from the file system for this directory if it exists. + Returns a directory entry based on the passed. + + + + Get/set the applicable. + + + + + Get the in use. + + + + + Get the value to use when is set to , + or if not specified, the value of when the class was the initialized + + + + + WindowsNameTransform transforms names to windows compatible ones. + + + + + The maximum windows path name permitted. + + This may not valid for all windows systems - CE?, etc but I cant find the equivalent in the CLR. + + + + In this case we need Windows' invalid path characters. + Path.GetInvalidPathChars() only returns a subset invalid on all platforms. + + + + + Initialises a new instance of + + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Initialise a default instance of + + + + + Gets or sets a value containing the target directory to prefix values with. + + + + + Allow parent directory traversal in file paths (e.g. ../file) + + + + + Gets or sets a value indicating whether paths on incoming values should be removed. + + + + + Transform a Zip directory name to a windows directory name. + + The directory name to transform. + The transformed name. + + + + Transform a Zip format file name to a windows style one. + + The file name to transform. + The transformed name. + + + + Test a name to see if it is a valid name for a windows filename as extracted from a Zip archive. + + The name to test. + Returns true if the name is a valid zip name; false otherwise. + The filename isnt a true windows path in some fundamental ways like no absolute paths, no rooted paths etc. + + + + Force a name to be valid by replacing invalid characters with a fixed value + + The name to make valid + The replacement character to use for any invalid characters. + Returns a valid name + + + + Gets or set the character to replace invalid characters during transformations. + + + + + Determines how entries are tested to see if they should use Zip64 extensions or not. + + + + + Zip64 will not be forced on entries during processing. + + An entry can have this overridden if required + + + + Zip64 should always be used. + + + + + #ZipLib will determine use based on entry values when added to archive. + + + + + The kind of compression used for an entry in an archive + + + + + A direct copy of the file contents is held in the archive + + + + + Common Zip compression method using a sliding dictionary + of up to 32KB and secondary compression from Huffman/Shannon-Fano trees + + + + + An extension to deflate with a 64KB window. Not supported by #Zip currently + + + + + BZip2 compression. Not supported by #Zip. + + + + + LZMA compression. Not supported by #Zip. + + + + + PPMd compression. Not supported by #Zip. + + + + + WinZip special for AES encryption, Now supported by #Zip. + + + + + Identifies the encryption algorithm used for an entry + + + + + No encryption has been used. + + + + + Encrypted using PKZIP 2.0 or 'classic' encryption. + + + + + DES encryption has been used. + + + + + RC2 encryption has been used for encryption. + + + + + Triple DES encryption with 168 bit keys has been used for this entry. + + + + + Triple DES with 112 bit keys has been used for this entry. + + + + + AES 128 has been used for encryption. + + + + + AES 192 has been used for encryption. + + + + + AES 256 has been used for encryption. + + + + + RC2 corrected has been used for encryption. + + + + + Blowfish has been used for encryption. + + + + + Twofish has been used for encryption. + + + + + RC4 has been used for encryption. + + + + + An unknown algorithm has been used for encryption. + + + + + Defines the contents of the general bit flags field for an archive entry. + + + + + Bit 0 if set indicates that the file is encrypted + + + + + Bits 1 and 2 - Two bits defining the compression method (only for Method 6 Imploding and 8,9 Deflating) + + + + + Bit 3 if set indicates a trailing data descriptor is appended to the entry data + + + + + Bit 4 is reserved for use with method 8 for enhanced deflation + + + + + Bit 5 if set indicates the file contains Pkzip compressed patched data. + Requires version 2.7 or greater. + + + + + Bit 6 if set indicates strong encryption has been used for this entry. + + + + + Bit 7 is currently unused + + + + + Bit 8 is currently unused + + + + + Bit 9 is currently unused + + + + + Bit 10 is currently unused + + + + + Bit 11 if set indicates the filename and + comment fields for this file must be encoded using UTF-8. + + + + + Bit 12 is documented as being reserved by PKware for enhanced compression. + + + + + Bit 13 if set indicates that values in the local header are masked to hide + their actual values, and the central directory is encrypted. + + + Used when encrypting the central directory contents. + + + + + Bit 14 is documented as being reserved for use by PKware + + + + + Bit 15 is documented as being reserved for use by PKware + + + + + This class contains constants used for Zip format files + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See . + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See ZipInputStream.CanDecompressEntry. + + + + + The minimum version required to support strong encryption + + + + + The minimum version required to support strong encryption + + + + + Version indicating AES encryption + + + + + The version required for Zip64 extensions (4.5 or higher) + + + + + The version required for BZip2 compression (4.6 or higher) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of Zip64 data descriptor + + + + + Size of data descriptor + + + + + Size of data descriptor + + + + + Size of central header entry (excluding variable fields) + + + + + Size of central header entry + + + + + Size of end of central record (excluding variable fields) + + + + + Size of end of central record (excluding variable fields) + + + + + Size of 'classic' cryptographic header stored before any entry data + + + + + Size of cryptographic header stored before entry data + + + + + The size of the Zip64 central directory locator. + + + + + Signature for local entry header + + + + + Signature for local entry header + + + + + Signature for spanning entry + + + + + Signature for spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for central header + + + + + Signature for central header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central directory locator + + + + + Signature for archive extra data signature (were headers are encrypted). + + + + + Central header digital signature + + + + + Central header digital signature + + + + + End of central directory record signature + + + + + End of central directory record signature + + + + + Default encoding used for string conversion. 0 gives the default system OEM code page. + Using the default code page isnt the full solution necessarily + there are many variable factors, codepage 850 is often a good choice for + European users, however be careful about compatability. + + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + + The method of encrypting entries when creating zip archives. + + + + + No encryption will be used. + + + + + Encrypt entries with ZipCrypto. + + + + + Encrypt entries with AES 128. + + + + + Encrypt entries with AES 256. + + + + + Defines known values for the property. + + + + + Host system = MSDOS + + + + + Host system = Amiga + + + + + Host system = Open VMS + + + + + Host system = Unix + + + + + Host system = VMCms + + + + + Host system = Atari ST + + + + + Host system = OS2 + + + + + Host system = Macintosh + + + + + Host system = ZSystem + + + + + Host system = Cpm + + + + + Host system = Windows NT + + + + + Host system = MVS + + + + + Host system = VSE + + + + + Host system = Acorn RISC + + + + + Host system = VFAT + + + + + Host system = Alternate MVS + + + + + Host system = BEOS + + + + + Host system = Tandem + + + + + Host system = OS400 + + + + + Host system = OSX + + + + + Host system = WinZIP AES + + + + + This class represents an entry in a zip archive. This can be a file + or a directory + ZipFile and ZipInputStream will give you instances of this class as + information about the members in an archive. ZipOutputStream + uses an instance of this class when creating an entry in a Zip file. +
+
Author of the original java version : Jochen Hoenicke +
+
+ + + Creates a zip entry with the given name. + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with relative names only. + There are with no device names and path elements are separated by '/' characters. + + + The name passed is null + + + + + Creates a zip entry with the given name and version required to extract + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with no device names and + path elements separated by '/' characters. This is not enforced see CleanName + on how to ensure names are valid if this is desired. + + + The minimum 'feature version' required this entry + + + The name passed is null + + + + + Initializes an entry with the given name and made by information + + Name for this entry + Version and HostSystem Information + Minimum required zip feature version required to extract this entry + Compression method for this entry. + + The name passed is null + + + versionRequiredToExtract should be 0 (auto-calculate) or > 10 + + + This constructor is used by the ZipFile class when reading from the central header + It is not generally useful, use the constructor specifying the name only. + + + + + Creates a deep copy of the given zip entry. + + + The entry to copy. + + + + + Get a value indicating whether the entry has a CRC value available. + + + + + Get/Set flag indicating if entry is encrypted. + A simple helper routine to aid interpretation of flags + + This is an assistant that interprets the flags property. + + +
+ Get / set a flag indicating whether entry name and comment text are + encoded in unicode UTF8. + + This is an assistant that interprets the flags property. + + + + Value used during password checking for PKZIP 2.0 / 'classic' encryption. + + + + + Get/Set general purpose bit flag for entry + + + General purpose bit flag
+
+ Bit 0: If set, indicates the file is encrypted
+ Bit 1-2 Only used for compression type 6 Imploding, and 8, 9 deflating
+ Imploding:
+ Bit 1 if set indicates an 8K sliding dictionary was used. If clear a 4k dictionary was used
+ Bit 2 if set indicates 3 Shannon-Fanno trees were used to encode the sliding dictionary, 2 otherwise
+
+ Deflating:
+ Bit 2 Bit 1
+ 0 0 Normal compression was used
+ 0 1 Maximum compression was used
+ 1 0 Fast compression was used
+ 1 1 Super fast compression was used
+
+ Bit 3: If set, the fields crc-32, compressed size + and uncompressed size are were not able to be written during zip file creation + The correct values are held in a data descriptor immediately following the compressed data.
+ Bit 4: Reserved for use by PKZIP for enhanced deflating
+ Bit 5: If set indicates the file contains compressed patch data
+ Bit 6: If set indicates strong encryption was used.
+ Bit 7-10: Unused or reserved
+ Bit 11: If set the name and comments for this entry are in unicode.
+ Bit 12-15: Unused or reserved
+
+ + +
+ + + Get/Set index of this entry in Zip file + + This is only valid when the entry is part of a + + + + Get/set offset for use in central header + + + + + Get/Set external file attributes as an integer. + The values of this are operating system dependent see + HostSystem for details + + + + + Get the version made by for this entry or zero if unknown. + The value / 10 indicates the major version number, and + the value mod 10 is the minor version number + + + + + Get a value indicating this entry is for a DOS/Windows system. + + + + + Test the external attributes for this to + see if the external attributes are Dos based (including WINNT and variants) + and match the values + + The attributes to test. + Returns true if the external attributes are known to be DOS/Windows + based and have the same attributes set as the value passed. + + + + Gets the compatibility information for the external file attribute + If the external file attributes are compatible with MS-DOS and can be read + by PKZIP for DOS version 2.04g then this value will be zero. Otherwise the value + will be non-zero and identify the host system on which the attributes are compatible. + + + + The values for this as defined in the Zip File format and by others are shown below. The values are somewhat + misleading in some cases as they are not all used as shown. You should consult the relevant documentation + to obtain up to date and correct information. The modified appnote by the infozip group is + particularly helpful as it documents a lot of peculiarities. The document is however a little dated. + + 0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems) + 1 - Amiga + 2 - OpenVMS + 3 - Unix + 4 - VM/CMS + 5 - Atari ST + 6 - OS/2 HPFS + 7 - Macintosh + 8 - Z-System + 9 - CP/M + 10 - Windows NTFS + 11 - MVS (OS/390 - Z/OS) + 12 - VSE + 13 - Acorn Risc + 14 - VFAT + 15 - Alternate MVS + 16 - BeOS + 17 - Tandem + 18 - OS/400 + 19 - OS/X (Darwin) + 99 - WinZip AES + remainder - unused + + + + + + Get minimum Zip feature version required to extract this entry + + + Minimum features are defined as:
+ 1.0 - Default value
+ 1.1 - File is a volume label
+ 2.0 - File is a folder/directory
+ 2.0 - File is compressed using Deflate compression
+ 2.0 - File is encrypted using traditional encryption
+ 2.1 - File is compressed using Deflate64
+ 2.5 - File is compressed using PKWARE DCL Implode
+ 2.7 - File is a patch data set
+ 4.5 - File uses Zip64 format extensions
+ 4.6 - File is compressed using BZIP2 compression
+ 5.0 - File is encrypted using DES
+ 5.0 - File is encrypted using 3DES
+ 5.0 - File is encrypted using original RC2 encryption
+ 5.0 - File is encrypted using RC4 encryption
+ 5.1 - File is encrypted using AES encryption
+ 5.1 - File is encrypted using corrected RC2 encryption
+ 5.1 - File is encrypted using corrected RC2-64 encryption
+ 6.1 - File is encrypted using non-OAEP key wrapping
+ 6.2 - Central directory encryption (not confirmed yet)
+ 6.3 - File is compressed using LZMA
+ 6.3 - File is compressed using PPMD+
+ 6.3 - File is encrypted using Blowfish
+ 6.3 - File is encrypted using Twofish
+
+ +
+ + + Get a value indicating whether this entry can be decompressed by the library. + + This is based on the and + whether the compression method is supported. + + + + Force this entry to be recorded using Zip64 extensions. + + + + + Get a value indicating whether Zip64 extensions were forced. + + A value of true if Zip64 extensions have been forced on; false if not. + + + + Gets a value indicating if the entry requires Zip64 extensions + to store the full entry values. + + A value of true if a local header requires Zip64 extensions; false if not. + + + + Get a value indicating whether the central directory entry requires Zip64 extensions to be stored. + + + + + Get/Set DosTime value. + + + The MS-DOS date format can only represent dates between 1/1/1980 and 12/31/2107. + + + + + Gets/Sets the time of last modification of the entry. + + + The property is updated to match this as far as possible. + + + + + Returns the entry name. + + + The unix naming convention is followed. + Path components in the entry should always separated by forward slashes ('/'). + Dos device names like C: should also be removed. + See the class, or + + + + + Gets/Sets the size of the uncompressed data. + + + The size or -1 if unknown. + + Setting the size before adding an entry to an archive can help + avoid compatibility problems with some archivers which don't understand Zip64 extensions. + + + + Gets/Sets the size of the compressed data. + + + The compressed entry size or -1 if unknown. + + + + + Gets/Sets the crc of the uncompressed data. + + + Crc is not in the range 0..0xffffffffL + + + The crc value or -1 if unknown. + + + + + Gets/Sets the compression method. + + + The compression method for this entry + + + + + Gets the compression method for outputting to the local or central header. + Returns same value as CompressionMethod except when AES encrypting, which + places 99 in the method and places the real method in the extra data. + + + + + Gets/Sets the extra data. + + + Extra data is longer than 64KB (0xffff) bytes. + + + Extra data or null if not set. + + + + + For AES encrypted files returns or sets the number of bits of encryption (128, 192 or 256). + When setting, only 0 (off), 128 or 256 is supported. + + + + + AES Encryption strength for storage in extra data in entry header. + 1 is 128 bit, 2 is 192 bit, 3 is 256 bit. + + + + + Returns the length of the salt, in bytes + + Key size -> Salt length: 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes. + + + + Number of extra bytes required to hold the AES Header fields (Salt, Pwd verify, AuthCode) + + File format: + Bytes | Content + ---------+--------------------------- + Variable | Salt value + 2 | Password verification value + Variable | Encrypted file data + 10 | Authentication code + + + + Number of extra bytes required to hold the encryption header fields. + + + + + Process extra data fields updating the entry based on the contents. + + True if the extra data fields should be handled + for a local header, rather than for a central header. + + + + + Gets/Sets the entry comment. + + + If comment is longer than 0xffff. + + + The comment or null if not set. + + + A comment is only available for entries when read via the class. + The class doesn't have the comment data available. + + + + + Gets a value indicating if the entry is a directory. + however. + + + A directory is determined by an entry name with a trailing slash '/'. + The external file attributes can also indicate an entry is for a directory. + Currently only dos/windows attributes are tested in this manner. + The trailing slash convention should always be followed. + + + + + Get a value of true if the entry appears to be a file; false otherwise + + + This only takes account of DOS/Windows attributes. Other operating systems are ignored. + For linux and others the result may be incorrect. + + + + + Test entry to see if data can be extracted. + + Returns true if data can be extracted for this entry; false otherwise. + + + + Creates a copy of this zip entry. + + An that is a copy of the current instance. + + + + Gets a string representation of this ZipEntry. + + A readable textual representation of this + + + + Test a compression method to see if this library + supports extracting data compressed with that method + + The compression method to test. + Returns true if the compression method is supported; false otherwise + + + + Cleans a name making it conform to Zip file conventions. + Devices names ('c:\') and UNC share names ('\\server\share') are removed + and forward slashes ('\') are converted to back slashes ('/'). + Names are made relative by trimming leading slashes which is compatible + with the ZIP naming convention. + + The name to clean + The 'cleaned' name. + + The Zip name transform class is more flexible. + + + + + General ZipEntry helper extensions + + + + + Efficiently check if a flag is set without enum un-/boxing + + + + Returns whether the flag was set + + + + Efficiently set a flag without enum un-/boxing + + + + Whether the passed flag should be set (1) or cleared (0) + + + + Basic implementation of + + + + + Defines the possible values to be used for the . + + + + + Use the recorded LastWriteTime value for the file. + + + + + Use the recorded LastWriteTimeUtc value for the file + + + + + Use the recorded CreateTime value for the file. + + + + + Use the recorded CreateTimeUtc value for the file. + + + + + Use the recorded LastAccessTime value for the file. + + + + + Use the recorded LastAccessTimeUtc value for the file. + + + + + Use a fixed value. + + The actual value used can be + specified via the constructor or + using the with the setting set + to which will use the when this class was constructed. + The property can also be used to set this value. + + + + Initialise a new instance of the class. + + A default , and the LastWriteTime for files is used. + + + + Initialise a new instance of using the specified + + The time setting to use when creating Zip entries. + + + + Initialise a new instance of using the specified + + The time to set all values to. + + + + Get / set the to be used when creating new values. + + + Setting this property to null will cause a default name transform to be used. + + + + + Get / set the in use. + + + + + Get / set the value to use when is set to + + + + + A bitmask defining the attributes to be retrieved from the actual file. + + The default is to get all possible attributes from the actual file. + + + + A bitmask defining which attributes are to be set on. + + By default no attributes are set on. + + + + Get set a value indicating whether unidoce text should be set on. + + + + + Make a new for a file. + + The name of the file to create a new entry for. + Returns a new based on the . + + + + Make a new for a file. + + The name of the file to create a new entry for. + If true entry detail is retrieved from the file system if the file exists. + Returns a new based on the . + + + + Make a new from a name. + + The name of the file to create a new entry for. + An alternative name to be used for the new entry. Null if not applicable. + If true entry detail is retrieved from the file system if the file exists. + Returns a new based on the . + + + + Make a new for a directory. + + The raw untransformed name for the new directory + Returns a new representing a directory. + + + + Make a new for a directory. + + The raw untransformed name for the new directory + If true entry detail is retrieved from the file system if the file exists. + Returns a new representing a directory. + + + + ZipException represents exceptions specific to Zip classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the ZipException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + ExtraData tagged value interface. + + + + + Get the ID for this tagged data value. + + + + + Set the contents of this instance from the data passed. + + The data to extract contents from. + The offset to begin extracting data from. + The number of bytes to extract. + + + + Get the data representing this instance. + + Returns the data for this instance. + + + + A raw binary tagged value + + + + + Initialise a new instance. + + The tag ID. + + + + Get the ID for this tagged data value. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Get /set the binary data representing this instance. + + The raw binary data representing this instance. + + + + The tag ID for this instance. + + + + + Class representing extended unix date time values. + + + + + Flags indicate which values are included in this instance. + + + + + The modification time is included + + + + + The access time is included + + + + + The create time is included. + + + + + Get the ID + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a value to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + The standard Unix time is a signed integer data type, directly encoding the Unix time number, + which is the number of seconds since 1970-01-01. + Being 32 bits means the values here cover a range of about 136 years. + The minimum representable time is 1901-12-13 20:45:52, + and the maximum representable time is 2038-01-19 03:14:07. + + + + + Get /set the Modification Time + + + + + + + Get / set the Access Time + + + + + + + Get / Set the Create Time + + + + + + + Get/set the values to include. + + + + + Class handling NT date time values. + + + + + Get the ID for this tagged data value. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a valuie to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + + NTFS filetimes are 64-bit unsigned integers, stored in Intel + (least significant byte first) byte order. They determine the + number of 1.0E-07 seconds (1/10th microseconds!) past WinNT "epoch", + which is "01-Jan-1601 00:00:00 UTC". 28 May 60056 is the upper limit + + + + + Get/set the last modification time. + + + + + Get /set the create time + + + + + Get /set the last access time. + + + + + A factory that creates tagged data instances. + + + + + Get data for a specific tag value. + + The tag ID to find. + The data to search. + The offset to begin extracting data from. + The number of bytes to extract. + The located value found, or null if not found. + + + + + A class to handle the extra data field for Zip entries + + + Extra data contains 0 or more values each prefixed by a header tag and length. + They contain zero or more bytes of actual data. + The data is held internally using a copy on write strategy. This is more efficient but + means that for extra data created by passing in data can have the values modified by the caller + in some circumstances. + + + + + Initialise a default instance. + + + + + Initialise with known extra data. + + The extra data. + + + + Get the raw extra data value + + Returns the raw byte[] extra data this instance represents. + + + + Clear the stored data. + + + + + Gets the current extra data length. + + + + + Get a read-only for the associated tag. + + The tag to locate data for. + Returns a containing tag data or null if no tag was found. + + + + Get the tagged data for a tag. + + The tag to search for. + Returns a tagged value or null if none found. + + + + Get the length of the last value found by + + This is only valid if has previously returned true. + + + + Get the index for the current read value. + + This is only valid if has previously returned true. + Initially the result will be the index of the first byte of actual data. The value is updated after calls to + , and . + + + + Get the number of bytes remaining to be read for the current value; + + + + + Find an extra data value + + The identifier for the value to find. + Returns true if the value was found; false otherwise. + + + + Add a new entry to extra data. + + The value to add. + + + + Add a new entry to extra data + + The ID for this entry. + The data to add. + If the ID already exists its contents are replaced. + + + + Start adding a new entry. + + Add data using , , , or . + The new entry is completed and actually added by calling + + + + + Add entry data added since using the ID passed. + + The identifier to use for this entry. + + + + Add a byte of data to the pending new entry. + + The byte to add. + + + + + Add data to a pending new entry. + + The data to add. + + + + + Add a short value in little endian order to the pending new entry. + + The data to add. + + + + + Add an integer value in little endian order to the pending new entry. + + The data to add. + + + + + Add a long value in little endian order to the pending new entry. + + The data to add. + + + + + Delete an extra data field. + + The identifier of the field to delete. + Returns true if the field was found and deleted. + + + + Read a long in little endian form from the last found data value + + Returns the long value read. + + + + Read an integer in little endian form from the last found data value. + + Returns the integer read. + + + + Read a short value in little endian form from the last found data value. + + Returns the short value read. + + + + Read a byte from an extra data + + The byte value read or -1 if the end of data has been reached. + + + + Skip data during reading. + + The number of bytes to skip. + + + + Internal form of that reads data at any location. + + Returns the short value read. + + + + Dispose of this instance. + + + + + Arguments used with KeysRequiredEvent + + + + + Initialise a new instance of + + The name of the file for which keys are required. + + + + Initialise a new instance of + + The name of the file for which keys are required. + The current key value. + + + + Gets the name of the file for which keys are required. + + + + + Gets or sets the key value + + + + + The strategy to apply to testing. + + + + + Find the first error only. + + + + + Find all possible errors. + + + + + The operation in progress reported by a during testing. + + TestArchive + + + + Setting up testing. + + + + + Testing an individual entries header + + + + + Testing an individual entries data + + + + + Testing an individual entry has completed. + + + + + Running miscellaneous tests + + + + + Testing is complete + + + + + Status returned by during testing. + + TestArchive + + + + Initialise a new instance of + + The this status applies to. + + + + Get the current in progress. + + + + + Get the this status is applicable to. + + + + + Get the current/last entry tested. + + + + + Get the number of errors detected so far. + + + + + Get the number of bytes tested so far for the current entry. + + + + + Get a value indicating whether the last entry test was valid. + + + + + Delegate invoked during testing if supplied indicating current progress and status. + + If the message is non-null an error has occured. If the message is null + the operation as found in status has started. + + + + The possible ways of applying updates to an archive. + + + + + Perform all updates on temporary files ensuring that the original file is saved. + + + + + Update the archive directly, which is faster but less safe. + + + + + This class represents a Zip archive. You can ask for the contained + entries, or get an input stream for a file entry. The entry is + automatically decompressed. + + You can also update the archive adding or deleting entries. + + This class is thread safe for input: You can open input streams for arbitrary + entries in different threads. +
+
Author of the original java version : Jochen Hoenicke +
+ + + using System; + using System.Text; + using System.Collections; + using System.IO; + + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + static public void Main(string[] args) + { + using (ZipFile zFile = new ZipFile(args[0])) { + Console.WriteLine("Listing of : " + zFile.Name); + Console.WriteLine(""); + Console.WriteLine("Raw Size Size Date Time Name"); + Console.WriteLine("-------- -------- -------- ------ ---------"); + foreach (ZipEntry e in zFile) { + if ( e.IsFile ) { + DateTime d = e.DateTime; + Console.WriteLine("{0, -10}{1, -10}{2} {3} {4}", e.Size, e.CompressedSize, + d.ToString("dd-MM-yy"), d.ToString("HH:mm"), + e.Name); + } + } + } + } + } + + +
+ + + Delegate for handling keys/password setting during compression/decompression. + + + + + Event handler for handling encryption keys. + + + + + Handles getting of encryption keys when required. + + The file for which encryption keys are required. + + + + Get/set the encryption key value. + + + + + Password to be used for encrypting/decrypting files. + + Set to null if no password is required. + + + + Get a value indicating whether encryption keys are currently available. + + + + + Opens a Zip file with the given name for reading. + + The name of the file to open. + The argument supplied is null. + + An i/o error occurs + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + The supplied argument is null. + + An i/o error occurs. + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + true to leave the file open when the ZipFile is disposed, false to dispose of it + The supplied argument is null. + + An i/o error occurs. + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + + An i/o error occurs + + + The stream doesn't contain a valid zip archive.
+
+ + The stream doesnt support seeking. + + + The stream argument is null. + +
+ + + Opens a Zip file reading the given . + + The to read archive data from. + true to leave the stream open when the ZipFile is disposed, false to dispose of it + + An i/o error occurs + + + The stream doesn't contain a valid zip archive.
+
+ + The stream doesnt support seeking. + + + The stream argument is null. + +
+ + + Initialises a default instance with no entries and no file storage. + + + + + Finalize this instance. + + + + + Closes the ZipFile. If the stream is owned then this also closes the underlying input stream. + Once closed, no further instance methods should be called. + + + An i/o error occurs. + + + + + Create a new whose data will be stored in a file. + + The name of the archive to create. + Returns the newly created + is null + + + + Create a new whose data will be stored on a stream. + + The stream providing data storage. + Returns the newly created + is null + doesnt support writing. + + + + Get/set a flag indicating if the underlying stream is owned by the ZipFile instance. + If the flag is true then the stream will be closed when Close is called. + + + The default value is true in all cases. + + + + + Get a value indicating whether + this archive is embedded in another file or not. + + + + + Get a value indicating that this archive is a new one. + + + + + Gets the comment for the zip file. + + + + + Gets the name of this zip file. + + + + + Gets the number of entries in this zip file. + + + The Zip file has been closed. + + + + + Get the number of entries contained in this . + + + + + Indexer property for ZipEntries + + + + + Gets an enumerator for the Zip entries in this Zip file. + + Returns an for this archive. + + The Zip file has been closed. + + + + + Return the index of the entry with a matching name + + Entry name to find + If true the comparison is case insensitive + The index position of the matching entry or -1 if not found + + The Zip file has been closed. + + + + + Searches for a zip entry in this archive with the given name. + String comparisons are case insensitive + + + The name to find. May contain directory components separated by slashes ('/'). + + + A clone of the zip entry, or null if no entry with that name exists. + + + The Zip file has been closed. + + + + + Gets an input stream for reading the given zip entry data in an uncompressed form. + Normally the should be an entry returned by GetEntry(). + + The to obtain a data for + An input containing data for this + + The ZipFile has already been closed + + + The compression method for the entry is unknown + + + The entry is not found in the ZipFile + + + + + Creates an input stream reading a zip entry + + The index of the entry to obtain an input stream for. + + An input containing data for this + + + The ZipFile has already been closed + + + The compression method for the entry is unknown + + + The entry is not found in the ZipFile + + + + + Test an archive for integrity/validity + + Perform low level data Crc check + true if all tests pass, false otherwise + Testing will terminate on the first error found. + + + + Test an archive for integrity/validity + + Perform low level data Crc check + The to apply. + The handler to call during testing. + true if all tests pass, false otherwise + The object has already been closed. + + + + Test a local header against that provided from the central directory + + + The entry to test against + + The type of tests to carry out. + The offset of the entries data in the file + + + + The kind of update to apply. + + + + + Get / set the to apply to names when updating. + + + + + Get/set the used to generate values + during updates. + + + + + Get /set the buffer size to be used when updating this zip file. + + + + + Get a value indicating an update has been started. + + + + + Get / set a value indicating how Zip64 Extension usage is determined when adding entries. + + + + + Begin updating this archive. + + The archive storage for use during the update. + The data source to utilise during updating. + ZipFile has been closed. + One of the arguments provided is null + ZipFile has been closed. + + + + Begin updating to this archive. + + The storage to use during the update. + + + + Begin updating this archive. + + + + + + + + Commit current updates, updating this archive. + + + + ZipFile has been closed. + + + + Abort updating leaving the archive unchanged. + + + + + + + Set the file comment to be recorded when the current update is commited. + + The comment to record. + ZipFile has been closed. + + + + Add a new entry to the archive. + + The name of the file to add. + The compression method to use. + Ensure Unicode text is used for name and comment for this entry. + Argument supplied is null. + ZipFile has been closed. + Compression method is not supported for creating entries. + + + + Add a new entry to the archive. + + The name of the file to add. + The compression method to use. + ZipFile has been closed. + Compression method is not supported for creating entries. + + + + Add a file to the archive. + + The name of the file to add. + Argument supplied is null. + + + + Add a file to the archive. + + The name of the file to add. + The name to use for the on the Zip file created. + Argument supplied is null. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + The compression method to use. + Compression method is not supported for creating entries. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + The compression method to use. + Ensure Unicode text is used for name and comments for this entry. + Compression method is not supported for creating entries. + + + + Add a that contains no data. + + The entry to add. + This can be used to add directories, volume labels, or empty file entries. + + + + Add a with data. + + The source of the data for this entry. + The entry to add. + This can be used to add file entries with a custom data source. + + The encryption method specified in is unsupported. + + Compression method is not supported for creating entries. + + + + Add a directory entry to the archive. + + The directory to add. + + + + Check if the specified compression method is supported for adding a new entry. + + The compression method for the new entry. + + + + Delete an entry by name + + The filename to delete + True if the entry was found and deleted; false otherwise. + + + + Delete a from the archive. + + The entry to delete. + + + + Write an unsigned short in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Write an unsigned int in little endian byte order. + + + + + Write a long in little endian byte order. + + + + + Get a raw memory buffer. + + Returns a raw memory buffer. + + + + Get the size of the source descriptor for a . + + The update to get the size for. + Whether to include the signature size + The descriptor size, zero if there isn't one. + + + + Get an output stream for the specified + + The entry to get an output stream for. + The output stream obtained for the entry. + + + + Class used to sort updates. + + + + + Compares two objects and returns a value indicating whether one is + less than, equal to or greater than the other. + + First object to compare + Second object to compare. + Compare result. + + + + Represents a pending update to a Zip file. + + + + + Copy an existing entry. + + The existing entry to copy. + + + + Get the for this update. + + This is the source or original entry. + + + + Get the that will be written to the updated/new file. + + + + + Get the command for this update. + + + + + Get the filename if any for this update. Null if none exists. + + + + + Get/set the location of the size patch for this update. + + + + + Get /set the location of the crc patch for this update. + + + + + Get/set the size calculated by offset. + Specifically, the difference between this and next entry's starting offset. + + + + + Releases the unmanaged resources used by the this instance and optionally releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Read an unsigned short in little endian byte order. + + Returns the value read. + + The stream ends prematurely + + + + + Read a uint in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Search for and read the central directory of a zip file filling the entries array. + + + An i/o error occurs. + + + The central directory is malformed or cannot be found + + + + + Locate the data for a given entry. + + + The start offset of the data. + + + The stream ends prematurely + + + The local header signature is invalid, the entry and central header file name lengths are different + or the local and entry compression methods dont match + + + + + Represents a string from a which is stored as an array of bytes. + + + + + Initialise a with a string. + + The textual string form. + + + + Initialise a using a string in its binary 'raw' form. + + + + + + Get a value indicating the original source of data for this instance. + True if the source was a string; false if the source was binary data. + + + + + Get the length of the comment when represented as raw bytes. + + + + + Get the comment in its 'raw' form as plain bytes. + + + + + Reset the comment to its initial state. + + + + + Implicit conversion of comment to a string. + + The to convert to a string. + The textual equivalent for the input value. + + + + An enumerator for Zip entries + + + + + An is a stream that you can write uncompressed data + to and flush, but cannot read, seek or do anything else to. + + + + + Gets a value indicating whether the current stream supports reading. + + + + + Write any buffered data to underlying storage. + + + + + Gets a value indicating whether the current stream supports writing. + + + + + Gets a value indicating whether the current stream supports seeking. + + + + + Get the length in bytes of the stream. + + + + + Gets or sets the position within the current stream. + + + + + Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. + + The sum of offset and count is larger than the buffer length. + Methods were called after the stream was closed. + The stream does not support reading. + buffer is null. + An I/O error occurs. + offset or count is negative. + + + + Sets the position within the current stream. + + A byte offset relative to the origin parameter. + A value of type indicating the reference point used to obtain the new position. + + The new position within the current stream. + + An I/O error occurs. + The stream does not support seeking, such as if the stream is constructed from a pipe or console output. + Methods were called after the stream was closed. + + + + Sets the length of the current stream. + + The desired length of the current stream in bytes. + The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. + An I/O error occurs. + Methods were called after the stream was closed. + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + An I/O error occurs. + The stream does not support writing. + Methods were called after the stream was closed. + buffer is null. + The sum of offset and count is greater than the buffer length. + offset or count is negative. + + + + A is an + whose data is only a part or subsection of a file. + + + + + Initialise a new instance of the class. + + The containing the underlying stream to use for IO. + The start of the partial data. + The length of the partial data. + + + + Read a byte from this stream. + + Returns the byte read or -1 on end of stream. + + + + Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. + + The sum of offset and count is larger than the buffer length. + Methods were called after the stream was closed. + The stream does not support reading. + buffer is null. + An I/O error occurs. + offset or count is negative. + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + An I/O error occurs. + The stream does not support writing. + Methods were called after the stream was closed. + buffer is null. + The sum of offset and count is greater than the buffer length. + offset or count is negative. + + + + When overridden in a derived class, sets the length of the current stream. + + The desired length of the current stream in bytes. + The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. + An I/O error occurs. + Methods were called after the stream was closed. + + + + When overridden in a derived class, sets the position within the current stream. + + A byte offset relative to the origin parameter. + A value of type indicating the reference point used to obtain the new position. + + The new position within the current stream. + + An I/O error occurs. + The stream does not support seeking, such as if the stream is constructed from a pipe or console output. + Methods were called after the stream was closed. + + + + Clears all buffers for this stream and causes any buffered data to be written to the underlying device. + + An I/O error occurs. + + + + Gets or sets the position within the current stream. + + + The current position within the stream. + An I/O error occurs. + The stream does not support seeking. + Methods were called after the stream was closed. + + + + Gets the length in bytes of the stream. + + + A long value representing the length of the stream in bytes. + A class derived from Stream does not support seeking. + Methods were called after the stream was closed. + + + + Gets a value indicating whether the current stream supports writing. + + false + true if the stream supports writing; otherwise, false. + + + + Gets a value indicating whether the current stream supports seeking. + + true + true if the stream supports seeking; otherwise, false. + + + + Gets a value indicating whether the current stream supports reading. + + true. + true if the stream supports reading; otherwise, false. + + + + Gets a value that determines whether the current stream can time out. + + + A value that determines whether the current stream can time out. + + + + Provides a static way to obtain a source of data for an entry. + + + + + Get a source of data by creating a new stream. + + Returns a to use for compression input. + Ideally a new stream is created and opened to achieve this, to avoid locking problems. + + + + Represents a source of data that can dynamically provide + multiple data sources based on the parameters passed. + + + + + Get a data source. + + The to get a source for. + The name for data if known. + Returns a to use for compression input. + Ideally a new stream is created and opened to achieve this, to avoid locking problems. + + + + Default implementation of a for use with files stored on disk. + + + + + Initialise a new instance of + + The name of the file to obtain data from. + + + + Get a providing data. + + Returns a providing data. + + + + Default implementation of for files stored on disk. + + + + + Get a providing data for an entry. + + The entry to provide data for. + The file name for data if known. + Returns a stream providing data; or null if not available + + + + Defines facilities for data storage when updating Zip Archives. + + + + + Get the to apply during updates. + + + + + Get an empty that can be used for temporary output. + + Returns a temporary output + + + + + Convert a temporary output stream to a final stream. + + The resulting final + + + + + Make a temporary copy of the original stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The current stream. + Returns a stream suitable for direct updating. + This may be the current stream passed. + + + + Dispose of this instance. + + + + + An abstract suitable for extension by inheritance. + + + + + Initializes a new instance of the class. + + The update mode. + + + + Gets a temporary output + + Returns the temporary output stream. + + + + + Converts the temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + + Make a temporary copy of a . + + The to make a copy of. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The to open for direct update. + Returns a stream suitable for direct updating. + + + + Disposes this instance. + + + + + Gets the update mode applicable. + + The update mode. + + + + An implementation suitable for hard disks. + + + + + Initializes a new instance of the class. + + The file. + The update mode. + + + + Initializes a new instance of the class. + + The file. + + + + Gets a temporary output for performing updates on. + + Returns the temporary output stream. + + + + Converts a temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + Make a temporary copy of a stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The current stream. + Returns a stream suitable for direct updating. + If the is not null this is used as is. + + + + Disposes this instance. + + + + + An implementation suitable for in memory streams. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The to use + This constructor is for testing as memory streams dont really require safe mode. + + + + Get the stream returned by if this was in fact called. + + + + + Gets the temporary output + + Returns the temporary output stream. + + + + Converts the temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + Make a temporary copy of the original stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The original source stream + Returns a stream suitable for direct updating. + If the passed is not null this is used; + otherwise a new is returned. + + + + Disposes this instance. + + + + + Holds data pertinent to a data descriptor. + + + + + Get /set the compressed size of data. + + + + + Get / set the uncompressed size of data + + + + + Get /set the crc value. + + + + + This class assists with writing/reading from Zip files. + + + + + Initialise an instance of this class. + + The name of the file to open. + + + + Initialise a new instance of . + + The stream to use. + + + + Get / set a value indicating whether the underlying stream is owned or not. + + If the stream is owned it is closed when this instance is closed. + + + + Close the stream. + + + The underlying stream is closed only if is true. + + + + + Locates a block with the desired . + + The signature to find. + Location, marking the end of block. + Minimum size of the block. + The maximum variable data. + Returns the offset of the first byte after the signature; -1 if not found + + + + Write Zip64 end of central directory records (File header and locator). + + The number of entries in the central directory. + The size of entries in the central directory. + The offset of the central directory. + + + + Write the required records to end the central directory. + + The number of entries in the directory. + The size of the entries in the directory. + The start of the central directory. + The archive comment. (This can be null). + + + + Read an unsigned short in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read an int in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read a long in little endian byte order. + + The value read. + + + + Write an unsigned short in little endian byte order. + + The value to write. + + + + Write a ushort in little endian byte order. + + The value to write. + + + + Write an int in little endian byte order. + + The value to write. + + + + Write a uint in little endian byte order. + + The value to write. + + + + Write a long in little endian byte order. + + The value to write. + + + + Write a ulong in little endian byte order. + + The value to write. + + + + Write a data descriptor. + + The entry to write a descriptor for. + Returns the number of descriptor bytes written. + + + + Read data descriptor at the end of compressed data. + + if set to true [zip64]. + The data to fill in. + Returns the number of bytes read in the descriptor. + + + + This is an InflaterInputStream that reads the files baseInputStream an zip archive + one after another. It has a special method to get the zip entry of + the next file. The zip entry contains information about the file name + size, compressed size, Crc, etc. + It includes support for Stored and Deflated entries. +
+
Author of the original java version : Jochen Hoenicke +
+ + This sample shows how to read a zip file + + using System; + using System.Text; + using System.IO; + + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + public static void Main(string[] args) + { + using ( ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) { + + ZipEntry theEntry; + const int size = 2048; + byte[] data = new byte[2048]; + + while ((theEntry = s.GetNextEntry()) != null) { + if ( entry.IsFile ) { + Console.Write("Show contents (y/n) ?"); + if (Console.ReadLine() == "y") { + while (true) { + size = s.Read(data, 0, data.Length); + if (size > 0) { + Console.Write(new ASCIIEncoding().GetString(data, 0, size)); + } else { + break; + } + } + } + } + } + } + } + } + + +
+ + + Delegate for reading bytes from a stream. + + + + + The current reader this instance. + + + + + Creates a new Zip input stream, for reading a zip archive. + + The underlying providing data. + + + + Creates a new Zip input stream, for reading a zip archive. + + The underlying providing data. + Size of the buffer. + + + + Optional password used for encryption when non-null + + A password for all encrypted entries in this + + + + Gets a value indicating if there is a current entry and it can be decompressed + + + The entry can only be decompressed if the library supports the zip features required to extract it. + See the ZipEntry Version property for more details. + + Since uses the local headers for extraction, entries with no compression combined with the + flag set, cannot be extracted as the end of the entry data cannot be deduced. + + + + + Is the compression method for the specified entry supported? + + + Uses entry.CompressionMethodForHeader so that entries of type WinZipAES will be rejected. + + the entry to check. + true if the compression method is supported, false if not. + + + + Advances to the next entry in the archive + + + The next entry in the archive or null if there are no more entries. + + + If the previous entry is still open CloseEntry is called. + + + Input stream is closed + + + Password is not set, password is invalid, compression method is invalid, + version required to extract is not supported + + + + + Read data descriptor at the end of compressed data. + + + + + Complete cleanup as the final part of closing. + + True if the crc value should be tested + + + + Closes the current zip entry and moves to the next one. + + + The stream is closed + + + The Zip stream ends early + + + + + Returns 1 if there is an entry available + Otherwise returns 0. + + + + + Returns the current size that can be read from the current entry if available + + Thrown if the entry size is not known. + Thrown if no entry is currently available. + + + + Reads a byte from the current zip entry. + + + The byte or -1 if end of stream is reached. + + + + + Handle attempts to read by throwing an . + + The destination array to store data in. + The offset at which data read should be stored. + The maximum number of bytes to read. + Returns the number of bytes actually read. + + + + Handle attempts to read from this entry by throwing an exception + + + + + Handle attempts to read from this entry by throwing an exception + + + + + Perform the initial read on an entry which may include + reading encryption headers and setting up inflation. + + The destination to fill with data read. + The offset to start reading at. + The maximum number of bytes to read. + The actual number of bytes read. + + + + Read a block of bytes from the stream. + + The destination for the bytes. + The index to start storing data. + The number of bytes to attempt to read. + Returns the number of bytes read. + Zero bytes read means end of stream. + + + + Reads a block of bytes from the current zip entry. + + + The number of bytes read (this may be less than the length requested, even before the end of stream), or 0 on end of stream. + + + An i/o error occurred. + + + The deflated stream is corrupted. + + + The stream is not open. + + + + + Closes the zip input stream + + + + + ZipNameTransform transforms names as per the Zip file naming convention. + + The use of absolute names is supported although its use is not valid + according to Zip naming conventions, and should not be used if maximum compatability is desired. + + + + Initialize a new instance of + + + + + Initialize a new instance of + + The string to trim from the front of paths if found. + + + + Static constructor. + + + + + Transform a windows directory name according to the Zip file naming conventions. + + The directory name to transform. + The transformed name. + + + + Transform a windows file name according to the Zip file naming conventions. + + The file name to transform. + The transformed name. + + + + Get/set the path prefix to be trimmed from paths if present. + + The prefix is trimmed before any conversion from + a windows path is done. + + + + Force a name to be valid by replacing invalid characters with a fixed value + + The name to force valid + The replacement character to use. + Returns a valid name + + + + Test a name to see if it is a valid name for a zip entry. + + The name to test. + If true checking is relaxed about windows file names and absolute paths. + Returns true if the name is a valid zip name; false otherwise. + Zip path names are actually in Unix format, and should only contain relative paths. + This means that any path stored should not contain a drive or + device letter, or a leading slash. All slashes should forward slashes '/'. + An empty name is valid for a file where the input comes from standard input. + A null name is not considered valid. + + + + + Test a name to see if it is a valid name for a zip entry. + + The name to test. + Returns true if the name is a valid zip name; false otherwise. + Zip path names are actually in unix format, + and should only contain relative paths if a path is present. + This means that the path stored should not contain a drive or + device letter, or a leading slash. All slashes should forward slashes '/'. + An empty name is valid where the input comes from standard input. + A null name is not considered valid. + + + + + An implementation of INameTransform that transforms entry paths as per the Zip file naming convention. + Strips path roots and puts directory separators in the correct format ('/') + + + + + Initialize a new instance of + + + + + Transform a windows directory name according to the Zip file naming conventions. + + The directory name to transform. + The transformed name. + + + + Transform a windows file name according to the Zip file naming conventions. + + The file name to transform. + The transformed name. + + + + This is a DeflaterOutputStream that writes the files into a zip + archive one after another. It has a special method to start a new + zip entry. The zip entries contains information about the file name + size, compressed size, CRC, etc. + + It includes support for Stored and Deflated entries. + This class is not thread safe. +
+
Author of the original java version : Jochen Hoenicke +
+ This sample shows how to create a zip file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + public static void Main(string[] args) + { + string[] filenames = Directory.GetFiles(args[0]); + byte[] buffer = new byte[4096]; + + using ( ZipOutputStream s = new ZipOutputStream(File.Create(args[1])) ) { + + s.SetLevel(9); // 0 - store only to 9 - means best compression + + foreach (string file in filenames) { + ZipEntry entry = new ZipEntry(file); + s.PutNextEntry(entry); + + using (FileStream fs = File.OpenRead(file)) { + StreamUtils.Copy(fs, s, buffer); + } + } + } + } + } + + +
+ + + Creates a new Zip output stream, writing a zip archive. + + + The output stream to which the archive contents are written. + + + + + Creates a new Zip output stream, writing a zip archive. + + The output stream to which the archive contents are written. + Size of the buffer to use. + + + + Gets a flag value of true if the central header has been added for this archive; false if it has not been added. + + No further entries can be added once this has been done. + + + + Set the zip file comment. + + + The comment text for the entire archive. + + + The converted comment is longer than 0xffff bytes. + + + + + Sets the compression level. The new level will be activated + immediately. + + The new compression level (1 to 9). + + Level specified is not supported. + + + + + + Get the current deflater compression level + + The current compression level + + + + Get / set a value indicating how Zip64 Extension usage is determined when adding entries. + + Older archivers may not understand Zip64 extensions. + If backwards compatability is an issue be careful when adding entries to an archive. + Setting this property to off is workable but less desirable as in those circumstances adding a file + larger then 4GB will fail. + + + + Used for transforming the names of entries added by . + Defaults to , set to null to disable transforms and use names as supplied. + + + + + Get/set the password used for encryption. + + When set to null or if the password is empty no encryption is performed + + + + Write an unsigned short in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Starts a new Zip entry. It automatically closes the previous + entry if present. + All entry elements bar name are optional, but must be correct if present. + If the compression method is stored and the output is not patchable + the compression for that entry is automatically changed to deflate level 0 + + + the entry. + + + if entry passed is null. + + + if an I/O error occured. + + + if stream was finished + + + Too many entries in the Zip file
+ Entry name is too long
+ Finish has already been called
+
+ + The Compression method specified for the entry is unsupported. + +
+ + + Closes the current entry, updating header and footer information as required + + + Invalid entry field values. + + + An I/O error occurs. + + + No entry is active. + + + + + Initializes encryption keys based on given . + + The password. + + + + Initializes encryption keys based on given password. + + + + + Writes the given buffer to the current entry. + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Archive size is invalid + No entry is active. + + + + Finishes the stream. This will write the central directory at the + end of the zip file and flush the stream. + + + This is automatically called when the stream is closed. + + + An I/O error occurs. + + + Comment exceeds the maximum length
+ Entry name exceeds the maximum length +
+
+ + + Flushes the stream by calling Flush on the deflater stream unless + the current compression method is . Then it flushes the underlying output stream. + + + + + The entries for the archive. + + + + + Used to track the crc of data added to entries. + + + + + The current entry being added. + + + + + Used to track the size of data for an entry during writing. + + + + + Offset to be recorded for each entry in the central header. + + + + + Comment for the entire archive recorded in central header. + + + + + Flag indicating that header patching is required for the current entry. + + + + + Position to patch crc + + + + + Position to patch size. + + + + + The password to use when encrypting archive entries. + + + + + This static class contains functions for encoding and decoding zip file strings + + + + Code page backing field + + The original Zip specification (https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) states + that file names should only be encoded with IBM Code Page 437 or UTF-8. + In practice, most zip apps use OEM or system encoding (typically cp437 on Windows). + Let's be good citizens and default to UTF-8 http://utf8everywhere.org/ + + + + Automatically select codepage while opening archive + see https://github.com/icsharpcode/SharpZipLib/pull/280#issuecomment-433608324 + + + + + Encoding used for string conversion. Setting this to 65001 (UTF-8) will + also set the Language encoding flag to indicate UTF-8 encoded file names. + + + + + Attempt to get the operating system default codepage, or failing that, to + the fallback code page IBM 437. + + + + + Get whether the default codepage is set to UTF-8. Setting this property to false will + set the to + + + Get OEM codepage from NetFX, which parses the NLP file with culture info table etc etc. + But sometimes it yields the special value of 1 which is nicknamed CodePageNoOEM in sources (might also mean CP_OEMCP, but Encoding puts it so). + This was observed on Ukranian and Hindu systems. + Given this value, throws an . + So replace it with , (IBM 437 which is the default code page in a default Windows installation console. + + + + + Convert a portion of a byte array to a string using + + + Data to convert to string + + + Number of bytes to convert starting from index 0 + + + data[0]..data[count - 1] converted to a string + + + + + Convert a byte array to a string using + + + Byte array to convert + + + dataconverted to a string + + + + + Convert a byte array to a string using + + The applicable general purpose bits flags + + Byte array to convert + + The number of bytes to convert. + + dataconverted to a string + + + + + Convert a byte array to a string using + + + Byte array to convert + + The applicable general purpose bits flags + + dataconverted to a string + + + + + Convert a string to a byte array using + + + String to convert to an array + + Converted array + + + + Convert a string to a byte array using + + The applicable general purpose bits flags + + String to convert to an array + + Converted array + + + diff --git a/packages/SharpZipLib.1.3.3/lib/netstandard2.0/ICSharpCode.SharpZipLib.dll b/packages/SharpZipLib.1.3.3/lib/netstandard2.0/ICSharpCode.SharpZipLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..5fa13c736d80341d929e1b6fcdc8efcf76a4e8c6 GIT binary patch literal 204288 zcmcG134ml(b@uD`s$NySs_yBU>VDPTGt<=!bn~dKH^3P{7(fwO6cn@yg>Gh8W?Gns z)u4u=#zEr_gM(-cf>A_V;~I_8Bmyo;OpGjUxQxcEnnV*#%*m>nd>xR7(d-hH|qNG1#(^iT zit7>n@4P7&%L=~Ze-oCqSZ^)2b^$27fkz=a1UL4#1KihJS6&kWQFsNa(ot0+iPkOz{XNxN$WNYSbkr6y&-9HKUl~5zJH<6LJ>Jw>~w@b8M&e4WdE^ zJ*E6I+u2|TlL&8c)JcdF6iE7~_Lf`Ev#h>J-??Y9*!pLry=QVHanIyvE8j=|*Z=~X zS``UwPTmttbtyw0$u6U-ST4*s)^U&|WRbVqC~v}ZvneMy7OAfXa8u5{iO_T^K&axm zsret2fq$fQp!KBbP)4do-uLV_$szoQUydz<`xs;s_p9fDmJQKg38|4)s4eA9v zLMy=I&|xQ@%tf*nbdzOMW%38vvQ6fT$Oi&oKEAU&A7yiv;Gdw`MEJlHe28f^{&QC2 zvmDR`!KaK2L#IX=fOjt)nheJ6Hq1zZs@4(DUK@JIzx0lv0!)G0K^5NeJMCg83v7G& z!^omDO7BQ#6P@ACW;%-Zlc$DfJIlY_rBmz-gFyMIC;iCkq@R7NxpqdF6G~pB%aV%+ zfGrU~JOHq?f+3zcyUj9(&q3DZ6E)z3u#qmQF{*r-Q_ID~QwDK?Bc5^+TH*mf3e4=q z1Arf4hz9`5RFa72IWQbG)I%aUkQhh?+nFy~Y!^19pi^O11j7$bB1&P#wNO9{x|3(Z z(hp8qH{FZZq_Z~7B&^fX0?}Ubc4GN2`z)6#;M$1}dX@xg z_-6o3W;+82rJ(S1?cfBUgug(H0+8k5zVOv{6dnryUE){^K^-NojoJa4uv-bwApAAfvR<@7`&*sW7`x5J63ipxDq1}ahDL7_B^=xF7wNt^FaJ7}C zBu85lxxq6K5f{m!dd_4&W~)ar(;@W36%DFnY+pQw#|~Lw-RcwlKGizD6{+>K_1t|{ z9W~fjn6WKbBded~VuNwD?N2-5oe0#9RU6>BBlV;^TJJAA6Z?T4{w5;f=U74g02XFa z)*W#9N8P@#r`v7NPt*qO366bleE~A=5Mqk5-3SjIXrfvLRLxBfqsZ6CTgjXQ-a0u9UYr zmriNg7*M@N2+}H@@K)p<9Hcz@qZA^FLteUy!IRiILw^<5UD+J+QdKt#;HD=xFiH;gwXxc(on|Y;j@r}y z2z)icDQTxL_1?ZykZsPbju^Z|Dp$#+IL7eAV&~lL&qI#s;8Z|PdKSC}F{_4iI}{KF zQISm65>v%WDqRd{GPOq%Bfb6eKuWXI^QJWY_Kz}|45+rFv-lq?OWG*Q4v?%|6@^Y` zs1b$EVCbAE1S{!PPKiP=jb5c5g`UaKL^`f4g3#akR99Ji@6fr01g9Eez>ha_h_oPu z9tEmqtZ2zdgiut6fyQmCTOBktmbRT#01n(T`zu&D>+f#pJD2r6Zii=qv+`B8+Ew&` z&q6pn8$bTxMARd1pJ! zrRCUdmN>XnvQSQ{X(xEDkk#T;uTj?tV1AI9hNMUyMsMV**rZkPgp2x+D{gjUpKv3y zY1A|eTRTcc;f{vS1Ac8|>wR4YrS+gF<+s_@30ufcB+wvc3O2+n9F7IgM=CTm)K&rQ z_gF+@RFt2_CjvsVK`^nou@s3913M*z+n=w%g6`3GiHh`kVH?qah{HNze7?w%g0lGcQ*; zCha<517278noA6Ol?{sR78@b*^pIfs+v)HUcn1x;BEMO8843g~qSBVAdw8H%EYO_U!2iuBCcj$fJ|4`AXYkmv?j z4wQ#|0{<`czcw2 z%}QQQ`!*2l@W*!A%uI81+HawsKY(M9m+0^Z{`uPKVicw|hwC|>$KY+iJe*QS^-^6dV4j4TL_UQ1Eeuen9 zMEFsBuoFc^%}PfxhOTkRS$}40xDxIlwV*6uLOrx zbl-GK9t=~lj40aKIk*_U%6b}Wkr^EAniO7?V!q!FZbVvV!8zPl>GKz{xOS>$GQP`X z^9l5SyAWjIUmYL^SPu$__XhgNcVSh+>f)DwyQeKt98?`2zCX+IhA#1B~uj z$l6B3ss}o#V0Wp37&e#Ty~ih0!+W1LW~73_9TSvlhZE>gDv2V*59#l;gV!KgZ9o-e zc&|kF>h%%i?@Ruy)$xUz<1ayU9Bmiejc%|DI*r0~!>9`n3epW_WK88?*WToUzoQwu?Vo@Bgl*^V%xl*yebaEkq ze@SvbPHA}8wWSRT2$rN6ZfW!i1`GsCDEse4H*Hd7N9O=5#P65-O63a;2x#T_xYJ2f~K;nLLZ9p1Z8{-!Oq zckfY<9Jb0He|({8Mt_Sa1V(??s#!MadwjEr3E$#*j%k=PFhc?;?PA$!KGmiqtsTq( ze-0YtP)A~%1ADXwTbbnwxoRM3}OS z#;xwCx~(k<>$(knt0`_(1|KP-kwGkOY4Am5+N}Wg-EEXxrnzraG}!O}cHRYsj1g_? z``}|l+AHO?{C9}-FdqA7xYeD;z_{U05gbErzY9E=`K&P-^EulM{~OWT=ZdWv-rIvx zQ=HnfB5N`K^a!23OJzE4dP}uAELEv3g29VOWm}K-a&-fAWG=_f*FmT>yfg%r6aX)! zsNaZ?>PKl8Or;yV3joy*+uDY*jGAo#zOpe2-JzvT}&V8CB~; zM7#l6p<&5T28CyTdm;GdpPB=iKKQfSG!%oGnM!H8K6%8r7uPd(X;6AO*nRZ!(g$Wu z$EVW|^lPX{H+VmOWQ<3h&r(1PV`NGVaynkzFVG>exb!zyM;!7JdAl82~8&H`GGLRvB%k{QtYlb@`a z{6Ho@vN0SBQIQysa5(ld8_S0VaMeO3ZM=&iD!?uOp^k_<5D&M&?xQ2)YC9GAmkzg*1dez~&H1x<03ZY9 zJ7GK6`A&QS9p&_3>su_kOu`ocrM3tf(8;LSUGV_$z6c;50EAuUARgpBR1E%r+|ip* zFY1AIlxsGd#J-R{-LR=TPNgp)t47P{J7I8?WQZp0`WTNeAILX1)Ss-ToMnsvz5dMh zFMwnwY$LG!Gw^Cbxp4O63w}G@On4I#hO`fr1%x`?(1i$L#Af2oLZe2 zLN|9qqu`n%Q<~XU-i?|l&|XEf1IVnH%gDltigf|2WXkvE`CL4Gx;lt{jpbgbn(F1`JekXc&AhgNCC_f%F( zcVcZeF1+*#;iXpyFTFx|=@r6DKY{Qr?+P#dRK#UuRT^B3i3{Uq2ZArI&- zgdqF8;!>H#^FdC6KSyq6fp(*v)LGgGfb3v}m#&}GVFDTggKU!Gl7@K3CN91R;{fc% zWURl2sJF1cNF@E`Uk6FgUH&LqKQ>ds*C6;v=YybOxA|LKsGgV#u_BLUc4?-?qL07g z@@s(zPugF89ely-@zePb5+paxB)^YHR3_7pEL3ZnzJJ~HnRt5G7L)DRLUme`VPL&p zzWGEv;cp}1p`qR~{K`E_-NVUSpMOY~m~A)@eMkM2$3KAEamZu&4Jbq;ip8ixO{9};l3S!1?vxMs>DaMq*zgMJ^@Wm8msKYH)*pW(l8I|Q_5<~Q$DX)0Wm%Y! z^p}Q8wbJp+uo_-~$&*(bu_u0sxMHa=S{m4*5tw#+=yjoUluG$NCwLe-51kcLzKGZx zF&`G$EvjlcqAE;5fjm(P4CR>+YAl#YK|wrGim`4A!9)rYkj_Iqzl`*0`5-tGMpiu-;A-?m^xt%)P)zAw6zDu!QXNlGK?+BcEy0Fx;%{0bxNo5=DC0NL#UR2y^a zbJ^3y=2a1ouC;Vs#A6@lJhCoR^fp*Rbm~xY3i}c4gmljUEjniLV|_Lq89)(tTKZh*v$>YQlIeDD+Y2rttRPu~O%hW?#T zF+1qFxcAw?-vcX}Cw{5h71?dZhnQ7+JVv+)bOch(sC$4*TRnPH2D*p3!1ebjxEa*< z5W1V-pOHm%R8j2q$H{6NT{29o_6kVEG-n{qQAiUcI7PADTVMb-gNm7(N>Cn+X>H|nhEVm)ZfM8Op$&}(~bM7lCXCC|7 ziWcQ`*yaLMpFhb#yu@kVuH;>QEqm;RRJX@=L|RVxWy28xY?<2%s;q-sRzMj8jPF1P|T3eX5Znq*8B8w*||Pl>js8ZoKB6YKSv zbRn~02rAw6SrYF!-3C@3e= z;>D;moaSt{^(Sl`4?xst9K>)MG$#Mpg+_MpT+Ir3#Y;4@nnX|3>(zuNj->TkEx2<| z;*q-|Z?Tbpy58kD=ZrKig2IYA!$fNfc?WeIqyM|u_MFbA!7r!Su^^5m!b*t2lvo%} z33FU8p5ENyL4)^4#*M;XFk#qYp#vKvF6=iKPVF`$P(5^DGzCoZLWjF5B!E>nMxa~k zNO~fOhxIlMSx!m2|5M;pr?5l)4S1GaT3NeIAXeDMa1;nm8o&;t*$IeCTH^VjBm4a5 z%7z4hJzXc@o?>v=F^Pcs5Yv`5Elw|^LNVj8c1HC%()kwilfzOS3<09Ezdxea%(EtI zxvAK$V&~5p*FAyQd6>as=MhP9Bltb!VQ(wA9=^k4$WO-{&$ZGow7ek%u^H+I6NnXF z91ANs@`t0wPsR)FUo9Q=6HbU>rB@qlJq;j*F95)W5aG!Q--)2I%N>v-vuJp{%1ZBz z@wm0ez_f9#Nm8dymmA*}K z1f*uWWjUV^u`&1PFzTCfKH`BAoSo!zC z$8qb+2d0*?alU?M&}NakLC)wfDmC07KD-Tp<#Qo+jL%G(a4%rhl8sYZ5tW-jC6`8l z|EuXbcaG8ey8S)RQg6`w{zPTq)b*fyO{6J zATGoSaThx|8{tIwI6SA3sbCwxQ-@{?2{*)XKsQ<4l5|@y1*_&W*DIFf#Ph$@j)<{cf6F zNeyMBu0=}bh64z38;Ivo`S$|+WB+h9{>|bas>Ft}T0g08dnutFfWTn=AGeghaivs;H9DA-j3>fWh53nrl3m zZYTs@o_eq=$$SbKb@vu<;DLa>P!~ZdU>$;}h5md_H6O<*$Y_2bxCMHd?^h_!UI&3lNN%i}aJ zHLf1CPVGhEw8vaApS^at?&iH~hjEPUmTqLVY0i*dsKaY40%Y)tfo@W;@SCCK%xC1Y7^Y@hCvJ@LaBi^15hmyXios9NfKUM+>)}xK zeUhGm`XYmusrtirO+H(#cALZ2)uXaysB|!F#lv#dxmD zIXZJ2>imESFzov_Tu$~tgHtLQ1B-`i@mIrESH%Xe9l-`=R0(t?KNM9f4~b*?*Cb#T z1-r5HT~M?W0)2T8`aMFIKLCu*cj(n|*MU9DA0&tjDJ1LXD%(@(JFyl-VE7?K!z4=} zvpj`CT=-#t>^7 z#UQbpOR+g`A9{A)fOx3*Qdl(cY9Br{urYbq&vGqS z1|%q9m-JHSF&5D8d|#cvpfl9@Ask(Ex2?yl#%$jJb>c+antTn!9H7&5%OAl6iOnEy zFW(6_7GvAXcdUfy-2GnAs2!>PaJw7@r0l{^f^9G%wb3SHRrG2vMf{=NcAFeBd>zAB zi{c>pKI!tP8dqjjUU@_SCl6 zVG%j@;Cu)BtvU}YY85$J)jChv4K6TEnX71xx}q1g4X9w&YH_KdwJX()Q|iA1xtca6 z+G~{0QN3NAh~kgs=87uIocB`j1a*=*SZuz$b`F*Zo(~S~K;&Qw5S$E<6FwVy>$yoe zc7a=fcOZzhimQ0p5LGP#Zm1TQ44D*H6(Mtb`urj%~M)TPk^OdDV;M%)-@J8{&jU{?om)C*%2 z8F+r0SxQ^D5;W^;+k%vxdk=oVMw(6eb0=scO-UoI9*f-w(;}pKriP?>cAIWfnl7#h zy^oAO0IqKAwh79pVDjwADALIQ-K1EBV^(B-9E98I(tecRNsY!}nKySBldl)-W7-xlO_ogHieBh{m@!VwZ(#;;f`DjK|TJ%m?DxxOIiSO&+P9B?p( ze?#~Oo~_D==8m)jZun}@s(>0@TPB54daR}242X)+6-FXIhv$z(f!86R@^Zs#;jfKh zKFZotLDV4v+ZT$Je$YG^L+1hl^m|zIQ>Sv8D@_*bXI_`f{0fp)l2k0s7y$}1;^KPv zU0q<~MWHN)K+!(s4|-Z1z71$HyTtroI5{>Q{tIAfQ#Jpo{@dV$;xC5(3V$V?E{6XF z&lJvx{g{!zfgc;0L=quk6G|OG`9vBi9~iRhXmYE8%s&GY1}Ec3Z7p8TboetwFEv7z z*A;dTRB=^-velq(pk_Cd>x0xuOg5pD;Jf`HRM`bYhU7#9fKLc+enNRl8C4Gc6U8xSj4U%aP)+j%Sk*3UahIC33 z4X-&TV#ajCH-UNJ(XY1E7E?6~J+_1Gh{T;9+bN@fymc+(Uz)OY;(0u@{3^T6c^zg5 zIwO>YC7J4JL}b60L1T_>#SgB~O!{zi`f_-)$&^1PE2~op`Y5TCAN(F1G>lZbev*sU z-1I7Qa9p{tl0%ZTBmEE&8%ldf-WEg)xI5zMTf)`P0)-E{F-x+#(WDd3%B0bAz< zG`Y86vSyFVuUsjp*?!qX)4bMj->qVoMm(pMaL1Zu)?>ozfX?w!&n&KohhW0bf#ZZ5 z$={8M{cv9vcezrkP77&&w<|E*?nWcQAq4_!NaLgPXKJ z^XW(*9s(~XP#?5RZ0ep=29_|%UC!;tVtoP{j(Kw4U7Aj~@ZkX=lO-19U9A%|4}bPq zsFD<5$yk*PBzm|>Q#XL2V!>V#l*EVS^ra@6CIhHn&`QEU&%8FD$kew;eQ8Z$J?(t1 zHTKqUy7iTk#r|G>9cSu`XDq&h#$i^pejl=CGmL@$0HEkSFPrmb>qN+8*h}yTdkQ<| zc;ErMNs=TL3IWW1Ngx%*(>fOVLF;L(TQM)NAA2ED?7q8B&|zgex-pfiX0fLp#h~qoykz)PzzJ+6 zwFeQ{N5W+|HA%yK7yw(Gi8%B+NFP9H>HOeVaLie4jP&Dc!!X@#4tmQ+*x^FY?47(%Q~8w5BML#6-Yn zt0=2G;>FA1WgRXq$tGF9je}qrk!DegJCvzHgi_cTn>|@&HFe6>GGiS{cs;|~cu};L za)Nc-W$Nb}U`f>dN#NB~B|FOGd58NZYj|#k9inO1rYLxqgg~j5i~XgjI80R0hyQwA#HZB&pthUh< zH7<_0>SnIQ~OC=(7FmZ5g_RXS0bo3(6ulC zvQF;R-%2Vkj!B9vn#C%DJ5~t4 z$t1d_y3lPYdR|42e3b7o3xe6!2N?fZh#%*{Wsxv?*eTdcYTRqaHnDXI%4cc>gH_KP zf;E$I$ZLUB!wNJ52H_0=NjsS=%6WaDN>#oC2{B}$zj9$Ld2xOcqmCGXH-dn2D+zTW zu!42w)nt_8<&OYAo64n7uSwS}`7(43?*~+d=s)g?AT=qfSQ^9(;dA7s{X;M#i;lP% zfbrOuktUV#>Ae&2DLv91{vrG;Umqg3p_H93GfC+6NUK8Ab2ajIifz5iTC}3Jp0r-= zSbU!YZDb176s>{x-|@Q7}+QZR48e#*{8}r?Dy2&ZlLDUdZHi zj?B4n3I8hmcWJshfHU*?^hPJR26{obJt_k;4vAbV|>eMd48X-OLqjf<*`QR!NEn_uMH+JG7CV=>cqS+JyeLZtGZw;TV zeLN0+%Arc_+Z=gIPv$I=1J``KNgj#6l3YK45Duh?Rb~uNgvFyC#tI0Y)F_{&J-hz$ z(FB}!(~}Oy(Sz6QYo@@{Y2Cg?EWhW0?gv+=hBQ(#j0&shUw(HJFZy$^EU(WRls z__D2=4aYczEd7Mxo4uLoF@j%%FwIf2UY`-?-SpFY%@}1bY_}fRK&7b19QQ!`cl{G5 z^R6Dyz#R$-DW8!88a7GR$#*Fe^>0~$)f4B2{)p&rWwqGDc? z#fbx)=0XYbiAHmJ(pFzS*=TkirN)~xl{4Aai#A0Ae`Q*ufN924m~3XZy&DZwONvtT z*_bc9wU=zw$r`QR!hmt{o*9`h;K>$ov6w=4Zvls8)l)E-cyvY1<_sIxS9hf>3dJbd zNPZ~q2iHQ|R3&i5M^s|e&kqH+ViJ}g$dAIy2b}Ua?~~uK{1RBq$$Xx#W5}d*GGCzg zfPgpB%L&G0en3{bC-Z}QLv+^wWW$$>J0eT!llh`t6fTVA2XKmGLw+ouFO6LBNVp87 z%0>hS$FIc=++haU2#0O1DACYI73Sxv0L=(SA9sl8vdKemT+N2b4_-;8asV6zKtiUzZJy_r zJ4z)z6e}{nG<}X&}#a$s@Fv&QsTY1Y^(DFJ=ZD>3gqk$K$q=UtN z6%+K%Gn;pQB?p!ZYeB2ZRn}|p4&H-}h`6iLYq7fpB{3FMSffCwjeifI9McjH06&QU z;sM|v2*A^G=v+GDk5n6R{}>^Q2Y{bO0P#eaEj#!#9GI(+pA(o6Y zeYSofg7?+$T@~i4KpFMJ^F+s*dQxmIZ7`JaxDM2 zc!3P<5rY(b!{d+9@L>*Um;)|Dz)v%(erz2Z*y{k>Bgm<012{CN8g_I?wt$T+p{33? zB(Q+D7kD*nyWK|oirGWlQ_3}>jG@1VQ00YqTOH+)nxIs}50f8XFjq%?5K)>lX7b#Z zj^$k$Fo}$_W}mSi3oX$;V{e-|w!Mh8TrJhLsq|uXH|Bx=0yb0C&3QzSW7$DufaQ_^ zMl^}xB?IqzbdM3eaB<(Uq-eD zDWu+lQCAWpiOKK-lv+=U4Iyqe0htVgi0&q!>QsVrAKvG|{uXvKxO~Oe*Rb=n)Wp5^ zuc0pR?2Eu`cd`hS?lR&RSr79+vSq1+{grKDd?)vBk_oIj%6MKYr&L`EzCzwg^ID`* zO7emlGY{OWDOyLAmKb|G^nIalOK*o9>jb$|T{2C<0 z{McQ72p&w0r3n$psj-1#QoP71@fTPk`HiN;ti!!_Kxav&#P=zMRmXftbe&^90*=P< zZ$zFZarbWaIq2ckir{Lt_~HkAM8LSTjRQXP@+P+m3+I7&x`$QNJ>5eg6OPk8^s2sf zqWVVv*gNaQa|<+N7!O{~+D@glw&SMD9d7^&a^h_&ZOcaaq>+msqsRuHPdCvKYZ9*k z66ua9UkqOOr_z*cF^aqyRjl=jd8mjvd>`0%U;*slOYnv7!B6CWFH6=%G%=b=qCR5F zPG{%mwEB+T>k4?U%f=T$zKg`mO)RK&{u$92(XGWz1Rq)-8QtQ)F%i2(@o0Z@z7`29 zw7)=X^-OhxN0Cz%{T_kgt0=?cG%y}~kRi-8CF(5*;AIO9usgu}Fn-jRVJdDti+U_G zF3%mu=Mi`}hYzvx?Oh&fI9v3br9}n*2}P;<2Fea}`CH(`ZvS2%__z-xL(`J!_XORf zTOScOSs$e9rs`>N-Fci4<_Kk|%<#;N!c%EH4!DXIF5^tJ9z({hO{EoWHFj0bqFW97~E4kLQ1)%rpgdj;#eq`vHn6@Ti6g=^`RB5x`Mr*!|wN1z?3^VZ~D=0 zd+jy}C^$~S#0`<+$JB6D&8k&ACel7U^zN=uM**;yl`hT`>#Wu(#URT^QT`+$OG`al zPWJ8KqoUr_XjpJG@^7$_dOM@UMC!lJkZa65ds#fVUC8Qvgznj9b$5vlVrrb=du8tf|Hr zPIHeWuJBO@&9g@(o+(z-K)6ydXu(Gi!b#*MEP1}Vr;bV^6(uCW+E+0G`zGpy^Bc;W zM~I4i#fO0^OpR26X&sUIXRzG*WS4R)GZBfD_8u}v-5&#)7p1LIfJK=L`7`!#+4T>q z5h>SOm2Sd%>m~F*0Ma+sTaVH2(J%CV3w3yo)S<9*JtD?=4HJVD0kA*X{$VPdbbaVx zK7CX~%q&bvMDOhhW3E$aUH%H+4~d!8Ae1XO#^i4nffL!|o5) zrYA_^zPln0qXE`^1KjhEC;3m^idvXOySXvp<96722(~UE>;}S;gzaAm!$U!dW)k~A zw-62EFph&c1_D#zB^VIN8MdE5AI^QEHeJO-h%->-M6v;jxIggcU2?pMMcHOk+kKEp zjqm8dktxL=LZE|A(tkR3nW0J|x5$*C62#mWkbL(x9i3SZ3CZl`mmNHdUf&KZ{;vZ!$7cV3HibNMRR>zC9GsEUX39 zl9j?HBCv7O05JEA`WUjwAYDyfOMv_a)O@zp>WUNukq?bJ2=>nI;j9&w*Jz!RIC27A z{O$^UgPms*W9~6K`2%pWb~QElJF2UWL*InTIS+axU!C!=pgYpQDnE8g`}Y4QNV)z# zI<)rk=97d{#b&8|w|YmKrPJ<4EFR}F$^Ju=(di{)h{;a6d!Klb?8U}AD#QdjMq=fk zgYmxshrMshY;okVVDkZ)F%8KWb+8W$^YS&B2WT1{w1uSg9+c^Pl*!qC2U}hEFmwe< z_V3`Kx)u6IkA4NER>0yRgL3>?pC|5fRzFYN=jbov1XW zmaP;WJS2!_xH=-`Pye-pN9lho#j2!ahms$a!OVo&mtTvS2|b2O4$6crvMv#*F0mz- z!F>+fxyUiZ6oOOX=#wnj$}uUd9yI`6^+^`Wm$xUInqd0dsg<8(kdR-a}rIgH?{BLU{PGLQF% zx4_zzSHgKMK;i83I|+;5A6fHO4`qwa^J5gA8F3#5h!X*eQWN2a-vINF^W(3?q5Pk8 zI|Z}GjkSaU-X`qb#&gW2z!5w64=}1PjAdI>$MiB`U1S}-%Qe9d*O=>EekVau%CZk` zO_@dDH=}sm8Mz&<&vSFF(V9q9p$Kvj^or! zrLcmaB*bGrC4)0)`03sm!>$Io(Na`Pj@~iTg)J=I4y?q7>9&Eb*W6sL)8a;!wlFj+ zX-=YT#d;y)ei|=(Q13?OQJb%30!$#WSD^Z!dj+a5x>sQQZw2NffeGk_0aK)_=XN&? z7&a?z+%OP=>TH81a>IZN>U;E+g+`Pirwyutm8qu`5bXee2)`vulv9V(Gys3K-X68DM&5Jo&tTkr$B45dQSl#b5nVZK;Wt@L=&+$ zBu}%mKxlkt0q9h_(l~Z7^nwxYniCQ+hJ_8maKgJF022w@#ddDD*&l?QsJl1=Z*1cx zY56phDYczg4(Jn#oW{`*y&bMUi_ZuKN#K^dO@i0dsE|An;4sE0qz0gPv_&t)S|j&B z>^50|_4$0vFfbojPj*b>^O%4$jAqVHAa%J4$KmxV7*C5SC%aH9NmGO2xpvlBd=NgH5z&qchO zAwwV9@c;DePw*OP_|$}T&H|OK%)Fij`ne;!%+5%NIgRT~oc>IF!AHC{Ed#y~Pp~aJ z_y$Ej@`E)Av;UNo@77&N{xRs{7-yq}6KD21`A6y#-E>CzX#>BA^2>gV)DmpqmZ@lP z^uM?)Bg#!%U4w<8rC%|7hwN!eaG_4DyBbhTtOn2(z;I)Y>1`+w)}dIyDo%U=k`joH zcd@hpaq-)BN%>CJ^B|AdqHN`qq=e>D;#B&QSqBxP?>S?^F}0$;QbH@4Y7RPyRAbP_ z>d^h7D@khv{l)VsYZ;8nVlWG~&KOlLU6?WJx4>F%+buYcfu)vjBY=-#$OUd`sq%Ff z?9|HlU~qw3x@q~WiyQgb#v?yRT)U${Z^UJ1%=rw`%$WPw88L)rUz!oP-$Z)6^ zO{)lAB$|E`{fZcvem!@QG*`Mac>OH8(@izQkN_YZ1ts-l1vq#&Vru5vG@fjvToo8d zsc^EgSE^>WR2Xn!kw=G5T<%dHP}S$hos9X4_5cKZBgo5uvoe~|4^hjlaH$C13fHPK z<>JwSZWR%xRfMdo8@1(PON)$%cIMq4*u}-x2#gmEB5d3*j#_%ERAk<4LfS-Sa|08~ia1&@pIRf#w*9@1i%1(P3-p__?2e-3%*MsjMw4VkZ z_rq*!2k^O;F}&Xc$Pd1Y*zkM!!58AN**j9txue+BEtTtzTS-oQs?W0a_XG1#|5Pks znQu+IR&~zmAHs^>Rr^Q}j|_@i4!$4J#V51;xluhBGLyH9^?rKDFQ`DeaxF+88#jJ3!i$Dd0&r3{wWJ8W2s zpnRjf{9KUe90iG?2cVN!t`oAAkVI#kjvpKg5XSeib`o%iUH%Ht8OgIXcxa)6eLH!b ze1fhJ3R_InCZTYiNwC@?ffM3^6B)p$k?G2(f+z{$6EbwlXP9s)X8=1jzBJDB0^~Mq zGrixXJ*%|k69&OC4BW0su%DT2y`kH$Dl6#3Lg=(x{)zL1LTYb8Rt_E;ays;x#Nl=( z1@DCMFd|FmgxlgQ;F^%Gk>R+6brIT467w0Bt;FS%-;41hz`;|{iCPmDtPe)Rq>ImK z@5-h9xkP$&)*j8J(wlcKB8u2}l`@$sO)O?pr4s(Xw8_u5QYfkLMr7MX+7^>LcFUv= zju!+XXK+5q;7d@J&=wR@!f^rNE4QE(p!6xWn?RtDKqrLm8MVafScHI`rmbGlyxG>@+fH|1{5%-=*By6t2vT$z-w0FKe&nV5ud zLPN;pQ!53N*DE@aWX459xBWdXHIS`2yeP#MT>;TZ<*M%T52TG1wRNa|Kz4IPf;iY# zUk{gmBKC>@!cv&Lma+c?l%(X{dO1wv!LSW&&!83ua$#0fgm80xbA~+4{JoWAnuTSXd;>FdGShHhs#E7^HwcAi=t}A0uqU-e- zil54z$XQk+_C)arD}##+%BC2%LyaMgu?W2Uv55GrBuh5%TE~p*>ds~?h10<+d^ECB zIJd*n!30VvwZyW{os{qFfF(2^ig>c-OjY{P24(9lcsoR&9G&hfCnx@MAKrY~m{3m> z4O1Y44nI;SmC>f4^-FblT@TVo7ST}AaDr11m_j=y0=`8dc*W-ApySW{$bj*g4T4Qb zYl}LZkZ)MMfc4d;LWIu%tr)Ax;1003x}q`tKbO?7nskx4owMnTbe;tVtFtgv)R&Zh zcdCf(y9sMQ-lF+?JoSkPDo)zJTb}PU5jbOMgkw*YB|{uv6o|aCBEImg;A0OBHglwV zK3yKX6A#LgwB86iO?_Xtv)sq#=iJe`5RSc%jShk5N`OrbfeR$S28O_M;Ot|oa_&%l zJ$V|`)r+qOV+3X;@$b3#_ZIxyhV>A{ijdoE470N;(Wv$ai^n(p@L80#!lXvDTDL*- zR!}^2C z#SSGcoXl1`BpFToCnkM!Sl)ZO=o&R?0?R$tDW8^d_N>Jz?*(9jHpy-i3rB{?J&s$) z+gWoKi(+hk+U%O>qorw@Hr;DGN~Gb+esiR8XpUGc?Imz~4HH#EUa(LmEUD&k*;RC2 zsUcEYg77!WLa}9*??l>O#s@d;j0f>0qRTsHg0k$tU4k;cP}(0sD>3nfqRS^9eQUdR}_L)WIJipE1dYj7iH=rhM_MQ0(?uQDn12 zuTf7yX+|c5s%#+i;?os%<-omN2O!{O}dc?Jfyi+TY=V@o4sjYvn_C^qrd1TAY*Z*+n@OV5*^%$2tU z+0OCwOj{biRHG!tNWyN@oQ(w6q9+i`hQS3Pjr1&zyW|s55UmNbyl(Iyo{1McyG>Iw zhq27au7b-0RKjIGf!u`7!F*=N2VqEh5Rl5Jcf3tuxSE(cxZ@2PC^jZN0^nv3?zkSn zbgDUiX#wvc6r1wBTw0?N{yhi(xSWZrLl(Lm>oNS>_B?d6QEFr-)OMi#S=%t;T^n=s zdO%FJtZkX~V*UkLtfBsc^?+X?GhbRS=40yt-?1L>wd(=#lCibzn)PBZNLb6<8S4RS z>j6jB17aR;ZG#nCOPHo^jVQjp9`N()0YA7N5NlRzY3>KGvTt=(^Vh6_T(Smo_8Q2E zYarNxQ(cR+WgfS6Rzjxm07MEp=^otiJ}`rG;Qj3G*}%8GZ9SH6UI#cIt|mKw=^Dtn zYarX#K=9JUO7`aQD#c33$xTck&}yX<(Ka}Xr}xy*MQ~~98ktW`&ya>`-)PwRB+drV z9vgEtIoOw(#YzHZ4i8N4~P#XL@{3)eJc# z)Q~|(s>b^R4yNHn;TPM07WyRER5Gg_^Y@_c&Pg~OX5rC0EyVm<@==*cyqO4B4-=S_ zl9%p(c18C;dfGogN;;68^tS(i0U6(oocyTxna*uWxu5<3A#QLg`q}NDl2{$y5J&qj zj1yQ1;kiJ`!i;MVO;FSH*7VzL4*q7Iq4A@0Cu1nB9GWq7Z(vPybR}ug4Lqv%t(AzC zttPDbnxVF2I}!~E%-}dx+p+CHjOo}QK@Xjn5!p&cl*MAiJ zBTh49d}3~&M2C7qNRCv{x>!w6dx~Rp?sBa@EH!a{FjBuTU44$qBCU!vbDEtNE#j3N zCfzhsQ{-YD4UUk}dF)Kb^h&lrW>ZmJj-K}GQk6ta&9o!gGeNQGHdCU2Q>hVr8uJP3 zQyIpSA2N}Hy_wAVGk^AkX;uum@p#iy9_kl$tp0@j^z`fUsQA*Rpi zl(mYf3)wvd7T)Ou=dl}((LON}d z4KG6mcAEr^m$bwyb^JTvk9BOf1-?_TC82sHp?ZaTA=+L)_l|?3f+8Yx<{ne_4O>@r3lRf|jK2o{v1X5N;%@s8 zMct+-Tr+jHqjbRgB6Qo;F9H#8)cFcU6-Y-S>fnrM!_h`WM5Kex1L2B%iY zV+wD-l}Zaci%onxNtjCq&p~?5TUb(T4U$4WIr5@nQxm-^-=NA%{2^^6lvXmm9 zxLvGCK5_7p23~+F@|9aPN^{@x@jV)1i=MK~`Q+{U*mm~uEa z&kZHV8mZA;IN=OQ4kQAO;mR0opRckWiRz^hRSa1X( zYGQ8iOu>m^o~3#t)*u?^Cc0-!RO1!J$I1ko1G+M58g>~QVjx_HANlP{%!$`|z=4gd zStP8FK=)u?pd(^$gouOnjX2R9mIZ`pIx*UOVFfRxT(@FB@IrbHcl(4lf?1qYG5Y{-ChN=J07~ag;{9WK zZ=n|-r^IYyq;oR@n(vj!mwyl9ZBh##1u?r#YT+NzJJh+AkwcvW z>fA=h@4Svqo2*RMx=X^yhx-e^Mptx#6ib8QpMVh0(epuW$px@K0}N+E-0@wDx+3Md z*ki*c;sTfUF=oYwKPIdVn8?X)Fs_;1){7`jEYva>LG-q_2o4ja!q2n(7)N@tA~tOoAsP{}RzryB$?Sv$ z!@p4d)08OJ^cLJDp$vyQQVXU|R17G!z3)1b)=u}1&aWe2@58D~55!U(!pFhB)D@*E z-0Z2ipddn&>=i2F!fW!qdNXj=9c07|FjAC!N*R+}IO~-G_b!%6)xOPV_lcil-$xL88T8<)m*~Cg8*uK!-sxEBGhx1551Vt zb81F5^-OL8at)IQTd+`V^+6;v_=l>sK8t@pU-b`0!1@osw*3-6cJO>iALm{!Qs)KY zv}s7H(`ub??ybv$F-H#pD{9zwDJ%T3snD{Fu5HhwQF|s?S3XXodz0(;-Pky;JjzI*5ur8ep^3(aSm<*UJ(8pq9=u-JMFWQ+H$DQA5~ zLF^d#)g;CgPUbpTAjKA2Pm7H~w8wt|ioqCNa3W2j&Ep$7Q3<`8DKb=+~$#_#HV;9vpCv2lC?F+K}H<3_A@Lu=2|3(nT=-4mE=SG4>b)Ce;CWkkX(&z>ABIQF|!y=^r)6zZlhO0nA<8l+Gzx^iMP z$uFI27PWVok;0ci(x2_-Hvf7#jU+9LnpA#)@==@z3T-}B%P;RW+~wwRHAlKqp(Am3 z+EUTD^D134T0AQm&w$115+pEfAYc@b^bUt{hZlc2wrztWalFX!y# zp&~~10j#&TpPgnGytNBv$B8+;Vjt55vm5Jz$Gc#5Xe`igzzuOw!mDC3CxKA}uyFfR zdji|m=IF+60;@Z^dm96Gup6v)-Y)(&oe;f`*CC1WsiniqyD>$Wv^%?zWBC%heJ9}Z zMbGInG{EI>iD2x;tO4&_XKm)KB+Ic3$0u@@cp_qsceijJ5(_Qa@w-yG(DF|hvfFyFq%DBRs>we^5GEtJxqot(uSKc$)0~zj^!0-t^-Xu-bk*E13=Zuqhb9lQ zJkl=B8Ai)`-Rrdf?Y=7+>}9p09k~{_uolpcu+Vfl>eVxDmb1964rbp!f)wSH(riDr z`EDc9^EfBO@XVY0x}Te{kZnI6_N_b%$7Iv*OuPBi9i_oMK8Jt_KIVz3 zk~cSns5>V1Ki+386w+zq$>0I^e7YIo?!q^2u&u#oOiLSPKWS(5e9pU2Ldm0$C~YWs zmBlD|7CCv$$&;M0if!oTDmXdCWci$|f#nldj_u5Qi@Wc}oHg&2GRhf7M7fFmsK`bE zkDBMRb6??(BljIk-t?V*p?}*)5$WXnRTu;L0eQ_hl^?hxmlnc>4f%mmW+pJXZOHc{ zp8@8xp@qov^-vQgA&2hb*P%pY;6GZUann za&N~$y$uUFd~$F!jSgaKB~m0OEu(_e*se1EUD=N?XCz2Iw^`F>@R65Yi?`$JKA_M= zcEUdg8lKI=%8pE7Rw5HOpO_g~nP?anv?N)Q+80Yk{`@&#QYF`>;v8@gr_*E(h$p?P zD7)?GNw4=n1!PQ?lwp_5t!&%J$*%Vy1_kN7mu~0Y2rpr6f?RYC#>BAW#E{v&pkj8f zGJV>U;@R!>Dc~tIL*u3YPc)81AIAf^1hIbR@(OMF08d^Cf)vl3ywb8J8zL0;5EN3> z@1p%1xe)5lKKlqc*zNlePX>rLK8qtd>vE!a<5vLF?=T6RUVcf7`lC5v`&65FPtxrfPh#@y-)`Sa>lW_^7y67V2ZC47WXWMj^9Ju=>$LzW9K9Syc|r{bAU{UbMS`$9{@bLY zucLK7M8A#!zT73(`7od|=Kccm)jA?5oB+SPXvu)xW?EkzT(>w5aagsP#opTo5P`3e z7z{UdnJ5CuoegtG^e7~(ekc||(Y{Syq+5?&f-r>f?iDk*ffv`RT<&8?ud!7y`R#lV zK?Ta)4J>~Ufi0WjlLLn0!JvzR@Pnz-XdGDY-I6d0@$vk zo`L|J+NVshw^9c0j|CtDuNujq?D_mZV)$KPuN!!4Jb>YuhlioAV#-g!kH?_yi}`;U z^IuTw;k>`=$3#Ucx&(gkd<=^ps{p=tZSxHn`Lo*}f%s}?LNDpD!~n*{|>N;?}(!>v$1>^JWW3DVd0v!5?a{oK<@ydE953nx zI7}s2AWmeCAw$7y@r&C5j&`4KXXu+z_u2V0P|*StSVzXV6%J0*>yvq%kFkh$n@;Bw z_@O?1)VKsP{Bh$(@xQ|`544KsLAy=YpPhm|B8nzZC{8#qGURj-CP@;YT!opGe8Xfb z?Tz1IhROq8Ppx1XgbXV{xzP{$ak_Rim?e6uA*t|{E;dd~h?qnkd9K}Ww?BnI^;n?N zqlD0+H5;<1ZK1=0VY^9VBm_T!%4jrIzlYKk8_Bl9b$*$S|2x%dk?NT6lGzIOVMGqN zJ`}u*#Wg{!`(gUVC^@f(36aR$a6@?0anoW;-E_lCrDYeM@N`r7Ncl7O8XNt;lmD7Z zdW!k$-U&p2v8EPvY-LfiEw>JtJivL_I>kH)=`tP8htR>ro8VpwN`A5Bz$a|qD**mR zPuSiEKc29qqfgi(f9enST=)k))LQ26_E!^PB+PQoA8WTi2^ZH<6?|ZijwT5Nh>j>e z{L~NC0xjO`g>eOn^oOh)wT|>%6-y$Fku{mEp)B3w1t^NP(+|Oihr`)D!cqhhWZ!s^ zlnf;)c7B(9$`j}88@E!vdQkwOGrA$%U0u~1VkMHN{y#&eFuZz%aym|s!`(t+wNJ_dB-jQGc&yu_adOziqWmm#;@D)zS!NbQQ+H5iB^j9`# z2+ZukS_hM)@Rj6yktUZ(FJU7S-9KIo2M2qbVBDd1JykHf8eAyvD-wM1gl zQj=~o%J%}~TcAz0+Yf-e%#`SXy6(qq&ur_>Ol8&^KhHAQ?fWA{dSt^?VS4_sLny{v zuJo^@jjy(~*G;Nm2TLx4eFr%#X3`iHbE0vuFM%TpgSJ2OyF!=aZP|NOo}C63mdSHk zc*Z@%IL{=RXev=p5S%97KcCs9xuvEraS}5)r9=i{!G%xZ!_mR6qB#vM){272{x0cb z*IbgLAl|{dP@d*spFi_x8DCsY1oxu?*q68#MmSQ(X#0?@GT)Rg!U?%xC*DEKhb5MT zo2cg58hY6tTdD97pn7g<{y4lJAQ65d)f6b+wjNr6oKR#VS+^0Bt*LO_5|HXveMolg z5KYhfS@mLilvjMdSZ|&sRnWW=L|)}e5IuS&h`jn{YLblQSUxdcZdxVgjEp%Kd7TyQ zr?cE1ra_G4(kfkCCPHt{7!5a*rYPu!q0G3*IE!;}%viEWH=Ts`uZc9SE8$^6Q$a~Y zbZ5&XjAu~kC{@0$jsu?Fjrb@S?PDH1Y1`nE19Nu;8&`lN8|_x4YV_MJ#794MFiO|{ zGSWEHH`whjNG4yz?>ycdP;~WL9YTO?giRLFuy#i=B&-QSVK<=ARE+4L;{Y0H7$=5^ z;4&__k2*REI*!{o3c($Ws3NuOu!2A83`&4yx5*WwV_x=3ee`k=&Leaj#)RjaB>Yl4@OLqdG7)nNSv+OhgVWI~PCjJ{rZJe-1Nu=CV<% zfveRS=FVp3{OYOxhuum{P_*%CQ*rc;3gjqxKr`-*T5+sm)QCG`1y&T=kLz%JPma-^ z*qRhhk!2YxtHP-@+i9}VCSu;-N{Udos)_;=KmFdgR6{_mm&`=we zW0eO<$fbGr{NF(V9*|_Ok{sf96n-pZ)DED}5Z?=gFBv>NH|}433glsl(HKnskl0N{ zPO3X%g~w%2irO7!N14Jw($UefW8iA%bd-L2mg+D#u1=Kag;Ac*Q$#n{TzzUS&mYz0 z`Gm_;i2oF;%Uqr=^Zfyk`IdQ^e^{9dppL5^f(FFctr%}rD`!vfMbTy3!NO*~q@ZU> z_TPpb9OT!Y1Ehr=JlR*3Z12I4jOAa9CQ`<}biKybpWv=oq8}bKQRT}3WY=I#CsFx| zT&?knwZ~lL0p)gZL@el8Nb(%Xl-;vH6bjE0B($C-NSM-yGouaOv9u@s9ju@;>L@y! z)VKT&jSK#adV>7)E&sjz`t;b%!0TN!ow_PIZwbxCkCp#Mj$Xf<)VJDqF0#IUV6$@h z-Ahz@5h~C-%8$|ni;uet@t#0{dtADQyo(PGBUV^VC8i_P1*$1IczCirf~|Z3Mt*Gg zhxN|V@IxrsiWeFPD}GVDE)Gu{Jns_0XV)bR;$=L+sqk`O^K5ZYKsQ8sP9-o>X(QWV zkfp6fvEM7OQ{Ztt!=+Hd-aiy9oB9wPs5vpznTmCnIZjP83cS;&Pi=*Nd0o7GEO`tj zlZ8gU14&C}_FPMH`Z}UZrb+KgrU%FT8TCK*oAIfS0MwAowiLUGa3T?yK3WO-?Oagf z;EH5{AtWu4V|7CIRY?>B`Q){a%Mq$MPNLo?C#oJ$X_Ig&a3UVvH@rjs&8e!Rru|k>z@b(80K$w0U@WwvNP5%_D+dsH1ugf5rl_s9I5yl#H)Ze!u+ajskp(G-< z`Sf_c@G*jt+%jmKG(9bu1R~K=T9lUbEl*Q(rLPv>7YqhLRY{MKj~ni^ZO2pW z_0F4dy2W&U&HBdvG`dfeYGdbt0~>T%94nV7RII$h%;jdT#4KEgp&2vIcVAg?qsvHR%WSA%qQXxi>l)^3j0mLO@>G4#p~dw4LNEc_hOW#U0p@idMn zMI+dZhV#LpM%_x0)%1Ed7OoOD z>}qOW4ubi&G!7rlh-qbQ1(Dj$bmCY8-J7Tf(W6*lg2H5np3 zuD8|0)Gb>}KcV0Kf~+!ijhBa0(_vFKY>L{hj?dM4S(a-kR8X^Vor~Y%P4grVn!}n- zKjM_^4l!2Thcg;BzW@$uFN~YM_j+&j7hIq6y&Jp@4^{0SYdGQ;4b9-}9qs4Jfr?dl z3otbH)$@5YehwW2w?vkh1_c|Up^^>Js<+50-ihmiVyD=kZtN7EVl?=mWITTD;q>Qc z&3hk0LLDSk6OZ~8?<6*QNySmW8s)o9<78nC(S{E53v2l<+t-_(x{_|@PrVN_(0jCL zlOPPHwc5NclG#XkjiJ{|o(+O^C9p0tSgHW%-v*mhZzH9*+E%~%v~0lBvNnd;*iq!d z_D)IK_m(0f7|4ro!PALdCvur!AH$*>IT}k3)IVp<8E5?m*la5PQRx1X; z)+m4Nhv3Pp5UxBWUY$nckAw)Xn2X?Ia8bcZOMgswmjmrkwc9GZJ#*3jJ9vh=QI_uM zXe+?xy)nqzx5`*kK$LN`4~d(++Dq&6t}BbH0)+dl`q2CD5On!)gILq>Hs;}NW354I zs}5GSPI7`Y`fc`|szdU!k2->tmap2qF~-eO7oeDmXkWFdgm+6s=lS*S&!|m9)Zf*p zRBH-{Ol@55U5WE1_MQz^c(WDW391LFA%;Z+@zCmaAnl%watvg`?Y(ultzBS2H|00RNcd)#S*JseniD|bssBF6L{6hp65G&d#C&H z==W#7PuhwM?1Hmj#D2e^&4DdH22OE_ES_I@p0YdLdG$NL@_PAcJnN+{wGWD2tra2r z9YpU1D6r*H`Ik_X!<|wD{V6$b6waTm;T&@dD@)a53oCU&qXs85hU!_$ZADc6^4W4# zgC^$%ZLAM^(Y&A+*9ToTFX*N9L6^@9xMk$lbBDmNWO zdD|xN=P~0)l`p1DvA`zB)E?6s3*TM_fK`3vKP8*wZ%p2OS0gN3Z|>*nfIz3D%+ z|F#jJ{skdqDveq`a`Hwdl&IEfg2l0V3m^3iF2)%_{lagnlps|+KZ-(5S7VOdXw@58 z)omiHx(Sd(IX*@?*t9f3$EIZ!7O`n*2azo<+tdE^zmQ+$$Fy(1+g`w`{6zNYf0g&o zWp!Fs|4r^E%sq(JFT9Yvtnb9Vzk@Di=)#@nd$F?iYD#W@QgLT~fw^-W!GaeEwHbqL zp1fgBki89bcVz!};4WiYQJUNY>NR9Zb&n(RVfb0<+%5;DYghR{ghxHnSxZqY@OnBa zf%G^ZW9G|}N+Mt=OV2p-hVZe~VSMdr68g=IHrW_(rL{9Fs6k;>pfo%SkD2YsN*{Q; zFKx-pUPd1ml9ak+(06pX!SAsboGMC%9nL{R#gNKY1WqHY$~5qjZVT&wpra<;FT%Mw z?-Gcqzi1|!dVn#zfKYzmPdy^*HnWNyRM4308)vAX0l?pmKwZ3G4Q%^>tk%f356bG= zO;J|YZnhO{AOxpQJO?(aMW0z~(X8gpyBf?lt7sBUG7BE)dv+dX!2{Vu=V2B+y5(^V z;|34U3HH>Znt*J#0vrn^7MgFZ>`CLzsqC@s9rzXg6XFg=Dcg^%rCiWZxPTBo7rGBq zpb?&qZ@8F}TK3)kbacF6MpmJ&ZfE4)F5 zriN-jH5XN4l-`5@3YysV$IrS$6~9Gwh+9Vr7Lirq64JTO^)v)HiY*P|PC-|FWOX&W zN=@I2l7@NyW>3sK*yhD0bAG(hi11r65niUoZvUuo(!(!%&12A`pvpS0zj6znQQ|drATWMb>psrFi(=n>4 zQ*TpcqH7L!K})=Px7Ky_Zmp>R&|G-Ei?3x^;T9JOUxN~8GH!{PN|k)yZkvjGOHVlu zzn~@6ZohC5pL$fRX0ow>dV3u~;Ih?XP&E$M!euT6gpWM5d~|gbdDv=goW~z6ll*dC zKq!=nR9^xfuBmeuQx2`{Zs~a~>B+d8h)_{`b3@0rShBb97x=-%F{-n^78&)BP{dzb z0==h1@2j;JNC!u?;o%0@z=qj^wY7g$TQiCWX0H3OJdET)S%hErb@LF-gR;zZe{UWl zI#NmU_>g&s>Ot9P|BPDkZu3bZE~ck3Htx~XrH7a| zJ$Cl(z+URjZcB6HzNxqXtpI*3IkEGK^V3pRmyDO5n>#C-oT}PbY^uokup?6m)Mf-^p!KF*4E8m@55~p1_O6JFLHJ zzE5~}lMgfEe)+^|@3+oPnI*CX11FPa}Q(`C| zYc6K|)Xu@x90BYsH{id_x*};yj~5T4Bs^)cbFfu7iXM#$crr*pBRfhd`%0qg2R8U4 zUC~MjZV;`Iimr26dG4S**F@!+TOn%?G{-GzO$;8zTPwB`iA|!;uM zaEzAjzh!F_md?f#fpN2n<8b;ixF#5_Cv3;E*J(UzjgRoc;)H`*`d%@uNOWgpNP^aQ z>DORAF@WCwc%q~58X^A)u>{QBSKc>RP{?h=_LpRiBlR2c?f&pG<-u$CWm3%#j3;m)Y->y86d&%xsK%@R`jB~urd_L$?NY3rZ+G`O}1TqEGD zLr36f_l_sS$!^Gvgn+uR6>OTT`f^P6?YQGj-nJJ>FidB}hXaWttI#58C#*=mi?nfK zI*BX2uW^}!vCp*|olWYmx7Tarq@>~9eIH^IoXchTn@*8pht|xt2()3-*=+2j<>os& z3bSf~W{*4j>z(j3i^Jt4g`{@YP#Ke>qjH3X-RFvua8Y0iDMfjqz{7}~8$;hE|6{ z<7ayl-L=8MyOL(d3Hg3)T^HMV&w#0a7_-EwLSh@u$Nbou%2O(*^>v=yESRAc#E)tM z9uZ}~W$U)lcyeoz(^=<)!6XY^#tBW<0(kAYqoN?*l#k-35aqUQqO|ELh|{WUqm6+) zrel%aorZ15u1ffFTmO5sSl#+CmIpUXyMQtK2!|Wh-ykTZkKsxw|Y7O6FdI;(VB{7IH(r2}oeY z7_j;hIyW10(Nn6k?K`k0rt?H=IftsPXpb^Z3^fY#ZHijZoCB^+9l@=yyE}$6)L)<1 z7hQf&$C`?VB;olu>c_A(bG;|!PW~D@hmjKiKaEb`QL7C2r+%66THusi4=jIX2uue3 z4p>aQ^eHc{)fS90g=gZ% z&1vQ;bt7*c@towgQJ(eKT8v>eN~nEwB6t2`B$2luF8M*_umdW{kU@i60#`S;y+By2B=S)^5j6)*M_88Yhokgu&lde&{arKFUw)DD9kf8$hHllM@Gj7bhD5EHIk5f^ zKGoUl!?KfJJbZRq_BVHtXYN3oA!W75!OWH+NoAEBbM3Bj%zkcOD~WhCZv8L7e=4|s zqOwNd8Qz3OZMu|WZn_k@Zn`9%IqrmJN@R|^>K)Z7)Iw|uW%iXLR{o^oFleN(>fh+ktR$B}``vlQZ|Dbe=NbKdZzE4TAwf{01p3CD$G%*4 zajLLOe5)+B4t9xkmBsw&H?FJk<@?!SL~Q&SwI7FiBN?mF4bBPrip+yU zI{vIH1xp77xbu4l%h({xlGbjea?)Dy9MB{Pl-`8^d|mE3Pjh!&PzVx~eTA8+9mRMQwnO(%OPb>Ly$@$}4(YbN>pj(bs{GDD2+Z)Qg)eIFx#& zcs~L-SAFhA4*Ms2@=KAp8)2V>o)J2a$=|^oS$eR9WL%eqwULco@$wRDZ7!v*{Hj7z z5n729kZpa+{f)N_>~lHHZ~h0i)cuPL+uq6S|3L>_aJf$c1zS>@MfdvuGIw;%VxW`# zWx~tHJ#V|sZ>JJjFIj)f$aFp~NhwKL`RUkc3@_lr)?fo4R&N}X*yAMU=u3^9tuMX# zTzwfHCiG?JFsUzk+BWJ7uovkIG+~?p+>diII5N%Hyq>1&tw_ z`EY?XJH9lDM7V&uLSS*hL?)f!L?KL91RSmV)b&fS<=2f+j&E8yHsQ{WQg#J&Z$V6M za*_p$Ih`5C&ztPtl4)D{K9&oKq0_W&QQ`bBQBmPo<5g5Rwi*=`4#~=j3g?H76&0?U zzaKVLR5(9usi;uGCu|B6V`qkBoascJ&t%v+QT=qDH;HneNNSGlsAa+nsjAcVl;Zuzw=g>%#W_Olofio||2b3LAIZ&8L;u z(IO)N<7i+%gHjA~Z%fTHo22{5!tAky7HGL3X)0o5jS5*u3_e*ABj1>b&y|>E|GZK! zK^0}#p2^Ts(CE~TcBkjd99uf|@jA4BD0@?#LPx`%Mxc8S zq!L5NAK1+Pi00K2wyixG9rSap!=JGhzxp?N;NyUn{6EWrF-XIJ8Zv9xz#Cy~5+5wq zeE}U=9hm;E4;8KMg_M*knt{i;D*AAHTWKXHp+5pOJh^n$ZYUVHY|YVdlw#5btcuDJ zm1ay=_Z8&a69(9=1OA!@_)3jmxyq?Ta7Wf)r%dM7_Igt9-)S1t)*OQD&U}8H3zj?k zShjk@eN%(05aP}5yopn&2E6U-Wb!P5A9OkH{HE;FenpL3K3q|&sN1^En{OLCexXSz z^k=8u0ld5WbN=-Tx7K)ff7jGE&9^(>CSDps3F*80d!`0f6Sc4mSA-mZ&)>vWWNIZL z&d=xFFG13!I5!rdX4b|iJqQ*Bpi{wyD_$7G#|>4TZlub(fy(tyDoE;6PtZ2-J^0w`{ec*hZb^BAh3sNTv32sHRJ~Bfr#|T~$-hYdgf% z>b6=~#Alm#>E06E50(CyOZO*}qg}d}#V=Jhu_5@CL5C?CY4jzyWK<-m#D5 z%-N^<-mus6JSUIsvokH8QN7C%vwPvM`h)RE^ogm$B2lW4rhY2?IH*Zq*DA@*);JIG zw%J3xQ^RYjK_2QL{@HMEjhBCmg)+QacP;{_Jn3Ng`zD^~f&gr&w%ayN;0-o4Cp&ZfWrvJLqx$qg7K)!_AZ6EpfZtG%YWPJJlH` zvyV81_iE8^=B285js$;2+##NO-1mxoE3OX7vVSPPEL&X4`r~q<3}#bT!x-SSBz5&= zgmyd~E5>uhhAgiQJsmD1-8$psf0~Tg`!gKPTt+gu|I_zC>him&?mC?d+JpXDRLzbC ziKDM!y5_PIZA|5E@KRpuNnRogjw}GL0F14}wo`|%5zfY@a#J9T2a<;&LrX68UPq*4p6dpOBkH*?z|i%pW4Nj(vPBydh0UUWLLSY$7a&m zOjEHpY%;Hr7Tt$orNeC9%()%6U-m0@e})S(57q(-KY_eqnj18B6j@QV!cy%pOO$iI ztuE`ONJ^rI@&KqU+0nqoHH2WNuzpl&s2y&&kR=CrUbr$zNSEw-F8 zaqfU!p)N8B=qe)-#MT5 zXRgGljop6%!ntykspD9x;1jOp2w_et>jpEOTiziY7LNLM7n}?{rwDD|p${ zoCc}_SbLDW$+g@5Y;y1J{#;TzDf_#4Wn16wWWGz^9#mHJFAOYf5sIedw>Ypc=7f8x zf>f5%=rV0iEXHtL9fb zYDG1z4M6=5WUEq^{oSq#=deWoWWTV~S6K3;8wyJ&g&>BtOJie2{TR30h9=i&>?R~z zcO`7h>VU;1l-u#H=JTzNW*m5(%EvL!OVnJ(thwC6TIf=o&To_ax^I3N)!qL92YPW+ zCan|g)vUj>w{xmpxQB6PPml|8x8t#Q!dd$guSumg=5TcdUAGe^>bt15L-0@Kn;mro z$&Cb%Acv#(!kV)SCpB1ecgx*1=k5V^EpQ=@y0nXwZ(Z8O4v$*&UQnw!^1N75pE#e! zU7tGNB#*hQ#Sdzx1q^KQXQpWug2iyQsq6gy+~$omKJ8%=-pw=|{YkXr#u}aB1?HRS zsCUeDR7d8DKskWfn2m`s_6!V=v7DZ5iDh@5zsCjVVm6S)7P;Vs7Ti+{?uzA`G|4;(WD7|mAQoiharZg@oH+4x z@lXkax5ir&Vre9B_yv!+n~~>87JO_@20JlP`etGvotyhlt;Uq={zzz_dvF{U%)#q(~C zj!&t2_x4sjxBD|!QJc&SUu$n&tR!btzuwT8!JKT)_aI*30O~M9L6eOmFJMva&nQMF zDE7Kw9f&L6Fxa`9H(nkT$&6{bNrsIU3zcMT__8{Ep=#kX z-1K1Ss+uZG$E{ZK>0*JS^7KwuB3IHdJ+YH!{>EAw7hr2QSFNs!oq{zQyXxI}v5zZkQOj{oRG_IXNd7A6-2e=>hGAqu2v`-{jbLbvK!+rufPZjv~U39EsjSSt%ROOA|6 zRaKf{A>}J-lZk2`X;bt)5U^#A006L`4;heW<@cnP<{hZjxVcbs?Sf@n4TW9*KJ zYposj4A1Wk7p7W{=d`GcSNz%?b86~1JfcK}&q4{;J2(r5D-q9*iHlS2Q9{cU>Rc?yXRlf?fQz*0C zLiC;W(QlE1w}13WRNkn_WG-KQ71a`(g|_K?nrq>~P$!CvgiGoWeB5ccpj_qxE_)H) zUtGVD;So3r(AVJGtx7ry*|JA4fBR0=%5WRrgwE=dtK1$%lCOZsTVL~+$d*}ZuL(?F z1MJG16={2PfhjiU=f|CWx5Am@na)Hti;k2*of8Bs5`~kD$KiY#$0;{kr+S@YcrHYz zn0(PGhU-9`V*959R{E;vOc(cx4@2@OB*jD}An2b-aqj*iola|jA4U^^LRNOmN z92+~d{&=IM+l8N{S`wvVT$G<5l+RJppgyUUaT#gZ$WX?=v^)nF#-_)s*`4UJJ7O-o zTAEue&6^HPbNa#4NLJ@IOXFy1X(MTSRb$O^S zN*9ago$hsA?6rs1MA^5#)(f5eZtvtLoW0~v{gzRt;OqJ&y~bI%wG-EnQ-3$}-L-B2 z(}x?Gy&AIKGG~QL$#8QuC@X*Q5a9FL{nQ)^zFe$th4 zBk_?O3W-1X3cqkApj3UABvZQvUxHym`Ps2Ev1Z+cU_|b5uZ6Q=&tEycs;q6|Gt zlsHjZ8mo9&OF)fN>9!h%AO$Z&+>FXA9gdoVAIIkoaLm7WPQ}_WcQ#G;Q99)I=w|7o z?he;{D*thyBiOB8->`$dktRN+Zq|Av{R#GW}G1U2|OX8s{6e$f2hjfJo?E3&oME zMvq!3Y|^qR5mDxO8UuyFZ0#h~$G$0=w5Bho zkd?O*o3)c~^T%IV9mWO^b(cG{qe+t)D{^&jHSL$RlAgP0=v zz%DkNB6(p5;#Y4W-=tx}4gmpd(TJ{CXa=!lv3b$oTOZw`-BDM~?<#Pa4EC$FcuohFE2T;Xg zxOEuglE+dvoPGu3$SANl2@+SXf;9=F;}q=OCB#A9q;d3ki{BMl?dD(QYU26!7Hy%4 zp*46qxE3hWBapYyj7OmbW4a_K_h_6djOxC^peM(&EKN2LhK`D#R;@1{{vK9t)7Tx% znBDuk6C4ZUKx*(ERUhp!? zt9`Ecv>O_z`Z3~iWLq8gt>;@ItT(t>)0k(?i`mKpI0PS9Q652*dt%Dk`U zntxM`-EZFxQgKrLuS9W|=xi=!(pu`rvqUfsjS~b%e#r@fBY%276rdvyeOHe+=q6!n zqBZE;R@gaL2h86dbAr+0e;1zwHP?G$wM@CRohCG8w>4+CwX||$pp^Y8Mx7HO=3KFwpom@!RHo>#-iC8?#$*N8R zxL_O=*K$o3U{IwQHIJZO4lVg!ggyUZHiP_Eeht-y*u2w_~5PS?LU45Et zF7^aOSV@FN_{uHOsUo+Hf(c~bB!-6I?;}BkZ_<66I05~T!}xrM@o?X-DcBB`ic>~6 ze;3~DNYz<+ue_IW4#xN5D+b=}Z+{Oq=dPVUToK#0c`qDxMe5zM*(Eyoi>!AE@RT1R z9u<&}%3H8N(MNTm{tmb4Jg#Ln0sUU(mnEGMc5K43gKzR%WIamrtKtFk!< zxu8glaA)C8eBz1mUk;qu_p!yFiDwJ<;;}=888~D6`&FjcW>>?v`@I)#o+HKE1*+t4 zzn3_b4=6tCPJOq(4`cHcsEl{%%~PZ>FxxhL9f~L(&|JEMQ{>%(|7;YoK-XrTl_rL~ z~G(d0eKXdX=@6ks&DrgMji*SSMQ>g#*;$DhnO`UtkQ*_h7fyth&(PWb3$ zY*f-QNqEtAiVZn!nJ$P81u0H>iVZ2-V4f_QjKSDorZKrGH=Jn9U06)`n44RQZFmjg zv&DS2Y;LIvYV?-A7W5f!Bfc>;(YU9&v(2}aK4{w|3oPC4c&5jY``y+~IML%``{uoA znvASSsBYfdl;Gsck0G79d2e$9Teoa2G>QNvr-cuQAoRzix4sIe3Z(bK{80U;2 zRYMO34tRn02=FwP#1nnI$mLDk4nM9>TY-t&H>VlX`#k1$`BGMTMRGQp6W3z7VD|$ESFc=2b0w9uMQ-2R$|etoyU$BhW9OUX zjMtpaa8kR(UY#IN=g8#!+b_H6HK5q`zv?YYmIE3qI8ASyPq$TI>}gIX3ZJ&LZ!({dajIe)iKS^C$TF z(EGVEuZo_zy!*YLwR3q7p6u*b7%feBvHyXk)nn)#A5u?Y%7IY-4NC*OHQx*q)7Dbc zyTGjSWzzdb=bPcYH&p&{&Moe7<)8L*f7RS)oEVX^^0ock56s2itn?4bz3ApF8{Nv+ z>+IjCvwzdsE&jJ;@2q@RpIqf(_xYJVwFjc+R)DOh7!(CIum!DA=Wc&Sz~}oYi+Ug9 zUN0(rmhHp01w32%lKXs7pTgHvX@v*O{4SecnI(Adc!nI~W zqH~Q_JAZ>+SE?=Geiv{{Ens-+n{{^9^tFcor)u`74oCSOLK~bv=|hb!zx-#wZAy0P z%ubj05fOt z)d6pDAC49+FVvssbL0KV{M2|~Du2TG!p8i{aqa=GGYhj!Okq`IoJ2UMj@-OEtQOR0fL}EB)HRiJW?Z`hx0HL7T`! z&|;Gg+A_b_2>PHgiA7rY3eF3aHO_MW!EDwBlioTy$2(~!i*C*_?jd;@6g$|ExG`!H zYO)Kcfy4a<;fJ zY@Dc16v>3Lba}YAM5oQ1_07diqc@~>w%mq%D$AQpN^nYV^$TA$f~jkDO*H%6Mg@+7 z7nnuTu1&?mvYF;0f}td9u4X&@E41MY9TO*wu7R){C_S{uX537I$H|MW93Sx9_uk#r zhrb(3Pi8Z%#r09*)}6dP&h4k2nYLoPEc)dpIq=8Sv*g*)pCMiuwlOGZ-U(Z=hOHpN zwJI|Ecs3IjPw^KzWZScuOmQs2aEMDU#A^rfc3`#F5dVGs1V-f_aQlUC*J_Z>S*Hmos||2ItEm_f-aXaYx9&9d zxazbepyryW7@b<{fEn{SOsq0*8p5HBV^Sfovb<0hh^0*$!oey5i#hHb0f|7VX!Mq z&W^rWZq4@2J;}4{`}tU(L-q3<8vcw`0RZNwooz}s9`h1c z%pg->ZKL%KT7vbT5;jkq1;dD^%AhPWtvT??s9e0J)J(vJja`Cb$Qi-caw;5ftK3Ff3X?b7#P~JqrXH$ z#e&`cFVw=yH*=HCttArPKQRBjOZ{4xlx*P&Gg6X(s)}rov;JP#!jO_{V)jTzO^g-inYERHOM^f9vx|$k$s6*l_ipB$Qn6s51$)2q| z>OMcw$6!}}DC>;Y6dcWDE04JdKh~%4FjYO^7aq|^b2)2^C;93REwPqRmA?8*^6+N_ zs`3MQSF2aK?sQpH(UDh#&Wth}TJCSx4hMy;7GelE2kp}Eun^lDv5?9-Ki?8Fc0}=A zG33Y%$Fi^uHdnJ1o1mM=$y# z3hn?L45>x`6Qoohzi=pllcRvhKir9^d9<&x3Xdw%pOK4f&C?t`Yu~B@&9ASY5(_Wa zeEtvBm*wH=(AC%8&3h~6i3VTg-{VSPn~Z^Kd0atM7w6T=ZLw#RbY!qv7goXh*DQgG zOZoMw!JJnD;mFDLm-zaN(eYu*~H1$|*0l;QkzA+A) zZ3z?O5rXJZ5+guh!(c^Ci!F2dc`O`0!}xdI@YELBZ4og%^|m_uFKTw`BH{g-x_Gzn zfuY}A%=4O7d!q5S)Od;k5t;l*TU={U`k9S~t%0%jL9>+4Cu3T9 z&tlF_BC!{y7})nDb6dDgO=K22VE1q<4U)xvHzF_G#wUl|L~aX?*~vXP?ad>i{lHZ7 zG#12ivOV5ESKDO1)kxa^0P2O}c5k8bYpClx-p_x?Y6HFF{rqmutxZbhKlgM0m${Ai zW8qKl=YGcAesw;p1UhN#tTgMBtDyOZS>r2IsMr>BOdMK8sGw}+-<3XF`8W6ZSAFuO zN|HdeBz~~lb0e`FS~KF6-zvDUfTK$;{@9rOw2E)?6zu=(4|VKE!Qg++H;~}$2s7jC zm<3H_{D(~=tjc$RZ_QEV>{v*|*;#h-9HZtHb@tEJ*|Vq2#ksU*cXQ^sV5&YepO?cC z%KURooI7gAnw)1kEh--puotV3z(ZLe2J^(u^6PO&JfA1UXO4L@Q65&;u?hQ}M;}$q zbPk{HEW!9FBT)-p41)SNN8i&V9$V`d{zF8LYBOsQnElN&=b{Hz)4T!gYJ46nhesXX z=l4{f558mm|sJXGZkQ=A7fSQHx&-aOYSyt|cKu3S(Hze?9+9<)Q z-_REQ8Ee;8*xYXN?DS`><(rR9>qaeyZ|R5bYy2*@USe3AyyrCEl@DWpiE;oFmk~^B zvU6UJl6!aSlG=Y8=?{tXCj<0{WfqZ2wcj(D+x>?m`u|QGhqZ`bc&0WWxF#z8t;Q1; zs*=^Ktq)=ajSv1zI|UvZVUUu=H2~iJp5Nvppfm`iEbga|?aLWE_2=XzcB%~uVy8Z` zFScx-wHe3H_q=uMJQzXlZ*tO$buhYC2N*%(S+Q)z#=C3<&0Gw7>kBdEliwJ9FO9yV z{)`5`3FpjK77*L@tz!YNal|!l$M);ACQ6fMTVUNRQp0NlKtMK$^gg|bK`xqzQ&MsR#zmKbD=>HMVFW-{<7#?Jl3DlOvPnI8jvbK*lR;Cc*(zai<`*& z8BJ@vrfsvEYlh%#wQWJ!(T_TsCp_eB{yTMMAn>_lc!xF}pWl4Mbr zn=Jh>l^k0JAGCS64+hfkLh+U+yUxpvhjU3LGmE59B%4`WJS<$CEQR6X)MzvJ=5v#~ z!o}G;i%nI#2(Xw!FAf(&fQJ+#(?b4D;Iv5krdqPA&x7gXj^Hv2vYFmuC!E#Zx&yPY z7XZCs@1oLA7TJ0+)3)g5iy5ObA*}0_y^tuI$rqc$wlL3PHc#w)m=Bv#&YbB}bu2-; zc0t&;D_lbG5`ve6ORPHju=j<1MEx$+$WyV>-7C_qx{H}PnJ-O9ZHn`f;Glx6+=q}` z7#@VBtZ?RVjAbz~NFWZF8U zx2qRkpE_Qc?DKZeeHyW7=P>5H7ugFv8F=(#91FCEW8oNRjsX}OfPazAlu()L%22v3 zlgVbri8g*)rnA@;juUS@?1WA3yz~h>VBm+H<39}BVac<6)NUj!h2y|25x;~zS-Lms z2e9&&(+{%Y^7?+ToOsK_<@AGW=7?e$u74xE^K52CaX1K%*cGn0EliI!M%GNa>eo0@ z^J@%O0AoeCg697fF7I_jw-(+Lhr-&Tqbldm?kBqLe@3XjquQ8sgQ@mOLWy>oDRHginz@F=IFmD4fgbg=Ztkp7tP7}7r& z9*zCzkm#kq^}EAnH$&tXa2B8;Kbu)q9L{D|a~K?<5w0e|>Tq>bN2_it{kS@LhpPx$ z6|SPHzLL$XDP9o_p#>M}>TmgsB4wTcz4yNzcQTK%r>YS3g| z(CFi}EY^``UAT@K`h2(s`XPJeR2>E78hLJw|1+(&kihL1+RO|T#-OKp zv&^8$ZZG7ZQtw!Fu_zP&B5=}5{*3naVSKicp^{;g>lmzVS-?f!&9M}x;D ztmMch5lF<%Tnx?fOr|Dh_h2+7iJzMs>tY2_^-oNMiNr*q6`Y2?9C?QcW32#KEN$oc zrv*G({?kMCXHt~apJ~Kg^SBNyX3|)XdIal$qaIA5Rrkqh>*1qS2hg6?^q4~@Hp{|K zltDsWpZF}?d$R<45Cm&$U~S5s=^S^a5$yd(TR#Tg^Vw9s7dUpa^yZyV%vAG8AI}@) zidC)wR?Qi&@QTo!Gf{bkoYs6+vO)Gx=%XvD)zP+zYPYwp4c3f6!FZ~|o)Ii~OEtHE zp(`*ICMWY9r2v_O^w{B2IgfVkLQ3tgo=i8BUqq%Gunzb$Zttrya~j7nG~#dbJW~hr z1o}kof+(cWK`u;Y$^K?W!~PaDJB^-G4oB6_N`$Dv_IV_Fz`Oq4S?>XWKcKNU9b z(E?1H`r-$rj>q&I6yLEwkyB-H7Mn8v)W7qIk{W<<9A!a**S7sP$1sZ|sQ(t(~mB(|XcE*pc&2>8(}tQ0m1}^(^ib zS`O+^`wCYFm>vvtv{;N>#_qPLF0b!8=sA}cbGzk*{L2C&Ok)$3aTZGVd7I1}zP#r7%roDA zW|PJ&i^Q1%mk98oOG_-KWo#JbsbOnZA*~UiQC@U%&JOCw_Ay*)f`hsTXmFz1w#?3t z&YN`;Va-;F5Co~*ZYPhm>aBRXG$0%0t;2mmVH~dcq18CkCJ7xRZXkWgb|sV$R^QWr z9eo1b1#4Yf2p1$L&{vyu!5OaqsnfB>&+G}?^Bp4{RS#FkOgefK@& zEjNjji*?*Rh%nU}dvt7nAZbc}1%52>MKbzItwSC_{IQ2!kF$#Sx=9m=SI6CRdtXo& zz};AI5N;mcAlP^b=SfBJlfm1pKaEx6m?lnyd?SCe^N3!Ea&hwA_JL6VMee` z@^{Sj>cB#)s2e@rXltIh zyBNy6kIv|*BEkNMK&F#QA>{4C{VTX>37cnQUu_vD$Bl8u-|P$TF#OON^jrQj#}n?<{`w39_r+ z%nn1!nAGN8PCwBeqnxGzXM8pDiPZ{pHqys`oezz;S_-eQ`XUJymBH zQw)A4`^ek`?-b0U`xz6ls@^R%;nH~N`*G9=ApHPKI3=Son}2#w4q?;NScEinTEhvG zS_>svc(Jr%--XyO7X8>D?vY7QDr}j>aGtYpxfG>kPgPbmKK6bP1?jbaj$s4%%2#58 z={XCi9C@&OV}8rQuSbfQjo56a4YA=Z5-CoOuE7}L^nic`ES_9e3ub3W0=bEk3fpR) zC0<%%1w~ZQTY&8H$IRU(5s%rH|7*Evk_{W#q&EirnQ%|Yf7I=!QnTCoJR05=o9H<; z`^46qg4~p?0B0M8vQ>MLy>~Un#QD@!P^+JS>QRA3G^-wSSoO40J*{)(!8z-y2f1u0 zzWO?bw!qp=#GYV?$RUG$Bupz_I!F{-XbA~;P|9_!7}Jwl$0`l#-p#hSY?& z!}j>t=fYrcB!^^o9~oz6doQpj6}ny|Jv4ZPoV)F*3UbFw53hW=7D*aghZ#6n*TBDt zHx-v6Gua+X-Ig3r`6;(K(AbmWebS!=xh?LI%EZ`r2CngAoCC+&Jcjo8SP+Z1H6VQw z8;kjP7~Cn~z7)8~Z^Y5Soi1M7nJ#X@%FgLUvGU<8RtB5hm-Uo%ZpR}}_l-Q8l03RK zG!QEvMuIX2f!tfGS*1XD+ejS1jVa5+&zaT*chPvS-?^>wJUX?$Cr95?^mVstyDBHh z5w9GlPponhA2-&o19$!XfdHnrf>wV*_ppO`zy>(p>n-$w`JW8#i9+&!S~5%Yj^{4T zRL`l5d!L~Q*X?`mn2^d5uKW&SU&SRS-%8DCW;RynS83TAi>L#4_%p}z9m+Dj%cCxZ z{9UMG3!uJM2Ygj+CVFHRJXC+?VHP}8k>+6*trML7dCnw51bJsvX6-!mE$?X1jYmBd zHi%dO1vnL77S%8v>ot9yCMU4XdyQW>in91K^1Ws2z)R}gbLuap;#KhnQ)nYJ0DJ|0 zV4FXqujzMFK%pJI#kC;$SdiirkkScU>J@%@rDba{&Ox&11w^PJ&Le_$<5^!`S-{){ z6!@=i09e|=cj(5@2!#3!{gAsgY9`ulVK0_Yy%Gvhe zt*3Lau;!B`NyHgP_2+EB#0#`8Yk*-QE$WySt>y7hbdXA7Ij(*i z(B!S?hT0Up_iR37^CP{e`gbBNRmGcf=s|SZ#$C3eWkPyJyboL5I_#GDGb*N)i!5kB z&fk?<$T6QU3{uHG>}*u-)NFo1%H&)o9HYYlC_REmFr8QhXxzz)fp_)biV6THxa`qp z3#U=2JI!8Q*XKD_cc9LK2`}aR=M%s5w?^B9w~2y$qz>1#+m4A7gEoR>5$Q@H8zyg+ zQ19STDU@b3Bh%Z=j)jvMmXT>~V6rIHab#m7!^Q(f@a(N&YV&^{9K4z8Ce+eWcU5ai{cSto%H#9JQ)m5ORS}r)ufG z*W;V+<}i2>CM)sb&X}wBL?pDr*7wY8bC`%UG9tFYq>D}%DApW|aHrXIjFDz~NCbNL zkyLUdg3}m*NlEIZctYb~zdz*NWcjiq5zhc>ln*7bOEyv>OeO;^f-MipY4^izF7_^&$;T z++N^DsD?`PB<-n6@kFEKPuvjJ(#WZuj=Ffqxp+;iD@@W+XFG?FVnE^|f`&7fV2sA3 z@i~*yCaTe5&bki?IMvOdP^EECaZm~MM55)(19jCQR#*OPQc)hWip5n_w(RzP^vIv3 zOgo`+z>8*P$+4qpXm*gB$Ie{^rX!^&27S3sA}Ym7#sP^2bZx7~xME-RE`0 zRlf*oN+=4d^Y5yno|-(XE4fh&A|pVP7*Liu2l1Rx7YDc_BK7;3#O%gQOAPTmD9EeU zuDD`s=+E{oC0JR4(5f|0zKb=_M{Vv=6bO4M zpQhl1G~rqbE#&unelz?Mw2hbZdz#CB>b3c*Dj1`dsYpgT?MiUcZOfJyC2wIiu{7GXgPD z*$P6=r%&Q5tj~U@F*4L5!o|t=;@NZBoTs4WGkC74c~Zcas-!1XOWJcVOuCcT{}pMs z-;TixTO^n*bALV<{E~Au`!sU{c=rayc>Ps$kK4G#mn5{`D$tceTQ%&=@;@BpJ<5yZB&fyZ1}G;(%nm2TQitCCfLt zJRfrSI=WIURXdvdeqAfpvk-+>&WOozyYLsWCar$x&R?xU6sWZ~YpS(c>Vr@2?Sy34 zJikh^qzlQqb~b$v^WjY?I+3f;T~uupqrPeGAMMR*G&$Fgc*AgBN6KoAuO5b~d)v^k z0hRM6NhG*F?R!VkS3g$k)A^^zyZjmTdh7q=JS}f9ebl06r!Qs3(l$ojz9Pe(i?~AT z1vIgU1yHBn`wGGbknbMQYZ82m`mW&ULIKlQprgm_}!e^QX8+dc2nk9*#)F2#Q4 zRa0B9xMW%}CQvB&2!qqov(NOFBiPo4-_n!LKKXdQ$K!s}QrzobTHd0_{4rcLocorK z78`qU{H|f#%i@9cdVah4AT$kMx$-xA!b2|S6P!khSk3Wq1|cN||-PkNu^r?4D9 zh7yB^m)2M|ep39XgojHV0DpnEb?D*K18>Q&%v;R--r()0XS@erpwN{=)5`fy(Z z4ZQn?WNtM3KC@qM=3kk4toi?XP;qWF^OJ+W2WIK`zg!)7!3iJ7|5cl1erZxZA8U|# z*P!x!Vy*1=ER(r@^>+HaL?J=@{ZiCEU9xrpqVt$~gm=C{5W?`kw%bvGj zbKtcP%f4(#=ARqC)CpgzWUp}MDmDgVLpEdKof?%eMk{gC@KRxiCGXD$KDE`f-D(%AO z$$Yip*?pYi?^&(TH=ZeTvQOsS4G*6cc>U|XHy(KZa)f+db%xA`PM7(GEiVV##YWFZ zt#qHTeD^IEv`@!n{;g4FrbiIGLzQEDpUkFnWqz(8^JdGvvO@Ns8^wNbvF!h56y9~B z;Jn9jdBt(^|K2$dpB{K`zd-(%8x4(+|`?>tKM*=DqQol)ldhsyu& z&K70PS=xLerHcvv-PTU7STFql<;8!AW@OKMt<*iy{`uF}=AClfw{s`dT<7CT;YwK8 zkJo=Y*G!LTG}k?ZHPhEx%;lLYPXAILUo)}ggbiqY%bDu~C&<-Ae|@Xxc}HHftkoiwHDW_V0(S>TtRt3 z6vp8IVOM!u4N6~Hu50B2vo~L&m~X(PbQhj2*WKQ`E$k97lk2@!qVFBI<%AS64fh+? zU&{*Xzeb<7p!^iq23%h-*V}S(z1#b$xgNH#_jwO{cTw6yt+XHXegZCS-dil}gJ@hA zlsYxyDHk#CF?xPB3j63OTTZBWU-UXH=0Klfe$nf; zm=7%#F8_#2w0=omSpUe|VXjjn*Q+e%jkq=tc7wUDG}mL^Yb@r1LzM0@@5Y8#k$WE3 z23$8;%o47ju7#_%oN$r%l=nW1xeeEU zdcXF*ip%p3vsUo$-VZJ8HhF1~wtI%u%bZ9~}vd!Ci>V4}r zc&!axzH0Lu=gPITVbB-Q#D({*yVhINFk~?=E+}lhxjgTowQ_B2SZ`s!9KUbfue>W8 zUSO^ngL!4c3z>@Aypv8+%$*Gv6UL0OM6S0qywqZT?Rj$D({QD^(yJGreUbOq4cpCi z^~sCR-r&8z;V;egx>XAMSi`%_wRf|^KGkraxxRUtT%T?DlCS>vZ^z|NT-5M|hHqLK z22aVKSn3d~?0wB)NXsaHhGgU6nuaB5%mwX|CUyYlZ)Tm|E-O=RUJ}gSXcIM}s+X{4<+V z-bwyfEarPwJ+t{DTo1%V`8!V7POWV5AG35{IM=y;g3I&nJ##zl^CJJJ2IZ0Cw$rOF zlMAf3uG&s3xXk~BxqgQ0w_e%*O-!wBMc0YPH#AK9Psdabmk*qH{00wpBC?-t-h0-Z zc>F}eRer);uZvtQabdl_=fvaBBCONGE;;7J<3HtH?f04Mq1A%2gGbkP5cB(&ezUN_ zyU8zctlZ|s&-x||_?!H3bG4i67XL_d9g6F!hFkqL=6dQ(#k|d5M}DkuPWfh`;@#n& zV6HnN*U9EOE^G^B(`=xN7r=I{t{VFfO2i1} zzaCuLyx7^!b(6V{^-F6NcAL4L-zC?({axld#=`FP?=cF#^@R%ipntDncIMjBT234M z4_Xc#v8VhExIStzKYp%recVd4Y5h}v%KMc6w}#mftDf>N!u2V0ecoI@_aBclNP2H% zcG}=|#5xl+dT)xw?zLWjIXyp3LnR2a+T;DlG z=~m%Vy6*E8wko#RTxTzqYpqfrZ4Y!t$fVGQS>| zc}|baE034CI*?gP%6z4nL!RvGH_ObQEAzD$|FM|tj~j$l7l;C{H9BlPUiOc*%DiQP z%q!wDTVgVg8jJ{z(!JI|Imeu2ydX731Pzu%X6=n9$JR?GadnICDB{Q@($4#<96m&}Ee zGXG{mX39c0So{W0KCd>IpImSsZSuRv|2^j4ZBSc1<$^C_E?A}(J2?K2*uOt2^W&59 ze?!+-G2gpvXS%^Vr}x9y&&{eIJ^5nA|Kgc~@UkrrV!q-o@kUpVvon71FM_$vxBA2J-A{gvkL zeD2>O2uE&`xzO^u_R`0&3(gYnU55(KM=!XxM)@zC_A{vQi*tTf^Lc9dllXYglX-tm z=DCA1w@%1>G4>_in{325CHre2ceksIAMdnswX4*F9Z%Mv-LT|eNY%OVUl@x%((}8v z4LeSx1vYqJG0J?BQKG@SyHn;Gv%f9#458~z70k{{1?~QhSmUYB3i zXU+3oYwf+y_K!gQk>gKvQ(E15uA3WJ747e`eHom!BH;~8F%q8e{}ugwhv_OC0V_Bs z-?^#Y*0a`*r&Nx|lD-;3`V^--f;Efh!=E_kz8z~~DzAprLtT@71%0Zps<)^f;;2mJ zy@RDzb6_0QtgsG!9;-mTVt)4oJBHoEDTbR(s1(WE-&Aa>ca;pFzHzn#)zyt&lq<70 zsj44Jr98B%*c`w63gVg@IeI{-EZ>zaL`5OnQWfKYIu{+XZ=X~;D}Di zeTelg+yBh!#L=CSyN}IVS(mcDgNj#&rlbMMl(z=8$=o@e^7eatYb@Qkm=5K8=O+0+ ziRqr=8RIjawGOh*#&mn7cCcxCs+mOQoS{gC!4wzNmU)5ZrK-O2zqD`<|h<(6wB0`8Zf#^C`dbFsxfI>>+a+khw3Lr=ZzOr&2C56H^(+8qWGeJeBk* z&fDz%l%K*r6sPc`IICby#=#yoS3q-0Ze48Cl-#LU=P9{Y+5Ds+^V^d29JWYGZZo$3 zmGfMNeI8_uW znDgTqkD~VNFb1_-GGeyDNq+>qq*Duzhx&lAx6YRqH|J2#cu zsI5mlQwLE_o@C8NP01aIV@klYk-e~AH9((1&<`~d4t1iiBe-w8z%9G94_#mW%VF~> ze%Op=R~2)Y__-L*i=7sreS5UW?@RJ5XM{hAdESDvbV_bvV+yN!Y(vgrA@||)fs~&e zJm**SCqDxMDCe#D$`v|jF~)hWJGFwVHtDWV@{?SZ=Dh`Mj$!lY24wT=5YpD&$mi^q zMHn_UeHE%N<^23l{Z6_FZ!sx?(Rs_W51yc&6!=e?oWZw0K3r!~)ix#k@q)V?1i zk*YqRTK~mlYMnKxZfM?*G?q23-xT47POO`;x42hS44ae;`oKy_`bn+Byjml3 z&GN^wywXLw!9m)@n{>6`ajX-ys(GtD<*hT%v9z8nwZH0r2J^30m?b@rqxpK;MN}uQ zkW+G3;uSn4wjLyln*Unzd( z7*63BkA%m&PA?w`&D9LaGirH`=X*B)CVs*APqS-Vu2r?>RJ&khK2@H2MFy|s$UYKw z^NLQnHVpU;V^ID*_u3Ecvd0J9MxU>;R^^rI;sEONG7#`n-eplEVG{4GYr84MR;&kj z7w|RfJ^MK5?oBglyL$Vu>>u>sha>TWD5_7gK{MNAC*N=1Gxu>^-8F!<*q3_e7GnM2 z{18ievjOR+-1-fkVyi7n73v9k1nvu|C5(gEf;ihxKJt z0cH5g`*c?_mu*CPGK_jidtR{=)+3woA>LR6nKjFy4yZ{sqCNHVW9@icbS3S@D~hJ+ zGzywH$mT#WncwM;-xP(1GfDR~C+*oQxqKwdY)a#+LPbhz7O%%bYE#Tjc%9&6?Zg`9 zqMH1kM?ql*`8kVg4_vKrKRJOrZUMWwr(Ia2HoP4YAA zWbTvWSzBY@j)ZG{D9?XaC;hpu{->JZy+AwC;I5>-;z^%vOm)(J0L4G4E9vuHX(e`u zYw2f99Y;+&vcKGg%!M(eZ}AE(U@+Cv6~1<>x~k1{U_Y*zx~wnqXi~L$gx3{R_IU9e zg!spcUyX{WH_Ry1##VLIMP9X0V?-Qk3r7Rgc3xy&=p>!wYKpqdNJ72fXoot0?PvIq z>p)2{oQH={8>64nm3HLd>DU7wN+$gzZMr=#6~%mtHs0~12VzNI3L$O9_FtuZYVS9# z>R+M#$q>?#YNQ{rxq1wl>xYtduJDx|^W^Hs(WYq(X-T!?c09#>yZPf;P{(d|-VSD^ zqRp91(!j7(?1yUqn}oaINQm_(o8kU_ag2Y!`$x|m;tJk5s(tP>TsuWVf1V#!XVTub z7}pz-pmx6MERM{P@CD9Dk&wf)L>QYJlZk;W-SvgNplTT;WGT&$MLJ1>6VDB+@=2j>pcI1F4@3#;Yyf15KqB@(vyg zPaCvOF2OS&yee6wZZ8@gbbTz%kJa%E&N)%Zq*-C4R`?mr!!vZs2ff-oiP{x+gmqtA!&*2Xy74d3v9=WX&sdda3t z{QTA&k8mznWV;Ex&$`AYKcx3<%ETu)wt0jr3%hMMx&!iGoA5;_IBruW-qpS65zY-) zZ8tv%1TQ?bR;3-}9|X}h4f79!bf!G6iAs=dQzqW?9mAx`9sv_nIOmjMkNHQz22F)X zRp62$@T>8Ze>6lyae5$;szIuzpQ`-ih=IwPUPP(^8#HYgmg`>=&MI;iHOcp{4L@r7 zu*pkE*A;O->i{OHOC+EUG_k3`zYdJEX`X*wSZ~uC{`KIvBB$&g53z7wQ^oFuj#xa& z<~W_3E9Kxc*y4SpI-1%I z-Qu4BiJE#3Ek^31Db?KNp9sA)Wte-B25G9^Hy#?mFimay7CIWhfXg7PLF=-x!K)y5QdeHraI9zcrNDbj!a3{9u#i#+xWr zIR%Wx-`xYEnevb#-DxnRnsO^@SI0dN*4vcePKTp5wRLAh1l}P7$isUGz1^c>o~FxH z2DzVrQ8koXUfW^raj-?xAALr;pTujpa%(#L33m>hz`H6G%f;ct+)u*+eDwjJC4)mL zPrILiBbvrl2o&_}5&hd~)ft}aepUffzWX^3dfA<8)BNmQ_aqO>cTX;*GSt%fHc?C8 zqxy+++*53~k<}K;Dew#Dg=U+9Fa@IPk+Yh6UW5ci&doz};6-SrY0pqUq%=*kNjyx0 zbWPz+3LVp6gr1n(D4#XU^*wd4O`%z4u>^;R%LHo0d(rcK-2bKnt87t=p;&xLU|eeRwQ&uN;GdDy)G@@@LYT?nr-QJwkW zTPcN1laNlj7r`2v&byaD$9OISx(#y|!H5J^q6s1K_{Fd%H9Z$jG*Q#^@IuF%@S>)g z8S(hdsJWV&WfVHzg5^w;oZnrXBtEnXBP~ru>v5u?FsHT9RVnlP`gI-;`#XMwvz8 zZK$H@*J1Jai%ZRz^5FZFYwow7qzLd1Ins1Zp<(1UTl;**B)Xw#9#cR=6-!C=rE(oy({#A{K64$s*hsnc!11si z3N#I_HqU=OtkC2ior7=St!Kizj`l;^tlgqxm&$ixpQbvo`^6+fGc+>qpWNX?|@pq)rOp~1RJKS_{gcr2iq@Xg! zMwp?gAgILJ2uC%YuU{lSfJRMJ`L5Tu@CnDMOp}~z8eVp9f&xwDu&y^jp{A5rqPH{+ zW!j+#)&vzgHoygv4sP2@EN2$O)CfZA+6Cg z9{a==aPc!_`Oec-h$<_Bs|Dp{F6@bq4%iM=nAGg{DfG0d!2eSiV$(eT9gxFx&PB87XOOFjX4B7L zo+g@2cfw*7&enjR`|8|z~^{x}}wF10yO$?r5+@tZq zWsIY+$&Mv1;3({3I_IKr-@$(6<_z+VLpq||1jTX;jMfzGIYF_U1Rth+=RoZ9C&8_0 z820&-P(k_RI8Q;e4o9(^f`m5rVmS*P+Y-$MS+7CBS(wO_@2paNp*#muG&QO|&;J~} zqv-^?orleuenz+Ra9Y#**wPo^2TeP$r7u8WJ4zwnxh0}mz(uI2sU)H`QZ+?*4Zz(u zWHG6l_#UzqaoN9z*!C2QD*KOcm`UaOM=(366uMx}ega=j!!Tz*0e%(~|K&R=XFo%% zCd%2*kgVx<40jn)HIsQ#L2tLL( zx(>f;YTF*qy1?C$V##+dYfvPvLxduj7~eDCI;3hEAKW+KH(08D`ZO#OzriX^)rSzh zt0`>|5q{8x;)E9~UUUBj(>f_CJA81!4OnB-(14rpI6f^yJ|Dq1RByusO@r}~_}j2t z)2^V~@($ofGT7%X>`Qmypr#M;b+6yyvZfjXEcgQ~e5!}yd^r)ngD4_2HLHEiEyQe1 zPbDsuQf$x^JfKKO5suH?P`KrTiBdIvP?xAk)24P7NU?<}58C0o?}muMWi72EFElO^ zrkJSdyTKy^OtFONoLEs4cYI~K#9cnhN|=i2!~tGoao;iDSNOp{=1GVV9ULz-r_D!^EJYWf3L&A#FhP2m;xnPmj!1izt${WDCI)wENrk9sWt zH{I;EQ>>19BLI&aG%bl*9S|hOax8i9ZkQhgi*<^eRQ3?@fhH<@h}h1Q@1%WIsQ5v< zolJ{|FmXern&e9^SuF)VyaDt0;0rm<LN}9S3S}LPO4Nc33d>argnlqgf zX3Kvl6p({;QaRTnoj6*fB`5F>K&IXW5vh0T5ns3AJ0D!N+lT0l*a zYSYbtT4Gcma?69j4n|;Iku`vQ@*Xx;jMhZg;#e_J6YXK+#1u`mhm8}9G{xX5sJ?hh zQ$t(@)fY!J1ti8pyg03icDwQ72TiowjThGxL4#Vpfe9jKkjiy~T0wygM7~YmnX!Du9C( z`v!IuQ?*;O+CMqEi90q8b9WbgvM5|0yoPgRipbM+b@1T89->H-FV2`f#a2y?2W17O zimyw<;r!W4T+y^HaYSHm;X72tdA&o$z&>K}a7CLsJQkQH5*}8xw;kT67TKE8q8GUP zim94LRbAljCst_c(W#8lU+mR%w8z-M{v!Di6-$Ml69Wec=SZRgSWlfTps;*9MLe5u=pb zr0lhUW5r%gzWp`@J}FL&R&KAN+f!o97)8UAwgo&RUb9KS1hHMy!&yYWW0lX5DMTST zio6nu>M)%Yb8rrsAR1}6BaI6k6U2I^9eA}UbUZ7zXt#5NcLY8stfy2gbqAFo1#4QC zxEHCmrXe*BAdS-0s5_puiz?5maD#^*34C6}YTDEESl}cv^*QBs5$OdHF_8#QKq{Tb zXM9pM#dWwGNI%I%|8`n$R{kyUB@eoTw1R!AtJ=%r1EzC=e7+(|Y`TMV*7k`{b(Y3b zCOpCnvdP+?{#)QZ`k=8VeU|0z;WN3GcThoTEEZj1XNn&=1zP=<51MJaQJk}EqB!pn z#d(h?&e^t4igS**qsri-e9jSOF4Y8;HUz1*O-~2BCK@p91WIq7$kIgV%@fW%z<)b| z(wisJG*No<#dJ-S-s@rs6Qw}3%BJ!`uZ#B-Ip1v>6|_Knq{C5q3&cK6l->gIhbBsI zfrx!xrB3M;igB7Ky@g^LQ@)dS!VASrO|%nUC>Cg<9rPPwnI_snzaiFWqFwSLu|X5< zk{5~Xint7mMTvGR(|@U4EDmUj?7z=kEWXxs9#1lsh?AOb;Yr34@x3CBWvTeZCO>=w zrQ9Sc5!KSRfMueRBEH@(7u7V;^>(?a$F$RVJTxAPL^Dm38WVNWl$B1@Thp=zOJ$MB z)D+a3Xq2WZt@oKl;yF!2YvWmvcu5h|Z6J{5X`0r!h4H3%OH;3g`^**MeNATADPyJh zOw-8PQ;ap@2-6Or(Z5dkPNwqZ;XWcJXuYV-M}+x6Bm7;Fqv_7jxS);VhNcR`8U<|@ zN2hSTz)QG_{aA!dRU~nR`?090X$Y=eDk*$fY4_n1_O>}+OCKhR;>%(^O zp{7Ui`cN$PYohDJC*p#prd=Nk{8Ws6QKcT!wN=m#aa0kv*iPY`#%@TRf_8~SMSOa` zTQt{1tGwN!qo#wyad$12GZjE_c=w?Hh#kre+GS4<*duPdOmXHxOjiMW#D-TCB@Zuj z>=8+?a(a+D9G~J8kIW$2>HIdTNbD6knyB6PiVcc@R{nd%ai%;7u5!xQD}K=QTlgts zzxYkld&5r|2ZdRn(mND-%J@>OpUElUyYQ!sBO+jyas#Aqh4&mH)zZgAJd+yl$3;_{ z@E(mwW>V*-C&XzcbuxQGM9igF&Ivl1Jt_7x$N>jN^KcqWM1wiMtr$zQ_ z6pqetdk38r>ud@X=f!>|m6r?RD<+lR1radsUV0bBR3J;>Y$e2$)^PPk6 z)bB?zQW4O~>PJziDXgi5Zz;W_seIES@w3>f!_g}5XR%Wgt@3^r`!&&d&t>tICR$@& z7AG{(y_YNEf+p%cSA_XG?y_Uo&nm8RFQCtnk3npRgG=KfVIXUc~j z*~8q|MeHIj5%-?o#QLQw&I_2rZ{mceWt9d5-4F@Olv`YfedZmpfvEsqFE=9SuDGV% zHntz;{zD`zC!afkMn6ciNQH|TJjF0%I@3-F!WqR&Zd##y(){8j4>PGg;U!PpN6l7} z&$-Sic(U##duy7FC+l7^U(+RYbI6x9&5sxzFJc~`0K0~J%b>uZoRG+bO!aF+khlpNL#I+kM-_%648!Ojp z`XO^^P^{dj=|*NQ(so5a^%5u3-cxbz$`DXrcG*CLcNK8;TVIaVv@Zd7eDbKKkJ#t> z_m$5>iPzlqW$K5Dio*(n;-&eKB9UGglqf?!R&+I^FsPxNv5iR8Sz~!%I}!D)mxCJ1 zHpNWbdz#3xn$C5z@YhokK2dJCrGuu@?^8utjke0Ba-^mYky^@{pDDM8n#MyL*-X>K z{@2`XSD#@@pnF0y@ca_tDQb z6*@Y}*j*}hYO#mpa;7{u&^{iib_u!VL4|%qlQn(Tl4$yWl-mVpr-y*5oTI?LzwDK{DcUFAzQO)r}`7!0e;fQ@fY4Xk? zc7uUUj|BCV-yJUXDWISH-X;qP59RS+KKH@?GDg#$x)$`8-8CJ=tJ45ETT^qqIt`TN z|Et2i+-Qn1NG2+B?#9!*44I_ePS?dJPULz`gZms0%8&#xO~^9vq9N%hfO~PJuH*Hrf@q2&8Cmaa^G+) zy!L)n25X|V_oFgG(*S&8;xSo=X)?5EJjHlSCTTi^=P#pWGE*MTn1znfau1VQvyYMc zG|`%UjQm0qt-Z&{W148~Hb(xSiPr36+&b0pC($DkCPQN(VFi` z8Ka5TZcoYtO?35rN~SWYwcAs23)5s+RSuspl4rEfJ#}x(r=@jNrAOEIXJj~&S}#2( zYuMB&Xrdgf$T@`k3RolY53WX>_=b9>#(?rHKrn%3gp zVw(I`Q)S#+Op`xqdLH){)1-Nv!#T&c_#_CgVM9e2!8cXWHqanwTZ8X*VkEEZO!X;6K%uX2}#y z)R$(-R87>EX30L9s4vZunVP6C&61-uQD2%RCn)08#ccVaChA$U+${nMw7f1@eS;qh41i(@s&Y^Ko@(!6LbV3E!LV8*MC>zNeL2K;Pp*%j6DC z`@<>)7s>21%B_08DaKo}L{muRBC$&TSCe-Yq7#~Sq@OZY$+2fuIJ(NbEejN3ixI8S zZX^0s3w~QBpHn_x>{BavtsHApeDFJRp{CqE7Hp7PHBHBG@5_UVoL%}9iH-6bO&NGU zb))=6`}`^k-wc-F=Q#zwl5CW<6+wlbr;Lp<;=;XrZkF9O(Yj}|^uNe%oa-$z>^_RJ z$q%;3S~g|ko9T&6>YnK~NpY0k#VFQ9cQKj;e`?d}s1Ct9ZKAsvdt{P|(|KxOTJT<( zqv=x=qgp zACmKJni~A2TxL^2@K^G%rla+q4gN-!`GMk`3r8`QqcX^*slngL2%8FmkIU{%`S4$S zrtOp*smOV{Ry>@RQ#4)28TzzbrhPVSRp>Y)w`sSphUDN=%HL=@H^dL=x~4u2a^RdS ze~I#v@62l8htysXgtS{2d|pn}Zob{(;RpG;rs~}a9Y4s8nwEtYiA(YeP4%nhz$JM} z(^z(M{HRj6jdx8h$!JYK;a!tUa7A;7xgy zNuBoIl(nyt+fG6EmTt*LOzOVVEt$a;QVj(pvwt-*KY5lvy}_J_P|)7D@xVt=L7 z^PpTj-WN5dGv!0KM!SLy<1o`)nAhm@VAH5@o%0D78sVEw#z;;58kI3D;{sD2jHnck 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�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 Fz@M?PZx{do literal 0 HcmV?d00001 diff --git a/packages/SharpZipLib.1.3.3/lib/netstandard2.0/ICSharpCode.SharpZipLib.pdb b/packages/SharpZipLib.1.3.3/lib/netstandard2.0/ICSharpCode.SharpZipLib.pdb new file mode 100644 index 0000000000000000000000000000000000000000..067c2c11fc82d4345e00e006f6076e32201411b9 GIT binary patch literal 108456 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 + + + ICSharpCode.SharpZipLib + + + + + An example class to demonstrate compression and decompression of BZip2 streams. + + + + + Decompress the input writing + uncompressed data to the output stream + + The readable stream containing data to decompress. + The output stream to receive the decompressed data. + Both streams are closed on completion if true. + + + + Compress the input stream sending + result data to output stream + + The readable stream to compress. + The output stream to receive the compressed data. + Both streams are closed on completion if true. + Block size acts as compression level (1 to 9) with 1 giving + the lowest compression and 9 the highest. + + + + Defines internal values for both compression and decompression + + + + + Random numbers used to randomise repetitive blocks + + + + + When multiplied by compression parameter (1-9) gives the block size for compression + 9 gives the best compression but uses the most memory. + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + BZip2Exception represents exceptions specific to BZip2 classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the BZip2Exception class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + An input stream that decompresses files in the BZip2 format + + + + + Construct instance for reading from stream + + Data source + + + + Get/set flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + + + + Gets a value indicating if the stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking. + + + + + Gets a value indicating whether the current stream supports writing. + This property always returns false + + + + + Gets the length in bytes of the stream. + + + + + Gets the current position of the stream. + Setting the position is not supported and will throw a NotSupportException. + + Any attempt to set the position. + + + + Flushes the stream. + + + + + Set the streams position. This operation is not supported and will throw a NotSupportedException + + A byte offset relative to the parameter. + A value of type indicating the reference point used to obtain the new position. + The new position of the stream. + Any access + + + + Sets the length of this stream to the given value. + This operation is not supported and will throw a NotSupportedExceptionortedException + + The new length for the stream. + Any access + + + + Writes a block of bytes to this stream using data from a buffer. + This operation is not supported and will throw a NotSupportedException + + The buffer to source data from. + The offset to start obtaining data from. + The number of bytes of data to write. + Any access + + + + Writes a byte to the current position in the file stream. + This operation is not supported and will throw a NotSupportedException + + The value to write. + Any access + + + + Read a sequence of bytes and advances the read position by one byte. + + Array of bytes to store values in + Offset in array to begin storing data + The maximum number of bytes to read + The total number of bytes read into the buffer. This might be less + than the number of bytes requested if that number of bytes are not + currently available or zero if the end of the stream is reached. + + + + + Closes the stream, releasing any associated resources. + + + + + Read a byte from stream advancing position + + byte read or -1 on end of stream + + + + An output stream that compresses into the BZip2 format + including file header chars into another stream. + + + + + Construct a default output stream with maximum block size + + The stream to write BZip data onto. + + + + Initialise a new instance of the + for the specified stream, using the given blocksize. + + The stream to write compressed data to. + The block size to use. + + Valid block sizes are in the range 1..9, with 1 giving + the lowest compression and 9 the highest. + + + + + Ensures that resources are freed and other cleanup operations + are performed when the garbage collector reclaims the BZip2OutputStream. + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking + + + + + Gets a value indicating whether the current stream supports writing + + + + + Gets the length in bytes of the stream + + + + + Gets or sets the current position of this stream. + + + + + Sets the current position of this stream to the given value. + + The point relative to the offset from which to being seeking. + The reference point from which to begin seeking. + The new position in the stream. + + + + Sets the length of this stream to the given value. + + The new stream length. + + + + Read a byte from the stream advancing the position. + + The byte read cast to an int; -1 if end of stream. + + + + Read a block of bytes + + The buffer to read into. + The offset in the buffer to start storing data at. + The maximum number of bytes to read. + The total number of bytes read. This might be less than the number of bytes + requested if that number of bytes are not currently available, or zero + if the end of the stream is reached. + + + + Write a block of bytes to the stream + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + + + + Write a byte to the stream. + + The byte to write to the stream. + + + + Get the number of bytes written to output. + + + + + Get the number of bytes written to the output. + + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Flush output buffers + + + + + Computes Adler32 checksum for a stream of data. An Adler32 + checksum is not as reliable as a CRC32 checksum, but a lot faster to + compute. + + The specification for Adler32 may be found in RFC 1950. + ZLIB Compressed Data Format Specification version 3.3) + + + From that document: + + "ADLER32 (Adler-32 checksum) + This contains a checksum value of the uncompressed data + (excluding any dictionary data) computed according to Adler-32 + algorithm. This algorithm is a 32-bit extension and improvement + of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 + standard. + + Adler-32 is composed of two sums accumulated per byte: s1 is + the sum of all bytes, s2 is the sum of all s1 values. Both sums + are done modulo 65521. s1 is initialized to 1, s2 to zero. The + Adler-32 checksum is stored as s2*65536 + s1 in most- + significant-byte first (network) order." + + "8.2. The Adler-32 algorithm + + The Adler-32 algorithm is much faster than the CRC32 algorithm yet + still provides an extremely low probability of undetected errors. + + The modulo on unsigned long accumulators can be delayed for 5552 + bytes, so the modulo operation time is negligible. If the bytes + are a, b, c, the second sum is 3a + 2b + c + 3, and so is position + and order sensitive, unlike the first sum, which is just a + checksum. That 65521 is prime is important to avoid a possible + large class of two-byte errors that leave the check unchanged. + (The Fletcher checksum uses 255, which is not prime and which also + makes the Fletcher check insensitive to single byte changes 0 - + 255.) + + The sum s1 is initialized to 1 instead of zero to make the length + of the sequence part of s2, so that the length does not have to be + checked separately. (Any sequence of zeroes has a Fletcher + checksum of zero.)" + + + + + + + largest prime smaller than 65536 + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the Adler32 data checksum as if no update was ever called. + + + + + Returns the Adler32 data checksum computed so far. + + + + + Updates the checksum with the byte b. + + + The data value to add. The high byte of the int is ignored. + + + + + Updates the Adler32 data checksum with the bytes taken from + a block of data. + + Contains the data to update the checksum with. + + + + Update Adler32 data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + CRC-32 with unreversed data and reversed output + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + This implementation uses sixteen lookup tables stored in one linear array + to implement the slicing-by-16 algorithm, a variant of the slicing-by-8 + algorithm described in this Intel white paper: + + https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf + + The first lookup table is simply the CRC of all possible eight bit values. + Each successive lookup table is derived from the original table generated + by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs + together will produce the same output as a byte-by-byte CRC loop with + fewer arithmetic and bit manipulation operations, at the cost of increased + memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table, + which is still small enough to fit in most processors' L1 cache.) + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the CRC data checksum as if no update was ever called. + + + + + Returns the CRC data checksum computed so far. + + Reversed Out = true + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of bval + + Reversed Data = false + + + + Updates the CRC data checksum with the bytes taken from + a block of data. + + Contains the data to update the CRC with. + + + + Update CRC data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + Internal helper function for updating a block of data using slicing. + + The array containing the data to add + Range start for (inclusive) + The number of bytes to checksum starting from + + + + A non-inlined function for updating data that doesn't fit in a 16-byte + block. We don't expect to enter this function most of the time, and when + we do we're not here for long, so disabling inlining here improves + performance overall. + + The array containing the data to add + Range start for (inclusive) + Range end for (exclusive) + + + + CRC-32 with reversed data and unreversed output + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + This implementation uses sixteen lookup tables stored in one linear array + to implement the slicing-by-16 algorithm, a variant of the slicing-by-8 + algorithm described in this Intel white paper: + + https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf + + The first lookup table is simply the CRC of all possible eight bit values. + Each successive lookup table is derived from the original table generated + by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs + together will produce the same output as a byte-by-byte CRC loop with + fewer arithmetic and bit manipulation operations, at the cost of increased + memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table, + which is still small enough to fit in most processors' L1 cache.) + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the CRC data checksum as if no update was ever called. + + + + + Returns the CRC data checksum computed so far. + + Reversed Out = false + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of bval + + Reversed Data = true + + + + Updates the CRC data checksum with the bytes taken from + a block of data. + + Contains the data to update the CRC with. + + + + Update CRC data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + Internal helper function for updating a block of data using slicing. + + The array containing the data to add + Range start for (inclusive) + The number of bytes to checksum starting from + + + + A non-inlined function for updating data that doesn't fit in a 16-byte + block. We don't expect to enter this function most of the time, and when + we do we're not here for long, so disabling inlining here improves + performance overall. + + The array containing the data to add + Range start for (inclusive) + Range end for (exclusive) + + + + The number of slicing lookup tables to generate. + + + + + Generates multiple CRC lookup tables for a given polynomial, stored + in a linear array of uints. The first block (i.e. the first 256 + elements) is the same as the byte-by-byte CRC lookup table. + + The generating CRC polynomial + Whether the polynomial is in reversed bit order + A linear array of 256 * elements + + This table could also be generated as a rectangular array, but the + JIT compiler generates slower code than if we use a linear array. + Known issue, see: https://github.com/dotnet/runtime/issues/30275 + + + + + Mixes the first four bytes of input with + using normal ordering before calling . + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + Checksum state before this update call + A new unfinalized checksum value + + + Assumes input[offset]..input[offset + 15] are valid array indexes. + For performance reasons, this must be checked by the caller. + + + + + Mixes the first four bytes of input with + using reflected ordering before calling . + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + Checksum state before this update call + A new unfinalized checksum value + + + Assumes input[offset]..input[offset + 15] are valid array indexes. + For performance reasons, this must be checked by the caller. + + + + + A shared method for updating an unfinalized CRC checksum using slicing-by-16. + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + First byte of input after mixing with the old CRC + Second byte of input after mixing with the old CRC + Third byte of input after mixing with the old CRC + Fourth byte of input after mixing with the old CRC + A new unfinalized checksum value + + + Even though the first four bytes of input are fed in as arguments, + should be the same value passed to this + function's caller (either or + ). This method will get inlined + into both functions, so using the same offset produces faster code. + + + Because most processors running C# have some kind of instruction-level + parallelism, the order of XOR operations can affect performance. This + ordering assumes that the assembly code generated by the just-in-time + compiler will emit a bunch of arithmetic operations for checking array + bounds. Then it opportunistically XORs a1 and a2 to keep the processor + busy while those other parts of the pipeline handle the range check + calculations. + + + + + + Interface to compute a data checksum used by checked input/output streams. + A data checksum can be updated by one byte or with a byte array. After each + update the value of the current checksum can be returned by calling + getValue. The complete checksum object can also be reset + so it can be used again with new data. + + + + + Resets the data checksum as if no update was ever called. + + + + + Returns the data checksum computed so far. + + + + + Adds one byte to the data checksum. + + + the data value to add. The high byte of the int is ignored. + + + + + Updates the data checksum with the bytes taken from the array. + + + buffer an array of bytes + + + + + Adds the byte array to the data checksum. + + + The chunk of data to add + + + + + Event arguments for scanning. + + + + + Initialise a new instance of + + The file or directory name. + + + + The file or directory name for this event. + + + + + Get set a value indicating if scanning should continue or not. + + + + + Event arguments during processing of a single file or directory. + + + + + Initialise a new instance of + + The file or directory name if known. + The number of bytes processed so far + The total number of bytes to process, 0 if not known + + + + The name for this event if known. + + + + + Get set a value indicating whether scanning should continue or not. + + + + + Get a percentage representing how much of the has been processed + + 0.0 to 100.0 percent; 0 if target is not known. + + + + The number of bytes processed so far + + + + + The number of bytes to process. + + Target may be 0 or negative if the value isnt known. + + + + Event arguments for directories. + + + + + Initialize an instance of . + + The name for this directory. + Flag value indicating if any matching files are contained in this directory. + + + + Get a value indicating if the directory contains any matching files or not. + + + + + Arguments passed when scan failures are detected. + + + + + Initialise a new instance of + + The name to apply. + The exception to use. + + + + The applicable name. + + + + + The applicable exception. + + + + + Get / set a value indicating whether scanning should continue. + + + + + Delegate invoked before starting to process a file. + + The source of the event + The event arguments. + + + + Delegate invoked during processing of a file or directory + + The source of the event + The event arguments. + + + + Delegate invoked when a file has been completely processed. + + The source of the event + The event arguments. + + + + Delegate invoked when a directory failure is detected. + + The source of the event + The event arguments. + + + + Delegate invoked when a file failure is detected. + + The source of the event + The event arguments. + + + + FileSystemScanner provides facilities scanning of files and directories. + + + + + Initialise a new instance of + + The file filter to apply when scanning. + + + + Initialise a new instance of + + The file filter to apply. + The directory filter to apply. + + + + Initialise a new instance of + + The file filter to apply. + + + + Initialise a new instance of + + The file filter to apply. + The directory filter to apply. + + + + Delegate to invoke when a directory is processed. + + + + + Delegate to invoke when a file is processed. + + + + + Delegate to invoke when processing for a file has finished. + + + + + Delegate to invoke when a directory failure is detected. + + + + + Delegate to invoke when a file failure is detected. + + + + + Raise the DirectoryFailure event. + + The directory name. + The exception detected. + + + + Raise the FileFailure event. + + The file name. + The exception detected. + + + + Raise the ProcessFile event. + + The file name. + + + + Raise the complete file event + + The file name + + + + Raise the ProcessDirectory event. + + The directory name. + Flag indicating if the directory has matching files. + + + + Scan a directory. + + The base directory to scan. + True to recurse subdirectories, false to scan a single directory. + + + + The file filter currently in use. + + + + + The directory filter currently in use. + + + + + Flag indicating if scanning should continue running. + + + + + INameTransform defines how file system names are transformed for use with archives, or vice versa. + + + + + Given a file name determine the transformed value. + + The name to transform. + The transformed file name. + + + + Given a directory name determine the transformed value. + + The name to transform. + The transformed directory name + + + + InvalidNameException is thrown for invalid names such as directory traversal paths and names with invalid characters + + + + + Initializes a new instance of the InvalidNameException class with a default error message. + + + + + Initializes a new instance of the InvalidNameException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the InvalidNameException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the InvalidNameException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Scanning filters support filtering of names. + + + + + Test a name to see if it 'matches' the filter. + + The name to test. + Returns true if the name matches the filter, false if it does not match. + + + + NameFilter is a string matching class which allows for both positive and negative + matching. + A filter is a sequence of independant regular expressions separated by semi-colons ';'. + To include a semi-colon it may be quoted as in \;. Each expression can be prefixed by a plus '+' sign or + a minus '-' sign to denote the expression is intended to include or exclude names. + If neither a plus or minus sign is found include is the default. + A given name is tested for inclusion before checking exclusions. Only names matching an include spec + and not matching an exclude spec are deemed to match the filter. + An empty filter matches any name. + + The following expression includes all name ending in '.dat' with the exception of 'dummy.dat' + "+\.dat$;-^dummy\.dat$" + + + + + Construct an instance based on the filter expression passed + + The filter expression. + + + + Test a string to see if it is a valid regular expression. + + The expression to test. + True if expression is a valid false otherwise. + + + + Test an expression to see if it is valid as a filter. + + The filter expression to test. + True if the expression is valid, false otherwise. + + + + Split a string into its component pieces + + The original string + Returns an array of values containing the individual filter elements. + + + + Convert this filter to its string equivalent. + + The string equivalent for this filter. + + + + Test a value to see if it is included by the filter. + + The value to test. + True if the value is included, false otherwise. + + + + Test a value to see if it is excluded by the filter. + + The value to test. + True if the value is excluded, false otherwise. + + + + Test a value to see if it matches the filter. + + The value to test. + True if the value matches, false otherwise. + + + + Compile this filter. + + + + + PathFilter filters directories and files using a form of regular expressions + by full path name. + See NameFilter for more detail on filtering. + + + + + Initialise a new instance of . + + The filter expression to apply. + + + + Test a name to see if it matches the filter. + + The name to test. + True if the name matches, false otherwise. + is used to get the full path before matching. + + + + ExtendedPathFilter filters based on name, file size, and the last write time of the file. + + Provides an example of how to customise filtering. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum to include. + The maximum to include. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + The minimum to include. + The maximum to include. + + + + Test a filename to see if it matches the filter. + + The filename to test. + True if the filter matches, false otherwise. + The doesnt exist + + + + Get/set the minimum size/length for a file that will match this filter. + + The default value is zero. + value is less than zero; greater than + + + + Get/set the maximum size/length for a file that will match this filter. + + The default value is + value is less than zero or less than + + + + Get/set the minimum value that will match for this filter. + + Files with a LastWrite time less than this value are excluded by the filter. + + + + Get/set the maximum value that will match for this filter. + + Files with a LastWrite time greater than this value are excluded by the filter. + + + + NameAndSizeFilter filters based on name and file size. + + A sample showing how filters might be extended. + + + + Initialise a new instance of NameAndSizeFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + + + + Test a filename to see if it matches the filter. + + The filename to test. + True if the filter matches, false otherwise. + + + + Get/set the minimum size for a file that will match this filter. + + + + + Get/set the maximum size for a file that will match this filter. + + + + + PathUtils provides simple utilities for handling paths. + + + + + Remove any path root present in the path + + A containing path information. + The path with the root removed if it was present; path otherwise. + + + + Returns a random file name in the users temporary directory, or in directory of if specified + + If specified, used as the base file name for the temporary file + Returns a temporary file name + + + + Provides simple " utilities. + + + + + Read from a ensuring all the required data is read. + + The stream to read. + The buffer to fill. + + + + + Read from a " ensuring all the required data is read. + + The stream to read data from. + The buffer to store data in. + The offset at which to begin storing data. + The number of bytes of data to store. + Required parameter is null + and or are invalid. + End of stream is encountered before all the data has been read. + + + + Read as much data as possible from a ", up to the requested number of bytes + + The stream to read data from. + The buffer to store data in. + The offset at which to begin storing data. + The number of bytes of data to store. + Required parameter is null + and or are invalid. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + The progress handler delegate to use. + The minimum between progress updates. + The source for this event. + The name to use with the event. + This form is specialised for use within #Zip to support events during archive operations. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + The progress handler delegate to use. + The minimum between progress updates. + The source for this event. + The name to use with the event. + A predetermined fixed target value to use with progress updates. + If the value is negative the target is calculated by looking at the stream. + This form is specialised for use within #Zip to support events during archive operations. + + + + Initialise an instance of + + + + + SharpZipBaseException is the base exception class for SharpZipLib. + All library exceptions are derived from this. + + NOTE: Not all exceptions thrown will be derived from this class. + A variety of other exceptions are possible for example + + + + Initializes a new instance of the SharpZipBaseException class. + + + + + Initializes a new instance of the SharpZipBaseException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the SharpZipBaseException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the SharpZipBaseException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that an error occurred during decoding of a input stream due to corrupt + data or (unintentional) library incompatibility. + + + + + Initializes a new instance of the StreamDecodingException with a generic message + + + + + Initializes a new instance of the StreamDecodingException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the StreamDecodingException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the StreamDecodingException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that the input stream could not decoded due to known library incompability or missing features + + + + + Initializes a new instance of the StreamUnsupportedException with a generic message + + + + + Initializes a new instance of the StreamUnsupportedException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the StreamUnsupportedException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the StreamUnsupportedException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that the input stream could not decoded due to the stream ending before enough data had been provided + + + + + Initializes a new instance of the UnexpectedEndOfStreamException with a generic message + + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that a value was outside of the expected range when decoding an input stream + + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable + + Name of the variable, use: nameof() + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable, + it's current value and expected range. + + Name of the variable, use: nameof() + The invalid value + Expected maximum value + Expected minimum value + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable, + it's current value and expected range. + + Name of the variable, use: nameof() + The invalid value + Expected maximum value + Expected minimum value + + + + Initializes a new instance of the ValueOutOfRangeException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + PkzipClassic embodies the classic or original encryption facilities used in Pkzip archives. + While it has been superceded by more recent and more powerful algorithms, its still in use and + is viable for preventing casual snooping + + + + + Generates new encryption keys based on given seed + + The seed value to initialise keys with. + A new key value. + + + + PkzipClassicCryptoBase provides the low level facilities for encryption + and decryption using the PkzipClassic algorithm. + + + + + Transform a single byte + + + The transformed value + + + + + Set the key schedule for encryption/decryption. + + The data use to set the keys from. + + + + Update encryption keys + + + + + Reset the internal state. + + + + + PkzipClassic CryptoTransform for encryption. + + + + + Initialise a new instance of + + The key block to use. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Cleanup internal state. + + + + + PkzipClassic CryptoTransform for decryption. + + + + + Initialise a new instance of . + + The key block to decrypt with. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Cleanup internal state. + + + + + Defines a wrapper object to access the Pkzip algorithm. + This class cannot be inherited. + + + + + Get / set the applicable block size in bits. + + The only valid block size is 8. + + + + Get an array of legal key sizes. + + + + + Generate an initial vector. + + + + + Get an array of legal block sizes. + + + + + Get / set the key value applicable. + + + + + Generate a new random key. + + + + + Create an encryptor. + + The key to use for this encryptor. + Initialisation vector for the new encryptor. + Returns a new PkzipClassic encryptor + + + + Create a decryptor. + + Keys to use for this new decryptor. + Initialisation vector for the new decryptor. + Returns a new decryptor. + + + + Encrypts and decrypts AES ZIP + + + Based on information from http://www.winzip.com/aes_info.htm + and http://www.gladman.me.uk/cryptography_technology/fileencrypt/ + + + + + Constructor + + The stream on which to perform the cryptographic transformation. + Instance of ZipAESTransform + Read or Write + + + + Reads a sequence of bytes from the current CryptoStream into buffer, + and advances the position within the stream by the number of bytes read. + + + + + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + + + + Transforms stream using AES in CTR mode + + + + + Constructor. + + Password string + Random bytes, length depends on encryption strength. + 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes. + The encryption strength, in bytes eg 16 for 128 bits. + True when creating a zip, false when reading. For the AuthCode. + + + + + Implement the ICryptoTransform method. + + + + + Returns the 2 byte password verifier + + + + + Returns the 10 byte AUTH CODE to be checked or appended immediately following the AES data stream. + + + + + Not implemented. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Gets a value indicating whether the current transform can be reused. + + + + + Cleanup internal state. + + + + + An example class to demonstrate compression and decompression of GZip streams. + + + + + Decompress the input writing + uncompressed data to the output stream + + The readable stream containing data to decompress. + The output stream to receive the decompressed data. + Both streams are closed on completion if true. + Input or output stream is null + + + + Compress the input stream sending + result data to output stream + + The readable stream to compress. + The output stream to receive the compressed data. + Both streams are closed on completion if true. + Deflate buffer size, minimum 512 + Deflate compression level, 0-9 + Input or output stream is null + Buffer Size is smaller than 512 + Compression level outside 0-9 + + + + This class contains constants used for gzip. + + + + + First GZip identification byte + + + + + Second GZip identification byte + + + + + Deflate compression method + + + + + Get the GZip specified encoding (CP-1252 if supported, otherwise ASCII) + + + + + GZip header flags + + + + + Text flag hinting that the file is in ASCII + + + + + CRC flag indicating that a CRC16 preceeds the data + + + + + Extra flag indicating that extra fields are present + + + + + Filename flag indicating that the original filename is present + + + + + Flag bit mask indicating that a comment is present + + + + + GZipException represents exceptions specific to GZip classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the GZipException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + This filter stream is used to decompress a "GZIP" format stream. + The "GZIP" format is described baseInputStream RFC 1952. + + author of the original java version : John Leuner + + This sample shows how to unzip a gzipped file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.GZip; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream inStream = new GZipInputStream(File.OpenRead(args[0]))) + using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { + byte[] buffer = new byte[4096]; + StreamUtils.Copy(inStream, outStream, buffer); + } + } + } + + + + + + CRC-32 value for uncompressed data + + + + + Flag to indicate if we've read the GZIP header yet for the current member (block of compressed data). + This is tracked per-block as the file is parsed. + + + + + Flag to indicate if at least one block in a stream with concatenated blocks was read successfully. + This allows us to exit gracefully if downstream data is not in gzip format. + + + + + Creates a GZipInputStream with the default buffer size + + + The stream to read compressed data from (baseInputStream GZIP format) + + + + + Creates a GZIPInputStream with the specified buffer size + + + The stream to read compressed data from (baseInputStream GZIP format) + + + Size of the buffer to use + + + + + Reads uncompressed data into an array of bytes + + + The buffer to read uncompressed data into + + + The offset indicating where the data should be placed + + + The number of uncompressed bytes to be read + + Returns the number of bytes actually read. + + + + Retrieves the filename header field for the block last read + + + + + + This filter stream is used to compress a stream into a "GZIP" stream. + The "GZIP" format is described in RFC 1952. + + author of the original java version : John Leuner + + This sample shows how to gzip a file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.GZip; + using ICSharpCode.SharpZipLib.Core; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream s = new GZipOutputStream(File.Create(args[0] + ".gz"))) + using (FileStream fs = File.OpenRead(args[0])) { + byte[] writeData = new byte[4096]; + Streamutils.Copy(s, fs, writeData); + } + } + } + } + + + + + + CRC-32 value for uncompressed data + + + + + Creates a GzipOutputStream with the default buffer size + + + The stream to read data (to be compressed) from + + + + + Creates a GZipOutputStream with the specified buffer size + + + The stream to read data (to be compressed) from + + + Size of the buffer to use + + + + + Sets the active compression level (0-9). The new level will be activated + immediately. + + The compression level to set. + + Level specified is not supported. + + + + + + Get the current compression level. + + The current compression level. + + + + Original filename + + + + + Write given buffer to output updating crc + + Buffer to write + Offset of first byte in buf to write + Number of bytes to write + + + + Writes remaining compressed output data to the output stream + and closes it. + + + + + Flushes the stream by ensuring the header is written, and then calling Flush + on the deflater. + + + + + Finish compression and write any footer information required to stream + + + + + This class contains constants used for LZW + + + + + Magic number found at start of LZW header: 0x1f 0x9d + + + + + Maximum number of bits per code + + + + + Mask for 'number of compression bits' + + + + + Indicates the presence of a fourth header byte + + + + + Reserved bits + + + + + Block compression: if table is full and compression rate is dropping, + clear the dictionary. + + + + + LZW file header size (in bytes) + + + + + Initial number of bits per code + + + + + LzwException represents exceptions specific to LZW classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the LzwException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + This filter stream is used to decompress a LZW format stream. + Specifically, a stream that uses the LZC compression method. + This file format is usually associated with the .Z file extension. + + See http://en.wikipedia.org/wiki/Compress + See http://wiki.wxwidgets.org/Development:_Z_File_Format + + The file header consists of 3 (or optionally 4) bytes. The first two bytes + contain the magic marker "0x1f 0x9d", followed by a byte of flags. + + Based on Java code by Ronald Tschalar, which in turn was based on the unlzw.c + code in the gzip package. + + This sample shows how to unzip a compressed file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.LZW; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream inStream = new LzwInputStream(File.OpenRead(args[0]))) + using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { + byte[] buffer = new byte[4096]; + StreamUtils.Copy(inStream, outStream, buffer); + // OR + inStream.Read(buffer, 0, buffer.Length); + // now do something with the buffer + } + } + } + + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Creates a LzwInputStream + + + The stream to read compressed data from (baseInputStream LZW format) + + + + + See + + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + + + Moves the unread data in the buffer to the beginning and resets + the pointers. + + + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Flag indicating wether this instance has been closed or not. + + + + + This exception is used to indicate that there is a problem + with a TAR archive header. + + + + + Initialise a new instance of the InvalidHeaderException class. + + + + + Initialises a new instance of the InvalidHeaderException class with a specified message. + + Message describing the exception cause. + + + + Initialise a new instance of InvalidHeaderException + + Message describing the problem. + The exception that is the cause of the current exception. + + + + Initializes a new instance of the InvalidHeaderException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Used to advise clients of 'events' while processing archives + + + + + The TarArchive class implements the concept of a + 'Tape Archive'. A tar archive is a series of entries, each of + which represents a file system object. Each entry in + the archive consists of a header block followed by 0 or more data blocks. + Directory entries consist only of the header block, and are followed by entries + for the directory's contents. File entries consist of a + header followed by the number of blocks needed to + contain the file's contents. All entries are written on + block boundaries. Blocks are 512 bytes long. + + TarArchives are instantiated in either read or write mode, + based upon whether they are instantiated with an InputStream + or an OutputStream. Once instantiated TarArchives read/write + mode can not be changed. + + There is currently no support for random access to tar archives. + However, it seems that subclassing TarArchive, and using the + TarBuffer.CurrentRecord and TarBuffer.CurrentBlock + properties, this would be rather trivial. + + + + + Client hook allowing detailed information to be reported during processing + + + + + Raises the ProgressMessage event + + The TarEntry for this event + message for this event. Null is no message + + + + Constructor for a default . + + + + + Initialise a TarArchive for input. + + The to use for input. + + + + Initialise a TarArchive for output. + + The to use for output. + + + + The InputStream based constructors create a TarArchive for the + purposes of extracting or listing a tar archive. Thus, use + these constructors when you wish to extract files from or list + the contents of an existing tar archive. + + The stream to retrieve archive data from. + Returns a new suitable for reading from. + + + + The InputStream based constructors create a TarArchive for the + purposes of extracting or listing a tar archive. Thus, use + these constructors when you wish to extract files from or list + the contents of an existing tar archive. + + The stream to retrieve archive data from. + The used for the Name fields, or null for ASCII only + Returns a new suitable for reading from. + + + + Create TarArchive for reading setting block factor + + A stream containing the tar archive contents + The blocking factor to apply + Returns a suitable for reading. + + + + Create TarArchive for reading setting block factor + + A stream containing the tar archive contents + The blocking factor to apply + The used for the Name fields, or null for ASCII only + Returns a suitable for reading. + + + + Create a TarArchive for writing to, using the default blocking factor + + The to write to + The used for the Name fields, or null for ASCII only + Returns a suitable for writing. + + + + Create a TarArchive for writing to, using the default blocking factor + + The to write to + Returns a suitable for writing. + + + + Create a tar archive for writing. + + The stream to write to + The blocking factor to use for buffering. + Returns a suitable for writing. + + + + Create a tar archive for writing. + + The stream to write to + The blocking factor to use for buffering. + The used for the Name fields, or null for ASCII only + Returns a suitable for writing. + + + + Set the flag that determines whether existing files are + kept, or overwritten during extraction. + + + If true, do not overwrite existing files. + + + + + Get/set the ascii file translation flag. If ascii file translation + is true, then the file is checked to see if it a binary file or not. + If the flag is true and the test indicates it is ascii text + file, it will be translated. The translation converts the local + operating system's concept of line ends into the UNIX line end, + '\n', which is the defacto standard for a TAR archive. This makes + text files compatible with UNIX. + + + + + Set the ascii file translation flag. + + + If true, translate ascii text files. + + + + + PathPrefix is added to entry names as they are written if the value is not null. + A slash character is appended after PathPrefix + + + + + RootPath is removed from entry names if it is found at the + beginning of the name. + + + + + Set user and group information that will be used to fill in the + tar archive's entry headers. This information is based on that available + for the linux operating system, which is not always available on other + operating systems. TarArchive allows the programmer to specify values + to be used in their place. + is set to true by this call. + + + The user id to use in the headers. + + + The user name to use in the headers. + + + The group id to use in the headers. + + + The group name to use in the headers. + + + + + Get or set a value indicating if overrides defined by SetUserInfo should be applied. + + If overrides are not applied then the values as set in each header will be used. + + + + Get the archive user id. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current user id. + + + + + Get the archive user name. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current user name. + + + + + Get the archive group id. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current group id. + + + + + Get the archive group name. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current group name. + + + + + Get the archive's record size. Tar archives are composed of + a series of RECORDS each containing a number of BLOCKS. + This allowed tar archives to match the IO characteristics of + the physical device being used. Archives are expected + to be properly "blocked". + + + The record size this archive is using. + + + + + Sets the IsStreamOwner property on the underlying stream. + Set this to false to prevent the Close of the TarArchive from closing the stream. + + + + + Close the archive. + + + + + Perform the "list" command for the archive contents. + + NOTE That this method uses the progress event to actually list + the contents. If the progress display event is not set, nothing will be listed! + + + + + Perform the "extract" command and extract the contents of the archive. + + + The destination directory into which to extract. + + + + + Perform the "extract" command and extract the contents of the archive. + + + The destination directory into which to extract. + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Extract an entry from the archive. This method assumes that the + tarIn stream has been properly set with a call to GetNextEntry(). + + + The destination directory into which to extract. + + + The TarEntry returned by tarIn.GetNextEntry(). + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Write an entry to the archive. This method will call the putNextEntry + and then write the contents of the entry, and finally call closeEntry() + for entries that are files. For directories, it will call putNextEntry(), + and then, if the recurse flag is true, process each entry that is a + child of the directory. + + + The TarEntry representing the entry to write to the archive. + + + If true, process the children of directory entries. + + + + + Write an entry to the archive. This method will call the putNextEntry + and then write the contents of the entry, and finally call closeEntry() + for entries that are files. For directories, it will call putNextEntry(), + and then, if the recurse flag is true, process each entry that is a + child of the directory. + + + The TarEntry representing the entry to write to the archive. + + + If true, process the children of directory entries. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases the unmanaged resources used by the FileStream and optionally releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Closes the archive and releases any associated resources. + + + + + Ensures that resources are freed and other cleanup operations are performed + when the garbage collector reclaims the . + + + + + The TarBuffer class implements the tar archive concept + of a buffered input stream. This concept goes back to the + days of blocked tape drives and special io devices. In the + C# universe, the only real function that this class + performs is to ensure that files have the correct "record" + size, or other tars will complain. +

+ You should never have a need to access this class directly. + TarBuffers are created by Tar IO Streams. +

+
+
+ + + The size of a block in a tar archive in bytes. + + This is 512 bytes. + + + + The number of blocks in a default record. + + + The default value is 20 blocks per record. + + + + + The size in bytes of a default record. + + + The default size is 10KB. + + + + + Get the record size for this buffer + + The record size in bytes. + This is equal to the multiplied by the + + + + Get the TAR Buffer's record size. + + The record size in bytes. + This is equal to the multiplied by the + + + + Get the Blocking factor for the buffer + + This is the number of blocks in each record. + + + + Get the TAR Buffer's block factor + + The block factor; the number of blocks per record. + + + + Construct a default TarBuffer + + + + + Create TarBuffer for reading with default BlockFactor + + Stream to buffer + A new suitable for input. + + + + Construct TarBuffer for reading inputStream setting BlockFactor + + Stream to buffer + Blocking factor to apply + A new suitable for input. + + + + Construct TarBuffer for writing with default BlockFactor + + output stream for buffer + A new suitable for output. + + + + Construct TarBuffer for writing Tar output to streams. + + Output stream to write to. + Blocking factor to apply + A new suitable for output. + + + + Initialization common to all constructors. + + + + + Determine if an archive block indicates End of Archive. End of + archive is indicated by a block that consists entirely of null bytes. + All remaining blocks for the record should also be null's + However some older tars only do a couple of null blocks (Old GNU tar for one) + and also partial records + + The data block to check. + Returns true if the block is an EOF block; false otherwise. + + + + Determine if an archive block indicates the End of an Archive has been reached. + End of archive is indicated by a block that consists entirely of null bytes. + All remaining blocks for the record should also be null's + However some older tars only do a couple of null blocks (Old GNU tar for one) + and also partial records + + The data block to check. + Returns true if the block is an EOF block; false otherwise. + + + + Skip over a block on the input stream. + + + + + Read a block from the input stream. + + + The block of data read. + + + + + Read a record from data stream. + + + false if End-Of-File, else true. + + + + + Get the current block number, within the current record, zero based. + + Block numbers are zero based values + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Get the current block number, within the current record, zero based. + + + The current zero based block number. + + + The absolute block number = (record number * block factor) + block number. + + + + + Get the current record number. + + + The current zero based record number. + + + + + Get the current record number. + + + The current zero based record number. + + + + + Write a block of data to the archive. + + + The data to write to the archive. + + + + + Write an archive record to the archive, where the record may be + inside of a larger array buffer. The buffer must be "offset plus + record size" long. + + + The buffer containing the record data to write. + + + The offset of the record data within buffer. + + + + + Write a TarBuffer record to the archive. + + + + + WriteFinalRecord writes the current record buffer to output any unwritten data is present. + + Any trailing bytes are set to zero which is by definition correct behaviour + for the end of a tar stream. + + + + Close the TarBuffer. If this is an output buffer, also flush the + current block before closing. + + + + + This class represents an entry in a Tar archive. It consists + of the entry's header, as well as the entry's File. Entries + can be instantiated in one of three ways, depending on how + they are to be used. +

+ TarEntries that are created from the header bytes read from + an archive are instantiated with the TarEntry( byte[] ) + constructor. These entries will be used when extracting from + or listing the contents of an archive. These entries have their + header filled in using the header bytes. They also set the File + to null, since they reference an archive entry not a file.

+

+ TarEntries that are created from files that are to be written + into an archive are instantiated with the CreateEntryFromFile(string) + pseudo constructor. These entries have their header filled in using + the File's information. They also keep a reference to the File + for convenience when writing entries.

+

+ Finally, TarEntries can be constructed from nothing but a name. + This allows the programmer to construct the entry by hand, for + instance when only an InputStream is available for writing to + the archive, and the header information is constructed from + other information. In this case the header fields are set to + defaults and the File is set to null.

+ +
+
+ + + Initialise a default instance of . + + + + + Construct an entry from an archive's header bytes. File is set + to null. + + + The header bytes from a tar archive entry. + + + + + Construct an entry from an archive's header bytes. File is set + to null. + + + The header bytes from a tar archive entry. + + + The used for the Name fields, or null for ASCII only + + + + + Construct a TarEntry using the header provided + + Header details for entry + + + + Clone this tar entry. + + Returns a clone of this entry. + + + + Construct an entry with only a name. + This allows the programmer to construct the entry's header "by hand". + + The name to use for the entry + Returns the newly created + + + + Construct an entry for a file. File is set to file, and the + header is constructed from information from the file. + + The file name that the entry represents. + Returns the newly created + + + + Determine if the two entries are equal. Equality is determined + by the header names being equal. + + The to compare with the current Object. + + True if the entries are equal; false if not. + + + + + Derive a Hash value for the current + + A Hash code for the current + + + + Determine if the given entry is a descendant of this entry. + Descendancy is determined by the name of the descendant + starting with this entry's name. + + + Entry to be checked as a descendent of this. + + + True if entry is a descendant of this. + + + + + Get this entry's header. + + + This entry's TarHeader. + + + + + Get/Set this entry's name. + + + + + Get/set this entry's user id. + + + + + Get/set this entry's group id. + + + + + Get/set this entry's user name. + + + + + Get/set this entry's group name. + + + + + Convenience method to set this entry's group and user ids. + + + This entry's new user id. + + + This entry's new group id. + + + + + Convenience method to set this entry's group and user names. + + + This entry's new user name. + + + This entry's new group name. + + + + + Get/Set the modification time for this entry + + + + + Get this entry's file. + + + This entry's file. + + + + + Get/set this entry's recorded file size. + + + + + Return true if this entry represents a directory, false otherwise + + + True if this entry is a directory. + + + + + Fill in a TarHeader with information from a File. + + + The TarHeader to fill in. + + + The file from which to get the header information. + + + + + Get entries for all files present in this entries directory. + If this entry doesnt represent a directory zero entries are returned. + + + An array of TarEntry's for this entry's children. + + + + + Write an entry's header information to a header buffer. + + + The tar entry header buffer to fill in. + + + + + Write an entry's header information to a header buffer. + + + The tar entry header buffer to fill in. + + + The used for the Name fields, or null for ASCII only + + + + + Convenience method that will modify an entry's name directly + in place in an entry header buffer byte array. + + + The buffer containing the entry header to modify. + + + The new name to place into the header buffer. + + + + + Convenience method that will modify an entry's name directly + in place in an entry header buffer byte array. + + + The buffer containing the entry header to modify. + + + The new name to place into the header buffer. + + + The used for the Name fields, or null for ASCII only + + + + + Fill in a TarHeader given only the entry's name. + + + The TarHeader to fill in. + + + The tar entry name. + + + + + The name of the file this entry represents or null if the entry is not based on a file. + + + + + The entry's header information. + + + + + TarException represents exceptions specific to Tar classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the TarException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Reads the extended header of a Tar stream + + + + + Creates a new . + + + + + Read bytes from + + + + + + + Returns the parsed headers as key-value strings + + + + + This class encapsulates the Tar Entry Header used in Tar Archives. + The class also holds a number of tar constants, used mostly in headers. + + + The tar format and its POSIX successor PAX have a long history which makes for compatability + issues when creating and reading files. + + This is further complicated by a large number of programs with variations on formats + One common issue is the handling of names longer than 100 characters. + GNU style long names are currently supported. + + This is the ustar (Posix 1003.1) header. + + struct header + { + char t_name[100]; // 0 Filename + char t_mode[8]; // 100 Permissions + char t_uid[8]; // 108 Numerical User ID + char t_gid[8]; // 116 Numerical Group ID + char t_size[12]; // 124 Filesize + char t_mtime[12]; // 136 st_mtime + char t_chksum[8]; // 148 Checksum + char t_typeflag; // 156 Type of File + char t_linkname[100]; // 157 Target of Links + char t_magic[6]; // 257 "ustar" or other... + char t_version[2]; // 263 Version fixed to 00 + char t_uname[32]; // 265 User Name + char t_gname[32]; // 297 Group Name + char t_devmajor[8]; // 329 Major for devices + char t_devminor[8]; // 337 Minor for devices + char t_prefix[155]; // 345 Prefix for t_name + char t_mfill[12]; // 500 Filler up to 512 + }; + + + + + The length of the name field in a header buffer. + + + + + The length of the mode field in a header buffer. + + + + + The length of the user id field in a header buffer. + + + + + The length of the group id field in a header buffer. + + + + + The length of the checksum field in a header buffer. + + + + + Offset of checksum in a header buffer. + + + + + The length of the size field in a header buffer. + + + + + The length of the magic field in a header buffer. + + + + + The length of the version field in a header buffer. + + + + + The length of the modification time field in a header buffer. + + + + + The length of the user name field in a header buffer. + + + + + The length of the group name field in a header buffer. + + + + + The length of the devices field in a header buffer. + + + + + The length of the name prefix field in a header buffer. + + + + + The "old way" of indicating a normal file. + + + + + Normal file type. + + + + + Link file type. + + + + + Symbolic link file type. + + + + + Character device file type. + + + + + Block device file type. + + + + + Directory file type. + + + + + FIFO (pipe) file type. + + + + + Contiguous file type. + + + + + Posix.1 2001 global extended header + + + + + Posix.1 2001 extended header + + + + + Solaris access control list file type + + + + + GNU dir dump file type + This is a dir entry that contains the names of files that were in the + dir at the time the dump was made + + + + + Solaris Extended Attribute File + + + + + Inode (metadata only) no file content + + + + + Identifies the next file on the tape as having a long link name + + + + + Identifies the next file on the tape as having a long name + + + + + Continuation of a file that began on another volume + + + + + For storing filenames that dont fit in the main header (old GNU) + + + + + GNU Sparse file + + + + + GNU Tape/volume header ignore on extraction + + + + + The magic tag representing a POSIX tar archive. (would be written with a trailing NULL) + + + + + The magic tag representing an old GNU tar archive where version is included in magic and overwrites it + + + + + Initialise a default TarHeader instance + + + + + Get/set the name for this tar entry. + + Thrown when attempting to set the property to null. + + + + Get the name of this entry. + + The entry's name. + + + + Get/set the entry's Unix style permission mode. + + + + + The entry's user id. + + + This is only directly relevant to unix systems. + The default is zero. + + + + + Get/set the entry's group id. + + + This is only directly relevant to linux/unix systems. + The default value is zero. + + + + + Get/set the entry's size. + + Thrown when setting the size to less than zero. + + + + Get/set the entry's modification time. + + + The modification time is only accurate to within a second. + + Thrown when setting the date time to less than 1/1/1970. + + + + Get the entry's checksum. This is only valid/updated after writing or reading an entry. + + + + + Get value of true if the header checksum is valid, false otherwise. + + + + + Get/set the entry's type flag. + + + + + The entry's link name. + + Thrown when attempting to set LinkName to null. + + + + Get/set the entry's magic tag. + + Thrown when attempting to set Magic to null. + + + + The entry's version. + + Thrown when attempting to set Version to null. + + + + The entry's user name. + + + + + Get/set the entry's group name. + + + This is only directly relevant to unix systems. + + + + + Get/set the entry's major device number. + + + + + Get/set the entry's minor device number. + + + + + Create a new that is a copy of the current instance. + + A new that is a copy of the current instance. + + + + Parse TarHeader information from a header buffer. + + + The tar entry header buffer to get information from. + + + The used for the Name field, or null for ASCII only + + + + + Parse TarHeader information from a header buffer. + + + The tar entry header buffer to get information from. + + + + + 'Write' header information to buffer provided, updating the check sum. + + output buffer for header information + + + + 'Write' header information to buffer provided, updating the check sum. + + output buffer for header information + The used for the Name field, or null for ASCII only + + + + Get a hash code for the current object. + + A hash code for the current object. + + + + Determines if this instance is equal to the specified object. + + The object to compare with. + true if the objects are equal, false otherwise. + + + + Set defaults for values used when constructing a TarHeader instance. + + Value to apply as a default for userId. + Value to apply as a default for userName. + Value to apply as a default for groupId. + Value to apply as a default for groupName. + + + + Parse an octal string from a header buffer. + + The header buffer from which to parse. + The offset into the buffer from which to parse. + The number of header bytes to parse. + The long equivalent of the octal string. + + + + Parse a name from a header buffer. + + + The header buffer from which to parse. + + + The offset into the buffer from which to parse. + + + The number of header bytes to parse. + + + The name parsed. + + + + + Parse a name from a header buffer. + + + The header buffer from which to parse. + + + The offset into the buffer from which to parse. + + + The number of header bytes to parse. + + + name encoding, or null for ASCII only + + + The name parsed. + + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + The next free index in the + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + The next free index in the + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + name encoding, or null for ASCII only + The next free index in the + + + + Add an entry name to the buffer + + + The name to add + + + The buffer to add to + + + The offset into the buffer from which to start adding + + + The number of header bytes to add + + + The index of the next free byte in the buffer + + TODO: what should be default behavior?(omit upper byte or UTF8?) + + + + Add an entry name to the buffer + + + The name to add + + + The buffer to add to + + + The offset into the buffer from which to start adding + + + The number of header bytes to add + + + + + The index of the next free byte in the buffer + + + + + Add an entry name to the buffer + + The name to add + The buffer to add to + The offset into the buffer from which to start adding + The number of header bytes to add + The index of the next free byte in the buffer + TODO: what should be default behavior?(omit upper byte or UTF8?) + + + + Add an entry name to the buffer + + The name to add + The buffer to add to + The offset into the buffer from which to start adding + The number of header bytes to add + + The index of the next free byte in the buffer + + + + Add a string to a buffer as a collection of ascii bytes. + + The string to add + The offset of the first character to add. + The buffer to add to. + The offset to start adding at. + The number of ascii characters to add. + The next free index in the buffer. + + + + Add a string to a buffer as a collection of ascii bytes. + + The string to add + The offset of the first character to add. + The buffer to add to. + The offset to start adding at. + The number of ascii characters to add. + String encoding, or null for ASCII only + The next free index in the buffer. + + + + Put an octal representation of a value into a buffer + + + the value to be converted to octal + + + buffer to store the octal string + + + The offset into the buffer where the value starts + + + The length of the octal string to create + + + The offset of the character next byte after the octal string + + + + + Put an octal or binary representation of a value into a buffer + + Value to be convert to octal + The buffer to update + The offset into the buffer to store the value + The length of the octal string. Must be 12. + Index of next byte + + + + Add the checksum integer to header buffer. + + + The header buffer to set the checksum for + The offset into the buffer for the checksum + The number of header bytes to update. + It's formatted differently from the other fields: it has 6 digits, a + null, then a space -- rather than digits, a space, then a null. + The final space is already there, from checksumming + + The modified buffer offset + + + + Compute the checksum for a tar entry header. + The checksum field must be all spaces prior to this happening + + The tar entry's header buffer. + The computed checksum. + + + + Make a checksum for a tar entry ignoring the checksum contents. + + The tar entry's header buffer. + The checksum for the buffer + + + + The TarInputStream reads a UNIX tar archive as an InputStream. + methods are provided to position at each successive entry in + the archive, and the read each entry as a normal input stream + using read(). + + + + + Construct a TarInputStream with default block factor + + stream to source data from + + + + Construct a TarInputStream with default block factor + + stream to source data from + The used for the Name fields, or null for ASCII only + + + + Construct a TarInputStream with user specified block factor + + stream to source data from + block factor to apply to archive + + + + Construct a TarInputStream with user specified block factor + + stream to source data from + block factor to apply to archive + The used for the Name fields, or null for ASCII only + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking + This property always returns false. + + + + + Gets a value indicating if the stream supports writing. + This property always returns false. + + + + + The length in bytes of the stream + + + + + Gets or sets the position within the stream. + Setting the Position is not supported and throws a NotSupportedExceptionNotSupportedException + + Any attempt to set position + + + + Flushes the baseInputStream + + + + + Set the streams position. This operation is not supported and will throw a NotSupportedException + + The offset relative to the origin to seek to. + The to start seeking from. + The new position in the stream. + Any access + + + + Sets the length of the stream + This operation is not supported and will throw a NotSupportedException + + The new stream length. + Any access + + + + Writes a block of bytes to this stream using data from a buffer. + This operation is not supported and will throw a NotSupportedException + + The buffer containing bytes to write. + The offset in the buffer of the frist byte to write. + The number of bytes to write. + Any access + + + + Writes a byte to the current position in the file stream. + This operation is not supported and will throw a NotSupportedException + + The byte value to write. + Any access + + + + Reads a byte from the current tar archive entry. + + A byte cast to an int; -1 if the at the end of the stream. + + + + Reads bytes from the current tar archive entry. + + This method is aware of the boundaries of the current + entry in the archive and will deal with them appropriately + + + The buffer into which to place bytes read. + + + The offset at which to place bytes read. + + + The number of bytes to read. + + + The number of bytes read, or 0 at end of stream/EOF. + + + + + Closes this stream. Calls the TarBuffer's close() method. + The underlying stream is closed by the TarBuffer. + + + + + Set the entry factory for this instance. + + The factory for creating new entries + + + + Get the record size being used by this stream's TarBuffer. + + + + + Get the record size being used by this stream's TarBuffer. + + + TarBuffer record size. + + + + + Get the available data that can be read from the current + entry in the archive. This does not indicate how much data + is left in the entire archive, only in the current entry. + This value is determined from the entry's size header field + and the amount of data already read from the current entry. + + + The number of available bytes for the current entry. + + + + + Skip bytes in the input buffer. This skips bytes in the + current entry's data, not the entire archive, and will + stop at the end of the current entry's data if the number + to skip extends beyond that point. + + + The number of bytes to skip. + + + + + Return a value of true if marking is supported; false otherwise. + + Currently marking is not supported, the return value is always false. + + + + Since we do not support marking just yet, we do nothing. + + + The limit to mark. + + + + + Since we do not support marking just yet, we do nothing. + + + + + Get the next entry in this tar archive. This will skip + over any remaining data in the current entry, if there + is one, and place the input stream at the header of the + next entry, and read the header and instantiate a new + TarEntry from the header bytes and return that entry. + If there are no more entries in the archive, null will + be returned to indicate that the end of the archive has + been reached. + + + The next TarEntry in the archive, or null. + + + + + Copies the contents of the current tar archive entry directly into + an output stream. + + + The OutputStream into which to write the entry's data. + + + + + This interface is provided, along with the method , to allow + the programmer to have their own subclass instantiated for the + entries return from . + + + + + Create an entry based on name alone + + + Name of the new EntryPointNotFoundException to create + + created TarEntry or descendant class + + + + Create an instance based on an actual file + + + Name of file to represent in the entry + + + Created TarEntry or descendant class + + + + + Create a tar entry based on the header information passed + + + Buffer containing header information to create an entry from. + + + Created TarEntry or descendant class + + + + + Standard entry factory class creating instances of the class TarEntry + + + + + Construct standard entry factory class with ASCII name encoding + + + + + Construct standard entry factory with name encoding + + The used for the Name fields, or null for ASCII only + + + + Create a based on named + + The name to use for the entry + A new + + + + Create a tar entry with details obtained from file + + The name of the file to retrieve details from. + A new + + + + Create an entry based on details in header + + The buffer containing entry details. + A new + + + + Flag set when last block has been read + + + + + Size of this entry as recorded in header + + + + + Number of bytes read for this entry so far + + + + + Buffer used with calls to Read() + + + + + Working buffer + + + + + Current entry being read + + + + + Factory used to create TarEntry or descendant class instance + + + + + Stream used as the source of input data. + + + + + The TarOutputStream writes a UNIX tar archive as an OutputStream. + Methods are provided to put entries, and then write their contents + by writing to this stream using write(). + + public + + + + Construct TarOutputStream using default block factor + + stream to write to + + + + Construct TarOutputStream using default block factor + + stream to write to + The used for the Name fields, or null for ASCII only + + + + Construct TarOutputStream with user specified block factor + + stream to write to + blocking factor + + + + Construct TarOutputStream with user specified block factor + + stream to write to + blocking factor + The used for the Name fields, or null for ASCII only + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + true if the stream supports reading; otherwise, false. + + + + + true if the stream supports seeking; otherwise, false. + + + + + true if stream supports writing; otherwise, false. + + + + + length of stream in bytes + + + + + gets or sets the position within the current stream. + + + + + set the position within the current stream + + The offset relative to the to seek to + The to seek from. + The new position in the stream. + + + + Set the length of the current stream + + The new stream length. + + + + Read a byte from the stream and advance the position within the stream + by one byte or returns -1 if at the end of the stream. + + The byte value or -1 if at end of stream + + + + read bytes from the current stream and advance the position within the + stream by the number of bytes read. + + The buffer to store read bytes in. + The index into the buffer to being storing bytes at. + The desired number of bytes to read. + The total number of bytes read, or zero if at the end of the stream. + The number of bytes may be less than the count + requested if data is not available. + + + + All buffered data is written to destination + + + + + Ends the TAR archive without closing the underlying OutputStream. + The result is that the EOF block of nulls is written. + + + + + Ends the TAR archive and closes the underlying OutputStream. + + This means that Finish() is called followed by calling the + TarBuffer's Close(). + + + + Get the record size being used by this stream's TarBuffer. + + + + + Get the record size being used by this stream's TarBuffer. + + + The TarBuffer record size. + + + + + Get a value indicating whether an entry is open, requiring more data to be written. + + + + + Put an entry on the output stream. This writes the entry's + header and positions the output stream for writing + the contents of the entry. Once this method is called, the + stream is ready for calls to write() to write the entry's + contents. Once the contents are written, closeEntry() + MUST be called to ensure that all buffered data + is completely written to the output stream. + + + The TarEntry to be written to the archive. + + + + + Close an entry. This method MUST be called for all file + entries that contain data. The reason is that we must + buffer data written to the stream in order to satisfy + the buffer's block based writes. Thus, there may be + data fragments still being assembled that must be written + to the output stream before this entry is closed and the + next entry written. + + + + + Writes a byte to the current tar archive entry. + This method simply calls Write(byte[], int, int). + + + The byte to be written. + + + + + Writes bytes to the current tar archive entry. This method + is aware of the current entry and will throw an exception if + you attempt to write bytes past the length specified for the + current entry. The method is also (painfully) aware of the + record buffering required by TarBuffer, and manages buffers + that are not a multiple of recordsize in length, including + assembling records from small buffers. + + + The buffer to write to the archive. + + + The offset in the buffer from which to get bytes. + + + The number of bytes to write. + + + + + Write an EOF (end of archive) block to the tar archive. + The end of the archive is indicated by two blocks consisting entirely of zero bytes. + + + + + bytes written for this entry so far + + + + + current 'Assembly' buffer length + + + + + Flag indicating whether this instance has been closed or not. + + + + + Size for the current entry + + + + + single block working buffer + + + + + 'Assembly' buffer used to assemble data before writing + + + + + TarBuffer used to provide correct blocking factor + + + + + the destination stream for the archive contents + + + + + name encoding + + + + + This is the Deflater class. The deflater class compresses input + with the deflate algorithm described in RFC 1951. It has several + compression levels and three different strategies described below. + + This class is not thread safe. This is inherent in the API, due + to the split of deflate and setInput. + + author of the original java version : Jochen Hoenicke + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Compression Level as an enum for safer use + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Creates a new deflater with default compression level. + + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION, or DEFAULT_COMPRESSION. + + if lvl is out of range. + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION. + + + true, if we should suppress the Zlib/RFC1950 header at the + beginning and the adler checksum at the end of the output. This is + useful for the GZIP/PKZIP formats. + + if lvl is out of range. + + + + Resets the deflater. The deflater acts afterwards as if it was + just created with the same compression level and strategy as it + had before. + + + + + Gets the current adler checksum of the data that was processed so far. + + + + + Gets the number of input bytes processed so far. + + + + + Gets the number of output bytes so far. + + + + + Flushes the current input block. Further calls to deflate() will + produce enough output to inflate everything in the current input + block. This is not part of Sun's JDK so I have made it package + private. It is used by DeflaterOutputStream to implement + flush(). + + + + + Finishes the deflater with the current input block. It is an error + to give more input after this method was called. This method must + be called to force all bytes to be flushed. + + + + + Returns true if the stream was finished and no more output bytes + are available. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method can also return true when the stream + was finished. + + + + + Sets the data which should be compressed next. This should be only + called when needsInput indicates that more input is needed. + If you call setInput when needsInput() returns false, the + previous input that is still pending will be thrown away. + The given byte array should not be changed, before needsInput() returns + true again. + This call is equivalent to setInput(input, 0, input.length). + + + the buffer containing the input data. + + + if the buffer was finished() or ended(). + + + + + Sets the data which should be compressed next. This should be + only called when needsInput indicates that more input is needed. + The given byte array should not be changed, before needsInput() returns + true again. + + + the buffer containing the input data. + + + the start of the data. + + + the number of data bytes of input. + + + if the buffer was Finish()ed or if previous input is still pending. + + + + + Sets the compression level. There is no guarantee of the exact + position of the change, but if you call this when needsInput is + true the change of compression level will occur somewhere near + before the end of the so far given input. + + + the new compression level. + + + + + Get current compression level + + Returns the current compression level + + + + Sets the compression strategy. Strategy is one of + DEFAULT_STRATEGY, HUFFMAN_ONLY and FILTERED. For the exact + position where the strategy is changed, the same as for + SetLevel() applies. + + + The new compression strategy. + + + + + Deflates the current input block with to the given array. + + + The buffer where compressed data is stored + + + The number of compressed bytes added to the output, or 0 if either + IsNeedingInput() or IsFinished returns true or length is zero. + + + + + Deflates the current input block to the given array. + + + Buffer to store the compressed data. + + + Offset into the output array. + + + The maximum number of bytes that may be stored. + + + The number of compressed bytes added to the output, or 0 if either + needsInput() or finished() returns true or length is zero. + + + If Finish() was previously called. + + + If offset or length don't match the array length. + + + + + Sets the dictionary which should be used in the deflate process. + This call is equivalent to setDictionary(dict, 0, dict.Length). + + + the dictionary. + + + if SetInput () or Deflate () were already called or another dictionary was already set. + + + + + Sets the dictionary which should be used in the deflate process. + The dictionary is a byte array containing strings that are + likely to occur in the data which should be compressed. The + dictionary is not stored in the compressed output, only a + checksum. To decompress the output you need to supply the same + dictionary again. + + + The dictionary data + + + The index where dictionary information commences. + + + The number of bytes in the dictionary. + + + If SetInput () or Deflate() were already called or another dictionary was already set. + + + + + Compression level. + + + + + If true no Zlib/RFC1950 headers or footers are generated + + + + + The current state. + + + + + The total bytes of output written. + + + + + The pending output. + + + + + The deflater engine. + + + + + This class contains constants used for deflation. + + + + + Set to true to enable debugging + + + + + Written to Zip file to identify a stored block + + + + + Identifies static tree in Zip file + + + + + Identifies dynamic tree in Zip file + + + + + Header flag indicating a preset dictionary for deflation + + + + + Sets internal buffer sizes for Huffman encoding + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Strategies for deflater + + + + + The default strategy + + + + + This strategy will only allow longer string repetitions. It is + useful for random data with a small character set. + + + + + This strategy will not look for string repetitions at all. It + only encodes with Huffman trees (which means, that more common + characters get a smaller encoding. + + + + + Low level compression engine for deflate algorithm which uses a 32K sliding window + with secondary compression from Huffman/Shannon-Fano codes. + + + + + Construct instance with pending buffer + Adler calculation will be performed + + + Pending buffer to use + + + + + Construct instance with pending buffer + + + Pending buffer to use + + + If no adler calculation should be performed + + + + + Deflate drives actual compression of data + + True to flush input buffers + Finish deflation with the current input. + Returns true if progress has been made. + + + + Sets input data to be deflated. Should only be called when NeedsInput() + returns true + + The buffer containing input data. + The offset of the first byte of data. + The number of bytes of data to use as input. + + + + Determines if more input is needed. + + Return true if input is needed via SetInput + + + + Set compression dictionary + + The buffer containing the dictionary data + The offset in the buffer for the first byte of data + The length of the dictionary data. + + + + Reset internal state + + + + + Reset Adler checksum + + + + + Get current value of Adler checksum + + + + + Total data processed + + + + + Get/set the deflate strategy + + + + + Set the deflate level (0-9) + + The value to set the level to. + + + + Fill the window + + + + + Inserts the current string in the head hash and returns the previous + value for this hash. + + The previous hash value + + + + Find the best (longest) string in the window matching the + string starting at strstart. + + Preconditions: + + strstart + DeflaterConstants.MAX_MATCH <= window.length. + + + True if a match greater than the minimum length is found + + + + Hashtable, hashing three characters to an index for window, so + that window[index]..window[index+2] have this hash code. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + prev[index & WMASK] points to the previous index that has the + same hash code as the string starting at index. This way + entries with the same hash code are in a linked list. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + Points to the current character in the window. + + + + + lookahead is the number of characters starting at strstart in + window that are valid. + So window[strstart] until window[strstart+lookahead-1] are valid + characters. + + + + + This array contains the part of the uncompressed stream that + is of relevance. The current character is indexed by strstart. + + + + + The current compression function. + + + + + The input data for compression. + + + + + The total bytes of input read. + + + + + The offset into inputBuf, where input data starts. + + + + + The end offset of the input data. + + + + + The adler checksum + + + + + This is the DeflaterHuffman class. + + This class is not thread safe. This is inherent in the API, due + to the split of Deflate and SetInput. + + author of the original java version : Jochen Hoenicke + + + + + Resets the internal state of the tree + + + + + Check that all frequencies are zero + + + At least one frequency is non-zero + + + + + Set static codes and length + + new codes + length for new codes + + + + Build dynamic codes and lengths + + + + + Get encoded length + + Encoded length, the sum of frequencies * lengths + + + + Scan a literal or distance tree to determine the frequencies of the codes + in the bit length tree. + + + + + Write tree values + + Tree to write + + + + Pending buffer to use + + + + + Construct instance with pending buffer + + Pending buffer to use + + + + Reset internal state + + + + + Write all trees to pending buffer + + The number/rank of treecodes to send. + + + + Compress current buffer writing data to pending buffer + + + + + Flush block to output with no compression + + Data to write + Index of first byte to write + Count of bytes to write + True if this is the last block + + + + Flush block to output with compression + + Data to flush + Index of first byte to flush + Count of bytes to flush + True if this is the last block + + + + Get value indicating if internal buffer is full + + true if buffer is full + + + + Add literal to buffer + + Literal value to add to buffer. + Value indicating internal buffer is full + + + + Add distance code and length to literal and distance trees + + Distance code + Length + Value indicating if internal buffer is full + + + + Reverse the bits of a 16 bit value. + + Value to reverse bits + Value with bits reversed + + + + This class stores the pending output of the Deflater. + + author of the original java version : Jochen Hoenicke + + + + + Construct instance with default buffer size + + + + + Inflater is used to decompress data that has been compressed according + to the "deflate" standard described in rfc1951. + + By default Zlib (rfc1950) headers and footers are expected in the input. + You can use constructor public Inflater(bool noHeader) passing true + if there is no Zlib header information + + The usage is as following. First you have to set some input with + SetInput(), then Inflate() it. If inflate doesn't + inflate any bytes there may be three reasons: +
    +
  • IsNeedingInput() returns true because the input buffer is empty. + You have to provide more input with SetInput(). + NOTE: IsNeedingInput() also returns true when, the stream is finished. +
  • +
  • IsNeedingDictionary() returns true, you have to provide a preset + dictionary with SetDictionary().
  • +
  • IsFinished returns true, the inflater has finished.
  • +
+ Once the first output byte is produced, a dictionary will not be + needed at a later stage. + + author of the original java version : John Leuner, Jochen Hoenicke +
+
+ + + Copy lengths for literal codes 257..285 + + + + + Extra bits for literal codes 257..285 + + + + + Copy offsets for distance codes 0..29 + + + + + Extra bits for distance codes + + + + + These are the possible states for an inflater + + + + + This variable contains the current state. + + + + + The adler checksum of the dictionary or of the decompressed + stream, as it is written in the header resp. footer of the + compressed stream. + Only valid if mode is DECODE_DICT or DECODE_CHKSUM. + + + + + The number of bits needed to complete the current state. This + is valid, if mode is DECODE_DICT, DECODE_CHKSUM, + DECODE_HUFFMAN_LENBITS or DECODE_HUFFMAN_DISTBITS. + + + + + True, if the last block flag was set in the last block of the + inflated stream. This means that the stream ends after the + current block. + + + + + The total number of inflated bytes. + + + + + The total number of bytes set with setInput(). This is not the + value returned by the TotalIn property, since this also includes the + unprocessed input. + + + + + This variable stores the noHeader flag that was given to the constructor. + True means, that the inflated stream doesn't contain a Zlib header or + footer. + + + + + Creates a new inflater or RFC1951 decompressor + RFC1950/Zlib headers and footers will be expected in the input data + + + + + Creates a new inflater. + + + True if no RFC1950/Zlib header and footer fields are expected in the input data + + This is used for GZIPed/Zipped input. + + For compatibility with + Sun JDK you should provide one byte of input more than needed in + this case. + + + + + Resets the inflater so that a new stream can be decompressed. All + pending input and output will be discarded. + + + + + Decodes a zlib/RFC1950 header. + + + False if more input is needed. + + + The header is invalid. + + + + + Decodes the dictionary checksum after the deflate header. + + + False if more input is needed. + + + + + Decodes the huffman encoded symbols in the input stream. + + + false if more input is needed, true if output window is + full or the current block ends. + + + if deflated stream is invalid. + + + + + Decodes the adler checksum after the deflate stream. + + + false if more input is needed. + + + If checksum doesn't match. + + + + + Decodes the deflated stream. + + + false if more input is needed, or if finished. + + + if deflated stream is invalid. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + The index into buffer where the dictionary starts. + + + The number of bytes in the dictionary. + + + No dictionary is needed. + + + The adler checksum for the buffer is invalid + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + the input. + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + The source of input data + + + The index into buffer where the input starts. + + + The number of bytes of input to use. + + + No input is needed. + + + The index and/or count are wrong. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether IsNeedingDictionary(), + IsNeedingInput() or IsFinished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + The number of bytes written to the buffer, 0 if no further + output can be produced. + + + if buffer has length 0. + + + if deflated stream is invalid. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether needsDictionary(), + needsInput() or finished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + the offset in buffer where storing starts. + + + the maximum number of bytes to output. + + + the number of bytes written to the buffer, 0 if no further output can be produced. + + + if count is less than 0. + + + if the index and / or count are wrong. + + + if deflated stream is invalid. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method also returns true when the stream is finished. + + + + + Returns true, if a preset dictionary is needed to inflate the input. + + + + + Returns true, if the inflater has finished. This means, that no + input is needed and no output can be produced. + + + + + Gets the adler checksum. This is either the checksum of all + uncompressed bytes returned by inflate(), or if needsDictionary() + returns true (and thus no output was yet produced) this is the + adler checksum of the expected dictionary. + + + the adler checksum. + + + + + Gets the total number of output bytes returned by Inflate(). + + + the total number of output bytes. + + + + + Gets the total number of processed compressed input bytes. + + + The total number of bytes of processed input bytes. + + + + + Gets the number of unprocessed input bytes. Useful, if the end of the + stream is reached and you want to further process the bytes after + the deflate stream. + + + The number of bytes of the input which have not been processed. + + + + + Continue decoding header from until more bits are needed or decoding has been completed + + Returns whether decoding could be completed + + + + Get literal/length huffman tree, must not be used before has returned true + + If hader has not been successfully read by the state machine + + + + Get distance huffman tree, must not be used before has returned true + + If hader has not been successfully read by the state machine + + + + Huffman tree used for inflation + + + + + Literal length tree + + + + + Distance tree + + + + + Constructs a Huffman tree from the array of code lengths. + + + the array of code lengths + + + + + Reads the next symbol from input. The symbol is encoded using the + huffman tree. + + + input the input source. + + + the next symbol, or -1 if not enough input is available. + + + + + This class is general purpose class for writing data to a buffer. + + It allows you to write bits as well as bytes + Based on DeflaterPending.java + + author of the original java version : Jochen Hoenicke + + + + + Internal work buffer + + + + + construct instance using default buffer size of 4096 + + + + + construct instance using specified buffer size + + + size to use for internal buffer + + + + + Clear internal state/buffers + + + + + Write a byte to buffer + + + The value to write + + + + + Write a short value to buffer LSB first + + + The value to write. + + + + + write an integer LSB first + + The value to write. + + + + Write a block of data to buffer + + data to write + offset of first byte to write + number of bytes to write + + + + The number of bits written to the buffer + + + + + Align internal buffer on a byte boundary + + + + + Write bits to internal buffer + + source of bits + number of bits to write + + + + Write a short value to internal buffer most significant byte first + + value to write + + + + Indicates if buffer has been flushed + + + + + Flushes the pending buffer into the given output array. If the + output array is to small, only a partial flush is done. + + The output array. + The offset into output array. + The maximum number of bytes to store. + The number of bytes flushed. + + + + Convert internal buffer to byte array. + Buffer is empty on completion + + + The internal buffer contents converted to a byte array. + + + + + A special stream deflating or compressing the bytes that are + written to it. It uses a Deflater to perform actual deflating.
+ Authors of the original java version : Tom Tromey, Jochen Hoenicke +
+
+ + + Creates a new DeflaterOutputStream with a default Deflater and default buffer size. + + + the output stream where deflated output should be written. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + default buffer size. + + + the output stream where deflated output should be written. + + + the underlying deflater. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + buffer size. + + + The output stream where deflated output is written. + + + The underlying deflater to use + + + The buffer size in bytes to use when deflating (minimum value 512) + + + bufsize is less than or equal to zero. + + + baseOutputStream does not support writing + + + deflater instance is null + + + + + Finishes the stream by calling finish() on the deflater. + + + Not all input is deflated + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Allows client to determine if an entry can be patched after its added + + + + + The CryptoTransform currently being used to encrypt the compressed data. + + + + + Returns the 10 byte AUTH CODE to be appended immediately following the AES data stream. + + + + + Encrypt a block of data + + + Data to encrypt. NOTE the original contents of the buffer are lost + + + Offset of first byte in buffer to encrypt + + + Number of bytes in buffer to encrypt + + + + + Deflates everything in the input buffers. This will call + def.deflate() until all bytes from the input buffers + are processed. + + + + + Gets value indicating stream can be read from + + + + + Gets a value indicating if seeking is supported for this stream + This property always returns false + + + + + Get value indicating if this stream supports writing + + + + + Get current length of stream + + + + + Gets the current position within the stream. + + Any attempt to set position + + + + Sets the current position of this stream to the given value. Not supported by this class! + + The offset relative to the to seek. + The to seek from. + The new position in the stream. + Any access + + + + Sets the length of this stream to the given value. Not supported by this class! + + The new stream length. + Any access + + + + Read a byte from stream advancing position by one + + The byte read cast to an int. THe value is -1 if at the end of the stream. + Any access + + + + Read a block of bytes from stream + + The buffer to store read data in. + The offset to start storing at. + The maximum number of bytes to read. + The actual number of bytes read. Zero if end of stream is detected. + Any access + + + + Flushes the stream by calling Flush on the deflater and then + on the underlying stream. This ensures that all bytes are flushed. + + + + + Calls and closes the underlying + stream when is true. + + + + + Get the Auth code for AES encrypted entries + + + + + Writes a single byte to the compressed output stream. + + + The byte value. + + + + + Writes bytes from an array to the compressed stream. + + + The byte array + + + The offset into the byte array where to start. + + + The number of bytes to write. + + + + + This buffer is used temporarily to retrieve the bytes from the + deflater and write them to the underlying output stream. + + + + + The deflater which is used to deflate the stream. + + + + + Base stream the deflater depends on. + + + + + An input buffer customised for use by + + + The buffer supports decryption of incoming data. + + + + + Initialise a new instance of with a default buffer size + + The stream to buffer. + + + + Initialise a new instance of + + The stream to buffer. + The size to use for the buffer + A minimum buffer size of 1KB is permitted. Lower sizes are treated as 1KB. + + + + Get the length of bytes in the + + + + + Get the contents of the raw data buffer. + + This may contain encrypted data. + + + + Get the number of useable bytes in + + + + + Get the contents of the clear text buffer. + + + + + Get/set the number of bytes available + + + + + Call passing the current clear text buffer contents. + + The inflater to set input for. + + + + Fill the buffer from the underlying input stream. + + + + + Read a buffer directly from the input stream + + The buffer to fill + Returns the number of bytes read. + + + + Read a buffer directly from the input stream + + The buffer to read into + The offset to start reading data into. + The number of bytes to read. + Returns the number of bytes read. + + + + Read clear text data from the input stream. + + The buffer to add data to. + The offset to start adding data at. + The number of bytes to read. + Returns the number of bytes actually read. + + + + Read a from the input stream. + + Returns the byte read. + + + + Read an in little endian byte order. + + The short value read case to an int. + + + + Read an in little endian byte order. + + The int value read. + + + + Read a in little endian byte order. + + The long value read. + + + + Get/set the to apply to any data. + + Set this value to null to have no transform applied. + + + + This filter stream is used to decompress data compressed using the "deflate" + format. The "deflate" format is described in RFC 1951. + + This stream may form the basis for other decompression filters, such + as the GZipInputStream. + + Author of the original java version : John Leuner. + + + + + Create an InflaterInputStream with the default decompressor + and a default buffer size of 4KB. + + + The InputStream to read bytes from + + + + + Create an InflaterInputStream with the specified decompressor + and a default buffer size of 4KB. + + + The source of input data + + + The decompressor used to decompress data read from baseInputStream + + + + + Create an InflaterInputStream with the specified decompressor + and the specified buffer size. + + + The InputStream to read bytes from + + + The decompressor to use + + + Size of the buffer to use + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Skip specified number of bytes of uncompressed data + + + Number of bytes to skip + + + The number of bytes skipped, zero if the end of + stream has been reached + + + The number of bytes to skip is less than or equal to zero. + + + + + Clear any cryptographic state. + + + + + Returns 0 once the end of the stream (EOF) has been reached. + Otherwise returns 1. + + + + + Fills the buffer with more data to decompress. + + + Stream ends early + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + Inflater needs a dictionary + + + + + Decompressor for this stream + + + + + Input buffer for this stream. + + + + + Base stream the inflater reads from. + + + + + The compressed size + + + + + Flag indicating whether this instance has been closed or not. + + + + + Contains the output from the Inflation process. + We need to have a window so that we can refer backwards into the output stream + to repeat stuff.
+ Author of the original java version : John Leuner +
+
+ + + Write a byte to this output window + + value to write + + if window is full + + + + + Append a byte pattern already in the window itself + + length of pattern to copy + distance from end of window pattern occurs + + If the repeated data overflows the window + + + + + Copy from input manipulator to internal window + + source of data + length of data to copy + the number of bytes copied + + + + Copy dictionary to window + + source dictionary + offset of start in source dictionary + length of dictionary + + If window isnt empty + + + + + Get remaining unfilled space in window + + Number of bytes left in window + + + + Get bytes available for output in window + + Number of bytes filled + + + + Copy contents of window to output + + buffer to copy to + offset to start at + number of bytes to count + The number of bytes copied + + If a window underflow occurs + + + + + Reset by clearing window so GetAvailable returns 0 + + + + + This class allows us to retrieve a specified number of bits from + the input buffer, as well as copy big byte blocks. + + It uses an int buffer to store up to 31 bits for direct + manipulation. This guarantees that we can get at least 16 bits, + but we only need at most 15, so this is all safe. + + There are some optimizations in this class, for example, you must + never peek more than 8 bits more than needed, and you must first + peek bits before you may drop them. This is not a general purpose + class but optimized for the behaviour of the Inflater. + + authors of the original java version : John Leuner, Jochen Hoenicke + + + + + Get the next sequence of bits but don't increase input pointer. bitCount must be + less or equal 16 and if this call succeeds, you must drop + at least n - 8 bits in the next call. + + The number of bits to peek. + + the value of the bits, or -1 if not enough bits available. */ + + + + + Tries to grab the next bits from the input and + sets to the value, adding . + + true if enough bits could be read, otherwise false + + + + Tries to grab the next bits from the input and + sets of to the value. + + true if enough bits could be read, otherwise false + + + + Drops the next n bits from the input. You should have called PeekBits + with a bigger or equal n before, to make sure that enough bits are in + the bit buffer. + + The number of bits to drop. + + + + Gets the next n bits and increases input pointer. This is equivalent + to followed by , except for correct error handling. + + The number of bits to retrieve. + + the value of the bits, or -1 if not enough bits available. + + + + + Gets the number of bits available in the bit buffer. This must be + only called when a previous PeekBits() returned -1. + + + the number of bits available. + + + + + Gets the number of bytes available. + + + The number of bytes available. + + + + + Skips to the next byte boundary. + + + + + Returns true when SetInput can be called + + + + + Copies bytes from input buffer to output buffer starting + at output[offset]. You have to make sure, that the buffer is + byte aligned. If not enough bytes are available, copies fewer + bytes. + + + The buffer to copy bytes to. + + + The offset in the buffer at which copying starts + + + The length to copy, 0 is allowed. + + + The number of bytes copied, 0 if no bytes were available. + + + Length is less than zero + + + Bit buffer isnt byte aligned + + + + + Resets state and empties internal buffers + + + + + Add more input for consumption. + Only call when IsNeedingInput returns true + + data to be input + offset of first byte of input + number of bytes of input to add. + + + + FastZipEvents supports all events applicable to FastZip operations. + + + + + Delegate to invoke when processing directories. + + + + + Delegate to invoke when processing files. + + + + + Delegate to invoke during processing of files. + + + + + Delegate to invoke when processing for a file has been completed. + + + + + Delegate to invoke when processing directory failures. + + + + + Delegate to invoke when processing file failures. + + + + + Raise the directory failure event. + + The directory causing the failure. + The exception for this event. + A boolean indicating if execution should continue or not. + + + + Fires the file failure handler delegate. + + The file causing the failure. + The exception for this failure. + A boolean indicating if execution should continue or not. + + + + Fires the ProcessFile delegate. + + The file being processed. + A boolean indicating if execution should continue or not. + + + + Fires the delegate + + The file whose processing has been completed. + A boolean indicating if execution should continue or not. + + + + Fires the process directory delegate. + + The directory being processed. + Flag indicating if the directory has matching files as determined by the current filter. + A of true if the operation should continue; false otherwise. + + + + The minimum timespan between events. + + The minimum period of time between events. + + The default interval is three seconds. + + + + FastZip provides facilities for creating and extracting zip files. + + + + + Defines the desired handling when overwriting files during extraction. + + + + + Prompt the user to confirm overwriting + + + + + Never overwrite files. + + + + + Always overwrite files. + + + + + Initialise a default instance of . + + + + + Initialise a new instance of using the specified + + The time setting to use when creating or extracting Zip entries. + Using TimeSetting.LastAccessTime[Utc] when + creating an archive will set the file time to the moment of reading. + + + + + Initialise a new instance of using the specified + + The time to set all values for created or extracted Zip Entries. + + + + Initialise a new instance of + + The events to use during operations. + + + + Get/set a value indicating whether empty directories should be created. + + + + + Get / set the password value. + + + + + Get / set the method of encrypting entries. + + + Only applies when is set. + Defaults to ZipCrypto for backwards compatibility purposes. + + + + + Get or set the active when creating Zip files. + + + + + + Get or set the active when creating Zip files. + + + + + Gets or sets the setting for Zip64 handling when writing. + + + The default value is dynamic which is not backwards compatible with old + programs and can cause problems with XP's built in compression which cant + read Zip64 archives. However it does avoid the situation were a large file + is added and cannot be completed correctly. + NOTE: Setting the size for entries before they are added is the best solution! + By default the EntryFactory used by FastZip will set the file size. + + + + + Get/set a value indicating whether file dates and times should + be restored when extracting files from an archive. + + The default value is false. + + + + Get/set a value indicating whether file attributes should + be restored during extract operations + + + + + Get/set the Compression Level that will be used + when creating the zip + + + + + Delegate called when confirming overwriting of files. + + + + + Create a zip file. + + The name of the zip file to create. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + + + + Create a zip file/archive. + + The name of the zip file to create. + The directory to obtain files and directories from. + True to recurse directories, false for no recursion. + The file filter to apply. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + The is closed after creation. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + true to leave open after the zip has been created, false to dispose it. + + + + Create a zip file. + + The name of the zip file to create. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + true to leave open after the zip has been created, false to dispose it. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + For performing the actual file system scan + true to leave open after the zip has been created, false to dispose it. + The is closed after creation. + + + + Extract the contents of a zip file. + + The zip file to extract from. + The directory to save extracted information in. + A filter to apply to files. + + + + Extract the contents of a zip file. + + The zip file to extract from. + The directory to save extracted information in. + The style of overwriting to apply. + A delegate to invoke when confirming overwriting. + A filter to apply to files. + A filter to apply to directories. + Flag indicating whether to restore the date and time for extracted files. + Allow parent directory traversal in file paths (e.g. ../file) + + + + Extract the contents of a zip file held in a stream. + + The seekable input stream containing the zip to extract from. + The directory to save extracted information in. + The style of overwriting to apply. + A delegate to invoke when confirming overwriting. + A filter to apply to files. + A filter to apply to directories. + Flag indicating whether to restore the date and time for extracted files. + Flag indicating whether the inputStream will be closed by this method. + Allow parent directory traversal in file paths (e.g. ../file) + + + + Defines factory methods for creating new values. + + + + + Create a for a file given its name + + The name of the file to create an entry for. + Returns a file entry based on the passed. + + + + Create a for a file given its name + + The name of the file to create an entry for. + If true get details from the file system if the file exists. + Returns a file entry based on the passed. + + + + Create a for a file given its actual name and optional override name + + The name of the file to create an entry for. + An alternative name to be used for the new entry. Null if not applicable. + If true get details from the file system if the file exists. + Returns a file entry based on the passed. + + + + Create a for a directory given its name + + The name of the directory to create an entry for. + Returns a directory entry based on the passed. + + + + Create a for a directory given its name + + The name of the directory to create an entry for. + If true get details from the file system for this directory if it exists. + Returns a directory entry based on the passed. + + + + Get/set the applicable. + + + + + Get the in use. + + + + + Get the value to use when is set to , + or if not specified, the value of when the class was the initialized + + + + + WindowsNameTransform transforms names to windows compatible ones. + + + + + The maximum windows path name permitted. + + This may not valid for all windows systems - CE?, etc but I cant find the equivalent in the CLR. + + + + In this case we need Windows' invalid path characters. + Path.GetInvalidPathChars() only returns a subset invalid on all platforms. + + + + + Initialises a new instance of + + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Initialise a default instance of + + + + + Gets or sets a value containing the target directory to prefix values with. + + + + + Allow parent directory traversal in file paths (e.g. ../file) + + + + + Gets or sets a value indicating whether paths on incoming values should be removed. + + + + + Transform a Zip directory name to a windows directory name. + + The directory name to transform. + The transformed name. + + + + Transform a Zip format file name to a windows style one. + + The file name to transform. + The transformed name. + + + + Test a name to see if it is a valid name for a windows filename as extracted from a Zip archive. + + The name to test. + Returns true if the name is a valid zip name; false otherwise. + The filename isnt a true windows path in some fundamental ways like no absolute paths, no rooted paths etc. + + + + Force a name to be valid by replacing invalid characters with a fixed value + + The name to make valid + The replacement character to use for any invalid characters. + Returns a valid name + + + + Gets or set the character to replace invalid characters during transformations. + + + + + Determines how entries are tested to see if they should use Zip64 extensions or not. + + + + + Zip64 will not be forced on entries during processing. + + An entry can have this overridden if required + + + + Zip64 should always be used. + + + + + #ZipLib will determine use based on entry values when added to archive. + + + + + The kind of compression used for an entry in an archive + + + + + A direct copy of the file contents is held in the archive + + + + + Common Zip compression method using a sliding dictionary + of up to 32KB and secondary compression from Huffman/Shannon-Fano trees + + + + + An extension to deflate with a 64KB window. Not supported by #Zip currently + + + + + BZip2 compression. Not supported by #Zip. + + + + + LZMA compression. Not supported by #Zip. + + + + + PPMd compression. Not supported by #Zip. + + + + + WinZip special for AES encryption, Now supported by #Zip. + + + + + Identifies the encryption algorithm used for an entry + + + + + No encryption has been used. + + + + + Encrypted using PKZIP 2.0 or 'classic' encryption. + + + + + DES encryption has been used. + + + + + RC2 encryption has been used for encryption. + + + + + Triple DES encryption with 168 bit keys has been used for this entry. + + + + + Triple DES with 112 bit keys has been used for this entry. + + + + + AES 128 has been used for encryption. + + + + + AES 192 has been used for encryption. + + + + + AES 256 has been used for encryption. + + + + + RC2 corrected has been used for encryption. + + + + + Blowfish has been used for encryption. + + + + + Twofish has been used for encryption. + + + + + RC4 has been used for encryption. + + + + + An unknown algorithm has been used for encryption. + + + + + Defines the contents of the general bit flags field for an archive entry. + + + + + Bit 0 if set indicates that the file is encrypted + + + + + Bits 1 and 2 - Two bits defining the compression method (only for Method 6 Imploding and 8,9 Deflating) + + + + + Bit 3 if set indicates a trailing data descriptor is appended to the entry data + + + + + Bit 4 is reserved for use with method 8 for enhanced deflation + + + + + Bit 5 if set indicates the file contains Pkzip compressed patched data. + Requires version 2.7 or greater. + + + + + Bit 6 if set indicates strong encryption has been used for this entry. + + + + + Bit 7 is currently unused + + + + + Bit 8 is currently unused + + + + + Bit 9 is currently unused + + + + + Bit 10 is currently unused + + + + + Bit 11 if set indicates the filename and + comment fields for this file must be encoded using UTF-8. + + + + + Bit 12 is documented as being reserved by PKware for enhanced compression. + + + + + Bit 13 if set indicates that values in the local header are masked to hide + their actual values, and the central directory is encrypted. + + + Used when encrypting the central directory contents. + + + + + Bit 14 is documented as being reserved for use by PKware + + + + + Bit 15 is documented as being reserved for use by PKware + + + + + This class contains constants used for Zip format files + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See . + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See ZipInputStream.CanDecompressEntry. + + + + + The minimum version required to support strong encryption + + + + + The minimum version required to support strong encryption + + + + + Version indicating AES encryption + + + + + The version required for Zip64 extensions (4.5 or higher) + + + + + The version required for BZip2 compression (4.6 or higher) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of Zip64 data descriptor + + + + + Size of data descriptor + + + + + Size of data descriptor + + + + + Size of central header entry (excluding variable fields) + + + + + Size of central header entry + + + + + Size of end of central record (excluding variable fields) + + + + + Size of end of central record (excluding variable fields) + + + + + Size of 'classic' cryptographic header stored before any entry data + + + + + Size of cryptographic header stored before entry data + + + + + The size of the Zip64 central directory locator. + + + + + Signature for local entry header + + + + + Signature for local entry header + + + + + Signature for spanning entry + + + + + Signature for spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for central header + + + + + Signature for central header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central directory locator + + + + + Signature for archive extra data signature (were headers are encrypted). + + + + + Central header digital signature + + + + + Central header digital signature + + + + + End of central directory record signature + + + + + End of central directory record signature + + + + + Default encoding used for string conversion. 0 gives the default system OEM code page. + Using the default code page isnt the full solution necessarily + there are many variable factors, codepage 850 is often a good choice for + European users, however be careful about compatability. + + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + + The method of encrypting entries when creating zip archives. + + + + + No encryption will be used. + + + + + Encrypt entries with ZipCrypto. + + + + + Encrypt entries with AES 128. + + + + + Encrypt entries with AES 256. + + + + + Defines known values for the property. + + + + + Host system = MSDOS + + + + + Host system = Amiga + + + + + Host system = Open VMS + + + + + Host system = Unix + + + + + Host system = VMCms + + + + + Host system = Atari ST + + + + + Host system = OS2 + + + + + Host system = Macintosh + + + + + Host system = ZSystem + + + + + Host system = Cpm + + + + + Host system = Windows NT + + + + + Host system = MVS + + + + + Host system = VSE + + + + + Host system = Acorn RISC + + + + + Host system = VFAT + + + + + Host system = Alternate MVS + + + + + Host system = BEOS + + + + + Host system = Tandem + + + + + Host system = OS400 + + + + + Host system = OSX + + + + + Host system = WinZIP AES + + + + + This class represents an entry in a zip archive. This can be a file + or a directory + ZipFile and ZipInputStream will give you instances of this class as + information about the members in an archive. ZipOutputStream + uses an instance of this class when creating an entry in a Zip file. +
+
Author of the original java version : Jochen Hoenicke +
+
+ + + Creates a zip entry with the given name. + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with relative names only. + There are with no device names and path elements are separated by '/' characters. + + + The name passed is null + + + + + Creates a zip entry with the given name and version required to extract + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with no device names and + path elements separated by '/' characters. This is not enforced see CleanName + on how to ensure names are valid if this is desired. + + + The minimum 'feature version' required this entry + + + The name passed is null + + + + + Initializes an entry with the given name and made by information + + Name for this entry + Version and HostSystem Information + Minimum required zip feature version required to extract this entry + Compression method for this entry. + + The name passed is null + + + versionRequiredToExtract should be 0 (auto-calculate) or > 10 + + + This constructor is used by the ZipFile class when reading from the central header + It is not generally useful, use the constructor specifying the name only. + + + + + Creates a deep copy of the given zip entry. + + + The entry to copy. + + + + + Get a value indicating whether the entry has a CRC value available. + + + + + Get/Set flag indicating if entry is encrypted. + A simple helper routine to aid interpretation of flags + + This is an assistant that interprets the flags property. + + +
+ This is an assistant that interprets the flags property. + + + + Value used during password checking for PKZIP 2.0 / 'classic' encryption. + + + + + Get/Set general purpose bit flag for entry + + + General purpose bit flag
+
+ Bit 0: If set, indicates the file is encrypted
+ Bit 1-2 Only used for compression type 6 Imploding, and 8, 9 deflating
+ Imploding:
+ Bit 1 if set indicates an 8K sliding dictionary was used. If clear a 4k dictionary was used
+ Bit 2 if set indicates 3 Shannon-Fanno trees were used to encode the sliding dictionary, 2 otherwise
+
+ Deflating:
+ Bit 2 Bit 1
+ 0 0 Normal compression was used
+ 0 1 Maximum compression was used
+ 1 0 Fast compression was used
+ 1 1 Super fast compression was used
+
+ Bit 3: If set, the fields crc-32, compressed size + and uncompressed size are were not able to be written during zip file creation + The correct values are held in a data descriptor immediately following the compressed data.
+ Bit 4: Reserved for use by PKZIP for enhanced deflating
+ Bit 5: If set indicates the file contains compressed patch data
+ Bit 6: If set indicates strong encryption was used.
+ Bit 7-10: Unused or reserved
+ Bit 11: If set the name and comments for this entry are in unicode.
+ Bit 12-15: Unused or reserved
+
+ + +
+ + + Get/Set index of this entry in Zip file + + This is only valid when the entry is part of a + + + + Get/set offset for use in central header + + + + + Get/Set external file attributes as an integer. + The values of this are operating system dependent see + HostSystem for details + + + + + Get the version made by for this entry or zero if unknown. + The value / 10 indicates the major version number, and + the value mod 10 is the minor version number + + + + + Get a value indicating this entry is for a DOS/Windows system. + + + + + Test the external attributes for this to + see if the external attributes are Dos based (including WINNT and variants) + and match the values + + The attributes to test. + Returns true if the external attributes are known to be DOS/Windows + based and have the same attributes set as the value passed. + + + + Gets the compatibility information for the external file attribute + If the external file attributes are compatible with MS-DOS and can be read + by PKZIP for DOS version 2.04g then this value will be zero. Otherwise the value + will be non-zero and identify the host system on which the attributes are compatible. + + + + The values for this as defined in the Zip File format and by others are shown below. The values are somewhat + misleading in some cases as they are not all used as shown. You should consult the relevant documentation + to obtain up to date and correct information. The modified appnote by the infozip group is + particularly helpful as it documents a lot of peculiarities. The document is however a little dated. + + 0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems) + 1 - Amiga + 2 - OpenVMS + 3 - Unix + 4 - VM/CMS + 5 - Atari ST + 6 - OS/2 HPFS + 7 - Macintosh + 8 - Z-System + 9 - CP/M + 10 - Windows NTFS + 11 - MVS (OS/390 - Z/OS) + 12 - VSE + 13 - Acorn Risc + 14 - VFAT + 15 - Alternate MVS + 16 - BeOS + 17 - Tandem + 18 - OS/400 + 19 - OS/X (Darwin) + 99 - WinZip AES + remainder - unused + + + + + + Get minimum Zip feature version required to extract this entry + + + Minimum features are defined as:
+ 1.0 - Default value
+ 1.1 - File is a volume label
+ 2.0 - File is a folder/directory
+ 2.0 - File is compressed using Deflate compression
+ 2.0 - File is encrypted using traditional encryption
+ 2.1 - File is compressed using Deflate64
+ 2.5 - File is compressed using PKWARE DCL Implode
+ 2.7 - File is a patch data set
+ 4.5 - File uses Zip64 format extensions
+ 4.6 - File is compressed using BZIP2 compression
+ 5.0 - File is encrypted using DES
+ 5.0 - File is encrypted using 3DES
+ 5.0 - File is encrypted using original RC2 encryption
+ 5.0 - File is encrypted using RC4 encryption
+ 5.1 - File is encrypted using AES encryption
+ 5.1 - File is encrypted using corrected RC2 encryption
+ 5.1 - File is encrypted using corrected RC2-64 encryption
+ 6.1 - File is encrypted using non-OAEP key wrapping
+ 6.2 - Central directory encryption (not confirmed yet)
+ 6.3 - File is compressed using LZMA
+ 6.3 - File is compressed using PPMD+
+ 6.3 - File is encrypted using Blowfish
+ 6.3 - File is encrypted using Twofish
+
+ +
+ + + Get a value indicating whether this entry can be decompressed by the library. + + This is based on the and + whether the compression method is supported. + + + + Force this entry to be recorded using Zip64 extensions. + + + + + Get a value indicating whether Zip64 extensions were forced. + + A value of true if Zip64 extensions have been forced on; false if not. + + + + Gets a value indicating if the entry requires Zip64 extensions + to store the full entry values. + + A value of true if a local header requires Zip64 extensions; false if not. + + + + Get a value indicating whether the central directory entry requires Zip64 extensions to be stored. + + + + + Get/Set DosTime value. + + + The MS-DOS date format can only represent dates between 1/1/1980 and 12/31/2107. + + + + + Gets/Sets the time of last modification of the entry. + + + The property is updated to match this as far as possible. + + + + + Returns the entry name. + + + The unix naming convention is followed. + Path components in the entry should always separated by forward slashes ('/'). + Dos device names like C: should also be removed. + See the class, or + + + + + Gets/Sets the size of the uncompressed data. + + + The size or -1 if unknown. + + Setting the size before adding an entry to an archive can help + avoid compatibility problems with some archivers which don't understand Zip64 extensions. + + + + Gets/Sets the size of the compressed data. + + + The compressed entry size or -1 if unknown. + + + + + Gets/Sets the crc of the uncompressed data. + + + Crc is not in the range 0..0xffffffffL + + + The crc value or -1 if unknown. + + + + + Gets/Sets the compression method. + + + The compression method for this entry + + + + + Gets the compression method for outputting to the local or central header. + Returns same value as CompressionMethod except when AES encrypting, which + places 99 in the method and places the real method in the extra data. + + + + + Gets/Sets the extra data. + + + Extra data is longer than 64KB (0xffff) bytes. + + + Extra data or null if not set. + + + + + For AES encrypted files returns or sets the number of bits of encryption (128, 192 or 256). + When setting, only 0 (off), 128 or 256 is supported. + + + + + AES Encryption strength for storage in extra data in entry header. + 1 is 128 bit, 2 is 192 bit, 3 is 256 bit. + + + + + Returns the length of the salt, in bytes + + Key size -> Salt length: 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes. + + + + Number of extra bytes required to hold the AES Header fields (Salt, Pwd verify, AuthCode) + + File format: + Bytes | Content + ---------+--------------------------- + Variable | Salt value + 2 | Password verification value + Variable | Encrypted file data + 10 | Authentication code + + + + Number of extra bytes required to hold the encryption header fields. + + + + + Process extra data fields updating the entry based on the contents. + + True if the extra data fields should be handled + for a local header, rather than for a central header. + + + + + Gets/Sets the entry comment. + + + If comment is longer than 0xffff. + + + The comment or null if not set. + + + A comment is only available for entries when read via the class. + The class doesn't have the comment data available. + + + + + Gets a value indicating if the entry is a directory. + however. + + + A directory is determined by an entry name with a trailing slash '/'. + The external file attributes can also indicate an entry is for a directory. + Currently only dos/windows attributes are tested in this manner. + The trailing slash convention should always be followed. + + + + + Get a value of true if the entry appears to be a file; false otherwise + + + This only takes account of DOS/Windows attributes. Other operating systems are ignored. + For linux and others the result may be incorrect. + + + + + Test entry to see if data can be extracted. + + Returns true if data can be extracted for this entry; false otherwise. + + + + Creates a copy of this zip entry. + + An that is a copy of the current instance. + + + + Gets a string representation of this ZipEntry. + + A readable textual representation of this + + + + Test a compression method to see if this library + supports extracting data compressed with that method + + The compression method to test. + Returns true if the compression method is supported; false otherwise + + + + Cleans a name making it conform to Zip file conventions. + Devices names ('c:\') and UNC share names ('\\server\share') are removed + and forward slashes ('\') are converted to back slashes ('/'). + Names are made relative by trimming leading slashes which is compatible + with the ZIP naming convention. + + The name to clean + The 'cleaned' name. + + The Zip name transform class is more flexible. + + + + + General ZipEntry helper extensions + + + + + Efficiently check if a flag is set without enum un-/boxing + + + + Returns whether the flag was set + + + + Efficiently set a flag without enum un-/boxing + + + + Whether the passed flag should be set (1) or cleared (0) + + + + Basic implementation of + + + + + Defines the possible values to be used for the . + + + + + Use the recorded LastWriteTime value for the file. + + + + + Use the recorded LastWriteTimeUtc value for the file + + + + + Use the recorded CreateTime value for the file. + + + + + Use the recorded CreateTimeUtc value for the file. + + + + + Use the recorded LastAccessTime value for the file. + + + + + Use the recorded LastAccessTimeUtc value for the file. + + + + + Use a fixed value. + + The actual value used can be + specified via the constructor or + using the with the setting set + to which will use the when this class was constructed. + The property can also be used to set this value. + + + + Initialise a new instance of the class. + + A default , and the LastWriteTime for files is used. + + + + Initialise a new instance of using the specified + + The time setting to use when creating Zip entries. + + + + Initialise a new instance of using the specified + + The time to set all values to. + + + + Get / set the to be used when creating new values. + + + Setting this property to null will cause a default name transform to be used. + + + + + Get / set the in use. + + + + + Get / set the value to use when is set to + + + + + A bitmask defining the attributes to be retrieved from the actual file. + + The default is to get all possible attributes from the actual file. + + + + A bitmask defining which attributes are to be set on. + + By default no attributes are set on. + + + + Get set a value indicating whether unidoce text should be set on. + + + + + Make a new for a file. + + The name of the file to create a new entry for. + Returns a new based on the . + + + + Make a new for a file. + + The name of the file to create a new entry for. + If true entry detail is retrieved from the file system if the file exists. + Returns a new based on the . + + + + Make a new from a name. + + The name of the file to create a new entry for. + An alternative name to be used for the new entry. Null if not applicable. + If true entry detail is retrieved from the file system if the file exists. + Returns a new based on the . + + + + Make a new for a directory. + + The raw untransformed name for the new directory + Returns a new representing a directory. + + + + Make a new for a directory. + + The raw untransformed name for the new directory + If true entry detail is retrieved from the file system if the file exists. + Returns a new representing a directory. + + + + ZipException represents exceptions specific to Zip classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the ZipException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + ExtraData tagged value interface. + + + + + Get the ID for this tagged data value. + + + + + Set the contents of this instance from the data passed. + + The data to extract contents from. + The offset to begin extracting data from. + The number of bytes to extract. + + + + Get the data representing this instance. + + Returns the data for this instance. + + + + A raw binary tagged value + + + + + Initialise a new instance. + + The tag ID. + + + + Get the ID for this tagged data value. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Get /set the binary data representing this instance. + + The raw binary data representing this instance. + + + + The tag ID for this instance. + + + + + Class representing extended unix date time values. + + + + + Flags indicate which values are included in this instance. + + + + + The modification time is included + + + + + The access time is included + + + + + The create time is included. + + + + + Get the ID + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a value to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + The standard Unix time is a signed integer data type, directly encoding the Unix time number, + which is the number of seconds since 1970-01-01. + Being 32 bits means the values here cover a range of about 136 years. + The minimum representable time is 1901-12-13 20:45:52, + and the maximum representable time is 2038-01-19 03:14:07. + + + + + Get /set the Modification Time + + + + + + + Get / set the Access Time + + + + + + + Get / Set the Create Time + + + + + + + Get/set the values to include. + + + + + Class handling NT date time values. + + + + + Get the ID for this tagged data value. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a valuie to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + + NTFS filetimes are 64-bit unsigned integers, stored in Intel + (least significant byte first) byte order. They determine the + number of 1.0E-07 seconds (1/10th microseconds!) past WinNT "epoch", + which is "01-Jan-1601 00:00:00 UTC". 28 May 60056 is the upper limit + + + + + Get/set the last modification time. + + + + + Get /set the create time + + + + + Get /set the last access time. + + + + + A factory that creates tagged data instances. + + + + + Get data for a specific tag value. + + The tag ID to find. + The data to search. + The offset to begin extracting data from. + The number of bytes to extract. + The located value found, or null if not found. + + + + + A class to handle the extra data field for Zip entries + + + Extra data contains 0 or more values each prefixed by a header tag and length. + They contain zero or more bytes of actual data. + The data is held internally using a copy on write strategy. This is more efficient but + means that for extra data created by passing in data can have the values modified by the caller + in some circumstances. + + + + + Initialise a default instance. + + + + + Initialise with known extra data. + + The extra data. + + + + Get the raw extra data value + + Returns the raw byte[] extra data this instance represents. + + + + Clear the stored data. + + + + + Gets the current extra data length. + + + + + Get a read-only for the associated tag. + + The tag to locate data for. + Returns a containing tag data or null if no tag was found. + + + + Get the tagged data for a tag. + + The tag to search for. + Returns a tagged value or null if none found. + + + + Get the length of the last value found by + + This is only valid if has previously returned true. + + + + Get the index for the current read value. + + This is only valid if has previously returned true. + Initially the result will be the index of the first byte of actual data. The value is updated after calls to + , and . + + + + Get the number of bytes remaining to be read for the current value; + + + + + Find an extra data value + + The identifier for the value to find. + Returns true if the value was found; false otherwise. + + + + Add a new entry to extra data. + + The value to add. + + + + Add a new entry to extra data + + The ID for this entry. + The data to add. + If the ID already exists its contents are replaced. + + + + Start adding a new entry. + + Add data using , , , or . + The new entry is completed and actually added by calling + + + + + Add entry data added since using the ID passed. + + The identifier to use for this entry. + + + + Add a byte of data to the pending new entry. + + The byte to add. + + + + + Add data to a pending new entry. + + The data to add. + + + + + Add a short value in little endian order to the pending new entry. + + The data to add. + + + + + Add an integer value in little endian order to the pending new entry. + + The data to add. + + + + + Add a long value in little endian order to the pending new entry. + + The data to add. + + + + + Delete an extra data field. + + The identifier of the field to delete. + Returns true if the field was found and deleted. + + + + Read a long in little endian form from the last found data value + + Returns the long value read. + + + + Read an integer in little endian form from the last found data value. + + Returns the integer read. + + + + Read a short value in little endian form from the last found data value. + + Returns the short value read. + + + + Read a byte from an extra data + + The byte value read or -1 if the end of data has been reached. + + + + Skip data during reading. + + The number of bytes to skip. + + + + Internal form of that reads data at any location. + + Returns the short value read. + + + + Dispose of this instance. + + + + + Arguments used with KeysRequiredEvent + + + + + Initialise a new instance of + + The name of the file for which keys are required. + + + + Initialise a new instance of + + The name of the file for which keys are required. + The current key value. + + + + Gets the name of the file for which keys are required. + + + + + Gets or sets the key value + + + + + The strategy to apply to testing. + + + + + Find the first error only. + + + + + Find all possible errors. + + + + + The operation in progress reported by a during testing. + + TestArchive + + + + Setting up testing. + + + + + Testing an individual entries header + + + + + Testing an individual entries data + + + + + Testing an individual entry has completed. + + + + + Running miscellaneous tests + + + + + Testing is complete + + + + + Status returned by during testing. + + TestArchive + + + + Initialise a new instance of + + The this status applies to. + + + + Get the current in progress. + + + + + Get the this status is applicable to. + + + + + Get the current/last entry tested. + + + + + Get the number of errors detected so far. + + + + + Get the number of bytes tested so far for the current entry. + + + + + Get a value indicating whether the last entry test was valid. + + + + + Delegate invoked during testing if supplied indicating current progress and status. + + If the message is non-null an error has occured. If the message is null + the operation as found in status has started. + + + + The possible ways of applying updates to an archive. + + + + + Perform all updates on temporary files ensuring that the original file is saved. + + + + + Update the archive directly, which is faster but less safe. + + + + + This class represents a Zip archive. You can ask for the contained + entries, or get an input stream for a file entry. The entry is + automatically decompressed. + + You can also update the archive adding or deleting entries. + + This class is thread safe for input: You can open input streams for arbitrary + entries in different threads. +
+
Author of the original java version : Jochen Hoenicke +
+ + + using System; + using System.Text; + using System.Collections; + using System.IO; + + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + static public void Main(string[] args) + { + using (ZipFile zFile = new ZipFile(args[0])) { + Console.WriteLine("Listing of : " + zFile.Name); + Console.WriteLine(""); + Console.WriteLine("Raw Size Size Date Time Name"); + Console.WriteLine("-------- -------- -------- ------ ---------"); + foreach (ZipEntry e in zFile) { + if ( e.IsFile ) { + DateTime d = e.DateTime; + Console.WriteLine("{0, -10}{1, -10}{2} {3} {4}", e.Size, e.CompressedSize, + d.ToString("dd-MM-yy"), d.ToString("HH:mm"), + e.Name); + } + } + } + } + } + + +
+ + + Delegate for handling keys/password setting during compression/decompression. + + + + + Event handler for handling encryption keys. + + + + + Handles getting of encryption keys when required. + + The file for which encryption keys are required. + + + + Get/set the encryption key value. + + + + + Password to be used for encrypting/decrypting files. + + Set to null if no password is required. + + + + Get a value indicating whether encryption keys are currently available. + + + + + Opens a Zip file with the given name for reading. + + The name of the file to open. + The argument supplied is null. + + An i/o error occurs + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + The supplied argument is null. + + An i/o error occurs. + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + true to leave the file open when the ZipFile is disposed, false to dispose of it + The supplied argument is null. + + An i/o error occurs. + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + + An i/o error occurs + + + The stream doesn't contain a valid zip archive.
+
+ + The stream doesnt support seeking. + + + The stream argument is null. + +
+ + + Opens a Zip file reading the given . + + The to read archive data from. + true to leave the stream open when the ZipFile is disposed, false to dispose of it + + An i/o error occurs + + + The stream doesn't contain a valid zip archive.
+
+ + The stream doesnt support seeking. + + + The stream argument is null. + +
+ + + Initialises a default instance with no entries and no file storage. + + + + + Finalize this instance. + + + + + Closes the ZipFile. If the stream is owned then this also closes the underlying input stream. + Once closed, no further instance methods should be called. + + + An i/o error occurs. + + + + + Create a new whose data will be stored in a file. + + The name of the archive to create. + Returns the newly created + is null + + + + Create a new whose data will be stored on a stream. + + The stream providing data storage. + Returns the newly created + is null + doesnt support writing. + + + + Get/set a flag indicating if the underlying stream is owned by the ZipFile instance. + If the flag is true then the stream will be closed when Close is called. + + + The default value is true in all cases. + + + + + Get a value indicating whether + this archive is embedded in another file or not. + + + + + Get a value indicating that this archive is a new one. + + + + + Gets the comment for the zip file. + + + + + Gets the name of this zip file. + + + + + Gets the number of entries in this zip file. + + + The Zip file has been closed. + + + + + Get the number of entries contained in this . + + + + + Indexer property for ZipEntries + + + + + Gets an enumerator for the Zip entries in this Zip file. + + Returns an for this archive. + + The Zip file has been closed. + + + + + Return the index of the entry with a matching name + + Entry name to find + If true the comparison is case insensitive + The index position of the matching entry or -1 if not found + + The Zip file has been closed. + + + + + Searches for a zip entry in this archive with the given name. + String comparisons are case insensitive + + + The name to find. May contain directory components separated by slashes ('/'). + + + A clone of the zip entry, or null if no entry with that name exists. + + + The Zip file has been closed. + + + + + Gets an input stream for reading the given zip entry data in an uncompressed form. + Normally the should be an entry returned by GetEntry(). + + The to obtain a data for + An input containing data for this + + The ZipFile has already been closed + + + The compression method for the entry is unknown + + + The entry is not found in the ZipFile + + + + + Creates an input stream reading a zip entry + + The index of the entry to obtain an input stream for. + + An input containing data for this + + + The ZipFile has already been closed + + + The compression method for the entry is unknown + + + The entry is not found in the ZipFile + + + + + Test an archive for integrity/validity + + Perform low level data Crc check + true if all tests pass, false otherwise + Testing will terminate on the first error found. + + + + Test an archive for integrity/validity + + Perform low level data Crc check + The to apply. + The handler to call during testing. + true if all tests pass, false otherwise + The object has already been closed. + + + + Test a local header against that provided from the central directory + + + The entry to test against + + The type of tests to carry out. + The offset of the entries data in the file + + + + The kind of update to apply. + + + + + Get / set the to apply to names when updating. + + + + + Get/set the used to generate values + during updates. + + + + + Get /set the buffer size to be used when updating this zip file. + + + + + Get a value indicating an update has been started. + + + + + Get / set a value indicating how Zip64 Extension usage is determined when adding entries. + + + + + Begin updating this archive. + + The archive storage for use during the update. + The data source to utilise during updating. + ZipFile has been closed. + One of the arguments provided is null + ZipFile has been closed. + + + + Begin updating to this archive. + + The storage to use during the update. + + + + Begin updating this archive. + + + + + + + + Commit current updates, updating this archive. + + + + ZipFile has been closed. + + + + Abort updating leaving the archive unchanged. + + + + + + + Set the file comment to be recorded when the current update is commited. + + The comment to record. + ZipFile has been closed. + + + + Add a new entry to the archive. + + The name of the file to add. + The compression method to use. + Ensure Unicode text is used for name and comment for this entry. + Argument supplied is null. + ZipFile has been closed. + Compression method is not supported for creating entries. + + + + Add a new entry to the archive. + + The name of the file to add. + The compression method to use. + ZipFile has been closed. + Compression method is not supported for creating entries. + + + + Add a file to the archive. + + The name of the file to add. + Argument supplied is null. + + + + Add a file to the archive. + + The name of the file to add. + The name to use for the on the Zip file created. + Argument supplied is null. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + The compression method to use. + Compression method is not supported for creating entries. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + The compression method to use. + Ensure Unicode text is used for name and comments for this entry. + Compression method is not supported for creating entries. + + + + Add a that contains no data. + + The entry to add. + This can be used to add directories, volume labels, or empty file entries. + + + + Add a with data. + + The source of the data for this entry. + The entry to add. + This can be used to add file entries with a custom data source. + + The encryption method specified in is unsupported. + + Compression method is not supported for creating entries. + + + + Add a directory entry to the archive. + + The directory to add. + + + + Check if the specified compression method is supported for adding a new entry. + + The compression method for the new entry. + + + + Delete an entry by name + + The filename to delete + True if the entry was found and deleted; false otherwise. + + + + Delete a from the archive. + + The entry to delete. + + + + Write an unsigned short in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Write an unsigned int in little endian byte order. + + + + + Write a long in little endian byte order. + + + + + Get a raw memory buffer. + + Returns a raw memory buffer. + + + + Get the size of the source descriptor for a . + + The update to get the size for. + Whether to include the signature size + The descriptor size, zero if there isn't one. + + + + Get an output stream for the specified + + The entry to get an output stream for. + The output stream obtained for the entry. + + + + Class used to sort updates. + + + + + Compares two objects and returns a value indicating whether one is + less than, equal to or greater than the other. + + First object to compare + Second object to compare. + Compare result. + + + + Represents a pending update to a Zip file. + + + + + Copy an existing entry. + + The existing entry to copy. + + + + Get the for this update. + + This is the source or original entry. + + + + Get the that will be written to the updated/new file. + + + + + Get the command for this update. + + + + + Get the filename if any for this update. Null if none exists. + + + + + Get/set the location of the size patch for this update. + + + + + Get /set the location of the crc patch for this update. + + + + + Get/set the size calculated by offset. + Specifically, the difference between this and next entry's starting offset. + + + + + Releases the unmanaged resources used by the this instance and optionally releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Read an unsigned short in little endian byte order. + + Returns the value read. + + The stream ends prematurely + + + + + Read a uint in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Search for and read the central directory of a zip file filling the entries array. + + + An i/o error occurs. + + + The central directory is malformed or cannot be found + + + + + Locate the data for a given entry. + + + The start offset of the data. + + + The stream ends prematurely + + + The local header signature is invalid, the entry and central header file name lengths are different + or the local and entry compression methods dont match + + + + + Represents a string from a which is stored as an array of bytes. + + + + + Initialise a with a string. + + The textual string form. + + + + Initialise a using a string in its binary 'raw' form. + + + + + + Get a value indicating the original source of data for this instance. + True if the source was a string; false if the source was binary data. + + + + + Get the length of the comment when represented as raw bytes. + + + + + Get the comment in its 'raw' form as plain bytes. + + + + + Reset the comment to its initial state. + + + + + Implicit conversion of comment to a string. + + The to convert to a string. + The textual equivalent for the input value. + + + + An enumerator for Zip entries + + + + + An is a stream that you can write uncompressed data + to and flush, but cannot read, seek or do anything else to. + + + + + Gets a value indicating whether the current stream supports reading. + + + + + Write any buffered data to underlying storage. + + + + + Gets a value indicating whether the current stream supports writing. + + + + + Gets a value indicating whether the current stream supports seeking. + + + + + Get the length in bytes of the stream. + + + + + Gets or sets the position within the current stream. + + + + + Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. + + The sum of offset and count is larger than the buffer length. + Methods were called after the stream was closed. + The stream does not support reading. + buffer is null. + An I/O error occurs. + offset or count is negative. + + + + Sets the position within the current stream. + + A byte offset relative to the origin parameter. + A value of type indicating the reference point used to obtain the new position. + + The new position within the current stream. + + An I/O error occurs. + The stream does not support seeking, such as if the stream is constructed from a pipe or console output. + Methods were called after the stream was closed. + + + + Sets the length of the current stream. + + The desired length of the current stream in bytes. + The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. + An I/O error occurs. + Methods were called after the stream was closed. + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + An I/O error occurs. + The stream does not support writing. + Methods were called after the stream was closed. + buffer is null. + The sum of offset and count is greater than the buffer length. + offset or count is negative. + + + + A is an + whose data is only a part or subsection of a file. + + + + + Initialise a new instance of the class. + + The containing the underlying stream to use for IO. + The start of the partial data. + The length of the partial data. + + + + Read a byte from this stream. + + Returns the byte read or -1 on end of stream. + + + + Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. + + The sum of offset and count is larger than the buffer length. + Methods were called after the stream was closed. + The stream does not support reading. + buffer is null. + An I/O error occurs. + offset or count is negative. + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + An I/O error occurs. + The stream does not support writing. + Methods were called after the stream was closed. + buffer is null. + The sum of offset and count is greater than the buffer length. + offset or count is negative. + + + + When overridden in a derived class, sets the length of the current stream. + + The desired length of the current stream in bytes. + The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. + An I/O error occurs. + Methods were called after the stream was closed. + + + + When overridden in a derived class, sets the position within the current stream. + + A byte offset relative to the origin parameter. + A value of type indicating the reference point used to obtain the new position. + + The new position within the current stream. + + An I/O error occurs. + The stream does not support seeking, such as if the stream is constructed from a pipe or console output. + Methods were called after the stream was closed. + + + + Clears all buffers for this stream and causes any buffered data to be written to the underlying device. + + An I/O error occurs. + + + + Gets or sets the position within the current stream. + + + The current position within the stream. + An I/O error occurs. + The stream does not support seeking. + Methods were called after the stream was closed. + + + + Gets the length in bytes of the stream. + + + A long value representing the length of the stream in bytes. + A class derived from Stream does not support seeking. + Methods were called after the stream was closed. + + + + Gets a value indicating whether the current stream supports writing. + + false + true if the stream supports writing; otherwise, false. + + + + Gets a value indicating whether the current stream supports seeking. + + true + true if the stream supports seeking; otherwise, false. + + + + Gets a value indicating whether the current stream supports reading. + + true. + true if the stream supports reading; otherwise, false. + + + + Gets a value that determines whether the current stream can time out. + + + A value that determines whether the current stream can time out. + + + + Provides a static way to obtain a source of data for an entry. + + + + + Get a source of data by creating a new stream. + + Returns a to use for compression input. + Ideally a new stream is created and opened to achieve this, to avoid locking problems. + + + + Represents a source of data that can dynamically provide + multiple data sources based on the parameters passed. + + + + + Get a data source. + + The to get a source for. + The name for data if known. + Returns a to use for compression input. + Ideally a new stream is created and opened to achieve this, to avoid locking problems. + + + + Default implementation of a for use with files stored on disk. + + + + + Initialise a new instance of + + The name of the file to obtain data from. + + + + Get a providing data. + + Returns a providing data. + + + + Default implementation of for files stored on disk. + + + + + Get a providing data for an entry. + + The entry to provide data for. + The file name for data if known. + Returns a stream providing data; or null if not available + + + + Defines facilities for data storage when updating Zip Archives. + + + + + Get the to apply during updates. + + + + + Get an empty that can be used for temporary output. + + Returns a temporary output + + + + + Convert a temporary output stream to a final stream. + + The resulting final + + + + + Make a temporary copy of the original stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The current stream. + Returns a stream suitable for direct updating. + This may be the current stream passed. + + + + Dispose of this instance. + + + + + An abstract suitable for extension by inheritance. + + + + + Initializes a new instance of the class. + + The update mode. + + + + Gets a temporary output + + Returns the temporary output stream. + + + + + Converts the temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + + Make a temporary copy of a . + + The to make a copy of. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The to open for direct update. + Returns a stream suitable for direct updating. + + + + Disposes this instance. + + + + + Gets the update mode applicable. + + The update mode. + + + + An implementation suitable for hard disks. + + + + + Initializes a new instance of the class. + + The file. + The update mode. + + + + Initializes a new instance of the class. + + The file. + + + + Gets a temporary output for performing updates on. + + Returns the temporary output stream. + + + + Converts a temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + Make a temporary copy of a stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The current stream. + Returns a stream suitable for direct updating. + If the is not null this is used as is. + + + + Disposes this instance. + + + + + An implementation suitable for in memory streams. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The to use + This constructor is for testing as memory streams dont really require safe mode. + + + + Get the stream returned by if this was in fact called. + + + + + Gets the temporary output + + Returns the temporary output stream. + + + + Converts the temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + Make a temporary copy of the original stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The original source stream + Returns a stream suitable for direct updating. + If the passed is not null this is used; + otherwise a new is returned. + + + + Disposes this instance. + + + + + Holds data pertinent to a data descriptor. + + + + + Get /set the compressed size of data. + + + + + Get / set the uncompressed size of data + + + + + Get /set the crc value. + + + + + This class assists with writing/reading from Zip files. + + + + + Initialise an instance of this class. + + The name of the file to open. + + + + Initialise a new instance of . + + The stream to use. + + + + Get / set a value indicating whether the underlying stream is owned or not. + + If the stream is owned it is closed when this instance is closed. + + + + Close the stream. + + + The underlying stream is closed only if is true. + + + + + Locates a block with the desired . + + The signature to find. + Location, marking the end of block. + Minimum size of the block. + The maximum variable data. + Returns the offset of the first byte after the signature; -1 if not found + + + + Write Zip64 end of central directory records (File header and locator). + + The number of entries in the central directory. + The size of entries in the central directory. + The offset of the central directory. + + + + Write the required records to end the central directory. + + The number of entries in the directory. + The size of the entries in the directory. + The start of the central directory. + The archive comment. (This can be null). + + + + Read an unsigned short in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read an int in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read a long in little endian byte order. + + The value read. + + + + Write an unsigned short in little endian byte order. + + The value to write. + + + + Write a ushort in little endian byte order. + + The value to write. + + + + Write an int in little endian byte order. + + The value to write. + + + + Write a uint in little endian byte order. + + The value to write. + + + + Write a long in little endian byte order. + + The value to write. + + + + Write a ulong in little endian byte order. + + The value to write. + + + + Write a data descriptor. + + The entry to write a descriptor for. + Returns the number of descriptor bytes written. + + + + Read data descriptor at the end of compressed data. + + if set to true [zip64]. + The data to fill in. + Returns the number of bytes read in the descriptor. + + + + This is an InflaterInputStream that reads the files baseInputStream an zip archive + one after another. It has a special method to get the zip entry of + the next file. The zip entry contains information about the file name + size, compressed size, Crc, etc. + It includes support for Stored and Deflated entries. +
+
Author of the original java version : Jochen Hoenicke +
+ + This sample shows how to read a zip file + + using System; + using System.Text; + using System.IO; + + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + public static void Main(string[] args) + { + using ( ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) { + + ZipEntry theEntry; + const int size = 2048; + byte[] data = new byte[2048]; + + while ((theEntry = s.GetNextEntry()) != null) { + if ( entry.IsFile ) { + Console.Write("Show contents (y/n) ?"); + if (Console.ReadLine() == "y") { + while (true) { + size = s.Read(data, 0, data.Length); + if (size > 0) { + Console.Write(new ASCIIEncoding().GetString(data, 0, size)); + } else { + break; + } + } + } + } + } + } + } + } + + +
+ + + Delegate for reading bytes from a stream. + + + + + The current reader this instance. + + + + + Creates a new Zip input stream, for reading a zip archive. + + The underlying providing data. + + + + Creates a new Zip input stream, for reading a zip archive. + + The underlying providing data. + Size of the buffer. + + + + Optional password used for encryption when non-null + + A password for all encrypted entries in this + + + + Gets a value indicating if there is a current entry and it can be decompressed + + + The entry can only be decompressed if the library supports the zip features required to extract it. + See the ZipEntry Version property for more details. + + Since uses the local headers for extraction, entries with no compression combined with the + flag set, cannot be extracted as the end of the entry data cannot be deduced. + + + + + Is the compression method for the specified entry supported? + + + Uses entry.CompressionMethodForHeader so that entries of type WinZipAES will be rejected. + + the entry to check. + true if the compression method is supported, false if not. + + + + Advances to the next entry in the archive + + + The next entry in the archive or null if there are no more entries. + + + If the previous entry is still open CloseEntry is called. + + + Input stream is closed + + + Password is not set, password is invalid, compression method is invalid, + version required to extract is not supported + + + + + Read data descriptor at the end of compressed data. + + + + + Complete cleanup as the final part of closing. + + True if the crc value should be tested + + + + Closes the current zip entry and moves to the next one. + + + The stream is closed + + + The Zip stream ends early + + + + + Returns 1 if there is an entry available + Otherwise returns 0. + + + + + Returns the current size that can be read from the current entry if available + + Thrown if the entry size is not known. + Thrown if no entry is currently available. + + + + Reads a byte from the current zip entry. + + + The byte or -1 if end of stream is reached. + + + + + Handle attempts to read by throwing an . + + The destination array to store data in. + The offset at which data read should be stored. + The maximum number of bytes to read. + Returns the number of bytes actually read. + + + + Handle attempts to read from this entry by throwing an exception + + + + + Handle attempts to read from this entry by throwing an exception + + + + + Perform the initial read on an entry which may include + reading encryption headers and setting up inflation. + + The destination to fill with data read. + The offset to start reading at. + The maximum number of bytes to read. + The actual number of bytes read. + + + + Read a block of bytes from the stream. + + The destination for the bytes. + The index to start storing data. + The number of bytes to attempt to read. + Returns the number of bytes read. + Zero bytes read means end of stream. + + + + Reads a block of bytes from the current zip entry. + + + The number of bytes read (this may be less than the length requested, even before the end of stream), or 0 on end of stream. + + + An i/o error occurred. + + + The deflated stream is corrupted. + + + The stream is not open. + + + + + Closes the zip input stream + + + + + ZipNameTransform transforms names as per the Zip file naming convention. + + The use of absolute names is supported although its use is not valid + according to Zip naming conventions, and should not be used if maximum compatability is desired. + + + + Initialize a new instance of + + + + + Initialize a new instance of + + The string to trim from the front of paths if found. + + + + Static constructor. + + + + + Transform a windows directory name according to the Zip file naming conventions. + + The directory name to transform. + The transformed name. + + + + Transform a windows file name according to the Zip file naming conventions. + + The file name to transform. + The transformed name. + + + + Get/set the path prefix to be trimmed from paths if present. + + The prefix is trimmed before any conversion from + a windows path is done. + + + + Force a name to be valid by replacing invalid characters with a fixed value + + The name to force valid + The replacement character to use. + Returns a valid name + + + + Test a name to see if it is a valid name for a zip entry. + + The name to test. + If true checking is relaxed about windows file names and absolute paths. + Returns true if the name is a valid zip name; false otherwise. + Zip path names are actually in Unix format, and should only contain relative paths. + This means that any path stored should not contain a drive or + device letter, or a leading slash. All slashes should forward slashes '/'. + An empty name is valid for a file where the input comes from standard input. + A null name is not considered valid. + + + + + Test a name to see if it is a valid name for a zip entry. + + The name to test. + Returns true if the name is a valid zip name; false otherwise. + Zip path names are actually in unix format, + and should only contain relative paths if a path is present. + This means that the path stored should not contain a drive or + device letter, or a leading slash. All slashes should forward slashes '/'. + An empty name is valid where the input comes from standard input. + A null name is not considered valid. + + + + + An implementation of INameTransform that transforms entry paths as per the Zip file naming convention. + Strips path roots and puts directory separators in the correct format ('/') + + + + + Initialize a new instance of + + + + + Transform a windows directory name according to the Zip file naming conventions. + + The directory name to transform. + The transformed name. + + + + Transform a windows file name according to the Zip file naming conventions. + + The file name to transform. + The transformed name. + + + + This is a DeflaterOutputStream that writes the files into a zip + archive one after another. It has a special method to start a new + zip entry. The zip entries contains information about the file name + size, compressed size, CRC, etc. + + It includes support for Stored and Deflated entries. + This class is not thread safe. +
+
Author of the original java version : Jochen Hoenicke +
+ This sample shows how to create a zip file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + public static void Main(string[] args) + { + string[] filenames = Directory.GetFiles(args[0]); + byte[] buffer = new byte[4096]; + + using ( ZipOutputStream s = new ZipOutputStream(File.Create(args[1])) ) { + + s.SetLevel(9); // 0 - store only to 9 - means best compression + + foreach (string file in filenames) { + ZipEntry entry = new ZipEntry(file); + s.PutNextEntry(entry); + + using (FileStream fs = File.OpenRead(file)) { + StreamUtils.Copy(fs, s, buffer); + } + } + } + } + } + + +
+ + + Creates a new Zip output stream, writing a zip archive. + + + The output stream to which the archive contents are written. + + + + + Creates a new Zip output stream, writing a zip archive. + + The output stream to which the archive contents are written. + Size of the buffer to use. + + + + Gets a flag value of true if the central header has been added for this archive; false if it has not been added. + + No further entries can be added once this has been done. + + + + Set the zip file comment. + + + The comment text for the entire archive. + + + The converted comment is longer than 0xffff bytes. + + + + + Sets the compression level. The new level will be activated + immediately. + + The new compression level (1 to 9). + + Level specified is not supported. + + + + + + Get the current deflater compression level + + The current compression level + + + + Get / set a value indicating how Zip64 Extension usage is determined when adding entries. + + Older archivers may not understand Zip64 extensions. + If backwards compatability is an issue be careful when adding entries to an archive. + Setting this property to off is workable but less desirable as in those circumstances adding a file + larger then 4GB will fail. + + + + Used for transforming the names of entries added by . + Defaults to , set to null to disable transforms and use names as supplied. + + + + + Get/set the password used for encryption. + + When set to null or if the password is empty no encryption is performed + + + + Write an unsigned short in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Starts a new Zip entry. It automatically closes the previous + entry if present. + All entry elements bar name are optional, but must be correct if present. + If the compression method is stored and the output is not patchable + the compression for that entry is automatically changed to deflate level 0 + + + the entry. + + + if entry passed is null. + + + if an I/O error occured. + + + if stream was finished + + + Too many entries in the Zip file
+ Entry name is too long
+ Finish has already been called
+
+ + The Compression method specified for the entry is unsupported. + +
+ + + Closes the current entry, updating header and footer information as required + + + Invalid entry field values. + + + An I/O error occurs. + + + No entry is active. + + + + + Initializes encryption keys based on given . + + The password. + + + + Initializes encryption keys based on given password. + + + + + Writes the given buffer to the current entry. + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Archive size is invalid + No entry is active. + + + + Finishes the stream. This will write the central directory at the + end of the zip file and flush the stream. + + + This is automatically called when the stream is closed. + + + An I/O error occurs. + + + Comment exceeds the maximum length
+ Entry name exceeds the maximum length +
+
+ + + Flushes the stream by calling Flush on the deflater stream unless + the current compression method is . Then it flushes the underlying output stream. + + + + + The entries for the archive. + + + + + Used to track the crc of data added to entries. + + + + + The current entry being added. + + + + + Used to track the size of data for an entry during writing. + + + + + Offset to be recorded for each entry in the central header. + + + + + Comment for the entire archive recorded in central header. + + + + + Flag indicating that header patching is required for the current entry. + + + + + Position to patch crc + + + + + Position to patch size. + + + + + The password to use when encrypting archive entries. + + + + + This static class contains functions for encoding and decoding zip file strings + + + + Code page backing field + + The original Zip specification (https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) states + that file names should only be encoded with IBM Code Page 437 or UTF-8. + In practice, most zip apps use OEM or system encoding (typically cp437 on Windows). + Let's be good citizens and default to UTF-8 http://utf8everywhere.org/ + + + + Automatically select codepage while opening archive + see https://github.com/icsharpcode/SharpZipLib/pull/280#issuecomment-433608324 + + + + + Encoding used for string conversion. Setting this to 65001 (UTF-8) will + also set the Language encoding flag to indicate UTF-8 encoded file names. + + + + + Attempt to get the operating system default codepage, or failing that, to + the fallback code page IBM 437. + + + + + Get whether the default codepage is set to UTF-8. Setting this property to false will + set the to + + + Get OEM codepage from NetFX, which parses the NLP file with culture info table etc etc. + But sometimes it yields the special value of 1 which is nicknamed CodePageNoOEM in sources (might also mean CP_OEMCP, but Encoding puts it so). + This was observed on Ukranian and Hindu systems. + Given this value, throws an . + So replace it with , (IBM 437 which is the default code page in a default Windows installation console. + + + + + Convert a portion of a byte array to a string using + + + Data to convert to string + + + Number of bytes to convert starting from index 0 + + + data[0]..data[count - 1] converted to a string + + + + + Convert a byte array to a string using + + + Byte array to convert + + + dataconverted to a string + + + + + Convert a byte array to a string using + + The applicable general purpose bits flags + + Byte array to convert + + The number of bytes to convert. + + dataconverted to a string + + + + + Convert a byte array to a string using + + + Byte array to convert + + The applicable general purpose bits flags + + dataconverted to a string + + + + + Convert a string to a byte array using + + + String to convert to an array + + Converted array + + + + Convert a string to a byte array using + + The applicable general purpose bits flags + + String to convert to an array + + Converted array + + + diff --git a/packages/SharpZipLib.1.3.3/lib/netstandard2.1/ICSharpCode.SharpZipLib.dll b/packages/SharpZipLib.1.3.3/lib/netstandard2.1/ICSharpCode.SharpZipLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..8a743431262146737cb67b60a141effc36fec05f GIT binary patch literal 204800 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 REw@AajjP_Z3jJ?;;2&j)fwKSr literal 0 HcmV?d00001 diff --git a/packages/SharpZipLib.1.3.3/lib/netstandard2.1/ICSharpCode.SharpZipLib.pdb b/packages/SharpZipLib.1.3.3/lib/netstandard2.1/ICSharpCode.SharpZipLib.pdb new file mode 100644 index 0000000000000000000000000000000000000000..c9b506ea2d62878b283e84d6863b6405cde81c20 GIT binary patch literal 109016 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 + + + ICSharpCode.SharpZipLib + + + +

+ An example class to demonstrate compression and decompression of BZip2 streams. + + + + + Decompress the input writing + uncompressed data to the output stream + + The readable stream containing data to decompress. + The output stream to receive the decompressed data. + Both streams are closed on completion if true. + + + + Compress the input stream sending + result data to output stream + + The readable stream to compress. + The output stream to receive the compressed data. + Both streams are closed on completion if true. + Block size acts as compression level (1 to 9) with 1 giving + the lowest compression and 9 the highest. + + + + Defines internal values for both compression and decompression + + + + + Random numbers used to randomise repetitive blocks + + + + + When multiplied by compression parameter (1-9) gives the block size for compression + 9 gives the best compression but uses the most memory. + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + BZip2Exception represents exceptions specific to BZip2 classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the BZip2Exception class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + An input stream that decompresses files in the BZip2 format + + + + + Construct instance for reading from stream + + Data source + + + + Get/set flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + + + + Gets a value indicating if the stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking. + + + + + Gets a value indicating whether the current stream supports writing. + This property always returns false + + + + + Gets the length in bytes of the stream. + + + + + Gets the current position of the stream. + Setting the position is not supported and will throw a NotSupportException. + + Any attempt to set the position. + + + + Flushes the stream. + + + + + Set the streams position. This operation is not supported and will throw a NotSupportedException + + A byte offset relative to the parameter. + A value of type indicating the reference point used to obtain the new position. + The new position of the stream. + Any access + + + + Sets the length of this stream to the given value. + This operation is not supported and will throw a NotSupportedExceptionortedException + + The new length for the stream. + Any access + + + + Writes a block of bytes to this stream using data from a buffer. + This operation is not supported and will throw a NotSupportedException + + The buffer to source data from. + The offset to start obtaining data from. + The number of bytes of data to write. + Any access + + + + Writes a byte to the current position in the file stream. + This operation is not supported and will throw a NotSupportedException + + The value to write. + Any access + + + + Read a sequence of bytes and advances the read position by one byte. + + Array of bytes to store values in + Offset in array to begin storing data + The maximum number of bytes to read + The total number of bytes read into the buffer. This might be less + than the number of bytes requested if that number of bytes are not + currently available or zero if the end of the stream is reached. + + + + + Closes the stream, releasing any associated resources. + + + + + Read a byte from stream advancing position + + byte read or -1 on end of stream + + + + An output stream that compresses into the BZip2 format + including file header chars into another stream. + + + + + Construct a default output stream with maximum block size + + The stream to write BZip data onto. + + + + Initialise a new instance of the + for the specified stream, using the given blocksize. + + The stream to write compressed data to. + The block size to use. + + Valid block sizes are in the range 1..9, with 1 giving + the lowest compression and 9 the highest. + + + + + Ensures that resources are freed and other cleanup operations + are performed when the garbage collector reclaims the BZip2OutputStream. + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking + + + + + Gets a value indicating whether the current stream supports writing + + + + + Gets the length in bytes of the stream + + + + + Gets or sets the current position of this stream. + + + + + Sets the current position of this stream to the given value. + + The point relative to the offset from which to being seeking. + The reference point from which to begin seeking. + The new position in the stream. + + + + Sets the length of this stream to the given value. + + The new stream length. + + + + Read a byte from the stream advancing the position. + + The byte read cast to an int; -1 if end of stream. + + + + Read a block of bytes + + The buffer to read into. + The offset in the buffer to start storing data at. + The maximum number of bytes to read. + The total number of bytes read. This might be less than the number of bytes + requested if that number of bytes are not currently available, or zero + if the end of the stream is reached. + + + + Write a block of bytes to the stream + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + + + + Write a byte to the stream. + + The byte to write to the stream. + + + + Get the number of bytes written to output. + + + + + Get the number of bytes written to the output. + + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Flush output buffers + + + + + Computes Adler32 checksum for a stream of data. An Adler32 + checksum is not as reliable as a CRC32 checksum, but a lot faster to + compute. + + The specification for Adler32 may be found in RFC 1950. + ZLIB Compressed Data Format Specification version 3.3) + + + From that document: + + "ADLER32 (Adler-32 checksum) + This contains a checksum value of the uncompressed data + (excluding any dictionary data) computed according to Adler-32 + algorithm. This algorithm is a 32-bit extension and improvement + of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 + standard. + + Adler-32 is composed of two sums accumulated per byte: s1 is + the sum of all bytes, s2 is the sum of all s1 values. Both sums + are done modulo 65521. s1 is initialized to 1, s2 to zero. The + Adler-32 checksum is stored as s2*65536 + s1 in most- + significant-byte first (network) order." + + "8.2. The Adler-32 algorithm + + The Adler-32 algorithm is much faster than the CRC32 algorithm yet + still provides an extremely low probability of undetected errors. + + The modulo on unsigned long accumulators can be delayed for 5552 + bytes, so the modulo operation time is negligible. If the bytes + are a, b, c, the second sum is 3a + 2b + c + 3, and so is position + and order sensitive, unlike the first sum, which is just a + checksum. That 65521 is prime is important to avoid a possible + large class of two-byte errors that leave the check unchanged. + (The Fletcher checksum uses 255, which is not prime and which also + makes the Fletcher check insensitive to single byte changes 0 - + 255.) + + The sum s1 is initialized to 1 instead of zero to make the length + of the sequence part of s2, so that the length does not have to be + checked separately. (Any sequence of zeroes has a Fletcher + checksum of zero.)" + + + + + + + largest prime smaller than 65536 + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the Adler32 data checksum as if no update was ever called. + + + + + Returns the Adler32 data checksum computed so far. + + + + + Updates the checksum with the byte b. + + + The data value to add. The high byte of the int is ignored. + + + + + Updates the Adler32 data checksum with the bytes taken from + a block of data. + + Contains the data to update the checksum with. + + + + Update Adler32 data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + CRC-32 with unreversed data and reversed output + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + This implementation uses sixteen lookup tables stored in one linear array + to implement the slicing-by-16 algorithm, a variant of the slicing-by-8 + algorithm described in this Intel white paper: + + https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf + + The first lookup table is simply the CRC of all possible eight bit values. + Each successive lookup table is derived from the original table generated + by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs + together will produce the same output as a byte-by-byte CRC loop with + fewer arithmetic and bit manipulation operations, at the cost of increased + memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table, + which is still small enough to fit in most processors' L1 cache.) + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the CRC data checksum as if no update was ever called. + + + + + Returns the CRC data checksum computed so far. + + Reversed Out = true + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of bval + + Reversed Data = false + + + + Updates the CRC data checksum with the bytes taken from + a block of data. + + Contains the data to update the CRC with. + + + + Update CRC data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + Internal helper function for updating a block of data using slicing. + + The array containing the data to add + Range start for (inclusive) + The number of bytes to checksum starting from + + + + A non-inlined function for updating data that doesn't fit in a 16-byte + block. We don't expect to enter this function most of the time, and when + we do we're not here for long, so disabling inlining here improves + performance overall. + + The array containing the data to add + Range start for (inclusive) + Range end for (exclusive) + + + + CRC-32 with reversed data and unreversed output + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + This implementation uses sixteen lookup tables stored in one linear array + to implement the slicing-by-16 algorithm, a variant of the slicing-by-8 + algorithm described in this Intel white paper: + + https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf + + The first lookup table is simply the CRC of all possible eight bit values. + Each successive lookup table is derived from the original table generated + by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs + together will produce the same output as a byte-by-byte CRC loop with + fewer arithmetic and bit manipulation operations, at the cost of increased + memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table, + which is still small enough to fit in most processors' L1 cache.) + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the CRC data checksum as if no update was ever called. + + + + + Returns the CRC data checksum computed so far. + + Reversed Out = false + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of bval + + Reversed Data = true + + + + Updates the CRC data checksum with the bytes taken from + a block of data. + + Contains the data to update the CRC with. + + + + Update CRC data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + Internal helper function for updating a block of data using slicing. + + The array containing the data to add + Range start for (inclusive) + The number of bytes to checksum starting from + + + + A non-inlined function for updating data that doesn't fit in a 16-byte + block. We don't expect to enter this function most of the time, and when + we do we're not here for long, so disabling inlining here improves + performance overall. + + The array containing the data to add + Range start for (inclusive) + Range end for (exclusive) + + + + The number of slicing lookup tables to generate. + + + + + Generates multiple CRC lookup tables for a given polynomial, stored + in a linear array of uints. The first block (i.e. the first 256 + elements) is the same as the byte-by-byte CRC lookup table. + + The generating CRC polynomial + Whether the polynomial is in reversed bit order + A linear array of 256 * elements + + This table could also be generated as a rectangular array, but the + JIT compiler generates slower code than if we use a linear array. + Known issue, see: https://github.com/dotnet/runtime/issues/30275 + + + + + Mixes the first four bytes of input with + using normal ordering before calling . + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + Checksum state before this update call + A new unfinalized checksum value + + + Assumes input[offset]..input[offset + 15] are valid array indexes. + For performance reasons, this must be checked by the caller. + + + + + Mixes the first four bytes of input with + using reflected ordering before calling . + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + Checksum state before this update call + A new unfinalized checksum value + + + Assumes input[offset]..input[offset + 15] are valid array indexes. + For performance reasons, this must be checked by the caller. + + + + + A shared method for updating an unfinalized CRC checksum using slicing-by-16. + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + First byte of input after mixing with the old CRC + Second byte of input after mixing with the old CRC + Third byte of input after mixing with the old CRC + Fourth byte of input after mixing with the old CRC + A new unfinalized checksum value + + + Even though the first four bytes of input are fed in as arguments, + should be the same value passed to this + function's caller (either or + ). This method will get inlined + into both functions, so using the same offset produces faster code. + + + Because most processors running C# have some kind of instruction-level + parallelism, the order of XOR operations can affect performance. This + ordering assumes that the assembly code generated by the just-in-time + compiler will emit a bunch of arithmetic operations for checking array + bounds. Then it opportunistically XORs a1 and a2 to keep the processor + busy while those other parts of the pipeline handle the range check + calculations. + + + + + + Interface to compute a data checksum used by checked input/output streams. + A data checksum can be updated by one byte or with a byte array. After each + update the value of the current checksum can be returned by calling + getValue. The complete checksum object can also be reset + so it can be used again with new data. + + + + + Resets the data checksum as if no update was ever called. + + + + + Returns the data checksum computed so far. + + + + + Adds one byte to the data checksum. + + + the data value to add. The high byte of the int is ignored. + + + + + Updates the data checksum with the bytes taken from the array. + + + buffer an array of bytes + + + + + Adds the byte array to the data checksum. + + + The chunk of data to add + + + + + Event arguments for scanning. + + + + + Initialise a new instance of + + The file or directory name. + + + + The file or directory name for this event. + + + + + Get set a value indicating if scanning should continue or not. + + + + + Event arguments during processing of a single file or directory. + + + + + Initialise a new instance of + + The file or directory name if known. + The number of bytes processed so far + The total number of bytes to process, 0 if not known + + + + The name for this event if known. + + + + + Get set a value indicating whether scanning should continue or not. + + + + + Get a percentage representing how much of the has been processed + + 0.0 to 100.0 percent; 0 if target is not known. + + + + The number of bytes processed so far + + + + + The number of bytes to process. + + Target may be 0 or negative if the value isnt known. + + + + Event arguments for directories. + + + + + Initialize an instance of . + + The name for this directory. + Flag value indicating if any matching files are contained in this directory. + + + + Get a value indicating if the directory contains any matching files or not. + + + + + Arguments passed when scan failures are detected. + + + + + Initialise a new instance of + + The name to apply. + The exception to use. + + + + The applicable name. + + + + + The applicable exception. + + + + + Get / set a value indicating whether scanning should continue. + + + + + Delegate invoked before starting to process a file. + + The source of the event + The event arguments. + + + + Delegate invoked during processing of a file or directory + + The source of the event + The event arguments. + + + + Delegate invoked when a file has been completely processed. + + The source of the event + The event arguments. + + + + Delegate invoked when a directory failure is detected. + + The source of the event + The event arguments. + + + + Delegate invoked when a file failure is detected. + + The source of the event + The event arguments. + + + + FileSystemScanner provides facilities scanning of files and directories. + + + + + Initialise a new instance of + + The file filter to apply when scanning. + + + + Initialise a new instance of + + The file filter to apply. + The directory filter to apply. + + + + Initialise a new instance of + + The file filter to apply. + + + + Initialise a new instance of + + The file filter to apply. + The directory filter to apply. + + + + Delegate to invoke when a directory is processed. + + + + + Delegate to invoke when a file is processed. + + + + + Delegate to invoke when processing for a file has finished. + + + + + Delegate to invoke when a directory failure is detected. + + + + + Delegate to invoke when a file failure is detected. + + + + + Raise the DirectoryFailure event. + + The directory name. + The exception detected. + + + + Raise the FileFailure event. + + The file name. + The exception detected. + + + + Raise the ProcessFile event. + + The file name. + + + + Raise the complete file event + + The file name + + + + Raise the ProcessDirectory event. + + The directory name. + Flag indicating if the directory has matching files. + + + + Scan a directory. + + The base directory to scan. + True to recurse subdirectories, false to scan a single directory. + + + + The file filter currently in use. + + + + + The directory filter currently in use. + + + + + Flag indicating if scanning should continue running. + + + + + INameTransform defines how file system names are transformed for use with archives, or vice versa. + + + + + Given a file name determine the transformed value. + + The name to transform. + The transformed file name. + + + + Given a directory name determine the transformed value. + + The name to transform. + The transformed directory name + + + + InvalidNameException is thrown for invalid names such as directory traversal paths and names with invalid characters + + + + + Initializes a new instance of the InvalidNameException class with a default error message. + + + + + Initializes a new instance of the InvalidNameException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the InvalidNameException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the InvalidNameException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Scanning filters support filtering of names. + + + + + Test a name to see if it 'matches' the filter. + + The name to test. + Returns true if the name matches the filter, false if it does not match. + + + + NameFilter is a string matching class which allows for both positive and negative + matching. + A filter is a sequence of independant regular expressions separated by semi-colons ';'. + To include a semi-colon it may be quoted as in \;. Each expression can be prefixed by a plus '+' sign or + a minus '-' sign to denote the expression is intended to include or exclude names. + If neither a plus or minus sign is found include is the default. + A given name is tested for inclusion before checking exclusions. Only names matching an include spec + and not matching an exclude spec are deemed to match the filter. + An empty filter matches any name. + + The following expression includes all name ending in '.dat' with the exception of 'dummy.dat' + "+\.dat$;-^dummy\.dat$" + + + + + Construct an instance based on the filter expression passed + + The filter expression. + + + + Test a string to see if it is a valid regular expression. + + The expression to test. + True if expression is a valid false otherwise. + + + + Test an expression to see if it is valid as a filter. + + The filter expression to test. + True if the expression is valid, false otherwise. + + + + Split a string into its component pieces + + The original string + Returns an array of values containing the individual filter elements. + + + + Convert this filter to its string equivalent. + + The string equivalent for this filter. + + + + Test a value to see if it is included by the filter. + + The value to test. + True if the value is included, false otherwise. + + + + Test a value to see if it is excluded by the filter. + + The value to test. + True if the value is excluded, false otherwise. + + + + Test a value to see if it matches the filter. + + The value to test. + True if the value matches, false otherwise. + + + + Compile this filter. + + + + + PathFilter filters directories and files using a form of regular expressions + by full path name. + See NameFilter for more detail on filtering. + + + + + Initialise a new instance of . + + The filter expression to apply. + + + + Test a name to see if it matches the filter. + + The name to test. + True if the name matches, false otherwise. + is used to get the full path before matching. + + + + ExtendedPathFilter filters based on name, file size, and the last write time of the file. + + Provides an example of how to customise filtering. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum to include. + The maximum to include. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + The minimum to include. + The maximum to include. + + + + Test a filename to see if it matches the filter. + + The filename to test. + True if the filter matches, false otherwise. + The doesnt exist + + + + Get/set the minimum size/length for a file that will match this filter. + + The default value is zero. + value is less than zero; greater than + + + + Get/set the maximum size/length for a file that will match this filter. + + The default value is + value is less than zero or less than + + + + Get/set the minimum value that will match for this filter. + + Files with a LastWrite time less than this value are excluded by the filter. + + + + Get/set the maximum value that will match for this filter. + + Files with a LastWrite time greater than this value are excluded by the filter. + + + + NameAndSizeFilter filters based on name and file size. + + A sample showing how filters might be extended. + + + + Initialise a new instance of NameAndSizeFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + + + + Test a filename to see if it matches the filter. + + The filename to test. + True if the filter matches, false otherwise. + + + + Get/set the minimum size for a file that will match this filter. + + + + + Get/set the maximum size for a file that will match this filter. + + + + + PathUtils provides simple utilities for handling paths. + + + + + Remove any path root present in the path + + A containing path information. + The path with the root removed if it was present; path otherwise. + + + + Returns a random file name in the users temporary directory, or in directory of if specified + + If specified, used as the base file name for the temporary file + Returns a temporary file name + + + + Provides simple " utilities. + + + + + Read from a ensuring all the required data is read. + + The stream to read. + The buffer to fill. + + + + + Read from a " ensuring all the required data is read. + + The stream to read data from. + The buffer to store data in. + The offset at which to begin storing data. + The number of bytes of data to store. + Required parameter is null + and or are invalid. + End of stream is encountered before all the data has been read. + + + + Read as much data as possible from a ", up to the requested number of bytes + + The stream to read data from. + The buffer to store data in. + The offset at which to begin storing data. + The number of bytes of data to store. + Required parameter is null + and or are invalid. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + The progress handler delegate to use. + The minimum between progress updates. + The source for this event. + The name to use with the event. + This form is specialised for use within #Zip to support events during archive operations. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + The progress handler delegate to use. + The minimum between progress updates. + The source for this event. + The name to use with the event. + A predetermined fixed target value to use with progress updates. + If the value is negative the target is calculated by looking at the stream. + This form is specialised for use within #Zip to support events during archive operations. + + + + Initialise an instance of + + + + + SharpZipBaseException is the base exception class for SharpZipLib. + All library exceptions are derived from this. + + NOTE: Not all exceptions thrown will be derived from this class. + A variety of other exceptions are possible for example + + + + Initializes a new instance of the SharpZipBaseException class. + + + + + Initializes a new instance of the SharpZipBaseException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the SharpZipBaseException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the SharpZipBaseException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that an error occurred during decoding of a input stream due to corrupt + data or (unintentional) library incompatibility. + + + + + Initializes a new instance of the StreamDecodingException with a generic message + + + + + Initializes a new instance of the StreamDecodingException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the StreamDecodingException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the StreamDecodingException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that the input stream could not decoded due to known library incompability or missing features + + + + + Initializes a new instance of the StreamUnsupportedException with a generic message + + + + + Initializes a new instance of the StreamUnsupportedException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the StreamUnsupportedException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the StreamUnsupportedException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that the input stream could not decoded due to the stream ending before enough data had been provided + + + + + Initializes a new instance of the UnexpectedEndOfStreamException with a generic message + + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that a value was outside of the expected range when decoding an input stream + + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable + + Name of the variable, use: nameof() + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable, + it's current value and expected range. + + Name of the variable, use: nameof() + The invalid value + Expected maximum value + Expected minimum value + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable, + it's current value and expected range. + + Name of the variable, use: nameof() + The invalid value + Expected maximum value + Expected minimum value + + + + Initializes a new instance of the ValueOutOfRangeException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + PkzipClassic embodies the classic or original encryption facilities used in Pkzip archives. + While it has been superceded by more recent and more powerful algorithms, its still in use and + is viable for preventing casual snooping + + + + + Generates new encryption keys based on given seed + + The seed value to initialise keys with. + A new key value. + + + + PkzipClassicCryptoBase provides the low level facilities for encryption + and decryption using the PkzipClassic algorithm. + + + + + Transform a single byte + + + The transformed value + + + + + Set the key schedule for encryption/decryption. + + The data use to set the keys from. + + + + Update encryption keys + + + + + Reset the internal state. + + + + + PkzipClassic CryptoTransform for encryption. + + + + + Initialise a new instance of + + The key block to use. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Cleanup internal state. + + + + + PkzipClassic CryptoTransform for decryption. + + + + + Initialise a new instance of . + + The key block to decrypt with. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Cleanup internal state. + + + + + Defines a wrapper object to access the Pkzip algorithm. + This class cannot be inherited. + + + + + Get / set the applicable block size in bits. + + The only valid block size is 8. + + + + Get an array of legal key sizes. + + + + + Generate an initial vector. + + + + + Get an array of legal block sizes. + + + + + Get / set the key value applicable. + + + + + Generate a new random key. + + + + + Create an encryptor. + + The key to use for this encryptor. + Initialisation vector for the new encryptor. + Returns a new PkzipClassic encryptor + + + + Create a decryptor. + + Keys to use for this new decryptor. + Initialisation vector for the new decryptor. + Returns a new decryptor. + + + + Encrypts and decrypts AES ZIP + + + Based on information from http://www.winzip.com/aes_info.htm + and http://www.gladman.me.uk/cryptography_technology/fileencrypt/ + + + + + Constructor + + The stream on which to perform the cryptographic transformation. + Instance of ZipAESTransform + Read or Write + + + + Reads a sequence of bytes from the current CryptoStream into buffer, + and advances the position within the stream by the number of bytes read. + + + + + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + + + + Transforms stream using AES in CTR mode + + + + + Constructor. + + Password string + Random bytes, length depends on encryption strength. + 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes. + The encryption strength, in bytes eg 16 for 128 bits. + True when creating a zip, false when reading. For the AuthCode. + + + + + Implement the ICryptoTransform method. + + + + + Returns the 2 byte password verifier + + + + + Returns the 10 byte AUTH CODE to be checked or appended immediately following the AES data stream. + + + + + Not implemented. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Gets a value indicating whether the current transform can be reused. + + + + + Cleanup internal state. + + + + + An example class to demonstrate compression and decompression of GZip streams. + + + + + Decompress the input writing + uncompressed data to the output stream + + The readable stream containing data to decompress. + The output stream to receive the decompressed data. + Both streams are closed on completion if true. + Input or output stream is null + + + + Compress the input stream sending + result data to output stream + + The readable stream to compress. + The output stream to receive the compressed data. + Both streams are closed on completion if true. + Deflate buffer size, minimum 512 + Deflate compression level, 0-9 + Input or output stream is null + Buffer Size is smaller than 512 + Compression level outside 0-9 + + + + This class contains constants used for gzip. + + + + + First GZip identification byte + + + + + Second GZip identification byte + + + + + Deflate compression method + + + + + Get the GZip specified encoding (CP-1252 if supported, otherwise ASCII) + + + + + GZip header flags + + + + + Text flag hinting that the file is in ASCII + + + + + CRC flag indicating that a CRC16 preceeds the data + + + + + Extra flag indicating that extra fields are present + + + + + Filename flag indicating that the original filename is present + + + + + Flag bit mask indicating that a comment is present + + + + + GZipException represents exceptions specific to GZip classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the GZipException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + This filter stream is used to decompress a "GZIP" format stream. + The "GZIP" format is described baseInputStream RFC 1952. + + author of the original java version : John Leuner + + This sample shows how to unzip a gzipped file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.GZip; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream inStream = new GZipInputStream(File.OpenRead(args[0]))) + using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { + byte[] buffer = new byte[4096]; + StreamUtils.Copy(inStream, outStream, buffer); + } + } + } + + + + + + CRC-32 value for uncompressed data + + + + + Flag to indicate if we've read the GZIP header yet for the current member (block of compressed data). + This is tracked per-block as the file is parsed. + + + + + Flag to indicate if at least one block in a stream with concatenated blocks was read successfully. + This allows us to exit gracefully if downstream data is not in gzip format. + + + + + Creates a GZipInputStream with the default buffer size + + + The stream to read compressed data from (baseInputStream GZIP format) + + + + + Creates a GZIPInputStream with the specified buffer size + + + The stream to read compressed data from (baseInputStream GZIP format) + + + Size of the buffer to use + + + + + Reads uncompressed data into an array of bytes + + + The buffer to read uncompressed data into + + + The offset indicating where the data should be placed + + + The number of uncompressed bytes to be read + + Returns the number of bytes actually read. + + + + Retrieves the filename header field for the block last read + + + + + + This filter stream is used to compress a stream into a "GZIP" stream. + The "GZIP" format is described in RFC 1952. + + author of the original java version : John Leuner + + This sample shows how to gzip a file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.GZip; + using ICSharpCode.SharpZipLib.Core; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream s = new GZipOutputStream(File.Create(args[0] + ".gz"))) + using (FileStream fs = File.OpenRead(args[0])) { + byte[] writeData = new byte[4096]; + Streamutils.Copy(s, fs, writeData); + } + } + } + } + + + + + + CRC-32 value for uncompressed data + + + + + Creates a GzipOutputStream with the default buffer size + + + The stream to read data (to be compressed) from + + + + + Creates a GZipOutputStream with the specified buffer size + + + The stream to read data (to be compressed) from + + + Size of the buffer to use + + + + + Sets the active compression level (0-9). The new level will be activated + immediately. + + The compression level to set. + + Level specified is not supported. + + + + + + Get the current compression level. + + The current compression level. + + + + Original filename + + + + + Write given buffer to output updating crc + + Buffer to write + Offset of first byte in buf to write + Number of bytes to write + + + + Writes remaining compressed output data to the output stream + and closes it. + + + + + Flushes the stream by ensuring the header is written, and then calling Flush + on the deflater. + + + + + Finish compression and write any footer information required to stream + + + + + This class contains constants used for LZW + + + + + Magic number found at start of LZW header: 0x1f 0x9d + + + + + Maximum number of bits per code + + + + + Mask for 'number of compression bits' + + + + + Indicates the presence of a fourth header byte + + + + + Reserved bits + + + + + Block compression: if table is full and compression rate is dropping, + clear the dictionary. + + + + + LZW file header size (in bytes) + + + + + Initial number of bits per code + + + + + LzwException represents exceptions specific to LZW classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the LzwException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + This filter stream is used to decompress a LZW format stream. + Specifically, a stream that uses the LZC compression method. + This file format is usually associated with the .Z file extension. + + See http://en.wikipedia.org/wiki/Compress + See http://wiki.wxwidgets.org/Development:_Z_File_Format + + The file header consists of 3 (or optionally 4) bytes. The first two bytes + contain the magic marker "0x1f 0x9d", followed by a byte of flags. + + Based on Java code by Ronald Tschalar, which in turn was based on the unlzw.c + code in the gzip package. + + This sample shows how to unzip a compressed file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.LZW; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream inStream = new LzwInputStream(File.OpenRead(args[0]))) + using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { + byte[] buffer = new byte[4096]; + StreamUtils.Copy(inStream, outStream, buffer); + // OR + inStream.Read(buffer, 0, buffer.Length); + // now do something with the buffer + } + } + } + + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Creates a LzwInputStream + + + The stream to read compressed data from (baseInputStream LZW format) + + + + + See + + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + + + Moves the unread data in the buffer to the beginning and resets + the pointers. + + + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Flag indicating wether this instance has been closed or not. + + + + + This exception is used to indicate that there is a problem + with a TAR archive header. + + + + + Initialise a new instance of the InvalidHeaderException class. + + + + + Initialises a new instance of the InvalidHeaderException class with a specified message. + + Message describing the exception cause. + + + + Initialise a new instance of InvalidHeaderException + + Message describing the problem. + The exception that is the cause of the current exception. + + + + Initializes a new instance of the InvalidHeaderException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Used to advise clients of 'events' while processing archives + + + + + The TarArchive class implements the concept of a + 'Tape Archive'. A tar archive is a series of entries, each of + which represents a file system object. Each entry in + the archive consists of a header block followed by 0 or more data blocks. + Directory entries consist only of the header block, and are followed by entries + for the directory's contents. File entries consist of a + header followed by the number of blocks needed to + contain the file's contents. All entries are written on + block boundaries. Blocks are 512 bytes long. + + TarArchives are instantiated in either read or write mode, + based upon whether they are instantiated with an InputStream + or an OutputStream. Once instantiated TarArchives read/write + mode can not be changed. + + There is currently no support for random access to tar archives. + However, it seems that subclassing TarArchive, and using the + TarBuffer.CurrentRecord and TarBuffer.CurrentBlock + properties, this would be rather trivial. + + + + + Client hook allowing detailed information to be reported during processing + + + + + Raises the ProgressMessage event + + The TarEntry for this event + message for this event. Null is no message + + + + Constructor for a default . + + + + + Initialise a TarArchive for input. + + The to use for input. + + + + Initialise a TarArchive for output. + + The to use for output. + + + + The InputStream based constructors create a TarArchive for the + purposes of extracting or listing a tar archive. Thus, use + these constructors when you wish to extract files from or list + the contents of an existing tar archive. + + The stream to retrieve archive data from. + Returns a new suitable for reading from. + + + + The InputStream based constructors create a TarArchive for the + purposes of extracting or listing a tar archive. Thus, use + these constructors when you wish to extract files from or list + the contents of an existing tar archive. + + The stream to retrieve archive data from. + The used for the Name fields, or null for ASCII only + Returns a new suitable for reading from. + + + + Create TarArchive for reading setting block factor + + A stream containing the tar archive contents + The blocking factor to apply + Returns a suitable for reading. + + + + Create TarArchive for reading setting block factor + + A stream containing the tar archive contents + The blocking factor to apply + The used for the Name fields, or null for ASCII only + Returns a suitable for reading. + + + + Create a TarArchive for writing to, using the default blocking factor + + The to write to + The used for the Name fields, or null for ASCII only + Returns a suitable for writing. + + + + Create a TarArchive for writing to, using the default blocking factor + + The to write to + Returns a suitable for writing. + + + + Create a tar archive for writing. + + The stream to write to + The blocking factor to use for buffering. + Returns a suitable for writing. + + + + Create a tar archive for writing. + + The stream to write to + The blocking factor to use for buffering. + The used for the Name fields, or null for ASCII only + Returns a suitable for writing. + + + + Set the flag that determines whether existing files are + kept, or overwritten during extraction. + + + If true, do not overwrite existing files. + + + + + Get/set the ascii file translation flag. If ascii file translation + is true, then the file is checked to see if it a binary file or not. + If the flag is true and the test indicates it is ascii text + file, it will be translated. The translation converts the local + operating system's concept of line ends into the UNIX line end, + '\n', which is the defacto standard for a TAR archive. This makes + text files compatible with UNIX. + + + + + Set the ascii file translation flag. + + + If true, translate ascii text files. + + + + + PathPrefix is added to entry names as they are written if the value is not null. + A slash character is appended after PathPrefix + + + + + RootPath is removed from entry names if it is found at the + beginning of the name. + + + + + Set user and group information that will be used to fill in the + tar archive's entry headers. This information is based on that available + for the linux operating system, which is not always available on other + operating systems. TarArchive allows the programmer to specify values + to be used in their place. + is set to true by this call. + + + The user id to use in the headers. + + + The user name to use in the headers. + + + The group id to use in the headers. + + + The group name to use in the headers. + + + + + Get or set a value indicating if overrides defined by SetUserInfo should be applied. + + If overrides are not applied then the values as set in each header will be used. + + + + Get the archive user id. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current user id. + + + + + Get the archive user name. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current user name. + + + + + Get the archive group id. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current group id. + + + + + Get the archive group name. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current group name. + + + + + Get the archive's record size. Tar archives are composed of + a series of RECORDS each containing a number of BLOCKS. + This allowed tar archives to match the IO characteristics of + the physical device being used. Archives are expected + to be properly "blocked". + + + The record size this archive is using. + + + + + Sets the IsStreamOwner property on the underlying stream. + Set this to false to prevent the Close of the TarArchive from closing the stream. + + + + + Close the archive. + + + + + Perform the "list" command for the archive contents. + + NOTE That this method uses the progress event to actually list + the contents. If the progress display event is not set, nothing will be listed! + + + + + Perform the "extract" command and extract the contents of the archive. + + + The destination directory into which to extract. + + + + + Perform the "extract" command and extract the contents of the archive. + + + The destination directory into which to extract. + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Extract an entry from the archive. This method assumes that the + tarIn stream has been properly set with a call to GetNextEntry(). + + + The destination directory into which to extract. + + + The TarEntry returned by tarIn.GetNextEntry(). + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Write an entry to the archive. This method will call the putNextEntry + and then write the contents of the entry, and finally call closeEntry() + for entries that are files. For directories, it will call putNextEntry(), + and then, if the recurse flag is true, process each entry that is a + child of the directory. + + + The TarEntry representing the entry to write to the archive. + + + If true, process the children of directory entries. + + + + + Write an entry to the archive. This method will call the putNextEntry + and then write the contents of the entry, and finally call closeEntry() + for entries that are files. For directories, it will call putNextEntry(), + and then, if the recurse flag is true, process each entry that is a + child of the directory. + + + The TarEntry representing the entry to write to the archive. + + + If true, process the children of directory entries. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases the unmanaged resources used by the FileStream and optionally releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Closes the archive and releases any associated resources. + + + + + Ensures that resources are freed and other cleanup operations are performed + when the garbage collector reclaims the . + + + + + The TarBuffer class implements the tar archive concept + of a buffered input stream. This concept goes back to the + days of blocked tape drives and special io devices. In the + C# universe, the only real function that this class + performs is to ensure that files have the correct "record" + size, or other tars will complain. +

+ You should never have a need to access this class directly. + TarBuffers are created by Tar IO Streams. +

+
+
+ + + The size of a block in a tar archive in bytes. + + This is 512 bytes. + + + + The number of blocks in a default record. + + + The default value is 20 blocks per record. + + + + + The size in bytes of a default record. + + + The default size is 10KB. + + + + + Get the record size for this buffer + + The record size in bytes. + This is equal to the multiplied by the + + + + Get the TAR Buffer's record size. + + The record size in bytes. + This is equal to the multiplied by the + + + + Get the Blocking factor for the buffer + + This is the number of blocks in each record. + + + + Get the TAR Buffer's block factor + + The block factor; the number of blocks per record. + + + + Construct a default TarBuffer + + + + + Create TarBuffer for reading with default BlockFactor + + Stream to buffer + A new suitable for input. + + + + Construct TarBuffer for reading inputStream setting BlockFactor + + Stream to buffer + Blocking factor to apply + A new suitable for input. + + + + Construct TarBuffer for writing with default BlockFactor + + output stream for buffer + A new suitable for output. + + + + Construct TarBuffer for writing Tar output to streams. + + Output stream to write to. + Blocking factor to apply + A new suitable for output. + + + + Initialization common to all constructors. + + + + + Determine if an archive block indicates End of Archive. End of + archive is indicated by a block that consists entirely of null bytes. + All remaining blocks for the record should also be null's + However some older tars only do a couple of null blocks (Old GNU tar for one) + and also partial records + + The data block to check. + Returns true if the block is an EOF block; false otherwise. + + + + Determine if an archive block indicates the End of an Archive has been reached. + End of archive is indicated by a block that consists entirely of null bytes. + All remaining blocks for the record should also be null's + However some older tars only do a couple of null blocks (Old GNU tar for one) + and also partial records + + The data block to check. + Returns true if the block is an EOF block; false otherwise. + + + + Skip over a block on the input stream. + + + + + Read a block from the input stream. + + + The block of data read. + + + + + Read a record from data stream. + + + false if End-Of-File, else true. + + + + + Get the current block number, within the current record, zero based. + + Block numbers are zero based values + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Get the current block number, within the current record, zero based. + + + The current zero based block number. + + + The absolute block number = (record number * block factor) + block number. + + + + + Get the current record number. + + + The current zero based record number. + + + + + Get the current record number. + + + The current zero based record number. + + + + + Write a block of data to the archive. + + + The data to write to the archive. + + + + + Write an archive record to the archive, where the record may be + inside of a larger array buffer. The buffer must be "offset plus + record size" long. + + + The buffer containing the record data to write. + + + The offset of the record data within buffer. + + + + + Write a TarBuffer record to the archive. + + + + + WriteFinalRecord writes the current record buffer to output any unwritten data is present. + + Any trailing bytes are set to zero which is by definition correct behaviour + for the end of a tar stream. + + + + Close the TarBuffer. If this is an output buffer, also flush the + current block before closing. + + + + + This class represents an entry in a Tar archive. It consists + of the entry's header, as well as the entry's File. Entries + can be instantiated in one of three ways, depending on how + they are to be used. +

+ TarEntries that are created from the header bytes read from + an archive are instantiated with the TarEntry( byte[] ) + constructor. These entries will be used when extracting from + or listing the contents of an archive. These entries have their + header filled in using the header bytes. They also set the File + to null, since they reference an archive entry not a file.

+

+ TarEntries that are created from files that are to be written + into an archive are instantiated with the CreateEntryFromFile(string) + pseudo constructor. These entries have their header filled in using + the File's information. They also keep a reference to the File + for convenience when writing entries.

+

+ Finally, TarEntries can be constructed from nothing but a name. + This allows the programmer to construct the entry by hand, for + instance when only an InputStream is available for writing to + the archive, and the header information is constructed from + other information. In this case the header fields are set to + defaults and the File is set to null.

+ +
+
+ + + Initialise a default instance of . + + + + + Construct an entry from an archive's header bytes. File is set + to null. + + + The header bytes from a tar archive entry. + + + + + Construct an entry from an archive's header bytes. File is set + to null. + + + The header bytes from a tar archive entry. + + + The used for the Name fields, or null for ASCII only + + + + + Construct a TarEntry using the header provided + + Header details for entry + + + + Clone this tar entry. + + Returns a clone of this entry. + + + + Construct an entry with only a name. + This allows the programmer to construct the entry's header "by hand". + + The name to use for the entry + Returns the newly created + + + + Construct an entry for a file. File is set to file, and the + header is constructed from information from the file. + + The file name that the entry represents. + Returns the newly created + + + + Determine if the two entries are equal. Equality is determined + by the header names being equal. + + The to compare with the current Object. + + True if the entries are equal; false if not. + + + + + Derive a Hash value for the current + + A Hash code for the current + + + + Determine if the given entry is a descendant of this entry. + Descendancy is determined by the name of the descendant + starting with this entry's name. + + + Entry to be checked as a descendent of this. + + + True if entry is a descendant of this. + + + + + Get this entry's header. + + + This entry's TarHeader. + + + + + Get/Set this entry's name. + + + + + Get/set this entry's user id. + + + + + Get/set this entry's group id. + + + + + Get/set this entry's user name. + + + + + Get/set this entry's group name. + + + + + Convenience method to set this entry's group and user ids. + + + This entry's new user id. + + + This entry's new group id. + + + + + Convenience method to set this entry's group and user names. + + + This entry's new user name. + + + This entry's new group name. + + + + + Get/Set the modification time for this entry + + + + + Get this entry's file. + + + This entry's file. + + + + + Get/set this entry's recorded file size. + + + + + Return true if this entry represents a directory, false otherwise + + + True if this entry is a directory. + + + + + Fill in a TarHeader with information from a File. + + + The TarHeader to fill in. + + + The file from which to get the header information. + + + + + Get entries for all files present in this entries directory. + If this entry doesnt represent a directory zero entries are returned. + + + An array of TarEntry's for this entry's children. + + + + + Write an entry's header information to a header buffer. + + + The tar entry header buffer to fill in. + + + + + Write an entry's header information to a header buffer. + + + The tar entry header buffer to fill in. + + + The used for the Name fields, or null for ASCII only + + + + + Convenience method that will modify an entry's name directly + in place in an entry header buffer byte array. + + + The buffer containing the entry header to modify. + + + The new name to place into the header buffer. + + + + + Convenience method that will modify an entry's name directly + in place in an entry header buffer byte array. + + + The buffer containing the entry header to modify. + + + The new name to place into the header buffer. + + + The used for the Name fields, or null for ASCII only + + + + + Fill in a TarHeader given only the entry's name. + + + The TarHeader to fill in. + + + The tar entry name. + + + + + The name of the file this entry represents or null if the entry is not based on a file. + + + + + The entry's header information. + + + + + TarException represents exceptions specific to Tar classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the TarException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Reads the extended header of a Tar stream + + + + + Creates a new . + + + + + Read bytes from + + + + + + + Returns the parsed headers as key-value strings + + + + + This class encapsulates the Tar Entry Header used in Tar Archives. + The class also holds a number of tar constants, used mostly in headers. + + + The tar format and its POSIX successor PAX have a long history which makes for compatability + issues when creating and reading files. + + This is further complicated by a large number of programs with variations on formats + One common issue is the handling of names longer than 100 characters. + GNU style long names are currently supported. + + This is the ustar (Posix 1003.1) header. + + struct header + { + char t_name[100]; // 0 Filename + char t_mode[8]; // 100 Permissions + char t_uid[8]; // 108 Numerical User ID + char t_gid[8]; // 116 Numerical Group ID + char t_size[12]; // 124 Filesize + char t_mtime[12]; // 136 st_mtime + char t_chksum[8]; // 148 Checksum + char t_typeflag; // 156 Type of File + char t_linkname[100]; // 157 Target of Links + char t_magic[6]; // 257 "ustar" or other... + char t_version[2]; // 263 Version fixed to 00 + char t_uname[32]; // 265 User Name + char t_gname[32]; // 297 Group Name + char t_devmajor[8]; // 329 Major for devices + char t_devminor[8]; // 337 Minor for devices + char t_prefix[155]; // 345 Prefix for t_name + char t_mfill[12]; // 500 Filler up to 512 + }; + + + + + The length of the name field in a header buffer. + + + + + The length of the mode field in a header buffer. + + + + + The length of the user id field in a header buffer. + + + + + The length of the group id field in a header buffer. + + + + + The length of the checksum field in a header buffer. + + + + + Offset of checksum in a header buffer. + + + + + The length of the size field in a header buffer. + + + + + The length of the magic field in a header buffer. + + + + + The length of the version field in a header buffer. + + + + + The length of the modification time field in a header buffer. + + + + + The length of the user name field in a header buffer. + + + + + The length of the group name field in a header buffer. + + + + + The length of the devices field in a header buffer. + + + + + The length of the name prefix field in a header buffer. + + + + + The "old way" of indicating a normal file. + + + + + Normal file type. + + + + + Link file type. + + + + + Symbolic link file type. + + + + + Character device file type. + + + + + Block device file type. + + + + + Directory file type. + + + + + FIFO (pipe) file type. + + + + + Contiguous file type. + + + + + Posix.1 2001 global extended header + + + + + Posix.1 2001 extended header + + + + + Solaris access control list file type + + + + + GNU dir dump file type + This is a dir entry that contains the names of files that were in the + dir at the time the dump was made + + + + + Solaris Extended Attribute File + + + + + Inode (metadata only) no file content + + + + + Identifies the next file on the tape as having a long link name + + + + + Identifies the next file on the tape as having a long name + + + + + Continuation of a file that began on another volume + + + + + For storing filenames that dont fit in the main header (old GNU) + + + + + GNU Sparse file + + + + + GNU Tape/volume header ignore on extraction + + + + + The magic tag representing a POSIX tar archive. (would be written with a trailing NULL) + + + + + The magic tag representing an old GNU tar archive where version is included in magic and overwrites it + + + + + Initialise a default TarHeader instance + + + + + Get/set the name for this tar entry. + + Thrown when attempting to set the property to null. + + + + Get the name of this entry. + + The entry's name. + + + + Get/set the entry's Unix style permission mode. + + + + + The entry's user id. + + + This is only directly relevant to unix systems. + The default is zero. + + + + + Get/set the entry's group id. + + + This is only directly relevant to linux/unix systems. + The default value is zero. + + + + + Get/set the entry's size. + + Thrown when setting the size to less than zero. + + + + Get/set the entry's modification time. + + + The modification time is only accurate to within a second. + + Thrown when setting the date time to less than 1/1/1970. + + + + Get the entry's checksum. This is only valid/updated after writing or reading an entry. + + + + + Get value of true if the header checksum is valid, false otherwise. + + + + + Get/set the entry's type flag. + + + + + The entry's link name. + + Thrown when attempting to set LinkName to null. + + + + Get/set the entry's magic tag. + + Thrown when attempting to set Magic to null. + + + + The entry's version. + + Thrown when attempting to set Version to null. + + + + The entry's user name. + + + + + Get/set the entry's group name. + + + This is only directly relevant to unix systems. + + + + + Get/set the entry's major device number. + + + + + Get/set the entry's minor device number. + + + + + Create a new that is a copy of the current instance. + + A new that is a copy of the current instance. + + + + Parse TarHeader information from a header buffer. + + + The tar entry header buffer to get information from. + + + The used for the Name field, or null for ASCII only + + + + + Parse TarHeader information from a header buffer. + + + The tar entry header buffer to get information from. + + + + + 'Write' header information to buffer provided, updating the check sum. + + output buffer for header information + + + + 'Write' header information to buffer provided, updating the check sum. + + output buffer for header information + The used for the Name field, or null for ASCII only + + + + Get a hash code for the current object. + + A hash code for the current object. + + + + Determines if this instance is equal to the specified object. + + The object to compare with. + true if the objects are equal, false otherwise. + + + + Set defaults for values used when constructing a TarHeader instance. + + Value to apply as a default for userId. + Value to apply as a default for userName. + Value to apply as a default for groupId. + Value to apply as a default for groupName. + + + + Parse an octal string from a header buffer. + + The header buffer from which to parse. + The offset into the buffer from which to parse. + The number of header bytes to parse. + The long equivalent of the octal string. + + + + Parse a name from a header buffer. + + + The header buffer from which to parse. + + + The offset into the buffer from which to parse. + + + The number of header bytes to parse. + + + The name parsed. + + + + + Parse a name from a header buffer. + + + The header buffer from which to parse. + + + The offset into the buffer from which to parse. + + + The number of header bytes to parse. + + + name encoding, or null for ASCII only + + + The name parsed. + + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + The next free index in the + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + The next free index in the + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + name encoding, or null for ASCII only + The next free index in the + + + + Add an entry name to the buffer + + + The name to add + + + The buffer to add to + + + The offset into the buffer from which to start adding + + + The number of header bytes to add + + + The index of the next free byte in the buffer + + TODO: what should be default behavior?(omit upper byte or UTF8?) + + + + Add an entry name to the buffer + + + The name to add + + + The buffer to add to + + + The offset into the buffer from which to start adding + + + The number of header bytes to add + + + + + The index of the next free byte in the buffer + + + + + Add an entry name to the buffer + + The name to add + The buffer to add to + The offset into the buffer from which to start adding + The number of header bytes to add + The index of the next free byte in the buffer + TODO: what should be default behavior?(omit upper byte or UTF8?) + + + + Add an entry name to the buffer + + The name to add + The buffer to add to + The offset into the buffer from which to start adding + The number of header bytes to add + + The index of the next free byte in the buffer + + + + Add a string to a buffer as a collection of ascii bytes. + + The string to add + The offset of the first character to add. + The buffer to add to. + The offset to start adding at. + The number of ascii characters to add. + The next free index in the buffer. + + + + Add a string to a buffer as a collection of ascii bytes. + + The string to add + The offset of the first character to add. + The buffer to add to. + The offset to start adding at. + The number of ascii characters to add. + String encoding, or null for ASCII only + The next free index in the buffer. + + + + Put an octal representation of a value into a buffer + + + the value to be converted to octal + + + buffer to store the octal string + + + The offset into the buffer where the value starts + + + The length of the octal string to create + + + The offset of the character next byte after the octal string + + + + + Put an octal or binary representation of a value into a buffer + + Value to be convert to octal + The buffer to update + The offset into the buffer to store the value + The length of the octal string. Must be 12. + Index of next byte + + + + Add the checksum integer to header buffer. + + + The header buffer to set the checksum for + The offset into the buffer for the checksum + The number of header bytes to update. + It's formatted differently from the other fields: it has 6 digits, a + null, then a space -- rather than digits, a space, then a null. + The final space is already there, from checksumming + + The modified buffer offset + + + + Compute the checksum for a tar entry header. + The checksum field must be all spaces prior to this happening + + The tar entry's header buffer. + The computed checksum. + + + + Make a checksum for a tar entry ignoring the checksum contents. + + The tar entry's header buffer. + The checksum for the buffer + + + + The TarInputStream reads a UNIX tar archive as an InputStream. + methods are provided to position at each successive entry in + the archive, and the read each entry as a normal input stream + using read(). + + + + + Construct a TarInputStream with default block factor + + stream to source data from + + + + Construct a TarInputStream with default block factor + + stream to source data from + The used for the Name fields, or null for ASCII only + + + + Construct a TarInputStream with user specified block factor + + stream to source data from + block factor to apply to archive + + + + Construct a TarInputStream with user specified block factor + + stream to source data from + block factor to apply to archive + The used for the Name fields, or null for ASCII only + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking + This property always returns false. + + + + + Gets a value indicating if the stream supports writing. + This property always returns false. + + + + + The length in bytes of the stream + + + + + Gets or sets the position within the stream. + Setting the Position is not supported and throws a NotSupportedExceptionNotSupportedException + + Any attempt to set position + + + + Flushes the baseInputStream + + + + + Set the streams position. This operation is not supported and will throw a NotSupportedException + + The offset relative to the origin to seek to. + The to start seeking from. + The new position in the stream. + Any access + + + + Sets the length of the stream + This operation is not supported and will throw a NotSupportedException + + The new stream length. + Any access + + + + Writes a block of bytes to this stream using data from a buffer. + This operation is not supported and will throw a NotSupportedException + + The buffer containing bytes to write. + The offset in the buffer of the frist byte to write. + The number of bytes to write. + Any access + + + + Writes a byte to the current position in the file stream. + This operation is not supported and will throw a NotSupportedException + + The byte value to write. + Any access + + + + Reads a byte from the current tar archive entry. + + A byte cast to an int; -1 if the at the end of the stream. + + + + Reads bytes from the current tar archive entry. + + This method is aware of the boundaries of the current + entry in the archive and will deal with them appropriately + + + The buffer into which to place bytes read. + + + The offset at which to place bytes read. + + + The number of bytes to read. + + + The number of bytes read, or 0 at end of stream/EOF. + + + + + Closes this stream. Calls the TarBuffer's close() method. + The underlying stream is closed by the TarBuffer. + + + + + Set the entry factory for this instance. + + The factory for creating new entries + + + + Get the record size being used by this stream's TarBuffer. + + + + + Get the record size being used by this stream's TarBuffer. + + + TarBuffer record size. + + + + + Get the available data that can be read from the current + entry in the archive. This does not indicate how much data + is left in the entire archive, only in the current entry. + This value is determined from the entry's size header field + and the amount of data already read from the current entry. + + + The number of available bytes for the current entry. + + + + + Skip bytes in the input buffer. This skips bytes in the + current entry's data, not the entire archive, and will + stop at the end of the current entry's data if the number + to skip extends beyond that point. + + + The number of bytes to skip. + + + + + Return a value of true if marking is supported; false otherwise. + + Currently marking is not supported, the return value is always false. + + + + Since we do not support marking just yet, we do nothing. + + + The limit to mark. + + + + + Since we do not support marking just yet, we do nothing. + + + + + Get the next entry in this tar archive. This will skip + over any remaining data in the current entry, if there + is one, and place the input stream at the header of the + next entry, and read the header and instantiate a new + TarEntry from the header bytes and return that entry. + If there are no more entries in the archive, null will + be returned to indicate that the end of the archive has + been reached. + + + The next TarEntry in the archive, or null. + + + + + Copies the contents of the current tar archive entry directly into + an output stream. + + + The OutputStream into which to write the entry's data. + + + + + This interface is provided, along with the method , to allow + the programmer to have their own subclass instantiated for the + entries return from . + + + + + Create an entry based on name alone + + + Name of the new EntryPointNotFoundException to create + + created TarEntry or descendant class + + + + Create an instance based on an actual file + + + Name of file to represent in the entry + + + Created TarEntry or descendant class + + + + + Create a tar entry based on the header information passed + + + Buffer containing header information to create an entry from. + + + Created TarEntry or descendant class + + + + + Standard entry factory class creating instances of the class TarEntry + + + + + Construct standard entry factory class with ASCII name encoding + + + + + Construct standard entry factory with name encoding + + The used for the Name fields, or null for ASCII only + + + + Create a based on named + + The name to use for the entry + A new + + + + Create a tar entry with details obtained from file + + The name of the file to retrieve details from. + A new + + + + Create an entry based on details in header + + The buffer containing entry details. + A new + + + + Flag set when last block has been read + + + + + Size of this entry as recorded in header + + + + + Number of bytes read for this entry so far + + + + + Buffer used with calls to Read() + + + + + Working buffer + + + + + Current entry being read + + + + + Factory used to create TarEntry or descendant class instance + + + + + Stream used as the source of input data. + + + + + The TarOutputStream writes a UNIX tar archive as an OutputStream. + Methods are provided to put entries, and then write their contents + by writing to this stream using write(). + + public + + + + Construct TarOutputStream using default block factor + + stream to write to + + + + Construct TarOutputStream using default block factor + + stream to write to + The used for the Name fields, or null for ASCII only + + + + Construct TarOutputStream with user specified block factor + + stream to write to + blocking factor + + + + Construct TarOutputStream with user specified block factor + + stream to write to + blocking factor + The used for the Name fields, or null for ASCII only + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + true if the stream supports reading; otherwise, false. + + + + + true if the stream supports seeking; otherwise, false. + + + + + true if stream supports writing; otherwise, false. + + + + + length of stream in bytes + + + + + gets or sets the position within the current stream. + + + + + set the position within the current stream + + The offset relative to the to seek to + The to seek from. + The new position in the stream. + + + + Set the length of the current stream + + The new stream length. + + + + Read a byte from the stream and advance the position within the stream + by one byte or returns -1 if at the end of the stream. + + The byte value or -1 if at end of stream + + + + read bytes from the current stream and advance the position within the + stream by the number of bytes read. + + The buffer to store read bytes in. + The index into the buffer to being storing bytes at. + The desired number of bytes to read. + The total number of bytes read, or zero if at the end of the stream. + The number of bytes may be less than the count + requested if data is not available. + + + + All buffered data is written to destination + + + + + Ends the TAR archive without closing the underlying OutputStream. + The result is that the EOF block of nulls is written. + + + + + Ends the TAR archive and closes the underlying OutputStream. + + This means that Finish() is called followed by calling the + TarBuffer's Close(). + + + + Get the record size being used by this stream's TarBuffer. + + + + + Get the record size being used by this stream's TarBuffer. + + + The TarBuffer record size. + + + + + Get a value indicating whether an entry is open, requiring more data to be written. + + + + + Put an entry on the output stream. This writes the entry's + header and positions the output stream for writing + the contents of the entry. Once this method is called, the + stream is ready for calls to write() to write the entry's + contents. Once the contents are written, closeEntry() + MUST be called to ensure that all buffered data + is completely written to the output stream. + + + The TarEntry to be written to the archive. + + + + + Close an entry. This method MUST be called for all file + entries that contain data. The reason is that we must + buffer data written to the stream in order to satisfy + the buffer's block based writes. Thus, there may be + data fragments still being assembled that must be written + to the output stream before this entry is closed and the + next entry written. + + + + + Writes a byte to the current tar archive entry. + This method simply calls Write(byte[], int, int). + + + The byte to be written. + + + + + Writes bytes to the current tar archive entry. This method + is aware of the current entry and will throw an exception if + you attempt to write bytes past the length specified for the + current entry. The method is also (painfully) aware of the + record buffering required by TarBuffer, and manages buffers + that are not a multiple of recordsize in length, including + assembling records from small buffers. + + + The buffer to write to the archive. + + + The offset in the buffer from which to get bytes. + + + The number of bytes to write. + + + + + Write an EOF (end of archive) block to the tar archive. + The end of the archive is indicated by two blocks consisting entirely of zero bytes. + + + + + bytes written for this entry so far + + + + + current 'Assembly' buffer length + + + + + Flag indicating whether this instance has been closed or not. + + + + + Size for the current entry + + + + + single block working buffer + + + + + 'Assembly' buffer used to assemble data before writing + + + + + TarBuffer used to provide correct blocking factor + + + + + the destination stream for the archive contents + + + + + name encoding + + + + + This is the Deflater class. The deflater class compresses input + with the deflate algorithm described in RFC 1951. It has several + compression levels and three different strategies described below. + + This class is not thread safe. This is inherent in the API, due + to the split of deflate and setInput. + + author of the original java version : Jochen Hoenicke + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Compression Level as an enum for safer use + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Creates a new deflater with default compression level. + + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION, or DEFAULT_COMPRESSION. + + if lvl is out of range. + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION. + + + true, if we should suppress the Zlib/RFC1950 header at the + beginning and the adler checksum at the end of the output. This is + useful for the GZIP/PKZIP formats. + + if lvl is out of range. + + + + Resets the deflater. The deflater acts afterwards as if it was + just created with the same compression level and strategy as it + had before. + + + + + Gets the current adler checksum of the data that was processed so far. + + + + + Gets the number of input bytes processed so far. + + + + + Gets the number of output bytes so far. + + + + + Flushes the current input block. Further calls to deflate() will + produce enough output to inflate everything in the current input + block. This is not part of Sun's JDK so I have made it package + private. It is used by DeflaterOutputStream to implement + flush(). + + + + + Finishes the deflater with the current input block. It is an error + to give more input after this method was called. This method must + be called to force all bytes to be flushed. + + + + + Returns true if the stream was finished and no more output bytes + are available. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method can also return true when the stream + was finished. + + + + + Sets the data which should be compressed next. This should be only + called when needsInput indicates that more input is needed. + If you call setInput when needsInput() returns false, the + previous input that is still pending will be thrown away. + The given byte array should not be changed, before needsInput() returns + true again. + This call is equivalent to setInput(input, 0, input.length). + + + the buffer containing the input data. + + + if the buffer was finished() or ended(). + + + + + Sets the data which should be compressed next. This should be + only called when needsInput indicates that more input is needed. + The given byte array should not be changed, before needsInput() returns + true again. + + + the buffer containing the input data. + + + the start of the data. + + + the number of data bytes of input. + + + if the buffer was Finish()ed or if previous input is still pending. + + + + + Sets the compression level. There is no guarantee of the exact + position of the change, but if you call this when needsInput is + true the change of compression level will occur somewhere near + before the end of the so far given input. + + + the new compression level. + + + + + Get current compression level + + Returns the current compression level + + + + Sets the compression strategy. Strategy is one of + DEFAULT_STRATEGY, HUFFMAN_ONLY and FILTERED. For the exact + position where the strategy is changed, the same as for + SetLevel() applies. + + + The new compression strategy. + + + + + Deflates the current input block with to the given array. + + + The buffer where compressed data is stored + + + The number of compressed bytes added to the output, or 0 if either + IsNeedingInput() or IsFinished returns true or length is zero. + + + + + Deflates the current input block to the given array. + + + Buffer to store the compressed data. + + + Offset into the output array. + + + The maximum number of bytes that may be stored. + + + The number of compressed bytes added to the output, or 0 if either + needsInput() or finished() returns true or length is zero. + + + If Finish() was previously called. + + + If offset or length don't match the array length. + + + + + Sets the dictionary which should be used in the deflate process. + This call is equivalent to setDictionary(dict, 0, dict.Length). + + + the dictionary. + + + if SetInput () or Deflate () were already called or another dictionary was already set. + + + + + Sets the dictionary which should be used in the deflate process. + The dictionary is a byte array containing strings that are + likely to occur in the data which should be compressed. The + dictionary is not stored in the compressed output, only a + checksum. To decompress the output you need to supply the same + dictionary again. + + + The dictionary data + + + The index where dictionary information commences. + + + The number of bytes in the dictionary. + + + If SetInput () or Deflate() were already called or another dictionary was already set. + + + + + Compression level. + + + + + If true no Zlib/RFC1950 headers or footers are generated + + + + + The current state. + + + + + The total bytes of output written. + + + + + The pending output. + + + + + The deflater engine. + + + + + This class contains constants used for deflation. + + + + + Set to true to enable debugging + + + + + Written to Zip file to identify a stored block + + + + + Identifies static tree in Zip file + + + + + Identifies dynamic tree in Zip file + + + + + Header flag indicating a preset dictionary for deflation + + + + + Sets internal buffer sizes for Huffman encoding + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Strategies for deflater + + + + + The default strategy + + + + + This strategy will only allow longer string repetitions. It is + useful for random data with a small character set. + + + + + This strategy will not look for string repetitions at all. It + only encodes with Huffman trees (which means, that more common + characters get a smaller encoding. + + + + + Low level compression engine for deflate algorithm which uses a 32K sliding window + with secondary compression from Huffman/Shannon-Fano codes. + + + + + Construct instance with pending buffer + Adler calculation will be performed + + + Pending buffer to use + + + + + Construct instance with pending buffer + + + Pending buffer to use + + + If no adler calculation should be performed + + + + + Deflate drives actual compression of data + + True to flush input buffers + Finish deflation with the current input. + Returns true if progress has been made. + + + + Sets input data to be deflated. Should only be called when NeedsInput() + returns true + + The buffer containing input data. + The offset of the first byte of data. + The number of bytes of data to use as input. + + + + Determines if more input is needed. + + Return true if input is needed via SetInput + + + + Set compression dictionary + + The buffer containing the dictionary data + The offset in the buffer for the first byte of data + The length of the dictionary data. + + + + Reset internal state + + + + + Reset Adler checksum + + + + + Get current value of Adler checksum + + + + + Total data processed + + + + + Get/set the deflate strategy + + + + + Set the deflate level (0-9) + + The value to set the level to. + + + + Fill the window + + + + + Inserts the current string in the head hash and returns the previous + value for this hash. + + The previous hash value + + + + Find the best (longest) string in the window matching the + string starting at strstart. + + Preconditions: + + strstart + DeflaterConstants.MAX_MATCH <= window.length. + + + True if a match greater than the minimum length is found + + + + Hashtable, hashing three characters to an index for window, so + that window[index]..window[index+2] have this hash code. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + prev[index & WMASK] points to the previous index that has the + same hash code as the string starting at index. This way + entries with the same hash code are in a linked list. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + Points to the current character in the window. + + + + + lookahead is the number of characters starting at strstart in + window that are valid. + So window[strstart] until window[strstart+lookahead-1] are valid + characters. + + + + + This array contains the part of the uncompressed stream that + is of relevance. The current character is indexed by strstart. + + + + + The current compression function. + + + + + The input data for compression. + + + + + The total bytes of input read. + + + + + The offset into inputBuf, where input data starts. + + + + + The end offset of the input data. + + + + + The adler checksum + + + + + This is the DeflaterHuffman class. + + This class is not thread safe. This is inherent in the API, due + to the split of Deflate and SetInput. + + author of the original java version : Jochen Hoenicke + + + + + Resets the internal state of the tree + + + + + Check that all frequencies are zero + + + At least one frequency is non-zero + + + + + Set static codes and length + + new codes + length for new codes + + + + Build dynamic codes and lengths + + + + + Get encoded length + + Encoded length, the sum of frequencies * lengths + + + + Scan a literal or distance tree to determine the frequencies of the codes + in the bit length tree. + + + + + Write tree values + + Tree to write + + + + Pending buffer to use + + + + + Construct instance with pending buffer + + Pending buffer to use + + + + Reset internal state + + + + + Write all trees to pending buffer + + The number/rank of treecodes to send. + + + + Compress current buffer writing data to pending buffer + + + + + Flush block to output with no compression + + Data to write + Index of first byte to write + Count of bytes to write + True if this is the last block + + + + Flush block to output with compression + + Data to flush + Index of first byte to flush + Count of bytes to flush + True if this is the last block + + + + Get value indicating if internal buffer is full + + true if buffer is full + + + + Add literal to buffer + + Literal value to add to buffer. + Value indicating internal buffer is full + + + + Add distance code and length to literal and distance trees + + Distance code + Length + Value indicating if internal buffer is full + + + + Reverse the bits of a 16 bit value. + + Value to reverse bits + Value with bits reversed + + + + This class stores the pending output of the Deflater. + + author of the original java version : Jochen Hoenicke + + + + + Construct instance with default buffer size + + + + + Inflater is used to decompress data that has been compressed according + to the "deflate" standard described in rfc1951. + + By default Zlib (rfc1950) headers and footers are expected in the input. + You can use constructor public Inflater(bool noHeader) passing true + if there is no Zlib header information + + The usage is as following. First you have to set some input with + SetInput(), then Inflate() it. If inflate doesn't + inflate any bytes there may be three reasons: +
    +
  • IsNeedingInput() returns true because the input buffer is empty. + You have to provide more input with SetInput(). + NOTE: IsNeedingInput() also returns true when, the stream is finished. +
  • +
  • IsNeedingDictionary() returns true, you have to provide a preset + dictionary with SetDictionary().
  • +
  • IsFinished returns true, the inflater has finished.
  • +
+ Once the first output byte is produced, a dictionary will not be + needed at a later stage. + + author of the original java version : John Leuner, Jochen Hoenicke +
+
+ + + Copy lengths for literal codes 257..285 + + + + + Extra bits for literal codes 257..285 + + + + + Copy offsets for distance codes 0..29 + + + + + Extra bits for distance codes + + + + + These are the possible states for an inflater + + + + + This variable contains the current state. + + + + + The adler checksum of the dictionary or of the decompressed + stream, as it is written in the header resp. footer of the + compressed stream. + Only valid if mode is DECODE_DICT or DECODE_CHKSUM. + + + + + The number of bits needed to complete the current state. This + is valid, if mode is DECODE_DICT, DECODE_CHKSUM, + DECODE_HUFFMAN_LENBITS or DECODE_HUFFMAN_DISTBITS. + + + + + True, if the last block flag was set in the last block of the + inflated stream. This means that the stream ends after the + current block. + + + + + The total number of inflated bytes. + + + + + The total number of bytes set with setInput(). This is not the + value returned by the TotalIn property, since this also includes the + unprocessed input. + + + + + This variable stores the noHeader flag that was given to the constructor. + True means, that the inflated stream doesn't contain a Zlib header or + footer. + + + + + Creates a new inflater or RFC1951 decompressor + RFC1950/Zlib headers and footers will be expected in the input data + + + + + Creates a new inflater. + + + True if no RFC1950/Zlib header and footer fields are expected in the input data + + This is used for GZIPed/Zipped input. + + For compatibility with + Sun JDK you should provide one byte of input more than needed in + this case. + + + + + Resets the inflater so that a new stream can be decompressed. All + pending input and output will be discarded. + + + + + Decodes a zlib/RFC1950 header. + + + False if more input is needed. + + + The header is invalid. + + + + + Decodes the dictionary checksum after the deflate header. + + + False if more input is needed. + + + + + Decodes the huffman encoded symbols in the input stream. + + + false if more input is needed, true if output window is + full or the current block ends. + + + if deflated stream is invalid. + + + + + Decodes the adler checksum after the deflate stream. + + + false if more input is needed. + + + If checksum doesn't match. + + + + + Decodes the deflated stream. + + + false if more input is needed, or if finished. + + + if deflated stream is invalid. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + The index into buffer where the dictionary starts. + + + The number of bytes in the dictionary. + + + No dictionary is needed. + + + The adler checksum for the buffer is invalid + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + the input. + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + The source of input data + + + The index into buffer where the input starts. + + + The number of bytes of input to use. + + + No input is needed. + + + The index and/or count are wrong. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether IsNeedingDictionary(), + IsNeedingInput() or IsFinished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + The number of bytes written to the buffer, 0 if no further + output can be produced. + + + if buffer has length 0. + + + if deflated stream is invalid. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether needsDictionary(), + needsInput() or finished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + the offset in buffer where storing starts. + + + the maximum number of bytes to output. + + + the number of bytes written to the buffer, 0 if no further output can be produced. + + + if count is less than 0. + + + if the index and / or count are wrong. + + + if deflated stream is invalid. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method also returns true when the stream is finished. + + + + + Returns true, if a preset dictionary is needed to inflate the input. + + + + + Returns true, if the inflater has finished. This means, that no + input is needed and no output can be produced. + + + + + Gets the adler checksum. This is either the checksum of all + uncompressed bytes returned by inflate(), or if needsDictionary() + returns true (and thus no output was yet produced) this is the + adler checksum of the expected dictionary. + + + the adler checksum. + + + + + Gets the total number of output bytes returned by Inflate(). + + + the total number of output bytes. + + + + + Gets the total number of processed compressed input bytes. + + + The total number of bytes of processed input bytes. + + + + + Gets the number of unprocessed input bytes. Useful, if the end of the + stream is reached and you want to further process the bytes after + the deflate stream. + + + The number of bytes of the input which have not been processed. + + + + + Continue decoding header from until more bits are needed or decoding has been completed + + Returns whether decoding could be completed + + + + Get literal/length huffman tree, must not be used before has returned true + + If hader has not been successfully read by the state machine + + + + Get distance huffman tree, must not be used before has returned true + + If hader has not been successfully read by the state machine + + + + Huffman tree used for inflation + + + + + Literal length tree + + + + + Distance tree + + + + + Constructs a Huffman tree from the array of code lengths. + + + the array of code lengths + + + + + Reads the next symbol from input. The symbol is encoded using the + huffman tree. + + + input the input source. + + + the next symbol, or -1 if not enough input is available. + + + + + This class is general purpose class for writing data to a buffer. + + It allows you to write bits as well as bytes + Based on DeflaterPending.java + + author of the original java version : Jochen Hoenicke + + + + + Internal work buffer + + + + + construct instance using default buffer size of 4096 + + + + + construct instance using specified buffer size + + + size to use for internal buffer + + + + + Clear internal state/buffers + + + + + Write a byte to buffer + + + The value to write + + + + + Write a short value to buffer LSB first + + + The value to write. + + + + + write an integer LSB first + + The value to write. + + + + Write a block of data to buffer + + data to write + offset of first byte to write + number of bytes to write + + + + The number of bits written to the buffer + + + + + Align internal buffer on a byte boundary + + + + + Write bits to internal buffer + + source of bits + number of bits to write + + + + Write a short value to internal buffer most significant byte first + + value to write + + + + Indicates if buffer has been flushed + + + + + Flushes the pending buffer into the given output array. If the + output array is to small, only a partial flush is done. + + The output array. + The offset into output array. + The maximum number of bytes to store. + The number of bytes flushed. + + + + Convert internal buffer to byte array. + Buffer is empty on completion + + + The internal buffer contents converted to a byte array. + + + + + A special stream deflating or compressing the bytes that are + written to it. It uses a Deflater to perform actual deflating.
+ Authors of the original java version : Tom Tromey, Jochen Hoenicke +
+
+ + + Creates a new DeflaterOutputStream with a default Deflater and default buffer size. + + + the output stream where deflated output should be written. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + default buffer size. + + + the output stream where deflated output should be written. + + + the underlying deflater. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + buffer size. + + + The output stream where deflated output is written. + + + The underlying deflater to use + + + The buffer size in bytes to use when deflating (minimum value 512) + + + bufsize is less than or equal to zero. + + + baseOutputStream does not support writing + + + deflater instance is null + + + + + Finishes the stream by calling finish() on the deflater. + + + Not all input is deflated + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Allows client to determine if an entry can be patched after its added + + + + + The CryptoTransform currently being used to encrypt the compressed data. + + + + + Returns the 10 byte AUTH CODE to be appended immediately following the AES data stream. + + + + + Encrypt a block of data + + + Data to encrypt. NOTE the original contents of the buffer are lost + + + Offset of first byte in buffer to encrypt + + + Number of bytes in buffer to encrypt + + + + + Deflates everything in the input buffers. This will call + def.deflate() until all bytes from the input buffers + are processed. + + + + + Gets value indicating stream can be read from + + + + + Gets a value indicating if seeking is supported for this stream + This property always returns false + + + + + Get value indicating if this stream supports writing + + + + + Get current length of stream + + + + + Gets the current position within the stream. + + Any attempt to set position + + + + Sets the current position of this stream to the given value. Not supported by this class! + + The offset relative to the to seek. + The to seek from. + The new position in the stream. + Any access + + + + Sets the length of this stream to the given value. Not supported by this class! + + The new stream length. + Any access + + + + Read a byte from stream advancing position by one + + The byte read cast to an int. THe value is -1 if at the end of the stream. + Any access + + + + Read a block of bytes from stream + + The buffer to store read data in. + The offset to start storing at. + The maximum number of bytes to read. + The actual number of bytes read. Zero if end of stream is detected. + Any access + + + + Flushes the stream by calling Flush on the deflater and then + on the underlying stream. This ensures that all bytes are flushed. + + + + + Calls and closes the underlying + stream when is true. + + + + + Get the Auth code for AES encrypted entries + + + + + Writes a single byte to the compressed output stream. + + + The byte value. + + + + + Writes bytes from an array to the compressed stream. + + + The byte array + + + The offset into the byte array where to start. + + + The number of bytes to write. + + + + + This buffer is used temporarily to retrieve the bytes from the + deflater and write them to the underlying output stream. + + + + + The deflater which is used to deflate the stream. + + + + + Base stream the deflater depends on. + + + + + An input buffer customised for use by + + + The buffer supports decryption of incoming data. + + + + + Initialise a new instance of with a default buffer size + + The stream to buffer. + + + + Initialise a new instance of + + The stream to buffer. + The size to use for the buffer + A minimum buffer size of 1KB is permitted. Lower sizes are treated as 1KB. + + + + Get the length of bytes in the + + + + + Get the contents of the raw data buffer. + + This may contain encrypted data. + + + + Get the number of useable bytes in + + + + + Get the contents of the clear text buffer. + + + + + Get/set the number of bytes available + + + + + Call passing the current clear text buffer contents. + + The inflater to set input for. + + + + Fill the buffer from the underlying input stream. + + + + + Read a buffer directly from the input stream + + The buffer to fill + Returns the number of bytes read. + + + + Read a buffer directly from the input stream + + The buffer to read into + The offset to start reading data into. + The number of bytes to read. + Returns the number of bytes read. + + + + Read clear text data from the input stream. + + The buffer to add data to. + The offset to start adding data at. + The number of bytes to read. + Returns the number of bytes actually read. + + + + Read a from the input stream. + + Returns the byte read. + + + + Read an in little endian byte order. + + The short value read case to an int. + + + + Read an in little endian byte order. + + The int value read. + + + + Read a in little endian byte order. + + The long value read. + + + + Get/set the to apply to any data. + + Set this value to null to have no transform applied. + + + + This filter stream is used to decompress data compressed using the "deflate" + format. The "deflate" format is described in RFC 1951. + + This stream may form the basis for other decompression filters, such + as the GZipInputStream. + + Author of the original java version : John Leuner. + + + + + Create an InflaterInputStream with the default decompressor + and a default buffer size of 4KB. + + + The InputStream to read bytes from + + + + + Create an InflaterInputStream with the specified decompressor + and a default buffer size of 4KB. + + + The source of input data + + + The decompressor used to decompress data read from baseInputStream + + + + + Create an InflaterInputStream with the specified decompressor + and the specified buffer size. + + + The InputStream to read bytes from + + + The decompressor to use + + + Size of the buffer to use + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Skip specified number of bytes of uncompressed data + + + Number of bytes to skip + + + The number of bytes skipped, zero if the end of + stream has been reached + + + The number of bytes to skip is less than or equal to zero. + + + + + Clear any cryptographic state. + + + + + Returns 0 once the end of the stream (EOF) has been reached. + Otherwise returns 1. + + + + + Fills the buffer with more data to decompress. + + + Stream ends early + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + Inflater needs a dictionary + + + + + Decompressor for this stream + + + + + Input buffer for this stream. + + + + + Base stream the inflater reads from. + + + + + The compressed size + + + + + Flag indicating whether this instance has been closed or not. + + + + + Contains the output from the Inflation process. + We need to have a window so that we can refer backwards into the output stream + to repeat stuff.
+ Author of the original java version : John Leuner +
+
+ + + Write a byte to this output window + + value to write + + if window is full + + + + + Append a byte pattern already in the window itself + + length of pattern to copy + distance from end of window pattern occurs + + If the repeated data overflows the window + + + + + Copy from input manipulator to internal window + + source of data + length of data to copy + the number of bytes copied + + + + Copy dictionary to window + + source dictionary + offset of start in source dictionary + length of dictionary + + If window isnt empty + + + + + Get remaining unfilled space in window + + Number of bytes left in window + + + + Get bytes available for output in window + + Number of bytes filled + + + + Copy contents of window to output + + buffer to copy to + offset to start at + number of bytes to count + The number of bytes copied + + If a window underflow occurs + + + + + Reset by clearing window so GetAvailable returns 0 + + + + + This class allows us to retrieve a specified number of bits from + the input buffer, as well as copy big byte blocks. + + It uses an int buffer to store up to 31 bits for direct + manipulation. This guarantees that we can get at least 16 bits, + but we only need at most 15, so this is all safe. + + There are some optimizations in this class, for example, you must + never peek more than 8 bits more than needed, and you must first + peek bits before you may drop them. This is not a general purpose + class but optimized for the behaviour of the Inflater. + + authors of the original java version : John Leuner, Jochen Hoenicke + + + + + Get the next sequence of bits but don't increase input pointer. bitCount must be + less or equal 16 and if this call succeeds, you must drop + at least n - 8 bits in the next call. + + The number of bits to peek. + + the value of the bits, or -1 if not enough bits available. */ + + + + + Tries to grab the next bits from the input and + sets to the value, adding . + + true if enough bits could be read, otherwise false + + + + Tries to grab the next bits from the input and + sets of to the value. + + true if enough bits could be read, otherwise false + + + + Drops the next n bits from the input. You should have called PeekBits + with a bigger or equal n before, to make sure that enough bits are in + the bit buffer. + + The number of bits to drop. + + + + Gets the next n bits and increases input pointer. This is equivalent + to followed by , except for correct error handling. + + The number of bits to retrieve. + + the value of the bits, or -1 if not enough bits available. + + + + + Gets the number of bits available in the bit buffer. This must be + only called when a previous PeekBits() returned -1. + + + the number of bits available. + + + + + Gets the number of bytes available. + + + The number of bytes available. + + + + + Skips to the next byte boundary. + + + + + Returns true when SetInput can be called + + + + + Copies bytes from input buffer to output buffer starting + at output[offset]. You have to make sure, that the buffer is + byte aligned. If not enough bytes are available, copies fewer + bytes. + + + The buffer to copy bytes to. + + + The offset in the buffer at which copying starts + + + The length to copy, 0 is allowed. + + + The number of bytes copied, 0 if no bytes were available. + + + Length is less than zero + + + Bit buffer isnt byte aligned + + + + + Resets state and empties internal buffers + + + + + Add more input for consumption. + Only call when IsNeedingInput returns true + + data to be input + offset of first byte of input + number of bytes of input to add. + + + + FastZipEvents supports all events applicable to FastZip operations. + + + + + Delegate to invoke when processing directories. + + + + + Delegate to invoke when processing files. + + + + + Delegate to invoke during processing of files. + + + + + Delegate to invoke when processing for a file has been completed. + + + + + Delegate to invoke when processing directory failures. + + + + + Delegate to invoke when processing file failures. + + + + + Raise the directory failure event. + + The directory causing the failure. + The exception for this event. + A boolean indicating if execution should continue or not. + + + + Fires the file failure handler delegate. + + The file causing the failure. + The exception for this failure. + A boolean indicating if execution should continue or not. + + + + Fires the ProcessFile delegate. + + The file being processed. + A boolean indicating if execution should continue or not. + + + + Fires the delegate + + The file whose processing has been completed. + A boolean indicating if execution should continue or not. + + + + Fires the process directory delegate. + + The directory being processed. + Flag indicating if the directory has matching files as determined by the current filter. + A of true if the operation should continue; false otherwise. + + + + The minimum timespan between events. + + The minimum period of time between events. + + The default interval is three seconds. + + + + FastZip provides facilities for creating and extracting zip files. + + + + + Defines the desired handling when overwriting files during extraction. + + + + + Prompt the user to confirm overwriting + + + + + Never overwrite files. + + + + + Always overwrite files. + + + + + Initialise a default instance of . + + + + + Initialise a new instance of using the specified + + The time setting to use when creating or extracting Zip entries. + Using TimeSetting.LastAccessTime[Utc] when + creating an archive will set the file time to the moment of reading. + + + + + Initialise a new instance of using the specified + + The time to set all values for created or extracted Zip Entries. + + + + Initialise a new instance of + + The events to use during operations. + + + + Get/set a value indicating whether empty directories should be created. + + + + + Get / set the password value. + + + + + Get / set the method of encrypting entries. + + + Only applies when is set. + Defaults to ZipCrypto for backwards compatibility purposes. + + + + + Get or set the active when creating Zip files. + + + + + + Get or set the active when creating Zip files. + + + + + Gets or sets the setting for Zip64 handling when writing. + + + The default value is dynamic which is not backwards compatible with old + programs and can cause problems with XP's built in compression which cant + read Zip64 archives. However it does avoid the situation were a large file + is added and cannot be completed correctly. + NOTE: Setting the size for entries before they are added is the best solution! + By default the EntryFactory used by FastZip will set the file size. + + + + + Get/set a value indicating whether file dates and times should + be restored when extracting files from an archive. + + The default value is false. + + + + Get/set a value indicating whether file attributes should + be restored during extract operations + + + + + Get/set the Compression Level that will be used + when creating the zip + + + + + Delegate called when confirming overwriting of files. + + + + + Create a zip file. + + The name of the zip file to create. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + + + + Create a zip file/archive. + + The name of the zip file to create. + The directory to obtain files and directories from. + True to recurse directories, false for no recursion. + The file filter to apply. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + The is closed after creation. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + true to leave open after the zip has been created, false to dispose it. + + + + Create a zip file. + + The name of the zip file to create. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + true to leave open after the zip has been created, false to dispose it. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + For performing the actual file system scan + true to leave open after the zip has been created, false to dispose it. + The is closed after creation. + + + + Extract the contents of a zip file. + + The zip file to extract from. + The directory to save extracted information in. + A filter to apply to files. + + + + Extract the contents of a zip file. + + The zip file to extract from. + The directory to save extracted information in. + The style of overwriting to apply. + A delegate to invoke when confirming overwriting. + A filter to apply to files. + A filter to apply to directories. + Flag indicating whether to restore the date and time for extracted files. + Allow parent directory traversal in file paths (e.g. ../file) + + + + Extract the contents of a zip file held in a stream. + + The seekable input stream containing the zip to extract from. + The directory to save extracted information in. + The style of overwriting to apply. + A delegate to invoke when confirming overwriting. + A filter to apply to files. + A filter to apply to directories. + Flag indicating whether to restore the date and time for extracted files. + Flag indicating whether the inputStream will be closed by this method. + Allow parent directory traversal in file paths (e.g. ../file) + + + + Defines factory methods for creating new values. + + + + + Create a for a file given its name + + The name of the file to create an entry for. + Returns a file entry based on the passed. + + + + Create a for a file given its name + + The name of the file to create an entry for. + If true get details from the file system if the file exists. + Returns a file entry based on the passed. + + + + Create a for a file given its actual name and optional override name + + The name of the file to create an entry for. + An alternative name to be used for the new entry. Null if not applicable. + If true get details from the file system if the file exists. + Returns a file entry based on the passed. + + + + Create a for a directory given its name + + The name of the directory to create an entry for. + Returns a directory entry based on the passed. + + + + Create a for a directory given its name + + The name of the directory to create an entry for. + If true get details from the file system for this directory if it exists. + Returns a directory entry based on the passed. + + + + Get/set the applicable. + + + + + Get the in use. + + + + + Get the value to use when is set to , + or if not specified, the value of when the class was the initialized + + + + + WindowsNameTransform transforms names to windows compatible ones. + + + + + The maximum windows path name permitted. + + This may not valid for all windows systems - CE?, etc but I cant find the equivalent in the CLR. + + + + In this case we need Windows' invalid path characters. + Path.GetInvalidPathChars() only returns a subset invalid on all platforms. + + + + + Initialises a new instance of + + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Initialise a default instance of + + + + + Gets or sets a value containing the target directory to prefix values with. + + + + + Allow parent directory traversal in file paths (e.g. ../file) + + + + + Gets or sets a value indicating whether paths on incoming values should be removed. + + + + + Transform a Zip directory name to a windows directory name. + + The directory name to transform. + The transformed name. + + + + Transform a Zip format file name to a windows style one. + + The file name to transform. + The transformed name. + + + + Test a name to see if it is a valid name for a windows filename as extracted from a Zip archive. + + The name to test. + Returns true if the name is a valid zip name; false otherwise. + The filename isnt a true windows path in some fundamental ways like no absolute paths, no rooted paths etc. + + + + Force a name to be valid by replacing invalid characters with a fixed value + + The name to make valid + The replacement character to use for any invalid characters. + Returns a valid name + + + + Gets or set the character to replace invalid characters during transformations. + + + + + Determines how entries are tested to see if they should use Zip64 extensions or not. + + + + + Zip64 will not be forced on entries during processing. + + An entry can have this overridden if required + + + + Zip64 should always be used. + + + + + #ZipLib will determine use based on entry values when added to archive. + + + + + The kind of compression used for an entry in an archive + + + + + A direct copy of the file contents is held in the archive + + + + + Common Zip compression method using a sliding dictionary + of up to 32KB and secondary compression from Huffman/Shannon-Fano trees + + + + + An extension to deflate with a 64KB window. Not supported by #Zip currently + + + + + BZip2 compression. Not supported by #Zip. + + + + + LZMA compression. Not supported by #Zip. + + + + + PPMd compression. Not supported by #Zip. + + + + + WinZip special for AES encryption, Now supported by #Zip. + + + + + Identifies the encryption algorithm used for an entry + + + + + No encryption has been used. + + + + + Encrypted using PKZIP 2.0 or 'classic' encryption. + + + + + DES encryption has been used. + + + + + RC2 encryption has been used for encryption. + + + + + Triple DES encryption with 168 bit keys has been used for this entry. + + + + + Triple DES with 112 bit keys has been used for this entry. + + + + + AES 128 has been used for encryption. + + + + + AES 192 has been used for encryption. + + + + + AES 256 has been used for encryption. + + + + + RC2 corrected has been used for encryption. + + + + + Blowfish has been used for encryption. + + + + + Twofish has been used for encryption. + + + + + RC4 has been used for encryption. + + + + + An unknown algorithm has been used for encryption. + + + + + Defines the contents of the general bit flags field for an archive entry. + + + + + Bit 0 if set indicates that the file is encrypted + + + + + Bits 1 and 2 - Two bits defining the compression method (only for Method 6 Imploding and 8,9 Deflating) + + + + + Bit 3 if set indicates a trailing data descriptor is appended to the entry data + + + + + Bit 4 is reserved for use with method 8 for enhanced deflation + + + + + Bit 5 if set indicates the file contains Pkzip compressed patched data. + Requires version 2.7 or greater. + + + + + Bit 6 if set indicates strong encryption has been used for this entry. + + + + + Bit 7 is currently unused + + + + + Bit 8 is currently unused + + + + + Bit 9 is currently unused + + + + + Bit 10 is currently unused + + + + + Bit 11 if set indicates the filename and + comment fields for this file must be encoded using UTF-8. + + + + + Bit 12 is documented as being reserved by PKware for enhanced compression. + + + + + Bit 13 if set indicates that values in the local header are masked to hide + their actual values, and the central directory is encrypted. + + + Used when encrypting the central directory contents. + + + + + Bit 14 is documented as being reserved for use by PKware + + + + + Bit 15 is documented as being reserved for use by PKware + + + + + This class contains constants used for Zip format files + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See . + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See ZipInputStream.CanDecompressEntry. + + + + + The minimum version required to support strong encryption + + + + + The minimum version required to support strong encryption + + + + + Version indicating AES encryption + + + + + The version required for Zip64 extensions (4.5 or higher) + + + + + The version required for BZip2 compression (4.6 or higher) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of Zip64 data descriptor + + + + + Size of data descriptor + + + + + Size of data descriptor + + + + + Size of central header entry (excluding variable fields) + + + + + Size of central header entry + + + + + Size of end of central record (excluding variable fields) + + + + + Size of end of central record (excluding variable fields) + + + + + Size of 'classic' cryptographic header stored before any entry data + + + + + Size of cryptographic header stored before entry data + + + + + The size of the Zip64 central directory locator. + + + + + Signature for local entry header + + + + + Signature for local entry header + + + + + Signature for spanning entry + + + + + Signature for spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for central header + + + + + Signature for central header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central directory locator + + + + + Signature for archive extra data signature (were headers are encrypted). + + + + + Central header digital signature + + + + + Central header digital signature + + + + + End of central directory record signature + + + + + End of central directory record signature + + + + + Default encoding used for string conversion. 0 gives the default system OEM code page. + Using the default code page isnt the full solution necessarily + there are many variable factors, codepage 850 is often a good choice for + European users, however be careful about compatability. + + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + + The method of encrypting entries when creating zip archives. + + + + + No encryption will be used. + + + + + Encrypt entries with ZipCrypto. + + + + + Encrypt entries with AES 128. + + + + + Encrypt entries with AES 256. + + + + + Defines known values for the property. + + + + + Host system = MSDOS + + + + + Host system = Amiga + + + + + Host system = Open VMS + + + + + Host system = Unix + + + + + Host system = VMCms + + + + + Host system = Atari ST + + + + + Host system = OS2 + + + + + Host system = Macintosh + + + + + Host system = ZSystem + + + + + Host system = Cpm + + + + + Host system = Windows NT + + + + + Host system = MVS + + + + + Host system = VSE + + + + + Host system = Acorn RISC + + + + + Host system = VFAT + + + + + Host system = Alternate MVS + + + + + Host system = BEOS + + + + + Host system = Tandem + + + + + Host system = OS400 + + + + + Host system = OSX + + + + + Host system = WinZIP AES + + + + + This class represents an entry in a zip archive. This can be a file + or a directory + ZipFile and ZipInputStream will give you instances of this class as + information about the members in an archive. ZipOutputStream + uses an instance of this class when creating an entry in a Zip file. +
+
Author of the original java version : Jochen Hoenicke +
+
+ + + Creates a zip entry with the given name. + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with relative names only. + There are with no device names and path elements are separated by '/' characters. + + + The name passed is null + + + + + Creates a zip entry with the given name and version required to extract + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with no device names and + path elements separated by '/' characters. This is not enforced see CleanName + on how to ensure names are valid if this is desired. + + + The minimum 'feature version' required this entry + + + The name passed is null + + + + + Initializes an entry with the given name and made by information + + Name for this entry + Version and HostSystem Information + Minimum required zip feature version required to extract this entry + Compression method for this entry. + + The name passed is null + + + versionRequiredToExtract should be 0 (auto-calculate) or > 10 + + + This constructor is used by the ZipFile class when reading from the central header + It is not generally useful, use the constructor specifying the name only. + + + + + Creates a deep copy of the given zip entry. + + + The entry to copy. + + + + + Get a value indicating whether the entry has a CRC value available. + + + + + Get/Set flag indicating if entry is encrypted. + A simple helper routine to aid interpretation of flags + + This is an assistant that interprets the flags property. + + +
+ This is an assistant that interprets the flags property. + + + + Value used during password checking for PKZIP 2.0 / 'classic' encryption. + + + + + Get/Set general purpose bit flag for entry + + + General purpose bit flag
+
+ Bit 0: If set, indicates the file is encrypted
+ Bit 1-2 Only used for compression type 6 Imploding, and 8, 9 deflating
+ Imploding:
+ Bit 1 if set indicates an 8K sliding dictionary was used. If clear a 4k dictionary was used
+ Bit 2 if set indicates 3 Shannon-Fanno trees were used to encode the sliding dictionary, 2 otherwise
+
+ Deflating:
+ Bit 2 Bit 1
+ 0 0 Normal compression was used
+ 0 1 Maximum compression was used
+ 1 0 Fast compression was used
+ 1 1 Super fast compression was used
+
+ Bit 3: If set, the fields crc-32, compressed size + and uncompressed size are were not able to be written during zip file creation + The correct values are held in a data descriptor immediately following the compressed data.
+ Bit 4: Reserved for use by PKZIP for enhanced deflating
+ Bit 5: If set indicates the file contains compressed patch data
+ Bit 6: If set indicates strong encryption was used.
+ Bit 7-10: Unused or reserved
+ Bit 11: If set the name and comments for this entry are in unicode.
+ Bit 12-15: Unused or reserved
+
+ + +
+ + + Get/Set index of this entry in Zip file + + This is only valid when the entry is part of a + + + + Get/set offset for use in central header + + + + + Get/Set external file attributes as an integer. + The values of this are operating system dependent see + HostSystem for details + + + + + Get the version made by for this entry or zero if unknown. + The value / 10 indicates the major version number, and + the value mod 10 is the minor version number + + + + + Get a value indicating this entry is for a DOS/Windows system. + + + + + Test the external attributes for this to + see if the external attributes are Dos based (including WINNT and variants) + and match the values + + The attributes to test. + Returns true if the external attributes are known to be DOS/Windows + based and have the same attributes set as the value passed. + + + + Gets the compatibility information for the external file attribute + If the external file attributes are compatible with MS-DOS and can be read + by PKZIP for DOS version 2.04g then this value will be zero. Otherwise the value + will be non-zero and identify the host system on which the attributes are compatible. + + + + The values for this as defined in the Zip File format and by others are shown below. The values are somewhat + misleading in some cases as they are not all used as shown. You should consult the relevant documentation + to obtain up to date and correct information. The modified appnote by the infozip group is + particularly helpful as it documents a lot of peculiarities. The document is however a little dated. + + 0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems) + 1 - Amiga + 2 - OpenVMS + 3 - Unix + 4 - VM/CMS + 5 - Atari ST + 6 - OS/2 HPFS + 7 - Macintosh + 8 - Z-System + 9 - CP/M + 10 - Windows NTFS + 11 - MVS (OS/390 - Z/OS) + 12 - VSE + 13 - Acorn Risc + 14 - VFAT + 15 - Alternate MVS + 16 - BeOS + 17 - Tandem + 18 - OS/400 + 19 - OS/X (Darwin) + 99 - WinZip AES + remainder - unused + + + + + + Get minimum Zip feature version required to extract this entry + + + Minimum features are defined as:
+ 1.0 - Default value
+ 1.1 - File is a volume label
+ 2.0 - File is a folder/directory
+ 2.0 - File is compressed using Deflate compression
+ 2.0 - File is encrypted using traditional encryption
+ 2.1 - File is compressed using Deflate64
+ 2.5 - File is compressed using PKWARE DCL Implode
+ 2.7 - File is a patch data set
+ 4.5 - File uses Zip64 format extensions
+ 4.6 - File is compressed using BZIP2 compression
+ 5.0 - File is encrypted using DES
+ 5.0 - File is encrypted using 3DES
+ 5.0 - File is encrypted using original RC2 encryption
+ 5.0 - File is encrypted using RC4 encryption
+ 5.1 - File is encrypted using AES encryption
+ 5.1 - File is encrypted using corrected RC2 encryption
+ 5.1 - File is encrypted using corrected RC2-64 encryption
+ 6.1 - File is encrypted using non-OAEP key wrapping
+ 6.2 - Central directory encryption (not confirmed yet)
+ 6.3 - File is compressed using LZMA
+ 6.3 - File is compressed using PPMD+
+ 6.3 - File is encrypted using Blowfish
+ 6.3 - File is encrypted using Twofish
+
+ +
+ + + Get a value indicating whether this entry can be decompressed by the library. + + This is based on the and + whether the compression method is supported. + + + + Force this entry to be recorded using Zip64 extensions. + + + + + Get a value indicating whether Zip64 extensions were forced. + + A value of true if Zip64 extensions have been forced on; false if not. + + + + Gets a value indicating if the entry requires Zip64 extensions + to store the full entry values. + + A value of true if a local header requires Zip64 extensions; false if not. + + + + Get a value indicating whether the central directory entry requires Zip64 extensions to be stored. + + + + + Get/Set DosTime value. + + + The MS-DOS date format can only represent dates between 1/1/1980 and 12/31/2107. + + + + + Gets/Sets the time of last modification of the entry. + + + The property is updated to match this as far as possible. + + + + + Returns the entry name. + + + The unix naming convention is followed. + Path components in the entry should always separated by forward slashes ('/'). + Dos device names like C: should also be removed. + See the class, or + + + + + Gets/Sets the size of the uncompressed data. + + + The size or -1 if unknown. + + Setting the size before adding an entry to an archive can help + avoid compatibility problems with some archivers which don't understand Zip64 extensions. + + + + Gets/Sets the size of the compressed data. + + + The compressed entry size or -1 if unknown. + + + + + Gets/Sets the crc of the uncompressed data. + + + Crc is not in the range 0..0xffffffffL + + + The crc value or -1 if unknown. + + + + + Gets/Sets the compression method. + + + The compression method for this entry + + + + + Gets the compression method for outputting to the local or central header. + Returns same value as CompressionMethod except when AES encrypting, which + places 99 in the method and places the real method in the extra data. + + + + + Gets/Sets the extra data. + + + Extra data is longer than 64KB (0xffff) bytes. + + + Extra data or null if not set. + + + + + For AES encrypted files returns or sets the number of bits of encryption (128, 192 or 256). + When setting, only 0 (off), 128 or 256 is supported. + + + + + AES Encryption strength for storage in extra data in entry header. + 1 is 128 bit, 2 is 192 bit, 3 is 256 bit. + + + + + Returns the length of the salt, in bytes + + Key size -> Salt length: 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes. + + + + Number of extra bytes required to hold the AES Header fields (Salt, Pwd verify, AuthCode) + + File format: + Bytes | Content + ---------+--------------------------- + Variable | Salt value + 2 | Password verification value + Variable | Encrypted file data + 10 | Authentication code + + + + Number of extra bytes required to hold the encryption header fields. + + + + + Process extra data fields updating the entry based on the contents. + + True if the extra data fields should be handled + for a local header, rather than for a central header. + + + + + Gets/Sets the entry comment. + + + If comment is longer than 0xffff. + + + The comment or null if not set. + + + A comment is only available for entries when read via the class. + The class doesn't have the comment data available. + + + + + Gets a value indicating if the entry is a directory. + however. + + + A directory is determined by an entry name with a trailing slash '/'. + The external file attributes can also indicate an entry is for a directory. + Currently only dos/windows attributes are tested in this manner. + The trailing slash convention should always be followed. + + + + + Get a value of true if the entry appears to be a file; false otherwise + + + This only takes account of DOS/Windows attributes. Other operating systems are ignored. + For linux and others the result may be incorrect. + + + + + Test entry to see if data can be extracted. + + Returns true if data can be extracted for this entry; false otherwise. + + + + Creates a copy of this zip entry. + + An that is a copy of the current instance. + + + + Gets a string representation of this ZipEntry. + + A readable textual representation of this + + + + Test a compression method to see if this library + supports extracting data compressed with that method + + The compression method to test. + Returns true if the compression method is supported; false otherwise + + + + Cleans a name making it conform to Zip file conventions. + Devices names ('c:\') and UNC share names ('\\server\share') are removed + and forward slashes ('\') are converted to back slashes ('/'). + Names are made relative by trimming leading slashes which is compatible + with the ZIP naming convention. + + The name to clean + The 'cleaned' name. + + The Zip name transform class is more flexible. + + + + + General ZipEntry helper extensions + + + + + Efficiently check if a flag is set without enum un-/boxing + + + + Returns whether the flag was set + + + + Efficiently set a flag without enum un-/boxing + + + + Whether the passed flag should be set (1) or cleared (0) + + + + Basic implementation of + + + + + Defines the possible values to be used for the . + + + + + Use the recorded LastWriteTime value for the file. + + + + + Use the recorded LastWriteTimeUtc value for the file + + + + + Use the recorded CreateTime value for the file. + + + + + Use the recorded CreateTimeUtc value for the file. + + + + + Use the recorded LastAccessTime value for the file. + + + + + Use the recorded LastAccessTimeUtc value for the file. + + + + + Use a fixed value. + + The actual value used can be + specified via the constructor or + using the with the setting set + to which will use the when this class was constructed. + The property can also be used to set this value. + + + + Initialise a new instance of the class. + + A default , and the LastWriteTime for files is used. + + + + Initialise a new instance of using the specified + + The time setting to use when creating Zip entries. + + + + Initialise a new instance of using the specified + + The time to set all values to. + + + + Get / set the to be used when creating new values. + + + Setting this property to null will cause a default name transform to be used. + + + + + Get / set the in use. + + + + + Get / set the value to use when is set to + + + + + A bitmask defining the attributes to be retrieved from the actual file. + + The default is to get all possible attributes from the actual file. + + + + A bitmask defining which attributes are to be set on. + + By default no attributes are set on. + + + + Get set a value indicating whether unidoce text should be set on. + + + + + Make a new for a file. + + The name of the file to create a new entry for. + Returns a new based on the . + + + + Make a new for a file. + + The name of the file to create a new entry for. + If true entry detail is retrieved from the file system if the file exists. + Returns a new based on the . + + + + Make a new from a name. + + The name of the file to create a new entry for. + An alternative name to be used for the new entry. Null if not applicable. + If true entry detail is retrieved from the file system if the file exists. + Returns a new based on the . + + + + Make a new for a directory. + + The raw untransformed name for the new directory + Returns a new representing a directory. + + + + Make a new for a directory. + + The raw untransformed name for the new directory + If true entry detail is retrieved from the file system if the file exists. + Returns a new representing a directory. + + + + ZipException represents exceptions specific to Zip classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the ZipException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + ExtraData tagged value interface. + + + + + Get the ID for this tagged data value. + + + + + Set the contents of this instance from the data passed. + + The data to extract contents from. + The offset to begin extracting data from. + The number of bytes to extract. + + + + Get the data representing this instance. + + Returns the data for this instance. + + + + A raw binary tagged value + + + + + Initialise a new instance. + + The tag ID. + + + + Get the ID for this tagged data value. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Get /set the binary data representing this instance. + + The raw binary data representing this instance. + + + + The tag ID for this instance. + + + + + Class representing extended unix date time values. + + + + + Flags indicate which values are included in this instance. + + + + + The modification time is included + + + + + The access time is included + + + + + The create time is included. + + + + + Get the ID + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a value to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + The standard Unix time is a signed integer data type, directly encoding the Unix time number, + which is the number of seconds since 1970-01-01. + Being 32 bits means the values here cover a range of about 136 years. + The minimum representable time is 1901-12-13 20:45:52, + and the maximum representable time is 2038-01-19 03:14:07. + + + + + Get /set the Modification Time + + + + + + + Get / set the Access Time + + + + + + + Get / Set the Create Time + + + + + + + Get/set the values to include. + + + + + Class handling NT date time values. + + + + + Get the ID for this tagged data value. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a valuie to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + + NTFS filetimes are 64-bit unsigned integers, stored in Intel + (least significant byte first) byte order. They determine the + number of 1.0E-07 seconds (1/10th microseconds!) past WinNT "epoch", + which is "01-Jan-1601 00:00:00 UTC". 28 May 60056 is the upper limit + + + + + Get/set the last modification time. + + + + + Get /set the create time + + + + + Get /set the last access time. + + + + + A factory that creates tagged data instances. + + + + + Get data for a specific tag value. + + The tag ID to find. + The data to search. + The offset to begin extracting data from. + The number of bytes to extract. + The located value found, or null if not found. + + + + + A class to handle the extra data field for Zip entries + + + Extra data contains 0 or more values each prefixed by a header tag and length. + They contain zero or more bytes of actual data. + The data is held internally using a copy on write strategy. This is more efficient but + means that for extra data created by passing in data can have the values modified by the caller + in some circumstances. + + + + + Initialise a default instance. + + + + + Initialise with known extra data. + + The extra data. + + + + Get the raw extra data value + + Returns the raw byte[] extra data this instance represents. + + + + Clear the stored data. + + + + + Gets the current extra data length. + + + + + Get a read-only for the associated tag. + + The tag to locate data for. + Returns a containing tag data or null if no tag was found. + + + + Get the tagged data for a tag. + + The tag to search for. + Returns a tagged value or null if none found. + + + + Get the length of the last value found by + + This is only valid if has previously returned true. + + + + Get the index for the current read value. + + This is only valid if has previously returned true. + Initially the result will be the index of the first byte of actual data. The value is updated after calls to + , and . + + + + Get the number of bytes remaining to be read for the current value; + + + + + Find an extra data value + + The identifier for the value to find. + Returns true if the value was found; false otherwise. + + + + Add a new entry to extra data. + + The value to add. + + + + Add a new entry to extra data + + The ID for this entry. + The data to add. + If the ID already exists its contents are replaced. + + + + Start adding a new entry. + + Add data using , , , or . + The new entry is completed and actually added by calling + + + + + Add entry data added since using the ID passed. + + The identifier to use for this entry. + + + + Add a byte of data to the pending new entry. + + The byte to add. + + + + + Add data to a pending new entry. + + The data to add. + + + + + Add a short value in little endian order to the pending new entry. + + The data to add. + + + + + Add an integer value in little endian order to the pending new entry. + + The data to add. + + + + + Add a long value in little endian order to the pending new entry. + + The data to add. + + + + + Delete an extra data field. + + The identifier of the field to delete. + Returns true if the field was found and deleted. + + + + Read a long in little endian form from the last found data value + + Returns the long value read. + + + + Read an integer in little endian form from the last found data value. + + Returns the integer read. + + + + Read a short value in little endian form from the last found data value. + + Returns the short value read. + + + + Read a byte from an extra data + + The byte value read or -1 if the end of data has been reached. + + + + Skip data during reading. + + The number of bytes to skip. + + + + Internal form of that reads data at any location. + + Returns the short value read. + + + + Dispose of this instance. + + + + + Arguments used with KeysRequiredEvent + + + + + Initialise a new instance of + + The name of the file for which keys are required. + + + + Initialise a new instance of + + The name of the file for which keys are required. + The current key value. + + + + Gets the name of the file for which keys are required. + + + + + Gets or sets the key value + + + + + The strategy to apply to testing. + + + + + Find the first error only. + + + + + Find all possible errors. + + + + + The operation in progress reported by a during testing. + + TestArchive + + + + Setting up testing. + + + + + Testing an individual entries header + + + + + Testing an individual entries data + + + + + Testing an individual entry has completed. + + + + + Running miscellaneous tests + + + + + Testing is complete + + + + + Status returned by during testing. + + TestArchive + + + + Initialise a new instance of + + The this status applies to. + + + + Get the current in progress. + + + + + Get the this status is applicable to. + + + + + Get the current/last entry tested. + + + + + Get the number of errors detected so far. + + + + + Get the number of bytes tested so far for the current entry. + + + + + Get a value indicating whether the last entry test was valid. + + + + + Delegate invoked during testing if supplied indicating current progress and status. + + If the message is non-null an error has occured. If the message is null + the operation as found in status has started. + + + + The possible ways of applying updates to an archive. + + + + + Perform all updates on temporary files ensuring that the original file is saved. + + + + + Update the archive directly, which is faster but less safe. + + + + + This class represents a Zip archive. You can ask for the contained + entries, or get an input stream for a file entry. The entry is + automatically decompressed. + + You can also update the archive adding or deleting entries. + + This class is thread safe for input: You can open input streams for arbitrary + entries in different threads. +
+
Author of the original java version : Jochen Hoenicke +
+ + + using System; + using System.Text; + using System.Collections; + using System.IO; + + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + static public void Main(string[] args) + { + using (ZipFile zFile = new ZipFile(args[0])) { + Console.WriteLine("Listing of : " + zFile.Name); + Console.WriteLine(""); + Console.WriteLine("Raw Size Size Date Time Name"); + Console.WriteLine("-------- -------- -------- ------ ---------"); + foreach (ZipEntry e in zFile) { + if ( e.IsFile ) { + DateTime d = e.DateTime; + Console.WriteLine("{0, -10}{1, -10}{2} {3} {4}", e.Size, e.CompressedSize, + d.ToString("dd-MM-yy"), d.ToString("HH:mm"), + e.Name); + } + } + } + } + } + + +
+ + + Delegate for handling keys/password setting during compression/decompression. + + + + + Event handler for handling encryption keys. + + + + + Handles getting of encryption keys when required. + + The file for which encryption keys are required. + + + + Get/set the encryption key value. + + + + + Password to be used for encrypting/decrypting files. + + Set to null if no password is required. + + + + Get a value indicating whether encryption keys are currently available. + + + + + Opens a Zip file with the given name for reading. + + The name of the file to open. + The argument supplied is null. + + An i/o error occurs + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + The supplied argument is null. + + An i/o error occurs. + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + true to leave the file open when the ZipFile is disposed, false to dispose of it + The supplied argument is null. + + An i/o error occurs. + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + + An i/o error occurs + + + The stream doesn't contain a valid zip archive.
+
+ + The stream doesnt support seeking. + + + The stream argument is null. + +
+ + + Opens a Zip file reading the given . + + The to read archive data from. + true to leave the stream open when the ZipFile is disposed, false to dispose of it + + An i/o error occurs + + + The stream doesn't contain a valid zip archive.
+
+ + The stream doesnt support seeking. + + + The stream argument is null. + +
+ + + Initialises a default instance with no entries and no file storage. + + + + + Finalize this instance. + + + + + Closes the ZipFile. If the stream is owned then this also closes the underlying input stream. + Once closed, no further instance methods should be called. + + + An i/o error occurs. + + + + + Create a new whose data will be stored in a file. + + The name of the archive to create. + Returns the newly created + is null + + + + Create a new whose data will be stored on a stream. + + The stream providing data storage. + Returns the newly created + is null + doesnt support writing. + + + + Get/set a flag indicating if the underlying stream is owned by the ZipFile instance. + If the flag is true then the stream will be closed when Close is called. + + + The default value is true in all cases. + + + + + Get a value indicating whether + this archive is embedded in another file or not. + + + + + Get a value indicating that this archive is a new one. + + + + + Gets the comment for the zip file. + + + + + Gets the name of this zip file. + + + + + Gets the number of entries in this zip file. + + + The Zip file has been closed. + + + + + Get the number of entries contained in this . + + + + + Indexer property for ZipEntries + + + + + Gets an enumerator for the Zip entries in this Zip file. + + Returns an for this archive. + + The Zip file has been closed. + + + + + Return the index of the entry with a matching name + + Entry name to find + If true the comparison is case insensitive + The index position of the matching entry or -1 if not found + + The Zip file has been closed. + + + + + Searches for a zip entry in this archive with the given name. + String comparisons are case insensitive + + + The name to find. May contain directory components separated by slashes ('/'). + + + A clone of the zip entry, or null if no entry with that name exists. + + + The Zip file has been closed. + + + + + Gets an input stream for reading the given zip entry data in an uncompressed form. + Normally the should be an entry returned by GetEntry(). + + The to obtain a data for + An input containing data for this + + The ZipFile has already been closed + + + The compression method for the entry is unknown + + + The entry is not found in the ZipFile + + + + + Creates an input stream reading a zip entry + + The index of the entry to obtain an input stream for. + + An input containing data for this + + + The ZipFile has already been closed + + + The compression method for the entry is unknown + + + The entry is not found in the ZipFile + + + + + Test an archive for integrity/validity + + Perform low level data Crc check + true if all tests pass, false otherwise + Testing will terminate on the first error found. + + + + Test an archive for integrity/validity + + Perform low level data Crc check + The to apply. + The handler to call during testing. + true if all tests pass, false otherwise + The object has already been closed. + + + + Test a local header against that provided from the central directory + + + The entry to test against + + The type of tests to carry out. + The offset of the entries data in the file + + + + The kind of update to apply. + + + + + Get / set the to apply to names when updating. + + + + + Get/set the used to generate values + during updates. + + + + + Get /set the buffer size to be used when updating this zip file. + + + + + Get a value indicating an update has been started. + + + + + Get / set a value indicating how Zip64 Extension usage is determined when adding entries. + + + + + Begin updating this archive. + + The archive storage for use during the update. + The data source to utilise during updating. + ZipFile has been closed. + One of the arguments provided is null + ZipFile has been closed. + + + + Begin updating to this archive. + + The storage to use during the update. + + + + Begin updating this archive. + + + + + + + + Commit current updates, updating this archive. + + + + ZipFile has been closed. + + + + Abort updating leaving the archive unchanged. + + + + + + + Set the file comment to be recorded when the current update is commited. + + The comment to record. + ZipFile has been closed. + + + + Add a new entry to the archive. + + The name of the file to add. + The compression method to use. + Ensure Unicode text is used for name and comment for this entry. + Argument supplied is null. + ZipFile has been closed. + Compression method is not supported for creating entries. + + + + Add a new entry to the archive. + + The name of the file to add. + The compression method to use. + ZipFile has been closed. + Compression method is not supported for creating entries. + + + + Add a file to the archive. + + The name of the file to add. + Argument supplied is null. + + + + Add a file to the archive. + + The name of the file to add. + The name to use for the on the Zip file created. + Argument supplied is null. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + The compression method to use. + Compression method is not supported for creating entries. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + The compression method to use. + Ensure Unicode text is used for name and comments for this entry. + Compression method is not supported for creating entries. + + + + Add a that contains no data. + + The entry to add. + This can be used to add directories, volume labels, or empty file entries. + + + + Add a with data. + + The source of the data for this entry. + The entry to add. + This can be used to add file entries with a custom data source. + + The encryption method specified in is unsupported. + + Compression method is not supported for creating entries. + + + + Add a directory entry to the archive. + + The directory to add. + + + + Check if the specified compression method is supported for adding a new entry. + + The compression method for the new entry. + + + + Delete an entry by name + + The filename to delete + True if the entry was found and deleted; false otherwise. + + + + Delete a from the archive. + + The entry to delete. + + + + Write an unsigned short in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Write an unsigned int in little endian byte order. + + + + + Write a long in little endian byte order. + + + + + Get a raw memory buffer. + + Returns a raw memory buffer. + + + + Get the size of the source descriptor for a . + + The update to get the size for. + Whether to include the signature size + The descriptor size, zero if there isn't one. + + + + Get an output stream for the specified + + The entry to get an output stream for. + The output stream obtained for the entry. + + + + Class used to sort updates. + + + + + Compares two objects and returns a value indicating whether one is + less than, equal to or greater than the other. + + First object to compare + Second object to compare. + Compare result. + + + + Represents a pending update to a Zip file. + + + + + Copy an existing entry. + + The existing entry to copy. + + + + Get the for this update. + + This is the source or original entry. + + + + Get the that will be written to the updated/new file. + + + + + Get the command for this update. + + + + + Get the filename if any for this update. Null if none exists. + + + + + Get/set the location of the size patch for this update. + + + + + Get /set the location of the crc patch for this update. + + + + + Get/set the size calculated by offset. + Specifically, the difference between this and next entry's starting offset. + + + + + Releases the unmanaged resources used by the this instance and optionally releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Read an unsigned short in little endian byte order. + + Returns the value read. + + The stream ends prematurely + + + + + Read a uint in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Search for and read the central directory of a zip file filling the entries array. + + + An i/o error occurs. + + + The central directory is malformed or cannot be found + + + + + Locate the data for a given entry. + + + The start offset of the data. + + + The stream ends prematurely + + + The local header signature is invalid, the entry and central header file name lengths are different + or the local and entry compression methods dont match + + + + + Represents a string from a which is stored as an array of bytes. + + + + + Initialise a with a string. + + The textual string form. + + + + Initialise a using a string in its binary 'raw' form. + + + + + + Get a value indicating the original source of data for this instance. + True if the source was a string; false if the source was binary data. + + + + + Get the length of the comment when represented as raw bytes. + + + + + Get the comment in its 'raw' form as plain bytes. + + + + + Reset the comment to its initial state. + + + + + Implicit conversion of comment to a string. + + The to convert to a string. + The textual equivalent for the input value. + + + + An enumerator for Zip entries + + + + + An is a stream that you can write uncompressed data + to and flush, but cannot read, seek or do anything else to. + + + + + Gets a value indicating whether the current stream supports reading. + + + + + Write any buffered data to underlying storage. + + + + + Gets a value indicating whether the current stream supports writing. + + + + + Gets a value indicating whether the current stream supports seeking. + + + + + Get the length in bytes of the stream. + + + + + Gets or sets the position within the current stream. + + + + + Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. + + The sum of offset and count is larger than the buffer length. + Methods were called after the stream was closed. + The stream does not support reading. + buffer is null. + An I/O error occurs. + offset or count is negative. + + + + Sets the position within the current stream. + + A byte offset relative to the origin parameter. + A value of type indicating the reference point used to obtain the new position. + + The new position within the current stream. + + An I/O error occurs. + The stream does not support seeking, such as if the stream is constructed from a pipe or console output. + Methods were called after the stream was closed. + + + + Sets the length of the current stream. + + The desired length of the current stream in bytes. + The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. + An I/O error occurs. + Methods were called after the stream was closed. + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + An I/O error occurs. + The stream does not support writing. + Methods were called after the stream was closed. + buffer is null. + The sum of offset and count is greater than the buffer length. + offset or count is negative. + + + + A is an + whose data is only a part or subsection of a file. + + + + + Initialise a new instance of the class. + + The containing the underlying stream to use for IO. + The start of the partial data. + The length of the partial data. + + + + Read a byte from this stream. + + Returns the byte read or -1 on end of stream. + + + + Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. + + The sum of offset and count is larger than the buffer length. + Methods were called after the stream was closed. + The stream does not support reading. + buffer is null. + An I/O error occurs. + offset or count is negative. + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + An I/O error occurs. + The stream does not support writing. + Methods were called after the stream was closed. + buffer is null. + The sum of offset and count is greater than the buffer length. + offset or count is negative. + + + + When overridden in a derived class, sets the length of the current stream. + + The desired length of the current stream in bytes. + The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. + An I/O error occurs. + Methods were called after the stream was closed. + + + + When overridden in a derived class, sets the position within the current stream. + + A byte offset relative to the origin parameter. + A value of type indicating the reference point used to obtain the new position. + + The new position within the current stream. + + An I/O error occurs. + The stream does not support seeking, such as if the stream is constructed from a pipe or console output. + Methods were called after the stream was closed. + + + + Clears all buffers for this stream and causes any buffered data to be written to the underlying device. + + An I/O error occurs. + + + + Gets or sets the position within the current stream. + + + The current position within the stream. + An I/O error occurs. + The stream does not support seeking. + Methods were called after the stream was closed. + + + + Gets the length in bytes of the stream. + + + A long value representing the length of the stream in bytes. + A class derived from Stream does not support seeking. + Methods were called after the stream was closed. + + + + Gets a value indicating whether the current stream supports writing. + + false + true if the stream supports writing; otherwise, false. + + + + Gets a value indicating whether the current stream supports seeking. + + true + true if the stream supports seeking; otherwise, false. + + + + Gets a value indicating whether the current stream supports reading. + + true. + true if the stream supports reading; otherwise, false. + + + + Gets a value that determines whether the current stream can time out. + + + A value that determines whether the current stream can time out. + + + + Provides a static way to obtain a source of data for an entry. + + + + + Get a source of data by creating a new stream. + + Returns a to use for compression input. + Ideally a new stream is created and opened to achieve this, to avoid locking problems. + + + + Represents a source of data that can dynamically provide + multiple data sources based on the parameters passed. + + + + + Get a data source. + + The to get a source for. + The name for data if known. + Returns a to use for compression input. + Ideally a new stream is created and opened to achieve this, to avoid locking problems. + + + + Default implementation of a for use with files stored on disk. + + + + + Initialise a new instance of + + The name of the file to obtain data from. + + + + Get a providing data. + + Returns a providing data. + + + + Default implementation of for files stored on disk. + + + + + Get a providing data for an entry. + + The entry to provide data for. + The file name for data if known. + Returns a stream providing data; or null if not available + + + + Defines facilities for data storage when updating Zip Archives. + + + + + Get the to apply during updates. + + + + + Get an empty that can be used for temporary output. + + Returns a temporary output + + + + + Convert a temporary output stream to a final stream. + + The resulting final + + + + + Make a temporary copy of the original stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The current stream. + Returns a stream suitable for direct updating. + This may be the current stream passed. + + + + Dispose of this instance. + + + + + An abstract suitable for extension by inheritance. + + + + + Initializes a new instance of the class. + + The update mode. + + + + Gets a temporary output + + Returns the temporary output stream. + + + + + Converts the temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + + Make a temporary copy of a . + + The to make a copy of. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The to open for direct update. + Returns a stream suitable for direct updating. + + + + Disposes this instance. + + + + + Gets the update mode applicable. + + The update mode. + + + + An implementation suitable for hard disks. + + + + + Initializes a new instance of the class. + + The file. + The update mode. + + + + Initializes a new instance of the class. + + The file. + + + + Gets a temporary output for performing updates on. + + Returns the temporary output stream. + + + + Converts a temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + Make a temporary copy of a stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The current stream. + Returns a stream suitable for direct updating. + If the is not null this is used as is. + + + + Disposes this instance. + + + + + An implementation suitable for in memory streams. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The to use + This constructor is for testing as memory streams dont really require safe mode. + + + + Get the stream returned by if this was in fact called. + + + + + Gets the temporary output + + Returns the temporary output stream. + + + + Converts the temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + Make a temporary copy of the original stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The original source stream + Returns a stream suitable for direct updating. + If the passed is not null this is used; + otherwise a new is returned. + + + + Disposes this instance. + + + + + Holds data pertinent to a data descriptor. + + + + + Get /set the compressed size of data. + + + + + Get / set the uncompressed size of data + + + + + Get /set the crc value. + + + + + This class assists with writing/reading from Zip files. + + + + + Initialise an instance of this class. + + The name of the file to open. + + + + Initialise a new instance of . + + The stream to use. + + + + Get / set a value indicating whether the underlying stream is owned or not. + + If the stream is owned it is closed when this instance is closed. + + + + Close the stream. + + + The underlying stream is closed only if is true. + + + + + Locates a block with the desired . + + The signature to find. + Location, marking the end of block. + Minimum size of the block. + The maximum variable data. + Returns the offset of the first byte after the signature; -1 if not found + + + + Write Zip64 end of central directory records (File header and locator). + + The number of entries in the central directory. + The size of entries in the central directory. + The offset of the central directory. + + + + Write the required records to end the central directory. + + The number of entries in the directory. + The size of the entries in the directory. + The start of the central directory. + The archive comment. (This can be null). + + + + Read an unsigned short in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read an int in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read a long in little endian byte order. + + The value read. + + + + Write an unsigned short in little endian byte order. + + The value to write. + + + + Write a ushort in little endian byte order. + + The value to write. + + + + Write an int in little endian byte order. + + The value to write. + + + + Write a uint in little endian byte order. + + The value to write. + + + + Write a long in little endian byte order. + + The value to write. + + + + Write a ulong in little endian byte order. + + The value to write. + + + + Write a data descriptor. + + The entry to write a descriptor for. + Returns the number of descriptor bytes written. + + + + Read data descriptor at the end of compressed data. + + if set to true [zip64]. + The data to fill in. + Returns the number of bytes read in the descriptor. + + + + This is an InflaterInputStream that reads the files baseInputStream an zip archive + one after another. It has a special method to get the zip entry of + the next file. The zip entry contains information about the file name + size, compressed size, Crc, etc. + It includes support for Stored and Deflated entries. +
+
Author of the original java version : Jochen Hoenicke +
+ + This sample shows how to read a zip file + + using System; + using System.Text; + using System.IO; + + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + public static void Main(string[] args) + { + using ( ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) { + + ZipEntry theEntry; + const int size = 2048; + byte[] data = new byte[2048]; + + while ((theEntry = s.GetNextEntry()) != null) { + if ( entry.IsFile ) { + Console.Write("Show contents (y/n) ?"); + if (Console.ReadLine() == "y") { + while (true) { + size = s.Read(data, 0, data.Length); + if (size > 0) { + Console.Write(new ASCIIEncoding().GetString(data, 0, size)); + } else { + break; + } + } + } + } + } + } + } + } + + +
+ + + Delegate for reading bytes from a stream. + + + + + The current reader this instance. + + + + + Creates a new Zip input stream, for reading a zip archive. + + The underlying providing data. + + + + Creates a new Zip input stream, for reading a zip archive. + + The underlying providing data. + Size of the buffer. + + + + Optional password used for encryption when non-null + + A password for all encrypted entries in this + + + + Gets a value indicating if there is a current entry and it can be decompressed + + + The entry can only be decompressed if the library supports the zip features required to extract it. + See the ZipEntry Version property for more details. + + Since uses the local headers for extraction, entries with no compression combined with the + flag set, cannot be extracted as the end of the entry data cannot be deduced. + + + + + Is the compression method for the specified entry supported? + + + Uses entry.CompressionMethodForHeader so that entries of type WinZipAES will be rejected. + + the entry to check. + true if the compression method is supported, false if not. + + + + Advances to the next entry in the archive + + + The next entry in the archive or null if there are no more entries. + + + If the previous entry is still open CloseEntry is called. + + + Input stream is closed + + + Password is not set, password is invalid, compression method is invalid, + version required to extract is not supported + + + + + Read data descriptor at the end of compressed data. + + + + + Complete cleanup as the final part of closing. + + True if the crc value should be tested + + + + Closes the current zip entry and moves to the next one. + + + The stream is closed + + + The Zip stream ends early + + + + + Returns 1 if there is an entry available + Otherwise returns 0. + + + + + Returns the current size that can be read from the current entry if available + + Thrown if the entry size is not known. + Thrown if no entry is currently available. + + + + Reads a byte from the current zip entry. + + + The byte or -1 if end of stream is reached. + + + + + Handle attempts to read by throwing an . + + The destination array to store data in. + The offset at which data read should be stored. + The maximum number of bytes to read. + Returns the number of bytes actually read. + + + + Handle attempts to read from this entry by throwing an exception + + + + + Handle attempts to read from this entry by throwing an exception + + + + + Perform the initial read on an entry which may include + reading encryption headers and setting up inflation. + + The destination to fill with data read. + The offset to start reading at. + The maximum number of bytes to read. + The actual number of bytes read. + + + + Read a block of bytes from the stream. + + The destination for the bytes. + The index to start storing data. + The number of bytes to attempt to read. + Returns the number of bytes read. + Zero bytes read means end of stream. + + + + Reads a block of bytes from the current zip entry. + + + The number of bytes read (this may be less than the length requested, even before the end of stream), or 0 on end of stream. + + + An i/o error occurred. + + + The deflated stream is corrupted. + + + The stream is not open. + + + + + Closes the zip input stream + + + + + ZipNameTransform transforms names as per the Zip file naming convention. + + The use of absolute names is supported although its use is not valid + according to Zip naming conventions, and should not be used if maximum compatability is desired. + + + + Initialize a new instance of + + + + + Initialize a new instance of + + The string to trim from the front of paths if found. + + + + Static constructor. + + + + + Transform a windows directory name according to the Zip file naming conventions. + + The directory name to transform. + The transformed name. + + + + Transform a windows file name according to the Zip file naming conventions. + + The file name to transform. + The transformed name. + + + + Get/set the path prefix to be trimmed from paths if present. + + The prefix is trimmed before any conversion from + a windows path is done. + + + + Force a name to be valid by replacing invalid characters with a fixed value + + The name to force valid + The replacement character to use. + Returns a valid name + + + + Test a name to see if it is a valid name for a zip entry. + + The name to test. + If true checking is relaxed about windows file names and absolute paths. + Returns true if the name is a valid zip name; false otherwise. + Zip path names are actually in Unix format, and should only contain relative paths. + This means that any path stored should not contain a drive or + device letter, or a leading slash. All slashes should forward slashes '/'. + An empty name is valid for a file where the input comes from standard input. + A null name is not considered valid. + + + + + Test a name to see if it is a valid name for a zip entry. + + The name to test. + Returns true if the name is a valid zip name; false otherwise. + Zip path names are actually in unix format, + and should only contain relative paths if a path is present. + This means that the path stored should not contain a drive or + device letter, or a leading slash. All slashes should forward slashes '/'. + An empty name is valid where the input comes from standard input. + A null name is not considered valid. + + + + + An implementation of INameTransform that transforms entry paths as per the Zip file naming convention. + Strips path roots and puts directory separators in the correct format ('/') + + + + + Initialize a new instance of + + + + + Transform a windows directory name according to the Zip file naming conventions. + + The directory name to transform. + The transformed name. + + + + Transform a windows file name according to the Zip file naming conventions. + + The file name to transform. + The transformed name. + + + + This is a DeflaterOutputStream that writes the files into a zip + archive one after another. It has a special method to start a new + zip entry. The zip entries contains information about the file name + size, compressed size, CRC, etc. + + It includes support for Stored and Deflated entries. + This class is not thread safe. +
+
Author of the original java version : Jochen Hoenicke +
+ This sample shows how to create a zip file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + public static void Main(string[] args) + { + string[] filenames = Directory.GetFiles(args[0]); + byte[] buffer = new byte[4096]; + + using ( ZipOutputStream s = new ZipOutputStream(File.Create(args[1])) ) { + + s.SetLevel(9); // 0 - store only to 9 - means best compression + + foreach (string file in filenames) { + ZipEntry entry = new ZipEntry(file); + s.PutNextEntry(entry); + + using (FileStream fs = File.OpenRead(file)) { + StreamUtils.Copy(fs, s, buffer); + } + } + } + } + } + + +
+ + + Creates a new Zip output stream, writing a zip archive. + + + The output stream to which the archive contents are written. + + + + + Creates a new Zip output stream, writing a zip archive. + + The output stream to which the archive contents are written. + Size of the buffer to use. + + + + Gets a flag value of true if the central header has been added for this archive; false if it has not been added. + + No further entries can be added once this has been done. + + + + Set the zip file comment. + + + The comment text for the entire archive. + + + The converted comment is longer than 0xffff bytes. + + + + + Sets the compression level. The new level will be activated + immediately. + + The new compression level (1 to 9). + + Level specified is not supported. + + + + + + Get the current deflater compression level + + The current compression level + + + + Get / set a value indicating how Zip64 Extension usage is determined when adding entries. + + Older archivers may not understand Zip64 extensions. + If backwards compatability is an issue be careful when adding entries to an archive. + Setting this property to off is workable but less desirable as in those circumstances adding a file + larger then 4GB will fail. + + + + Used for transforming the names of entries added by . + Defaults to , set to null to disable transforms and use names as supplied. + + + + + Get/set the password used for encryption. + + When set to null or if the password is empty no encryption is performed + + + + Write an unsigned short in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Starts a new Zip entry. It automatically closes the previous + entry if present. + All entry elements bar name are optional, but must be correct if present. + If the compression method is stored and the output is not patchable + the compression for that entry is automatically changed to deflate level 0 + + + the entry. + + + if entry passed is null. + + + if an I/O error occured. + + + if stream was finished + + + Too many entries in the Zip file
+ Entry name is too long
+ Finish has already been called
+
+ + The Compression method specified for the entry is unsupported. + +
+ + + Closes the current entry, updating header and footer information as required + + + Invalid entry field values. + + + An I/O error occurs. + + + No entry is active. + + + + + Initializes encryption keys based on given . + + The password. + + + + Initializes encryption keys based on given password. + + + + + Writes the given buffer to the current entry. + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Archive size is invalid + No entry is active. + + + + Finishes the stream. This will write the central directory at the + end of the zip file and flush the stream. + + + This is automatically called when the stream is closed. + + + An I/O error occurs. + + + Comment exceeds the maximum length
+ Entry name exceeds the maximum length +
+
+ + + Flushes the stream by calling Flush on the deflater stream unless + the current compression method is . Then it flushes the underlying output stream. + + + + + The entries for the archive. + + + + + Used to track the crc of data added to entries. + + + + + The current entry being added. + + + + + Used to track the size of data for an entry during writing. + + + + + Offset to be recorded for each entry in the central header. + + + + + Comment for the entire archive recorded in central header. + + + + + Flag indicating that header patching is required for the current entry. + + + + + Position to patch crc + + + + + Position to patch size. + + + + + The password to use when encrypting archive entries. + + + + + This static class contains functions for encoding and decoding zip file strings + + + + Code page backing field + + The original Zip specification (https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) states + that file names should only be encoded with IBM Code Page 437 or UTF-8. + In practice, most zip apps use OEM or system encoding (typically cp437 on Windows). + Let's be good citizens and default to UTF-8 http://utf8everywhere.org/ + + + + Automatically select codepage while opening archive + see https://github.com/icsharpcode/SharpZipLib/pull/280#issuecomment-433608324 + + + + + Encoding used for string conversion. Setting this to 65001 (UTF-8) will + also set the Language encoding flag to indicate UTF-8 encoded file names. + + + + + Attempt to get the operating system default codepage, or failing that, to + the fallback code page IBM 437. + + + + + Get whether the default codepage is set to UTF-8. Setting this property to false will + set the to + + + Get OEM codepage from NetFX, which parses the NLP file with culture info table etc etc. + But sometimes it yields the special value of 1 which is nicknamed CodePageNoOEM in sources (might also mean CP_OEMCP, but Encoding puts it so). + This was observed on Ukranian and Hindu systems. + Given this value, throws an . + So replace it with , (IBM 437 which is the default code page in a default Windows installation console. + + + + + Convert a portion of a byte array to a string using + + + Data to convert to string + + + Number of bytes to convert starting from index 0 + + + data[0]..data[count - 1] converted to a string + + + + + Convert a byte array to a string using + + + Byte array to convert + + + dataconverted to a string + + + + + Convert a byte array to a string using + + The applicable general purpose bits flags + + Byte array to convert + + The number of bytes to convert. + + dataconverted to a string + + + + + Convert a byte array to a string using + + + Byte array to convert + + The applicable general purpose bits flags + + dataconverted to a string + + + + + Convert a string to a byte array using + + + String to convert to an array + + Converted array + + + + Convert a string to a byte array using + + The applicable general purpose bits flags + + String to convert to an array + + Converted array + + + diff --git a/packages/sharpziplib/1.3.3/.nupkg.metadata b/packages/sharpziplib/1.3.3/.nupkg.metadata new file mode 100644 index 0000000..c6f4b59 --- /dev/null +++ b/packages/sharpziplib/1.3.3/.nupkg.metadata @@ -0,0 +1,5 @@ +{ + "version": 2, + "contentHash": "N8+hwhsKZm25tDJfWpBSW7EGhH/R7EMuiX+KJ4C4u+fCWVc1lJ5zg1u3S1RPPVYgTqhx/C3hxrqUpi6RwK5+Tg==", + "source": "https://api.nuget.org/v3/index.json" +} \ No newline at end of file diff --git a/packages/sharpziplib/1.3.3/.signature.p7s b/packages/sharpziplib/1.3.3/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..8ada451761972f3dfc40dcbcd495c34b5092ca27 GIT binary patch literal 9467 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 B_~ZZp literal 0 HcmV?d00001 diff --git a/packages/sharpziplib/1.3.3/lib/net45/ICSharpCode.SharpZipLib.dll b/packages/sharpziplib/1.3.3/lib/net45/ICSharpCode.SharpZipLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..4dc2759ee7b6f130c89360208aa66a6676365bd4 GIT binary patch literal 204800 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 literal 0 HcmV?d00001 diff --git a/packages/sharpziplib/1.3.3/lib/net45/ICSharpCode.SharpZipLib.xml b/packages/sharpziplib/1.3.3/lib/net45/ICSharpCode.SharpZipLib.xml new file mode 100644 index 0000000..ada193d --- /dev/null +++ b/packages/sharpziplib/1.3.3/lib/net45/ICSharpCode.SharpZipLib.xml @@ -0,0 +1,10977 @@ + + + + ICSharpCode.SharpZipLib + + + + + An example class to demonstrate compression and decompression of BZip2 streams. + + + + + Decompress the input writing + uncompressed data to the output stream + + The readable stream containing data to decompress. + The output stream to receive the decompressed data. + Both streams are closed on completion if true. + + + + Compress the input stream sending + result data to output stream + + The readable stream to compress. + The output stream to receive the compressed data. + Both streams are closed on completion if true. + Block size acts as compression level (1 to 9) with 1 giving + the lowest compression and 9 the highest. + + + + Defines internal values for both compression and decompression + + + + + Random numbers used to randomise repetitive blocks + + + + + When multiplied by compression parameter (1-9) gives the block size for compression + 9 gives the best compression but uses the most memory. + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + BZip2Exception represents exceptions specific to BZip2 classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the BZip2Exception class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + An input stream that decompresses files in the BZip2 format + + + + + Construct instance for reading from stream + + Data source + + + + Get/set flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + + + + Gets a value indicating if the stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking. + + + + + Gets a value indicating whether the current stream supports writing. + This property always returns false + + + + + Gets the length in bytes of the stream. + + + + + Gets the current position of the stream. + Setting the position is not supported and will throw a NotSupportException. + + Any attempt to set the position. + + + + Flushes the stream. + + + + + Set the streams position. This operation is not supported and will throw a NotSupportedException + + A byte offset relative to the parameter. + A value of type indicating the reference point used to obtain the new position. + The new position of the stream. + Any access + + + + Sets the length of this stream to the given value. + This operation is not supported and will throw a NotSupportedExceptionortedException + + The new length for the stream. + Any access + + + + Writes a block of bytes to this stream using data from a buffer. + This operation is not supported and will throw a NotSupportedException + + The buffer to source data from. + The offset to start obtaining data from. + The number of bytes of data to write. + Any access + + + + Writes a byte to the current position in the file stream. + This operation is not supported and will throw a NotSupportedException + + The value to write. + Any access + + + + Read a sequence of bytes and advances the read position by one byte. + + Array of bytes to store values in + Offset in array to begin storing data + The maximum number of bytes to read + The total number of bytes read into the buffer. This might be less + than the number of bytes requested if that number of bytes are not + currently available or zero if the end of the stream is reached. + + + + + Closes the stream, releasing any associated resources. + + + + + Read a byte from stream advancing position + + byte read or -1 on end of stream + + + + An output stream that compresses into the BZip2 format + including file header chars into another stream. + + + + + Construct a default output stream with maximum block size + + The stream to write BZip data onto. + + + + Initialise a new instance of the + for the specified stream, using the given blocksize. + + The stream to write compressed data to. + The block size to use. + + Valid block sizes are in the range 1..9, with 1 giving + the lowest compression and 9 the highest. + + + + + Ensures that resources are freed and other cleanup operations + are performed when the garbage collector reclaims the BZip2OutputStream. + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking + + + + + Gets a value indicating whether the current stream supports writing + + + + + Gets the length in bytes of the stream + + + + + Gets or sets the current position of this stream. + + + + + Sets the current position of this stream to the given value. + + The point relative to the offset from which to being seeking. + The reference point from which to begin seeking. + The new position in the stream. + + + + Sets the length of this stream to the given value. + + The new stream length. + + + + Read a byte from the stream advancing the position. + + The byte read cast to an int; -1 if end of stream. + + + + Read a block of bytes + + The buffer to read into. + The offset in the buffer to start storing data at. + The maximum number of bytes to read. + The total number of bytes read. This might be less than the number of bytes + requested if that number of bytes are not currently available, or zero + if the end of the stream is reached. + + + + Write a block of bytes to the stream + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + + + + Write a byte to the stream. + + The byte to write to the stream. + + + + Get the number of bytes written to output. + + + + + Get the number of bytes written to the output. + + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Flush output buffers + + + + + Computes Adler32 checksum for a stream of data. An Adler32 + checksum is not as reliable as a CRC32 checksum, but a lot faster to + compute. + + The specification for Adler32 may be found in RFC 1950. + ZLIB Compressed Data Format Specification version 3.3) + + + From that document: + + "ADLER32 (Adler-32 checksum) + This contains a checksum value of the uncompressed data + (excluding any dictionary data) computed according to Adler-32 + algorithm. This algorithm is a 32-bit extension and improvement + of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 + standard. + + Adler-32 is composed of two sums accumulated per byte: s1 is + the sum of all bytes, s2 is the sum of all s1 values. Both sums + are done modulo 65521. s1 is initialized to 1, s2 to zero. The + Adler-32 checksum is stored as s2*65536 + s1 in most- + significant-byte first (network) order." + + "8.2. The Adler-32 algorithm + + The Adler-32 algorithm is much faster than the CRC32 algorithm yet + still provides an extremely low probability of undetected errors. + + The modulo on unsigned long accumulators can be delayed for 5552 + bytes, so the modulo operation time is negligible. If the bytes + are a, b, c, the second sum is 3a + 2b + c + 3, and so is position + and order sensitive, unlike the first sum, which is just a + checksum. That 65521 is prime is important to avoid a possible + large class of two-byte errors that leave the check unchanged. + (The Fletcher checksum uses 255, which is not prime and which also + makes the Fletcher check insensitive to single byte changes 0 - + 255.) + + The sum s1 is initialized to 1 instead of zero to make the length + of the sequence part of s2, so that the length does not have to be + checked separately. (Any sequence of zeroes has a Fletcher + checksum of zero.)" + + + + + + + largest prime smaller than 65536 + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the Adler32 data checksum as if no update was ever called. + + + + + Returns the Adler32 data checksum computed so far. + + + + + Updates the checksum with the byte b. + + + The data value to add. The high byte of the int is ignored. + + + + + Updates the Adler32 data checksum with the bytes taken from + a block of data. + + Contains the data to update the checksum with. + + + + Update Adler32 data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + CRC-32 with unreversed data and reversed output + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + This implementation uses sixteen lookup tables stored in one linear array + to implement the slicing-by-16 algorithm, a variant of the slicing-by-8 + algorithm described in this Intel white paper: + + https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf + + The first lookup table is simply the CRC of all possible eight bit values. + Each successive lookup table is derived from the original table generated + by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs + together will produce the same output as a byte-by-byte CRC loop with + fewer arithmetic and bit manipulation operations, at the cost of increased + memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table, + which is still small enough to fit in most processors' L1 cache.) + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the CRC data checksum as if no update was ever called. + + + + + Returns the CRC data checksum computed so far. + + Reversed Out = true + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of bval + + Reversed Data = false + + + + Updates the CRC data checksum with the bytes taken from + a block of data. + + Contains the data to update the CRC with. + + + + Update CRC data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + Internal helper function for updating a block of data using slicing. + + The array containing the data to add + Range start for (inclusive) + The number of bytes to checksum starting from + + + + A non-inlined function for updating data that doesn't fit in a 16-byte + block. We don't expect to enter this function most of the time, and when + we do we're not here for long, so disabling inlining here improves + performance overall. + + The array containing the data to add + Range start for (inclusive) + Range end for (exclusive) + + + + CRC-32 with reversed data and unreversed output + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + This implementation uses sixteen lookup tables stored in one linear array + to implement the slicing-by-16 algorithm, a variant of the slicing-by-8 + algorithm described in this Intel white paper: + + https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf + + The first lookup table is simply the CRC of all possible eight bit values. + Each successive lookup table is derived from the original table generated + by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs + together will produce the same output as a byte-by-byte CRC loop with + fewer arithmetic and bit manipulation operations, at the cost of increased + memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table, + which is still small enough to fit in most processors' L1 cache.) + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the CRC data checksum as if no update was ever called. + + + + + Returns the CRC data checksum computed so far. + + Reversed Out = false + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of bval + + Reversed Data = true + + + + Updates the CRC data checksum with the bytes taken from + a block of data. + + Contains the data to update the CRC with. + + + + Update CRC data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + Internal helper function for updating a block of data using slicing. + + The array containing the data to add + Range start for (inclusive) + The number of bytes to checksum starting from + + + + A non-inlined function for updating data that doesn't fit in a 16-byte + block. We don't expect to enter this function most of the time, and when + we do we're not here for long, so disabling inlining here improves + performance overall. + + The array containing the data to add + Range start for (inclusive) + Range end for (exclusive) + + + + The number of slicing lookup tables to generate. + + + + + Generates multiple CRC lookup tables for a given polynomial, stored + in a linear array of uints. The first block (i.e. the first 256 + elements) is the same as the byte-by-byte CRC lookup table. + + The generating CRC polynomial + Whether the polynomial is in reversed bit order + A linear array of 256 * elements + + This table could also be generated as a rectangular array, but the + JIT compiler generates slower code than if we use a linear array. + Known issue, see: https://github.com/dotnet/runtime/issues/30275 + + + + + Mixes the first four bytes of input with + using normal ordering before calling . + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + Checksum state before this update call + A new unfinalized checksum value + + + Assumes input[offset]..input[offset + 15] are valid array indexes. + For performance reasons, this must be checked by the caller. + + + + + Mixes the first four bytes of input with + using reflected ordering before calling . + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + Checksum state before this update call + A new unfinalized checksum value + + + Assumes input[offset]..input[offset + 15] are valid array indexes. + For performance reasons, this must be checked by the caller. + + + + + A shared method for updating an unfinalized CRC checksum using slicing-by-16. + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + First byte of input after mixing with the old CRC + Second byte of input after mixing with the old CRC + Third byte of input after mixing with the old CRC + Fourth byte of input after mixing with the old CRC + A new unfinalized checksum value + + + Even though the first four bytes of input are fed in as arguments, + should be the same value passed to this + function's caller (either or + ). This method will get inlined + into both functions, so using the same offset produces faster code. + + + Because most processors running C# have some kind of instruction-level + parallelism, the order of XOR operations can affect performance. This + ordering assumes that the assembly code generated by the just-in-time + compiler will emit a bunch of arithmetic operations for checking array + bounds. Then it opportunistically XORs a1 and a2 to keep the processor + busy while those other parts of the pipeline handle the range check + calculations. + + + + + + Interface to compute a data checksum used by checked input/output streams. + A data checksum can be updated by one byte or with a byte array. After each + update the value of the current checksum can be returned by calling + getValue. The complete checksum object can also be reset + so it can be used again with new data. + + + + + Resets the data checksum as if no update was ever called. + + + + + Returns the data checksum computed so far. + + + + + Adds one byte to the data checksum. + + + the data value to add. The high byte of the int is ignored. + + + + + Updates the data checksum with the bytes taken from the array. + + + buffer an array of bytes + + + + + Adds the byte array to the data checksum. + + + The chunk of data to add + + + + + Event arguments for scanning. + + + + + Initialise a new instance of + + The file or directory name. + + + + The file or directory name for this event. + + + + + Get set a value indicating if scanning should continue or not. + + + + + Event arguments during processing of a single file or directory. + + + + + Initialise a new instance of + + The file or directory name if known. + The number of bytes processed so far + The total number of bytes to process, 0 if not known + + + + The name for this event if known. + + + + + Get set a value indicating whether scanning should continue or not. + + + + + Get a percentage representing how much of the has been processed + + 0.0 to 100.0 percent; 0 if target is not known. + + + + The number of bytes processed so far + + + + + The number of bytes to process. + + Target may be 0 or negative if the value isnt known. + + + + Event arguments for directories. + + + + + Initialize an instance of . + + The name for this directory. + Flag value indicating if any matching files are contained in this directory. + + + + Get a value indicating if the directory contains any matching files or not. + + + + + Arguments passed when scan failures are detected. + + + + + Initialise a new instance of + + The name to apply. + The exception to use. + + + + The applicable name. + + + + + The applicable exception. + + + + + Get / set a value indicating whether scanning should continue. + + + + + Delegate invoked before starting to process a file. + + The source of the event + The event arguments. + + + + Delegate invoked during processing of a file or directory + + The source of the event + The event arguments. + + + + Delegate invoked when a file has been completely processed. + + The source of the event + The event arguments. + + + + Delegate invoked when a directory failure is detected. + + The source of the event + The event arguments. + + + + Delegate invoked when a file failure is detected. + + The source of the event + The event arguments. + + + + FileSystemScanner provides facilities scanning of files and directories. + + + + + Initialise a new instance of + + The file filter to apply when scanning. + + + + Initialise a new instance of + + The file filter to apply. + The directory filter to apply. + + + + Initialise a new instance of + + The file filter to apply. + + + + Initialise a new instance of + + The file filter to apply. + The directory filter to apply. + + + + Delegate to invoke when a directory is processed. + + + + + Delegate to invoke when a file is processed. + + + + + Delegate to invoke when processing for a file has finished. + + + + + Delegate to invoke when a directory failure is detected. + + + + + Delegate to invoke when a file failure is detected. + + + + + Raise the DirectoryFailure event. + + The directory name. + The exception detected. + + + + Raise the FileFailure event. + + The file name. + The exception detected. + + + + Raise the ProcessFile event. + + The file name. + + + + Raise the complete file event + + The file name + + + + Raise the ProcessDirectory event. + + The directory name. + Flag indicating if the directory has matching files. + + + + Scan a directory. + + The base directory to scan. + True to recurse subdirectories, false to scan a single directory. + + + + The file filter currently in use. + + + + + The directory filter currently in use. + + + + + Flag indicating if scanning should continue running. + + + + + INameTransform defines how file system names are transformed for use with archives, or vice versa. + + + + + Given a file name determine the transformed value. + + The name to transform. + The transformed file name. + + + + Given a directory name determine the transformed value. + + The name to transform. + The transformed directory name + + + + InvalidNameException is thrown for invalid names such as directory traversal paths and names with invalid characters + + + + + Initializes a new instance of the InvalidNameException class with a default error message. + + + + + Initializes a new instance of the InvalidNameException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the InvalidNameException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the InvalidNameException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Scanning filters support filtering of names. + + + + + Test a name to see if it 'matches' the filter. + + The name to test. + Returns true if the name matches the filter, false if it does not match. + + + + NameFilter is a string matching class which allows for both positive and negative + matching. + A filter is a sequence of independant regular expressions separated by semi-colons ';'. + To include a semi-colon it may be quoted as in \;. Each expression can be prefixed by a plus '+' sign or + a minus '-' sign to denote the expression is intended to include or exclude names. + If neither a plus or minus sign is found include is the default. + A given name is tested for inclusion before checking exclusions. Only names matching an include spec + and not matching an exclude spec are deemed to match the filter. + An empty filter matches any name. + + The following expression includes all name ending in '.dat' with the exception of 'dummy.dat' + "+\.dat$;-^dummy\.dat$" + + + + + Construct an instance based on the filter expression passed + + The filter expression. + + + + Test a string to see if it is a valid regular expression. + + The expression to test. + True if expression is a valid false otherwise. + + + + Test an expression to see if it is valid as a filter. + + The filter expression to test. + True if the expression is valid, false otherwise. + + + + Split a string into its component pieces + + The original string + Returns an array of values containing the individual filter elements. + + + + Convert this filter to its string equivalent. + + The string equivalent for this filter. + + + + Test a value to see if it is included by the filter. + + The value to test. + True if the value is included, false otherwise. + + + + Test a value to see if it is excluded by the filter. + + The value to test. + True if the value is excluded, false otherwise. + + + + Test a value to see if it matches the filter. + + The value to test. + True if the value matches, false otherwise. + + + + Compile this filter. + + + + + PathFilter filters directories and files using a form of regular expressions + by full path name. + See NameFilter for more detail on filtering. + + + + + Initialise a new instance of . + + The filter expression to apply. + + + + Test a name to see if it matches the filter. + + The name to test. + True if the name matches, false otherwise. + is used to get the full path before matching. + + + + ExtendedPathFilter filters based on name, file size, and the last write time of the file. + + Provides an example of how to customise filtering. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum to include. + The maximum to include. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + The minimum to include. + The maximum to include. + + + + Test a filename to see if it matches the filter. + + The filename to test. + True if the filter matches, false otherwise. + The doesnt exist + + + + Get/set the minimum size/length for a file that will match this filter. + + The default value is zero. + value is less than zero; greater than + + + + Get/set the maximum size/length for a file that will match this filter. + + The default value is + value is less than zero or less than + + + + Get/set the minimum value that will match for this filter. + + Files with a LastWrite time less than this value are excluded by the filter. + + + + Get/set the maximum value that will match for this filter. + + Files with a LastWrite time greater than this value are excluded by the filter. + + + + NameAndSizeFilter filters based on name and file size. + + A sample showing how filters might be extended. + + + + Initialise a new instance of NameAndSizeFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + + + + Test a filename to see if it matches the filter. + + The filename to test. + True if the filter matches, false otherwise. + + + + Get/set the minimum size for a file that will match this filter. + + + + + Get/set the maximum size for a file that will match this filter. + + + + + PathUtils provides simple utilities for handling paths. + + + + + Remove any path root present in the path + + A containing path information. + The path with the root removed if it was present; path otherwise. + + + + Returns a random file name in the users temporary directory, or in directory of if specified + + If specified, used as the base file name for the temporary file + Returns a temporary file name + + + + Provides simple " utilities. + + + + + Read from a ensuring all the required data is read. + + The stream to read. + The buffer to fill. + + + + + Read from a " ensuring all the required data is read. + + The stream to read data from. + The buffer to store data in. + The offset at which to begin storing data. + The number of bytes of data to store. + Required parameter is null + and or are invalid. + End of stream is encountered before all the data has been read. + + + + Read as much data as possible from a ", up to the requested number of bytes + + The stream to read data from. + The buffer to store data in. + The offset at which to begin storing data. + The number of bytes of data to store. + Required parameter is null + and or are invalid. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + The progress handler delegate to use. + The minimum between progress updates. + The source for this event. + The name to use with the event. + This form is specialised for use within #Zip to support events during archive operations. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + The progress handler delegate to use. + The minimum between progress updates. + The source for this event. + The name to use with the event. + A predetermined fixed target value to use with progress updates. + If the value is negative the target is calculated by looking at the stream. + This form is specialised for use within #Zip to support events during archive operations. + + + + Initialise an instance of + + + + + SharpZipBaseException is the base exception class for SharpZipLib. + All library exceptions are derived from this. + + NOTE: Not all exceptions thrown will be derived from this class. + A variety of other exceptions are possible for example + + + + Initializes a new instance of the SharpZipBaseException class. + + + + + Initializes a new instance of the SharpZipBaseException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the SharpZipBaseException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the SharpZipBaseException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that an error occurred during decoding of a input stream due to corrupt + data or (unintentional) library incompatibility. + + + + + Initializes a new instance of the StreamDecodingException with a generic message + + + + + Initializes a new instance of the StreamDecodingException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the StreamDecodingException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the StreamDecodingException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that the input stream could not decoded due to known library incompability or missing features + + + + + Initializes a new instance of the StreamUnsupportedException with a generic message + + + + + Initializes a new instance of the StreamUnsupportedException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the StreamUnsupportedException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the StreamUnsupportedException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that the input stream could not decoded due to the stream ending before enough data had been provided + + + + + Initializes a new instance of the UnexpectedEndOfStreamException with a generic message + + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that a value was outside of the expected range when decoding an input stream + + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable + + Name of the variable, use: nameof() + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable, + it's current value and expected range. + + Name of the variable, use: nameof() + The invalid value + Expected maximum value + Expected minimum value + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable, + it's current value and expected range. + + Name of the variable, use: nameof() + The invalid value + Expected maximum value + Expected minimum value + + + + Initializes a new instance of the ValueOutOfRangeException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + PkzipClassic embodies the classic or original encryption facilities used in Pkzip archives. + While it has been superceded by more recent and more powerful algorithms, its still in use and + is viable for preventing casual snooping + + + + + Generates new encryption keys based on given seed + + The seed value to initialise keys with. + A new key value. + + + + PkzipClassicCryptoBase provides the low level facilities for encryption + and decryption using the PkzipClassic algorithm. + + + + + Transform a single byte + + + The transformed value + + + + + Set the key schedule for encryption/decryption. + + The data use to set the keys from. + + + + Update encryption keys + + + + + Reset the internal state. + + + + + PkzipClassic CryptoTransform for encryption. + + + + + Initialise a new instance of + + The key block to use. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Cleanup internal state. + + + + + PkzipClassic CryptoTransform for decryption. + + + + + Initialise a new instance of . + + The key block to decrypt with. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Cleanup internal state. + + + + + Defines a wrapper object to access the Pkzip algorithm. + This class cannot be inherited. + + + + + Get / set the applicable block size in bits. + + The only valid block size is 8. + + + + Get an array of legal key sizes. + + + + + Generate an initial vector. + + + + + Get an array of legal block sizes. + + + + + Get / set the key value applicable. + + + + + Generate a new random key. + + + + + Create an encryptor. + + The key to use for this encryptor. + Initialisation vector for the new encryptor. + Returns a new PkzipClassic encryptor + + + + Create a decryptor. + + Keys to use for this new decryptor. + Initialisation vector for the new decryptor. + Returns a new decryptor. + + + + Encrypts and decrypts AES ZIP + + + Based on information from http://www.winzip.com/aes_info.htm + and http://www.gladman.me.uk/cryptography_technology/fileencrypt/ + + + + + Constructor + + The stream on which to perform the cryptographic transformation. + Instance of ZipAESTransform + Read or Write + + + + Reads a sequence of bytes from the current CryptoStream into buffer, + and advances the position within the stream by the number of bytes read. + + + + + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + + + + Transforms stream using AES in CTR mode + + + + + Constructor. + + Password string + Random bytes, length depends on encryption strength. + 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes. + The encryption strength, in bytes eg 16 for 128 bits. + True when creating a zip, false when reading. For the AuthCode. + + + + + Implement the ICryptoTransform method. + + + + + Returns the 2 byte password verifier + + + + + Returns the 10 byte AUTH CODE to be checked or appended immediately following the AES data stream. + + + + + Not implemented. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Gets a value indicating whether the current transform can be reused. + + + + + Cleanup internal state. + + + + + An example class to demonstrate compression and decompression of GZip streams. + + + + + Decompress the input writing + uncompressed data to the output stream + + The readable stream containing data to decompress. + The output stream to receive the decompressed data. + Both streams are closed on completion if true. + Input or output stream is null + + + + Compress the input stream sending + result data to output stream + + The readable stream to compress. + The output stream to receive the compressed data. + Both streams are closed on completion if true. + Deflate buffer size, minimum 512 + Deflate compression level, 0-9 + Input or output stream is null + Buffer Size is smaller than 512 + Compression level outside 0-9 + + + + This class contains constants used for gzip. + + + + + First GZip identification byte + + + + + Second GZip identification byte + + + + + Deflate compression method + + + + + Get the GZip specified encoding (CP-1252 if supported, otherwise ASCII) + + + + + GZip header flags + + + + + Text flag hinting that the file is in ASCII + + + + + CRC flag indicating that a CRC16 preceeds the data + + + + + Extra flag indicating that extra fields are present + + + + + Filename flag indicating that the original filename is present + + + + + Flag bit mask indicating that a comment is present + + + + + GZipException represents exceptions specific to GZip classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the GZipException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + This filter stream is used to decompress a "GZIP" format stream. + The "GZIP" format is described baseInputStream RFC 1952. + + author of the original java version : John Leuner + + This sample shows how to unzip a gzipped file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.GZip; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream inStream = new GZipInputStream(File.OpenRead(args[0]))) + using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { + byte[] buffer = new byte[4096]; + StreamUtils.Copy(inStream, outStream, buffer); + } + } + } + + + + + + CRC-32 value for uncompressed data + + + + + Flag to indicate if we've read the GZIP header yet for the current member (block of compressed data). + This is tracked per-block as the file is parsed. + + + + + Flag to indicate if at least one block in a stream with concatenated blocks was read successfully. + This allows us to exit gracefully if downstream data is not in gzip format. + + + + + Creates a GZipInputStream with the default buffer size + + + The stream to read compressed data from (baseInputStream GZIP format) + + + + + Creates a GZIPInputStream with the specified buffer size + + + The stream to read compressed data from (baseInputStream GZIP format) + + + Size of the buffer to use + + + + + Reads uncompressed data into an array of bytes + + + The buffer to read uncompressed data into + + + The offset indicating where the data should be placed + + + The number of uncompressed bytes to be read + + Returns the number of bytes actually read. + + + + Retrieves the filename header field for the block last read + + + + + + This filter stream is used to compress a stream into a "GZIP" stream. + The "GZIP" format is described in RFC 1952. + + author of the original java version : John Leuner + + This sample shows how to gzip a file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.GZip; + using ICSharpCode.SharpZipLib.Core; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream s = new GZipOutputStream(File.Create(args[0] + ".gz"))) + using (FileStream fs = File.OpenRead(args[0])) { + byte[] writeData = new byte[4096]; + Streamutils.Copy(s, fs, writeData); + } + } + } + } + + + + + + CRC-32 value for uncompressed data + + + + + Creates a GzipOutputStream with the default buffer size + + + The stream to read data (to be compressed) from + + + + + Creates a GZipOutputStream with the specified buffer size + + + The stream to read data (to be compressed) from + + + Size of the buffer to use + + + + + Sets the active compression level (0-9). The new level will be activated + immediately. + + The compression level to set. + + Level specified is not supported. + + + + + + Get the current compression level. + + The current compression level. + + + + Original filename + + + + + Write given buffer to output updating crc + + Buffer to write + Offset of first byte in buf to write + Number of bytes to write + + + + Writes remaining compressed output data to the output stream + and closes it. + + + + + Flushes the stream by ensuring the header is written, and then calling Flush + on the deflater. + + + + + Finish compression and write any footer information required to stream + + + + + This class contains constants used for LZW + + + + + Magic number found at start of LZW header: 0x1f 0x9d + + + + + Maximum number of bits per code + + + + + Mask for 'number of compression bits' + + + + + Indicates the presence of a fourth header byte + + + + + Reserved bits + + + + + Block compression: if table is full and compression rate is dropping, + clear the dictionary. + + + + + LZW file header size (in bytes) + + + + + Initial number of bits per code + + + + + LzwException represents exceptions specific to LZW classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the LzwException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + This filter stream is used to decompress a LZW format stream. + Specifically, a stream that uses the LZC compression method. + This file format is usually associated with the .Z file extension. + + See http://en.wikipedia.org/wiki/Compress + See http://wiki.wxwidgets.org/Development:_Z_File_Format + + The file header consists of 3 (or optionally 4) bytes. The first two bytes + contain the magic marker "0x1f 0x9d", followed by a byte of flags. + + Based on Java code by Ronald Tschalar, which in turn was based on the unlzw.c + code in the gzip package. + + This sample shows how to unzip a compressed file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.LZW; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream inStream = new LzwInputStream(File.OpenRead(args[0]))) + using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { + byte[] buffer = new byte[4096]; + StreamUtils.Copy(inStream, outStream, buffer); + // OR + inStream.Read(buffer, 0, buffer.Length); + // now do something with the buffer + } + } + } + + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Creates a LzwInputStream + + + The stream to read compressed data from (baseInputStream LZW format) + + + + + See + + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + + + Moves the unread data in the buffer to the beginning and resets + the pointers. + + + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Flag indicating wether this instance has been closed or not. + + + + + This exception is used to indicate that there is a problem + with a TAR archive header. + + + + + Initialise a new instance of the InvalidHeaderException class. + + + + + Initialises a new instance of the InvalidHeaderException class with a specified message. + + Message describing the exception cause. + + + + Initialise a new instance of InvalidHeaderException + + Message describing the problem. + The exception that is the cause of the current exception. + + + + Initializes a new instance of the InvalidHeaderException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Used to advise clients of 'events' while processing archives + + + + + The TarArchive class implements the concept of a + 'Tape Archive'. A tar archive is a series of entries, each of + which represents a file system object. Each entry in + the archive consists of a header block followed by 0 or more data blocks. + Directory entries consist only of the header block, and are followed by entries + for the directory's contents. File entries consist of a + header followed by the number of blocks needed to + contain the file's contents. All entries are written on + block boundaries. Blocks are 512 bytes long. + + TarArchives are instantiated in either read or write mode, + based upon whether they are instantiated with an InputStream + or an OutputStream. Once instantiated TarArchives read/write + mode can not be changed. + + There is currently no support for random access to tar archives. + However, it seems that subclassing TarArchive, and using the + TarBuffer.CurrentRecord and TarBuffer.CurrentBlock + properties, this would be rather trivial. + + + + + Client hook allowing detailed information to be reported during processing + + + + + Raises the ProgressMessage event + + The TarEntry for this event + message for this event. Null is no message + + + + Constructor for a default . + + + + + Initialise a TarArchive for input. + + The to use for input. + + + + Initialise a TarArchive for output. + + The to use for output. + + + + The InputStream based constructors create a TarArchive for the + purposes of extracting or listing a tar archive. Thus, use + these constructors when you wish to extract files from or list + the contents of an existing tar archive. + + The stream to retrieve archive data from. + Returns a new suitable for reading from. + + + + The InputStream based constructors create a TarArchive for the + purposes of extracting or listing a tar archive. Thus, use + these constructors when you wish to extract files from or list + the contents of an existing tar archive. + + The stream to retrieve archive data from. + The used for the Name fields, or null for ASCII only + Returns a new suitable for reading from. + + + + Create TarArchive for reading setting block factor + + A stream containing the tar archive contents + The blocking factor to apply + Returns a suitable for reading. + + + + Create TarArchive for reading setting block factor + + A stream containing the tar archive contents + The blocking factor to apply + The used for the Name fields, or null for ASCII only + Returns a suitable for reading. + + + + Create a TarArchive for writing to, using the default blocking factor + + The to write to + The used for the Name fields, or null for ASCII only + Returns a suitable for writing. + + + + Create a TarArchive for writing to, using the default blocking factor + + The to write to + Returns a suitable for writing. + + + + Create a tar archive for writing. + + The stream to write to + The blocking factor to use for buffering. + Returns a suitable for writing. + + + + Create a tar archive for writing. + + The stream to write to + The blocking factor to use for buffering. + The used for the Name fields, or null for ASCII only + Returns a suitable for writing. + + + + Set the flag that determines whether existing files are + kept, or overwritten during extraction. + + + If true, do not overwrite existing files. + + + + + Get/set the ascii file translation flag. If ascii file translation + is true, then the file is checked to see if it a binary file or not. + If the flag is true and the test indicates it is ascii text + file, it will be translated. The translation converts the local + operating system's concept of line ends into the UNIX line end, + '\n', which is the defacto standard for a TAR archive. This makes + text files compatible with UNIX. + + + + + Set the ascii file translation flag. + + + If true, translate ascii text files. + + + + + PathPrefix is added to entry names as they are written if the value is not null. + A slash character is appended after PathPrefix + + + + + RootPath is removed from entry names if it is found at the + beginning of the name. + + + + + Set user and group information that will be used to fill in the + tar archive's entry headers. This information is based on that available + for the linux operating system, which is not always available on other + operating systems. TarArchive allows the programmer to specify values + to be used in their place. + is set to true by this call. + + + The user id to use in the headers. + + + The user name to use in the headers. + + + The group id to use in the headers. + + + The group name to use in the headers. + + + + + Get or set a value indicating if overrides defined by SetUserInfo should be applied. + + If overrides are not applied then the values as set in each header will be used. + + + + Get the archive user id. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current user id. + + + + + Get the archive user name. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current user name. + + + + + Get the archive group id. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current group id. + + + + + Get the archive group name. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current group name. + + + + + Get the archive's record size. Tar archives are composed of + a series of RECORDS each containing a number of BLOCKS. + This allowed tar archives to match the IO characteristics of + the physical device being used. Archives are expected + to be properly "blocked". + + + The record size this archive is using. + + + + + Sets the IsStreamOwner property on the underlying stream. + Set this to false to prevent the Close of the TarArchive from closing the stream. + + + + + Close the archive. + + + + + Perform the "list" command for the archive contents. + + NOTE That this method uses the progress event to actually list + the contents. If the progress display event is not set, nothing will be listed! + + + + + Perform the "extract" command and extract the contents of the archive. + + + The destination directory into which to extract. + + + + + Perform the "extract" command and extract the contents of the archive. + + + The destination directory into which to extract. + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Extract an entry from the archive. This method assumes that the + tarIn stream has been properly set with a call to GetNextEntry(). + + + The destination directory into which to extract. + + + The TarEntry returned by tarIn.GetNextEntry(). + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Write an entry to the archive. This method will call the putNextEntry + and then write the contents of the entry, and finally call closeEntry() + for entries that are files. For directories, it will call putNextEntry(), + and then, if the recurse flag is true, process each entry that is a + child of the directory. + + + The TarEntry representing the entry to write to the archive. + + + If true, process the children of directory entries. + + + + + Write an entry to the archive. This method will call the putNextEntry + and then write the contents of the entry, and finally call closeEntry() + for entries that are files. For directories, it will call putNextEntry(), + and then, if the recurse flag is true, process each entry that is a + child of the directory. + + + The TarEntry representing the entry to write to the archive. + + + If true, process the children of directory entries. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases the unmanaged resources used by the FileStream and optionally releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Closes the archive and releases any associated resources. + + + + + Ensures that resources are freed and other cleanup operations are performed + when the garbage collector reclaims the . + + + + + The TarBuffer class implements the tar archive concept + of a buffered input stream. This concept goes back to the + days of blocked tape drives and special io devices. In the + C# universe, the only real function that this class + performs is to ensure that files have the correct "record" + size, or other tars will complain. +

+ You should never have a need to access this class directly. + TarBuffers are created by Tar IO Streams. +

+
+
+ + + The size of a block in a tar archive in bytes. + + This is 512 bytes. + + + + The number of blocks in a default record. + + + The default value is 20 blocks per record. + + + + + The size in bytes of a default record. + + + The default size is 10KB. + + + + + Get the record size for this buffer + + The record size in bytes. + This is equal to the multiplied by the + + + + Get the TAR Buffer's record size. + + The record size in bytes. + This is equal to the multiplied by the + + + + Get the Blocking factor for the buffer + + This is the number of blocks in each record. + + + + Get the TAR Buffer's block factor + + The block factor; the number of blocks per record. + + + + Construct a default TarBuffer + + + + + Create TarBuffer for reading with default BlockFactor + + Stream to buffer + A new suitable for input. + + + + Construct TarBuffer for reading inputStream setting BlockFactor + + Stream to buffer + Blocking factor to apply + A new suitable for input. + + + + Construct TarBuffer for writing with default BlockFactor + + output stream for buffer + A new suitable for output. + + + + Construct TarBuffer for writing Tar output to streams. + + Output stream to write to. + Blocking factor to apply + A new suitable for output. + + + + Initialization common to all constructors. + + + + + Determine if an archive block indicates End of Archive. End of + archive is indicated by a block that consists entirely of null bytes. + All remaining blocks for the record should also be null's + However some older tars only do a couple of null blocks (Old GNU tar for one) + and also partial records + + The data block to check. + Returns true if the block is an EOF block; false otherwise. + + + + Determine if an archive block indicates the End of an Archive has been reached. + End of archive is indicated by a block that consists entirely of null bytes. + All remaining blocks for the record should also be null's + However some older tars only do a couple of null blocks (Old GNU tar for one) + and also partial records + + The data block to check. + Returns true if the block is an EOF block; false otherwise. + + + + Skip over a block on the input stream. + + + + + Read a block from the input stream. + + + The block of data read. + + + + + Read a record from data stream. + + + false if End-Of-File, else true. + + + + + Get the current block number, within the current record, zero based. + + Block numbers are zero based values + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Get the current block number, within the current record, zero based. + + + The current zero based block number. + + + The absolute block number = (record number * block factor) + block number. + + + + + Get the current record number. + + + The current zero based record number. + + + + + Get the current record number. + + + The current zero based record number. + + + + + Write a block of data to the archive. + + + The data to write to the archive. + + + + + Write an archive record to the archive, where the record may be + inside of a larger array buffer. The buffer must be "offset plus + record size" long. + + + The buffer containing the record data to write. + + + The offset of the record data within buffer. + + + + + Write a TarBuffer record to the archive. + + + + + WriteFinalRecord writes the current record buffer to output any unwritten data is present. + + Any trailing bytes are set to zero which is by definition correct behaviour + for the end of a tar stream. + + + + Close the TarBuffer. If this is an output buffer, also flush the + current block before closing. + + + + + This class represents an entry in a Tar archive. It consists + of the entry's header, as well as the entry's File. Entries + can be instantiated in one of three ways, depending on how + they are to be used. +

+ TarEntries that are created from the header bytes read from + an archive are instantiated with the TarEntry( byte[] ) + constructor. These entries will be used when extracting from + or listing the contents of an archive. These entries have their + header filled in using the header bytes. They also set the File + to null, since they reference an archive entry not a file.

+

+ TarEntries that are created from files that are to be written + into an archive are instantiated with the CreateEntryFromFile(string) + pseudo constructor. These entries have their header filled in using + the File's information. They also keep a reference to the File + for convenience when writing entries.

+

+ Finally, TarEntries can be constructed from nothing but a name. + This allows the programmer to construct the entry by hand, for + instance when only an InputStream is available for writing to + the archive, and the header information is constructed from + other information. In this case the header fields are set to + defaults and the File is set to null.

+ +
+
+ + + Initialise a default instance of . + + + + + Construct an entry from an archive's header bytes. File is set + to null. + + + The header bytes from a tar archive entry. + + + + + Construct an entry from an archive's header bytes. File is set + to null. + + + The header bytes from a tar archive entry. + + + The used for the Name fields, or null for ASCII only + + + + + Construct a TarEntry using the header provided + + Header details for entry + + + + Clone this tar entry. + + Returns a clone of this entry. + + + + Construct an entry with only a name. + This allows the programmer to construct the entry's header "by hand". + + The name to use for the entry + Returns the newly created + + + + Construct an entry for a file. File is set to file, and the + header is constructed from information from the file. + + The file name that the entry represents. + Returns the newly created + + + + Determine if the two entries are equal. Equality is determined + by the header names being equal. + + The to compare with the current Object. + + True if the entries are equal; false if not. + + + + + Derive a Hash value for the current + + A Hash code for the current + + + + Determine if the given entry is a descendant of this entry. + Descendancy is determined by the name of the descendant + starting with this entry's name. + + + Entry to be checked as a descendent of this. + + + True if entry is a descendant of this. + + + + + Get this entry's header. + + + This entry's TarHeader. + + + + + Get/Set this entry's name. + + + + + Get/set this entry's user id. + + + + + Get/set this entry's group id. + + + + + Get/set this entry's user name. + + + + + Get/set this entry's group name. + + + + + Convenience method to set this entry's group and user ids. + + + This entry's new user id. + + + This entry's new group id. + + + + + Convenience method to set this entry's group and user names. + + + This entry's new user name. + + + This entry's new group name. + + + + + Get/Set the modification time for this entry + + + + + Get this entry's file. + + + This entry's file. + + + + + Get/set this entry's recorded file size. + + + + + Return true if this entry represents a directory, false otherwise + + + True if this entry is a directory. + + + + + Fill in a TarHeader with information from a File. + + + The TarHeader to fill in. + + + The file from which to get the header information. + + + + + Get entries for all files present in this entries directory. + If this entry doesnt represent a directory zero entries are returned. + + + An array of TarEntry's for this entry's children. + + + + + Write an entry's header information to a header buffer. + + + The tar entry header buffer to fill in. + + + + + Write an entry's header information to a header buffer. + + + The tar entry header buffer to fill in. + + + The used for the Name fields, or null for ASCII only + + + + + Convenience method that will modify an entry's name directly + in place in an entry header buffer byte array. + + + The buffer containing the entry header to modify. + + + The new name to place into the header buffer. + + + + + Convenience method that will modify an entry's name directly + in place in an entry header buffer byte array. + + + The buffer containing the entry header to modify. + + + The new name to place into the header buffer. + + + The used for the Name fields, or null for ASCII only + + + + + Fill in a TarHeader given only the entry's name. + + + The TarHeader to fill in. + + + The tar entry name. + + + + + The name of the file this entry represents or null if the entry is not based on a file. + + + + + The entry's header information. + + + + + TarException represents exceptions specific to Tar classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the TarException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Reads the extended header of a Tar stream + + + + + Creates a new . + + + + + Read bytes from + + + + + + + Returns the parsed headers as key-value strings + + + + + This class encapsulates the Tar Entry Header used in Tar Archives. + The class also holds a number of tar constants, used mostly in headers. + + + The tar format and its POSIX successor PAX have a long history which makes for compatability + issues when creating and reading files. + + This is further complicated by a large number of programs with variations on formats + One common issue is the handling of names longer than 100 characters. + GNU style long names are currently supported. + + This is the ustar (Posix 1003.1) header. + + struct header + { + char t_name[100]; // 0 Filename + char t_mode[8]; // 100 Permissions + char t_uid[8]; // 108 Numerical User ID + char t_gid[8]; // 116 Numerical Group ID + char t_size[12]; // 124 Filesize + char t_mtime[12]; // 136 st_mtime + char t_chksum[8]; // 148 Checksum + char t_typeflag; // 156 Type of File + char t_linkname[100]; // 157 Target of Links + char t_magic[6]; // 257 "ustar" or other... + char t_version[2]; // 263 Version fixed to 00 + char t_uname[32]; // 265 User Name + char t_gname[32]; // 297 Group Name + char t_devmajor[8]; // 329 Major for devices + char t_devminor[8]; // 337 Minor for devices + char t_prefix[155]; // 345 Prefix for t_name + char t_mfill[12]; // 500 Filler up to 512 + }; + + + + + The length of the name field in a header buffer. + + + + + The length of the mode field in a header buffer. + + + + + The length of the user id field in a header buffer. + + + + + The length of the group id field in a header buffer. + + + + + The length of the checksum field in a header buffer. + + + + + Offset of checksum in a header buffer. + + + + + The length of the size field in a header buffer. + + + + + The length of the magic field in a header buffer. + + + + + The length of the version field in a header buffer. + + + + + The length of the modification time field in a header buffer. + + + + + The length of the user name field in a header buffer. + + + + + The length of the group name field in a header buffer. + + + + + The length of the devices field in a header buffer. + + + + + The length of the name prefix field in a header buffer. + + + + + The "old way" of indicating a normal file. + + + + + Normal file type. + + + + + Link file type. + + + + + Symbolic link file type. + + + + + Character device file type. + + + + + Block device file type. + + + + + Directory file type. + + + + + FIFO (pipe) file type. + + + + + Contiguous file type. + + + + + Posix.1 2001 global extended header + + + + + Posix.1 2001 extended header + + + + + Solaris access control list file type + + + + + GNU dir dump file type + This is a dir entry that contains the names of files that were in the + dir at the time the dump was made + + + + + Solaris Extended Attribute File + + + + + Inode (metadata only) no file content + + + + + Identifies the next file on the tape as having a long link name + + + + + Identifies the next file on the tape as having a long name + + + + + Continuation of a file that began on another volume + + + + + For storing filenames that dont fit in the main header (old GNU) + + + + + GNU Sparse file + + + + + GNU Tape/volume header ignore on extraction + + + + + The magic tag representing a POSIX tar archive. (would be written with a trailing NULL) + + + + + The magic tag representing an old GNU tar archive where version is included in magic and overwrites it + + + + + Initialise a default TarHeader instance + + + + + Get/set the name for this tar entry. + + Thrown when attempting to set the property to null. + + + + Get the name of this entry. + + The entry's name. + + + + Get/set the entry's Unix style permission mode. + + + + + The entry's user id. + + + This is only directly relevant to unix systems. + The default is zero. + + + + + Get/set the entry's group id. + + + This is only directly relevant to linux/unix systems. + The default value is zero. + + + + + Get/set the entry's size. + + Thrown when setting the size to less than zero. + + + + Get/set the entry's modification time. + + + The modification time is only accurate to within a second. + + Thrown when setting the date time to less than 1/1/1970. + + + + Get the entry's checksum. This is only valid/updated after writing or reading an entry. + + + + + Get value of true if the header checksum is valid, false otherwise. + + + + + Get/set the entry's type flag. + + + + + The entry's link name. + + Thrown when attempting to set LinkName to null. + + + + Get/set the entry's magic tag. + + Thrown when attempting to set Magic to null. + + + + The entry's version. + + Thrown when attempting to set Version to null. + + + + The entry's user name. + + + + + Get/set the entry's group name. + + + This is only directly relevant to unix systems. + + + + + Get/set the entry's major device number. + + + + + Get/set the entry's minor device number. + + + + + Create a new that is a copy of the current instance. + + A new that is a copy of the current instance. + + + + Parse TarHeader information from a header buffer. + + + The tar entry header buffer to get information from. + + + The used for the Name field, or null for ASCII only + + + + + Parse TarHeader information from a header buffer. + + + The tar entry header buffer to get information from. + + + + + 'Write' header information to buffer provided, updating the check sum. + + output buffer for header information + + + + 'Write' header information to buffer provided, updating the check sum. + + output buffer for header information + The used for the Name field, or null for ASCII only + + + + Get a hash code for the current object. + + A hash code for the current object. + + + + Determines if this instance is equal to the specified object. + + The object to compare with. + true if the objects are equal, false otherwise. + + + + Set defaults for values used when constructing a TarHeader instance. + + Value to apply as a default for userId. + Value to apply as a default for userName. + Value to apply as a default for groupId. + Value to apply as a default for groupName. + + + + Parse an octal string from a header buffer. + + The header buffer from which to parse. + The offset into the buffer from which to parse. + The number of header bytes to parse. + The long equivalent of the octal string. + + + + Parse a name from a header buffer. + + + The header buffer from which to parse. + + + The offset into the buffer from which to parse. + + + The number of header bytes to parse. + + + The name parsed. + + + + + Parse a name from a header buffer. + + + The header buffer from which to parse. + + + The offset into the buffer from which to parse. + + + The number of header bytes to parse. + + + name encoding, or null for ASCII only + + + The name parsed. + + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + The next free index in the + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + The next free index in the + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + name encoding, or null for ASCII only + The next free index in the + + + + Add an entry name to the buffer + + + The name to add + + + The buffer to add to + + + The offset into the buffer from which to start adding + + + The number of header bytes to add + + + The index of the next free byte in the buffer + + TODO: what should be default behavior?(omit upper byte or UTF8?) + + + + Add an entry name to the buffer + + + The name to add + + + The buffer to add to + + + The offset into the buffer from which to start adding + + + The number of header bytes to add + + + + + The index of the next free byte in the buffer + + + + + Add an entry name to the buffer + + The name to add + The buffer to add to + The offset into the buffer from which to start adding + The number of header bytes to add + The index of the next free byte in the buffer + TODO: what should be default behavior?(omit upper byte or UTF8?) + + + + Add an entry name to the buffer + + The name to add + The buffer to add to + The offset into the buffer from which to start adding + The number of header bytes to add + + The index of the next free byte in the buffer + + + + Add a string to a buffer as a collection of ascii bytes. + + The string to add + The offset of the first character to add. + The buffer to add to. + The offset to start adding at. + The number of ascii characters to add. + The next free index in the buffer. + + + + Add a string to a buffer as a collection of ascii bytes. + + The string to add + The offset of the first character to add. + The buffer to add to. + The offset to start adding at. + The number of ascii characters to add. + String encoding, or null for ASCII only + The next free index in the buffer. + + + + Put an octal representation of a value into a buffer + + + the value to be converted to octal + + + buffer to store the octal string + + + The offset into the buffer where the value starts + + + The length of the octal string to create + + + The offset of the character next byte after the octal string + + + + + Put an octal or binary representation of a value into a buffer + + Value to be convert to octal + The buffer to update + The offset into the buffer to store the value + The length of the octal string. Must be 12. + Index of next byte + + + + Add the checksum integer to header buffer. + + + The header buffer to set the checksum for + The offset into the buffer for the checksum + The number of header bytes to update. + It's formatted differently from the other fields: it has 6 digits, a + null, then a space -- rather than digits, a space, then a null. + The final space is already there, from checksumming + + The modified buffer offset + + + + Compute the checksum for a tar entry header. + The checksum field must be all spaces prior to this happening + + The tar entry's header buffer. + The computed checksum. + + + + Make a checksum for a tar entry ignoring the checksum contents. + + The tar entry's header buffer. + The checksum for the buffer + + + + The TarInputStream reads a UNIX tar archive as an InputStream. + methods are provided to position at each successive entry in + the archive, and the read each entry as a normal input stream + using read(). + + + + + Construct a TarInputStream with default block factor + + stream to source data from + + + + Construct a TarInputStream with default block factor + + stream to source data from + The used for the Name fields, or null for ASCII only + + + + Construct a TarInputStream with user specified block factor + + stream to source data from + block factor to apply to archive + + + + Construct a TarInputStream with user specified block factor + + stream to source data from + block factor to apply to archive + The used for the Name fields, or null for ASCII only + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking + This property always returns false. + + + + + Gets a value indicating if the stream supports writing. + This property always returns false. + + + + + The length in bytes of the stream + + + + + Gets or sets the position within the stream. + Setting the Position is not supported and throws a NotSupportedExceptionNotSupportedException + + Any attempt to set position + + + + Flushes the baseInputStream + + + + + Set the streams position. This operation is not supported and will throw a NotSupportedException + + The offset relative to the origin to seek to. + The to start seeking from. + The new position in the stream. + Any access + + + + Sets the length of the stream + This operation is not supported and will throw a NotSupportedException + + The new stream length. + Any access + + + + Writes a block of bytes to this stream using data from a buffer. + This operation is not supported and will throw a NotSupportedException + + The buffer containing bytes to write. + The offset in the buffer of the frist byte to write. + The number of bytes to write. + Any access + + + + Writes a byte to the current position in the file stream. + This operation is not supported and will throw a NotSupportedException + + The byte value to write. + Any access + + + + Reads a byte from the current tar archive entry. + + A byte cast to an int; -1 if the at the end of the stream. + + + + Reads bytes from the current tar archive entry. + + This method is aware of the boundaries of the current + entry in the archive and will deal with them appropriately + + + The buffer into which to place bytes read. + + + The offset at which to place bytes read. + + + The number of bytes to read. + + + The number of bytes read, or 0 at end of stream/EOF. + + + + + Closes this stream. Calls the TarBuffer's close() method. + The underlying stream is closed by the TarBuffer. + + + + + Set the entry factory for this instance. + + The factory for creating new entries + + + + Get the record size being used by this stream's TarBuffer. + + + + + Get the record size being used by this stream's TarBuffer. + + + TarBuffer record size. + + + + + Get the available data that can be read from the current + entry in the archive. This does not indicate how much data + is left in the entire archive, only in the current entry. + This value is determined from the entry's size header field + and the amount of data already read from the current entry. + + + The number of available bytes for the current entry. + + + + + Skip bytes in the input buffer. This skips bytes in the + current entry's data, not the entire archive, and will + stop at the end of the current entry's data if the number + to skip extends beyond that point. + + + The number of bytes to skip. + + + + + Return a value of true if marking is supported; false otherwise. + + Currently marking is not supported, the return value is always false. + + + + Since we do not support marking just yet, we do nothing. + + + The limit to mark. + + + + + Since we do not support marking just yet, we do nothing. + + + + + Get the next entry in this tar archive. This will skip + over any remaining data in the current entry, if there + is one, and place the input stream at the header of the + next entry, and read the header and instantiate a new + TarEntry from the header bytes and return that entry. + If there are no more entries in the archive, null will + be returned to indicate that the end of the archive has + been reached. + + + The next TarEntry in the archive, or null. + + + + + Copies the contents of the current tar archive entry directly into + an output stream. + + + The OutputStream into which to write the entry's data. + + + + + This interface is provided, along with the method , to allow + the programmer to have their own subclass instantiated for the + entries return from . + + + + + Create an entry based on name alone + + + Name of the new EntryPointNotFoundException to create + + created TarEntry or descendant class + + + + Create an instance based on an actual file + + + Name of file to represent in the entry + + + Created TarEntry or descendant class + + + + + Create a tar entry based on the header information passed + + + Buffer containing header information to create an entry from. + + + Created TarEntry or descendant class + + + + + Standard entry factory class creating instances of the class TarEntry + + + + + Construct standard entry factory class with ASCII name encoding + + + + + Construct standard entry factory with name encoding + + The used for the Name fields, or null for ASCII only + + + + Create a based on named + + The name to use for the entry + A new + + + + Create a tar entry with details obtained from file + + The name of the file to retrieve details from. + A new + + + + Create an entry based on details in header + + The buffer containing entry details. + A new + + + + Flag set when last block has been read + + + + + Size of this entry as recorded in header + + + + + Number of bytes read for this entry so far + + + + + Buffer used with calls to Read() + + + + + Working buffer + + + + + Current entry being read + + + + + Factory used to create TarEntry or descendant class instance + + + + + Stream used as the source of input data. + + + + + The TarOutputStream writes a UNIX tar archive as an OutputStream. + Methods are provided to put entries, and then write their contents + by writing to this stream using write(). + + public + + + + Construct TarOutputStream using default block factor + + stream to write to + + + + Construct TarOutputStream using default block factor + + stream to write to + The used for the Name fields, or null for ASCII only + + + + Construct TarOutputStream with user specified block factor + + stream to write to + blocking factor + + + + Construct TarOutputStream with user specified block factor + + stream to write to + blocking factor + The used for the Name fields, or null for ASCII only + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + true if the stream supports reading; otherwise, false. + + + + + true if the stream supports seeking; otherwise, false. + + + + + true if stream supports writing; otherwise, false. + + + + + length of stream in bytes + + + + + gets or sets the position within the current stream. + + + + + set the position within the current stream + + The offset relative to the to seek to + The to seek from. + The new position in the stream. + + + + Set the length of the current stream + + The new stream length. + + + + Read a byte from the stream and advance the position within the stream + by one byte or returns -1 if at the end of the stream. + + The byte value or -1 if at end of stream + + + + read bytes from the current stream and advance the position within the + stream by the number of bytes read. + + The buffer to store read bytes in. + The index into the buffer to being storing bytes at. + The desired number of bytes to read. + The total number of bytes read, or zero if at the end of the stream. + The number of bytes may be less than the count + requested if data is not available. + + + + All buffered data is written to destination + + + + + Ends the TAR archive without closing the underlying OutputStream. + The result is that the EOF block of nulls is written. + + + + + Ends the TAR archive and closes the underlying OutputStream. + + This means that Finish() is called followed by calling the + TarBuffer's Close(). + + + + Get the record size being used by this stream's TarBuffer. + + + + + Get the record size being used by this stream's TarBuffer. + + + The TarBuffer record size. + + + + + Get a value indicating whether an entry is open, requiring more data to be written. + + + + + Put an entry on the output stream. This writes the entry's + header and positions the output stream for writing + the contents of the entry. Once this method is called, the + stream is ready for calls to write() to write the entry's + contents. Once the contents are written, closeEntry() + MUST be called to ensure that all buffered data + is completely written to the output stream. + + + The TarEntry to be written to the archive. + + + + + Close an entry. This method MUST be called for all file + entries that contain data. The reason is that we must + buffer data written to the stream in order to satisfy + the buffer's block based writes. Thus, there may be + data fragments still being assembled that must be written + to the output stream before this entry is closed and the + next entry written. + + + + + Writes a byte to the current tar archive entry. + This method simply calls Write(byte[], int, int). + + + The byte to be written. + + + + + Writes bytes to the current tar archive entry. This method + is aware of the current entry and will throw an exception if + you attempt to write bytes past the length specified for the + current entry. The method is also (painfully) aware of the + record buffering required by TarBuffer, and manages buffers + that are not a multiple of recordsize in length, including + assembling records from small buffers. + + + The buffer to write to the archive. + + + The offset in the buffer from which to get bytes. + + + The number of bytes to write. + + + + + Write an EOF (end of archive) block to the tar archive. + The end of the archive is indicated by two blocks consisting entirely of zero bytes. + + + + + bytes written for this entry so far + + + + + current 'Assembly' buffer length + + + + + Flag indicating whether this instance has been closed or not. + + + + + Size for the current entry + + + + + single block working buffer + + + + + 'Assembly' buffer used to assemble data before writing + + + + + TarBuffer used to provide correct blocking factor + + + + + the destination stream for the archive contents + + + + + name encoding + + + + + This is the Deflater class. The deflater class compresses input + with the deflate algorithm described in RFC 1951. It has several + compression levels and three different strategies described below. + + This class is not thread safe. This is inherent in the API, due + to the split of deflate and setInput. + + author of the original java version : Jochen Hoenicke + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Compression Level as an enum for safer use + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Creates a new deflater with default compression level. + + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION, or DEFAULT_COMPRESSION. + + if lvl is out of range. + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION. + + + true, if we should suppress the Zlib/RFC1950 header at the + beginning and the adler checksum at the end of the output. This is + useful for the GZIP/PKZIP formats. + + if lvl is out of range. + + + + Resets the deflater. The deflater acts afterwards as if it was + just created with the same compression level and strategy as it + had before. + + + + + Gets the current adler checksum of the data that was processed so far. + + + + + Gets the number of input bytes processed so far. + + + + + Gets the number of output bytes so far. + + + + + Flushes the current input block. Further calls to deflate() will + produce enough output to inflate everything in the current input + block. This is not part of Sun's JDK so I have made it package + private. It is used by DeflaterOutputStream to implement + flush(). + + + + + Finishes the deflater with the current input block. It is an error + to give more input after this method was called. This method must + be called to force all bytes to be flushed. + + + + + Returns true if the stream was finished and no more output bytes + are available. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method can also return true when the stream + was finished. + + + + + Sets the data which should be compressed next. This should be only + called when needsInput indicates that more input is needed. + If you call setInput when needsInput() returns false, the + previous input that is still pending will be thrown away. + The given byte array should not be changed, before needsInput() returns + true again. + This call is equivalent to setInput(input, 0, input.length). + + + the buffer containing the input data. + + + if the buffer was finished() or ended(). + + + + + Sets the data which should be compressed next. This should be + only called when needsInput indicates that more input is needed. + The given byte array should not be changed, before needsInput() returns + true again. + + + the buffer containing the input data. + + + the start of the data. + + + the number of data bytes of input. + + + if the buffer was Finish()ed or if previous input is still pending. + + + + + Sets the compression level. There is no guarantee of the exact + position of the change, but if you call this when needsInput is + true the change of compression level will occur somewhere near + before the end of the so far given input. + + + the new compression level. + + + + + Get current compression level + + Returns the current compression level + + + + Sets the compression strategy. Strategy is one of + DEFAULT_STRATEGY, HUFFMAN_ONLY and FILTERED. For the exact + position where the strategy is changed, the same as for + SetLevel() applies. + + + The new compression strategy. + + + + + Deflates the current input block with to the given array. + + + The buffer where compressed data is stored + + + The number of compressed bytes added to the output, or 0 if either + IsNeedingInput() or IsFinished returns true or length is zero. + + + + + Deflates the current input block to the given array. + + + Buffer to store the compressed data. + + + Offset into the output array. + + + The maximum number of bytes that may be stored. + + + The number of compressed bytes added to the output, or 0 if either + needsInput() or finished() returns true or length is zero. + + + If Finish() was previously called. + + + If offset or length don't match the array length. + + + + + Sets the dictionary which should be used in the deflate process. + This call is equivalent to setDictionary(dict, 0, dict.Length). + + + the dictionary. + + + if SetInput () or Deflate () were already called or another dictionary was already set. + + + + + Sets the dictionary which should be used in the deflate process. + The dictionary is a byte array containing strings that are + likely to occur in the data which should be compressed. The + dictionary is not stored in the compressed output, only a + checksum. To decompress the output you need to supply the same + dictionary again. + + + The dictionary data + + + The index where dictionary information commences. + + + The number of bytes in the dictionary. + + + If SetInput () or Deflate() were already called or another dictionary was already set. + + + + + Compression level. + + + + + If true no Zlib/RFC1950 headers or footers are generated + + + + + The current state. + + + + + The total bytes of output written. + + + + + The pending output. + + + + + The deflater engine. + + + + + This class contains constants used for deflation. + + + + + Set to true to enable debugging + + + + + Written to Zip file to identify a stored block + + + + + Identifies static tree in Zip file + + + + + Identifies dynamic tree in Zip file + + + + + Header flag indicating a preset dictionary for deflation + + + + + Sets internal buffer sizes for Huffman encoding + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Strategies for deflater + + + + + The default strategy + + + + + This strategy will only allow longer string repetitions. It is + useful for random data with a small character set. + + + + + This strategy will not look for string repetitions at all. It + only encodes with Huffman trees (which means, that more common + characters get a smaller encoding. + + + + + Low level compression engine for deflate algorithm which uses a 32K sliding window + with secondary compression from Huffman/Shannon-Fano codes. + + + + + Construct instance with pending buffer + Adler calculation will be performed + + + Pending buffer to use + + + + + Construct instance with pending buffer + + + Pending buffer to use + + + If no adler calculation should be performed + + + + + Deflate drives actual compression of data + + True to flush input buffers + Finish deflation with the current input. + Returns true if progress has been made. + + + + Sets input data to be deflated. Should only be called when NeedsInput() + returns true + + The buffer containing input data. + The offset of the first byte of data. + The number of bytes of data to use as input. + + + + Determines if more input is needed. + + Return true if input is needed via SetInput + + + + Set compression dictionary + + The buffer containing the dictionary data + The offset in the buffer for the first byte of data + The length of the dictionary data. + + + + Reset internal state + + + + + Reset Adler checksum + + + + + Get current value of Adler checksum + + + + + Total data processed + + + + + Get/set the deflate strategy + + + + + Set the deflate level (0-9) + + The value to set the level to. + + + + Fill the window + + + + + Inserts the current string in the head hash and returns the previous + value for this hash. + + The previous hash value + + + + Find the best (longest) string in the window matching the + string starting at strstart. + + Preconditions: + + strstart + DeflaterConstants.MAX_MATCH <= window.length. + + + True if a match greater than the minimum length is found + + + + Hashtable, hashing three characters to an index for window, so + that window[index]..window[index+2] have this hash code. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + prev[index & WMASK] points to the previous index that has the + same hash code as the string starting at index. This way + entries with the same hash code are in a linked list. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + Points to the current character in the window. + + + + + lookahead is the number of characters starting at strstart in + window that are valid. + So window[strstart] until window[strstart+lookahead-1] are valid + characters. + + + + + This array contains the part of the uncompressed stream that + is of relevance. The current character is indexed by strstart. + + + + + The current compression function. + + + + + The input data for compression. + + + + + The total bytes of input read. + + + + + The offset into inputBuf, where input data starts. + + + + + The end offset of the input data. + + + + + The adler checksum + + + + + This is the DeflaterHuffman class. + + This class is not thread safe. This is inherent in the API, due + to the split of Deflate and SetInput. + + author of the original java version : Jochen Hoenicke + + + + + Resets the internal state of the tree + + + + + Check that all frequencies are zero + + + At least one frequency is non-zero + + + + + Set static codes and length + + new codes + length for new codes + + + + Build dynamic codes and lengths + + + + + Get encoded length + + Encoded length, the sum of frequencies * lengths + + + + Scan a literal or distance tree to determine the frequencies of the codes + in the bit length tree. + + + + + Write tree values + + Tree to write + + + + Pending buffer to use + + + + + Construct instance with pending buffer + + Pending buffer to use + + + + Reset internal state + + + + + Write all trees to pending buffer + + The number/rank of treecodes to send. + + + + Compress current buffer writing data to pending buffer + + + + + Flush block to output with no compression + + Data to write + Index of first byte to write + Count of bytes to write + True if this is the last block + + + + Flush block to output with compression + + Data to flush + Index of first byte to flush + Count of bytes to flush + True if this is the last block + + + + Get value indicating if internal buffer is full + + true if buffer is full + + + + Add literal to buffer + + Literal value to add to buffer. + Value indicating internal buffer is full + + + + Add distance code and length to literal and distance trees + + Distance code + Length + Value indicating if internal buffer is full + + + + Reverse the bits of a 16 bit value. + + Value to reverse bits + Value with bits reversed + + + + This class stores the pending output of the Deflater. + + author of the original java version : Jochen Hoenicke + + + + + Construct instance with default buffer size + + + + + Inflater is used to decompress data that has been compressed according + to the "deflate" standard described in rfc1951. + + By default Zlib (rfc1950) headers and footers are expected in the input. + You can use constructor public Inflater(bool noHeader) passing true + if there is no Zlib header information + + The usage is as following. First you have to set some input with + SetInput(), then Inflate() it. If inflate doesn't + inflate any bytes there may be three reasons: +
    +
  • IsNeedingInput() returns true because the input buffer is empty. + You have to provide more input with SetInput(). + NOTE: IsNeedingInput() also returns true when, the stream is finished. +
  • +
  • IsNeedingDictionary() returns true, you have to provide a preset + dictionary with SetDictionary().
  • +
  • IsFinished returns true, the inflater has finished.
  • +
+ Once the first output byte is produced, a dictionary will not be + needed at a later stage. + + author of the original java version : John Leuner, Jochen Hoenicke +
+
+ + + Copy lengths for literal codes 257..285 + + + + + Extra bits for literal codes 257..285 + + + + + Copy offsets for distance codes 0..29 + + + + + Extra bits for distance codes + + + + + These are the possible states for an inflater + + + + + This variable contains the current state. + + + + + The adler checksum of the dictionary or of the decompressed + stream, as it is written in the header resp. footer of the + compressed stream. + Only valid if mode is DECODE_DICT or DECODE_CHKSUM. + + + + + The number of bits needed to complete the current state. This + is valid, if mode is DECODE_DICT, DECODE_CHKSUM, + DECODE_HUFFMAN_LENBITS or DECODE_HUFFMAN_DISTBITS. + + + + + True, if the last block flag was set in the last block of the + inflated stream. This means that the stream ends after the + current block. + + + + + The total number of inflated bytes. + + + + + The total number of bytes set with setInput(). This is not the + value returned by the TotalIn property, since this also includes the + unprocessed input. + + + + + This variable stores the noHeader flag that was given to the constructor. + True means, that the inflated stream doesn't contain a Zlib header or + footer. + + + + + Creates a new inflater or RFC1951 decompressor + RFC1950/Zlib headers and footers will be expected in the input data + + + + + Creates a new inflater. + + + True if no RFC1950/Zlib header and footer fields are expected in the input data + + This is used for GZIPed/Zipped input. + + For compatibility with + Sun JDK you should provide one byte of input more than needed in + this case. + + + + + Resets the inflater so that a new stream can be decompressed. All + pending input and output will be discarded. + + + + + Decodes a zlib/RFC1950 header. + + + False if more input is needed. + + + The header is invalid. + + + + + Decodes the dictionary checksum after the deflate header. + + + False if more input is needed. + + + + + Decodes the huffman encoded symbols in the input stream. + + + false if more input is needed, true if output window is + full or the current block ends. + + + if deflated stream is invalid. + + + + + Decodes the adler checksum after the deflate stream. + + + false if more input is needed. + + + If checksum doesn't match. + + + + + Decodes the deflated stream. + + + false if more input is needed, or if finished. + + + if deflated stream is invalid. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + The index into buffer where the dictionary starts. + + + The number of bytes in the dictionary. + + + No dictionary is needed. + + + The adler checksum for the buffer is invalid + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + the input. + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + The source of input data + + + The index into buffer where the input starts. + + + The number of bytes of input to use. + + + No input is needed. + + + The index and/or count are wrong. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether IsNeedingDictionary(), + IsNeedingInput() or IsFinished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + The number of bytes written to the buffer, 0 if no further + output can be produced. + + + if buffer has length 0. + + + if deflated stream is invalid. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether needsDictionary(), + needsInput() or finished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + the offset in buffer where storing starts. + + + the maximum number of bytes to output. + + + the number of bytes written to the buffer, 0 if no further output can be produced. + + + if count is less than 0. + + + if the index and / or count are wrong. + + + if deflated stream is invalid. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method also returns true when the stream is finished. + + + + + Returns true, if a preset dictionary is needed to inflate the input. + + + + + Returns true, if the inflater has finished. This means, that no + input is needed and no output can be produced. + + + + + Gets the adler checksum. This is either the checksum of all + uncompressed bytes returned by inflate(), or if needsDictionary() + returns true (and thus no output was yet produced) this is the + adler checksum of the expected dictionary. + + + the adler checksum. + + + + + Gets the total number of output bytes returned by Inflate(). + + + the total number of output bytes. + + + + + Gets the total number of processed compressed input bytes. + + + The total number of bytes of processed input bytes. + + + + + Gets the number of unprocessed input bytes. Useful, if the end of the + stream is reached and you want to further process the bytes after + the deflate stream. + + + The number of bytes of the input which have not been processed. + + + + + Continue decoding header from until more bits are needed or decoding has been completed + + Returns whether decoding could be completed + + + + Get literal/length huffman tree, must not be used before has returned true + + If hader has not been successfully read by the state machine + + + + Get distance huffman tree, must not be used before has returned true + + If hader has not been successfully read by the state machine + + + + Huffman tree used for inflation + + + + + Literal length tree + + + + + Distance tree + + + + + Constructs a Huffman tree from the array of code lengths. + + + the array of code lengths + + + + + Reads the next symbol from input. The symbol is encoded using the + huffman tree. + + + input the input source. + + + the next symbol, or -1 if not enough input is available. + + + + + This class is general purpose class for writing data to a buffer. + + It allows you to write bits as well as bytes + Based on DeflaterPending.java + + author of the original java version : Jochen Hoenicke + + + + + Internal work buffer + + + + + construct instance using default buffer size of 4096 + + + + + construct instance using specified buffer size + + + size to use for internal buffer + + + + + Clear internal state/buffers + + + + + Write a byte to buffer + + + The value to write + + + + + Write a short value to buffer LSB first + + + The value to write. + + + + + write an integer LSB first + + The value to write. + + + + Write a block of data to buffer + + data to write + offset of first byte to write + number of bytes to write + + + + The number of bits written to the buffer + + + + + Align internal buffer on a byte boundary + + + + + Write bits to internal buffer + + source of bits + number of bits to write + + + + Write a short value to internal buffer most significant byte first + + value to write + + + + Indicates if buffer has been flushed + + + + + Flushes the pending buffer into the given output array. If the + output array is to small, only a partial flush is done. + + The output array. + The offset into output array. + The maximum number of bytes to store. + The number of bytes flushed. + + + + Convert internal buffer to byte array. + Buffer is empty on completion + + + The internal buffer contents converted to a byte array. + + + + + A special stream deflating or compressing the bytes that are + written to it. It uses a Deflater to perform actual deflating.
+ Authors of the original java version : Tom Tromey, Jochen Hoenicke +
+
+ + + Creates a new DeflaterOutputStream with a default Deflater and default buffer size. + + + the output stream where deflated output should be written. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + default buffer size. + + + the output stream where deflated output should be written. + + + the underlying deflater. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + buffer size. + + + The output stream where deflated output is written. + + + The underlying deflater to use + + + The buffer size in bytes to use when deflating (minimum value 512) + + + bufsize is less than or equal to zero. + + + baseOutputStream does not support writing + + + deflater instance is null + + + + + Finishes the stream by calling finish() on the deflater. + + + Not all input is deflated + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Allows client to determine if an entry can be patched after its added + + + + + The CryptoTransform currently being used to encrypt the compressed data. + + + + + Returns the 10 byte AUTH CODE to be appended immediately following the AES data stream. + + + + + Encrypt a block of data + + + Data to encrypt. NOTE the original contents of the buffer are lost + + + Offset of first byte in buffer to encrypt + + + Number of bytes in buffer to encrypt + + + + + Deflates everything in the input buffers. This will call + def.deflate() until all bytes from the input buffers + are processed. + + + + + Gets value indicating stream can be read from + + + + + Gets a value indicating if seeking is supported for this stream + This property always returns false + + + + + Get value indicating if this stream supports writing + + + + + Get current length of stream + + + + + Gets the current position within the stream. + + Any attempt to set position + + + + Sets the current position of this stream to the given value. Not supported by this class! + + The offset relative to the to seek. + The to seek from. + The new position in the stream. + Any access + + + + Sets the length of this stream to the given value. Not supported by this class! + + The new stream length. + Any access + + + + Read a byte from stream advancing position by one + + The byte read cast to an int. THe value is -1 if at the end of the stream. + Any access + + + + Read a block of bytes from stream + + The buffer to store read data in. + The offset to start storing at. + The maximum number of bytes to read. + The actual number of bytes read. Zero if end of stream is detected. + Any access + + + + Flushes the stream by calling Flush on the deflater and then + on the underlying stream. This ensures that all bytes are flushed. + + + + + Calls and closes the underlying + stream when is true. + + + + + Get the Auth code for AES encrypted entries + + + + + Writes a single byte to the compressed output stream. + + + The byte value. + + + + + Writes bytes from an array to the compressed stream. + + + The byte array + + + The offset into the byte array where to start. + + + The number of bytes to write. + + + + + This buffer is used temporarily to retrieve the bytes from the + deflater and write them to the underlying output stream. + + + + + The deflater which is used to deflate the stream. + + + + + Base stream the deflater depends on. + + + + + An input buffer customised for use by + + + The buffer supports decryption of incoming data. + + + + + Initialise a new instance of with a default buffer size + + The stream to buffer. + + + + Initialise a new instance of + + The stream to buffer. + The size to use for the buffer + A minimum buffer size of 1KB is permitted. Lower sizes are treated as 1KB. + + + + Get the length of bytes in the + + + + + Get the contents of the raw data buffer. + + This may contain encrypted data. + + + + Get the number of useable bytes in + + + + + Get the contents of the clear text buffer. + + + + + Get/set the number of bytes available + + + + + Call passing the current clear text buffer contents. + + The inflater to set input for. + + + + Fill the buffer from the underlying input stream. + + + + + Read a buffer directly from the input stream + + The buffer to fill + Returns the number of bytes read. + + + + Read a buffer directly from the input stream + + The buffer to read into + The offset to start reading data into. + The number of bytes to read. + Returns the number of bytes read. + + + + Read clear text data from the input stream. + + The buffer to add data to. + The offset to start adding data at. + The number of bytes to read. + Returns the number of bytes actually read. + + + + Read a from the input stream. + + Returns the byte read. + + + + Read an in little endian byte order. + + The short value read case to an int. + + + + Read an in little endian byte order. + + The int value read. + + + + Read a in little endian byte order. + + The long value read. + + + + Get/set the to apply to any data. + + Set this value to null to have no transform applied. + + + + This filter stream is used to decompress data compressed using the "deflate" + format. The "deflate" format is described in RFC 1951. + + This stream may form the basis for other decompression filters, such + as the GZipInputStream. + + Author of the original java version : John Leuner. + + + + + Create an InflaterInputStream with the default decompressor + and a default buffer size of 4KB. + + + The InputStream to read bytes from + + + + + Create an InflaterInputStream with the specified decompressor + and a default buffer size of 4KB. + + + The source of input data + + + The decompressor used to decompress data read from baseInputStream + + + + + Create an InflaterInputStream with the specified decompressor + and the specified buffer size. + + + The InputStream to read bytes from + + + The decompressor to use + + + Size of the buffer to use + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Skip specified number of bytes of uncompressed data + + + Number of bytes to skip + + + The number of bytes skipped, zero if the end of + stream has been reached + + + The number of bytes to skip is less than or equal to zero. + + + + + Clear any cryptographic state. + + + + + Returns 0 once the end of the stream (EOF) has been reached. + Otherwise returns 1. + + + + + Fills the buffer with more data to decompress. + + + Stream ends early + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + Inflater needs a dictionary + + + + + Decompressor for this stream + + + + + Input buffer for this stream. + + + + + Base stream the inflater reads from. + + + + + The compressed size + + + + + Flag indicating whether this instance has been closed or not. + + + + + Contains the output from the Inflation process. + We need to have a window so that we can refer backwards into the output stream + to repeat stuff.
+ Author of the original java version : John Leuner +
+
+ + + Write a byte to this output window + + value to write + + if window is full + + + + + Append a byte pattern already in the window itself + + length of pattern to copy + distance from end of window pattern occurs + + If the repeated data overflows the window + + + + + Copy from input manipulator to internal window + + source of data + length of data to copy + the number of bytes copied + + + + Copy dictionary to window + + source dictionary + offset of start in source dictionary + length of dictionary + + If window isnt empty + + + + + Get remaining unfilled space in window + + Number of bytes left in window + + + + Get bytes available for output in window + + Number of bytes filled + + + + Copy contents of window to output + + buffer to copy to + offset to start at + number of bytes to count + The number of bytes copied + + If a window underflow occurs + + + + + Reset by clearing window so GetAvailable returns 0 + + + + + This class allows us to retrieve a specified number of bits from + the input buffer, as well as copy big byte blocks. + + It uses an int buffer to store up to 31 bits for direct + manipulation. This guarantees that we can get at least 16 bits, + but we only need at most 15, so this is all safe. + + There are some optimizations in this class, for example, you must + never peek more than 8 bits more than needed, and you must first + peek bits before you may drop them. This is not a general purpose + class but optimized for the behaviour of the Inflater. + + authors of the original java version : John Leuner, Jochen Hoenicke + + + + + Get the next sequence of bits but don't increase input pointer. bitCount must be + less or equal 16 and if this call succeeds, you must drop + at least n - 8 bits in the next call. + + The number of bits to peek. + + the value of the bits, or -1 if not enough bits available. */ + + + + + Tries to grab the next bits from the input and + sets to the value, adding . + + true if enough bits could be read, otherwise false + + + + Tries to grab the next bits from the input and + sets of to the value. + + true if enough bits could be read, otherwise false + + + + Drops the next n bits from the input. You should have called PeekBits + with a bigger or equal n before, to make sure that enough bits are in + the bit buffer. + + The number of bits to drop. + + + + Gets the next n bits and increases input pointer. This is equivalent + to followed by , except for correct error handling. + + The number of bits to retrieve. + + the value of the bits, or -1 if not enough bits available. + + + + + Gets the number of bits available in the bit buffer. This must be + only called when a previous PeekBits() returned -1. + + + the number of bits available. + + + + + Gets the number of bytes available. + + + The number of bytes available. + + + + + Skips to the next byte boundary. + + + + + Returns true when SetInput can be called + + + + + Copies bytes from input buffer to output buffer starting + at output[offset]. You have to make sure, that the buffer is + byte aligned. If not enough bytes are available, copies fewer + bytes. + + + The buffer to copy bytes to. + + + The offset in the buffer at which copying starts + + + The length to copy, 0 is allowed. + + + The number of bytes copied, 0 if no bytes were available. + + + Length is less than zero + + + Bit buffer isnt byte aligned + + + + + Resets state and empties internal buffers + + + + + Add more input for consumption. + Only call when IsNeedingInput returns true + + data to be input + offset of first byte of input + number of bytes of input to add. + + + + FastZipEvents supports all events applicable to FastZip operations. + + + + + Delegate to invoke when processing directories. + + + + + Delegate to invoke when processing files. + + + + + Delegate to invoke during processing of files. + + + + + Delegate to invoke when processing for a file has been completed. + + + + + Delegate to invoke when processing directory failures. + + + + + Delegate to invoke when processing file failures. + + + + + Raise the directory failure event. + + The directory causing the failure. + The exception for this event. + A boolean indicating if execution should continue or not. + + + + Fires the file failure handler delegate. + + The file causing the failure. + The exception for this failure. + A boolean indicating if execution should continue or not. + + + + Fires the ProcessFile delegate. + + The file being processed. + A boolean indicating if execution should continue or not. + + + + Fires the delegate + + The file whose processing has been completed. + A boolean indicating if execution should continue or not. + + + + Fires the process directory delegate. + + The directory being processed. + Flag indicating if the directory has matching files as determined by the current filter. + A of true if the operation should continue; false otherwise. + + + + The minimum timespan between events. + + The minimum period of time between events. + + The default interval is three seconds. + + + + FastZip provides facilities for creating and extracting zip files. + + + + + Defines the desired handling when overwriting files during extraction. + + + + + Prompt the user to confirm overwriting + + + + + Never overwrite files. + + + + + Always overwrite files. + + + + + Initialise a default instance of . + + + + + Initialise a new instance of using the specified + + The time setting to use when creating or extracting Zip entries. + Using TimeSetting.LastAccessTime[Utc] when + creating an archive will set the file time to the moment of reading. + + + + + Initialise a new instance of using the specified + + The time to set all values for created or extracted Zip Entries. + + + + Initialise a new instance of + + The events to use during operations. + + + + Get/set a value indicating whether empty directories should be created. + + + + + Get / set the password value. + + + + + Get / set the method of encrypting entries. + + + Only applies when is set. + Defaults to ZipCrypto for backwards compatibility purposes. + + + + + Get or set the active when creating Zip files. + + + + + + Get or set the active when creating Zip files. + + + + + Gets or sets the setting for Zip64 handling when writing. + + + The default value is dynamic which is not backwards compatible with old + programs and can cause problems with XP's built in compression which cant + read Zip64 archives. However it does avoid the situation were a large file + is added and cannot be completed correctly. + NOTE: Setting the size for entries before they are added is the best solution! + By default the EntryFactory used by FastZip will set the file size. + + + + + Get/set a value indicating whether file dates and times should + be restored when extracting files from an archive. + + The default value is false. + + + + Get/set a value indicating whether file attributes should + be restored during extract operations + + + + + Get/set the Compression Level that will be used + when creating the zip + + + + + Delegate called when confirming overwriting of files. + + + + + Create a zip file. + + The name of the zip file to create. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + + + + Create a zip file/archive. + + The name of the zip file to create. + The directory to obtain files and directories from. + True to recurse directories, false for no recursion. + The file filter to apply. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + The is closed after creation. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + true to leave open after the zip has been created, false to dispose it. + + + + Create a zip file. + + The name of the zip file to create. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + true to leave open after the zip has been created, false to dispose it. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + For performing the actual file system scan + true to leave open after the zip has been created, false to dispose it. + The is closed after creation. + + + + Extract the contents of a zip file. + + The zip file to extract from. + The directory to save extracted information in. + A filter to apply to files. + + + + Extract the contents of a zip file. + + The zip file to extract from. + The directory to save extracted information in. + The style of overwriting to apply. + A delegate to invoke when confirming overwriting. + A filter to apply to files. + A filter to apply to directories. + Flag indicating whether to restore the date and time for extracted files. + Allow parent directory traversal in file paths (e.g. ../file) + + + + Extract the contents of a zip file held in a stream. + + The seekable input stream containing the zip to extract from. + The directory to save extracted information in. + The style of overwriting to apply. + A delegate to invoke when confirming overwriting. + A filter to apply to files. + A filter to apply to directories. + Flag indicating whether to restore the date and time for extracted files. + Flag indicating whether the inputStream will be closed by this method. + Allow parent directory traversal in file paths (e.g. ../file) + + + + Defines factory methods for creating new values. + + + + + Create a for a file given its name + + The name of the file to create an entry for. + Returns a file entry based on the passed. + + + + Create a for a file given its name + + The name of the file to create an entry for. + If true get details from the file system if the file exists. + Returns a file entry based on the passed. + + + + Create a for a file given its actual name and optional override name + + The name of the file to create an entry for. + An alternative name to be used for the new entry. Null if not applicable. + If true get details from the file system if the file exists. + Returns a file entry based on the passed. + + + + Create a for a directory given its name + + The name of the directory to create an entry for. + Returns a directory entry based on the passed. + + + + Create a for a directory given its name + + The name of the directory to create an entry for. + If true get details from the file system for this directory if it exists. + Returns a directory entry based on the passed. + + + + Get/set the applicable. + + + + + Get the in use. + + + + + Get the value to use when is set to , + or if not specified, the value of when the class was the initialized + + + + + WindowsNameTransform transforms names to windows compatible ones. + + + + + The maximum windows path name permitted. + + This may not valid for all windows systems - CE?, etc but I cant find the equivalent in the CLR. + + + + In this case we need Windows' invalid path characters. + Path.GetInvalidPathChars() only returns a subset invalid on all platforms. + + + + + Initialises a new instance of + + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Initialise a default instance of + + + + + Gets or sets a value containing the target directory to prefix values with. + + + + + Allow parent directory traversal in file paths (e.g. ../file) + + + + + Gets or sets a value indicating whether paths on incoming values should be removed. + + + + + Transform a Zip directory name to a windows directory name. + + The directory name to transform. + The transformed name. + + + + Transform a Zip format file name to a windows style one. + + The file name to transform. + The transformed name. + + + + Test a name to see if it is a valid name for a windows filename as extracted from a Zip archive. + + The name to test. + Returns true if the name is a valid zip name; false otherwise. + The filename isnt a true windows path in some fundamental ways like no absolute paths, no rooted paths etc. + + + + Force a name to be valid by replacing invalid characters with a fixed value + + The name to make valid + The replacement character to use for any invalid characters. + Returns a valid name + + + + Gets or set the character to replace invalid characters during transformations. + + + + + Determines how entries are tested to see if they should use Zip64 extensions or not. + + + + + Zip64 will not be forced on entries during processing. + + An entry can have this overridden if required + + + + Zip64 should always be used. + + + + + #ZipLib will determine use based on entry values when added to archive. + + + + + The kind of compression used for an entry in an archive + + + + + A direct copy of the file contents is held in the archive + + + + + Common Zip compression method using a sliding dictionary + of up to 32KB and secondary compression from Huffman/Shannon-Fano trees + + + + + An extension to deflate with a 64KB window. Not supported by #Zip currently + + + + + BZip2 compression. Not supported by #Zip. + + + + + LZMA compression. Not supported by #Zip. + + + + + PPMd compression. Not supported by #Zip. + + + + + WinZip special for AES encryption, Now supported by #Zip. + + + + + Identifies the encryption algorithm used for an entry + + + + + No encryption has been used. + + + + + Encrypted using PKZIP 2.0 or 'classic' encryption. + + + + + DES encryption has been used. + + + + + RC2 encryption has been used for encryption. + + + + + Triple DES encryption with 168 bit keys has been used for this entry. + + + + + Triple DES with 112 bit keys has been used for this entry. + + + + + AES 128 has been used for encryption. + + + + + AES 192 has been used for encryption. + + + + + AES 256 has been used for encryption. + + + + + RC2 corrected has been used for encryption. + + + + + Blowfish has been used for encryption. + + + + + Twofish has been used for encryption. + + + + + RC4 has been used for encryption. + + + + + An unknown algorithm has been used for encryption. + + + + + Defines the contents of the general bit flags field for an archive entry. + + + + + Bit 0 if set indicates that the file is encrypted + + + + + Bits 1 and 2 - Two bits defining the compression method (only for Method 6 Imploding and 8,9 Deflating) + + + + + Bit 3 if set indicates a trailing data descriptor is appended to the entry data + + + + + Bit 4 is reserved for use with method 8 for enhanced deflation + + + + + Bit 5 if set indicates the file contains Pkzip compressed patched data. + Requires version 2.7 or greater. + + + + + Bit 6 if set indicates strong encryption has been used for this entry. + + + + + Bit 7 is currently unused + + + + + Bit 8 is currently unused + + + + + Bit 9 is currently unused + + + + + Bit 10 is currently unused + + + + + Bit 11 if set indicates the filename and + comment fields for this file must be encoded using UTF-8. + + + + + Bit 12 is documented as being reserved by PKware for enhanced compression. + + + + + Bit 13 if set indicates that values in the local header are masked to hide + their actual values, and the central directory is encrypted. + + + Used when encrypting the central directory contents. + + + + + Bit 14 is documented as being reserved for use by PKware + + + + + Bit 15 is documented as being reserved for use by PKware + + + + + This class contains constants used for Zip format files + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See . + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See ZipInputStream.CanDecompressEntry. + + + + + The minimum version required to support strong encryption + + + + + The minimum version required to support strong encryption + + + + + Version indicating AES encryption + + + + + The version required for Zip64 extensions (4.5 or higher) + + + + + The version required for BZip2 compression (4.6 or higher) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of Zip64 data descriptor + + + + + Size of data descriptor + + + + + Size of data descriptor + + + + + Size of central header entry (excluding variable fields) + + + + + Size of central header entry + + + + + Size of end of central record (excluding variable fields) + + + + + Size of end of central record (excluding variable fields) + + + + + Size of 'classic' cryptographic header stored before any entry data + + + + + Size of cryptographic header stored before entry data + + + + + The size of the Zip64 central directory locator. + + + + + Signature for local entry header + + + + + Signature for local entry header + + + + + Signature for spanning entry + + + + + Signature for spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for central header + + + + + Signature for central header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central directory locator + + + + + Signature for archive extra data signature (were headers are encrypted). + + + + + Central header digital signature + + + + + Central header digital signature + + + + + End of central directory record signature + + + + + End of central directory record signature + + + + + Default encoding used for string conversion. 0 gives the default system OEM code page. + Using the default code page isnt the full solution necessarily + there are many variable factors, codepage 850 is often a good choice for + European users, however be careful about compatability. + + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + + The method of encrypting entries when creating zip archives. + + + + + No encryption will be used. + + + + + Encrypt entries with ZipCrypto. + + + + + Encrypt entries with AES 128. + + + + + Encrypt entries with AES 256. + + + + + Defines known values for the property. + + + + + Host system = MSDOS + + + + + Host system = Amiga + + + + + Host system = Open VMS + + + + + Host system = Unix + + + + + Host system = VMCms + + + + + Host system = Atari ST + + + + + Host system = OS2 + + + + + Host system = Macintosh + + + + + Host system = ZSystem + + + + + Host system = Cpm + + + + + Host system = Windows NT + + + + + Host system = MVS + + + + + Host system = VSE + + + + + Host system = Acorn RISC + + + + + Host system = VFAT + + + + + Host system = Alternate MVS + + + + + Host system = BEOS + + + + + Host system = Tandem + + + + + Host system = OS400 + + + + + Host system = OSX + + + + + Host system = WinZIP AES + + + + + This class represents an entry in a zip archive. This can be a file + or a directory + ZipFile and ZipInputStream will give you instances of this class as + information about the members in an archive. ZipOutputStream + uses an instance of this class when creating an entry in a Zip file. +
+
Author of the original java version : Jochen Hoenicke +
+
+ + + Creates a zip entry with the given name. + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with relative names only. + There are with no device names and path elements are separated by '/' characters. + + + The name passed is null + + + + + Creates a zip entry with the given name and version required to extract + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with no device names and + path elements separated by '/' characters. This is not enforced see CleanName + on how to ensure names are valid if this is desired. + + + The minimum 'feature version' required this entry + + + The name passed is null + + + + + Initializes an entry with the given name and made by information + + Name for this entry + Version and HostSystem Information + Minimum required zip feature version required to extract this entry + Compression method for this entry. + + The name passed is null + + + versionRequiredToExtract should be 0 (auto-calculate) or > 10 + + + This constructor is used by the ZipFile class when reading from the central header + It is not generally useful, use the constructor specifying the name only. + + + + + Creates a deep copy of the given zip entry. + + + The entry to copy. + + + + + Get a value indicating whether the entry has a CRC value available. + + + + + Get/Set flag indicating if entry is encrypted. + A simple helper routine to aid interpretation of flags + + This is an assistant that interprets the flags property. + + + + Get / set a flag indicating whether entry name and comment text are + encoded in unicode UTF8. + + This is an assistant that interprets the flags property. + + + + Value used during password checking for PKZIP 2.0 / 'classic' encryption. + + + + + Get/Set general purpose bit flag for entry + + + General purpose bit flag
+
+ Bit 0: If set, indicates the file is encrypted
+ Bit 1-2 Only used for compression type 6 Imploding, and 8, 9 deflating
+ Imploding:
+ Bit 1 if set indicates an 8K sliding dictionary was used. If clear a 4k dictionary was used
+ Bit 2 if set indicates 3 Shannon-Fanno trees were used to encode the sliding dictionary, 2 otherwise
+
+ Deflating:
+ Bit 2 Bit 1
+ 0 0 Normal compression was used
+ 0 1 Maximum compression was used
+ 1 0 Fast compression was used
+ 1 1 Super fast compression was used
+
+ Bit 3: If set, the fields crc-32, compressed size + and uncompressed size are were not able to be written during zip file creation + The correct values are held in a data descriptor immediately following the compressed data.
+ Bit 4: Reserved for use by PKZIP for enhanced deflating
+ Bit 5: If set indicates the file contains compressed patch data
+ Bit 6: If set indicates strong encryption was used.
+ Bit 7-10: Unused or reserved
+ Bit 11: If set the name and comments for this entry are in unicode.
+ Bit 12-15: Unused or reserved
+
+ + +
+ + + Get/Set index of this entry in Zip file + + This is only valid when the entry is part of a + + + + Get/set offset for use in central header + + + + + Get/Set external file attributes as an integer. + The values of this are operating system dependent see + HostSystem for details + + + + + Get the version made by for this entry or zero if unknown. + The value / 10 indicates the major version number, and + the value mod 10 is the minor version number + + + + + Get a value indicating this entry is for a DOS/Windows system. + + + + + Test the external attributes for this to + see if the external attributes are Dos based (including WINNT and variants) + and match the values + + The attributes to test. + Returns true if the external attributes are known to be DOS/Windows + based and have the same attributes set as the value passed. + + + + Gets the compatibility information for the external file attribute + If the external file attributes are compatible with MS-DOS and can be read + by PKZIP for DOS version 2.04g then this value will be zero. Otherwise the value + will be non-zero and identify the host system on which the attributes are compatible. + + + + The values for this as defined in the Zip File format and by others are shown below. The values are somewhat + misleading in some cases as they are not all used as shown. You should consult the relevant documentation + to obtain up to date and correct information. The modified appnote by the infozip group is + particularly helpful as it documents a lot of peculiarities. The document is however a little dated. + + 0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems) + 1 - Amiga + 2 - OpenVMS + 3 - Unix + 4 - VM/CMS + 5 - Atari ST + 6 - OS/2 HPFS + 7 - Macintosh + 8 - Z-System + 9 - CP/M + 10 - Windows NTFS + 11 - MVS (OS/390 - Z/OS) + 12 - VSE + 13 - Acorn Risc + 14 - VFAT + 15 - Alternate MVS + 16 - BeOS + 17 - Tandem + 18 - OS/400 + 19 - OS/X (Darwin) + 99 - WinZip AES + remainder - unused + + + + + + Get minimum Zip feature version required to extract this entry + + + Minimum features are defined as:
+ 1.0 - Default value
+ 1.1 - File is a volume label
+ 2.0 - File is a folder/directory
+ 2.0 - File is compressed using Deflate compression
+ 2.0 - File is encrypted using traditional encryption
+ 2.1 - File is compressed using Deflate64
+ 2.5 - File is compressed using PKWARE DCL Implode
+ 2.7 - File is a patch data set
+ 4.5 - File uses Zip64 format extensions
+ 4.6 - File is compressed using BZIP2 compression
+ 5.0 - File is encrypted using DES
+ 5.0 - File is encrypted using 3DES
+ 5.0 - File is encrypted using original RC2 encryption
+ 5.0 - File is encrypted using RC4 encryption
+ 5.1 - File is encrypted using AES encryption
+ 5.1 - File is encrypted using corrected RC2 encryption
+ 5.1 - File is encrypted using corrected RC2-64 encryption
+ 6.1 - File is encrypted using non-OAEP key wrapping
+ 6.2 - Central directory encryption (not confirmed yet)
+ 6.3 - File is compressed using LZMA
+ 6.3 - File is compressed using PPMD+
+ 6.3 - File is encrypted using Blowfish
+ 6.3 - File is encrypted using Twofish
+
+ +
+ + + Get a value indicating whether this entry can be decompressed by the library. + + This is based on the and + whether the compression method is supported. + + + + Force this entry to be recorded using Zip64 extensions. + + + + + Get a value indicating whether Zip64 extensions were forced. + + A value of true if Zip64 extensions have been forced on; false if not. + + + + Gets a value indicating if the entry requires Zip64 extensions + to store the full entry values. + + A value of true if a local header requires Zip64 extensions; false if not. + + + + Get a value indicating whether the central directory entry requires Zip64 extensions to be stored. + + + + + Get/Set DosTime value. + + + The MS-DOS date format can only represent dates between 1/1/1980 and 12/31/2107. + + + + + Gets/Sets the time of last modification of the entry. + + + The property is updated to match this as far as possible. + + + + + Returns the entry name. + + + The unix naming convention is followed. + Path components in the entry should always separated by forward slashes ('/'). + Dos device names like C: should also be removed. + See the class, or + + + + + Gets/Sets the size of the uncompressed data. + + + The size or -1 if unknown. + + Setting the size before adding an entry to an archive can help + avoid compatibility problems with some archivers which don't understand Zip64 extensions. + + + + Gets/Sets the size of the compressed data. + + + The compressed entry size or -1 if unknown. + + + + + Gets/Sets the crc of the uncompressed data. + + + Crc is not in the range 0..0xffffffffL + + + The crc value or -1 if unknown. + + + + + Gets/Sets the compression method. + + + The compression method for this entry + + + + + Gets the compression method for outputting to the local or central header. + Returns same value as CompressionMethod except when AES encrypting, which + places 99 in the method and places the real method in the extra data. + + + + + Gets/Sets the extra data. + + + Extra data is longer than 64KB (0xffff) bytes. + + + Extra data or null if not set. + + + + + For AES encrypted files returns or sets the number of bits of encryption (128, 192 or 256). + When setting, only 0 (off), 128 or 256 is supported. + + + + + AES Encryption strength for storage in extra data in entry header. + 1 is 128 bit, 2 is 192 bit, 3 is 256 bit. + + + + + Returns the length of the salt, in bytes + + Key size -> Salt length: 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes. + + + + Number of extra bytes required to hold the AES Header fields (Salt, Pwd verify, AuthCode) + + File format: + Bytes | Content + ---------+--------------------------- + Variable | Salt value + 2 | Password verification value + Variable | Encrypted file data + 10 | Authentication code + + + + Number of extra bytes required to hold the encryption header fields. + + + + + Process extra data fields updating the entry based on the contents. + + True if the extra data fields should be handled + for a local header, rather than for a central header. + + + + + Gets/Sets the entry comment. + + + If comment is longer than 0xffff. + + + The comment or null if not set. + + + A comment is only available for entries when read via the class. + The class doesn't have the comment data available. + + + + + Gets a value indicating if the entry is a directory. + however. + + + A directory is determined by an entry name with a trailing slash '/'. + The external file attributes can also indicate an entry is for a directory. + Currently only dos/windows attributes are tested in this manner. + The trailing slash convention should always be followed. + + + + + Get a value of true if the entry appears to be a file; false otherwise + + + This only takes account of DOS/Windows attributes. Other operating systems are ignored. + For linux and others the result may be incorrect. + + + + + Test entry to see if data can be extracted. + + Returns true if data can be extracted for this entry; false otherwise. + + + + Creates a copy of this zip entry. + + An that is a copy of the current instance. + + + + Gets a string representation of this ZipEntry. + + A readable textual representation of this + + + + Test a compression method to see if this library + supports extracting data compressed with that method + + The compression method to test. + Returns true if the compression method is supported; false otherwise + + + + Cleans a name making it conform to Zip file conventions. + Devices names ('c:\') and UNC share names ('\\server\share') are removed + and forward slashes ('\') are converted to back slashes ('/'). + Names are made relative by trimming leading slashes which is compatible + with the ZIP naming convention. + + The name to clean + The 'cleaned' name. + + The Zip name transform class is more flexible. + + + + + General ZipEntry helper extensions + + + + + Efficiently check if a flag is set without enum un-/boxing + + + + Returns whether the flag was set + + + + Efficiently set a flag without enum un-/boxing + + + + Whether the passed flag should be set (1) or cleared (0) + + + + Basic implementation of + + + + + Defines the possible values to be used for the . + + + + + Use the recorded LastWriteTime value for the file. + + + + + Use the recorded LastWriteTimeUtc value for the file + + + + + Use the recorded CreateTime value for the file. + + + + + Use the recorded CreateTimeUtc value for the file. + + + + + Use the recorded LastAccessTime value for the file. + + + + + Use the recorded LastAccessTimeUtc value for the file. + + + + + Use a fixed value. + + The actual value used can be + specified via the constructor or + using the with the setting set + to which will use the when this class was constructed. + The property can also be used to set this value. + + + + Initialise a new instance of the class. + + A default , and the LastWriteTime for files is used. + + + + Initialise a new instance of using the specified + + The time setting to use when creating Zip entries. + + + + Initialise a new instance of using the specified + + The time to set all values to. + + + + Get / set the to be used when creating new values. + + + Setting this property to null will cause a default name transform to be used. + + + + + Get / set the in use. + + + + + Get / set the value to use when is set to + + + + + A bitmask defining the attributes to be retrieved from the actual file. + + The default is to get all possible attributes from the actual file. + + + + A bitmask defining which attributes are to be set on. + + By default no attributes are set on. + + + + Get set a value indicating whether unidoce text should be set on. + + + + + Make a new for a file. + + The name of the file to create a new entry for. + Returns a new based on the . + + + + Make a new for a file. + + The name of the file to create a new entry for. + If true entry detail is retrieved from the file system if the file exists. + Returns a new based on the . + + + + Make a new from a name. + + The name of the file to create a new entry for. + An alternative name to be used for the new entry. Null if not applicable. + If true entry detail is retrieved from the file system if the file exists. + Returns a new based on the . + + + + Make a new for a directory. + + The raw untransformed name for the new directory + Returns a new representing a directory. + + + + Make a new for a directory. + + The raw untransformed name for the new directory + If true entry detail is retrieved from the file system if the file exists. + Returns a new representing a directory. + + + + ZipException represents exceptions specific to Zip classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the ZipException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + ExtraData tagged value interface. + + + + + Get the ID for this tagged data value. + + + + + Set the contents of this instance from the data passed. + + The data to extract contents from. + The offset to begin extracting data from. + The number of bytes to extract. + + + + Get the data representing this instance. + + Returns the data for this instance. + + + + A raw binary tagged value + + + + + Initialise a new instance. + + The tag ID. + + + + Get the ID for this tagged data value. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Get /set the binary data representing this instance. + + The raw binary data representing this instance. + + + + The tag ID for this instance. + + + + + Class representing extended unix date time values. + + + + + Flags indicate which values are included in this instance. + + + + + The modification time is included + + + + + The access time is included + + + + + The create time is included. + + + + + Get the ID + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a value to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + The standard Unix time is a signed integer data type, directly encoding the Unix time number, + which is the number of seconds since 1970-01-01. + Being 32 bits means the values here cover a range of about 136 years. + The minimum representable time is 1901-12-13 20:45:52, + and the maximum representable time is 2038-01-19 03:14:07. + + + + + Get /set the Modification Time + + + + + + + Get / set the Access Time + + + + + + + Get / Set the Create Time + + + + + + + Get/set the values to include. + + + + + Class handling NT date time values. + + + + + Get the ID for this tagged data value. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a valuie to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + + NTFS filetimes are 64-bit unsigned integers, stored in Intel + (least significant byte first) byte order. They determine the + number of 1.0E-07 seconds (1/10th microseconds!) past WinNT "epoch", + which is "01-Jan-1601 00:00:00 UTC". 28 May 60056 is the upper limit + + + + + Get/set the last modification time. + + + + + Get /set the create time + + + + + Get /set the last access time. + + + + + A factory that creates tagged data instances. + + + + + Get data for a specific tag value. + + The tag ID to find. + The data to search. + The offset to begin extracting data from. + The number of bytes to extract. + The located value found, or null if not found. + + + + + A class to handle the extra data field for Zip entries + + + Extra data contains 0 or more values each prefixed by a header tag and length. + They contain zero or more bytes of actual data. + The data is held internally using a copy on write strategy. This is more efficient but + means that for extra data created by passing in data can have the values modified by the caller + in some circumstances. + + + + + Initialise a default instance. + + + + + Initialise with known extra data. + + The extra data. + + + + Get the raw extra data value + + Returns the raw byte[] extra data this instance represents. + + + + Clear the stored data. + + + + + Gets the current extra data length. + + + + + Get a read-only for the associated tag. + + The tag to locate data for. + Returns a containing tag data or null if no tag was found. + + + + Get the tagged data for a tag. + + The tag to search for. + Returns a tagged value or null if none found. + + + + Get the length of the last value found by + + This is only valid if has previously returned true. + + + + Get the index for the current read value. + + This is only valid if has previously returned true. + Initially the result will be the index of the first byte of actual data. The value is updated after calls to + , and . + + + + Get the number of bytes remaining to be read for the current value; + + + + + Find an extra data value + + The identifier for the value to find. + Returns true if the value was found; false otherwise. + + + + Add a new entry to extra data. + + The value to add. + + + + Add a new entry to extra data + + The ID for this entry. + The data to add. + If the ID already exists its contents are replaced. + + + + Start adding a new entry. + + Add data using , , , or . + The new entry is completed and actually added by calling + + + + + Add entry data added since using the ID passed. + + The identifier to use for this entry. + + + + Add a byte of data to the pending new entry. + + The byte to add. + + + + + Add data to a pending new entry. + + The data to add. + + + + + Add a short value in little endian order to the pending new entry. + + The data to add. + + + + + Add an integer value in little endian order to the pending new entry. + + The data to add. + + + + + Add a long value in little endian order to the pending new entry. + + The data to add. + + + + + Delete an extra data field. + + The identifier of the field to delete. + Returns true if the field was found and deleted. + + + + Read a long in little endian form from the last found data value + + Returns the long value read. + + + + Read an integer in little endian form from the last found data value. + + Returns the integer read. + + + + Read a short value in little endian form from the last found data value. + + Returns the short value read. + + + + Read a byte from an extra data + + The byte value read or -1 if the end of data has been reached. + + + + Skip data during reading. + + The number of bytes to skip. + + + + Internal form of that reads data at any location. + + Returns the short value read. + + + + Dispose of this instance. + + + + + Arguments used with KeysRequiredEvent + + + + + Initialise a new instance of + + The name of the file for which keys are required. + + + + Initialise a new instance of + + The name of the file for which keys are required. + The current key value. + + + + Gets the name of the file for which keys are required. + + + + + Gets or sets the key value + + + + + The strategy to apply to testing. + + + + + Find the first error only. + + + + + Find all possible errors. + + + + + The operation in progress reported by a during testing. + + TestArchive + + + + Setting up testing. + + + + + Testing an individual entries header + + + + + Testing an individual entries data + + + + + Testing an individual entry has completed. + + + + + Running miscellaneous tests + + + + + Testing is complete + + + + + Status returned by during testing. + + TestArchive + + + + Initialise a new instance of + + The this status applies to. + + + + Get the current in progress. + + + + + Get the this status is applicable to. + + + + + Get the current/last entry tested. + + + + + Get the number of errors detected so far. + + + + + Get the number of bytes tested so far for the current entry. + + + + + Get a value indicating whether the last entry test was valid. + + + + + Delegate invoked during testing if supplied indicating current progress and status. + + If the message is non-null an error has occured. If the message is null + the operation as found in status has started. + + + + The possible ways of applying updates to an archive. + + + + + Perform all updates on temporary files ensuring that the original file is saved. + + + + + Update the archive directly, which is faster but less safe. + + + + + This class represents a Zip archive. You can ask for the contained + entries, or get an input stream for a file entry. The entry is + automatically decompressed. + + You can also update the archive adding or deleting entries. + + This class is thread safe for input: You can open input streams for arbitrary + entries in different threads. +
+
Author of the original java version : Jochen Hoenicke +
+ + + using System; + using System.Text; + using System.Collections; + using System.IO; + + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + static public void Main(string[] args) + { + using (ZipFile zFile = new ZipFile(args[0])) { + Console.WriteLine("Listing of : " + zFile.Name); + Console.WriteLine(""); + Console.WriteLine("Raw Size Size Date Time Name"); + Console.WriteLine("-------- -------- -------- ------ ---------"); + foreach (ZipEntry e in zFile) { + if ( e.IsFile ) { + DateTime d = e.DateTime; + Console.WriteLine("{0, -10}{1, -10}{2} {3} {4}", e.Size, e.CompressedSize, + d.ToString("dd-MM-yy"), d.ToString("HH:mm"), + e.Name); + } + } + } + } + } + + +
+ + + Delegate for handling keys/password setting during compression/decompression. + + + + + Event handler for handling encryption keys. + + + + + Handles getting of encryption keys when required. + + The file for which encryption keys are required. + + + + Get/set the encryption key value. + + + + + Password to be used for encrypting/decrypting files. + + Set to null if no password is required. + + + + Get a value indicating whether encryption keys are currently available. + + + + + Opens a Zip file with the given name for reading. + + The name of the file to open. + The argument supplied is null. + + An i/o error occurs + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + The supplied argument is null. + + An i/o error occurs. + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + true to leave the file open when the ZipFile is disposed, false to dispose of it + The supplied argument is null. + + An i/o error occurs. + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + + An i/o error occurs + + + The stream doesn't contain a valid zip archive.
+
+ + The stream doesnt support seeking. + + + The stream argument is null. + +
+ + + Opens a Zip file reading the given . + + The to read archive data from. + true to leave the stream open when the ZipFile is disposed, false to dispose of it + + An i/o error occurs + + + The stream doesn't contain a valid zip archive.
+
+ + The stream doesnt support seeking. + + + The stream argument is null. + +
+ + + Initialises a default instance with no entries and no file storage. + + + + + Finalize this instance. + + + + + Closes the ZipFile. If the stream is owned then this also closes the underlying input stream. + Once closed, no further instance methods should be called. + + + An i/o error occurs. + + + + + Create a new whose data will be stored in a file. + + The name of the archive to create. + Returns the newly created + is null + + + + Create a new whose data will be stored on a stream. + + The stream providing data storage. + Returns the newly created + is null + doesnt support writing. + + + + Get/set a flag indicating if the underlying stream is owned by the ZipFile instance. + If the flag is true then the stream will be closed when Close is called. + + + The default value is true in all cases. + + + + + Get a value indicating whether + this archive is embedded in another file or not. + + + + + Get a value indicating that this archive is a new one. + + + + + Gets the comment for the zip file. + + + + + Gets the name of this zip file. + + + + + Gets the number of entries in this zip file. + + + The Zip file has been closed. + + + + + Get the number of entries contained in this . + + + + + Indexer property for ZipEntries + + + + + Gets an enumerator for the Zip entries in this Zip file. + + Returns an for this archive. + + The Zip file has been closed. + + + + + Return the index of the entry with a matching name + + Entry name to find + If true the comparison is case insensitive + The index position of the matching entry or -1 if not found + + The Zip file has been closed. + + + + + Searches for a zip entry in this archive with the given name. + String comparisons are case insensitive + + + The name to find. May contain directory components separated by slashes ('/'). + + + A clone of the zip entry, or null if no entry with that name exists. + + + The Zip file has been closed. + + + + + Gets an input stream for reading the given zip entry data in an uncompressed form. + Normally the should be an entry returned by GetEntry(). + + The to obtain a data for + An input containing data for this + + The ZipFile has already been closed + + + The compression method for the entry is unknown + + + The entry is not found in the ZipFile + + + + + Creates an input stream reading a zip entry + + The index of the entry to obtain an input stream for. + + An input containing data for this + + + The ZipFile has already been closed + + + The compression method for the entry is unknown + + + The entry is not found in the ZipFile + + + + + Test an archive for integrity/validity + + Perform low level data Crc check + true if all tests pass, false otherwise + Testing will terminate on the first error found. + + + + Test an archive for integrity/validity + + Perform low level data Crc check + The to apply. + The handler to call during testing. + true if all tests pass, false otherwise + The object has already been closed. + + + + Test a local header against that provided from the central directory + + + The entry to test against + + The type of tests to carry out. + The offset of the entries data in the file + + + + The kind of update to apply. + + + + + Get / set the to apply to names when updating. + + + + + Get/set the used to generate values + during updates. + + + + + Get /set the buffer size to be used when updating this zip file. + + + + + Get a value indicating an update has been started. + + + + + Get / set a value indicating how Zip64 Extension usage is determined when adding entries. + + + + + Begin updating this archive. + + The archive storage for use during the update. + The data source to utilise during updating. + ZipFile has been closed. + One of the arguments provided is null + ZipFile has been closed. + + + + Begin updating to this archive. + + The storage to use during the update. + + + + Begin updating this archive. + + + + + + + + Commit current updates, updating this archive. + + + + ZipFile has been closed. + + + + Abort updating leaving the archive unchanged. + + + + + + + Set the file comment to be recorded when the current update is commited. + + The comment to record. + ZipFile has been closed. + + + + Add a new entry to the archive. + + The name of the file to add. + The compression method to use. + Ensure Unicode text is used for name and comment for this entry. + Argument supplied is null. + ZipFile has been closed. + Compression method is not supported for creating entries. + + + + Add a new entry to the archive. + + The name of the file to add. + The compression method to use. + ZipFile has been closed. + Compression method is not supported for creating entries. + + + + Add a file to the archive. + + The name of the file to add. + Argument supplied is null. + + + + Add a file to the archive. + + The name of the file to add. + The name to use for the on the Zip file created. + Argument supplied is null. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + The compression method to use. + Compression method is not supported for creating entries. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + The compression method to use. + Ensure Unicode text is used for name and comments for this entry. + Compression method is not supported for creating entries. + + + + Add a that contains no data. + + The entry to add. + This can be used to add directories, volume labels, or empty file entries. + + + + Add a with data. + + The source of the data for this entry. + The entry to add. + This can be used to add file entries with a custom data source. + + The encryption method specified in is unsupported. + + Compression method is not supported for creating entries. + + + + Add a directory entry to the archive. + + The directory to add. + + + + Check if the specified compression method is supported for adding a new entry. + + The compression method for the new entry. + + + + Delete an entry by name + + The filename to delete + True if the entry was found and deleted; false otherwise. + + + + Delete a from the archive. + + The entry to delete. + + + + Write an unsigned short in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Write an unsigned int in little endian byte order. + + + + + Write a long in little endian byte order. + + + + + Get a raw memory buffer. + + Returns a raw memory buffer. + + + + Get the size of the source descriptor for a . + + The update to get the size for. + Whether to include the signature size + The descriptor size, zero if there isn't one. + + + + Get an output stream for the specified + + The entry to get an output stream for. + The output stream obtained for the entry. + + + + Class used to sort updates. + + + + + Compares two objects and returns a value indicating whether one is + less than, equal to or greater than the other. + + First object to compare + Second object to compare. + Compare result. + + + + Represents a pending update to a Zip file. + + + + + Copy an existing entry. + + The existing entry to copy. + + + + Get the for this update. + + This is the source or original entry. + + + + Get the that will be written to the updated/new file. + + + + + Get the command for this update. + + + + + Get the filename if any for this update. Null if none exists. + + + + + Get/set the location of the size patch for this update. + + + + + Get /set the location of the crc patch for this update. + + + + + Get/set the size calculated by offset. + Specifically, the difference between this and next entry's starting offset. + + + + + Releases the unmanaged resources used by the this instance and optionally releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Read an unsigned short in little endian byte order. + + Returns the value read. + + The stream ends prematurely + + + + + Read a uint in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Search for and read the central directory of a zip file filling the entries array. + + + An i/o error occurs. + + + The central directory is malformed or cannot be found + + + + + Locate the data for a given entry. + + + The start offset of the data. + + + The stream ends prematurely + + + The local header signature is invalid, the entry and central header file name lengths are different + or the local and entry compression methods dont match + + + + + Represents a string from a which is stored as an array of bytes. + + + + + Initialise a with a string. + + The textual string form. + + + + Initialise a using a string in its binary 'raw' form. + + + + + + Get a value indicating the original source of data for this instance. + True if the source was a string; false if the source was binary data. + + + + + Get the length of the comment when represented as raw bytes. + + + + + Get the comment in its 'raw' form as plain bytes. + + + + + Reset the comment to its initial state. + + + + + Implicit conversion of comment to a string. + + The to convert to a string. + The textual equivalent for the input value. + + + + An enumerator for Zip entries + + + + + An is a stream that you can write uncompressed data + to and flush, but cannot read, seek or do anything else to. + + + + + Gets a value indicating whether the current stream supports reading. + + + + + Write any buffered data to underlying storage. + + + + + Gets a value indicating whether the current stream supports writing. + + + + + Gets a value indicating whether the current stream supports seeking. + + + + + Get the length in bytes of the stream. + + + + + Gets or sets the position within the current stream. + + + + + Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. + + The sum of offset and count is larger than the buffer length. + Methods were called after the stream was closed. + The stream does not support reading. + buffer is null. + An I/O error occurs. + offset or count is negative. + + + + Sets the position within the current stream. + + A byte offset relative to the origin parameter. + A value of type indicating the reference point used to obtain the new position. + + The new position within the current stream. + + An I/O error occurs. + The stream does not support seeking, such as if the stream is constructed from a pipe or console output. + Methods were called after the stream was closed. + + + + Sets the length of the current stream. + + The desired length of the current stream in bytes. + The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. + An I/O error occurs. + Methods were called after the stream was closed. + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + An I/O error occurs. + The stream does not support writing. + Methods were called after the stream was closed. + buffer is null. + The sum of offset and count is greater than the buffer length. + offset or count is negative. + + + + A is an + whose data is only a part or subsection of a file. + + + + + Initialise a new instance of the class. + + The containing the underlying stream to use for IO. + The start of the partial data. + The length of the partial data. + + + + Read a byte from this stream. + + Returns the byte read or -1 on end of stream. + + + + Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. + + The sum of offset and count is larger than the buffer length. + Methods were called after the stream was closed. + The stream does not support reading. + buffer is null. + An I/O error occurs. + offset or count is negative. + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + An I/O error occurs. + The stream does not support writing. + Methods were called after the stream was closed. + buffer is null. + The sum of offset and count is greater than the buffer length. + offset or count is negative. + + + + When overridden in a derived class, sets the length of the current stream. + + The desired length of the current stream in bytes. + The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. + An I/O error occurs. + Methods were called after the stream was closed. + + + + When overridden in a derived class, sets the position within the current stream. + + A byte offset relative to the origin parameter. + A value of type indicating the reference point used to obtain the new position. + + The new position within the current stream. + + An I/O error occurs. + The stream does not support seeking, such as if the stream is constructed from a pipe or console output. + Methods were called after the stream was closed. + + + + Clears all buffers for this stream and causes any buffered data to be written to the underlying device. + + An I/O error occurs. + + + + Gets or sets the position within the current stream. + + + The current position within the stream. + An I/O error occurs. + The stream does not support seeking. + Methods were called after the stream was closed. + + + + Gets the length in bytes of the stream. + + + A long value representing the length of the stream in bytes. + A class derived from Stream does not support seeking. + Methods were called after the stream was closed. + + + + Gets a value indicating whether the current stream supports writing. + + false + true if the stream supports writing; otherwise, false. + + + + Gets a value indicating whether the current stream supports seeking. + + true + true if the stream supports seeking; otherwise, false. + + + + Gets a value indicating whether the current stream supports reading. + + true. + true if the stream supports reading; otherwise, false. + + + + Gets a value that determines whether the current stream can time out. + + + A value that determines whether the current stream can time out. + + + + Provides a static way to obtain a source of data for an entry. + + + + + Get a source of data by creating a new stream. + + Returns a to use for compression input. + Ideally a new stream is created and opened to achieve this, to avoid locking problems. + + + + Represents a source of data that can dynamically provide + multiple data sources based on the parameters passed. + + + + + Get a data source. + + The to get a source for. + The name for data if known. + Returns a to use for compression input. + Ideally a new stream is created and opened to achieve this, to avoid locking problems. + + + + Default implementation of a for use with files stored on disk. + + + + + Initialise a new instance of + + The name of the file to obtain data from. + + + + Get a providing data. + + Returns a providing data. + + + + Default implementation of for files stored on disk. + + + + + Get a providing data for an entry. + + The entry to provide data for. + The file name for data if known. + Returns a stream providing data; or null if not available + + + + Defines facilities for data storage when updating Zip Archives. + + + + + Get the to apply during updates. + + + + + Get an empty that can be used for temporary output. + + Returns a temporary output + + + + + Convert a temporary output stream to a final stream. + + The resulting final + + + + + Make a temporary copy of the original stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The current stream. + Returns a stream suitable for direct updating. + This may be the current stream passed. + + + + Dispose of this instance. + + + + + An abstract suitable for extension by inheritance. + + + + + Initializes a new instance of the class. + + The update mode. + + + + Gets a temporary output + + Returns the temporary output stream. + + + + + Converts the temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + + Make a temporary copy of a . + + The to make a copy of. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The to open for direct update. + Returns a stream suitable for direct updating. + + + + Disposes this instance. + + + + + Gets the update mode applicable. + + The update mode. + + + + An implementation suitable for hard disks. + + + + + Initializes a new instance of the class. + + The file. + The update mode. + + + + Initializes a new instance of the class. + + The file. + + + + Gets a temporary output for performing updates on. + + Returns the temporary output stream. + + + + Converts a temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + Make a temporary copy of a stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The current stream. + Returns a stream suitable for direct updating. + If the is not null this is used as is. + + + + Disposes this instance. + + + + + An implementation suitable for in memory streams. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The to use + This constructor is for testing as memory streams dont really require safe mode. + + + + Get the stream returned by if this was in fact called. + + + + + Gets the temporary output + + Returns the temporary output stream. + + + + Converts the temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + Make a temporary copy of the original stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The original source stream + Returns a stream suitable for direct updating. + If the passed is not null this is used; + otherwise a new is returned. + + + + Disposes this instance. + + + + + Holds data pertinent to a data descriptor. + + + + + Get /set the compressed size of data. + + + + + Get / set the uncompressed size of data + + + + + Get /set the crc value. + + + + + This class assists with writing/reading from Zip files. + + + + + Initialise an instance of this class. + + The name of the file to open. + + + + Initialise a new instance of . + + The stream to use. + + + + Get / set a value indicating whether the underlying stream is owned or not. + + If the stream is owned it is closed when this instance is closed. + + + + Close the stream. + + + The underlying stream is closed only if is true. + + + + + Locates a block with the desired . + + The signature to find. + Location, marking the end of block. + Minimum size of the block. + The maximum variable data. + Returns the offset of the first byte after the signature; -1 if not found + + + + Write Zip64 end of central directory records (File header and locator). + + The number of entries in the central directory. + The size of entries in the central directory. + The offset of the central directory. + + + + Write the required records to end the central directory. + + The number of entries in the directory. + The size of the entries in the directory. + The start of the central directory. + The archive comment. (This can be null). + + + + Read an unsigned short in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read an int in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read a long in little endian byte order. + + The value read. + + + + Write an unsigned short in little endian byte order. + + The value to write. + + + + Write a ushort in little endian byte order. + + The value to write. + + + + Write an int in little endian byte order. + + The value to write. + + + + Write a uint in little endian byte order. + + The value to write. + + + + Write a long in little endian byte order. + + The value to write. + + + + Write a ulong in little endian byte order. + + The value to write. + + + + Write a data descriptor. + + The entry to write a descriptor for. + Returns the number of descriptor bytes written. + + + + Read data descriptor at the end of compressed data. + + if set to true [zip64]. + The data to fill in. + Returns the number of bytes read in the descriptor. + + + + This is an InflaterInputStream that reads the files baseInputStream an zip archive + one after another. It has a special method to get the zip entry of + the next file. The zip entry contains information about the file name + size, compressed size, Crc, etc. + It includes support for Stored and Deflated entries. +
+
Author of the original java version : Jochen Hoenicke +
+ + This sample shows how to read a zip file + + using System; + using System.Text; + using System.IO; + + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + public static void Main(string[] args) + { + using ( ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) { + + ZipEntry theEntry; + const int size = 2048; + byte[] data = new byte[2048]; + + while ((theEntry = s.GetNextEntry()) != null) { + if ( entry.IsFile ) { + Console.Write("Show contents (y/n) ?"); + if (Console.ReadLine() == "y") { + while (true) { + size = s.Read(data, 0, data.Length); + if (size > 0) { + Console.Write(new ASCIIEncoding().GetString(data, 0, size)); + } else { + break; + } + } + } + } + } + } + } + } + + +
+ + + Delegate for reading bytes from a stream. + + + + + The current reader this instance. + + + + + Creates a new Zip input stream, for reading a zip archive. + + The underlying providing data. + + + + Creates a new Zip input stream, for reading a zip archive. + + The underlying providing data. + Size of the buffer. + + + + Optional password used for encryption when non-null + + A password for all encrypted entries in this + + + + Gets a value indicating if there is a current entry and it can be decompressed + + + The entry can only be decompressed if the library supports the zip features required to extract it. + See the ZipEntry Version property for more details. + + Since uses the local headers for extraction, entries with no compression combined with the + flag set, cannot be extracted as the end of the entry data cannot be deduced. + + + + + Is the compression method for the specified entry supported? + + + Uses entry.CompressionMethodForHeader so that entries of type WinZipAES will be rejected. + + the entry to check. + true if the compression method is supported, false if not. + + + + Advances to the next entry in the archive + + + The next entry in the archive or null if there are no more entries. + + + If the previous entry is still open CloseEntry is called. + + + Input stream is closed + + + Password is not set, password is invalid, compression method is invalid, + version required to extract is not supported + + + + + Read data descriptor at the end of compressed data. + + + + + Complete cleanup as the final part of closing. + + True if the crc value should be tested + + + + Closes the current zip entry and moves to the next one. + + + The stream is closed + + + The Zip stream ends early + + + + + Returns 1 if there is an entry available + Otherwise returns 0. + + + + + Returns the current size that can be read from the current entry if available + + Thrown if the entry size is not known. + Thrown if no entry is currently available. + + + + Reads a byte from the current zip entry. + + + The byte or -1 if end of stream is reached. + + + + + Handle attempts to read by throwing an . + + The destination array to store data in. + The offset at which data read should be stored. + The maximum number of bytes to read. + Returns the number of bytes actually read. + + + + Handle attempts to read from this entry by throwing an exception + + + + + Handle attempts to read from this entry by throwing an exception + + + + + Perform the initial read on an entry which may include + reading encryption headers and setting up inflation. + + The destination to fill with data read. + The offset to start reading at. + The maximum number of bytes to read. + The actual number of bytes read. + + + + Read a block of bytes from the stream. + + The destination for the bytes. + The index to start storing data. + The number of bytes to attempt to read. + Returns the number of bytes read. + Zero bytes read means end of stream. + + + + Reads a block of bytes from the current zip entry. + + + The number of bytes read (this may be less than the length requested, even before the end of stream), or 0 on end of stream. + + + An i/o error occurred. + + + The deflated stream is corrupted. + + + The stream is not open. + + + + + Closes the zip input stream + + + + + ZipNameTransform transforms names as per the Zip file naming convention. + + The use of absolute names is supported although its use is not valid + according to Zip naming conventions, and should not be used if maximum compatability is desired. + + + + Initialize a new instance of + + + + + Initialize a new instance of + + The string to trim from the front of paths if found. + + + + Static constructor. + + + + + Transform a windows directory name according to the Zip file naming conventions. + + The directory name to transform. + The transformed name. + + + + Transform a windows file name according to the Zip file naming conventions. + + The file name to transform. + The transformed name. + + + + Get/set the path prefix to be trimmed from paths if present. + + The prefix is trimmed before any conversion from + a windows path is done. + + + + Force a name to be valid by replacing invalid characters with a fixed value + + The name to force valid + The replacement character to use. + Returns a valid name + + + + Test a name to see if it is a valid name for a zip entry. + + The name to test. + If true checking is relaxed about windows file names and absolute paths. + Returns true if the name is a valid zip name; false otherwise. + Zip path names are actually in Unix format, and should only contain relative paths. + This means that any path stored should not contain a drive or + device letter, or a leading slash. All slashes should forward slashes '/'. + An empty name is valid for a file where the input comes from standard input. + A null name is not considered valid. + + + + + Test a name to see if it is a valid name for a zip entry. + + The name to test. + Returns true if the name is a valid zip name; false otherwise. + Zip path names are actually in unix format, + and should only contain relative paths if a path is present. + This means that the path stored should not contain a drive or + device letter, or a leading slash. All slashes should forward slashes '/'. + An empty name is valid where the input comes from standard input. + A null name is not considered valid. + + + + + An implementation of INameTransform that transforms entry paths as per the Zip file naming convention. + Strips path roots and puts directory separators in the correct format ('/') + + + + + Initialize a new instance of + + + + + Transform a windows directory name according to the Zip file naming conventions. + + The directory name to transform. + The transformed name. + + + + Transform a windows file name according to the Zip file naming conventions. + + The file name to transform. + The transformed name. + + + + This is a DeflaterOutputStream that writes the files into a zip + archive one after another. It has a special method to start a new + zip entry. The zip entries contains information about the file name + size, compressed size, CRC, etc. + + It includes support for Stored and Deflated entries. + This class is not thread safe. +
+
Author of the original java version : Jochen Hoenicke +
+ This sample shows how to create a zip file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + public static void Main(string[] args) + { + string[] filenames = Directory.GetFiles(args[0]); + byte[] buffer = new byte[4096]; + + using ( ZipOutputStream s = new ZipOutputStream(File.Create(args[1])) ) { + + s.SetLevel(9); // 0 - store only to 9 - means best compression + + foreach (string file in filenames) { + ZipEntry entry = new ZipEntry(file); + s.PutNextEntry(entry); + + using (FileStream fs = File.OpenRead(file)) { + StreamUtils.Copy(fs, s, buffer); + } + } + } + } + } + + +
+ + + Creates a new Zip output stream, writing a zip archive. + + + The output stream to which the archive contents are written. + + + + + Creates a new Zip output stream, writing a zip archive. + + The output stream to which the archive contents are written. + Size of the buffer to use. + + + + Gets a flag value of true if the central header has been added for this archive; false if it has not been added. + + No further entries can be added once this has been done. + + + + Set the zip file comment. + + + The comment text for the entire archive. + + + The converted comment is longer than 0xffff bytes. + + + + + Sets the compression level. The new level will be activated + immediately. + + The new compression level (1 to 9). + + Level specified is not supported. + + + + + + Get the current deflater compression level + + The current compression level + + + + Get / set a value indicating how Zip64 Extension usage is determined when adding entries. + + Older archivers may not understand Zip64 extensions. + If backwards compatability is an issue be careful when adding entries to an archive. + Setting this property to off is workable but less desirable as in those circumstances adding a file + larger then 4GB will fail. + + + + Used for transforming the names of entries added by . + Defaults to , set to null to disable transforms and use names as supplied. + + + + + Get/set the password used for encryption. + + When set to null or if the password is empty no encryption is performed + + + + Write an unsigned short in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Starts a new Zip entry. It automatically closes the previous + entry if present. + All entry elements bar name are optional, but must be correct if present. + If the compression method is stored and the output is not patchable + the compression for that entry is automatically changed to deflate level 0 + + + the entry. + + + if entry passed is null. + + + if an I/O error occured. + + + if stream was finished + + + Too many entries in the Zip file
+ Entry name is too long
+ Finish has already been called
+
+ + The Compression method specified for the entry is unsupported. + +
+ + + Closes the current entry, updating header and footer information as required + + + Invalid entry field values. + + + An I/O error occurs. + + + No entry is active. + + + + + Initializes encryption keys based on given . + + The password. + + + + Initializes encryption keys based on given password. + + + + + Writes the given buffer to the current entry. + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Archive size is invalid + No entry is active. + + + + Finishes the stream. This will write the central directory at the + end of the zip file and flush the stream. + + + This is automatically called when the stream is closed. + + + An I/O error occurs. + + + Comment exceeds the maximum length
+ Entry name exceeds the maximum length +
+
+ + + Flushes the stream by calling Flush on the deflater stream unless + the current compression method is . Then it flushes the underlying output stream. + + + + + The entries for the archive. + + + + + Used to track the crc of data added to entries. + + + + + The current entry being added. + + + + + Used to track the size of data for an entry during writing. + + + + + Offset to be recorded for each entry in the central header. + + + + + Comment for the entire archive recorded in central header. + + + + + Flag indicating that header patching is required for the current entry. + + + + + Position to patch crc + + + + + Position to patch size. + + + + + The password to use when encrypting archive entries. + + + + + This static class contains functions for encoding and decoding zip file strings + + + + Code page backing field + + The original Zip specification (https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) states + that file names should only be encoded with IBM Code Page 437 or UTF-8. + In practice, most zip apps use OEM or system encoding (typically cp437 on Windows). + Let's be good citizens and default to UTF-8 http://utf8everywhere.org/ + + + + Automatically select codepage while opening archive + see https://github.com/icsharpcode/SharpZipLib/pull/280#issuecomment-433608324 + + + + + Encoding used for string conversion. Setting this to 65001 (UTF-8) will + also set the Language encoding flag to indicate UTF-8 encoded file names. + + + + + Attempt to get the operating system default codepage, or failing that, to + the fallback code page IBM 437. + + + + + Get whether the default codepage is set to UTF-8. Setting this property to false will + set the to + + + Get OEM codepage from NetFX, which parses the NLP file with culture info table etc etc. + But sometimes it yields the special value of 1 which is nicknamed CodePageNoOEM in sources (might also mean CP_OEMCP, but Encoding puts it so). + This was observed on Ukranian and Hindu systems. + Given this value, throws an . + So replace it with , (IBM 437 which is the default code page in a default Windows installation console. + + + + + Convert a portion of a byte array to a string using + + + Data to convert to string + + + Number of bytes to convert starting from index 0 + + + data[0]..data[count - 1] converted to a string + + + + + Convert a byte array to a string using + + + Byte array to convert + + + dataconverted to a string + + + + + Convert a byte array to a string using + + The applicable general purpose bits flags + + Byte array to convert + + The number of bytes to convert. + + dataconverted to a string + + + + + Convert a byte array to a string using + + + Byte array to convert + + The applicable general purpose bits flags + + dataconverted to a string + + + + + Convert a string to a byte array using + + + String to convert to an array + + Converted array + + + + Convert a string to a byte array using + + The applicable general purpose bits flags + + String to convert to an array + + Converted array + +
+
diff --git a/packages/sharpziplib/1.3.3/lib/netstandard2.0/ICSharpCode.SharpZipLib.dll b/packages/sharpziplib/1.3.3/lib/netstandard2.0/ICSharpCode.SharpZipLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..5fa13c736d80341d929e1b6fcdc8efcf76a4e8c6 GIT binary patch literal 204288 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%0D78sVEw#z;;58kI3D;{sD2jHnck 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�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 Fz@M?PZx{do literal 0 HcmV?d00001 diff --git a/packages/sharpziplib/1.3.3/lib/netstandard2.0/ICSharpCode.SharpZipLib.pdb b/packages/sharpziplib/1.3.3/lib/netstandard2.0/ICSharpCode.SharpZipLib.pdb new file mode 100644 index 0000000000000000000000000000000000000000..067c2c11fc82d4345e00e006f6076e32201411b9 GIT binary patch literal 108456 zcmb@vcXU^js9?k1 z_1LkXqM}DpkL^D1+;hjzea`QW`^U`~@0#;j-|T&@y_1ZZaqOswi#Yw%LQ^wFr7h{z zy{Et7Qrt>B8&I36Ia#`wM9}9q!>2m;@-@!=SRen4^3sB$1!c1D*+CfGHnV29XYiNE zKX%sm4BUZt!H3~dg~dv2OZN`@UwrcT$#)$$^s#v(?y9_g?r(dz?dDv2Uzh4FoG+E~ zzZxw|bgnYlxy`5*d<^9ni)62f?neaiO2_SsZ5NX52t+Y`dfalYQ39$H?%{}K;^(iZ z||3Db5{5rEuK&NCD;Vj;}v43vd_X-iUiU?kBikkiadi_C+%dRgahKz+#eEj{4cz*P5!XC1!Og|Z$GsKze%v2%T~dPUPiKt4 zEyG=fdmrv@+(Wqk!R?eBaea~#To!I2?v=PV;=Ydi0dCWjh-;gY;AY{@$Gr%5Gwwdz zH*l*}i@5sL5?ng&B-}G_&%xb|`yB3HxYbh=+~CxR%fMZVdj{@q+~;tA#Z9c9;CfY$ zxFNXtxTUyTaBs)`68GP@t!hMEml_G~B;0)5t8s6}-H-bnZo8Th*Q;iN%fT(dy%Bc@ z?x(niaGTePxK6cbXWWIjTX65h{TTNf-0rm_ZfNZUSB|?H_a5BGaeu~5u0#3iP(Iv6 zxJz+&;68-=HSSNi-Ref%fV$+5TZDTP?wz>%algTBQ7_^;)=O~5<7VS-!o33b1>CoA zYt)apM)ecic-$Gd>v1o@-HrPkZvO_fUxNfUyefV|&$hGthjr z5H0Oh$E`t|&{b$_ue$CY^cdQQw)U#$-a`A)A@n;+?Oo3`?#+<(KZD)s-hFM< zq3&9=1Kp2aK(C{Jp-<4asL|k|ZVt*pU!fmRyCKK8o@gK%fySY!=s0vT${#Y^Ek$e5 z1?VeOICQuxM=Q}VeA83bY2D zgYHHTp+3WgyKJ-&twLv_jp!1z72Sy*N6(_q&^PEO^an~FKHPOj)6ojF2AzX0LRX=~ zsP>5AZYG+G%Fs%*7M+W>p&jUf5hGmfkt1BAkt1C@G!`9)ickeQ4_$(;N88bE^bC3f zy^p>^KcK%*wNWEoUGyk=YSbu~mp;msqEpe?TFR?_(%p6G>FzG{0NR5-M4zK?(61&K`N>Fyr< zd(o%pFiIVp?&_fqC>>2eGf*zN550i;j!SnV(QzmjtwiUc>(Jfk3-lwZIX>OBM#Iol zv;pBQ9aZe^+02^js4>%!_DA+F3s;+2|?s4f+e!pOoP`q8aE!l#fc#GIToHfX+vkqwCP!=p*zq>N+{Y ztwLv_U#4WZucl?VAJAW@+Vl+93UxxqqUq=av;ZZ}pf0F0x(Ho|UPiTNX1IxHCAu6v ziate0&7yp$65WAbLZ6_vvoqWrRDf2Xjp$l*7kU!?HYdXkJU+vngchP@=xnqf%{+m7 zXb;Lbk-DR$=oyqXm$pOg=22#}7;QkEPRel4&(Cllps!J@lQUd*G!xB5IcO#7mzCj; zL2sib*%_{PcC4c)3tWPhRo#o(tefFB{ZD&_yPmk)(O&c_`V@`Hq0DFV$fsVQ4;DvS75k8U2cu<&SpPpqtShXg7KleTojF)Pm8jDOy-C#yyN) zMF-G#=r@#f${1H4bzV5eEkM_!BMZm4G&B^=KqsPXREUxmjd6X^my5=_21R3C3)BNG zMOUH&=sT2BJl0J>#b_lu3*BBk&ebUy=Z;0|&_=WkJ%}Dh&!RWc2k3M3ElOQH&NW3{ z(J(X*-BdQtyLNHiYhqD80zt=iDXU5~cuQONai z&*6Usy|baO`xwnWtFK#tR-E0>rJU2xH9&1p4>SZ#L<`U|bUL~jy@K|muTi&i`@8vQ zAzF&=N3}Ngca2ap)E4zZ!_Z<>iOxW0p$pIz=z6pr-Gv@RkE6HI5$E-HozRH$2Dp>Z zDQFYA6m3Q~qFd43=uz}KI&#whmxdOjC(r?O2>pWG`2*Z2GzHB?SD`KFR+MtV0M`&5 zjfSEOG!e~2b5RZ|M3v|abQZb*U4eF9Fwp&s8eBNg^+e_9R`d}%fDWON7Y%fiFB;@# zp$c>f+KHY*@1gzZYxD<7zIc$UMCV+rK5Od^T-?_Eh}Z&3A1+qvFoFdBtULKSE|x(4k;PoodeAyn-$!lMjyB3gt_Ll>Ye=vlNM z9YRemZ|7Q|$>;}k+!gKIm1yUcq=|k;NmmgL4Y;bkTZ_&?7oscBb?8y_GICe9cMZ@e zRDo_spP`zY+q)rX6*?1bM3bRpV~?n2L?m(dsKJ9OlYon0Clj7Fg;Xb#Fjg{b>Y zo!t;L4(&%@qnbC9FG@#?(G%!7G=6JmHw_(+9zsu`576f*VOwWc11&_4p&!s+sLgiD zidLa(ws(9`HO^ew7>OBYuUHA8JsXVeP~L?h5RGz-l`xo8opKo_7nw{~#_XbCzM ztwZObhtVGNJbE3?xxI^9c6(QMF}e=jhTcTUcXV~N(2=MmYLB|1e&`rjX-askI(^h2>pWGy=`17YK)qrcBmWbcW*N{3vIr)x%=~8trsm^ARiaJkQnVTELLZ}A52U#^=y;U*z)|j|2bBI% zuKR;WxxuIat$i?h?@Ii)p-0gHbO`-|+(SpXRMZ%CK!Z>=T8PTf3bY2Dk1j{Ipoh^O z^d>rhs_#0=bwz`ADX*q(+pebW1@t;<@NiSt0)2#jMnfJs+D$=sq2x!8cC}GU)C&zl zBhh#??a`Xbr)h2O5Beqp^>vT>pRm z)ORyUHxI2so2t^U?{0=)KtG};yX(7w=mb=_JC=V#H}&y`ZZ6746_4wFV|Ul%jomBg zFq->BWA_gF7^OYg*iA<#JlVuOhF(SoQNuk=++eg2tw)>C&FBua7rlT!MF&yh-X^Xk z8i~fElTrTOBiv=^sl7+K_tBTA|5Hc0bI^Wt2tEFEihB`#h`vTYpoY(+xK3!zGu7NZ zXb*ZBy@mFpUs3Y2)m$Gm?%7l~1cJvlH_-u8T_*`|j0IfmSJ{M~% z>qgu!&qdsbeF<*EzC^bPm8K^$hZ31XNp9=DB$xhtlAC~Lpc7FxT8PTf3bY2Dk1j{o zp>1dfI)MIzhQ5&GiqTCd^~EID35`alp=;31=nnK8DttM~Eqyh~{eiMxOL8}&Ca)*C z@#u225B-J`-$-&bQA2d}8_Di4N_aEbZA90it>{j4KY9#3jb1`;p%2j)=sWZ?`U{PD zE7@IwoiN>Q7 zQ8p?;%h2g)13DjFj;=%7&<^wnI)LhZM|sgnC=YEzJJ18@1N1ri79B=^eiz>cJzdJ7 zo~{d;f##!g(KYA~RPaMjw-L4bcTe~FzhiOxxII6{{QsBR#q~Jc#SKN1(QI_mVTC=y zemulQgFq{e}8meQuLtSn;bFR{YdBu5MWIYZzAinuZm>Rvgzh ztoU^dD}G(WieE2|>ly@BE8a6`jG;6{ekUX2Ya{U&kDzF5`1?XZgzxude`^Pr}o zMew?gfm5*8#V`BO*sH<%;hDj6^$@=a+zfjSV;9#l_U3TyU|0U)y1}mWTfp^#UG-^c zSnZc)_-MG5;SO+X!@Ng#oL{Qa6Sp`L#E!{5lwxy`y2-J0V-%&W2_0V#2G9 zyBe+ycQdT?yBk(}^e`-YPs2*Tmtom?mai(0?0pQ&-q*0~{S3?A->~ch3^#-a8rJw6 zWLRTluwj*d2wXq(XCrv1VcCy?8wC4EhSe~`3P0R%OLzp_FobVU_!uw3c3ZGF!hSLS zQZ$nAjYIfT4D01DAEmlc*qa3V?S^~cpA`5A?8ETugCd1L5L7bF_+yf68n`+92iyf7gS`c;pVx83t>6m$ zs?%7wb+D^Hd6!njoQvIbW@F6W3!Y(E{WsIF;?FXy`8M0I>~jojyc}m(_Tvr9euCj+ z;S&vCX}BwXy+ECdy-lc(){A+DJ5XnFTkP*(8-z}R+nM^$H>~_DcYsgE-adps63%4y z#8{tYXBk#~vJI;~IfiA=HLUeF&#=NTFs$(ThGj2cMUUmL_2QH`UT9dKxfdF4OnWRc ztoTKSm42~dm9NCG!Y?*l8!k1h@|GD^dgX>?uP`k862r1DH7xrw!?ITzmVLQltp_U% zYyDVhSmj-1xG{XHVa?yu;0~d`HQrA*tTA_nVa?IihNr-546A%=4XgZT8a^&?NAjzI zekYq(eFNMh*w2dN4e(jm`v<%7JKM1K-*XJhey(AaccWpo=Xr(|f0JR^ z&o?al1%@?WE;QT^zR0lhzu2(yzr?WilS>UN{AGqmz?U1I3}0b51HRI*(!a{E+WhJ` z-fXxT_G=8k4_^xp2<_bg|++esP_AQ2|!8aP#_`J!m=HJbR zRllw9F(&*HgFkHEg06KjU)kH-xwzb6bU{*!V1G`n>yzS{d4!z%x?hLzrPhC9Ri3@iNe zar}Z|#edPT_Oq7^e-_7|1|CiQ)K)JC9s_s8-#_qJI3Itvz~kU+@oPN2O#0(t{Tz(r zF9RQoU1iapt?(0I)lKP%C&8Kcdj_5YUlsTj?9*WVs64M4R(rf=xD))kVcFj>Ec=^= zWq-@C>~9;E{T;(<-**k`{P!=ziST=dH^;HQzbE^2>ZA7F5O@Zxv)@U9XToY*rT;$R z=Y;y}JARgz2R;tF+V>Rn0pX7i;kDj=2%ivG_4&xK&UYUhmi-gMvhO!6`=^Fw|IDz? z$6pxMnt8ym)}t>CtG&N6Ec@4ntHTEkw}-!hPYm@L1%C_AHTC;0jt?2udGUM07s5Zl zCx!T};C~y|dHqK?E7-NZ{$yDD$zeD<*j3-34eR;k7sIOGuZFeX{>QM^*WV0l&WUqK zzb5_@(eLnrke|}~!?5gs8rJ^&m*LT{i?m`cN9U9F_lV(naDrhyUnCk<`y?4w`I94j zLg=FDX?;sEto@{#VU3^EIIeD3^Q(qorB~Ci;@67f+HqVbj_by8y*RFKSnbiku*%cW zu==NwVcCx|tT`KF*)(38V%PU#^`r71ZCGKN8P=NE+_2V&7KXFnmWDMy(hTdo(#o*x ztqq?Cw=t~sw5?%%H@KZ)wSRlVTAw?>r-b@wd~`Id`gJm_`gJy}G2F$l!gr11ZgJe* zu#cs@C5kMz}?`9hL3?K86FBxHmv$hfiDa3 zXTVe8%L6O^G{aNi>4r7tX24g3@OoaGX*d_21z#2Hia#5^I&dd=j^Q@&afX%N@rHF~ zIl-{T%ZYJ3*YF0$>^%6|ke~P@_@=-bPxB3He>oYxIoQRS@YcX-aF$`sAMtkVYFj=3 zXT!IK@H+zUfLr6AgmSRo73_+W3*Q}hRp6bl($e_J!+u||za02sSZhrQT7dnLU{`zQ z!;c2mcqo8(2fh?O1%5oR-fxPZgvVifB-o#VufX3CEyVtG2)`!qv#@L<0zU_9EmQu5 zgx?p!^Xm?tUvde&C(ye>-XCFq8P?A_!`chyq9W|C@ri+c+M;5^%Cp39Ptq5^LHO&i z={&m_ev{86^s|O!#Q%cz?(bBx6~7PP25&&(58(Brr8X6R2!9NB5Bw3_owzT;rPx1) z^`r4oW?1vN-0<;mh2d0qiDAvJrSK;qJ*}b33~SG*G~7Op)jrFy?+@{}QeW{wcr~^* z!Tt@*uSBpeNA2IjKf-q-h5ruL``;@A{|O&MT569K*#Cm{qy2ED;R%EnyGRmGv3eGc zay9r@{OM>F_EcCuX9cbfYwl|No{GIjuy=q@gKGxXc|lwYR@)tgR>QS}UFU^0hU>y> z4XZuRh3lB`7aCT7U1V7KUu;L}P zZ8t3YEru2UR>QL2W?1$+3~Nl?X;}Te!?5DtWmxg=Hmvi#SmX7PIDXV{2kei*jY9wND@$%S+%)iT?2p6E0&72d0&X7o z4fsj8MPQAWJ#fpwnjd=&YrT2Ou-5aZ4QoAl#<0fYvxc=lKWA9ueV<{?`R5I5zk2~r z3+2)J|6-(573+NUl3~rimkq1`Uoouyf7S3L_%*{S@9S`@kY7jEIB_R9own6_`Uc!N z*zbhjG_3NzWw<5lUyOTTQ~kwVi2o^mmH%zHYe-My{@m~u!zuVLL|I1~Qfu%17DFs$+OZ+J+Eukrt*VfFt{ zhE=}9hBbbFrcYw=W&g#n?7y1uvj4~M(eQ7EHGh9MtnvScVU_Ps!z19o46jl%B=q8$ zD%u{4)kyFt_{+8FdY(>! zkBvlm5BI7Wo*Z~Wq?*&(s`#ncC&KzUlJbft!vo=Snd9Oq@CbNq;2H2o__aP($38Q} zS9{hltoc|op+>pBfuh`I{KldUb?h)%VDR{#E7E`RAxOZfbZg_M;8=hMO7IcyAuZEexxd zS{l}Vm}XdWzLjCsr?p|F-zJXR8rB$VXLvB&-mvoTU|3_QqhY1r$?#i@dGT!eS7~1v z?8m|7_%+64KOTM*zdkP)p8$`;-#yq*g!O(!y|NRZC)&t^rpkb|dgAAWdn+-PnCH5Hi#eWkTf;}tb-yR-n_yqVEI49VjHas1_ z#)s^=*!3<<^I4n+pKI(3;PZoh820>--sMTWpMpyR-$)p789X0m zI=_uGtmjqndh91->k#Z4;NAFD2iebpzs0ZejEB#L^`r54tYNk11jBd06XA11c+KZY zhLzuBcw?|PhNmQqaOVZq{GFOGx{5V^ry16HeY#B;l&}o_%iq& zcpUMMgD(%^RsZ7+-wdB%SoRYQYk!+-xG6l(@H>I8ApHXTlhH}ouQd71H?00R*|7Gr zOv4&uS%x(#vJGqf%Q39-<{F*{=Or9lmA}$oV0Z|eZ&>LS7}h(kQ{s4`Va?$}!xzV~ z-Zw15es!pS9k|HwhxCc~dhFUedj z=DOBT*|)*3&KUfm_2`!(_h=E`l|mi{U$9{k#!)2dwgL3Vb)Ly=*|> zd*EyF>wQp3!U%V7h_C)xY*^2)rG_=0$_%T&$_*?13d4)xC5GF;OAV{k%M542m4;RR z<%X613d1_Dtu%ZqyvnfFhf@=#x}BkZ4dBxZtG`b-TmqkA_({XH@oRprW)9yM(o^}@ z7}olV3H;y+N*7^0k zINlV;=g08{aeSd+tv?qTo(NxTSm&=x3~LTu3O^9)C%!CUb``75FE`u|zQVBD|H?SN zDvqy?V2rMtFCyYd^iou;%p5hP6j+HQW&1W>{;^cEc+3ErvDzZ#6sx#-xJEO{@Y<#<-N8hHiC48LaT`-$P+*!Rcrr-qf^XNEN=K8N23=_&s&3~T*3U|8Y5 zgx?C`mEKo|75{6)iht0s_Tz61YYcvCSoZJY_>f_R|K6~||6o}5e;e)#|7cj}`=1Oe z{9(gN?`OlZ{}RW)#_@mR_&38NiT}Id*6<&OH6H#ntoDtu#;V5SU)bL^{o@k<<{8+< z?_gJ1bzX|V?}qUFc{^*3WE|WSBq2=J_k^%1h5jvVRS)#y>6aLHKO^8sD;i z3+waS4uQXeH^ItJ_CxTU@c6*r!}r75pJo36elo;QhW`!gNBd2RVXgnw3~Rin8rFJM z-LUrK7|W(MtAYK;kbX%VFAV$>c9lT;ufqQV>s^G(EB+PMTxy4ECN|<7aJ0O-){5iW zaa<>k>l$uF{Cb8p-s&4Z25w+j_J)RKZ)8~Gp|RnihP4+deiQ7!h4RZDSsUV0c-EB7?4@VyMzhI<>9y^mqp`x=(LpJCbi87 zmVJ<6*#{f03lE9op@tRz7{iJ`%&_V^+_1urFs$$+4Ud9H86M7>lMW|__SN}IoD6I2 zI0|LJDZ#G(9&K3b(-_0Dk2S3P#~Ho}9-r8p&rtrJ562qT_@7`{=}nB|Nr~B2@%6kq z+3>@0yen`j`6 zil1j#?XkeH?D>XeFEA|oDTZZVXjt|_!y^o9?a=zL2zzZa-ii#XKZ^}3y%NK!&tk)} zml~G6%&_d`hIcT(#C6F3XKXj33b<}4kH+_sI9_UaHu1&v313NAJrgg38-)0p@0EsI z5q>$`DA;>pUtzctywb4jG1j{wwVAjv@ilif|5w3HLVDUy#Ye$vy8-A_xM{E}jnfR@ z5V#rk6Yy*N$=)1ReU!%OaElOM`@tE8Rfg4uFAdz1@M-v!{~GLRA->LtYYlgY&onIi zI>Ty@^@f$-2E!KyZbkaz@%KSzVQ(GsJ3eq5xD|e#8P3MuHrREZh_U)gXX10Pw+nXV zcdp?h1GmSXfM3s78?ko?;dTBHcMNvT2XQA@adpNMcZO9r-8&EN65^|WHyKu#^Wm<+ zt~1^Ri3_V(?R8-sUu3v7_KV~A62q$VrG{1C%M8nYxnb4$ia5T~u)<#z$5$Ixc{dwY z_-hQyer+6I7suDf@ePJGAGW~VLVJ}k-^4xOiP$QFy(hc@f0w|$;ivFlfNmswzYt&h z|4oLqp4@C$<=+~|+YD>}-ELU(LENA8RafON9snyZ_17)%ppd`X`&PqL$K4jkw;Qg_ zSyeok_yvTWKmy{S@ZIp~NIVRF0so}H!{J;K*L;#a9bOHO2%G`mM_O86?!Z18)=!7P zV_?-s?SCisvBBON-T{vbto7$E!-{jaVa?%t3@g8T4XeF(8rFEd&#>(G$MFMk{9qhE z6vw*^EB%KJt3MwxEc>H|mH%Ug)u+1+%l^1w?H5lNZUsMSSmF1?@m|A9|0%;O=ri$n z+IuXvL+EMv*wFrG!_OGjdHz|$w-7(Z+7CJg`vl@&hhOtY_KC2*ub}6t=io^peU0yZ ziNmW{qvUzchcUbO1;d(8FB+~6zZAzWGp23)R}3rut2__I>?7gV3~T(oZn$Mql;=|3 zbFpdu$vzL({7)cl@kwws>URfYUYrHbg?0WCXTuY*X@7YG&VlvQ1HB372A%-FWq2ED zi1V;-#IOD4ZFoTlul|0=Fj=^F~ORsZ)4EB^b2HNQSEEc=IsW&bFSKaS&1;&{K| zHpKrlv9PNA8V@nA|l0{@bwL zPyT3F&-*_a)_6EZ-?ajX16u$F&TrR<#YQe02<~ ze0AY-Lw+ic<*tD@hVtpWSNnex?-;|6iuFpe7;R{0tmR(+cot_L4sSm);>4bz?c zKbODD(*SO2SnscnHryL-W?1!$vF3v6*Btw%P(ST=E#f#WX<3zB^SzZ}oo8Ab*7$D& zpC8iGdeYYLbSfae0K3{^RNzZsjg=`O{H3s-RaAb3zYNy95RF&y7Fgv!U=!rhSfy<6(w1euf)Xej^NPJsN3P_EB-19>*Dm zRleg5Yy6*JSo7&b!&*<~8diJGH>~|!d^7b^Se5T&cx$My)|(isuUer@?AwC9ec4d}iPsgxA?YKZ#vqNo^+k9$0JNTC^mo5uf=-+e_nfsbP&b z@l)7UKdnK_;HN`)olh#`c)8&T*jE@nF7PwNuZdswmDryR>8TW}3~T(JYFPHu49kAH zVcE|xtnszlujj@n_?H4}3~e;L(6Hu<_Sf^UzZ}9B1%3sdh+p$_6ZThwy*Th|u;OdIJss{I52w`M%k(=Jz#*^*ng3VYT0NhE?9{;ZH;U zno~Cz*7~%?u-1zk4Xb=N8CL(^Y`6}*)o@36n_-o2yJ3~@7Q-svt?=ije76~Hj{Wwe zbF1td0v{l}o)0uWWd9P@-Y`G#SFq;F%)np6UGVF?b_d}P!urvAa3_2y@F;i({A1wv z;QJUqhXZRpjIqk5H1Eg$bFeGF7|Y%jJ&-hQyCv*{f@EjK4e(^zss=t|KT`( zBF*|f%&z`?+_275PsH()h82EK9Pc%(@%@xx zg@4+x?9asUvvK@f9Pcx%{WiuLduf6HLw&UtX#74;_}@bPHAY@Ad=mU3{CluZHmtT9 zgI>b^N3c(VUxr;`wErG}Ux8BsYdpMaxC8u}VWsyvTrGsxczeUJ`u9!4>Yuj^YYe|_ zcmy3Ju1$I>QHx-&19!u(^+@)*@I?GMf$PC@@N4~$y*|7Kzt(qg1NasE+CRh%;Wv%F z5zN16^v@fzH-_85Y9DbExFb9?@R6|IrE5OOeiW>~_nHy7DSRrd_K^K(cn`cHa5MN> zcwyic@XN6J{~f}&g!S`mVw5|9NcQgVowVgq@VjtNSU-D_ zxEI_Se_G()@F@J+?_}=-t8dfLzu>+h{x|S@hS$OG8$JksV0a$ubZBKL<^C z)#;l!{?@S8r|;tUP#k}6Snd5o9RE9xe~jaw;`p#(&B+)K$FKG3XY36Dk~Itp)0z|6orKcE$P4u*TQ#hSeT_7(NF6)3EwH##(RnzT+?K z86kbGk1qLdR{0`^wO+(neWUaeu#XP$^*j>em^~5um|)j>nPgb;lMTzBVz@RH7N10X z)m`g@cs{JPPV1rgWOx96oma$}@H6^X25tTqg1{y4WLRsO(pwC_4UY<33cnAlPO_K52jC8Y z%i*@Hm3khKy#g+RI|g0?Ukhvg%Dxm%U|y+z#mnHMVLcCtE8#SFY~bba3OLptE8r{P z<-xuZz8M}Acop0{nRy)eRJbD?E6-{0TsYQ0r^D-D?P<#Y4ERF0Z{XE1|1_g2{Wb7c za9XghgsAi{PJ_N(EG3~z?Dzjei4lknGs_*&b<+u*mcH3)nQ{2BebD1^Ta*6-3^ zANWrA0eA>pi}-iJ`neF*hVKo$&2R<&wx|yFoxz?*9(Cb|0x!j058f46zaJ)k64qY- zA*v7W33jcQ4Gh0ddg2$cE3fv!{t~Rdm>u|KI2-?%z^}sEFHR#r#eV~yPg)~`{Z05r zSmUK3_P1dDsJ+E+!s<%Ks&z-h?ch#^W$zrvUE;W_ z;Z(wRGpzXC4a?rcu{jlz$Dk4>nvI`w+t_&rriE&oPEopJ9geJUiU5!jCYlF*nk%_SaEyoNid*GYm6@-Dty# zKgO`e@L0o&KhCh?k2lQpamN}~drmN{{eGh16W~dPFEFgLSUH-E{ln0oD$kTSo@%%R z`!x8Y5MJe(ZdmO%!?5;?nefLUyvD;U!>aG>IGz*7#~D`p%}efIm0o}NB*WUTEvtX$ zWB(-N-vK_^u=ZQ=e(WksE0hU;8p5l6vkdDDEdCt3){c&WzksLXpAh%}thG@4NjBlX z4C!gj6CZ*bVbgvr{vOs|JudJMu+moh$^Ii;gkSST{1f~De(k^F!|)^cdj$R&{u%!W zIw%MGpRj(^KH|S%)mQD23%jJK{e!^Cu-3Y#P#*S_VE-m?&0v26UVyz;u5aRXRw zsq=)mA*{W5b>K$ueEeDuWp4~$j$iwyxCvZJT541A5%5ZQSl}b!b71wsDapt38Dg~j z+nF#i-h#anl_f9aGsUP~*K)%euN8)6UlPYl4QsurOkP`+UK*^QT?~|nyM^sC!R=BY z?~nNVu{-}A=Ksr`yGfJpO!@22EMEz33X>qweW>XhuFcp+BHo|i7W(@`>D-7*0;AK9){!eE%1Jf~)Rx>`2^b?P7J*DUEkfK7~YIo+}8S z=q@MyBzGLvWYwqFYRJC%LKk`QK_>Q=Hff)@b?h^S|Wqr#RiO=KcQ+f3Gjq0m_i%{^ZL4f%857cbc}eF@K4#*F{=jT{G|h zjB5gaja9j;%~`2^3q(i7Y4!fL{-voJTA;cQbGgqk+B?y>(d&i8itr75#Z@}I?ejI= z>QmcJ?ul+5c}06X*?;Do!e0kaP3uwLRJV$jukHqsehrsEzWnz{thM|INpQuandn;3 z%So=j@5ieMnc{|$BPV>?HkJKaDO}B!6v(lrJDF=OH;nq$cD19%Gzh3vXj@HzUf9rqKw`8;pZObT3gwJZ!GC%tEe36v- zUx-{2{QX3KKgqurOLlMi*6T!@a02t!dwdFNp9Hs;Sc$%U^!F5%PW1jvN|?xRi>dr- zy<{I!@065|!bIGUz6?q&mO?aTrIX;pBs!&&? zq|IJX;kjX6@zsMRPpDcOjMg_q2ARAH)0=SD$;dgp>W;Ki}ta z1hwFOtM9?d@`m-H9Vw88FT_cH4=85=y;CaKZRD+?-R*-jUNxH z@BgZ)`Z3}LkUr;6@{0J}dG_+HYFqd|+9BfB`ZgKoYkiEL9dG%PYa~ba)+ArkWZ#}C zzP{Dm$HYzb<5u75RbIJ%E~xbq+?{?54De$hlQdJ@gOrEoTA$ZNzV2W8@-+1|(kM;v zV^yCSD76oKEk5;OWR18CKf2^k^!`|w8UB7d-@-d66@Lv8f3i#En&LK5D!y;TRsX3? zt8rsr+V;M*qe+eP3H=puJAKO0JFolP@AfInn&={a7Dufr1J4Hj8ZFylAM!T8l3Ygk zB=;C~Oy=(yE99NNJzw)-p5dD4YntS*$)VPY6$#;Q@Fk31)t-EA?#KDPzO5eel=qW-}}+_+)a=0cd31u`%%sa@4eLK$|cd&r@s6jTgn+NPl_*p zHGfTY+DWVPyP{fERIi%eU(2Uf+h6PW`*r<$H@>k#$og&(CE+chFN4aQ;J)*9e-LY| zeUw^k_Nj$=t4Usb55u?HLEk1CKYX(7$Ld@3T7r9wp8a2UqUR;e#01xfSe(Rsnw@>! zwRiB10PfQczEzj|vaRyvtVXFKeAiTQqj#cZi(XZRh`ZCbp4uULrseZ4?nF>}&!_yp zeVY1w|Dc_tdvR=hM*AWBv8`TcdD?;X{b-*@osrtq=Z-H$fm zS<$!K?^yLWOO(z|pN`%G^C`0LooM=%KDDU-RG*H%N6sf#v|Fs@qkDu__~=-QxT}3# z)Kk&97Q3&0jFu#JKU$K_K9{I}p-(4+I}umM-;bs|m~j%DL4W)InOd}E2K(~sZ-B8Y zaZPaFl1`#~h!m3CI?9&ppT<)BeZFnwM_@VkBd!nr1pZE|!fOoh9UXr^x~>kORTEtg z(oga!C;Kod{!TT2C)It7wYp!iYj|tT@I*6{`;n05d468}%hza%uj3ECr!sx+TbX6N zU-fs2uqL?Eefhi5Yf0{I+K2!9OxvdL`(j#MXL3K4-}O|!dr6u9KugJMx+mzbTKo?O zojryTtB#vQUF!Ne)^lUXtG-j)Ht?%ZLw9MB($=K#xaU7vjd&XFbs~ z4(-`zF3@(fgy|i2v47g4-;k|3on2bf2eVu8IDBlK*R) z$^36V{p|Jasl7hJe+yK|dl~16ZaV#yCt&e2dj|%V^J9zQ1a_1+-Ni{;Qm7`Vi%>=kBC8 z>%057-@x}{L)VOw^IK(vY3y60iC^uH@V$SeZ~vowzclrIceJ~gbeg$4xHk89TKF(6 zeV8e}AOE z#%7j!IlYnWD$fxM|d5_OE;u`pn+4vLP5%`n%T_1(i_(}24MAh6X z{Hd-3*6RE<2#wFa_-ndbxnIktR@-0egp@TxqU(Hu+r}8+%<0F&(Tss)_Y^Ib;_hL! ziT+KaR5yXrROdT~O0zcBTE679eZF;kzIEMFdcU4~)Q^N)NwWc;qi7DUC9hbm=TM#m z*Ai=NH`Lk{@!x7l@VO-V6*9?xb{d-_(Rr#evjcKX^dl~oo~JEtlrh#VXpt2-QQE++CIlRPX4-n-H5I> z4Sb(Q*BRdJ`V9t4aFd8zli%W2 zKPt`I-e1St-?%OuHo`i{u_<@R8*fF>C>`^duh!`+)*eUW%zp+Z5V?)7L7yW{k_TOYTi#olh9-|1x4KS z^QPhIlc^bKCYpu#3=LbyOZ17}@#qB4k6tqucOKGS5OKS&KN&X@WqCgRh8)~nl;`=b z?fJL`=oHk@O}jVZTJ2nfzX%nhh`a28#ki%Y%=6j1Dsa`YOFgGQQi;19t?+!^)zu?mD#I^B>Qig?lzS$MaSDHsYR#Hlb6J^AkGIt3NjGz_=`J z(t(k4){(QTC%W7QOSqoVaK!D^+@C)YG<`Kz(fr(^oL;Ulw+QUzL-caXdbym;^32}RaJ^l2X?AayRau@pJF~DNx3@y~ zcIAsodb=`=B--083xWH1?&FsAaizJ7D+)?;Pbetq-`5qCMcv}Oyt3SKZulbf^`ZN^ zWr6#7?&k`MW|igk>K_f%-;JI!%H`)~=A=(gciH*5*$d^FJ$iD+lg3Oy-_wX zH?KT!c{G5JKT0+q-iPwOs{Esg78ftfREttnE2o-0QXBHIUDO*@jQi4kc3rcg# z%EmB6LS*`!sQH^wP=_`Dm_bGm1;) zRmY4jqAg1+a^+H(O1aCYGSsWaygH~D)&QtXCq)&eptxvKZh3xjG>?DYSrj#t6<3sI z=eoivg*oZPIk}FRl|8beJl{h>k#~w1Mcz|5DRWtsC+1%i?v>^)$yN$Qx|CI9%`DB$ zb$Pk~<#J03Gt2XeOBX4L658KSg51*aMR~;|mt+@{<`kECcTsW9{BqsqhIb1Y9-6ip#kjdF zO(iOBRlm%vgv)hVR9s3dLX;MiloyxIDJajMQLvyWv%G@)(e4?SS@!p>zk~kcc3D-N zlFah_QJG~VUz}c8jH{+#j*|<6GrN42Z(EnyJKD%@Q9)4!Mok?}HHPd$@2WYyC$BJb zL7DgE6l9ls4=v=~;=-IPAEz|iFQ%?CeNj%-mzTLD*JT!#7pOC$FF0Boaode5yH4X-*bbzx>Y3T;S;Q!osPUIXMMI3mAtW zu4by|;^K)6LRTsq>wUf!$Vr*yc$lV3qP|6*wQ@2Ci^ddI;871ur8k|rG`iwX^y_ET zPoHK6Cgss=e3+2HVT0KS;rKR*iEJE(m;42I@Ey^xczCMjb#YLpV zfMo%}Q&BXoz%3}}Qdl^@fZ@$hcliZw`6*$qq+i%Exm%Q3I7%bKvHq7weWjU2;HZM~ zNttB}6|l5CT@yaDkTH@`z&%kxZrPaP(wX@MW&YM;#n#CdW0N&^V(yaM zLYJu}&E-`T7P_*^MOnp#q?a=#FWQD234(`wgD*d~u!Oo`9N)yVfB<23yyMA=*7IQ`pJB1Heo>^XyJ-?7U#UIlG*Lh;}+wUcaDZmkXi;c4~21fk*8f3-eu`U`g(*l1Z7R3xP#ZCo`uI$j>bDt`6iyFg>a% z&M~Oe6_j&PCC3yO%bOQ<*v8$m{8DX%ev@Yon)x>;znJrq2E3o0zQNe_IR;J1GqU9ns+$#C1A_q(#lKI{$}D=XD46`AC+gP(j{3qBj>5v+%3fJM zS$w^tJ{G(R@*%Z}xtV!o(E&V0#{^B=sHae?;Cz2}aO6_P!jKbo86x=gyv!}n=e|D& z>l8J!AbTM;mgq^vIR$wI*?z+QeRpJbHmBMslQ+v5%W9d1)FLW9lbIboq{-uFu{`vl z9If{=0>BSYGj+0SePA)^OoMd%dqcr&F6o1FBUs1o#WlO{ppXRh)@^3PhcvSa?N7Z8(+i* z?$^JlPxq$yUESXd-snE>a!X4&dob1g?(LSByMpW`ephu%mbj&?{l!ZiPc@}^JkIFI zu+%>f@?_=;a+c}5F`n&VS=hzo^J{CXZ_+mGqo<)cDb2jMf0tGfC9r zOW@c<%PU=Fr7K(Rmg}7pZwX)SwBdpJ4M(j%XK9@?FT1VDFIm%uKUM9u`sdGZyQgeP zxc=xlXV+<8P&DS=+t1!Hrv6WV&Q7lX`~}wyoOJEMcDG*Hujwht2mjpp^0{k{z4YBN zS!;Jqcsq6Mq*IHk&z*S3yZh=rbV_;c7B_ES^z<*~;~ve*e|UD!4;Q=0{KT@->?6jf z&!Blqw1Ri{z7sg(7Gx!l!tI^vuidlDs`YS@#A+?urEQy9l(}*2RYzS?es1rP$9sm;D`ePTKB^CX{CV=eMi3mf!yVuM^uo z-u=W=_l86W+OT4@D4Pnef+`|i)CwZHeRA<4g7-=O@q z%rpAk@>2gzuQvPS%i4FRrt9?<$Ilugbs*@|o6M{GqMtG0jG1ZgKQ?pTd*6-zpxL;b zH>;g-$8DLv9ca|}u{U0PU~lCet1s;EcFky$m1f&$XQz#N?~yADK8|D^T-becjW<4- z@^hyyCEI83ZF9!YOQsi|c7J9nFQfjM)#GVLUpTK>asCv!^8`rSqg#YqSRZ^xV9^GhLm(dQsY2g%1oFotJUN&hgK+8_{9Tmc?fc-{0lZ z{ZFR+*x~z|*59zHM%8F2J2Eyn_0V5+o3hmOElqMat=^GV=k#yOcRwAu;?SEZ+4VlX zbY_0~%U_IoVot&rBiAJt&T7%BX|#JYa@nRiIs6~#98OD{_w8wWw(WT1;)MD?V zbB|j4+s*FIb-Bq8&pQ8+r}sSDJetm|qOuD1SiPJ1-$|_*mNuqn>CDP)wGZ#_J@@T* zCXRXa^kdzvwHhq`v!GvUGgs@rO|52e>Mvo-4JW;5%Kt}lXQk~w>5mi7f9TlTs<%Dv z_hJ2q=a0JLtjXyu?rU=JKaIvev+G~2kLH=JBA2l|C2x9W(SrY@sn)!mHsFd8tBbFC z@2e(#hR$5yF_N|WhI_6Y(ev7OYQ5UH#;f}m9BialLNhAMICjj4o^Y!=es%uZR%!k7 zKijjpup(*ioma0q`u6<2c{_*CN zy&a#vYwyQH#?-EL&og}{T=dq&o}ZtXn?L%J+RF96BA$74T4KfJuWg)Ce7M<3%a55> zd&{!*$wO!N&t91J@3vR2O8?{WcWUcw_1_U^rhT?^`{xTk?NRrZ_Rq9m|KYEj=QZ58 zet3h6@_rbw;`E{ApS)g65j8RG{5W%C+Dp^MAHA^U1Le)j@4mU#nw&H5yK>*1OZF!3 zTkuVdCZE)~@!dLM7{Sb5Gjx3+IOf6LefXCHOM z*`K{#V>HjSJpHiH)}6YL?KwUA&bX?j&ird#jkLD+wOqMz+K=ZZpYZVBlbUYTXT+uWx$S z=La_C4XXXaT>~nA-P#};^}ojl8K0iEaP9doCoD@m?aSl)^}F|%ynlVuscq-1`xiI; zddl#5JKyQ{T+&#gSJR~`*L9Dsdopca&B{aH-~Pgh*G~BKr#+3%SzhAqJI*c4?=!u_ zLw6pYRP;$bMX|e6bU+dJa9WFXa~`;QNzJ`Q$DFch)u@5zj~@T=!NDK6&wl^-tC7#t z_|Nw~?tc%)b&sy^op!E4I_=rsC+FP_=nwtt`FhAf!1ep=R zzw5pJ>-FEIwSRu()TdML|9@C}5Adj}Eo}JAMl_CCk1T-NuS7aX%2>AS!n7syuK(s@o_%_G#iujE(X_cx)~Aie)!x+`eot9=vh<3(`&g%5 zQ||0NzwU#NpH9_&xcc;-`)&8mJr^*ta$%go2XqDh(pjvzW6fS~`-hJ_GwipwQa5*b z=NCs%Oy2MjuU1B#2>ERI9Lw8FKbh-yqobmQuxyuBH((1Ip7-82>(K{S+`py&_PSG@ z-h1h_^5PGldCD4EdX?`;tIV%{NnYbZL)|^lq}|#K@4jgrpBetl(=Yz9`PH9d|NO9M z?!G4vCx7-`-S|)Y4y@2lP7g*qQTLiQo9NxywsXuE>-OC8_Mn5uPb}Me&sF{XT1 z*YVb4I}ZJ^;fKAUY}Q2m(P6dbjjAzT1 zUuKUx(fy`)X$so`CYTN@S`SSaA9{Js+h6;0{G4MKmp*@A?6joC*(;uyn)J~}@7C`A z@cBL4yDu8@6xXY_ZZh$8k=|*2mZmLw{@vIm%U@o6{p!wpUx{;_-UpDc_LZO574zlw z;b?ccZC-Q7y20LSAAY`Q$0K+5e)ig5t}WVM``FGGvrg?__{G6KE8Z*)y)W@g4;o(< zx6yj7w`c3PH^cYXUQ+-2@F(quotwE}-0ipZduV(2cOM$D|JF};w+jG02g8~&BSFC> zx`jlRuWJVDUR?Lex_7;mZBJg^ja zX*O(1C5=6-5A%-c_onB}uKZuh%C4*4G3=d)Wmj(Lv-sM(hMxTV{Lx>p?7uSH?4fk- zbc98kOM@)5hxLI# zUGw%^y%)YsFB{%r&5380hYtJe*?ZGU9y$8s>9_y*ZQVI7XZ~G3M>Vu(#0{1j7SJ+p;<2HiUb3pMB++ zJA1s+d-$O+GAb|95pf0Y*doY$xmr}FoZ`k0y*lI(@{6G3l z|Kz8x?K^pXE;%>wwUPhPwm3GQ{`l#GZyx(I%vg2S6;Yycx}gw-+Ddq*GtpGM+WL_c~OkH2`wn6f4!Z02hpyOG z^Ywu&+m-qLTb>*;ApW~<|9Ux8pTroLs`IV}JeoDX)BDq|9qXKqS9_;--?($j4adJ< zqjeeh;-^oa|9!!MfA@ba$rq`w2`1{y`Ae{~^SHCk`uNnl^8PQs`tGSt*FE@Y+u37( z_rH<)a)1Ga{$052yK6$Ggzo?9 z?W5(-u3FXKvSn%3#lg{M%3ijF4G`{E27l4Kg*8pvPW1M;5P0sF7r!|)Zy^$=0etzXtwLyKg78lBQJLF!K++3-?!zysc`~*z7h3+N5uaedMm?zs~<9z}EWh z8#m1Jw)^R&Xf$oqjP$T_llgCs_Fhzy9vSPdN$vdf*=v1{W#c-0aOLgG&W^gP)uiJm z4^9YwGgx|n&EK@ySnsl=A8-2dkMr}@Ez$KWw?#a74vuU;E4^T#N& z8NB<|bLlHQjFM_01=}o2snulz%btotKV%@b2@k#|=8~%viPR*toW5e$4vi9~}d4CCDxnJ?mcF z65`FAePL1eQw1mfc&ppo>A&S?w7<8{uF0=X+VSuDE8cne*%iC>rtn$QTi0aKTLyTG zcilTz)y}>$N*#V;^yyPCtn-Hdy!N>spPgE~sor~?I?RbtX=OBRwZdDMxOv~B70F#& zzZU=GegFLE1>dRMmm(iq65D&$caz$lNVtJ3?cXGd)U@?6@6rdV^CFJEQTg-Z*Zw+m z)HR<4tGCWrv3TPrUj(PW@}uj1YdBgrr%Dq&wp{Se_$ejs^KW0a*dxk*&D}S8SL~8& zBkw#nYRpW}ogx4FR4a@?~my{Yl3ko7L{im>E}uzEq&nNwda3u zy3raW4c6WiHMSn|J~XfT`ig+WUWb-;7_fUs@zL8NfA4y6aHsRzjy!gt>YHKz3Ya(L zs=(oJ>%wvlnOnV>u9>No3#aC0b;`~fQaW;k@w>xl-AmhZDV}5%A&X15^tg*QpD!$$m=6~e5UA6v^nN!at zB#(aX2LFP3JFf8@`QcR`_6e))av{ZjuGQYdQ`^1z$nE(Hc7^rtyY?T^<9|E2t?bR~ z-#+l(q_^*>d+YQUH!T?*Qg(a0BUc7R=Px_^&#%9@#eMwCA-8?vb$v21e@I2}$Qdh+ ze?2GWr`Hc<1mF8w*yv}UwJQUHt+%|B`~6Axbyqk??fyJzey_YXYlp6l9{$Eyb@;sn z_7QW{CVu`GIdb?W|Wrgy!Nx$pVRt>3(V+IQyDnez_ZKmMMdpDipN@bCF`i}NO5 z|Lj|fdVMkDk2$mAZy52$_b(TIkiM+X+GqcY8TL_p=D>H;-+%7RFWGCRKlFb7t0N&tLLJZ1ewm#Z8f?>c-mV zAHVORKBGE5I3?_rU5{i%K5+hU6w1+@T36m`}rH&&VT&Rj0fHud)vti?S5K5F*5P{ zgwhXxJk_@M*&(HU|Em9f)b%B4J4*xGm5uAQ{-NzXdJXyU`1Y>ddiLtoqkQun@4i1X zGG)%>pYMEQ-1cKPO$z(zr-MB|-*(G$lRV!}dHm`xN?PA?&DoRVCrmm0@aD2jtvhA@ ziZM6-{JoD!3AY6m7n=}z}P4LbI;z*>o?u= zSm^`5cR6;`e?R*4Q0mTSrWd$>`(#qwuxrNj$vm2S`ibMuq|`1;n>w!w0YP|X)4DB7 z%buK_nbs|B#^S~E7j?_dMvx+FIudi1OhFWGVU-?>$U=xBduG)lI*A$E$~OIQa1v+d zOv$O7(kUmesyb)tv`)EGyH3mPQZ=n}*W8@KE?qhoRu$yrPc6*JEx<6fwf-o>p^p37 z&?!@!7Irj?^0IPrvO0Cl&&tio@06ES(7v)dXWF!BdHMNM^9u^Q6cpsg(W5fAS;4PAHCBOYBkGh%>fM8{cBqZFv9m2(hr zn?1W`@XWc$bHgeYR>DD#7(D_x*Gec3@fP8g4XIp8(cGHi`Ad|AI=^X{bZ4;1oKEel zbGqhso|0df+qH69Wnq5j&Q(>Na{!U*+$p)$1qD@Ir&Q;4%IP|_VX6%sbjiv?92SWi z)yl}>Ma88ZhL;X5EgDhUfn0fH(U6j&;U!JK=T7d_^k>fGPLq*M*>8Ah(a6%_&7b7_ z?UUTUeUkULPxAlvN$0x;6c zBCkZT91DGayy8Pf_v+B^ZrgdV->!?vpPXNjcV^C_s(A}%&zxdZ`;OI+>RYfgxVvN7 z!tz_jUDxG})E8DZ5qU<<8$(dDPo$Fd=KeW1SzhbwyYIX2cCMUo#*iyT^Qk{BMo7x2 z|AaAtjN*^0*S0V2dvwya*Ph;ftJA1oJa4ukt`=pXp^*sCqU|Hm1$V4ZA69Wo?8>;j z*jW!nAnOoJiw=Jumdomtglu)@UhJp06uvdx3m z{BZQlhU+iWb_9IRGZ7HJwt8xd#+m<$PQLPB+oC;>zvCUfG1b@5c+Py}Sj=VEx_UMi zil2JoiP7HNruQDc_q(C9R}8-Ands-PdGHg*<=Z!3YnHncZ{6dqn4L2>UcQe@u*+<|r|p#q2SfeE zxBS!Idt7eRb(e3>lt%0^_!doNeGz64e?0xwi(O;t`)kQ(TUTfFI^591+(pRjXi@nK zSO2%hPkXHV@CS=N|EqdjcthodX3e9HE;g0Y?th6z;lA(~{~bOQsvmo--Cx>dQUWxpQRM z!I;-LA z{(C&d+JNzQ9=yNLdqzXO(zopW3=Twg8ak-z?3X3?+|lF5=f8OJDzkTJ6OBEZtfA)z zHxz$;-|pho$NO5&PKch~qVgrQY0l)Ip$X@YoCqE8aGMR`33*5UW46=9d4nO)eER)& zJhrK@)xIG&{cyPUwwq&C7>)Xg5n;&sETs0sUxsv;7Hi)aufE+ceBR&(X3S{&SC>Ji z$Q?EB`e`#wI`e%H9l;=9(BI8VIosW(~= zs1QzTq_rE9JYnqY^iTIL_+k5F12%ngs>65o!UdOaLwYiv=tG*+fA@nM-%t2$V(Gza z?il)Z&&t;?-yCMA80mUjbLjg^y3HEav3tq=&sq+g>+Zk3v2F8uZN79z1kZZB;*Po~ z^}7e!nn1y_E}7OV#;Oil=eDi-xTJLR*e|=?H19E!MKo_xvJeVF6ZT*>ey-b{{&)V> zw(sq652&tXdv9x;SCjEB!85b<)7A}(=bgAvzBi&rU57{87hbmY7-lRsP`250_m)<# zKJ;)^`Oy;_cfD}pg&mDe2Y~z2>>UAb7!*}w4_`G_+Z8v1s!{KkuXyE+D_=Rk+LT&Y zZFx1a=4;9;dGvylH&N7V=|0x|waV^E#YaMqFVfP#{Hbxop)=<<)PBtv=lY53E&JZv zUGl)x4*lMFqSDe>d(>RGn|V@1A5eE28nZN8ulEhS$8oCnz?<&MjsN`2%}0&aP@)&K zsQL4)iM0<7f2&`8TGZ;-miFt_v}Wlwrk~zii`oBeclB>KC}nH;zJvYNompbZYuXB_ zN>JFLa_E?4Ho3mI&(yr_2TJ#jzH0fEOOFg_+GN<0>V-8tV_~#8X#gQ{^N&BB`}oxX z_bs0knSE%gse}!wHZ{HTM#Z!-hXU%xzA*6dT|1ozeRtnzbk2(XVJ;cnzG2ipt6sdt zzW;R5YD?cU+xHHAyGd=j5{6d;1C~fqi@pT2ovq|2&nu<7D{g)0qaBZSUsc+)UG-u* zFo@v`ku}eRnC5LK>^(E*;_eQ8wvTB$dGf{UM>J_Ww2|?eBOUwC>~HN4{5WvkM45sp-~@i(Kx05fdOHK0p;sn$=y0G`wOjk;}OPy z#j|HZ&1}*1sfA;|2>fYx>8{C#H~#XE=_fAVRNtbvjk&&B^v21D{yg0OF4xzapE#7} zG21XDm#URs+eEqhEN6atZ11Ul>lUARX7%q|0*%@gQ?7z5OxL-acc1v;4Y$6%^wfa+ z5BD9h>%_aWj0TO)Gh+aAI_}}0)P3{msM1G=ett`R%|~UI*1tqJy<@B-roMQB_3`!n z9^U);hWDRegQQgEg*5TgU23$wYc&1O9~&MSZu@=kq3m-r{vCF&DWgaeJe0Kvok+|` zUz^$L;qkBEwCRa&iyyd8NqO`0?%y;F*w{+{hVTYhm#Jo%&F^+r7U!%VUbgubZE4lA zjLnxc*EKZ*K<^n-9sEN1i-U^u%Z|-E{nv(Fx0@WrbTiW80UKU8qI%&{964E(HG1YE z=EJt=rOi9`lZ#Wk_B(w4LvfFHiK#TlHk_6EI^XAzyK&)HMN!V{mEMxA=Su=+{xQL{ zD9s@+*^m#6sZJOem^}QYv;7Xt`?%|$(@Ms)7^FWuyp00GY_xt-zu!Y*FZA8I$ou${ zJs;oDqR{}DybI^eZ&;o_Q?qf^?5Kl#KKQZkx_O7wx)i!iX=Bc`Wn-iKQvUU!v4WAG z414a4*XIs8x--SQF);J%7Lys$oJh=8XIi)W_=k%z{ST!7b@vOWPnrVSoCW4CHf>Xe z`K>YFE4}|||6%^^gKt~&@3OSa+N2f(HgAgKFyOj?he@TUj9!kHe|C7_to1{-6hHq) z(Y51D<>c}c7`Ui`ZJX^&u6WZD`fJ(1jkV7oT6g#JrulOD_Lt}>9~rYax_bX7<)?n= zziDRY`72KD`ro~bonwklvw7*&OaA;Us(0Cw%inh#{Bhni0~8HB8p%L2=a?)1*cdb8 zt8ee$lat!_!GjOnGji0E@s~7WJ`v7`R?eSMlT|c(Iu2Pao^eSpBUasapsKiS@!j#A z&z)P`C+&asQoP8Nw5N?pd^-B^H`i|XqkLD7il}L7scG6a&b;X)5XqA?KZ8KcK1M7W zR{O6v$CTCo>)%ga|Mi;8|2c(Aw&090lUd&lKYY*LLuGr`9NhHdv4FAvvzM`*I~5kg zWuT|~H|S=c7=2Zy)V_B|z|p~5p8WXd@9$jNsbyc7#N4Wx^DE7L{I}8Wq21N@&bz)% z-?eYu?~m@@?UH>IuppnCK_deQX498`TKU%%Z=WyPIeG2tFJJBYt6@mtZMwLDKs8#K zG!*v9qAhOQ;PR(dk1e@w#roDpE84zUEud`<^yjo6BX)$;m-x55vU2b3+fCE8d6P@{ zoZ0%1eLwZMbNB2)H=WKqHGS+p6Ef0zc=dF|wUIK@QmHf>FWLFd_E{^>m#rB-VNb+0 z|J-EGb_Nsb8$t4!xua7L?XkT$WylTdp0A7PshRS0WJC1|cztGzI&Of)Z0X5-|IgwL z7YA>@>-C?$pYZiPmkcx#r|(R9`ob7)^kS zX#LEcZ7a9F@>`#K#vfj|=F3*5oztYXOxu{KIp)N5fioT+|75=h2Yu3GTKapbmrhh# z4TTG$Ma!)0ElD?hxO&j;FXlWj`u?edE^UcOoGFIQ;Rda?{cv~t8RaW4ycBe<_jQk% zjhGY)my$%ebtz*a*dwQ&9ehhxM)__1zv=&O|8EnF7LwFDatY4AwwTt5@w47szjf1q zo40=(zNe_pG}AA|+)ob8c(hB0;-ZJAf4p(!o}LdI9UIvOMz7*QhNF4j*zAAq?=WD{ ztqZ0`oQ=GA(x}|XNTnjg_s;s@8(nb|`aRlx@V8UHTWn$&D>gBWelYfI(Tq<~Ft;7W4;+OYLxN~dxkedT?7Sx`8yH%6PG?!UAB+bG0g@s(G zi2k#DbLCrir$6}9GfkR}Eis}%#g{2dRByQ^v*D_z#|#=?e}5mJ&7S=5=TqEvy=9`& z!DZ#H-E#1P<={nLMLHU?;V2rN*{iY$ZAqQyj^4cm@bX=Q-(Fx@7T0{$0qf=H>p3Wp?-R}Jse{Vc44gY zM0+B>`*w5SA#K!dip9zcB9*jEePOJWlr@x#d1|`Mu9rSq;@^e6nb7~YF>yGHn)<7P z3@{I<2)7(cwH)e2$R3&&;QMF5P~JQk*;%zJc~;z^6RF~2om|!GP$I3kdMKG?A!;38 z-_&jZ-b3KE;^LHGR_b_ZB^5xOh@No8sL@lpigy_{@5zQr^H8ayRI;L{ODnZPNIt^n zM=iVyKspG(o2Oe&DiAP>^WESi?BablI=Kr4EbQsq6_8GVYHCTK(qrX{r|N=viy>Zf z!S2G2{ulSY0Gm4geVsPA($ucxs8*Mf$~G2j-T$babSwq6Gn>}tRX~3;e#Wsp)D9tLV$ZaNn;|=<)p~g}eY+Q8iVTh)-Z0ZXwcKQYk|VwYkjhqO@2i zuQBpy3AO;dVx5>~QKB7OhgvIrYk7L#T7F~SsahZO0i4uIYz$Y*#vE|>fsdlW2olCM86Aj@ol!^Iy^l0 zX}DLa$e#)_C?rf{?by5+&I^M&l(AOaGu2MTm0X}Cx6*-S-8s2vVs0{LSZXJ5Kp=MD zRX8hD*{$tCbU+0ZN83U3#cEB0UXoL_3}DG>I>k)vWUhY?){+O=Ij})fPt$FSUyB->u?mI6_QzBTlu3 z;eBUyQI>_O6*pyBl^iE-D&>8om`Ye9LY4*16$ZZ;-m)wv<4b;8+%?^yPAvsJN#r zn@AvY0muP&J^*sz^*Wb=+`dc;3dIFs^<990Da5;QGGZ_ihtkskOSI~6p!*sip}o$j zBs=TKX;4d$FiN#z(N?9G1FOh()P|G8;UYAPQsz+Ol_)DFDBKtr9Nn<`yoS{`uC#G| zT^m-~2%9bqWkn6E$G2c5%C*cuAX%==N5q3nua~j#LP#G0fD;7Ph;yk9+~S|X)dFB- zLy7hG0}_g5TKz#axrHXt!VwZ|Jf_7GN*O2u&~kKu<>-ufbd?c}_rZ+p0KU9LwI+~w zg#+?(HhGlP3y&;z{K0K;y`8)?&eIpnHJfPNj${o6!G}>pgZYs(Og`erIVsE&#tWP5 z+6w(8OjUzOU*IoRa3OHXF|~ELfX>Q01%nlrTGtm>)P-NG+R4E}@b(~J2oTYsBsf9n z5HcY^YV2Q;6}+V_L3WM3E=Cz71m*%@&;_toRegKZ3?;;+_*US)yKvuOP$76{urkhG zhs*4MUrwu2DXm3Y&Lj-{X+&*ZGGF_EH&0oWBs(7C-3N(^XIUNYUJSvQp;p|U27w~% zD#?LK#i>|Huz^d?srb<+GJv4HTX7&@{kDDfR8NgGs5&@WYbp+s_~NWxN8f?Fzm!vsWx| zAjPFPEcr)nz{ZE$tp)%wFWiq!?$VFEw?F5aMBW3Ijtg)}(uMp3dU60-*i}jo-=#e( zDM#K%&mI*$3nqaHx)cvNxcq6&Z(;m{TlrlIUa;!on>$@fCjVscPXYe`om@IMmnvTJ z^;qIfE0QH}xrVW-)w^lBn zE^V}YMrvc^)2>aH&k*fO`7G703g%6VDcW4<5|BxugaJp6)UHXvr)9LZJTMw$9;vMd zmj}TGTW71*bS1>GSE1 z3BY?`1^)!`PcRi=`GX%}WZo{d2Aq<`s1U&V0emZqyqZO|W!meqL9g-td3GQpH4cCV z41oadYsDp&0A#2#0~fU_SCKy$oYLX17ifn2S7UuZ7g5K!6xDx|Y?#ZxBa**6`1eT7 zNdG-8YWDFzB2SY2NALueK|>$8{+EJzU1lr)E7&V&48h=9*ae_!Lmj*Sl#U?&kL0t9 z|E%nQ&HvwE>dGGfuVANcVJ#LV-T~RzgB<~`A+!~sOsci%;2kOT5f~om5M&45z!U+r z$d~2YaNIMB&am)=`nKp_l#vALIxW6I7IU?U^*uBB8CqYQtbbOd<1?^z{U~)j^q!9O z(;)d1$m1ehzz1jrLCSE>E4}~-2U!U+q@V?>b}3op3%br=4X}pPWhg_OsG8-dZAFT8 zQWFyuJQ~`0-}=WOyvCC@fvqlb?J`KBg!<=ID35lq)^w^|!g2dst%*?7fP1YB4udyh z^IHi2fJ+!ZA;@#|g$34s6$}Jbvg?1sCFq06tHKO!3YFU8JFvnb;Llj$5q^-pA~uIN z2xqNG!-73_VO-!H`J7*f&b`$Y`E3ClYu^<;18EF}uc&}Xfy!c663GWUJJ1081!+U& z1=6EqZC#||f*>%YZ(~GoQI?T07fea~w9@A+1Th6?N<<(&thtGSK@DO$l?&141_Uc! zf+Y5dJ=kwZzF?&dFo1l4a@sxwN=bqWdPV^Sw0%r_JNN`%B?Crm3KAuHrV|^hcxD6L zqz|gAhH1nJL|!K%JE~Shb_Zfbv~Q)8z>M~-v4v33h7rG|NB!}QVhzRkZjv^g^upan z;q6Te?==eVYb?-=&=>}5ZD9Y&v>~#fuCNzKAxxY6RI~fxbOB34QVw1kS&fI_aWf+Frh z*~CQZkKrYzb_J_Y3=xL){PuE|Xwv~qy+pq_*E+CY10Fln%5Kx@#!3|w8D;d=obQo2u9 zmk1AW=}0v}wI-3JV1qe$D+t=NzzZ&XPgm%n$ z{Dk=!o7e!v8101d_*L_9tnrxO?5({U;8sexbZ`ZhMEMoagoCUfvjC1MUVjiuV2cWa z5{Hx9;HqqpQ>*1$G}7efwuR(YYndzsMG+46>th*ug{7K*atP@Ii?n zfN~|ik3c1ndKG#}p=^heiuc&E1jcBH(sM~|v@$FbHi@`9(H2|WFB2xeo&Tp+q;uzh{ zKS5Ob1x-+yKcUtKkO_f9neDxbzUh> zfX)|IzYOD*TOsRWxHtMURaW4sUxy}Gyr`O(oF%J%i)w6sAuZz$1UJ}nFdbyFDl(_! z`nw^n!GIN)jC{kt!<+8E&j+UpD0gq9U!sjVE{_%NHSGfje;|KJvL(}j%urKs4 z3cGfRAmcDY*inn>*4iw9Dk>a<(k!gAlOMr7MX0%Y3Ga<3kWzeG&_EP<;8-9^Jic3n zINiRzI+6Mg$Y+G_uzW`Po-}^HK;l(Gp#OxBAIfM%ofzNS*kc2eLwz6MM+6^Z*Bh`s z%J+$0C!sYR)FZG{AWk7CH??R`g3e}wwJSwpxU@qvg&zhIUGIUM52x=yW0q$dE3x~5Epj2aWHI72Fgi10f7C7E6VNqOyZw23wV4JKxk}7oppyexs@_0C>adZ#H|zEb&G% zGV$@0Uht2D**mZ_OeWp|oJk{LWs?F$-hhbOIx!Ey69{N({6NkDs^Z0V>12%fqKY@s zcCurF@w5j3Pop^k7=d8TA)yeAOT?KaLfP%Gs+9DoZ?6l0B?0M|MuL|yOJ>y~D3b`p z#56I1T=p)*BG897)^XSpdtHR?^7L}9gQz+{pEK$e5_FK!QF=3|H=#$c{CPyio#XnHbjX#jea1`*Ts12~bpi1yh zM=BaHBw$VO8=8p*8>GM+0@dCLD-L#L5HuAG3>7#`*G1sa3{#4LI~L!LkXnyYMit8K zz~aD?#QV&kmOQ4Rzu0b#QGB;h(V0es3w18Dg{rD`ys{vTPgc@G5kJmw2dI;ai9z%M z`wjfGD0SJLNY_m!?2VSCtz>u(n zV5O_0)=sZrFe66r&bw+I++tNF zt9q13v^HVo66mVHhLzXCB_Rq4@EI>cg7ncPR>aD6PA_VNuiOYBg~^7| zHI66((MklNQ89L<&e_6O-Yx9Uv+^ErHjC2QcXJ0&_{tYe3YVB6#8$8}k=iU6PBipW zP*NwdE{C-MYB)8jNh-|v1#V(kIJG=*GcbdiEW45sHY|*)8*t6qO^?Vaa=xHuCStHPq~K<0V8OtPh1Zd7q0wGS5*m!@KrX<6Ppix#DZPI&{*FL zxSYaPHE>eUqFsq{UO9OA2pJGRQ!m8gO)gz3bhi!5QGAohdb@dK)5sk zL9Pv9;K)^_y4=gge8N^$m~fL(p{gSut-`p301adu2FOFlFnZ_#2*s?L34vBhNQSCd zKWv;3B48+-VlV-)Cit7+WuZ<2c^*nal-Of0fGKL#dQ^ZcfUJNyV?8g+?M?1s27e zFf1176|PUkcf;!IfXvXQ#MUUv0wh=8fi}4;kv1Yxk-{K+*#iR?^ddWpKW-f-fVqgK z1=ILt#LTn$DRZjQ1ENZZwUN4D5D7t$F|{Gn8*YRjfY*ifRIh}Jr-07R0yCKx!M z!Dw$gI^DkS!@9aM&7qT86RNnW_s9Z32MC6fP*5S3#013`%2*`S zUgTha(BR{z+a-d&{;Wu3eKMXZ&{u2lbS0hRz-J=vbo2^k z1PnsYB!PzMrb^*fiYU<#&yz@^2fhE81w|}i2CIbx z54SRcKO7T=RFKk#`wm?sj?VEQS_>c^7ZqXt@Cz!Uk=U;jbGj$Jzvd>wi=utlvKn+xa7+AB~J zWyi9?Tk$?yb(A1AB0VJ5a&jqz#YL{<)Bgu;61giRLpWzd2NTsbmy{bb6LD}$a^3tq zFpahKFk%on5H$nw5`rd$;Dx_4KuL1K=LmZX`XRlK9f?!u6|a<}+5#Oo6gUOAL&p>K z7pVbu3YM~0Z*9~ z7C}W2EH$|}{fi5!CX z6YmDyBcnFxbF7$V>{=Fj@nEMHh96_yWzQdIudH2%h8` zF12Od@S?$Wuc@#`xt{iH22(^rj&5r20ZK0?rUJ|ffnk9MX?$8l1<6eX5v1YN%`gD5 z+=)pbcPb2G0Jw*(2~`GA2gkDvC#;-F#Nx3kzG3n<2ZJm5-LZuAB4Aj(mjmn-$wnBB zBqO8sRv~%Dsqh>2R$=r3VD#ffuTR6e$56Y41k(KrC=OrW4qM!h)Y#vS2qkL!cJ_cD zb$uR?7+40`OEANH2oJ!Hx}n|y-%XLy)q$aVdtjx&sxtYS@fd&sX2V{x`Zh85!fOW! zh&LD}99}C-nT0BFr`?VhK}M}V1T6rHV*mvo zQgrw&++eCO%S8h50seJW9UuAwHbCFiw_l954+oKQd=G>`O4JaAJ!5v=(JzZ(-36!OPI4 zq<~=_huXwwkfEUOdth30f{GQQ%nU0}gCqg|k7c%E6Z{ud%wcEi#)%?U<3QFH$QbrM z)Okv&VA4heP2dpXEbe6cE$T?Sgf%cVzjkhxj9!Zl!HTqT@@i6)G^VzHuez&$T! znVS%kBpivmLkLJtZ7>N%_%3Bi)P}((YGLaDF2%9YrJE9+djaz{!ZrbDF$!26bPUok zOoMR797Mk|2@zsYcAs4&Y-|rS1`t|-v!`$D3FQl-Igna=Eq_Kn6_LxMwP61 zBo*_UFd#%vpyzO&P{_oiLcWZR?T0OPLhg@MVq-ze!Z`t*E~GwSm5qKhyp)`D2vJGn z8A=qSgpK=wtPLt|k`Wg0RPAs$kQ5$9@U5938@p++>f2ca_Uy}qNvO5Y?4x1l{1RGgXN*Ze0b)39ACAAb|D2WS6b4qXE>3h6WMatTr0UVcQas zHxRAD|04tfdsk#LX*6Y9dp&o6T%h~5LOAxO5s=UZDodc}Z!5!$5!V#DKz0RT0R%&O z4Sg6uVJP0@BiJAq*A!MmDC=Zp;bcvsI7Cu41-q8E$hD?^k7;vq;oBC1&p?8N)1Tn6 zX3_r;3lBWVz1_A|;2B^$k}Yhvb|MSLIAJdQF_xXQ?N-bXY)_ypY-igsJxzi?!nQr9 z{~!b-x4j|$rPkX%M!&#a3frV@Uz$toL6m?_&f?bFenlPpfa8!QsNIoM+8%^rs7VY% zU{R6OHnDHv+z?T)!<_o!2+*YMX-y`F$4YdVM4n>8#leMySiBKCPKw;|QUrquuHiH( zN=SFYz@^3ktv^qS;`DTD z44W=3!)Hj#4C!p1M8;wk%SU{Td_*rt1&r;h7r4dwR^Zd3;9wF9*Ggd+GzP(17H0Ui zLluF-?%RP+jK;$DzJEwzE8iXZc?vH88Ry#%P9Mryf+Zsdm52-DL8ONkRSK)d_c&^J ziCExaRo0Dt+Q%l)YqmsNf?L(xRn?u zOceQv>MuH6n>EpmkOp`f@ z#hFb@z(YZ4lI2?SIF2!4jCo@@22}%)jc#=mXR6l=7s`Z;`b4J#TLUdan!=( zQxg1Rz$D=tL3%ei9o&9y>^D$Pm@4)UL}yXb=!gJD3aDZ&5<_npKtD8%e8SrwS&8k^ z>{OwE-hfC$Y3HtXnsj=pFpEV>*;I3g)hBI#!XM~B340bueBvO|tn zMJm`I2W505X)cOpp<4-eVJ}3-!KO-T7j$SM83-d(Ng~65dV>=K{N`I@uj?eCCp}XJ zW{@P3LivClX|IEQrj%&;$k~vc%e6y!fOk#~7=&|@Ku#+YM2$5jF+Bu)5URPg4mL2t z?#v%TZljah00;~-wk+oo zd_0H_6DH*)X$M5@@Mw=A>;nNQka8)d-8fKD2Koa)#?T`W>ZiyRwW=*O{lSD4to8^Tz5wHZx)?@}7t{$Z9Nti5 z#1J1a{Ycdj0Mi`@)sO~&BV<&Z%BZ7bv%?v&OVYhC;Fj?25i?qGH@omB9F0i3;Wwl& zdYI(S7)ykIC@5Vb-M}PO&sYX_sd~CCaNnW86&Ot4nD3!M*c1OX=AH=O3gYTTi|@;7 zkP*N!x(9$E?RYLtBqV?+jt^R1bEfoGs=z(zXinR?fr|K9I;;K=pzef;hMWhAt8&$M!{*yr8U`hqBDI_v; ze%NeRL#8v5aL6L!BB5tkXhJ|vF(F6TJ!u5`GbDa&~ZYMc@PPthMX#b2Fvfo#125Cyc{G$Zizh&R3)L7YB^wAP(3cxS_o+9m$eOzQ-WcgUQgb9tqRXu(0MkK#n0U8sw_#JEbP$ zBnMeNl&{})P$P8@2a4_BJW$o~ccDJ6{Shre1EB9~3X zYRticpG%4I-O?pkDOhzV4mpCfri#H=NSA?1r)2z0j>M=b^torbP}cuQA;b($G5vpN zJMu`moo+T9qJ$DW!4?m*t8f+=2iUb!cP+*nY>=23zZ@InCE^+kD$%z_xJ?(!@C-S&!jecI zGjVi1La!6!dkee}LQJd_W^ScmJFyMqWuQ{=V?ksfo@!s_FROqKflX~ZT_w3xVuL}% z6LFC1f+S(G3`7P4l?tk0U}eEd9|vrhMf`?D8^E4^U(xR(340KQ5!Hgy4Svo)_%{m9 zG=@Bc?j@HPNRDtgeRfhIjr>v^7OBiFfeb{j&SiwX2#Y9kmBx@*xD(H!>5k1O;GwLE zau07lPs@QpAsEIOQKLF9Gzb9EHH&%tjXDn*g49;l!n~rG>VO!Hq0U1@N`ix^^KhYX ztAu-^YNI+I?}VSah}uL8o!$(Y35^>%eP3=Wn*Xg%51}c3$VQ!BG8`~_I$0oTTWI$X z#-iQRrD|&TkRBd7bmKT9`17q$Mj%;1e?%9kJMc(zKfwfDNY%oCAayw=EV{PfqlX?% zbP29uq0SB4%Tc3sguM{uj|ZN0W(N|QL^>6OgZK@&3%~&I6M%!l8K0R9a>hE4gOKQe za7S7PCPQ@v&!Tut5)KAYrjk`hEbO3~PTXc>5ONz(2ZKdG{MNLmbPZ*!L%MH8ukK{E zrZoe}ayS$@+04$5A{L0#0y>Nw3yh$eg##HJ6bR*{OodaFIZ>EwxbAMiNH7=-l?i#w zAv7;Mj136HjOLKu;d-NNN}FblAc?{_bsTatSVQzsNG<;^hz_U}$c3iv2ae$d_e}He zg|`u>!zIiZ1mTXxz37-lg>LZdwDmuP!|ez>x^yk%@;)AJZw`fD4-Sr|jQPj=U&fF) z0VB39$d-d6{4MIH7}hoiXi%{^ieMB+55o~G|NGE|vXG|S(9!IE-02^&({LukIHCyu zKhR2`)xrX>Lp(xVpqhqB;2#d=1Tkzxr4X0~^AiTU1t+fw5l2n#a7gp|OeiOSXbGd% zU8$V{qCxalOS-y^9wD0&z5qhi5?Kf42l#6XMu0ii_ro+r7ZvIeb_Qf|>j8p5mA5h= zgs4nnw0(g93vpxu1RPaRq)8mvf=G-9T0GgZZarCgku{nnX3RK(#6?9J(1A{fJQUIp zO?V478q5Hitz|Gv~Jz?2~?@&e@0(9s#tiDB`tHDF*o6^e0O-Ul23qJ&q_S)qn4@KRo-GOCIjkQ{3q9)()#8qn&Y2@^ zJhkQ=ixe@)9+N$xBNfSRigoUM*dB_Kww$N>f;>KrpVle99dgRAgYRznJ=*u6d=B(I z8A$EN>$?G|NEUS*e|UVid-Dm7EJ0+0K#(K2wI$+QOVH}^X$;#=+ot+H7zsU5+Yetcgpi>Z(Q#n8l3s0yJ2@&~*aA3e zY$xM&B3Brpd|08lg@No$%78nP;0k+@CIkX0IHp8m!D%9#&?NX^vKrqI9D)cy?g7ON zusjmJVk`)bP51^}z+bE?j=BS!WN_~+0a{0RKxAMz;2O-rfg4HWn>f{w4njsNCv&Ar zf}@6T?&OcvLCIZ<_2&S^!Kmysp(JK3@PrAg444rRsg$;bZq?6;KNb8lgn#-%BeIB- zzD-ikcwCl zcB@gaV*?C*$3TK)-xDfC8hkXb;arL65yExblB0pS$Y$bX3q#2Wcw>Tw4@!6^%sr$9 zEd$EI^r#MA%#If)oC7||732}pk zI%hR4hBlbMOi7DlGPg8TQz1o-=@)7tLS&&@oK9?7hLBLW))v1}$+sFHOVM&6s{{&g zt;iWfHzS)yP_H+oLt+@ELk!SL4Y7cOwxZ|PMOO*(KDcJ!Tet^h$;q2G(&!1vzxM$1zWBBu_yHENcLMhz|Uw&l+~XIoWp(2RkCQk6;@Os04LXi;?F;kbCJ&@+f@)P6t$M^45UCs?uLciYGl}BC!kC z?jS^DvkY|PWditvZPtN~&b{Hh7;Fo`w~>eq4YsNHHdC=X2HR}-wp_702V3p(EiDot zj|>Al0V-o^RF3WNM+FYC*ZOW$QX)Z|(IMDwh~W@=lAW;dF>lbXU71dCosIn(2fXpm z01iXm}>;xG4}_9KnDp^2Jo<%;3?*8Q+hr%y*5U1 z`F1P5FDG!W=bFtGc7?ElRKaSC$HT@#8=U$ObLvcvFtVRJaz@DzLIKeEG8EtXFl#mq z4_KeBWyn>HhAE46138diu1`*yhc}dn&VTcNn$x`1^e49X!b6W+(gac1vl-4WeLh%4~gwka$><4jOk1j<+ zm+9(V=P+v&OK|3@u_XGEI!3D))=9@QbPu%+7j1AWTdOs2PjZ$4%W?_EYMWwlPRA(~ zCELHo6exKrP8foLgzFLnNQ!eAsH!ZeWO$THZxpgOBFfTN|WH3-xa z69Q`bFy1^F^9z}rs~ebJd8%J1W8L=UWzA4Jivi6TP-GvOapfF2P|;E0ZI6dO8OLVcymY{tm?g`jP$ zH=YR?F>GH5`I%O~0vaOpibQg#ATlQiCt?8nD$xuzz(db6PzjFxP~{I3|9C)2{jF+S zbnL0$3w0-$tO;&sD$3sZCQ~F(Ez4q4-|k4zlSOZ-B6aQ*>FM_gBsl-80(^x5+xP-%sk57Xhl;d@m8TE>d-dW zM(i+2NpRWaU^1^a0b=yLx;8-x_n?2UF{8gQX8y=>Fg@|r0M78exFAdb74ZxJd1*w; z)FT-1CF3N^@Q{@o9YOOBC$&>tk*my~uwlO_XObKc z>X>fRk)b+8aN;V}=mZ8rgw*V;pUnk;feQOG76tt}T=#QIm0nQZv3Ip_XgP2czY(FN zmt^=rn+%BH6M~5ZS5JafaSSR8V?=H>H%^}{_4Onkh>=baPQwk3R{Hx7|M*;I03%a4Md?(!c_2<@yO4qwM_jd0dVr~LbP&9aWdSr*p{P1)y?~>bs)_m) zNbnu;wkk#GQJ*P+!r1!m@DJ$;AUpyU%k;J&(ll(1`jJw%b^R3iOsro-uS0;RO+ZY5 zhZoxDe-LZ680-t5ea?zkAvG`+UF7*T1%xR%PqhaZ5%U?^vXQj}NV4LxI&nADAgGNo zkx&>DuoynB^w#kBgQ|pqLPCK2Yq3N49p!>YtjUjNPmCX(iRs|)V%Roz5mF0#SMtys zsTtrW8?J?mOv!67Jn>xfOa=<^=qyxD?uIV@;(7fXb^w{AjD7`NJ&@VaBT(k41ScT7 zgc2aaE?TX@{VOD6>fB}PLfsisiCi~VxS!jpLhj5xujpyNo znS=xIFI4p+Z{6xZeuRo-LrDpNBLki^_KqkZ%o%F#@*u@XOp!!Jx#I=tlXP*(Qzx(K zOyLPks4T`IRcrzB*P2$L2z90=a_=g*cNy&=Cc)#yQVxbpOXvd28~e!bZTjP?N_-FF z_i^}+S>bYJYh64GW|{>6RTANqBz4hgK`pc=fKvP!LK3*niFq*LzMEkB!sn4fF@w_y zG**LXCjd2sOVFX0?0Z;^)zxII%&FJ!2>D2MhG?*G3cbotf;>A9g!UW)Eqb%p)Un6Xbn#mc_(}$ zaua|EGq6%CSQ|xL->b0=3B${p5He7>CQ!r^dn0vezLKpl^ zyt=qWgmjGK4{q}3XbM=#AEbsPtPPV&A;9pN!Ov9R_2R7P1?WpA2N`y#?^(!4OoJ!m zFoPoB%iw=7ig4P5*oZWR5UM!H{+{ z(ehcW#mna)+-${mL$w_FtkAm4=OC>=tU!hshXE9Tzr-pnmxc#1}Y><)K4(*k~6wsB3UE51VG8e!}H*M!|Z#@N6bL^ z2p^??=$BY|^h>OGW1`}j0gQ%MCq)MUrdkXU8L}8N1(OiYR7lkUGX~N!@*%oWy9E%% ziP4zFXnKUOi-<6QEzoqpL zRd7QARxP*Ka6Os6-vn(sf`s|Iv*uFiYme1pfMx)e1n>}nqrw0tga97*CXs(c^_;C* zamol6Gc$;c`rKFXb+y+<>oiX4@M_gMkrM}1?RpUTs8Y~45KN9*N%Y$|jS6K%l2wH6 zy72+jCSkq0XjwpcQc94C53d3=b$}Us&NP`sm~u@EQ;+Q~-0d$RVS&5Obm?F*nbXhsg8f~ff|%??3l z;7E%0hmfe-A834fC6{H3xH75<^}ImkcB_&oy_ zG?3W800a!xz=*j^sSHw#=#FJ z$s&A`Y_FxLN^J#sk|zsNk;?{DmHfdZou{?Sv9;36pba7^r3R3)xax{Q51B<~L!>N( z>i)zWnvQU@s|263nT--2&D~ z-@QW5v2x*|EDJj;dLWKeMKkOLF2L!C7BWDECkc3u5GJ+YUew)XE|{?~GH;f`Y?FNN z>+Wvyt&Y(FDJ)9`MZ%^7V+3EYT&LEJrt2dV4*NPjPwtGZ6;>+dhp0DTBVwG$bLQ(e zK8NpG&|98UMTr^+n zzD%=4wGKy)Hme3}U8)h!I?YzwRAKVh0$>6I5R2IBl1mJ{w<==^AIXqM`Z%timjD}b z_l*WfJu(iG47b;{oyt^x-q9_B4(YrtIvd}lvs~PeMat@ptFYKdtBvVXX$X~j7o`|}dulPES|Y4RDM55o)~Od~ne9an1mo4)_cCjH z%=Z1w5~NK?d%fZ~vl!shd#o}`APT%><#djPYJPJdpp%h84}zB%gdDnR(&vq44?s!1 z&)sGTQVyC_e8emUE$P!aVU}PzddX?C1URpk{A88@lPTas{lR7lR!hqowuxLb0_zUW zYr4^)3i)|;9^@?KnT4uogMfCxdm-9ct7>-E$6RP@W+5V5BtXfa;_6xedPkNA_qKz7 zY+&{@)~+&Z!>@|NZw_=XO{T#$iF_U~L)T2UORV$VF1NRF8ouXmY`J*g!CV#rlp=C(FG<9`Y~ocG;AGB{)|YtW3utj(O!6KxAC&PShXO zTG6Zgf0?9)jWtjklW;ke01LctxcZdEKtHHbyxbjD5aJAKty}}6#m$7>S>FzBUwAv^ zmKEbjg>1g4Utn=YGL4WO!d~z?6I2q&$ybq;f?yJ|1szw*Q5M9SsQ?46A(W8VxOo`c z!;9u+7CMmhzuCk^m<+JEc>PiacdS3fG^B4FZjgaVJx;aaTqRSKpjUxRs5?t&2+mgI z1#)E5g`diuGF|u(xwt4gYz~wDaJsyhw?6^!HXZN~BDmRy6VoTsHXcBN>Vu4E=6wJ@ zq>+&N9biEafP&W9C<&{-6L=>!g$Qhs?eOy&ffu10=u+rG&pQZ_3$RUgQvVz<0zUu= zMe$w*M_m2O=nifU12zyW7UfFr8jxu4EV6UnDBg+Zg8@)}1GhCjJ97I^J}q#-0=RND zq7-hW3fmht*~Aq{cl4?;pveVfaIcwRNqN}364!%2SOKWED0TGDw%M?jO2!Ek;vG;E|Byd`;d&Ekq+LW zYpu(Mg&M2%LM@;$bqKqS>rJ-s}~O48cCK6oC;wOB_@nlY!T< zPW(Z!O^F$S4T;JJ{lRNPHXEm{m7{ssea`#g6VYXo%@N$RL3Y0c#VhFT|amPmqRWLTe@LlxUM(f`|v>Yg5F&-gw zf$S3^JPLdoN~B|yL_^G`Lf1yHU4$z`e{!M+8|u3anmbk92h5%5MbrUH^F1TVdW7$v zVk<`aPU2H|67+qftkF!3_ML7ljP`vcg)zQw8w+E6ze-`O@6X1p*-8+&tU{q&h?!{uS5Hd=q^MIYhXRA?bkh@qiS zzK!SWuD}HWbL4icn?oe5GnWqi#(1fT=sbR zr`Sp2k;lHt;bjL?ecLfhIa&{Cp;09L_M$=zrx$h+RXvb`;bp*rbLS%cRr{CzhAN!O zqxga`LQf8yS?D2`)-r^a1g0@5XC-$aP5T;%iuU}`0q^UQm??j>@jDxz4E87L{)CA* z7ZQQXrVX-dTyZz1Wk^OnT(x3q8n@{|qhZ!LreDONQ}``~^yTFrs78%zVBVX&yMXSs zF=4Pfa3}{k&n{F%N)PzH2XqE0C}MKVJg6yIFyFw55Kw@-lKngQ6jO+0vIf;kkS7>r zg6`sh2MNdt2s)u-ihmj@HOTBAgTx4g3P6XQCP&Rj>}8)U3qyTvz&e0i#DD?O)fD%PugE=5z!)41i(2$WP0d?HC2^x!#O(5a8 zv~W4uEp2mBLU>zfIrE!ceVLKN78# zNzF99n+h2v1W0eAKR2w|D4|-FafkUd#9y!A<0=(b6Jg109i}Z3J|3ejlg}_sKZ+f$ zt&kxy^hz6zg={ew5-zMx@58O#YCOK(d@R}jjmUM%L860=EUBJgL z;4%EVU~zKKBMzZ3ppe6ei2hy)-4`CNeQdnO?-Mi-QbPme_XzLR=lg@eDO~$c(?$Gd z6#m{=nCy3`zNZUF3A|HJtUM^ixC@pUYG6UUW)`@JZz@ykL-mM1aLo9IAgVmI;ocnJ z7=(%Nx%c6E8KmE({t6JZ1*+Gt_v(nAvy>R_hB$!(mua7l;0zQ$nv5jK`=mrV~ zOs-lNA~ViKE^ICqBBrac_woKcYRW=}ni=6oZjLdr^!ooa zcjnP`miL{1ukO9_)zy`BwM*7&SzfV?SHNa7U~GezlpRXI2yh%1Y%szBAymDur9c|o z$g~++nsl0mbO~9S(xm4!3nrPQ$#i;7C!uF1olYh>?U`oIZ0#SNPIB5aXFlKW`@Fic zkOR#>GaPfT-uJ%mv;Ow&ailCthsmKikbdhw^B;+FM(;rF(}#hE_BW2h{U`@d1hJHu zj^K9OAmUk^LS!O32f?Al_}3Svf96TSz&~X$fDTNGjs#(1n|UfMN4o?-*Q7%8BThyB z$<7Mkf*}b#;tqsD9F{!4^)A8Tr8CZ}LB7{#rAF7XbHs3?wY|6mzn0d~G z=H{6X7an*YoDhv9a5p$%fclOS1G`7gQHoAF?u-+9#C7PP7=k_tcxs`elZs$mhqwXt zt>To;PeEUyxyX{Gan1XRnZLCCrFG`--`WwOs(xm+DSc+P@2$@u@9UX^v)er2w%O}> z#sqZHfQw;;E>B1HIOnlp&(+9=tMGvP6$%FnsZ9mz0|TC(A8=v(wx`&j*{A5h*pH`$ zG))z3LtbJhrT=C7u)8qfpfVO{@?k|!-00<5+s1BJrZx$>k0|zOTn@ONSyiRzs3#kr z;Sf<~E?SI=li;7Bq^o=Yc~ZS>moFoVw#@!f%9~e?z&&Qaj*gunVynuw=BM@u_wGf% zFOA&-ovh5h`POGrWUa+Q^Qyoj!{LGQBZi*P;-m8|?p*eC6x})d!@}@H6x}rYcSU=T z8M-vguE45+IvM1#l*fOYr-01|4zlxG=xko(m3X_OyIv_6K8yJ3;q-4wuDc`$V|}I! ztVCS|3iDq5bj#%z{Dj$mo-GgUb2X9S{m}26qJKf`+s&z)9!S3)_1AJ$5P%@Wv;Mvj zKekr2BYv^w+qjWhA$sWM_;>xiH~vDnexuNbu(C4#*Ic7561^o9B!#zcKLeQH z&kA6I+79#sAE|#0%b<=%gB(&{gE$!}5KyvS*_K+w2FQ-nw1I?C$$xnLiAELq1kv%O z220m+$n&}=uh|(?6o65U78f0T%#!GcuGX0RZf!v_C*_Mi+Ba8F|>s) za|l_tcb7Pbc3P6fPA0)LtQp*Hq1Mqp0-9fIbJf1Y8Luq6`roQ8%&|3elc;Zep{)~G(jC-N%ZBaQPsZp5U zKwc_~TIfT~g|r-nB z($Yt(!W(kK_JwRt{+viBFN;5zlt8-cN&qrvvJe%v4GF>u+eTOW3;X8!nQv{Z=xCE_ zv~`4!jbCmTZ4hG6fON^8y`T#!YMw6fN0#fR&)oX+Z2P@{O0#s*k|>gD&LYT7OJilV z8GA5jAog1dFwqKsF?I}<`Y=uMr5S}UM-}%98^+QjK7fzgIro9!TQNqsG%Vf!*bB^X`_OAmCqD?p<*e3$oaP)vK-9MHjC7_3v@8dVjK+6{_l7%NCW(TlC^m zZ#Rk<0?>;0?@O*LAbTt7hOyY;En;iLgn8yT82vB*Fw)(L_@#d6)=LfxKdlS0WcbYUFTrhqIi;plj28y4;Dx4nJ2 z2uPPi#4bID_NZ|+6;$0#5lKX87N^mQO3?}MuwbodDEW|OgQn!=@cjvYHzvR5@8RUj z{yxkRw<1A3Ng&LkvX>?Q&eZi?iH$R))+6}l z$ekpMXG@t}aa%h8fOZ1YAgpGC!zy8i)(g3zq@6)B&E)OeKk+b%lvmlpCr}6r*uGNtH2}iZbjG;R)gqEvG?)Ugc-(mU#xq#-S^hv*#2gjjEC%Vwdp^_~+(_>44lVC21x<%`Z$K9$COBU+99M``;g%Mys8rgw)_VDg! zRPtt-7}`w=T{Q3#-eY;mV%L-Q0hXR^l=E+R8r%f!iDVU92Yh<9|G?BLeqBN6Fqfj7 zu0eQE`-WZF#w+_X71_`be+CiGsJ23maUujlL>Ye}SJhA2<17-lg3#8`AVs76(vJ8! z-T(9KzB?LJ6L6q#v;_-@@uyOEElCAfoe%;<9fy7uZ2u}yfRqwmmDF5M zZ2(FwYZtLyHAj1;Kj)tUlCTyK{aPI}C3R{sVOZ+UAGioEdao*vPHXzXY(*GW9VFI^ z4kTlD+{uto8L&=Eb|>@==Y%lsUY#K5kNXIW*V0S%UjGQ;x+8K5^U)(e*b4n5P^i2Q zPyhnM2Y01HUKPK9%!KM@cxr`utcpJZ(C!YB$h!C!q%40L#tzI5%A&ttda4wXC_i!1 zrV|>d9MX1FsBfh2hWMM|`#b)w#NRXhFU9{A$eZu_$BVm88s5@%vOMh?vyjb(mK~Pr zI$57~i8skZNOq@PCkN85le^Qd(;pvouv$xUsu<83fYN%bPNo55b}g7RK!@aoeEQ3W z`2{evK%zUX$!|i1jT)GmhPl(0d@8exJHY4)Z5P3A=0YR!2gS%=$D8AtFYUFu_vTJ4 zi+E&nqR6LhT7O+A$C`_3h!(s3y-yq+d-(XtV_l1HY`T4H{E_j#pK#pbzg?n;kN{L)FbJ{sslCu|jJA*Wihtwtl5DkaTXI}-IceC^29NH8t?flQ0SwnST| z1yHF?s)F!H%Ye0L8u}}WfKHy;Dq#sTuwZ<{LqH=i8ov?0KwHGBNR%b#gh)*}=Qha< zfz(NYpyO8RNV5O{*A^z)qGeOhh)0li-xFO)nnG!3d&-oKD$3N9lQY5{e^QL@66rUY z<-?-P3N^h+O!{3yVp?5MD5*27$&_p$pD6H_E6HEUnds&x2*l}#?%<;X9Iuzw*44x^ zH9uo%?)Lbz=p(mE0Rz`5S5b&=KtEsaT5agfD%Ha<2=H{Vfl>h`*H6+2bi-jtFk>pY zkqsop(Kah-to#*4qw!xC!U^K++G{Ju;G?Q93#ge=&N0HODBhs04@OEsX6&C`vI()0ED;2zlcb16k<$<7wS-m&>XC%JKNBh zd_fyEG)2bX0SL8hb9_zSI6gIy3~=8GQ|_9G_H$m6}L&M zupe6yzo^GlI}i8{;i9Gxegay%BK{>6-c^LvMW6U(*i-V!>kB%BG z)}g^M0IF8iQ-|+VH+>^9xf3<>)CQXAf;6E*s!qTK&Cr=8gqD>e$JgoartU4gP*^2) zF|YzRM6Ph2Qdn^9Eoq?fV8$tqKKeH$MIN6Gz9#k3V*Dyeh8nM(X0{ z`>V+i?+yCiz zGcPbDIW%kr2V;>rpfjEb#iudy*9#?GO!$Iw7DSXOvps+BZYjI0Q*P6JZ|$WJJsZD7 zFOS2BfB;OmvNWLl+CuL@doT`Dl#bbC3MA)=8E^-Judro=8Q;EBmMr2&i4jz$A(8Se z0j-rd$Scq{vmabeEz!unNh&e#H8!`zzg@T{{uL3o&oS3NkyQi&3rmfqwd{%T>k$F@ zDT@lMp|-W|DYEGSf#$aRwxqBB39mQSy@NNZM?^+0jlW-bIQ~_2tV3{@sa`K(ja2>f zBFooJJpxw+hTDOLjMDVQFVib6i_7Iv zqwq7rSTt|wKN3{@H+c)c_SBI${`$Xy1h$C;qKu}*X359Czxc7uOFeczcfn&ci6R`( zzc2nZG=XPX57VU)fUd|m_e9Oj-mPl@bK>)4Rv>Jah{QT*qfBuSt zA3Ec&@iS&iz$Mtz)3@IYKYw@e&$2hKPIj>@mHY*xr{fjzM;LQbS}IK;{D zQui2IvOFDHGO*;(h&vHsU!81P{BvW#{)5L)o~k9zePeo4{83&&)NO~6611>3#~IZm z5g>g5nZn`ti-qXj(fNHtwh6_*9z`ST;rn-&$Q?x(kZH!mXoFf{CI=A;+eg4f8-L=9W;ihZG_t<3B`>Pm=)TC zE?}2_40)uhC%Oxbs(mtR6h~Z0Q>cvp~@7TfP2*v?{p{AcmMq?`Eb@2np*hmf=89*0E2m;*`m`oQYpbVi#p9F32`gPQ9y zi^58&H7y)uC=8QYD_TLg36;(CGAd;G!U0pxkT4Yqn-&T$6IpjNbPH*_gXy$yXR4^n z;RhIw7)xi;4GG9GZvo?8{w}E-c3qsNMagCSEn%$fXN$w}Z{VPLFM1C2P{-Et7X49Q zNe%>_leE_UbhbV_MR>V;Py8|Yb$%gx5Bq;OriS@7snQI5B^+hYD1hNMQTP;8((Y6z z**PjAf%|%|^$1%&usZEe<66HfKNL{m*3&1SJbvQnrW+nR@%Zsak3MnR(I?(_{Gp@c zrIZtX>w}tP>otoe*}1=YH&HVcq| zQOvy&ed~h{#lOi0^f5Sl!?NH<$M0my7IsVna*NLMBJv0kmy|<@Oq4&hK9~gidWc!d zAKfD_DH2+K5)V4z7wAgs$NJ)r6MwspKCTrrx<>NAqsef%h^hMmOEiE(eG%+~C``ff+{o@=c}D(w z?LG0YLB7{s&hM*)uPk{eTewG;`((>ng_l}2Ybz>>T#@4onp{yq@DZjG@${$`3CdU;>`Cdf=wQv9F%y&oYe zz5a*7<)CVNQp`{#OBf*CA|$2*sj`GIs{HtN*`gl-WZK50lMNB>jPX#^6Ewb#mYS0_ zfL&RyQ1jKH>vXgl$pKZsqF}2$Uj7T$+QPqDs#6L+YD^9=woGj9Wn{O{%2eg``zK`bqB(fBp7TB8BrJtfrA&+q6NX*kW)8!w&&uQlT+r0G#jKz= z?=NAnxd9zPyDTYb1&RLQTt+{T30PQoSjyi*m>U#7=4t76%mRlBkt(``7Qp0nNq{{G z*IF5V7^GDwNmKF_taok76Q&SpU-~nvr(N$zzUkfXNdDB0r;g;?Tn~$Q)IQ)n$;aZ~ z0g00TknV@c)i$x?{M5U#{zf+xqrvhR&W+&E=u3awq-{M#5?eVfDh7q)qEPYsBZY}x z-p`(4qz%pKW7I`~_Ras2e}vFWx6?Q}=Dnrzmt3CcUbUp4vZyDGAg6(XQ|vIdd|1mk zRgRh?-rLfp0R{sXQ90C~o4P_GA4z7}0J{}eX<40?aF=nIow0Eep35nAETiOx{E4j1 zhW>QKWKYx_Gu6^$s24yZ%OoaMIB-x4QKHR&48C+XUQL}& zYzE_*qIehp&gjD)F$&Oo{&u+xg(8dwC0=6Bs00q|Vxi0hUMXh`SlGf-fR$Jj0EZtm z7tqsQ81hDBCo;-{cQ{E@y5oUCj=S;m8)dyjTPC7T(lPK)%$mkZndw?M)k+ncW8)g4 zk_NEUpd8H3EbX=OpePIeHbZ%gp=_i`9f89Lk_DAqwn|Mipq_RRQy|;Y5@2BhSm;t! zL$rQ2PvRJx?BcIVd*q%AK|)M=)sRZ?A-mB~b(Hois%%7(B1YUL78N^Ot(0Lpel6io zT*~?Jv%C<5`pI}U{v;%AM)km;L*z$mCYk6#POFe>tKHckM5s0Ebv1NDK0up^l)l5% zo5y%v0l7rwn%KF-rc))PZL(=>71?S+6vz@)K;T@3sfQsiEi)U@46yV$k+fZcy+2$5 z15cztl=pN>lZ+(w!(c!1r>7*dcAGp|oR)8S8o^>=Bb71$&zNkgw9d&Qc+nZl#P#MFP@iU4 z3WMd8QOrhDH;3D~(jlvbPjU=muCP%q#KQ75`JQO)Zbp7l`SLnNX1V@vA$|@y^0F-# z$dS&}yFg5&lA{oqHCJFaOGSL6;=Cc3KGg*gDF~6q7o-6RX)V+zu-y`|L`N7%wtO|n zmamTLx+(qx%Z^RRj=Jun`jWnTIhrNC{=UBt#((Ya{qf&=PY=aE^7p|6_dCz;Pg)A9 z!rGoJ&%{Zm3Rt~%gq@8cj=I|^h{}Xb{H#g~%cM(cULU3zg%bn{i-?KISne5^U{flU zK_ILm(=$|}40Awc2_-bS!(o$-Ot5D^6)f*!l^-E^ zU}o^-Btx-Ei2gDvXp4?@rD1*4?hlt>yV zCdt~EYVt~%(s0BheGYpZY;C@#AZ!_Gj)E!N_A4go5NW^6*u{*YSp=h4%ny+bfS|e~ z_>iyEk=xF}Wi|w?r>7=MjaWh0kP6*FMrAPjNEIi>-s2na2K+6+!R$>dn!{Je_JvIsqA4&Wgh5_F=*IT_iZl@R>X2;mg`4W-R` z&fMh(d-UM(g%7st!IhANd0}4mit-s%i(p{V7kbYK9+C3M2$zJ&OfB{6!RndE(+A&w zb^Iyh_A{qba9>JpZ>vB`F_a@o2iZ8YM`USJ7Fd5z_P(fI^nxINLeUg}Xh;C2K_>jz;^H0!wzRtMKM<{(7VILHcN-u zE@&y0BqU3`OXtS4v;wKXUE?U(&j`&b;GZ#^{8TF26aG|XbrH;few$4NE^EY#!8~(p z1n=f_B8$3c)mXMFQYx$G+$qwCL>cPbF7;Rb6yiMkFtG<6M{KHH`h)S5JwpOo)M~aK zP~WZv)67p2Y2fBs`tNhy!kTVk#IzHanTbnZ7Fb|ob&ONm1dYRz2yDqHm*)#@_RxMd z$V&MLHkI@DArd#lpGzM>trU~aR=WQD#-G7a$+3~}rXM_H=m;MOrBq517?MDbG^xL~ z2%|GClp)rXyxOKAUzo^HS4l*PwXn{}kRjx{V_<1l40@AdXTdQ9;$xZ4w|$t6fjk-d z80|s;YN({D9D9kRVr?rRl{HH&Lk(D|F_QYP8lYCY0Mrztq)+&-T`KUDzb#vc!OK9p zY@aM5WfvqHa~P&bcYcEC3Tw*wNzS58b?=^ZNT_=VF{0kyd|*6(Dto$N;WL?j?q)CY zLVhAs$*Zdw7M%F4&fA(fNeiLg-fm?CU>}f+omTkE8E9b*VC2>GHLN$zmkJ+VLOjn47tHsX z&$mGJa`8V*pZRF~nJ5~W{X2F6Cz7L+0mQCUUM1OU6v)T;ydt`iO)QP48=NvPawykD zmk^?X5&oDn!x8JRmg@{{TKRtOhHcr(mE`fCW8HU zdSd#Ts8gjN^2f4Sw+ueQ)QK4r0q88#Pq9s%LJic?8V!RmUkAH(q*6M7WA+{jq8Kg7 zcI%AtW8~(smT-+LNKb}-r~n>25x-F^r_)2-CG=aQ6;N<>BZo4; zRK{6fr#i3eI^LR6yCP_=y4FX;(oA-)U(j#eXcs0(>vy*Fbg z8b?0>7D4ABFuSH1GBO=u1JU-@=byrAW)x_fmw@3C$sfj_g&#cEjP3#)VssN6+7gH% zG!RRKmH!Wa#XQJqX*zR#(ZC5@M4=U7Vlv42TCSfwng921;CZwPE4sp%3CdY`34dk_ zB$l?+v7t?cDb-Ng@!YTCbSK)D;~B-Kn6lG6s>G)eW!^iQDpkqh`1i1`KlcT;xUmWl z0gZGMbW}tu(Z>|(u?Cl+BcNc7B%&UO(4^!G7HSCR^z_mMy1Mk{OyzNKspUrB@!BJZ zg7nRRl=&*Mi5V&GPYa5OS2hu=$}eRi%n;B$DO)cb!{M~>UUNNcs>js`#ShCH7$kA0 zR;fHGY+1d`10cuf`8d?Z-Tm}EbgN{a#{`{1P7yUgf|4cTvgg+pk{`yOLuz<_JN)V@ zExkW7;TnD=Z6p=+pq$MQF=WjO5*X4fX%)df2;+7ynOLA%I*ZZT@&FjZ*Zuf2=X3gEWkz2Mhl^L-BU_!)@88LAQiWOOPPSO2-63b~!p2!BnVU zIl|hutfmKVV6CZT@HUAkq}^#)7jH@;T-wx_ni}O{#tz>Gesl3Z6{16mHD`Bp6XF$) z#dfO~nQZI%ahCluf=}6gsYg1a9oUyoIKu8Ggq<@LQ?>OJhvlwVsFY)8$wZlSyOGkidphIVW9e)@D6_Pif zeYH`R=dQD#CnR^3GGlFD#71@YYgBl|z;^ae{M~c*JB@n1_w1Wo6R55qyU+fmZ}yy3 zImleJRX2Oi{^#)I-=t4=5uDa}_P;@9u!K1)9paUijvfBc-=n3WZHK%L7GA>{`OyF2 zwu>kRYScZ~=teu|I_o*^O0mRHuiGSF?R_Xott7L&Ygq#tF_L#%lQSth&4#> z^vqq$ovq=Hni`xth!>uArBim##Teu^UdP&2HMB5>j=2*gwBZ(+8^^e=n{cS%xu=~w zuwm{O88R`s^N%;peZ-G<%zc7@r_e_K+-I@tqQ1@jk-r<}zV7e-xj*yw=-iv(etJwo z!`zQ-$j_ZCK!XWgKi5H26OGAqd&9X+^a=B~_X-D+ikY$;K@^0r*_*H?{(TnV+yP#6 zmIS^C(z%Re6d-9pq`dLi7|? zZ1qkxKS1yKRy4bjbLTwjk#ip{UbmJ7J@;u{Qv{%lN!XmP55AE8g>e%FwnXMK!Bsxs z+qDuEDh)*hztv*yoFX3pzjNPfTt$lm=YBv!5K8RAx6=3ZR#@$pb3ZchHoaKq@5+mn z@ZII_!54=cM`?B6?X07XWmxSTXyWJv>u0WTw}zc=csQku_@g9FK=_D6Mw%?)R1(z>{YuH@ACTzFjY8WdZ(as=+0+_C@^`jt_z z02E4N@ky>qgcQc?h$nSfpb&Dv{%W4q%;*^Lk`JvSSdPpnw6yHiT2H7f+zBBR z1XXke421FnlSCeMwSlq_d4QQU7Kh}Ns_a5FG13c;H*1eN)-a3Q1Jm(mJg$%ZbmM}K zAS-E@Z#yoY;fQ63SU8@lT4sE#llipMFBq}Ud92+TlBf)JkoDQ8;XXPY|IhdfBv2*a zE4E7-b9oy}&cIF(L#;JtVk@QGD&Q}KpOmvg+3-uJWSVQ_+~$Bp{e^&8h!lw1-2AvEVkz0tn$O2S+bBBOQ~ zBG+{%vuom-b^RV+Z;kporB1OzG9z6T?NKb;)#d0K{WYM!c12go=ld?>PkSMr^@}$~ z=T8pK$l|bI-_H1bA + + + ICSharpCode.SharpZipLib + + + + + An example class to demonstrate compression and decompression of BZip2 streams. + + + + + Decompress the input writing + uncompressed data to the output stream + + The readable stream containing data to decompress. + The output stream to receive the decompressed data. + Both streams are closed on completion if true. + + + + Compress the input stream sending + result data to output stream + + The readable stream to compress. + The output stream to receive the compressed data. + Both streams are closed on completion if true. + Block size acts as compression level (1 to 9) with 1 giving + the lowest compression and 9 the highest. + + + + Defines internal values for both compression and decompression + + + + + Random numbers used to randomise repetitive blocks + + + + + When multiplied by compression parameter (1-9) gives the block size for compression + 9 gives the best compression but uses the most memory. + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + BZip2Exception represents exceptions specific to BZip2 classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the BZip2Exception class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + An input stream that decompresses files in the BZip2 format + + + + + Construct instance for reading from stream + + Data source + + + + Get/set flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + + + + Gets a value indicating if the stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking. + + + + + Gets a value indicating whether the current stream supports writing. + This property always returns false + + + + + Gets the length in bytes of the stream. + + + + + Gets the current position of the stream. + Setting the position is not supported and will throw a NotSupportException. + + Any attempt to set the position. + + + + Flushes the stream. + + + + + Set the streams position. This operation is not supported and will throw a NotSupportedException + + A byte offset relative to the parameter. + A value of type indicating the reference point used to obtain the new position. + The new position of the stream. + Any access + + + + Sets the length of this stream to the given value. + This operation is not supported and will throw a NotSupportedExceptionortedException + + The new length for the stream. + Any access + + + + Writes a block of bytes to this stream using data from a buffer. + This operation is not supported and will throw a NotSupportedException + + The buffer to source data from. + The offset to start obtaining data from. + The number of bytes of data to write. + Any access + + + + Writes a byte to the current position in the file stream. + This operation is not supported and will throw a NotSupportedException + + The value to write. + Any access + + + + Read a sequence of bytes and advances the read position by one byte. + + Array of bytes to store values in + Offset in array to begin storing data + The maximum number of bytes to read + The total number of bytes read into the buffer. This might be less + than the number of bytes requested if that number of bytes are not + currently available or zero if the end of the stream is reached. + + + + + Closes the stream, releasing any associated resources. + + + + + Read a byte from stream advancing position + + byte read or -1 on end of stream + + + + An output stream that compresses into the BZip2 format + including file header chars into another stream. + + + + + Construct a default output stream with maximum block size + + The stream to write BZip data onto. + + + + Initialise a new instance of the + for the specified stream, using the given blocksize. + + The stream to write compressed data to. + The block size to use. + + Valid block sizes are in the range 1..9, with 1 giving + the lowest compression and 9 the highest. + + + + + Ensures that resources are freed and other cleanup operations + are performed when the garbage collector reclaims the BZip2OutputStream. + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking + + + + + Gets a value indicating whether the current stream supports writing + + + + + Gets the length in bytes of the stream + + + + + Gets or sets the current position of this stream. + + + + + Sets the current position of this stream to the given value. + + The point relative to the offset from which to being seeking. + The reference point from which to begin seeking. + The new position in the stream. + + + + Sets the length of this stream to the given value. + + The new stream length. + + + + Read a byte from the stream advancing the position. + + The byte read cast to an int; -1 if end of stream. + + + + Read a block of bytes + + The buffer to read into. + The offset in the buffer to start storing data at. + The maximum number of bytes to read. + The total number of bytes read. This might be less than the number of bytes + requested if that number of bytes are not currently available, or zero + if the end of the stream is reached. + + + + Write a block of bytes to the stream + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + + + + Write a byte to the stream. + + The byte to write to the stream. + + + + Get the number of bytes written to output. + + + + + Get the number of bytes written to the output. + + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Flush output buffers + + + + + Computes Adler32 checksum for a stream of data. An Adler32 + checksum is not as reliable as a CRC32 checksum, but a lot faster to + compute. + + The specification for Adler32 may be found in RFC 1950. + ZLIB Compressed Data Format Specification version 3.3) + + + From that document: + + "ADLER32 (Adler-32 checksum) + This contains a checksum value of the uncompressed data + (excluding any dictionary data) computed according to Adler-32 + algorithm. This algorithm is a 32-bit extension and improvement + of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 + standard. + + Adler-32 is composed of two sums accumulated per byte: s1 is + the sum of all bytes, s2 is the sum of all s1 values. Both sums + are done modulo 65521. s1 is initialized to 1, s2 to zero. The + Adler-32 checksum is stored as s2*65536 + s1 in most- + significant-byte first (network) order." + + "8.2. The Adler-32 algorithm + + The Adler-32 algorithm is much faster than the CRC32 algorithm yet + still provides an extremely low probability of undetected errors. + + The modulo on unsigned long accumulators can be delayed for 5552 + bytes, so the modulo operation time is negligible. If the bytes + are a, b, c, the second sum is 3a + 2b + c + 3, and so is position + and order sensitive, unlike the first sum, which is just a + checksum. That 65521 is prime is important to avoid a possible + large class of two-byte errors that leave the check unchanged. + (The Fletcher checksum uses 255, which is not prime and which also + makes the Fletcher check insensitive to single byte changes 0 - + 255.) + + The sum s1 is initialized to 1 instead of zero to make the length + of the sequence part of s2, so that the length does not have to be + checked separately. (Any sequence of zeroes has a Fletcher + checksum of zero.)" + + + + + + + largest prime smaller than 65536 + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the Adler32 data checksum as if no update was ever called. + + + + + Returns the Adler32 data checksum computed so far. + + + + + Updates the checksum with the byte b. + + + The data value to add. The high byte of the int is ignored. + + + + + Updates the Adler32 data checksum with the bytes taken from + a block of data. + + Contains the data to update the checksum with. + + + + Update Adler32 data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + CRC-32 with unreversed data and reversed output + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + This implementation uses sixteen lookup tables stored in one linear array + to implement the slicing-by-16 algorithm, a variant of the slicing-by-8 + algorithm described in this Intel white paper: + + https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf + + The first lookup table is simply the CRC of all possible eight bit values. + Each successive lookup table is derived from the original table generated + by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs + together will produce the same output as a byte-by-byte CRC loop with + fewer arithmetic and bit manipulation operations, at the cost of increased + memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table, + which is still small enough to fit in most processors' L1 cache.) + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the CRC data checksum as if no update was ever called. + + + + + Returns the CRC data checksum computed so far. + + Reversed Out = true + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of bval + + Reversed Data = false + + + + Updates the CRC data checksum with the bytes taken from + a block of data. + + Contains the data to update the CRC with. + + + + Update CRC data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + Internal helper function for updating a block of data using slicing. + + The array containing the data to add + Range start for (inclusive) + The number of bytes to checksum starting from + + + + A non-inlined function for updating data that doesn't fit in a 16-byte + block. We don't expect to enter this function most of the time, and when + we do we're not here for long, so disabling inlining here improves + performance overall. + + The array containing the data to add + Range start for (inclusive) + Range end for (exclusive) + + + + CRC-32 with reversed data and unreversed output + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + This implementation uses sixteen lookup tables stored in one linear array + to implement the slicing-by-16 algorithm, a variant of the slicing-by-8 + algorithm described in this Intel white paper: + + https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf + + The first lookup table is simply the CRC of all possible eight bit values. + Each successive lookup table is derived from the original table generated + by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs + together will produce the same output as a byte-by-byte CRC loop with + fewer arithmetic and bit manipulation operations, at the cost of increased + memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table, + which is still small enough to fit in most processors' L1 cache.) + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the CRC data checksum as if no update was ever called. + + + + + Returns the CRC data checksum computed so far. + + Reversed Out = false + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of bval + + Reversed Data = true + + + + Updates the CRC data checksum with the bytes taken from + a block of data. + + Contains the data to update the CRC with. + + + + Update CRC data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + Internal helper function for updating a block of data using slicing. + + The array containing the data to add + Range start for (inclusive) + The number of bytes to checksum starting from + + + + A non-inlined function for updating data that doesn't fit in a 16-byte + block. We don't expect to enter this function most of the time, and when + we do we're not here for long, so disabling inlining here improves + performance overall. + + The array containing the data to add + Range start for (inclusive) + Range end for (exclusive) + + + + The number of slicing lookup tables to generate. + + + + + Generates multiple CRC lookup tables for a given polynomial, stored + in a linear array of uints. The first block (i.e. the first 256 + elements) is the same as the byte-by-byte CRC lookup table. + + The generating CRC polynomial + Whether the polynomial is in reversed bit order + A linear array of 256 * elements + + This table could also be generated as a rectangular array, but the + JIT compiler generates slower code than if we use a linear array. + Known issue, see: https://github.com/dotnet/runtime/issues/30275 + + + + + Mixes the first four bytes of input with + using normal ordering before calling . + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + Checksum state before this update call + A new unfinalized checksum value + + + Assumes input[offset]..input[offset + 15] are valid array indexes. + For performance reasons, this must be checked by the caller. + + + + + Mixes the first four bytes of input with + using reflected ordering before calling . + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + Checksum state before this update call + A new unfinalized checksum value + + + Assumes input[offset]..input[offset + 15] are valid array indexes. + For performance reasons, this must be checked by the caller. + + + + + A shared method for updating an unfinalized CRC checksum using slicing-by-16. + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + First byte of input after mixing with the old CRC + Second byte of input after mixing with the old CRC + Third byte of input after mixing with the old CRC + Fourth byte of input after mixing with the old CRC + A new unfinalized checksum value + + + Even though the first four bytes of input are fed in as arguments, + should be the same value passed to this + function's caller (either or + ). This method will get inlined + into both functions, so using the same offset produces faster code. + + + Because most processors running C# have some kind of instruction-level + parallelism, the order of XOR operations can affect performance. This + ordering assumes that the assembly code generated by the just-in-time + compiler will emit a bunch of arithmetic operations for checking array + bounds. Then it opportunistically XORs a1 and a2 to keep the processor + busy while those other parts of the pipeline handle the range check + calculations. + + + + + + Interface to compute a data checksum used by checked input/output streams. + A data checksum can be updated by one byte or with a byte array. After each + update the value of the current checksum can be returned by calling + getValue. The complete checksum object can also be reset + so it can be used again with new data. + + + + + Resets the data checksum as if no update was ever called. + + + + + Returns the data checksum computed so far. + + + + + Adds one byte to the data checksum. + + + the data value to add. The high byte of the int is ignored. + + + + + Updates the data checksum with the bytes taken from the array. + + + buffer an array of bytes + + + + + Adds the byte array to the data checksum. + + + The chunk of data to add + + + + + Event arguments for scanning. + + + + + Initialise a new instance of + + The file or directory name. + + + + The file or directory name for this event. + + + + + Get set a value indicating if scanning should continue or not. + + + + + Event arguments during processing of a single file or directory. + + + + + Initialise a new instance of + + The file or directory name if known. + The number of bytes processed so far + The total number of bytes to process, 0 if not known + + + + The name for this event if known. + + + + + Get set a value indicating whether scanning should continue or not. + + + + + Get a percentage representing how much of the has been processed + + 0.0 to 100.0 percent; 0 if target is not known. + + + + The number of bytes processed so far + + + + + The number of bytes to process. + + Target may be 0 or negative if the value isnt known. + + + + Event arguments for directories. + + + + + Initialize an instance of . + + The name for this directory. + Flag value indicating if any matching files are contained in this directory. + + + + Get a value indicating if the directory contains any matching files or not. + + + + + Arguments passed when scan failures are detected. + + + + + Initialise a new instance of + + The name to apply. + The exception to use. + + + + The applicable name. + + + + + The applicable exception. + + + + + Get / set a value indicating whether scanning should continue. + + + + + Delegate invoked before starting to process a file. + + The source of the event + The event arguments. + + + + Delegate invoked during processing of a file or directory + + The source of the event + The event arguments. + + + + Delegate invoked when a file has been completely processed. + + The source of the event + The event arguments. + + + + Delegate invoked when a directory failure is detected. + + The source of the event + The event arguments. + + + + Delegate invoked when a file failure is detected. + + The source of the event + The event arguments. + + + + FileSystemScanner provides facilities scanning of files and directories. + + + + + Initialise a new instance of + + The file filter to apply when scanning. + + + + Initialise a new instance of + + The file filter to apply. + The directory filter to apply. + + + + Initialise a new instance of + + The file filter to apply. + + + + Initialise a new instance of + + The file filter to apply. + The directory filter to apply. + + + + Delegate to invoke when a directory is processed. + + + + + Delegate to invoke when a file is processed. + + + + + Delegate to invoke when processing for a file has finished. + + + + + Delegate to invoke when a directory failure is detected. + + + + + Delegate to invoke when a file failure is detected. + + + + + Raise the DirectoryFailure event. + + The directory name. + The exception detected. + + + + Raise the FileFailure event. + + The file name. + The exception detected. + + + + Raise the ProcessFile event. + + The file name. + + + + Raise the complete file event + + The file name + + + + Raise the ProcessDirectory event. + + The directory name. + Flag indicating if the directory has matching files. + + + + Scan a directory. + + The base directory to scan. + True to recurse subdirectories, false to scan a single directory. + + + + The file filter currently in use. + + + + + The directory filter currently in use. + + + + + Flag indicating if scanning should continue running. + + + + + INameTransform defines how file system names are transformed for use with archives, or vice versa. + + + + + Given a file name determine the transformed value. + + The name to transform. + The transformed file name. + + + + Given a directory name determine the transformed value. + + The name to transform. + The transformed directory name + + + + InvalidNameException is thrown for invalid names such as directory traversal paths and names with invalid characters + + + + + Initializes a new instance of the InvalidNameException class with a default error message. + + + + + Initializes a new instance of the InvalidNameException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the InvalidNameException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the InvalidNameException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Scanning filters support filtering of names. + + + + + Test a name to see if it 'matches' the filter. + + The name to test. + Returns true if the name matches the filter, false if it does not match. + + + + NameFilter is a string matching class which allows for both positive and negative + matching. + A filter is a sequence of independant regular expressions separated by semi-colons ';'. + To include a semi-colon it may be quoted as in \;. Each expression can be prefixed by a plus '+' sign or + a minus '-' sign to denote the expression is intended to include or exclude names. + If neither a plus or minus sign is found include is the default. + A given name is tested for inclusion before checking exclusions. Only names matching an include spec + and not matching an exclude spec are deemed to match the filter. + An empty filter matches any name. + + The following expression includes all name ending in '.dat' with the exception of 'dummy.dat' + "+\.dat$;-^dummy\.dat$" + + + + + Construct an instance based on the filter expression passed + + The filter expression. + + + + Test a string to see if it is a valid regular expression. + + The expression to test. + True if expression is a valid false otherwise. + + + + Test an expression to see if it is valid as a filter. + + The filter expression to test. + True if the expression is valid, false otherwise. + + + + Split a string into its component pieces + + The original string + Returns an array of values containing the individual filter elements. + + + + Convert this filter to its string equivalent. + + The string equivalent for this filter. + + + + Test a value to see if it is included by the filter. + + The value to test. + True if the value is included, false otherwise. + + + + Test a value to see if it is excluded by the filter. + + The value to test. + True if the value is excluded, false otherwise. + + + + Test a value to see if it matches the filter. + + The value to test. + True if the value matches, false otherwise. + + + + Compile this filter. + + + + + PathFilter filters directories and files using a form of regular expressions + by full path name. + See NameFilter for more detail on filtering. + + + + + Initialise a new instance of . + + The filter expression to apply. + + + + Test a name to see if it matches the filter. + + The name to test. + True if the name matches, false otherwise. + is used to get the full path before matching. + + + + ExtendedPathFilter filters based on name, file size, and the last write time of the file. + + Provides an example of how to customise filtering. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum to include. + The maximum to include. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + The minimum to include. + The maximum to include. + + + + Test a filename to see if it matches the filter. + + The filename to test. + True if the filter matches, false otherwise. + The doesnt exist + + + + Get/set the minimum size/length for a file that will match this filter. + + The default value is zero. + value is less than zero; greater than + + + + Get/set the maximum size/length for a file that will match this filter. + + The default value is + value is less than zero or less than + + + + Get/set the minimum value that will match for this filter. + + Files with a LastWrite time less than this value are excluded by the filter. + + + + Get/set the maximum value that will match for this filter. + + Files with a LastWrite time greater than this value are excluded by the filter. + + + + NameAndSizeFilter filters based on name and file size. + + A sample showing how filters might be extended. + + + + Initialise a new instance of NameAndSizeFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + + + + Test a filename to see if it matches the filter. + + The filename to test. + True if the filter matches, false otherwise. + + + + Get/set the minimum size for a file that will match this filter. + + + + + Get/set the maximum size for a file that will match this filter. + + + + + PathUtils provides simple utilities for handling paths. + + + + + Remove any path root present in the path + + A containing path information. + The path with the root removed if it was present; path otherwise. + + + + Returns a random file name in the users temporary directory, or in directory of if specified + + If specified, used as the base file name for the temporary file + Returns a temporary file name + + + + Provides simple " utilities. + + + + + Read from a ensuring all the required data is read. + + The stream to read. + The buffer to fill. + + + + + Read from a " ensuring all the required data is read. + + The stream to read data from. + The buffer to store data in. + The offset at which to begin storing data. + The number of bytes of data to store. + Required parameter is null + and or are invalid. + End of stream is encountered before all the data has been read. + + + + Read as much data as possible from a ", up to the requested number of bytes + + The stream to read data from. + The buffer to store data in. + The offset at which to begin storing data. + The number of bytes of data to store. + Required parameter is null + and or are invalid. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + The progress handler delegate to use. + The minimum between progress updates. + The source for this event. + The name to use with the event. + This form is specialised for use within #Zip to support events during archive operations. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + The progress handler delegate to use. + The minimum between progress updates. + The source for this event. + The name to use with the event. + A predetermined fixed target value to use with progress updates. + If the value is negative the target is calculated by looking at the stream. + This form is specialised for use within #Zip to support events during archive operations. + + + + Initialise an instance of + + + + + SharpZipBaseException is the base exception class for SharpZipLib. + All library exceptions are derived from this. + + NOTE: Not all exceptions thrown will be derived from this class. + A variety of other exceptions are possible for example + + + + Initializes a new instance of the SharpZipBaseException class. + + + + + Initializes a new instance of the SharpZipBaseException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the SharpZipBaseException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the SharpZipBaseException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that an error occurred during decoding of a input stream due to corrupt + data or (unintentional) library incompatibility. + + + + + Initializes a new instance of the StreamDecodingException with a generic message + + + + + Initializes a new instance of the StreamDecodingException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the StreamDecodingException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the StreamDecodingException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that the input stream could not decoded due to known library incompability or missing features + + + + + Initializes a new instance of the StreamUnsupportedException with a generic message + + + + + Initializes a new instance of the StreamUnsupportedException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the StreamUnsupportedException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the StreamUnsupportedException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that the input stream could not decoded due to the stream ending before enough data had been provided + + + + + Initializes a new instance of the UnexpectedEndOfStreamException with a generic message + + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that a value was outside of the expected range when decoding an input stream + + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable + + Name of the variable, use: nameof() + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable, + it's current value and expected range. + + Name of the variable, use: nameof() + The invalid value + Expected maximum value + Expected minimum value + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable, + it's current value and expected range. + + Name of the variable, use: nameof() + The invalid value + Expected maximum value + Expected minimum value + + + + Initializes a new instance of the ValueOutOfRangeException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + PkzipClassic embodies the classic or original encryption facilities used in Pkzip archives. + While it has been superceded by more recent and more powerful algorithms, its still in use and + is viable for preventing casual snooping + + + + + Generates new encryption keys based on given seed + + The seed value to initialise keys with. + A new key value. + + + + PkzipClassicCryptoBase provides the low level facilities for encryption + and decryption using the PkzipClassic algorithm. + + + + + Transform a single byte + + + The transformed value + + + + + Set the key schedule for encryption/decryption. + + The data use to set the keys from. + + + + Update encryption keys + + + + + Reset the internal state. + + + + + PkzipClassic CryptoTransform for encryption. + + + + + Initialise a new instance of + + The key block to use. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Cleanup internal state. + + + + + PkzipClassic CryptoTransform for decryption. + + + + + Initialise a new instance of . + + The key block to decrypt with. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Cleanup internal state. + + + + + Defines a wrapper object to access the Pkzip algorithm. + This class cannot be inherited. + + + + + Get / set the applicable block size in bits. + + The only valid block size is 8. + + + + Get an array of legal key sizes. + + + + + Generate an initial vector. + + + + + Get an array of legal block sizes. + + + + + Get / set the key value applicable. + + + + + Generate a new random key. + + + + + Create an encryptor. + + The key to use for this encryptor. + Initialisation vector for the new encryptor. + Returns a new PkzipClassic encryptor + + + + Create a decryptor. + + Keys to use for this new decryptor. + Initialisation vector for the new decryptor. + Returns a new decryptor. + + + + Encrypts and decrypts AES ZIP + + + Based on information from http://www.winzip.com/aes_info.htm + and http://www.gladman.me.uk/cryptography_technology/fileencrypt/ + + + + + Constructor + + The stream on which to perform the cryptographic transformation. + Instance of ZipAESTransform + Read or Write + + + + Reads a sequence of bytes from the current CryptoStream into buffer, + and advances the position within the stream by the number of bytes read. + + + + + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + + + + Transforms stream using AES in CTR mode + + + + + Constructor. + + Password string + Random bytes, length depends on encryption strength. + 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes. + The encryption strength, in bytes eg 16 for 128 bits. + True when creating a zip, false when reading. For the AuthCode. + + + + + Implement the ICryptoTransform method. + + + + + Returns the 2 byte password verifier + + + + + Returns the 10 byte AUTH CODE to be checked or appended immediately following the AES data stream. + + + + + Not implemented. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Gets a value indicating whether the current transform can be reused. + + + + + Cleanup internal state. + + + + + An example class to demonstrate compression and decompression of GZip streams. + + + + + Decompress the input writing + uncompressed data to the output stream + + The readable stream containing data to decompress. + The output stream to receive the decompressed data. + Both streams are closed on completion if true. + Input or output stream is null + + + + Compress the input stream sending + result data to output stream + + The readable stream to compress. + The output stream to receive the compressed data. + Both streams are closed on completion if true. + Deflate buffer size, minimum 512 + Deflate compression level, 0-9 + Input or output stream is null + Buffer Size is smaller than 512 + Compression level outside 0-9 + + + + This class contains constants used for gzip. + + + + + First GZip identification byte + + + + + Second GZip identification byte + + + + + Deflate compression method + + + + + Get the GZip specified encoding (CP-1252 if supported, otherwise ASCII) + + + + + GZip header flags + + + + + Text flag hinting that the file is in ASCII + + + + + CRC flag indicating that a CRC16 preceeds the data + + + + + Extra flag indicating that extra fields are present + + + + + Filename flag indicating that the original filename is present + + + + + Flag bit mask indicating that a comment is present + + + + + GZipException represents exceptions specific to GZip classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the GZipException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + This filter stream is used to decompress a "GZIP" format stream. + The "GZIP" format is described baseInputStream RFC 1952. + + author of the original java version : John Leuner + + This sample shows how to unzip a gzipped file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.GZip; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream inStream = new GZipInputStream(File.OpenRead(args[0]))) + using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { + byte[] buffer = new byte[4096]; + StreamUtils.Copy(inStream, outStream, buffer); + } + } + } + + + + + + CRC-32 value for uncompressed data + + + + + Flag to indicate if we've read the GZIP header yet for the current member (block of compressed data). + This is tracked per-block as the file is parsed. + + + + + Flag to indicate if at least one block in a stream with concatenated blocks was read successfully. + This allows us to exit gracefully if downstream data is not in gzip format. + + + + + Creates a GZipInputStream with the default buffer size + + + The stream to read compressed data from (baseInputStream GZIP format) + + + + + Creates a GZIPInputStream with the specified buffer size + + + The stream to read compressed data from (baseInputStream GZIP format) + + + Size of the buffer to use + + + + + Reads uncompressed data into an array of bytes + + + The buffer to read uncompressed data into + + + The offset indicating where the data should be placed + + + The number of uncompressed bytes to be read + + Returns the number of bytes actually read. + + + + Retrieves the filename header field for the block last read + + + + + + This filter stream is used to compress a stream into a "GZIP" stream. + The "GZIP" format is described in RFC 1952. + + author of the original java version : John Leuner + + This sample shows how to gzip a file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.GZip; + using ICSharpCode.SharpZipLib.Core; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream s = new GZipOutputStream(File.Create(args[0] + ".gz"))) + using (FileStream fs = File.OpenRead(args[0])) { + byte[] writeData = new byte[4096]; + Streamutils.Copy(s, fs, writeData); + } + } + } + } + + + + + + CRC-32 value for uncompressed data + + + + + Creates a GzipOutputStream with the default buffer size + + + The stream to read data (to be compressed) from + + + + + Creates a GZipOutputStream with the specified buffer size + + + The stream to read data (to be compressed) from + + + Size of the buffer to use + + + + + Sets the active compression level (0-9). The new level will be activated + immediately. + + The compression level to set. + + Level specified is not supported. + + + + + + Get the current compression level. + + The current compression level. + + + + Original filename + + + + + Write given buffer to output updating crc + + Buffer to write + Offset of first byte in buf to write + Number of bytes to write + + + + Writes remaining compressed output data to the output stream + and closes it. + + + + + Flushes the stream by ensuring the header is written, and then calling Flush + on the deflater. + + + + + Finish compression and write any footer information required to stream + + + + + This class contains constants used for LZW + + + + + Magic number found at start of LZW header: 0x1f 0x9d + + + + + Maximum number of bits per code + + + + + Mask for 'number of compression bits' + + + + + Indicates the presence of a fourth header byte + + + + + Reserved bits + + + + + Block compression: if table is full and compression rate is dropping, + clear the dictionary. + + + + + LZW file header size (in bytes) + + + + + Initial number of bits per code + + + + + LzwException represents exceptions specific to LZW classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the LzwException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + This filter stream is used to decompress a LZW format stream. + Specifically, a stream that uses the LZC compression method. + This file format is usually associated with the .Z file extension. + + See http://en.wikipedia.org/wiki/Compress + See http://wiki.wxwidgets.org/Development:_Z_File_Format + + The file header consists of 3 (or optionally 4) bytes. The first two bytes + contain the magic marker "0x1f 0x9d", followed by a byte of flags. + + Based on Java code by Ronald Tschalar, which in turn was based on the unlzw.c + code in the gzip package. + + This sample shows how to unzip a compressed file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.LZW; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream inStream = new LzwInputStream(File.OpenRead(args[0]))) + using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { + byte[] buffer = new byte[4096]; + StreamUtils.Copy(inStream, outStream, buffer); + // OR + inStream.Read(buffer, 0, buffer.Length); + // now do something with the buffer + } + } + } + + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Creates a LzwInputStream + + + The stream to read compressed data from (baseInputStream LZW format) + + + + + See + + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + + + Moves the unread data in the buffer to the beginning and resets + the pointers. + + + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Flag indicating wether this instance has been closed or not. + + + + + This exception is used to indicate that there is a problem + with a TAR archive header. + + + + + Initialise a new instance of the InvalidHeaderException class. + + + + + Initialises a new instance of the InvalidHeaderException class with a specified message. + + Message describing the exception cause. + + + + Initialise a new instance of InvalidHeaderException + + Message describing the problem. + The exception that is the cause of the current exception. + + + + Initializes a new instance of the InvalidHeaderException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Used to advise clients of 'events' while processing archives + + + + + The TarArchive class implements the concept of a + 'Tape Archive'. A tar archive is a series of entries, each of + which represents a file system object. Each entry in + the archive consists of a header block followed by 0 or more data blocks. + Directory entries consist only of the header block, and are followed by entries + for the directory's contents. File entries consist of a + header followed by the number of blocks needed to + contain the file's contents. All entries are written on + block boundaries. Blocks are 512 bytes long. + + TarArchives are instantiated in either read or write mode, + based upon whether they are instantiated with an InputStream + or an OutputStream. Once instantiated TarArchives read/write + mode can not be changed. + + There is currently no support for random access to tar archives. + However, it seems that subclassing TarArchive, and using the + TarBuffer.CurrentRecord and TarBuffer.CurrentBlock + properties, this would be rather trivial. + + + + + Client hook allowing detailed information to be reported during processing + + + + + Raises the ProgressMessage event + + The TarEntry for this event + message for this event. Null is no message + + + + Constructor for a default . + + + + + Initialise a TarArchive for input. + + The to use for input. + + + + Initialise a TarArchive for output. + + The to use for output. + + + + The InputStream based constructors create a TarArchive for the + purposes of extracting or listing a tar archive. Thus, use + these constructors when you wish to extract files from or list + the contents of an existing tar archive. + + The stream to retrieve archive data from. + Returns a new suitable for reading from. + + + + The InputStream based constructors create a TarArchive for the + purposes of extracting or listing a tar archive. Thus, use + these constructors when you wish to extract files from or list + the contents of an existing tar archive. + + The stream to retrieve archive data from. + The used for the Name fields, or null for ASCII only + Returns a new suitable for reading from. + + + + Create TarArchive for reading setting block factor + + A stream containing the tar archive contents + The blocking factor to apply + Returns a suitable for reading. + + + + Create TarArchive for reading setting block factor + + A stream containing the tar archive contents + The blocking factor to apply + The used for the Name fields, or null for ASCII only + Returns a suitable for reading. + + + + Create a TarArchive for writing to, using the default blocking factor + + The to write to + The used for the Name fields, or null for ASCII only + Returns a suitable for writing. + + + + Create a TarArchive for writing to, using the default blocking factor + + The to write to + Returns a suitable for writing. + + + + Create a tar archive for writing. + + The stream to write to + The blocking factor to use for buffering. + Returns a suitable for writing. + + + + Create a tar archive for writing. + + The stream to write to + The blocking factor to use for buffering. + The used for the Name fields, or null for ASCII only + Returns a suitable for writing. + + + + Set the flag that determines whether existing files are + kept, or overwritten during extraction. + + + If true, do not overwrite existing files. + + + + + Get/set the ascii file translation flag. If ascii file translation + is true, then the file is checked to see if it a binary file or not. + If the flag is true and the test indicates it is ascii text + file, it will be translated. The translation converts the local + operating system's concept of line ends into the UNIX line end, + '\n', which is the defacto standard for a TAR archive. This makes + text files compatible with UNIX. + + + + + Set the ascii file translation flag. + + + If true, translate ascii text files. + + + + + PathPrefix is added to entry names as they are written if the value is not null. + A slash character is appended after PathPrefix + + + + + RootPath is removed from entry names if it is found at the + beginning of the name. + + + + + Set user and group information that will be used to fill in the + tar archive's entry headers. This information is based on that available + for the linux operating system, which is not always available on other + operating systems. TarArchive allows the programmer to specify values + to be used in their place. + is set to true by this call. + + + The user id to use in the headers. + + + The user name to use in the headers. + + + The group id to use in the headers. + + + The group name to use in the headers. + + + + + Get or set a value indicating if overrides defined by SetUserInfo should be applied. + + If overrides are not applied then the values as set in each header will be used. + + + + Get the archive user id. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current user id. + + + + + Get the archive user name. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current user name. + + + + + Get the archive group id. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current group id. + + + + + Get the archive group name. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current group name. + + + + + Get the archive's record size. Tar archives are composed of + a series of RECORDS each containing a number of BLOCKS. + This allowed tar archives to match the IO characteristics of + the physical device being used. Archives are expected + to be properly "blocked". + + + The record size this archive is using. + + + + + Sets the IsStreamOwner property on the underlying stream. + Set this to false to prevent the Close of the TarArchive from closing the stream. + + + + + Close the archive. + + + + + Perform the "list" command for the archive contents. + + NOTE That this method uses the progress event to actually list + the contents. If the progress display event is not set, nothing will be listed! + + + + + Perform the "extract" command and extract the contents of the archive. + + + The destination directory into which to extract. + + + + + Perform the "extract" command and extract the contents of the archive. + + + The destination directory into which to extract. + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Extract an entry from the archive. This method assumes that the + tarIn stream has been properly set with a call to GetNextEntry(). + + + The destination directory into which to extract. + + + The TarEntry returned by tarIn.GetNextEntry(). + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Write an entry to the archive. This method will call the putNextEntry + and then write the contents of the entry, and finally call closeEntry() + for entries that are files. For directories, it will call putNextEntry(), + and then, if the recurse flag is true, process each entry that is a + child of the directory. + + + The TarEntry representing the entry to write to the archive. + + + If true, process the children of directory entries. + + + + + Write an entry to the archive. This method will call the putNextEntry + and then write the contents of the entry, and finally call closeEntry() + for entries that are files. For directories, it will call putNextEntry(), + and then, if the recurse flag is true, process each entry that is a + child of the directory. + + + The TarEntry representing the entry to write to the archive. + + + If true, process the children of directory entries. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases the unmanaged resources used by the FileStream and optionally releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Closes the archive and releases any associated resources. + + + + + Ensures that resources are freed and other cleanup operations are performed + when the garbage collector reclaims the . + + + + + The TarBuffer class implements the tar archive concept + of a buffered input stream. This concept goes back to the + days of blocked tape drives and special io devices. In the + C# universe, the only real function that this class + performs is to ensure that files have the correct "record" + size, or other tars will complain. +

+ You should never have a need to access this class directly. + TarBuffers are created by Tar IO Streams. +

+
+
+ + + The size of a block in a tar archive in bytes. + + This is 512 bytes. + + + + The number of blocks in a default record. + + + The default value is 20 blocks per record. + + + + + The size in bytes of a default record. + + + The default size is 10KB. + + + + + Get the record size for this buffer + + The record size in bytes. + This is equal to the multiplied by the + + + + Get the TAR Buffer's record size. + + The record size in bytes. + This is equal to the multiplied by the + + + + Get the Blocking factor for the buffer + + This is the number of blocks in each record. + + + + Get the TAR Buffer's block factor + + The block factor; the number of blocks per record. + + + + Construct a default TarBuffer + + + + + Create TarBuffer for reading with default BlockFactor + + Stream to buffer + A new suitable for input. + + + + Construct TarBuffer for reading inputStream setting BlockFactor + + Stream to buffer + Blocking factor to apply + A new suitable for input. + + + + Construct TarBuffer for writing with default BlockFactor + + output stream for buffer + A new suitable for output. + + + + Construct TarBuffer for writing Tar output to streams. + + Output stream to write to. + Blocking factor to apply + A new suitable for output. + + + + Initialization common to all constructors. + + + + + Determine if an archive block indicates End of Archive. End of + archive is indicated by a block that consists entirely of null bytes. + All remaining blocks for the record should also be null's + However some older tars only do a couple of null blocks (Old GNU tar for one) + and also partial records + + The data block to check. + Returns true if the block is an EOF block; false otherwise. + + + + Determine if an archive block indicates the End of an Archive has been reached. + End of archive is indicated by a block that consists entirely of null bytes. + All remaining blocks for the record should also be null's + However some older tars only do a couple of null blocks (Old GNU tar for one) + and also partial records + + The data block to check. + Returns true if the block is an EOF block; false otherwise. + + + + Skip over a block on the input stream. + + + + + Read a block from the input stream. + + + The block of data read. + + + + + Read a record from data stream. + + + false if End-Of-File, else true. + + + + + Get the current block number, within the current record, zero based. + + Block numbers are zero based values + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Get the current block number, within the current record, zero based. + + + The current zero based block number. + + + The absolute block number = (record number * block factor) + block number. + + + + + Get the current record number. + + + The current zero based record number. + + + + + Get the current record number. + + + The current zero based record number. + + + + + Write a block of data to the archive. + + + The data to write to the archive. + + + + + Write an archive record to the archive, where the record may be + inside of a larger array buffer. The buffer must be "offset plus + record size" long. + + + The buffer containing the record data to write. + + + The offset of the record data within buffer. + + + + + Write a TarBuffer record to the archive. + + + + + WriteFinalRecord writes the current record buffer to output any unwritten data is present. + + Any trailing bytes are set to zero which is by definition correct behaviour + for the end of a tar stream. + + + + Close the TarBuffer. If this is an output buffer, also flush the + current block before closing. + + + + + This class represents an entry in a Tar archive. It consists + of the entry's header, as well as the entry's File. Entries + can be instantiated in one of three ways, depending on how + they are to be used. +

+ TarEntries that are created from the header bytes read from + an archive are instantiated with the TarEntry( byte[] ) + constructor. These entries will be used when extracting from + or listing the contents of an archive. These entries have their + header filled in using the header bytes. They also set the File + to null, since they reference an archive entry not a file.

+

+ TarEntries that are created from files that are to be written + into an archive are instantiated with the CreateEntryFromFile(string) + pseudo constructor. These entries have their header filled in using + the File's information. They also keep a reference to the File + for convenience when writing entries.

+

+ Finally, TarEntries can be constructed from nothing but a name. + This allows the programmer to construct the entry by hand, for + instance when only an InputStream is available for writing to + the archive, and the header information is constructed from + other information. In this case the header fields are set to + defaults and the File is set to null.

+ +
+
+ + + Initialise a default instance of . + + + + + Construct an entry from an archive's header bytes. File is set + to null. + + + The header bytes from a tar archive entry. + + + + + Construct an entry from an archive's header bytes. File is set + to null. + + + The header bytes from a tar archive entry. + + + The used for the Name fields, or null for ASCII only + + + + + Construct a TarEntry using the header provided + + Header details for entry + + + + Clone this tar entry. + + Returns a clone of this entry. + + + + Construct an entry with only a name. + This allows the programmer to construct the entry's header "by hand". + + The name to use for the entry + Returns the newly created + + + + Construct an entry for a file. File is set to file, and the + header is constructed from information from the file. + + The file name that the entry represents. + Returns the newly created + + + + Determine if the two entries are equal. Equality is determined + by the header names being equal. + + The to compare with the current Object. + + True if the entries are equal; false if not. + + + + + Derive a Hash value for the current + + A Hash code for the current + + + + Determine if the given entry is a descendant of this entry. + Descendancy is determined by the name of the descendant + starting with this entry's name. + + + Entry to be checked as a descendent of this. + + + True if entry is a descendant of this. + + + + + Get this entry's header. + + + This entry's TarHeader. + + + + + Get/Set this entry's name. + + + + + Get/set this entry's user id. + + + + + Get/set this entry's group id. + + + + + Get/set this entry's user name. + + + + + Get/set this entry's group name. + + + + + Convenience method to set this entry's group and user ids. + + + This entry's new user id. + + + This entry's new group id. + + + + + Convenience method to set this entry's group and user names. + + + This entry's new user name. + + + This entry's new group name. + + + + + Get/Set the modification time for this entry + + + + + Get this entry's file. + + + This entry's file. + + + + + Get/set this entry's recorded file size. + + + + + Return true if this entry represents a directory, false otherwise + + + True if this entry is a directory. + + + + + Fill in a TarHeader with information from a File. + + + The TarHeader to fill in. + + + The file from which to get the header information. + + + + + Get entries for all files present in this entries directory. + If this entry doesnt represent a directory zero entries are returned. + + + An array of TarEntry's for this entry's children. + + + + + Write an entry's header information to a header buffer. + + + The tar entry header buffer to fill in. + + + + + Write an entry's header information to a header buffer. + + + The tar entry header buffer to fill in. + + + The used for the Name fields, or null for ASCII only + + + + + Convenience method that will modify an entry's name directly + in place in an entry header buffer byte array. + + + The buffer containing the entry header to modify. + + + The new name to place into the header buffer. + + + + + Convenience method that will modify an entry's name directly + in place in an entry header buffer byte array. + + + The buffer containing the entry header to modify. + + + The new name to place into the header buffer. + + + The used for the Name fields, or null for ASCII only + + + + + Fill in a TarHeader given only the entry's name. + + + The TarHeader to fill in. + + + The tar entry name. + + + + + The name of the file this entry represents or null if the entry is not based on a file. + + + + + The entry's header information. + + + + + TarException represents exceptions specific to Tar classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the TarException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Reads the extended header of a Tar stream + + + + + Creates a new . + + + + + Read bytes from + + + + + + + Returns the parsed headers as key-value strings + + + + + This class encapsulates the Tar Entry Header used in Tar Archives. + The class also holds a number of tar constants, used mostly in headers. + + + The tar format and its POSIX successor PAX have a long history which makes for compatability + issues when creating and reading files. + + This is further complicated by a large number of programs with variations on formats + One common issue is the handling of names longer than 100 characters. + GNU style long names are currently supported. + + This is the ustar (Posix 1003.1) header. + + struct header + { + char t_name[100]; // 0 Filename + char t_mode[8]; // 100 Permissions + char t_uid[8]; // 108 Numerical User ID + char t_gid[8]; // 116 Numerical Group ID + char t_size[12]; // 124 Filesize + char t_mtime[12]; // 136 st_mtime + char t_chksum[8]; // 148 Checksum + char t_typeflag; // 156 Type of File + char t_linkname[100]; // 157 Target of Links + char t_magic[6]; // 257 "ustar" or other... + char t_version[2]; // 263 Version fixed to 00 + char t_uname[32]; // 265 User Name + char t_gname[32]; // 297 Group Name + char t_devmajor[8]; // 329 Major for devices + char t_devminor[8]; // 337 Minor for devices + char t_prefix[155]; // 345 Prefix for t_name + char t_mfill[12]; // 500 Filler up to 512 + }; + + + + + The length of the name field in a header buffer. + + + + + The length of the mode field in a header buffer. + + + + + The length of the user id field in a header buffer. + + + + + The length of the group id field in a header buffer. + + + + + The length of the checksum field in a header buffer. + + + + + Offset of checksum in a header buffer. + + + + + The length of the size field in a header buffer. + + + + + The length of the magic field in a header buffer. + + + + + The length of the version field in a header buffer. + + + + + The length of the modification time field in a header buffer. + + + + + The length of the user name field in a header buffer. + + + + + The length of the group name field in a header buffer. + + + + + The length of the devices field in a header buffer. + + + + + The length of the name prefix field in a header buffer. + + + + + The "old way" of indicating a normal file. + + + + + Normal file type. + + + + + Link file type. + + + + + Symbolic link file type. + + + + + Character device file type. + + + + + Block device file type. + + + + + Directory file type. + + + + + FIFO (pipe) file type. + + + + + Contiguous file type. + + + + + Posix.1 2001 global extended header + + + + + Posix.1 2001 extended header + + + + + Solaris access control list file type + + + + + GNU dir dump file type + This is a dir entry that contains the names of files that were in the + dir at the time the dump was made + + + + + Solaris Extended Attribute File + + + + + Inode (metadata only) no file content + + + + + Identifies the next file on the tape as having a long link name + + + + + Identifies the next file on the tape as having a long name + + + + + Continuation of a file that began on another volume + + + + + For storing filenames that dont fit in the main header (old GNU) + + + + + GNU Sparse file + + + + + GNU Tape/volume header ignore on extraction + + + + + The magic tag representing a POSIX tar archive. (would be written with a trailing NULL) + + + + + The magic tag representing an old GNU tar archive where version is included in magic and overwrites it + + + + + Initialise a default TarHeader instance + + + + + Get/set the name for this tar entry. + + Thrown when attempting to set the property to null. + + + + Get the name of this entry. + + The entry's name. + + + + Get/set the entry's Unix style permission mode. + + + + + The entry's user id. + + + This is only directly relevant to unix systems. + The default is zero. + + + + + Get/set the entry's group id. + + + This is only directly relevant to linux/unix systems. + The default value is zero. + + + + + Get/set the entry's size. + + Thrown when setting the size to less than zero. + + + + Get/set the entry's modification time. + + + The modification time is only accurate to within a second. + + Thrown when setting the date time to less than 1/1/1970. + + + + Get the entry's checksum. This is only valid/updated after writing or reading an entry. + + + + + Get value of true if the header checksum is valid, false otherwise. + + + + + Get/set the entry's type flag. + + + + + The entry's link name. + + Thrown when attempting to set LinkName to null. + + + + Get/set the entry's magic tag. + + Thrown when attempting to set Magic to null. + + + + The entry's version. + + Thrown when attempting to set Version to null. + + + + The entry's user name. + + + + + Get/set the entry's group name. + + + This is only directly relevant to unix systems. + + + + + Get/set the entry's major device number. + + + + + Get/set the entry's minor device number. + + + + + Create a new that is a copy of the current instance. + + A new that is a copy of the current instance. + + + + Parse TarHeader information from a header buffer. + + + The tar entry header buffer to get information from. + + + The used for the Name field, or null for ASCII only + + + + + Parse TarHeader information from a header buffer. + + + The tar entry header buffer to get information from. + + + + + 'Write' header information to buffer provided, updating the check sum. + + output buffer for header information + + + + 'Write' header information to buffer provided, updating the check sum. + + output buffer for header information + The used for the Name field, or null for ASCII only + + + + Get a hash code for the current object. + + A hash code for the current object. + + + + Determines if this instance is equal to the specified object. + + The object to compare with. + true if the objects are equal, false otherwise. + + + + Set defaults for values used when constructing a TarHeader instance. + + Value to apply as a default for userId. + Value to apply as a default for userName. + Value to apply as a default for groupId. + Value to apply as a default for groupName. + + + + Parse an octal string from a header buffer. + + The header buffer from which to parse. + The offset into the buffer from which to parse. + The number of header bytes to parse. + The long equivalent of the octal string. + + + + Parse a name from a header buffer. + + + The header buffer from which to parse. + + + The offset into the buffer from which to parse. + + + The number of header bytes to parse. + + + The name parsed. + + + + + Parse a name from a header buffer. + + + The header buffer from which to parse. + + + The offset into the buffer from which to parse. + + + The number of header bytes to parse. + + + name encoding, or null for ASCII only + + + The name parsed. + + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + The next free index in the + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + The next free index in the + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + name encoding, or null for ASCII only + The next free index in the + + + + Add an entry name to the buffer + + + The name to add + + + The buffer to add to + + + The offset into the buffer from which to start adding + + + The number of header bytes to add + + + The index of the next free byte in the buffer + + TODO: what should be default behavior?(omit upper byte or UTF8?) + + + + Add an entry name to the buffer + + + The name to add + + + The buffer to add to + + + The offset into the buffer from which to start adding + + + The number of header bytes to add + + + + + The index of the next free byte in the buffer + + + + + Add an entry name to the buffer + + The name to add + The buffer to add to + The offset into the buffer from which to start adding + The number of header bytes to add + The index of the next free byte in the buffer + TODO: what should be default behavior?(omit upper byte or UTF8?) + + + + Add an entry name to the buffer + + The name to add + The buffer to add to + The offset into the buffer from which to start adding + The number of header bytes to add + + The index of the next free byte in the buffer + + + + Add a string to a buffer as a collection of ascii bytes. + + The string to add + The offset of the first character to add. + The buffer to add to. + The offset to start adding at. + The number of ascii characters to add. + The next free index in the buffer. + + + + Add a string to a buffer as a collection of ascii bytes. + + The string to add + The offset of the first character to add. + The buffer to add to. + The offset to start adding at. + The number of ascii characters to add. + String encoding, or null for ASCII only + The next free index in the buffer. + + + + Put an octal representation of a value into a buffer + + + the value to be converted to octal + + + buffer to store the octal string + + + The offset into the buffer where the value starts + + + The length of the octal string to create + + + The offset of the character next byte after the octal string + + + + + Put an octal or binary representation of a value into a buffer + + Value to be convert to octal + The buffer to update + The offset into the buffer to store the value + The length of the octal string. Must be 12. + Index of next byte + + + + Add the checksum integer to header buffer. + + + The header buffer to set the checksum for + The offset into the buffer for the checksum + The number of header bytes to update. + It's formatted differently from the other fields: it has 6 digits, a + null, then a space -- rather than digits, a space, then a null. + The final space is already there, from checksumming + + The modified buffer offset + + + + Compute the checksum for a tar entry header. + The checksum field must be all spaces prior to this happening + + The tar entry's header buffer. + The computed checksum. + + + + Make a checksum for a tar entry ignoring the checksum contents. + + The tar entry's header buffer. + The checksum for the buffer + + + + The TarInputStream reads a UNIX tar archive as an InputStream. + methods are provided to position at each successive entry in + the archive, and the read each entry as a normal input stream + using read(). + + + + + Construct a TarInputStream with default block factor + + stream to source data from + + + + Construct a TarInputStream with default block factor + + stream to source data from + The used for the Name fields, or null for ASCII only + + + + Construct a TarInputStream with user specified block factor + + stream to source data from + block factor to apply to archive + + + + Construct a TarInputStream with user specified block factor + + stream to source data from + block factor to apply to archive + The used for the Name fields, or null for ASCII only + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking + This property always returns false. + + + + + Gets a value indicating if the stream supports writing. + This property always returns false. + + + + + The length in bytes of the stream + + + + + Gets or sets the position within the stream. + Setting the Position is not supported and throws a NotSupportedExceptionNotSupportedException + + Any attempt to set position + + + + Flushes the baseInputStream + + + + + Set the streams position. This operation is not supported and will throw a NotSupportedException + + The offset relative to the origin to seek to. + The to start seeking from. + The new position in the stream. + Any access + + + + Sets the length of the stream + This operation is not supported and will throw a NotSupportedException + + The new stream length. + Any access + + + + Writes a block of bytes to this stream using data from a buffer. + This operation is not supported and will throw a NotSupportedException + + The buffer containing bytes to write. + The offset in the buffer of the frist byte to write. + The number of bytes to write. + Any access + + + + Writes a byte to the current position in the file stream. + This operation is not supported and will throw a NotSupportedException + + The byte value to write. + Any access + + + + Reads a byte from the current tar archive entry. + + A byte cast to an int; -1 if the at the end of the stream. + + + + Reads bytes from the current tar archive entry. + + This method is aware of the boundaries of the current + entry in the archive and will deal with them appropriately + + + The buffer into which to place bytes read. + + + The offset at which to place bytes read. + + + The number of bytes to read. + + + The number of bytes read, or 0 at end of stream/EOF. + + + + + Closes this stream. Calls the TarBuffer's close() method. + The underlying stream is closed by the TarBuffer. + + + + + Set the entry factory for this instance. + + The factory for creating new entries + + + + Get the record size being used by this stream's TarBuffer. + + + + + Get the record size being used by this stream's TarBuffer. + + + TarBuffer record size. + + + + + Get the available data that can be read from the current + entry in the archive. This does not indicate how much data + is left in the entire archive, only in the current entry. + This value is determined from the entry's size header field + and the amount of data already read from the current entry. + + + The number of available bytes for the current entry. + + + + + Skip bytes in the input buffer. This skips bytes in the + current entry's data, not the entire archive, and will + stop at the end of the current entry's data if the number + to skip extends beyond that point. + + + The number of bytes to skip. + + + + + Return a value of true if marking is supported; false otherwise. + + Currently marking is not supported, the return value is always false. + + + + Since we do not support marking just yet, we do nothing. + + + The limit to mark. + + + + + Since we do not support marking just yet, we do nothing. + + + + + Get the next entry in this tar archive. This will skip + over any remaining data in the current entry, if there + is one, and place the input stream at the header of the + next entry, and read the header and instantiate a new + TarEntry from the header bytes and return that entry. + If there are no more entries in the archive, null will + be returned to indicate that the end of the archive has + been reached. + + + The next TarEntry in the archive, or null. + + + + + Copies the contents of the current tar archive entry directly into + an output stream. + + + The OutputStream into which to write the entry's data. + + + + + This interface is provided, along with the method , to allow + the programmer to have their own subclass instantiated for the + entries return from . + + + + + Create an entry based on name alone + + + Name of the new EntryPointNotFoundException to create + + created TarEntry or descendant class + + + + Create an instance based on an actual file + + + Name of file to represent in the entry + + + Created TarEntry or descendant class + + + + + Create a tar entry based on the header information passed + + + Buffer containing header information to create an entry from. + + + Created TarEntry or descendant class + + + + + Standard entry factory class creating instances of the class TarEntry + + + + + Construct standard entry factory class with ASCII name encoding + + + + + Construct standard entry factory with name encoding + + The used for the Name fields, or null for ASCII only + + + + Create a based on named + + The name to use for the entry + A new + + + + Create a tar entry with details obtained from file + + The name of the file to retrieve details from. + A new + + + + Create an entry based on details in header + + The buffer containing entry details. + A new + + + + Flag set when last block has been read + + + + + Size of this entry as recorded in header + + + + + Number of bytes read for this entry so far + + + + + Buffer used with calls to Read() + + + + + Working buffer + + + + + Current entry being read + + + + + Factory used to create TarEntry or descendant class instance + + + + + Stream used as the source of input data. + + + + + The TarOutputStream writes a UNIX tar archive as an OutputStream. + Methods are provided to put entries, and then write their contents + by writing to this stream using write(). + + public + + + + Construct TarOutputStream using default block factor + + stream to write to + + + + Construct TarOutputStream using default block factor + + stream to write to + The used for the Name fields, or null for ASCII only + + + + Construct TarOutputStream with user specified block factor + + stream to write to + blocking factor + + + + Construct TarOutputStream with user specified block factor + + stream to write to + blocking factor + The used for the Name fields, or null for ASCII only + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + true if the stream supports reading; otherwise, false. + + + + + true if the stream supports seeking; otherwise, false. + + + + + true if stream supports writing; otherwise, false. + + + + + length of stream in bytes + + + + + gets or sets the position within the current stream. + + + + + set the position within the current stream + + The offset relative to the to seek to + The to seek from. + The new position in the stream. + + + + Set the length of the current stream + + The new stream length. + + + + Read a byte from the stream and advance the position within the stream + by one byte or returns -1 if at the end of the stream. + + The byte value or -1 if at end of stream + + + + read bytes from the current stream and advance the position within the + stream by the number of bytes read. + + The buffer to store read bytes in. + The index into the buffer to being storing bytes at. + The desired number of bytes to read. + The total number of bytes read, or zero if at the end of the stream. + The number of bytes may be less than the count + requested if data is not available. + + + + All buffered data is written to destination + + + + + Ends the TAR archive without closing the underlying OutputStream. + The result is that the EOF block of nulls is written. + + + + + Ends the TAR archive and closes the underlying OutputStream. + + This means that Finish() is called followed by calling the + TarBuffer's Close(). + + + + Get the record size being used by this stream's TarBuffer. + + + + + Get the record size being used by this stream's TarBuffer. + + + The TarBuffer record size. + + + + + Get a value indicating whether an entry is open, requiring more data to be written. + + + + + Put an entry on the output stream. This writes the entry's + header and positions the output stream for writing + the contents of the entry. Once this method is called, the + stream is ready for calls to write() to write the entry's + contents. Once the contents are written, closeEntry() + MUST be called to ensure that all buffered data + is completely written to the output stream. + + + The TarEntry to be written to the archive. + + + + + Close an entry. This method MUST be called for all file + entries that contain data. The reason is that we must + buffer data written to the stream in order to satisfy + the buffer's block based writes. Thus, there may be + data fragments still being assembled that must be written + to the output stream before this entry is closed and the + next entry written. + + + + + Writes a byte to the current tar archive entry. + This method simply calls Write(byte[], int, int). + + + The byte to be written. + + + + + Writes bytes to the current tar archive entry. This method + is aware of the current entry and will throw an exception if + you attempt to write bytes past the length specified for the + current entry. The method is also (painfully) aware of the + record buffering required by TarBuffer, and manages buffers + that are not a multiple of recordsize in length, including + assembling records from small buffers. + + + The buffer to write to the archive. + + + The offset in the buffer from which to get bytes. + + + The number of bytes to write. + + + + + Write an EOF (end of archive) block to the tar archive. + The end of the archive is indicated by two blocks consisting entirely of zero bytes. + + + + + bytes written for this entry so far + + + + + current 'Assembly' buffer length + + + + + Flag indicating whether this instance has been closed or not. + + + + + Size for the current entry + + + + + single block working buffer + + + + + 'Assembly' buffer used to assemble data before writing + + + + + TarBuffer used to provide correct blocking factor + + + + + the destination stream for the archive contents + + + + + name encoding + + + + + This is the Deflater class. The deflater class compresses input + with the deflate algorithm described in RFC 1951. It has several + compression levels and three different strategies described below. + + This class is not thread safe. This is inherent in the API, due + to the split of deflate and setInput. + + author of the original java version : Jochen Hoenicke + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Compression Level as an enum for safer use + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Creates a new deflater with default compression level. + + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION, or DEFAULT_COMPRESSION. + + if lvl is out of range. + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION. + + + true, if we should suppress the Zlib/RFC1950 header at the + beginning and the adler checksum at the end of the output. This is + useful for the GZIP/PKZIP formats. + + if lvl is out of range. + + + + Resets the deflater. The deflater acts afterwards as if it was + just created with the same compression level and strategy as it + had before. + + + + + Gets the current adler checksum of the data that was processed so far. + + + + + Gets the number of input bytes processed so far. + + + + + Gets the number of output bytes so far. + + + + + Flushes the current input block. Further calls to deflate() will + produce enough output to inflate everything in the current input + block. This is not part of Sun's JDK so I have made it package + private. It is used by DeflaterOutputStream to implement + flush(). + + + + + Finishes the deflater with the current input block. It is an error + to give more input after this method was called. This method must + be called to force all bytes to be flushed. + + + + + Returns true if the stream was finished and no more output bytes + are available. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method can also return true when the stream + was finished. + + + + + Sets the data which should be compressed next. This should be only + called when needsInput indicates that more input is needed. + If you call setInput when needsInput() returns false, the + previous input that is still pending will be thrown away. + The given byte array should not be changed, before needsInput() returns + true again. + This call is equivalent to setInput(input, 0, input.length). + + + the buffer containing the input data. + + + if the buffer was finished() or ended(). + + + + + Sets the data which should be compressed next. This should be + only called when needsInput indicates that more input is needed. + The given byte array should not be changed, before needsInput() returns + true again. + + + the buffer containing the input data. + + + the start of the data. + + + the number of data bytes of input. + + + if the buffer was Finish()ed or if previous input is still pending. + + + + + Sets the compression level. There is no guarantee of the exact + position of the change, but if you call this when needsInput is + true the change of compression level will occur somewhere near + before the end of the so far given input. + + + the new compression level. + + + + + Get current compression level + + Returns the current compression level + + + + Sets the compression strategy. Strategy is one of + DEFAULT_STRATEGY, HUFFMAN_ONLY and FILTERED. For the exact + position where the strategy is changed, the same as for + SetLevel() applies. + + + The new compression strategy. + + + + + Deflates the current input block with to the given array. + + + The buffer where compressed data is stored + + + The number of compressed bytes added to the output, or 0 if either + IsNeedingInput() or IsFinished returns true or length is zero. + + + + + Deflates the current input block to the given array. + + + Buffer to store the compressed data. + + + Offset into the output array. + + + The maximum number of bytes that may be stored. + + + The number of compressed bytes added to the output, or 0 if either + needsInput() or finished() returns true or length is zero. + + + If Finish() was previously called. + + + If offset or length don't match the array length. + + + + + Sets the dictionary which should be used in the deflate process. + This call is equivalent to setDictionary(dict, 0, dict.Length). + + + the dictionary. + + + if SetInput () or Deflate () were already called or another dictionary was already set. + + + + + Sets the dictionary which should be used in the deflate process. + The dictionary is a byte array containing strings that are + likely to occur in the data which should be compressed. The + dictionary is not stored in the compressed output, only a + checksum. To decompress the output you need to supply the same + dictionary again. + + + The dictionary data + + + The index where dictionary information commences. + + + The number of bytes in the dictionary. + + + If SetInput () or Deflate() were already called or another dictionary was already set. + + + + + Compression level. + + + + + If true no Zlib/RFC1950 headers or footers are generated + + + + + The current state. + + + + + The total bytes of output written. + + + + + The pending output. + + + + + The deflater engine. + + + + + This class contains constants used for deflation. + + + + + Set to true to enable debugging + + + + + Written to Zip file to identify a stored block + + + + + Identifies static tree in Zip file + + + + + Identifies dynamic tree in Zip file + + + + + Header flag indicating a preset dictionary for deflation + + + + + Sets internal buffer sizes for Huffman encoding + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Strategies for deflater + + + + + The default strategy + + + + + This strategy will only allow longer string repetitions. It is + useful for random data with a small character set. + + + + + This strategy will not look for string repetitions at all. It + only encodes with Huffman trees (which means, that more common + characters get a smaller encoding. + + + + + Low level compression engine for deflate algorithm which uses a 32K sliding window + with secondary compression from Huffman/Shannon-Fano codes. + + + + + Construct instance with pending buffer + Adler calculation will be performed + + + Pending buffer to use + + + + + Construct instance with pending buffer + + + Pending buffer to use + + + If no adler calculation should be performed + + + + + Deflate drives actual compression of data + + True to flush input buffers + Finish deflation with the current input. + Returns true if progress has been made. + + + + Sets input data to be deflated. Should only be called when NeedsInput() + returns true + + The buffer containing input data. + The offset of the first byte of data. + The number of bytes of data to use as input. + + + + Determines if more input is needed. + + Return true if input is needed via SetInput + + + + Set compression dictionary + + The buffer containing the dictionary data + The offset in the buffer for the first byte of data + The length of the dictionary data. + + + + Reset internal state + + + + + Reset Adler checksum + + + + + Get current value of Adler checksum + + + + + Total data processed + + + + + Get/set the deflate strategy + + + + + Set the deflate level (0-9) + + The value to set the level to. + + + + Fill the window + + + + + Inserts the current string in the head hash and returns the previous + value for this hash. + + The previous hash value + + + + Find the best (longest) string in the window matching the + string starting at strstart. + + Preconditions: + + strstart + DeflaterConstants.MAX_MATCH <= window.length. + + + True if a match greater than the minimum length is found + + + + Hashtable, hashing three characters to an index for window, so + that window[index]..window[index+2] have this hash code. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + prev[index & WMASK] points to the previous index that has the + same hash code as the string starting at index. This way + entries with the same hash code are in a linked list. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + Points to the current character in the window. + + + + + lookahead is the number of characters starting at strstart in + window that are valid. + So window[strstart] until window[strstart+lookahead-1] are valid + characters. + + + + + This array contains the part of the uncompressed stream that + is of relevance. The current character is indexed by strstart. + + + + + The current compression function. + + + + + The input data for compression. + + + + + The total bytes of input read. + + + + + The offset into inputBuf, where input data starts. + + + + + The end offset of the input data. + + + + + The adler checksum + + + + + This is the DeflaterHuffman class. + + This class is not thread safe. This is inherent in the API, due + to the split of Deflate and SetInput. + + author of the original java version : Jochen Hoenicke + + + + + Resets the internal state of the tree + + + + + Check that all frequencies are zero + + + At least one frequency is non-zero + + + + + Set static codes and length + + new codes + length for new codes + + + + Build dynamic codes and lengths + + + + + Get encoded length + + Encoded length, the sum of frequencies * lengths + + + + Scan a literal or distance tree to determine the frequencies of the codes + in the bit length tree. + + + + + Write tree values + + Tree to write + + + + Pending buffer to use + + + + + Construct instance with pending buffer + + Pending buffer to use + + + + Reset internal state + + + + + Write all trees to pending buffer + + The number/rank of treecodes to send. + + + + Compress current buffer writing data to pending buffer + + + + + Flush block to output with no compression + + Data to write + Index of first byte to write + Count of bytes to write + True if this is the last block + + + + Flush block to output with compression + + Data to flush + Index of first byte to flush + Count of bytes to flush + True if this is the last block + + + + Get value indicating if internal buffer is full + + true if buffer is full + + + + Add literal to buffer + + Literal value to add to buffer. + Value indicating internal buffer is full + + + + Add distance code and length to literal and distance trees + + Distance code + Length + Value indicating if internal buffer is full + + + + Reverse the bits of a 16 bit value. + + Value to reverse bits + Value with bits reversed + + + + This class stores the pending output of the Deflater. + + author of the original java version : Jochen Hoenicke + + + + + Construct instance with default buffer size + + + + + Inflater is used to decompress data that has been compressed according + to the "deflate" standard described in rfc1951. + + By default Zlib (rfc1950) headers and footers are expected in the input. + You can use constructor public Inflater(bool noHeader) passing true + if there is no Zlib header information + + The usage is as following. First you have to set some input with + SetInput(), then Inflate() it. If inflate doesn't + inflate any bytes there may be three reasons: +
    +
  • IsNeedingInput() returns true because the input buffer is empty. + You have to provide more input with SetInput(). + NOTE: IsNeedingInput() also returns true when, the stream is finished. +
  • +
  • IsNeedingDictionary() returns true, you have to provide a preset + dictionary with SetDictionary().
  • +
  • IsFinished returns true, the inflater has finished.
  • +
+ Once the first output byte is produced, a dictionary will not be + needed at a later stage. + + author of the original java version : John Leuner, Jochen Hoenicke +
+
+ + + Copy lengths for literal codes 257..285 + + + + + Extra bits for literal codes 257..285 + + + + + Copy offsets for distance codes 0..29 + + + + + Extra bits for distance codes + + + + + These are the possible states for an inflater + + + + + This variable contains the current state. + + + + + The adler checksum of the dictionary or of the decompressed + stream, as it is written in the header resp. footer of the + compressed stream. + Only valid if mode is DECODE_DICT or DECODE_CHKSUM. + + + + + The number of bits needed to complete the current state. This + is valid, if mode is DECODE_DICT, DECODE_CHKSUM, + DECODE_HUFFMAN_LENBITS or DECODE_HUFFMAN_DISTBITS. + + + + + True, if the last block flag was set in the last block of the + inflated stream. This means that the stream ends after the + current block. + + + + + The total number of inflated bytes. + + + + + The total number of bytes set with setInput(). This is not the + value returned by the TotalIn property, since this also includes the + unprocessed input. + + + + + This variable stores the noHeader flag that was given to the constructor. + True means, that the inflated stream doesn't contain a Zlib header or + footer. + + + + + Creates a new inflater or RFC1951 decompressor + RFC1950/Zlib headers and footers will be expected in the input data + + + + + Creates a new inflater. + + + True if no RFC1950/Zlib header and footer fields are expected in the input data + + This is used for GZIPed/Zipped input. + + For compatibility with + Sun JDK you should provide one byte of input more than needed in + this case. + + + + + Resets the inflater so that a new stream can be decompressed. All + pending input and output will be discarded. + + + + + Decodes a zlib/RFC1950 header. + + + False if more input is needed. + + + The header is invalid. + + + + + Decodes the dictionary checksum after the deflate header. + + + False if more input is needed. + + + + + Decodes the huffman encoded symbols in the input stream. + + + false if more input is needed, true if output window is + full or the current block ends. + + + if deflated stream is invalid. + + + + + Decodes the adler checksum after the deflate stream. + + + false if more input is needed. + + + If checksum doesn't match. + + + + + Decodes the deflated stream. + + + false if more input is needed, or if finished. + + + if deflated stream is invalid. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + The index into buffer where the dictionary starts. + + + The number of bytes in the dictionary. + + + No dictionary is needed. + + + The adler checksum for the buffer is invalid + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + the input. + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + The source of input data + + + The index into buffer where the input starts. + + + The number of bytes of input to use. + + + No input is needed. + + + The index and/or count are wrong. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether IsNeedingDictionary(), + IsNeedingInput() or IsFinished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + The number of bytes written to the buffer, 0 if no further + output can be produced. + + + if buffer has length 0. + + + if deflated stream is invalid. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether needsDictionary(), + needsInput() or finished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + the offset in buffer where storing starts. + + + the maximum number of bytes to output. + + + the number of bytes written to the buffer, 0 if no further output can be produced. + + + if count is less than 0. + + + if the index and / or count are wrong. + + + if deflated stream is invalid. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method also returns true when the stream is finished. + + + + + Returns true, if a preset dictionary is needed to inflate the input. + + + + + Returns true, if the inflater has finished. This means, that no + input is needed and no output can be produced. + + + + + Gets the adler checksum. This is either the checksum of all + uncompressed bytes returned by inflate(), or if needsDictionary() + returns true (and thus no output was yet produced) this is the + adler checksum of the expected dictionary. + + + the adler checksum. + + + + + Gets the total number of output bytes returned by Inflate(). + + + the total number of output bytes. + + + + + Gets the total number of processed compressed input bytes. + + + The total number of bytes of processed input bytes. + + + + + Gets the number of unprocessed input bytes. Useful, if the end of the + stream is reached and you want to further process the bytes after + the deflate stream. + + + The number of bytes of the input which have not been processed. + + + + + Continue decoding header from until more bits are needed or decoding has been completed + + Returns whether decoding could be completed + + + + Get literal/length huffman tree, must not be used before has returned true + + If hader has not been successfully read by the state machine + + + + Get distance huffman tree, must not be used before has returned true + + If hader has not been successfully read by the state machine + + + + Huffman tree used for inflation + + + + + Literal length tree + + + + + Distance tree + + + + + Constructs a Huffman tree from the array of code lengths. + + + the array of code lengths + + + + + Reads the next symbol from input. The symbol is encoded using the + huffman tree. + + + input the input source. + + + the next symbol, or -1 if not enough input is available. + + + + + This class is general purpose class for writing data to a buffer. + + It allows you to write bits as well as bytes + Based on DeflaterPending.java + + author of the original java version : Jochen Hoenicke + + + + + Internal work buffer + + + + + construct instance using default buffer size of 4096 + + + + + construct instance using specified buffer size + + + size to use for internal buffer + + + + + Clear internal state/buffers + + + + + Write a byte to buffer + + + The value to write + + + + + Write a short value to buffer LSB first + + + The value to write. + + + + + write an integer LSB first + + The value to write. + + + + Write a block of data to buffer + + data to write + offset of first byte to write + number of bytes to write + + + + The number of bits written to the buffer + + + + + Align internal buffer on a byte boundary + + + + + Write bits to internal buffer + + source of bits + number of bits to write + + + + Write a short value to internal buffer most significant byte first + + value to write + + + + Indicates if buffer has been flushed + + + + + Flushes the pending buffer into the given output array. If the + output array is to small, only a partial flush is done. + + The output array. + The offset into output array. + The maximum number of bytes to store. + The number of bytes flushed. + + + + Convert internal buffer to byte array. + Buffer is empty on completion + + + The internal buffer contents converted to a byte array. + + + + + A special stream deflating or compressing the bytes that are + written to it. It uses a Deflater to perform actual deflating.
+ Authors of the original java version : Tom Tromey, Jochen Hoenicke +
+
+ + + Creates a new DeflaterOutputStream with a default Deflater and default buffer size. + + + the output stream where deflated output should be written. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + default buffer size. + + + the output stream where deflated output should be written. + + + the underlying deflater. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + buffer size. + + + The output stream where deflated output is written. + + + The underlying deflater to use + + + The buffer size in bytes to use when deflating (minimum value 512) + + + bufsize is less than or equal to zero. + + + baseOutputStream does not support writing + + + deflater instance is null + + + + + Finishes the stream by calling finish() on the deflater. + + + Not all input is deflated + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Allows client to determine if an entry can be patched after its added + + + + + The CryptoTransform currently being used to encrypt the compressed data. + + + + + Returns the 10 byte AUTH CODE to be appended immediately following the AES data stream. + + + + + Encrypt a block of data + + + Data to encrypt. NOTE the original contents of the buffer are lost + + + Offset of first byte in buffer to encrypt + + + Number of bytes in buffer to encrypt + + + + + Deflates everything in the input buffers. This will call + def.deflate() until all bytes from the input buffers + are processed. + + + + + Gets value indicating stream can be read from + + + + + Gets a value indicating if seeking is supported for this stream + This property always returns false + + + + + Get value indicating if this stream supports writing + + + + + Get current length of stream + + + + + Gets the current position within the stream. + + Any attempt to set position + + + + Sets the current position of this stream to the given value. Not supported by this class! + + The offset relative to the to seek. + The to seek from. + The new position in the stream. + Any access + + + + Sets the length of this stream to the given value. Not supported by this class! + + The new stream length. + Any access + + + + Read a byte from stream advancing position by one + + The byte read cast to an int. THe value is -1 if at the end of the stream. + Any access + + + + Read a block of bytes from stream + + The buffer to store read data in. + The offset to start storing at. + The maximum number of bytes to read. + The actual number of bytes read. Zero if end of stream is detected. + Any access + + + + Flushes the stream by calling Flush on the deflater and then + on the underlying stream. This ensures that all bytes are flushed. + + + + + Calls and closes the underlying + stream when is true. + + + + + Get the Auth code for AES encrypted entries + + + + + Writes a single byte to the compressed output stream. + + + The byte value. + + + + + Writes bytes from an array to the compressed stream. + + + The byte array + + + The offset into the byte array where to start. + + + The number of bytes to write. + + + + + This buffer is used temporarily to retrieve the bytes from the + deflater and write them to the underlying output stream. + + + + + The deflater which is used to deflate the stream. + + + + + Base stream the deflater depends on. + + + + + An input buffer customised for use by + + + The buffer supports decryption of incoming data. + + + + + Initialise a new instance of with a default buffer size + + The stream to buffer. + + + + Initialise a new instance of + + The stream to buffer. + The size to use for the buffer + A minimum buffer size of 1KB is permitted. Lower sizes are treated as 1KB. + + + + Get the length of bytes in the + + + + + Get the contents of the raw data buffer. + + This may contain encrypted data. + + + + Get the number of useable bytes in + + + + + Get the contents of the clear text buffer. + + + + + Get/set the number of bytes available + + + + + Call passing the current clear text buffer contents. + + The inflater to set input for. + + + + Fill the buffer from the underlying input stream. + + + + + Read a buffer directly from the input stream + + The buffer to fill + Returns the number of bytes read. + + + + Read a buffer directly from the input stream + + The buffer to read into + The offset to start reading data into. + The number of bytes to read. + Returns the number of bytes read. + + + + Read clear text data from the input stream. + + The buffer to add data to. + The offset to start adding data at. + The number of bytes to read. + Returns the number of bytes actually read. + + + + Read a from the input stream. + + Returns the byte read. + + + + Read an in little endian byte order. + + The short value read case to an int. + + + + Read an in little endian byte order. + + The int value read. + + + + Read a in little endian byte order. + + The long value read. + + + + Get/set the to apply to any data. + + Set this value to null to have no transform applied. + + + + This filter stream is used to decompress data compressed using the "deflate" + format. The "deflate" format is described in RFC 1951. + + This stream may form the basis for other decompression filters, such + as the GZipInputStream. + + Author of the original java version : John Leuner. + + + + + Create an InflaterInputStream with the default decompressor + and a default buffer size of 4KB. + + + The InputStream to read bytes from + + + + + Create an InflaterInputStream with the specified decompressor + and a default buffer size of 4KB. + + + The source of input data + + + The decompressor used to decompress data read from baseInputStream + + + + + Create an InflaterInputStream with the specified decompressor + and the specified buffer size. + + + The InputStream to read bytes from + + + The decompressor to use + + + Size of the buffer to use + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Skip specified number of bytes of uncompressed data + + + Number of bytes to skip + + + The number of bytes skipped, zero if the end of + stream has been reached + + + The number of bytes to skip is less than or equal to zero. + + + + + Clear any cryptographic state. + + + + + Returns 0 once the end of the stream (EOF) has been reached. + Otherwise returns 1. + + + + + Fills the buffer with more data to decompress. + + + Stream ends early + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + Inflater needs a dictionary + + + + + Decompressor for this stream + + + + + Input buffer for this stream. + + + + + Base stream the inflater reads from. + + + + + The compressed size + + + + + Flag indicating whether this instance has been closed or not. + + + + + Contains the output from the Inflation process. + We need to have a window so that we can refer backwards into the output stream + to repeat stuff.
+ Author of the original java version : John Leuner +
+
+ + + Write a byte to this output window + + value to write + + if window is full + + + + + Append a byte pattern already in the window itself + + length of pattern to copy + distance from end of window pattern occurs + + If the repeated data overflows the window + + + + + Copy from input manipulator to internal window + + source of data + length of data to copy + the number of bytes copied + + + + Copy dictionary to window + + source dictionary + offset of start in source dictionary + length of dictionary + + If window isnt empty + + + + + Get remaining unfilled space in window + + Number of bytes left in window + + + + Get bytes available for output in window + + Number of bytes filled + + + + Copy contents of window to output + + buffer to copy to + offset to start at + number of bytes to count + The number of bytes copied + + If a window underflow occurs + + + + + Reset by clearing window so GetAvailable returns 0 + + + + + This class allows us to retrieve a specified number of bits from + the input buffer, as well as copy big byte blocks. + + It uses an int buffer to store up to 31 bits for direct + manipulation. This guarantees that we can get at least 16 bits, + but we only need at most 15, so this is all safe. + + There are some optimizations in this class, for example, you must + never peek more than 8 bits more than needed, and you must first + peek bits before you may drop them. This is not a general purpose + class but optimized for the behaviour of the Inflater. + + authors of the original java version : John Leuner, Jochen Hoenicke + + + + + Get the next sequence of bits but don't increase input pointer. bitCount must be + less or equal 16 and if this call succeeds, you must drop + at least n - 8 bits in the next call. + + The number of bits to peek. + + the value of the bits, or -1 if not enough bits available. */ + + + + + Tries to grab the next bits from the input and + sets to the value, adding . + + true if enough bits could be read, otherwise false + + + + Tries to grab the next bits from the input and + sets of to the value. + + true if enough bits could be read, otherwise false + + + + Drops the next n bits from the input. You should have called PeekBits + with a bigger or equal n before, to make sure that enough bits are in + the bit buffer. + + The number of bits to drop. + + + + Gets the next n bits and increases input pointer. This is equivalent + to followed by , except for correct error handling. + + The number of bits to retrieve. + + the value of the bits, or -1 if not enough bits available. + + + + + Gets the number of bits available in the bit buffer. This must be + only called when a previous PeekBits() returned -1. + + + the number of bits available. + + + + + Gets the number of bytes available. + + + The number of bytes available. + + + + + Skips to the next byte boundary. + + + + + Returns true when SetInput can be called + + + + + Copies bytes from input buffer to output buffer starting + at output[offset]. You have to make sure, that the buffer is + byte aligned. If not enough bytes are available, copies fewer + bytes. + + + The buffer to copy bytes to. + + + The offset in the buffer at which copying starts + + + The length to copy, 0 is allowed. + + + The number of bytes copied, 0 if no bytes were available. + + + Length is less than zero + + + Bit buffer isnt byte aligned + + + + + Resets state and empties internal buffers + + + + + Add more input for consumption. + Only call when IsNeedingInput returns true + + data to be input + offset of first byte of input + number of bytes of input to add. + + + + FastZipEvents supports all events applicable to FastZip operations. + + + + + Delegate to invoke when processing directories. + + + + + Delegate to invoke when processing files. + + + + + Delegate to invoke during processing of files. + + + + + Delegate to invoke when processing for a file has been completed. + + + + + Delegate to invoke when processing directory failures. + + + + + Delegate to invoke when processing file failures. + + + + + Raise the directory failure event. + + The directory causing the failure. + The exception for this event. + A boolean indicating if execution should continue or not. + + + + Fires the file failure handler delegate. + + The file causing the failure. + The exception for this failure. + A boolean indicating if execution should continue or not. + + + + Fires the ProcessFile delegate. + + The file being processed. + A boolean indicating if execution should continue or not. + + + + Fires the delegate + + The file whose processing has been completed. + A boolean indicating if execution should continue or not. + + + + Fires the process directory delegate. + + The directory being processed. + Flag indicating if the directory has matching files as determined by the current filter. + A of true if the operation should continue; false otherwise. + + + + The minimum timespan between events. + + The minimum period of time between events. + + The default interval is three seconds. + + + + FastZip provides facilities for creating and extracting zip files. + + + + + Defines the desired handling when overwriting files during extraction. + + + + + Prompt the user to confirm overwriting + + + + + Never overwrite files. + + + + + Always overwrite files. + + + + + Initialise a default instance of . + + + + + Initialise a new instance of using the specified + + The time setting to use when creating or extracting Zip entries. + Using TimeSetting.LastAccessTime[Utc] when + creating an archive will set the file time to the moment of reading. + + + + + Initialise a new instance of using the specified + + The time to set all values for created or extracted Zip Entries. + + + + Initialise a new instance of + + The events to use during operations. + + + + Get/set a value indicating whether empty directories should be created. + + + + + Get / set the password value. + + + + + Get / set the method of encrypting entries. + + + Only applies when is set. + Defaults to ZipCrypto for backwards compatibility purposes. + + + + + Get or set the active when creating Zip files. + + + + + + Get or set the active when creating Zip files. + + + + + Gets or sets the setting for Zip64 handling when writing. + + + The default value is dynamic which is not backwards compatible with old + programs and can cause problems with XP's built in compression which cant + read Zip64 archives. However it does avoid the situation were a large file + is added and cannot be completed correctly. + NOTE: Setting the size for entries before they are added is the best solution! + By default the EntryFactory used by FastZip will set the file size. + + + + + Get/set a value indicating whether file dates and times should + be restored when extracting files from an archive. + + The default value is false. + + + + Get/set a value indicating whether file attributes should + be restored during extract operations + + + + + Get/set the Compression Level that will be used + when creating the zip + + + + + Delegate called when confirming overwriting of files. + + + + + Create a zip file. + + The name of the zip file to create. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + + + + Create a zip file/archive. + + The name of the zip file to create. + The directory to obtain files and directories from. + True to recurse directories, false for no recursion. + The file filter to apply. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + The is closed after creation. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + true to leave open after the zip has been created, false to dispose it. + + + + Create a zip file. + + The name of the zip file to create. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + true to leave open after the zip has been created, false to dispose it. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + For performing the actual file system scan + true to leave open after the zip has been created, false to dispose it. + The is closed after creation. + + + + Extract the contents of a zip file. + + The zip file to extract from. + The directory to save extracted information in. + A filter to apply to files. + + + + Extract the contents of a zip file. + + The zip file to extract from. + The directory to save extracted information in. + The style of overwriting to apply. + A delegate to invoke when confirming overwriting. + A filter to apply to files. + A filter to apply to directories. + Flag indicating whether to restore the date and time for extracted files. + Allow parent directory traversal in file paths (e.g. ../file) + + + + Extract the contents of a zip file held in a stream. + + The seekable input stream containing the zip to extract from. + The directory to save extracted information in. + The style of overwriting to apply. + A delegate to invoke when confirming overwriting. + A filter to apply to files. + A filter to apply to directories. + Flag indicating whether to restore the date and time for extracted files. + Flag indicating whether the inputStream will be closed by this method. + Allow parent directory traversal in file paths (e.g. ../file) + + + + Defines factory methods for creating new values. + + + + + Create a for a file given its name + + The name of the file to create an entry for. + Returns a file entry based on the passed. + + + + Create a for a file given its name + + The name of the file to create an entry for. + If true get details from the file system if the file exists. + Returns a file entry based on the passed. + + + + Create a for a file given its actual name and optional override name + + The name of the file to create an entry for. + An alternative name to be used for the new entry. Null if not applicable. + If true get details from the file system if the file exists. + Returns a file entry based on the passed. + + + + Create a for a directory given its name + + The name of the directory to create an entry for. + Returns a directory entry based on the passed. + + + + Create a for a directory given its name + + The name of the directory to create an entry for. + If true get details from the file system for this directory if it exists. + Returns a directory entry based on the passed. + + + + Get/set the applicable. + + + + + Get the in use. + + + + + Get the value to use when is set to , + or if not specified, the value of when the class was the initialized + + + + + WindowsNameTransform transforms names to windows compatible ones. + + + + + The maximum windows path name permitted. + + This may not valid for all windows systems - CE?, etc but I cant find the equivalent in the CLR. + + + + In this case we need Windows' invalid path characters. + Path.GetInvalidPathChars() only returns a subset invalid on all platforms. + + + + + Initialises a new instance of + + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Initialise a default instance of + + + + + Gets or sets a value containing the target directory to prefix values with. + + + + + Allow parent directory traversal in file paths (e.g. ../file) + + + + + Gets or sets a value indicating whether paths on incoming values should be removed. + + + + + Transform a Zip directory name to a windows directory name. + + The directory name to transform. + The transformed name. + + + + Transform a Zip format file name to a windows style one. + + The file name to transform. + The transformed name. + + + + Test a name to see if it is a valid name for a windows filename as extracted from a Zip archive. + + The name to test. + Returns true if the name is a valid zip name; false otherwise. + The filename isnt a true windows path in some fundamental ways like no absolute paths, no rooted paths etc. + + + + Force a name to be valid by replacing invalid characters with a fixed value + + The name to make valid + The replacement character to use for any invalid characters. + Returns a valid name + + + + Gets or set the character to replace invalid characters during transformations. + + + + + Determines how entries are tested to see if they should use Zip64 extensions or not. + + + + + Zip64 will not be forced on entries during processing. + + An entry can have this overridden if required + + + + Zip64 should always be used. + + + + + #ZipLib will determine use based on entry values when added to archive. + + + + + The kind of compression used for an entry in an archive + + + + + A direct copy of the file contents is held in the archive + + + + + Common Zip compression method using a sliding dictionary + of up to 32KB and secondary compression from Huffman/Shannon-Fano trees + + + + + An extension to deflate with a 64KB window. Not supported by #Zip currently + + + + + BZip2 compression. Not supported by #Zip. + + + + + LZMA compression. Not supported by #Zip. + + + + + PPMd compression. Not supported by #Zip. + + + + + WinZip special for AES encryption, Now supported by #Zip. + + + + + Identifies the encryption algorithm used for an entry + + + + + No encryption has been used. + + + + + Encrypted using PKZIP 2.0 or 'classic' encryption. + + + + + DES encryption has been used. + + + + + RC2 encryption has been used for encryption. + + + + + Triple DES encryption with 168 bit keys has been used for this entry. + + + + + Triple DES with 112 bit keys has been used for this entry. + + + + + AES 128 has been used for encryption. + + + + + AES 192 has been used for encryption. + + + + + AES 256 has been used for encryption. + + + + + RC2 corrected has been used for encryption. + + + + + Blowfish has been used for encryption. + + + + + Twofish has been used for encryption. + + + + + RC4 has been used for encryption. + + + + + An unknown algorithm has been used for encryption. + + + + + Defines the contents of the general bit flags field for an archive entry. + + + + + Bit 0 if set indicates that the file is encrypted + + + + + Bits 1 and 2 - Two bits defining the compression method (only for Method 6 Imploding and 8,9 Deflating) + + + + + Bit 3 if set indicates a trailing data descriptor is appended to the entry data + + + + + Bit 4 is reserved for use with method 8 for enhanced deflation + + + + + Bit 5 if set indicates the file contains Pkzip compressed patched data. + Requires version 2.7 or greater. + + + + + Bit 6 if set indicates strong encryption has been used for this entry. + + + + + Bit 7 is currently unused + + + + + Bit 8 is currently unused + + + + + Bit 9 is currently unused + + + + + Bit 10 is currently unused + + + + + Bit 11 if set indicates the filename and + comment fields for this file must be encoded using UTF-8. + + + + + Bit 12 is documented as being reserved by PKware for enhanced compression. + + + + + Bit 13 if set indicates that values in the local header are masked to hide + their actual values, and the central directory is encrypted. + + + Used when encrypting the central directory contents. + + + + + Bit 14 is documented as being reserved for use by PKware + + + + + Bit 15 is documented as being reserved for use by PKware + + + + + This class contains constants used for Zip format files + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See . + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See ZipInputStream.CanDecompressEntry. + + + + + The minimum version required to support strong encryption + + + + + The minimum version required to support strong encryption + + + + + Version indicating AES encryption + + + + + The version required for Zip64 extensions (4.5 or higher) + + + + + The version required for BZip2 compression (4.6 or higher) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of Zip64 data descriptor + + + + + Size of data descriptor + + + + + Size of data descriptor + + + + + Size of central header entry (excluding variable fields) + + + + + Size of central header entry + + + + + Size of end of central record (excluding variable fields) + + + + + Size of end of central record (excluding variable fields) + + + + + Size of 'classic' cryptographic header stored before any entry data + + + + + Size of cryptographic header stored before entry data + + + + + The size of the Zip64 central directory locator. + + + + + Signature for local entry header + + + + + Signature for local entry header + + + + + Signature for spanning entry + + + + + Signature for spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for central header + + + + + Signature for central header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central directory locator + + + + + Signature for archive extra data signature (were headers are encrypted). + + + + + Central header digital signature + + + + + Central header digital signature + + + + + End of central directory record signature + + + + + End of central directory record signature + + + + + Default encoding used for string conversion. 0 gives the default system OEM code page. + Using the default code page isnt the full solution necessarily + there are many variable factors, codepage 850 is often a good choice for + European users, however be careful about compatability. + + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + + The method of encrypting entries when creating zip archives. + + + + + No encryption will be used. + + + + + Encrypt entries with ZipCrypto. + + + + + Encrypt entries with AES 128. + + + + + Encrypt entries with AES 256. + + + + + Defines known values for the property. + + + + + Host system = MSDOS + + + + + Host system = Amiga + + + + + Host system = Open VMS + + + + + Host system = Unix + + + + + Host system = VMCms + + + + + Host system = Atari ST + + + + + Host system = OS2 + + + + + Host system = Macintosh + + + + + Host system = ZSystem + + + + + Host system = Cpm + + + + + Host system = Windows NT + + + + + Host system = MVS + + + + + Host system = VSE + + + + + Host system = Acorn RISC + + + + + Host system = VFAT + + + + + Host system = Alternate MVS + + + + + Host system = BEOS + + + + + Host system = Tandem + + + + + Host system = OS400 + + + + + Host system = OSX + + + + + Host system = WinZIP AES + + + + + This class represents an entry in a zip archive. This can be a file + or a directory + ZipFile and ZipInputStream will give you instances of this class as + information about the members in an archive. ZipOutputStream + uses an instance of this class when creating an entry in a Zip file. +
+
Author of the original java version : Jochen Hoenicke +
+
+ + + Creates a zip entry with the given name. + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with relative names only. + There are with no device names and path elements are separated by '/' characters. + + + The name passed is null + + + + + Creates a zip entry with the given name and version required to extract + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with no device names and + path elements separated by '/' characters. This is not enforced see CleanName + on how to ensure names are valid if this is desired. + + + The minimum 'feature version' required this entry + + + The name passed is null + + + + + Initializes an entry with the given name and made by information + + Name for this entry + Version and HostSystem Information + Minimum required zip feature version required to extract this entry + Compression method for this entry. + + The name passed is null + + + versionRequiredToExtract should be 0 (auto-calculate) or > 10 + + + This constructor is used by the ZipFile class when reading from the central header + It is not generally useful, use the constructor specifying the name only. + + + + + Creates a deep copy of the given zip entry. + + + The entry to copy. + + + + + Get a value indicating whether the entry has a CRC value available. + + + + + Get/Set flag indicating if entry is encrypted. + A simple helper routine to aid interpretation of flags + + This is an assistant that interprets the flags property. + + +
+ This is an assistant that interprets the flags property. + + + + Value used during password checking for PKZIP 2.0 / 'classic' encryption. + + + + + Get/Set general purpose bit flag for entry + + + General purpose bit flag
+
+ Bit 0: If set, indicates the file is encrypted
+ Bit 1-2 Only used for compression type 6 Imploding, and 8, 9 deflating
+ Imploding:
+ Bit 1 if set indicates an 8K sliding dictionary was used. If clear a 4k dictionary was used
+ Bit 2 if set indicates 3 Shannon-Fanno trees were used to encode the sliding dictionary, 2 otherwise
+
+ Deflating:
+ Bit 2 Bit 1
+ 0 0 Normal compression was used
+ 0 1 Maximum compression was used
+ 1 0 Fast compression was used
+ 1 1 Super fast compression was used
+
+ Bit 3: If set, the fields crc-32, compressed size + and uncompressed size are were not able to be written during zip file creation + The correct values are held in a data descriptor immediately following the compressed data.
+ Bit 4: Reserved for use by PKZIP for enhanced deflating
+ Bit 5: If set indicates the file contains compressed patch data
+ Bit 6: If set indicates strong encryption was used.
+ Bit 7-10: Unused or reserved
+ Bit 11: If set the name and comments for this entry are in unicode.
+ Bit 12-15: Unused or reserved
+
+ + +
+ + + Get/Set index of this entry in Zip file + + This is only valid when the entry is part of a + + + + Get/set offset for use in central header + + + + + Get/Set external file attributes as an integer. + The values of this are operating system dependent see + HostSystem for details + + + + + Get the version made by for this entry or zero if unknown. + The value / 10 indicates the major version number, and + the value mod 10 is the minor version number + + + + + Get a value indicating this entry is for a DOS/Windows system. + + + + + Test the external attributes for this to + see if the external attributes are Dos based (including WINNT and variants) + and match the values + + The attributes to test. + Returns true if the external attributes are known to be DOS/Windows + based and have the same attributes set as the value passed. + + + + Gets the compatibility information for the external file attribute + If the external file attributes are compatible with MS-DOS and can be read + by PKZIP for DOS version 2.04g then this value will be zero. Otherwise the value + will be non-zero and identify the host system on which the attributes are compatible. + + + + The values for this as defined in the Zip File format and by others are shown below. The values are somewhat + misleading in some cases as they are not all used as shown. You should consult the relevant documentation + to obtain up to date and correct information. The modified appnote by the infozip group is + particularly helpful as it documents a lot of peculiarities. The document is however a little dated. + + 0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems) + 1 - Amiga + 2 - OpenVMS + 3 - Unix + 4 - VM/CMS + 5 - Atari ST + 6 - OS/2 HPFS + 7 - Macintosh + 8 - Z-System + 9 - CP/M + 10 - Windows NTFS + 11 - MVS (OS/390 - Z/OS) + 12 - VSE + 13 - Acorn Risc + 14 - VFAT + 15 - Alternate MVS + 16 - BeOS + 17 - Tandem + 18 - OS/400 + 19 - OS/X (Darwin) + 99 - WinZip AES + remainder - unused + + + + + + Get minimum Zip feature version required to extract this entry + + + Minimum features are defined as:
+ 1.0 - Default value
+ 1.1 - File is a volume label
+ 2.0 - File is a folder/directory
+ 2.0 - File is compressed using Deflate compression
+ 2.0 - File is encrypted using traditional encryption
+ 2.1 - File is compressed using Deflate64
+ 2.5 - File is compressed using PKWARE DCL Implode
+ 2.7 - File is a patch data set
+ 4.5 - File uses Zip64 format extensions
+ 4.6 - File is compressed using BZIP2 compression
+ 5.0 - File is encrypted using DES
+ 5.0 - File is encrypted using 3DES
+ 5.0 - File is encrypted using original RC2 encryption
+ 5.0 - File is encrypted using RC4 encryption
+ 5.1 - File is encrypted using AES encryption
+ 5.1 - File is encrypted using corrected RC2 encryption
+ 5.1 - File is encrypted using corrected RC2-64 encryption
+ 6.1 - File is encrypted using non-OAEP key wrapping
+ 6.2 - Central directory encryption (not confirmed yet)
+ 6.3 - File is compressed using LZMA
+ 6.3 - File is compressed using PPMD+
+ 6.3 - File is encrypted using Blowfish
+ 6.3 - File is encrypted using Twofish
+
+ +
+ + + Get a value indicating whether this entry can be decompressed by the library. + + This is based on the and + whether the compression method is supported. + + + + Force this entry to be recorded using Zip64 extensions. + + + + + Get a value indicating whether Zip64 extensions were forced. + + A value of true if Zip64 extensions have been forced on; false if not. + + + + Gets a value indicating if the entry requires Zip64 extensions + to store the full entry values. + + A value of true if a local header requires Zip64 extensions; false if not. + + + + Get a value indicating whether the central directory entry requires Zip64 extensions to be stored. + + + + + Get/Set DosTime value. + + + The MS-DOS date format can only represent dates between 1/1/1980 and 12/31/2107. + + + + + Gets/Sets the time of last modification of the entry. + + + The property is updated to match this as far as possible. + + + + + Returns the entry name. + + + The unix naming convention is followed. + Path components in the entry should always separated by forward slashes ('/'). + Dos device names like C: should also be removed. + See the class, or + + + + + Gets/Sets the size of the uncompressed data. + + + The size or -1 if unknown. + + Setting the size before adding an entry to an archive can help + avoid compatibility problems with some archivers which don't understand Zip64 extensions. + + + + Gets/Sets the size of the compressed data. + + + The compressed entry size or -1 if unknown. + + + + + Gets/Sets the crc of the uncompressed data. + + + Crc is not in the range 0..0xffffffffL + + + The crc value or -1 if unknown. + + + + + Gets/Sets the compression method. + + + The compression method for this entry + + + + + Gets the compression method for outputting to the local or central header. + Returns same value as CompressionMethod except when AES encrypting, which + places 99 in the method and places the real method in the extra data. + + + + + Gets/Sets the extra data. + + + Extra data is longer than 64KB (0xffff) bytes. + + + Extra data or null if not set. + + + + + For AES encrypted files returns or sets the number of bits of encryption (128, 192 or 256). + When setting, only 0 (off), 128 or 256 is supported. + + + + + AES Encryption strength for storage in extra data in entry header. + 1 is 128 bit, 2 is 192 bit, 3 is 256 bit. + + + + + Returns the length of the salt, in bytes + + Key size -> Salt length: 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes. + + + + Number of extra bytes required to hold the AES Header fields (Salt, Pwd verify, AuthCode) + + File format: + Bytes | Content + ---------+--------------------------- + Variable | Salt value + 2 | Password verification value + Variable | Encrypted file data + 10 | Authentication code + + + + Number of extra bytes required to hold the encryption header fields. + + + + + Process extra data fields updating the entry based on the contents. + + True if the extra data fields should be handled + for a local header, rather than for a central header. + + + + + Gets/Sets the entry comment. + + + If comment is longer than 0xffff. + + + The comment or null if not set. + + + A comment is only available for entries when read via the class. + The class doesn't have the comment data available. + + + + + Gets a value indicating if the entry is a directory. + however. + + + A directory is determined by an entry name with a trailing slash '/'. + The external file attributes can also indicate an entry is for a directory. + Currently only dos/windows attributes are tested in this manner. + The trailing slash convention should always be followed. + + + + + Get a value of true if the entry appears to be a file; false otherwise + + + This only takes account of DOS/Windows attributes. Other operating systems are ignored. + For linux and others the result may be incorrect. + + + + + Test entry to see if data can be extracted. + + Returns true if data can be extracted for this entry; false otherwise. + + + + Creates a copy of this zip entry. + + An that is a copy of the current instance. + + + + Gets a string representation of this ZipEntry. + + A readable textual representation of this + + + + Test a compression method to see if this library + supports extracting data compressed with that method + + The compression method to test. + Returns true if the compression method is supported; false otherwise + + + + Cleans a name making it conform to Zip file conventions. + Devices names ('c:\') and UNC share names ('\\server\share') are removed + and forward slashes ('\') are converted to back slashes ('/'). + Names are made relative by trimming leading slashes which is compatible + with the ZIP naming convention. + + The name to clean + The 'cleaned' name. + + The Zip name transform class is more flexible. + + + + + General ZipEntry helper extensions + + + + + Efficiently check if a flag is set without enum un-/boxing + + + + Returns whether the flag was set + + + + Efficiently set a flag without enum un-/boxing + + + + Whether the passed flag should be set (1) or cleared (0) + + + + Basic implementation of + + + + + Defines the possible values to be used for the . + + + + + Use the recorded LastWriteTime value for the file. + + + + + Use the recorded LastWriteTimeUtc value for the file + + + + + Use the recorded CreateTime value for the file. + + + + + Use the recorded CreateTimeUtc value for the file. + + + + + Use the recorded LastAccessTime value for the file. + + + + + Use the recorded LastAccessTimeUtc value for the file. + + + + + Use a fixed value. + + The actual value used can be + specified via the constructor or + using the with the setting set + to which will use the when this class was constructed. + The property can also be used to set this value. + + + + Initialise a new instance of the class. + + A default , and the LastWriteTime for files is used. + + + + Initialise a new instance of using the specified + + The time setting to use when creating Zip entries. + + + + Initialise a new instance of using the specified + + The time to set all values to. + + + + Get / set the to be used when creating new values. + + + Setting this property to null will cause a default name transform to be used. + + + + + Get / set the in use. + + + + + Get / set the value to use when is set to + + + + + A bitmask defining the attributes to be retrieved from the actual file. + + The default is to get all possible attributes from the actual file. + + + + A bitmask defining which attributes are to be set on. + + By default no attributes are set on. + + + + Get set a value indicating whether unidoce text should be set on. + + + + + Make a new for a file. + + The name of the file to create a new entry for. + Returns a new based on the . + + + + Make a new for a file. + + The name of the file to create a new entry for. + If true entry detail is retrieved from the file system if the file exists. + Returns a new based on the . + + + + Make a new from a name. + + The name of the file to create a new entry for. + An alternative name to be used for the new entry. Null if not applicable. + If true entry detail is retrieved from the file system if the file exists. + Returns a new based on the . + + + + Make a new for a directory. + + The raw untransformed name for the new directory + Returns a new representing a directory. + + + + Make a new for a directory. + + The raw untransformed name for the new directory + If true entry detail is retrieved from the file system if the file exists. + Returns a new representing a directory. + + + + ZipException represents exceptions specific to Zip classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the ZipException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + ExtraData tagged value interface. + + + + + Get the ID for this tagged data value. + + + + + Set the contents of this instance from the data passed. + + The data to extract contents from. + The offset to begin extracting data from. + The number of bytes to extract. + + + + Get the data representing this instance. + + Returns the data for this instance. + + + + A raw binary tagged value + + + + + Initialise a new instance. + + The tag ID. + + + + Get the ID for this tagged data value. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Get /set the binary data representing this instance. + + The raw binary data representing this instance. + + + + The tag ID for this instance. + + + + + Class representing extended unix date time values. + + + + + Flags indicate which values are included in this instance. + + + + + The modification time is included + + + + + The access time is included + + + + + The create time is included. + + + + + Get the ID + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a value to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + The standard Unix time is a signed integer data type, directly encoding the Unix time number, + which is the number of seconds since 1970-01-01. + Being 32 bits means the values here cover a range of about 136 years. + The minimum representable time is 1901-12-13 20:45:52, + and the maximum representable time is 2038-01-19 03:14:07. + + + + + Get /set the Modification Time + + + + + + + Get / set the Access Time + + + + + + + Get / Set the Create Time + + + + + + + Get/set the values to include. + + + + + Class handling NT date time values. + + + + + Get the ID for this tagged data value. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a valuie to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + + NTFS filetimes are 64-bit unsigned integers, stored in Intel + (least significant byte first) byte order. They determine the + number of 1.0E-07 seconds (1/10th microseconds!) past WinNT "epoch", + which is "01-Jan-1601 00:00:00 UTC". 28 May 60056 is the upper limit + + + + + Get/set the last modification time. + + + + + Get /set the create time + + + + + Get /set the last access time. + + + + + A factory that creates tagged data instances. + + + + + Get data for a specific tag value. + + The tag ID to find. + The data to search. + The offset to begin extracting data from. + The number of bytes to extract. + The located value found, or null if not found. + + + + + A class to handle the extra data field for Zip entries + + + Extra data contains 0 or more values each prefixed by a header tag and length. + They contain zero or more bytes of actual data. + The data is held internally using a copy on write strategy. This is more efficient but + means that for extra data created by passing in data can have the values modified by the caller + in some circumstances. + + + + + Initialise a default instance. + + + + + Initialise with known extra data. + + The extra data. + + + + Get the raw extra data value + + Returns the raw byte[] extra data this instance represents. + + + + Clear the stored data. + + + + + Gets the current extra data length. + + + + + Get a read-only for the associated tag. + + The tag to locate data for. + Returns a containing tag data or null if no tag was found. + + + + Get the tagged data for a tag. + + The tag to search for. + Returns a tagged value or null if none found. + + + + Get the length of the last value found by + + This is only valid if has previously returned true. + + + + Get the index for the current read value. + + This is only valid if has previously returned true. + Initially the result will be the index of the first byte of actual data. The value is updated after calls to + , and . + + + + Get the number of bytes remaining to be read for the current value; + + + + + Find an extra data value + + The identifier for the value to find. + Returns true if the value was found; false otherwise. + + + + Add a new entry to extra data. + + The value to add. + + + + Add a new entry to extra data + + The ID for this entry. + The data to add. + If the ID already exists its contents are replaced. + + + + Start adding a new entry. + + Add data using , , , or . + The new entry is completed and actually added by calling + + + + + Add entry data added since using the ID passed. + + The identifier to use for this entry. + + + + Add a byte of data to the pending new entry. + + The byte to add. + + + + + Add data to a pending new entry. + + The data to add. + + + + + Add a short value in little endian order to the pending new entry. + + The data to add. + + + + + Add an integer value in little endian order to the pending new entry. + + The data to add. + + + + + Add a long value in little endian order to the pending new entry. + + The data to add. + + + + + Delete an extra data field. + + The identifier of the field to delete. + Returns true if the field was found and deleted. + + + + Read a long in little endian form from the last found data value + + Returns the long value read. + + + + Read an integer in little endian form from the last found data value. + + Returns the integer read. + + + + Read a short value in little endian form from the last found data value. + + Returns the short value read. + + + + Read a byte from an extra data + + The byte value read or -1 if the end of data has been reached. + + + + Skip data during reading. + + The number of bytes to skip. + + + + Internal form of that reads data at any location. + + Returns the short value read. + + + + Dispose of this instance. + + + + + Arguments used with KeysRequiredEvent + + + + + Initialise a new instance of + + The name of the file for which keys are required. + + + + Initialise a new instance of + + The name of the file for which keys are required. + The current key value. + + + + Gets the name of the file for which keys are required. + + + + + Gets or sets the key value + + + + + The strategy to apply to testing. + + + + + Find the first error only. + + + + + Find all possible errors. + + + + + The operation in progress reported by a during testing. + + TestArchive + + + + Setting up testing. + + + + + Testing an individual entries header + + + + + Testing an individual entries data + + + + + Testing an individual entry has completed. + + + + + Running miscellaneous tests + + + + + Testing is complete + + + + + Status returned by during testing. + + TestArchive + + + + Initialise a new instance of + + The this status applies to. + + + + Get the current in progress. + + + + + Get the this status is applicable to. + + + + + Get the current/last entry tested. + + + + + Get the number of errors detected so far. + + + + + Get the number of bytes tested so far for the current entry. + + + + + Get a value indicating whether the last entry test was valid. + + + + + Delegate invoked during testing if supplied indicating current progress and status. + + If the message is non-null an error has occured. If the message is null + the operation as found in status has started. + + + + The possible ways of applying updates to an archive. + + + + + Perform all updates on temporary files ensuring that the original file is saved. + + + + + Update the archive directly, which is faster but less safe. + + + + + This class represents a Zip archive. You can ask for the contained + entries, or get an input stream for a file entry. The entry is + automatically decompressed. + + You can also update the archive adding or deleting entries. + + This class is thread safe for input: You can open input streams for arbitrary + entries in different threads. +
+
Author of the original java version : Jochen Hoenicke +
+ + + using System; + using System.Text; + using System.Collections; + using System.IO; + + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + static public void Main(string[] args) + { + using (ZipFile zFile = new ZipFile(args[0])) { + Console.WriteLine("Listing of : " + zFile.Name); + Console.WriteLine(""); + Console.WriteLine("Raw Size Size Date Time Name"); + Console.WriteLine("-------- -------- -------- ------ ---------"); + foreach (ZipEntry e in zFile) { + if ( e.IsFile ) { + DateTime d = e.DateTime; + Console.WriteLine("{0, -10}{1, -10}{2} {3} {4}", e.Size, e.CompressedSize, + d.ToString("dd-MM-yy"), d.ToString("HH:mm"), + e.Name); + } + } + } + } + } + + +
+ + + Delegate for handling keys/password setting during compression/decompression. + + + + + Event handler for handling encryption keys. + + + + + Handles getting of encryption keys when required. + + The file for which encryption keys are required. + + + + Get/set the encryption key value. + + + + + Password to be used for encrypting/decrypting files. + + Set to null if no password is required. + + + + Get a value indicating whether encryption keys are currently available. + + + + + Opens a Zip file with the given name for reading. + + The name of the file to open. + The argument supplied is null. + + An i/o error occurs + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + The supplied argument is null. + + An i/o error occurs. + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + true to leave the file open when the ZipFile is disposed, false to dispose of it + The supplied argument is null. + + An i/o error occurs. + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + + An i/o error occurs + + + The stream doesn't contain a valid zip archive.
+
+ + The stream doesnt support seeking. + + + The stream argument is null. + +
+ + + Opens a Zip file reading the given . + + The to read archive data from. + true to leave the stream open when the ZipFile is disposed, false to dispose of it + + An i/o error occurs + + + The stream doesn't contain a valid zip archive.
+
+ + The stream doesnt support seeking. + + + The stream argument is null. + +
+ + + Initialises a default instance with no entries and no file storage. + + + + + Finalize this instance. + + + + + Closes the ZipFile. If the stream is owned then this also closes the underlying input stream. + Once closed, no further instance methods should be called. + + + An i/o error occurs. + + + + + Create a new whose data will be stored in a file. + + The name of the archive to create. + Returns the newly created + is null + + + + Create a new whose data will be stored on a stream. + + The stream providing data storage. + Returns the newly created + is null + doesnt support writing. + + + + Get/set a flag indicating if the underlying stream is owned by the ZipFile instance. + If the flag is true then the stream will be closed when Close is called. + + + The default value is true in all cases. + + + + + Get a value indicating whether + this archive is embedded in another file or not. + + + + + Get a value indicating that this archive is a new one. + + + + + Gets the comment for the zip file. + + + + + Gets the name of this zip file. + + + + + Gets the number of entries in this zip file. + + + The Zip file has been closed. + + + + + Get the number of entries contained in this . + + + + + Indexer property for ZipEntries + + + + + Gets an enumerator for the Zip entries in this Zip file. + + Returns an for this archive. + + The Zip file has been closed. + + + + + Return the index of the entry with a matching name + + Entry name to find + If true the comparison is case insensitive + The index position of the matching entry or -1 if not found + + The Zip file has been closed. + + + + + Searches for a zip entry in this archive with the given name. + String comparisons are case insensitive + + + The name to find. May contain directory components separated by slashes ('/'). + + + A clone of the zip entry, or null if no entry with that name exists. + + + The Zip file has been closed. + + + + + Gets an input stream for reading the given zip entry data in an uncompressed form. + Normally the should be an entry returned by GetEntry(). + + The to obtain a data for + An input containing data for this + + The ZipFile has already been closed + + + The compression method for the entry is unknown + + + The entry is not found in the ZipFile + + + + + Creates an input stream reading a zip entry + + The index of the entry to obtain an input stream for. + + An input containing data for this + + + The ZipFile has already been closed + + + The compression method for the entry is unknown + + + The entry is not found in the ZipFile + + + + + Test an archive for integrity/validity + + Perform low level data Crc check + true if all tests pass, false otherwise + Testing will terminate on the first error found. + + + + Test an archive for integrity/validity + + Perform low level data Crc check + The to apply. + The handler to call during testing. + true if all tests pass, false otherwise + The object has already been closed. + + + + Test a local header against that provided from the central directory + + + The entry to test against + + The type of tests to carry out. + The offset of the entries data in the file + + + + The kind of update to apply. + + + + + Get / set the to apply to names when updating. + + + + + Get/set the used to generate values + during updates. + + + + + Get /set the buffer size to be used when updating this zip file. + + + + + Get a value indicating an update has been started. + + + + + Get / set a value indicating how Zip64 Extension usage is determined when adding entries. + + + + + Begin updating this archive. + + The archive storage for use during the update. + The data source to utilise during updating. + ZipFile has been closed. + One of the arguments provided is null + ZipFile has been closed. + + + + Begin updating to this archive. + + The storage to use during the update. + + + + Begin updating this archive. + + + + + + + + Commit current updates, updating this archive. + + + + ZipFile has been closed. + + + + Abort updating leaving the archive unchanged. + + + + + + + Set the file comment to be recorded when the current update is commited. + + The comment to record. + ZipFile has been closed. + + + + Add a new entry to the archive. + + The name of the file to add. + The compression method to use. + Ensure Unicode text is used for name and comment for this entry. + Argument supplied is null. + ZipFile has been closed. + Compression method is not supported for creating entries. + + + + Add a new entry to the archive. + + The name of the file to add. + The compression method to use. + ZipFile has been closed. + Compression method is not supported for creating entries. + + + + Add a file to the archive. + + The name of the file to add. + Argument supplied is null. + + + + Add a file to the archive. + + The name of the file to add. + The name to use for the on the Zip file created. + Argument supplied is null. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + The compression method to use. + Compression method is not supported for creating entries. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + The compression method to use. + Ensure Unicode text is used for name and comments for this entry. + Compression method is not supported for creating entries. + + + + Add a that contains no data. + + The entry to add. + This can be used to add directories, volume labels, or empty file entries. + + + + Add a with data. + + The source of the data for this entry. + The entry to add. + This can be used to add file entries with a custom data source. + + The encryption method specified in is unsupported. + + Compression method is not supported for creating entries. + + + + Add a directory entry to the archive. + + The directory to add. + + + + Check if the specified compression method is supported for adding a new entry. + + The compression method for the new entry. + + + + Delete an entry by name + + The filename to delete + True if the entry was found and deleted; false otherwise. + + + + Delete a from the archive. + + The entry to delete. + + + + Write an unsigned short in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Write an unsigned int in little endian byte order. + + + + + Write a long in little endian byte order. + + + + + Get a raw memory buffer. + + Returns a raw memory buffer. + + + + Get the size of the source descriptor for a . + + The update to get the size for. + Whether to include the signature size + The descriptor size, zero if there isn't one. + + + + Get an output stream for the specified + + The entry to get an output stream for. + The output stream obtained for the entry. + + + + Class used to sort updates. + + + + + Compares two objects and returns a value indicating whether one is + less than, equal to or greater than the other. + + First object to compare + Second object to compare. + Compare result. + + + + Represents a pending update to a Zip file. + + + + + Copy an existing entry. + + The existing entry to copy. + + + + Get the for this update. + + This is the source or original entry. + + + + Get the that will be written to the updated/new file. + + + + + Get the command for this update. + + + + + Get the filename if any for this update. Null if none exists. + + + + + Get/set the location of the size patch for this update. + + + + + Get /set the location of the crc patch for this update. + + + + + Get/set the size calculated by offset. + Specifically, the difference between this and next entry's starting offset. + + + + + Releases the unmanaged resources used by the this instance and optionally releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Read an unsigned short in little endian byte order. + + Returns the value read. + + The stream ends prematurely + + + + + Read a uint in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Search for and read the central directory of a zip file filling the entries array. + + + An i/o error occurs. + + + The central directory is malformed or cannot be found + + + + + Locate the data for a given entry. + + + The start offset of the data. + + + The stream ends prematurely + + + The local header signature is invalid, the entry and central header file name lengths are different + or the local and entry compression methods dont match + + + + + Represents a string from a which is stored as an array of bytes. + + + + + Initialise a with a string. + + The textual string form. + + + + Initialise a using a string in its binary 'raw' form. + + + + + + Get a value indicating the original source of data for this instance. + True if the source was a string; false if the source was binary data. + + + + + Get the length of the comment when represented as raw bytes. + + + + + Get the comment in its 'raw' form as plain bytes. + + + + + Reset the comment to its initial state. + + + + + Implicit conversion of comment to a string. + + The to convert to a string. + The textual equivalent for the input value. + + + + An enumerator for Zip entries + + + + + An is a stream that you can write uncompressed data + to and flush, but cannot read, seek or do anything else to. + + + + + Gets a value indicating whether the current stream supports reading. + + + + + Write any buffered data to underlying storage. + + + + + Gets a value indicating whether the current stream supports writing. + + + + + Gets a value indicating whether the current stream supports seeking. + + + + + Get the length in bytes of the stream. + + + + + Gets or sets the position within the current stream. + + + + + Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. + + The sum of offset and count is larger than the buffer length. + Methods were called after the stream was closed. + The stream does not support reading. + buffer is null. + An I/O error occurs. + offset or count is negative. + + + + Sets the position within the current stream. + + A byte offset relative to the origin parameter. + A value of type indicating the reference point used to obtain the new position. + + The new position within the current stream. + + An I/O error occurs. + The stream does not support seeking, such as if the stream is constructed from a pipe or console output. + Methods were called after the stream was closed. + + + + Sets the length of the current stream. + + The desired length of the current stream in bytes. + The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. + An I/O error occurs. + Methods were called after the stream was closed. + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + An I/O error occurs. + The stream does not support writing. + Methods were called after the stream was closed. + buffer is null. + The sum of offset and count is greater than the buffer length. + offset or count is negative. + + + + A is an + whose data is only a part or subsection of a file. + + + + + Initialise a new instance of the class. + + The containing the underlying stream to use for IO. + The start of the partial data. + The length of the partial data. + + + + Read a byte from this stream. + + Returns the byte read or -1 on end of stream. + + + + Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. + + The sum of offset and count is larger than the buffer length. + Methods were called after the stream was closed. + The stream does not support reading. + buffer is null. + An I/O error occurs. + offset or count is negative. + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + An I/O error occurs. + The stream does not support writing. + Methods were called after the stream was closed. + buffer is null. + The sum of offset and count is greater than the buffer length. + offset or count is negative. + + + + When overridden in a derived class, sets the length of the current stream. + + The desired length of the current stream in bytes. + The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. + An I/O error occurs. + Methods were called after the stream was closed. + + + + When overridden in a derived class, sets the position within the current stream. + + A byte offset relative to the origin parameter. + A value of type indicating the reference point used to obtain the new position. + + The new position within the current stream. + + An I/O error occurs. + The stream does not support seeking, such as if the stream is constructed from a pipe or console output. + Methods were called after the stream was closed. + + + + Clears all buffers for this stream and causes any buffered data to be written to the underlying device. + + An I/O error occurs. + + + + Gets or sets the position within the current stream. + + + The current position within the stream. + An I/O error occurs. + The stream does not support seeking. + Methods were called after the stream was closed. + + + + Gets the length in bytes of the stream. + + + A long value representing the length of the stream in bytes. + A class derived from Stream does not support seeking. + Methods were called after the stream was closed. + + + + Gets a value indicating whether the current stream supports writing. + + false + true if the stream supports writing; otherwise, false. + + + + Gets a value indicating whether the current stream supports seeking. + + true + true if the stream supports seeking; otherwise, false. + + + + Gets a value indicating whether the current stream supports reading. + + true. + true if the stream supports reading; otherwise, false. + + + + Gets a value that determines whether the current stream can time out. + + + A value that determines whether the current stream can time out. + + + + Provides a static way to obtain a source of data for an entry. + + + + + Get a source of data by creating a new stream. + + Returns a to use for compression input. + Ideally a new stream is created and opened to achieve this, to avoid locking problems. + + + + Represents a source of data that can dynamically provide + multiple data sources based on the parameters passed. + + + + + Get a data source. + + The to get a source for. + The name for data if known. + Returns a to use for compression input. + Ideally a new stream is created and opened to achieve this, to avoid locking problems. + + + + Default implementation of a for use with files stored on disk. + + + + + Initialise a new instance of + + The name of the file to obtain data from. + + + + Get a providing data. + + Returns a providing data. + + + + Default implementation of for files stored on disk. + + + + + Get a providing data for an entry. + + The entry to provide data for. + The file name for data if known. + Returns a stream providing data; or null if not available + + + + Defines facilities for data storage when updating Zip Archives. + + + + + Get the to apply during updates. + + + + + Get an empty that can be used for temporary output. + + Returns a temporary output + + + + + Convert a temporary output stream to a final stream. + + The resulting final + + + + + Make a temporary copy of the original stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The current stream. + Returns a stream suitable for direct updating. + This may be the current stream passed. + + + + Dispose of this instance. + + + + + An abstract suitable for extension by inheritance. + + + + + Initializes a new instance of the class. + + The update mode. + + + + Gets a temporary output + + Returns the temporary output stream. + + + + + Converts the temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + + Make a temporary copy of a . + + The to make a copy of. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The to open for direct update. + Returns a stream suitable for direct updating. + + + + Disposes this instance. + + + + + Gets the update mode applicable. + + The update mode. + + + + An implementation suitable for hard disks. + + + + + Initializes a new instance of the class. + + The file. + The update mode. + + + + Initializes a new instance of the class. + + The file. + + + + Gets a temporary output for performing updates on. + + Returns the temporary output stream. + + + + Converts a temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + Make a temporary copy of a stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The current stream. + Returns a stream suitable for direct updating. + If the is not null this is used as is. + + + + Disposes this instance. + + + + + An implementation suitable for in memory streams. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The to use + This constructor is for testing as memory streams dont really require safe mode. + + + + Get the stream returned by if this was in fact called. + + + + + Gets the temporary output + + Returns the temporary output stream. + + + + Converts the temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + Make a temporary copy of the original stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The original source stream + Returns a stream suitable for direct updating. + If the passed is not null this is used; + otherwise a new is returned. + + + + Disposes this instance. + + + + + Holds data pertinent to a data descriptor. + + + + + Get /set the compressed size of data. + + + + + Get / set the uncompressed size of data + + + + + Get /set the crc value. + + + + + This class assists with writing/reading from Zip files. + + + + + Initialise an instance of this class. + + The name of the file to open. + + + + Initialise a new instance of . + + The stream to use. + + + + Get / set a value indicating whether the underlying stream is owned or not. + + If the stream is owned it is closed when this instance is closed. + + + + Close the stream. + + + The underlying stream is closed only if is true. + + + + + Locates a block with the desired . + + The signature to find. + Location, marking the end of block. + Minimum size of the block. + The maximum variable data. + Returns the offset of the first byte after the signature; -1 if not found + + + + Write Zip64 end of central directory records (File header and locator). + + The number of entries in the central directory. + The size of entries in the central directory. + The offset of the central directory. + + + + Write the required records to end the central directory. + + The number of entries in the directory. + The size of the entries in the directory. + The start of the central directory. + The archive comment. (This can be null). + + + + Read an unsigned short in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read an int in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read a long in little endian byte order. + + The value read. + + + + Write an unsigned short in little endian byte order. + + The value to write. + + + + Write a ushort in little endian byte order. + + The value to write. + + + + Write an int in little endian byte order. + + The value to write. + + + + Write a uint in little endian byte order. + + The value to write. + + + + Write a long in little endian byte order. + + The value to write. + + + + Write a ulong in little endian byte order. + + The value to write. + + + + Write a data descriptor. + + The entry to write a descriptor for. + Returns the number of descriptor bytes written. + + + + Read data descriptor at the end of compressed data. + + if set to true [zip64]. + The data to fill in. + Returns the number of bytes read in the descriptor. + + + + This is an InflaterInputStream that reads the files baseInputStream an zip archive + one after another. It has a special method to get the zip entry of + the next file. The zip entry contains information about the file name + size, compressed size, Crc, etc. + It includes support for Stored and Deflated entries. +
+
Author of the original java version : Jochen Hoenicke +
+ + This sample shows how to read a zip file + + using System; + using System.Text; + using System.IO; + + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + public static void Main(string[] args) + { + using ( ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) { + + ZipEntry theEntry; + const int size = 2048; + byte[] data = new byte[2048]; + + while ((theEntry = s.GetNextEntry()) != null) { + if ( entry.IsFile ) { + Console.Write("Show contents (y/n) ?"); + if (Console.ReadLine() == "y") { + while (true) { + size = s.Read(data, 0, data.Length); + if (size > 0) { + Console.Write(new ASCIIEncoding().GetString(data, 0, size)); + } else { + break; + } + } + } + } + } + } + } + } + + +
+ + + Delegate for reading bytes from a stream. + + + + + The current reader this instance. + + + + + Creates a new Zip input stream, for reading a zip archive. + + The underlying providing data. + + + + Creates a new Zip input stream, for reading a zip archive. + + The underlying providing data. + Size of the buffer. + + + + Optional password used for encryption when non-null + + A password for all encrypted entries in this + + + + Gets a value indicating if there is a current entry and it can be decompressed + + + The entry can only be decompressed if the library supports the zip features required to extract it. + See the ZipEntry Version property for more details. + + Since uses the local headers for extraction, entries with no compression combined with the + flag set, cannot be extracted as the end of the entry data cannot be deduced. + + + + + Is the compression method for the specified entry supported? + + + Uses entry.CompressionMethodForHeader so that entries of type WinZipAES will be rejected. + + the entry to check. + true if the compression method is supported, false if not. + + + + Advances to the next entry in the archive + + + The next entry in the archive or null if there are no more entries. + + + If the previous entry is still open CloseEntry is called. + + + Input stream is closed + + + Password is not set, password is invalid, compression method is invalid, + version required to extract is not supported + + + + + Read data descriptor at the end of compressed data. + + + + + Complete cleanup as the final part of closing. + + True if the crc value should be tested + + + + Closes the current zip entry and moves to the next one. + + + The stream is closed + + + The Zip stream ends early + + + + + Returns 1 if there is an entry available + Otherwise returns 0. + + + + + Returns the current size that can be read from the current entry if available + + Thrown if the entry size is not known. + Thrown if no entry is currently available. + + + + Reads a byte from the current zip entry. + + + The byte or -1 if end of stream is reached. + + + + + Handle attempts to read by throwing an . + + The destination array to store data in. + The offset at which data read should be stored. + The maximum number of bytes to read. + Returns the number of bytes actually read. + + + + Handle attempts to read from this entry by throwing an exception + + + + + Handle attempts to read from this entry by throwing an exception + + + + + Perform the initial read on an entry which may include + reading encryption headers and setting up inflation. + + The destination to fill with data read. + The offset to start reading at. + The maximum number of bytes to read. + The actual number of bytes read. + + + + Read a block of bytes from the stream. + + The destination for the bytes. + The index to start storing data. + The number of bytes to attempt to read. + Returns the number of bytes read. + Zero bytes read means end of stream. + + + + Reads a block of bytes from the current zip entry. + + + The number of bytes read (this may be less than the length requested, even before the end of stream), or 0 on end of stream. + + + An i/o error occurred. + + + The deflated stream is corrupted. + + + The stream is not open. + + + + + Closes the zip input stream + + + + + ZipNameTransform transforms names as per the Zip file naming convention. + + The use of absolute names is supported although its use is not valid + according to Zip naming conventions, and should not be used if maximum compatability is desired. + + + + Initialize a new instance of + + + + + Initialize a new instance of + + The string to trim from the front of paths if found. + + + + Static constructor. + + + + + Transform a windows directory name according to the Zip file naming conventions. + + The directory name to transform. + The transformed name. + + + + Transform a windows file name according to the Zip file naming conventions. + + The file name to transform. + The transformed name. + + + + Get/set the path prefix to be trimmed from paths if present. + + The prefix is trimmed before any conversion from + a windows path is done. + + + + Force a name to be valid by replacing invalid characters with a fixed value + + The name to force valid + The replacement character to use. + Returns a valid name + + + + Test a name to see if it is a valid name for a zip entry. + + The name to test. + If true checking is relaxed about windows file names and absolute paths. + Returns true if the name is a valid zip name; false otherwise. + Zip path names are actually in Unix format, and should only contain relative paths. + This means that any path stored should not contain a drive or + device letter, or a leading slash. All slashes should forward slashes '/'. + An empty name is valid for a file where the input comes from standard input. + A null name is not considered valid. + + + + + Test a name to see if it is a valid name for a zip entry. + + The name to test. + Returns true if the name is a valid zip name; false otherwise. + Zip path names are actually in unix format, + and should only contain relative paths if a path is present. + This means that the path stored should not contain a drive or + device letter, or a leading slash. All slashes should forward slashes '/'. + An empty name is valid where the input comes from standard input. + A null name is not considered valid. + + + + + An implementation of INameTransform that transforms entry paths as per the Zip file naming convention. + Strips path roots and puts directory separators in the correct format ('/') + + + + + Initialize a new instance of + + + + + Transform a windows directory name according to the Zip file naming conventions. + + The directory name to transform. + The transformed name. + + + + Transform a windows file name according to the Zip file naming conventions. + + The file name to transform. + The transformed name. + + + + This is a DeflaterOutputStream that writes the files into a zip + archive one after another. It has a special method to start a new + zip entry. The zip entries contains information about the file name + size, compressed size, CRC, etc. + + It includes support for Stored and Deflated entries. + This class is not thread safe. +
+
Author of the original java version : Jochen Hoenicke +
+ This sample shows how to create a zip file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + public static void Main(string[] args) + { + string[] filenames = Directory.GetFiles(args[0]); + byte[] buffer = new byte[4096]; + + using ( ZipOutputStream s = new ZipOutputStream(File.Create(args[1])) ) { + + s.SetLevel(9); // 0 - store only to 9 - means best compression + + foreach (string file in filenames) { + ZipEntry entry = new ZipEntry(file); + s.PutNextEntry(entry); + + using (FileStream fs = File.OpenRead(file)) { + StreamUtils.Copy(fs, s, buffer); + } + } + } + } + } + + +
+ + + Creates a new Zip output stream, writing a zip archive. + + + The output stream to which the archive contents are written. + + + + + Creates a new Zip output stream, writing a zip archive. + + The output stream to which the archive contents are written. + Size of the buffer to use. + + + + Gets a flag value of true if the central header has been added for this archive; false if it has not been added. + + No further entries can be added once this has been done. + + + + Set the zip file comment. + + + The comment text for the entire archive. + + + The converted comment is longer than 0xffff bytes. + + + + + Sets the compression level. The new level will be activated + immediately. + + The new compression level (1 to 9). + + Level specified is not supported. + + + + + + Get the current deflater compression level + + The current compression level + + + + Get / set a value indicating how Zip64 Extension usage is determined when adding entries. + + Older archivers may not understand Zip64 extensions. + If backwards compatability is an issue be careful when adding entries to an archive. + Setting this property to off is workable but less desirable as in those circumstances adding a file + larger then 4GB will fail. + + + + Used for transforming the names of entries added by . + Defaults to , set to null to disable transforms and use names as supplied. + + + + + Get/set the password used for encryption. + + When set to null or if the password is empty no encryption is performed + + + + Write an unsigned short in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Starts a new Zip entry. It automatically closes the previous + entry if present. + All entry elements bar name are optional, but must be correct if present. + If the compression method is stored and the output is not patchable + the compression for that entry is automatically changed to deflate level 0 + + + the entry. + + + if entry passed is null. + + + if an I/O error occured. + + + if stream was finished + + + Too many entries in the Zip file
+ Entry name is too long
+ Finish has already been called
+
+ + The Compression method specified for the entry is unsupported. + +
+ + + Closes the current entry, updating header and footer information as required + + + Invalid entry field values. + + + An I/O error occurs. + + + No entry is active. + + + + + Initializes encryption keys based on given . + + The password. + + + + Initializes encryption keys based on given password. + + + + + Writes the given buffer to the current entry. + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Archive size is invalid + No entry is active. + + + + Finishes the stream. This will write the central directory at the + end of the zip file and flush the stream. + + + This is automatically called when the stream is closed. + + + An I/O error occurs. + + + Comment exceeds the maximum length
+ Entry name exceeds the maximum length +
+
+ + + Flushes the stream by calling Flush on the deflater stream unless + the current compression method is . Then it flushes the underlying output stream. + + + + + The entries for the archive. + + + + + Used to track the crc of data added to entries. + + + + + The current entry being added. + + + + + Used to track the size of data for an entry during writing. + + + + + Offset to be recorded for each entry in the central header. + + + + + Comment for the entire archive recorded in central header. + + + + + Flag indicating that header patching is required for the current entry. + + + + + Position to patch crc + + + + + Position to patch size. + + + + + The password to use when encrypting archive entries. + + + + + This static class contains functions for encoding and decoding zip file strings + + + + Code page backing field + + The original Zip specification (https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) states + that file names should only be encoded with IBM Code Page 437 or UTF-8. + In practice, most zip apps use OEM or system encoding (typically cp437 on Windows). + Let's be good citizens and default to UTF-8 http://utf8everywhere.org/ + + + + Automatically select codepage while opening archive + see https://github.com/icsharpcode/SharpZipLib/pull/280#issuecomment-433608324 + + + + + Encoding used for string conversion. Setting this to 65001 (UTF-8) will + also set the Language encoding flag to indicate UTF-8 encoded file names. + + + + + Attempt to get the operating system default codepage, or failing that, to + the fallback code page IBM 437. + + + + + Get whether the default codepage is set to UTF-8. Setting this property to false will + set the to + + + Get OEM codepage from NetFX, which parses the NLP file with culture info table etc etc. + But sometimes it yields the special value of 1 which is nicknamed CodePageNoOEM in sources (might also mean CP_OEMCP, but Encoding puts it so). + This was observed on Ukranian and Hindu systems. + Given this value, throws an . + So replace it with , (IBM 437 which is the default code page in a default Windows installation console. + + + + + Convert a portion of a byte array to a string using + + + Data to convert to string + + + Number of bytes to convert starting from index 0 + + + data[0]..data[count - 1] converted to a string + + + + + Convert a byte array to a string using + + + Byte array to convert + + + dataconverted to a string + + + + + Convert a byte array to a string using + + The applicable general purpose bits flags + + Byte array to convert + + The number of bytes to convert. + + dataconverted to a string + + + + + Convert a byte array to a string using + + + Byte array to convert + + The applicable general purpose bits flags + + dataconverted to a string + + + + + Convert a string to a byte array using + + + String to convert to an array + + Converted array + + + + Convert a string to a byte array using + + The applicable general purpose bits flags + + String to convert to an array + + Converted array + + + diff --git a/packages/sharpziplib/1.3.3/lib/netstandard2.1/ICSharpCode.SharpZipLib.dll b/packages/sharpziplib/1.3.3/lib/netstandard2.1/ICSharpCode.SharpZipLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..8a743431262146737cb67b60a141effc36fec05f GIT binary patch literal 204800 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 REw@AajjP_Z3jJ?;;2&j)fwKSr literal 0 HcmV?d00001 diff --git a/packages/sharpziplib/1.3.3/lib/netstandard2.1/ICSharpCode.SharpZipLib.pdb b/packages/sharpziplib/1.3.3/lib/netstandard2.1/ICSharpCode.SharpZipLib.pdb new file mode 100644 index 0000000000000000000000000000000000000000..c9b506ea2d62878b283e84d6863b6405cde81c20 GIT binary patch literal 109016 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 + + + ICSharpCode.SharpZipLib + + + +

+ An example class to demonstrate compression and decompression of BZip2 streams. + + + + + Decompress the input writing + uncompressed data to the output stream + + The readable stream containing data to decompress. + The output stream to receive the decompressed data. + Both streams are closed on completion if true. + + + + Compress the input stream sending + result data to output stream + + The readable stream to compress. + The output stream to receive the compressed data. + Both streams are closed on completion if true. + Block size acts as compression level (1 to 9) with 1 giving + the lowest compression and 9 the highest. + + + + Defines internal values for both compression and decompression + + + + + Random numbers used to randomise repetitive blocks + + + + + When multiplied by compression parameter (1-9) gives the block size for compression + 9 gives the best compression but uses the most memory. + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + Backend constant + + + + + BZip2Exception represents exceptions specific to BZip2 classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the BZip2Exception class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + An input stream that decompresses files in the BZip2 format + + + + + Construct instance for reading from stream + + Data source + + + + Get/set flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + + + + Gets a value indicating if the stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking. + + + + + Gets a value indicating whether the current stream supports writing. + This property always returns false + + + + + Gets the length in bytes of the stream. + + + + + Gets the current position of the stream. + Setting the position is not supported and will throw a NotSupportException. + + Any attempt to set the position. + + + + Flushes the stream. + + + + + Set the streams position. This operation is not supported and will throw a NotSupportedException + + A byte offset relative to the parameter. + A value of type indicating the reference point used to obtain the new position. + The new position of the stream. + Any access + + + + Sets the length of this stream to the given value. + This operation is not supported and will throw a NotSupportedExceptionortedException + + The new length for the stream. + Any access + + + + Writes a block of bytes to this stream using data from a buffer. + This operation is not supported and will throw a NotSupportedException + + The buffer to source data from. + The offset to start obtaining data from. + The number of bytes of data to write. + Any access + + + + Writes a byte to the current position in the file stream. + This operation is not supported and will throw a NotSupportedException + + The value to write. + Any access + + + + Read a sequence of bytes and advances the read position by one byte. + + Array of bytes to store values in + Offset in array to begin storing data + The maximum number of bytes to read + The total number of bytes read into the buffer. This might be less + than the number of bytes requested if that number of bytes are not + currently available or zero if the end of the stream is reached. + + + + + Closes the stream, releasing any associated resources. + + + + + Read a byte from stream advancing position + + byte read or -1 on end of stream + + + + An output stream that compresses into the BZip2 format + including file header chars into another stream. + + + + + Construct a default output stream with maximum block size + + The stream to write BZip data onto. + + + + Initialise a new instance of the + for the specified stream, using the given blocksize. + + The stream to write compressed data to. + The block size to use. + + Valid block sizes are in the range 1..9, with 1 giving + the lowest compression and 9 the highest. + + + + + Ensures that resources are freed and other cleanup operations + are performed when the garbage collector reclaims the BZip2OutputStream. + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking + + + + + Gets a value indicating whether the current stream supports writing + + + + + Gets the length in bytes of the stream + + + + + Gets or sets the current position of this stream. + + + + + Sets the current position of this stream to the given value. + + The point relative to the offset from which to being seeking. + The reference point from which to begin seeking. + The new position in the stream. + + + + Sets the length of this stream to the given value. + + The new stream length. + + + + Read a byte from the stream advancing the position. + + The byte read cast to an int; -1 if end of stream. + + + + Read a block of bytes + + The buffer to read into. + The offset in the buffer to start storing data at. + The maximum number of bytes to read. + The total number of bytes read. This might be less than the number of bytes + requested if that number of bytes are not currently available, or zero + if the end of the stream is reached. + + + + Write a block of bytes to the stream + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + + + + Write a byte to the stream. + + The byte to write to the stream. + + + + Get the number of bytes written to output. + + + + + Get the number of bytes written to the output. + + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Flush output buffers + + + + + Computes Adler32 checksum for a stream of data. An Adler32 + checksum is not as reliable as a CRC32 checksum, but a lot faster to + compute. + + The specification for Adler32 may be found in RFC 1950. + ZLIB Compressed Data Format Specification version 3.3) + + + From that document: + + "ADLER32 (Adler-32 checksum) + This contains a checksum value of the uncompressed data + (excluding any dictionary data) computed according to Adler-32 + algorithm. This algorithm is a 32-bit extension and improvement + of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 + standard. + + Adler-32 is composed of two sums accumulated per byte: s1 is + the sum of all bytes, s2 is the sum of all s1 values. Both sums + are done modulo 65521. s1 is initialized to 1, s2 to zero. The + Adler-32 checksum is stored as s2*65536 + s1 in most- + significant-byte first (network) order." + + "8.2. The Adler-32 algorithm + + The Adler-32 algorithm is much faster than the CRC32 algorithm yet + still provides an extremely low probability of undetected errors. + + The modulo on unsigned long accumulators can be delayed for 5552 + bytes, so the modulo operation time is negligible. If the bytes + are a, b, c, the second sum is 3a + 2b + c + 3, and so is position + and order sensitive, unlike the first sum, which is just a + checksum. That 65521 is prime is important to avoid a possible + large class of two-byte errors that leave the check unchanged. + (The Fletcher checksum uses 255, which is not prime and which also + makes the Fletcher check insensitive to single byte changes 0 - + 255.) + + The sum s1 is initialized to 1 instead of zero to make the length + of the sequence part of s2, so that the length does not have to be + checked separately. (Any sequence of zeroes has a Fletcher + checksum of zero.)" + + + + + + + largest prime smaller than 65536 + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the Adler32 data checksum as if no update was ever called. + + + + + Returns the Adler32 data checksum computed so far. + + + + + Updates the checksum with the byte b. + + + The data value to add. The high byte of the int is ignored. + + + + + Updates the Adler32 data checksum with the bytes taken from + a block of data. + + Contains the data to update the checksum with. + + + + Update Adler32 data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + CRC-32 with unreversed data and reversed output + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + This implementation uses sixteen lookup tables stored in one linear array + to implement the slicing-by-16 algorithm, a variant of the slicing-by-8 + algorithm described in this Intel white paper: + + https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf + + The first lookup table is simply the CRC of all possible eight bit values. + Each successive lookup table is derived from the original table generated + by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs + together will produce the same output as a byte-by-byte CRC loop with + fewer arithmetic and bit manipulation operations, at the cost of increased + memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table, + which is still small enough to fit in most processors' L1 cache.) + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the CRC data checksum as if no update was ever called. + + + + + Returns the CRC data checksum computed so far. + + Reversed Out = true + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of bval + + Reversed Data = false + + + + Updates the CRC data checksum with the bytes taken from + a block of data. + + Contains the data to update the CRC with. + + + + Update CRC data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + Internal helper function for updating a block of data using slicing. + + The array containing the data to add + Range start for (inclusive) + The number of bytes to checksum starting from + + + + A non-inlined function for updating data that doesn't fit in a 16-byte + block. We don't expect to enter this function most of the time, and when + we do we're not here for long, so disabling inlining here improves + performance overall. + + The array containing the data to add + Range start for (inclusive) + Range end for (exclusive) + + + + CRC-32 with reversed data and unreversed output + + + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + This implementation uses sixteen lookup tables stored in one linear array + to implement the slicing-by-16 algorithm, a variant of the slicing-by-8 + algorithm described in this Intel white paper: + + https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf + + The first lookup table is simply the CRC of all possible eight bit values. + Each successive lookup table is derived from the original table generated + by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs + together will produce the same output as a byte-by-byte CRC loop with + fewer arithmetic and bit manipulation operations, at the cost of increased + memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table, + which is still small enough to fit in most processors' L1 cache.) + + + + + The CRC data checksum so far. + + + + + Initialise a default instance of + + + + + Resets the CRC data checksum as if no update was ever called. + + + + + Returns the CRC data checksum computed so far. + + Reversed Out = false + + + + Updates the checksum with the int bval. + + + the byte is taken as the lower 8 bits of bval + + Reversed Data = true + + + + Updates the CRC data checksum with the bytes taken from + a block of data. + + Contains the data to update the CRC with. + + + + Update CRC data checksum based on a portion of a block of data + + + The chunk of data to add + + + + + Internal helper function for updating a block of data using slicing. + + The array containing the data to add + Range start for (inclusive) + The number of bytes to checksum starting from + + + + A non-inlined function for updating data that doesn't fit in a 16-byte + block. We don't expect to enter this function most of the time, and when + we do we're not here for long, so disabling inlining here improves + performance overall. + + The array containing the data to add + Range start for (inclusive) + Range end for (exclusive) + + + + The number of slicing lookup tables to generate. + + + + + Generates multiple CRC lookup tables for a given polynomial, stored + in a linear array of uints. The first block (i.e. the first 256 + elements) is the same as the byte-by-byte CRC lookup table. + + The generating CRC polynomial + Whether the polynomial is in reversed bit order + A linear array of 256 * elements + + This table could also be generated as a rectangular array, but the + JIT compiler generates slower code than if we use a linear array. + Known issue, see: https://github.com/dotnet/runtime/issues/30275 + + + + + Mixes the first four bytes of input with + using normal ordering before calling . + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + Checksum state before this update call + A new unfinalized checksum value + + + Assumes input[offset]..input[offset + 15] are valid array indexes. + For performance reasons, this must be checked by the caller. + + + + + Mixes the first four bytes of input with + using reflected ordering before calling . + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + Checksum state before this update call + A new unfinalized checksum value + + + Assumes input[offset]..input[offset + 15] are valid array indexes. + For performance reasons, this must be checked by the caller. + + + + + A shared method for updating an unfinalized CRC checksum using slicing-by-16. + + Array of data to checksum + Offset to start reading from + The table to use for slicing-by-16 lookup + First byte of input after mixing with the old CRC + Second byte of input after mixing with the old CRC + Third byte of input after mixing with the old CRC + Fourth byte of input after mixing with the old CRC + A new unfinalized checksum value + + + Even though the first four bytes of input are fed in as arguments, + should be the same value passed to this + function's caller (either or + ). This method will get inlined + into both functions, so using the same offset produces faster code. + + + Because most processors running C# have some kind of instruction-level + parallelism, the order of XOR operations can affect performance. This + ordering assumes that the assembly code generated by the just-in-time + compiler will emit a bunch of arithmetic operations for checking array + bounds. Then it opportunistically XORs a1 and a2 to keep the processor + busy while those other parts of the pipeline handle the range check + calculations. + + + + + + Interface to compute a data checksum used by checked input/output streams. + A data checksum can be updated by one byte or with a byte array. After each + update the value of the current checksum can be returned by calling + getValue. The complete checksum object can also be reset + so it can be used again with new data. + + + + + Resets the data checksum as if no update was ever called. + + + + + Returns the data checksum computed so far. + + + + + Adds one byte to the data checksum. + + + the data value to add. The high byte of the int is ignored. + + + + + Updates the data checksum with the bytes taken from the array. + + + buffer an array of bytes + + + + + Adds the byte array to the data checksum. + + + The chunk of data to add + + + + + Event arguments for scanning. + + + + + Initialise a new instance of + + The file or directory name. + + + + The file or directory name for this event. + + + + + Get set a value indicating if scanning should continue or not. + + + + + Event arguments during processing of a single file or directory. + + + + + Initialise a new instance of + + The file or directory name if known. + The number of bytes processed so far + The total number of bytes to process, 0 if not known + + + + The name for this event if known. + + + + + Get set a value indicating whether scanning should continue or not. + + + + + Get a percentage representing how much of the has been processed + + 0.0 to 100.0 percent; 0 if target is not known. + + + + The number of bytes processed so far + + + + + The number of bytes to process. + + Target may be 0 or negative if the value isnt known. + + + + Event arguments for directories. + + + + + Initialize an instance of . + + The name for this directory. + Flag value indicating if any matching files are contained in this directory. + + + + Get a value indicating if the directory contains any matching files or not. + + + + + Arguments passed when scan failures are detected. + + + + + Initialise a new instance of + + The name to apply. + The exception to use. + + + + The applicable name. + + + + + The applicable exception. + + + + + Get / set a value indicating whether scanning should continue. + + + + + Delegate invoked before starting to process a file. + + The source of the event + The event arguments. + + + + Delegate invoked during processing of a file or directory + + The source of the event + The event arguments. + + + + Delegate invoked when a file has been completely processed. + + The source of the event + The event arguments. + + + + Delegate invoked when a directory failure is detected. + + The source of the event + The event arguments. + + + + Delegate invoked when a file failure is detected. + + The source of the event + The event arguments. + + + + FileSystemScanner provides facilities scanning of files and directories. + + + + + Initialise a new instance of + + The file filter to apply when scanning. + + + + Initialise a new instance of + + The file filter to apply. + The directory filter to apply. + + + + Initialise a new instance of + + The file filter to apply. + + + + Initialise a new instance of + + The file filter to apply. + The directory filter to apply. + + + + Delegate to invoke when a directory is processed. + + + + + Delegate to invoke when a file is processed. + + + + + Delegate to invoke when processing for a file has finished. + + + + + Delegate to invoke when a directory failure is detected. + + + + + Delegate to invoke when a file failure is detected. + + + + + Raise the DirectoryFailure event. + + The directory name. + The exception detected. + + + + Raise the FileFailure event. + + The file name. + The exception detected. + + + + Raise the ProcessFile event. + + The file name. + + + + Raise the complete file event + + The file name + + + + Raise the ProcessDirectory event. + + The directory name. + Flag indicating if the directory has matching files. + + + + Scan a directory. + + The base directory to scan. + True to recurse subdirectories, false to scan a single directory. + + + + The file filter currently in use. + + + + + The directory filter currently in use. + + + + + Flag indicating if scanning should continue running. + + + + + INameTransform defines how file system names are transformed for use with archives, or vice versa. + + + + + Given a file name determine the transformed value. + + The name to transform. + The transformed file name. + + + + Given a directory name determine the transformed value. + + The name to transform. + The transformed directory name + + + + InvalidNameException is thrown for invalid names such as directory traversal paths and names with invalid characters + + + + + Initializes a new instance of the InvalidNameException class with a default error message. + + + + + Initializes a new instance of the InvalidNameException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the InvalidNameException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the InvalidNameException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Scanning filters support filtering of names. + + + + + Test a name to see if it 'matches' the filter. + + The name to test. + Returns true if the name matches the filter, false if it does not match. + + + + NameFilter is a string matching class which allows for both positive and negative + matching. + A filter is a sequence of independant regular expressions separated by semi-colons ';'. + To include a semi-colon it may be quoted as in \;. Each expression can be prefixed by a plus '+' sign or + a minus '-' sign to denote the expression is intended to include or exclude names. + If neither a plus or minus sign is found include is the default. + A given name is tested for inclusion before checking exclusions. Only names matching an include spec + and not matching an exclude spec are deemed to match the filter. + An empty filter matches any name. + + The following expression includes all name ending in '.dat' with the exception of 'dummy.dat' + "+\.dat$;-^dummy\.dat$" + + + + + Construct an instance based on the filter expression passed + + The filter expression. + + + + Test a string to see if it is a valid regular expression. + + The expression to test. + True if expression is a valid false otherwise. + + + + Test an expression to see if it is valid as a filter. + + The filter expression to test. + True if the expression is valid, false otherwise. + + + + Split a string into its component pieces + + The original string + Returns an array of values containing the individual filter elements. + + + + Convert this filter to its string equivalent. + + The string equivalent for this filter. + + + + Test a value to see if it is included by the filter. + + The value to test. + True if the value is included, false otherwise. + + + + Test a value to see if it is excluded by the filter. + + The value to test. + True if the value is excluded, false otherwise. + + + + Test a value to see if it matches the filter. + + The value to test. + True if the value matches, false otherwise. + + + + Compile this filter. + + + + + PathFilter filters directories and files using a form of regular expressions + by full path name. + See NameFilter for more detail on filtering. + + + + + Initialise a new instance of . + + The filter expression to apply. + + + + Test a name to see if it matches the filter. + + The name to test. + True if the name matches, false otherwise. + is used to get the full path before matching. + + + + ExtendedPathFilter filters based on name, file size, and the last write time of the file. + + Provides an example of how to customise filtering. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum to include. + The maximum to include. + + + + Initialise a new instance of ExtendedPathFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + The minimum to include. + The maximum to include. + + + + Test a filename to see if it matches the filter. + + The filename to test. + True if the filter matches, false otherwise. + The doesnt exist + + + + Get/set the minimum size/length for a file that will match this filter. + + The default value is zero. + value is less than zero; greater than + + + + Get/set the maximum size/length for a file that will match this filter. + + The default value is + value is less than zero or less than + + + + Get/set the minimum value that will match for this filter. + + Files with a LastWrite time less than this value are excluded by the filter. + + + + Get/set the maximum value that will match for this filter. + + Files with a LastWrite time greater than this value are excluded by the filter. + + + + NameAndSizeFilter filters based on name and file size. + + A sample showing how filters might be extended. + + + + Initialise a new instance of NameAndSizeFilter. + + The filter to apply. + The minimum file size to include. + The maximum file size to include. + + + + Test a filename to see if it matches the filter. + + The filename to test. + True if the filter matches, false otherwise. + + + + Get/set the minimum size for a file that will match this filter. + + + + + Get/set the maximum size for a file that will match this filter. + + + + + PathUtils provides simple utilities for handling paths. + + + + + Remove any path root present in the path + + A containing path information. + The path with the root removed if it was present; path otherwise. + + + + Returns a random file name in the users temporary directory, or in directory of if specified + + If specified, used as the base file name for the temporary file + Returns a temporary file name + + + + Provides simple " utilities. + + + + + Read from a ensuring all the required data is read. + + The stream to read. + The buffer to fill. + + + + + Read from a " ensuring all the required data is read. + + The stream to read data from. + The buffer to store data in. + The offset at which to begin storing data. + The number of bytes of data to store. + Required parameter is null + and or are invalid. + End of stream is encountered before all the data has been read. + + + + Read as much data as possible from a ", up to the requested number of bytes + + The stream to read data from. + The buffer to store data in. + The offset at which to begin storing data. + The number of bytes of data to store. + Required parameter is null + and or are invalid. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + The progress handler delegate to use. + The minimum between progress updates. + The source for this event. + The name to use with the event. + This form is specialised for use within #Zip to support events during archive operations. + + + + Copy the contents of one to another. + + The stream to source data from. + The stream to write data to. + The buffer to use during copying. + The progress handler delegate to use. + The minimum between progress updates. + The source for this event. + The name to use with the event. + A predetermined fixed target value to use with progress updates. + If the value is negative the target is calculated by looking at the stream. + This form is specialised for use within #Zip to support events during archive operations. + + + + Initialise an instance of + + + + + SharpZipBaseException is the base exception class for SharpZipLib. + All library exceptions are derived from this. + + NOTE: Not all exceptions thrown will be derived from this class. + A variety of other exceptions are possible for example + + + + Initializes a new instance of the SharpZipBaseException class. + + + + + Initializes a new instance of the SharpZipBaseException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the SharpZipBaseException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the SharpZipBaseException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that an error occurred during decoding of a input stream due to corrupt + data or (unintentional) library incompatibility. + + + + + Initializes a new instance of the StreamDecodingException with a generic message + + + + + Initializes a new instance of the StreamDecodingException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the StreamDecodingException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the StreamDecodingException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that the input stream could not decoded due to known library incompability or missing features + + + + + Initializes a new instance of the StreamUnsupportedException with a generic message + + + + + Initializes a new instance of the StreamUnsupportedException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the StreamUnsupportedException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the StreamUnsupportedException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that the input stream could not decoded due to the stream ending before enough data had been provided + + + + + Initializes a new instance of the UnexpectedEndOfStreamException with a generic message + + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with a specified error message. + + A message describing the exception. + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with a specified + error message and a reference to the inner exception that is the cause of this exception. + + A message describing the exception. + The inner exception + + + + Initializes a new instance of the UnexpectedEndOfStreamException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Indicates that a value was outside of the expected range when decoding an input stream + + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable + + Name of the variable, use: nameof() + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable, + it's current value and expected range. + + Name of the variable, use: nameof() + The invalid value + Expected maximum value + Expected minimum value + + + + Initializes a new instance of the ValueOutOfRangeException class naming the causing variable, + it's current value and expected range. + + Name of the variable, use: nameof() + The invalid value + Expected maximum value + Expected minimum value + + + + Initializes a new instance of the ValueOutOfRangeException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + PkzipClassic embodies the classic or original encryption facilities used in Pkzip archives. + While it has been superceded by more recent and more powerful algorithms, its still in use and + is viable for preventing casual snooping + + + + + Generates new encryption keys based on given seed + + The seed value to initialise keys with. + A new key value. + + + + PkzipClassicCryptoBase provides the low level facilities for encryption + and decryption using the PkzipClassic algorithm. + + + + + Transform a single byte + + + The transformed value + + + + + Set the key schedule for encryption/decryption. + + The data use to set the keys from. + + + + Update encryption keys + + + + + Reset the internal state. + + + + + PkzipClassic CryptoTransform for encryption. + + + + + Initialise a new instance of + + The key block to use. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Cleanup internal state. + + + + + PkzipClassic CryptoTransform for decryption. + + + + + Initialise a new instance of . + + The key block to decrypt with. + + + + Transforms the specified region of the specified byte array. + + The input for which to compute the transform. + The offset into the byte array from which to begin using data. + The number of bytes in the byte array to use as data. + The computed transform. + + + + Transforms the specified region of the input byte array and copies + the resulting transform to the specified region of the output byte array. + + The input for which to compute the transform. + The offset into the input byte array from which to begin using data. + The number of bytes in the input byte array to use as data. + The output to which to write the transform. + The offset into the output byte array from which to begin writing data. + The number of bytes written. + + + + Gets a value indicating whether the current transform can be reused. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Cleanup internal state. + + + + + Defines a wrapper object to access the Pkzip algorithm. + This class cannot be inherited. + + + + + Get / set the applicable block size in bits. + + The only valid block size is 8. + + + + Get an array of legal key sizes. + + + + + Generate an initial vector. + + + + + Get an array of legal block sizes. + + + + + Get / set the key value applicable. + + + + + Generate a new random key. + + + + + Create an encryptor. + + The key to use for this encryptor. + Initialisation vector for the new encryptor. + Returns a new PkzipClassic encryptor + + + + Create a decryptor. + + Keys to use for this new decryptor. + Initialisation vector for the new decryptor. + Returns a new decryptor. + + + + Encrypts and decrypts AES ZIP + + + Based on information from http://www.winzip.com/aes_info.htm + and http://www.gladman.me.uk/cryptography_technology/fileencrypt/ + + + + + Constructor + + The stream on which to perform the cryptographic transformation. + Instance of ZipAESTransform + Read or Write + + + + Reads a sequence of bytes from the current CryptoStream into buffer, + and advances the position within the stream by the number of bytes read. + + + + + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + + + + Transforms stream using AES in CTR mode + + + + + Constructor. + + Password string + Random bytes, length depends on encryption strength. + 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes. + The encryption strength, in bytes eg 16 for 128 bits. + True when creating a zip, false when reading. For the AuthCode. + + + + + Implement the ICryptoTransform method. + + + + + Returns the 2 byte password verifier + + + + + Returns the 10 byte AUTH CODE to be checked or appended immediately following the AES data stream. + + + + + Not implemented. + + + + + Gets the size of the input data blocks in bytes. + + + + + Gets the size of the output data blocks in bytes. + + + + + Gets a value indicating whether multiple blocks can be transformed. + + + + + Gets a value indicating whether the current transform can be reused. + + + + + Cleanup internal state. + + + + + An example class to demonstrate compression and decompression of GZip streams. + + + + + Decompress the input writing + uncompressed data to the output stream + + The readable stream containing data to decompress. + The output stream to receive the decompressed data. + Both streams are closed on completion if true. + Input or output stream is null + + + + Compress the input stream sending + result data to output stream + + The readable stream to compress. + The output stream to receive the compressed data. + Both streams are closed on completion if true. + Deflate buffer size, minimum 512 + Deflate compression level, 0-9 + Input or output stream is null + Buffer Size is smaller than 512 + Compression level outside 0-9 + + + + This class contains constants used for gzip. + + + + + First GZip identification byte + + + + + Second GZip identification byte + + + + + Deflate compression method + + + + + Get the GZip specified encoding (CP-1252 if supported, otherwise ASCII) + + + + + GZip header flags + + + + + Text flag hinting that the file is in ASCII + + + + + CRC flag indicating that a CRC16 preceeds the data + + + + + Extra flag indicating that extra fields are present + + + + + Filename flag indicating that the original filename is present + + + + + Flag bit mask indicating that a comment is present + + + + + GZipException represents exceptions specific to GZip classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the GZipException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + This filter stream is used to decompress a "GZIP" format stream. + The "GZIP" format is described baseInputStream RFC 1952. + + author of the original java version : John Leuner + + This sample shows how to unzip a gzipped file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.GZip; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream inStream = new GZipInputStream(File.OpenRead(args[0]))) + using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { + byte[] buffer = new byte[4096]; + StreamUtils.Copy(inStream, outStream, buffer); + } + } + } + + + + + + CRC-32 value for uncompressed data + + + + + Flag to indicate if we've read the GZIP header yet for the current member (block of compressed data). + This is tracked per-block as the file is parsed. + + + + + Flag to indicate if at least one block in a stream with concatenated blocks was read successfully. + This allows us to exit gracefully if downstream data is not in gzip format. + + + + + Creates a GZipInputStream with the default buffer size + + + The stream to read compressed data from (baseInputStream GZIP format) + + + + + Creates a GZIPInputStream with the specified buffer size + + + The stream to read compressed data from (baseInputStream GZIP format) + + + Size of the buffer to use + + + + + Reads uncompressed data into an array of bytes + + + The buffer to read uncompressed data into + + + The offset indicating where the data should be placed + + + The number of uncompressed bytes to be read + + Returns the number of bytes actually read. + + + + Retrieves the filename header field for the block last read + + + + + + This filter stream is used to compress a stream into a "GZIP" stream. + The "GZIP" format is described in RFC 1952. + + author of the original java version : John Leuner + + This sample shows how to gzip a file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.GZip; + using ICSharpCode.SharpZipLib.Core; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream s = new GZipOutputStream(File.Create(args[0] + ".gz"))) + using (FileStream fs = File.OpenRead(args[0])) { + byte[] writeData = new byte[4096]; + Streamutils.Copy(s, fs, writeData); + } + } + } + } + + + + + + CRC-32 value for uncompressed data + + + + + Creates a GzipOutputStream with the default buffer size + + + The stream to read data (to be compressed) from + + + + + Creates a GZipOutputStream with the specified buffer size + + + The stream to read data (to be compressed) from + + + Size of the buffer to use + + + + + Sets the active compression level (0-9). The new level will be activated + immediately. + + The compression level to set. + + Level specified is not supported. + + + + + + Get the current compression level. + + The current compression level. + + + + Original filename + + + + + Write given buffer to output updating crc + + Buffer to write + Offset of first byte in buf to write + Number of bytes to write + + + + Writes remaining compressed output data to the output stream + and closes it. + + + + + Flushes the stream by ensuring the header is written, and then calling Flush + on the deflater. + + + + + Finish compression and write any footer information required to stream + + + + + This class contains constants used for LZW + + + + + Magic number found at start of LZW header: 0x1f 0x9d + + + + + Maximum number of bits per code + + + + + Mask for 'number of compression bits' + + + + + Indicates the presence of a fourth header byte + + + + + Reserved bits + + + + + Block compression: if table is full and compression rate is dropping, + clear the dictionary. + + + + + LZW file header size (in bytes) + + + + + Initial number of bits per code + + + + + LzwException represents exceptions specific to LZW classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the LzwException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + This filter stream is used to decompress a LZW format stream. + Specifically, a stream that uses the LZC compression method. + This file format is usually associated with the .Z file extension. + + See http://en.wikipedia.org/wiki/Compress + See http://wiki.wxwidgets.org/Development:_Z_File_Format + + The file header consists of 3 (or optionally 4) bytes. The first two bytes + contain the magic marker "0x1f 0x9d", followed by a byte of flags. + + Based on Java code by Ronald Tschalar, which in turn was based on the unlzw.c + code in the gzip package. + + This sample shows how to unzip a compressed file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.LZW; + + class MainClass + { + public static void Main(string[] args) + { + using (Stream inStream = new LzwInputStream(File.OpenRead(args[0]))) + using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) { + byte[] buffer = new byte[4096]; + StreamUtils.Copy(inStream, outStream, buffer); + // OR + inStream.Read(buffer, 0, buffer.Length); + // now do something with the buffer + } + } + } + + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Creates a LzwInputStream + + + The stream to read compressed data from (baseInputStream LZW format) + + + + + See + + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + + + Moves the unread data in the buffer to the beginning and resets + the pointers. + + + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Flag indicating wether this instance has been closed or not. + + + + + This exception is used to indicate that there is a problem + with a TAR archive header. + + + + + Initialise a new instance of the InvalidHeaderException class. + + + + + Initialises a new instance of the InvalidHeaderException class with a specified message. + + Message describing the exception cause. + + + + Initialise a new instance of InvalidHeaderException + + Message describing the problem. + The exception that is the cause of the current exception. + + + + Initializes a new instance of the InvalidHeaderException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Used to advise clients of 'events' while processing archives + + + + + The TarArchive class implements the concept of a + 'Tape Archive'. A tar archive is a series of entries, each of + which represents a file system object. Each entry in + the archive consists of a header block followed by 0 or more data blocks. + Directory entries consist only of the header block, and are followed by entries + for the directory's contents. File entries consist of a + header followed by the number of blocks needed to + contain the file's contents. All entries are written on + block boundaries. Blocks are 512 bytes long. + + TarArchives are instantiated in either read or write mode, + based upon whether they are instantiated with an InputStream + or an OutputStream. Once instantiated TarArchives read/write + mode can not be changed. + + There is currently no support for random access to tar archives. + However, it seems that subclassing TarArchive, and using the + TarBuffer.CurrentRecord and TarBuffer.CurrentBlock + properties, this would be rather trivial. + + + + + Client hook allowing detailed information to be reported during processing + + + + + Raises the ProgressMessage event + + The TarEntry for this event + message for this event. Null is no message + + + + Constructor for a default . + + + + + Initialise a TarArchive for input. + + The to use for input. + + + + Initialise a TarArchive for output. + + The to use for output. + + + + The InputStream based constructors create a TarArchive for the + purposes of extracting or listing a tar archive. Thus, use + these constructors when you wish to extract files from or list + the contents of an existing tar archive. + + The stream to retrieve archive data from. + Returns a new suitable for reading from. + + + + The InputStream based constructors create a TarArchive for the + purposes of extracting or listing a tar archive. Thus, use + these constructors when you wish to extract files from or list + the contents of an existing tar archive. + + The stream to retrieve archive data from. + The used for the Name fields, or null for ASCII only + Returns a new suitable for reading from. + + + + Create TarArchive for reading setting block factor + + A stream containing the tar archive contents + The blocking factor to apply + Returns a suitable for reading. + + + + Create TarArchive for reading setting block factor + + A stream containing the tar archive contents + The blocking factor to apply + The used for the Name fields, or null for ASCII only + Returns a suitable for reading. + + + + Create a TarArchive for writing to, using the default blocking factor + + The to write to + The used for the Name fields, or null for ASCII only + Returns a suitable for writing. + + + + Create a TarArchive for writing to, using the default blocking factor + + The to write to + Returns a suitable for writing. + + + + Create a tar archive for writing. + + The stream to write to + The blocking factor to use for buffering. + Returns a suitable for writing. + + + + Create a tar archive for writing. + + The stream to write to + The blocking factor to use for buffering. + The used for the Name fields, or null for ASCII only + Returns a suitable for writing. + + + + Set the flag that determines whether existing files are + kept, or overwritten during extraction. + + + If true, do not overwrite existing files. + + + + + Get/set the ascii file translation flag. If ascii file translation + is true, then the file is checked to see if it a binary file or not. + If the flag is true and the test indicates it is ascii text + file, it will be translated. The translation converts the local + operating system's concept of line ends into the UNIX line end, + '\n', which is the defacto standard for a TAR archive. This makes + text files compatible with UNIX. + + + + + Set the ascii file translation flag. + + + If true, translate ascii text files. + + + + + PathPrefix is added to entry names as they are written if the value is not null. + A slash character is appended after PathPrefix + + + + + RootPath is removed from entry names if it is found at the + beginning of the name. + + + + + Set user and group information that will be used to fill in the + tar archive's entry headers. This information is based on that available + for the linux operating system, which is not always available on other + operating systems. TarArchive allows the programmer to specify values + to be used in their place. + is set to true by this call. + + + The user id to use in the headers. + + + The user name to use in the headers. + + + The group id to use in the headers. + + + The group name to use in the headers. + + + + + Get or set a value indicating if overrides defined by SetUserInfo should be applied. + + If overrides are not applied then the values as set in each header will be used. + + + + Get the archive user id. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current user id. + + + + + Get the archive user name. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current user name. + + + + + Get the archive group id. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current group id. + + + + + Get the archive group name. + See ApplyUserInfoOverrides for detail + on how to allow setting values on a per entry basis. + + + The current group name. + + + + + Get the archive's record size. Tar archives are composed of + a series of RECORDS each containing a number of BLOCKS. + This allowed tar archives to match the IO characteristics of + the physical device being used. Archives are expected + to be properly "blocked". + + + The record size this archive is using. + + + + + Sets the IsStreamOwner property on the underlying stream. + Set this to false to prevent the Close of the TarArchive from closing the stream. + + + + + Close the archive. + + + + + Perform the "list" command for the archive contents. + + NOTE That this method uses the progress event to actually list + the contents. If the progress display event is not set, nothing will be listed! + + + + + Perform the "extract" command and extract the contents of the archive. + + + The destination directory into which to extract. + + + + + Perform the "extract" command and extract the contents of the archive. + + + The destination directory into which to extract. + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Extract an entry from the archive. This method assumes that the + tarIn stream has been properly set with a call to GetNextEntry(). + + + The destination directory into which to extract. + + + The TarEntry returned by tarIn.GetNextEntry(). + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Write an entry to the archive. This method will call the putNextEntry + and then write the contents of the entry, and finally call closeEntry() + for entries that are files. For directories, it will call putNextEntry(), + and then, if the recurse flag is true, process each entry that is a + child of the directory. + + + The TarEntry representing the entry to write to the archive. + + + If true, process the children of directory entries. + + + + + Write an entry to the archive. This method will call the putNextEntry + and then write the contents of the entry, and finally call closeEntry() + for entries that are files. For directories, it will call putNextEntry(), + and then, if the recurse flag is true, process each entry that is a + child of the directory. + + + The TarEntry representing the entry to write to the archive. + + + If true, process the children of directory entries. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases the unmanaged resources used by the FileStream and optionally releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Closes the archive and releases any associated resources. + + + + + Ensures that resources are freed and other cleanup operations are performed + when the garbage collector reclaims the . + + + + + The TarBuffer class implements the tar archive concept + of a buffered input stream. This concept goes back to the + days of blocked tape drives and special io devices. In the + C# universe, the only real function that this class + performs is to ensure that files have the correct "record" + size, or other tars will complain. +

+ You should never have a need to access this class directly. + TarBuffers are created by Tar IO Streams. +

+
+
+ + + The size of a block in a tar archive in bytes. + + This is 512 bytes. + + + + The number of blocks in a default record. + + + The default value is 20 blocks per record. + + + + + The size in bytes of a default record. + + + The default size is 10KB. + + + + + Get the record size for this buffer + + The record size in bytes. + This is equal to the multiplied by the + + + + Get the TAR Buffer's record size. + + The record size in bytes. + This is equal to the multiplied by the + + + + Get the Blocking factor for the buffer + + This is the number of blocks in each record. + + + + Get the TAR Buffer's block factor + + The block factor; the number of blocks per record. + + + + Construct a default TarBuffer + + + + + Create TarBuffer for reading with default BlockFactor + + Stream to buffer + A new suitable for input. + + + + Construct TarBuffer for reading inputStream setting BlockFactor + + Stream to buffer + Blocking factor to apply + A new suitable for input. + + + + Construct TarBuffer for writing with default BlockFactor + + output stream for buffer + A new suitable for output. + + + + Construct TarBuffer for writing Tar output to streams. + + Output stream to write to. + Blocking factor to apply + A new suitable for output. + + + + Initialization common to all constructors. + + + + + Determine if an archive block indicates End of Archive. End of + archive is indicated by a block that consists entirely of null bytes. + All remaining blocks for the record should also be null's + However some older tars only do a couple of null blocks (Old GNU tar for one) + and also partial records + + The data block to check. + Returns true if the block is an EOF block; false otherwise. + + + + Determine if an archive block indicates the End of an Archive has been reached. + End of archive is indicated by a block that consists entirely of null bytes. + All remaining blocks for the record should also be null's + However some older tars only do a couple of null blocks (Old GNU tar for one) + and also partial records + + The data block to check. + Returns true if the block is an EOF block; false otherwise. + + + + Skip over a block on the input stream. + + + + + Read a block from the input stream. + + + The block of data read. + + + + + Read a record from data stream. + + + false if End-Of-File, else true. + + + + + Get the current block number, within the current record, zero based. + + Block numbers are zero based values + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Get the current block number, within the current record, zero based. + + + The current zero based block number. + + + The absolute block number = (record number * block factor) + block number. + + + + + Get the current record number. + + + The current zero based record number. + + + + + Get the current record number. + + + The current zero based record number. + + + + + Write a block of data to the archive. + + + The data to write to the archive. + + + + + Write an archive record to the archive, where the record may be + inside of a larger array buffer. The buffer must be "offset plus + record size" long. + + + The buffer containing the record data to write. + + + The offset of the record data within buffer. + + + + + Write a TarBuffer record to the archive. + + + + + WriteFinalRecord writes the current record buffer to output any unwritten data is present. + + Any trailing bytes are set to zero which is by definition correct behaviour + for the end of a tar stream. + + + + Close the TarBuffer. If this is an output buffer, also flush the + current block before closing. + + + + + This class represents an entry in a Tar archive. It consists + of the entry's header, as well as the entry's File. Entries + can be instantiated in one of three ways, depending on how + they are to be used. +

+ TarEntries that are created from the header bytes read from + an archive are instantiated with the TarEntry( byte[] ) + constructor. These entries will be used when extracting from + or listing the contents of an archive. These entries have their + header filled in using the header bytes. They also set the File + to null, since they reference an archive entry not a file.

+

+ TarEntries that are created from files that are to be written + into an archive are instantiated with the CreateEntryFromFile(string) + pseudo constructor. These entries have their header filled in using + the File's information. They also keep a reference to the File + for convenience when writing entries.

+

+ Finally, TarEntries can be constructed from nothing but a name. + This allows the programmer to construct the entry by hand, for + instance when only an InputStream is available for writing to + the archive, and the header information is constructed from + other information. In this case the header fields are set to + defaults and the File is set to null.

+ +
+
+ + + Initialise a default instance of . + + + + + Construct an entry from an archive's header bytes. File is set + to null. + + + The header bytes from a tar archive entry. + + + + + Construct an entry from an archive's header bytes. File is set + to null. + + + The header bytes from a tar archive entry. + + + The used for the Name fields, or null for ASCII only + + + + + Construct a TarEntry using the header provided + + Header details for entry + + + + Clone this tar entry. + + Returns a clone of this entry. + + + + Construct an entry with only a name. + This allows the programmer to construct the entry's header "by hand". + + The name to use for the entry + Returns the newly created + + + + Construct an entry for a file. File is set to file, and the + header is constructed from information from the file. + + The file name that the entry represents. + Returns the newly created + + + + Determine if the two entries are equal. Equality is determined + by the header names being equal. + + The to compare with the current Object. + + True if the entries are equal; false if not. + + + + + Derive a Hash value for the current + + A Hash code for the current + + + + Determine if the given entry is a descendant of this entry. + Descendancy is determined by the name of the descendant + starting with this entry's name. + + + Entry to be checked as a descendent of this. + + + True if entry is a descendant of this. + + + + + Get this entry's header. + + + This entry's TarHeader. + + + + + Get/Set this entry's name. + + + + + Get/set this entry's user id. + + + + + Get/set this entry's group id. + + + + + Get/set this entry's user name. + + + + + Get/set this entry's group name. + + + + + Convenience method to set this entry's group and user ids. + + + This entry's new user id. + + + This entry's new group id. + + + + + Convenience method to set this entry's group and user names. + + + This entry's new user name. + + + This entry's new group name. + + + + + Get/Set the modification time for this entry + + + + + Get this entry's file. + + + This entry's file. + + + + + Get/set this entry's recorded file size. + + + + + Return true if this entry represents a directory, false otherwise + + + True if this entry is a directory. + + + + + Fill in a TarHeader with information from a File. + + + The TarHeader to fill in. + + + The file from which to get the header information. + + + + + Get entries for all files present in this entries directory. + If this entry doesnt represent a directory zero entries are returned. + + + An array of TarEntry's for this entry's children. + + + + + Write an entry's header information to a header buffer. + + + The tar entry header buffer to fill in. + + + + + Write an entry's header information to a header buffer. + + + The tar entry header buffer to fill in. + + + The used for the Name fields, or null for ASCII only + + + + + Convenience method that will modify an entry's name directly + in place in an entry header buffer byte array. + + + The buffer containing the entry header to modify. + + + The new name to place into the header buffer. + + + + + Convenience method that will modify an entry's name directly + in place in an entry header buffer byte array. + + + The buffer containing the entry header to modify. + + + The new name to place into the header buffer. + + + The used for the Name fields, or null for ASCII only + + + + + Fill in a TarHeader given only the entry's name. + + + The TarHeader to fill in. + + + The tar entry name. + + + + + The name of the file this entry represents or null if the entry is not based on a file. + + + + + The entry's header information. + + + + + TarException represents exceptions specific to Tar classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the TarException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + Reads the extended header of a Tar stream + + + + + Creates a new . + + + + + Read bytes from + + + + + + + Returns the parsed headers as key-value strings + + + + + This class encapsulates the Tar Entry Header used in Tar Archives. + The class also holds a number of tar constants, used mostly in headers. + + + The tar format and its POSIX successor PAX have a long history which makes for compatability + issues when creating and reading files. + + This is further complicated by a large number of programs with variations on formats + One common issue is the handling of names longer than 100 characters. + GNU style long names are currently supported. + + This is the ustar (Posix 1003.1) header. + + struct header + { + char t_name[100]; // 0 Filename + char t_mode[8]; // 100 Permissions + char t_uid[8]; // 108 Numerical User ID + char t_gid[8]; // 116 Numerical Group ID + char t_size[12]; // 124 Filesize + char t_mtime[12]; // 136 st_mtime + char t_chksum[8]; // 148 Checksum + char t_typeflag; // 156 Type of File + char t_linkname[100]; // 157 Target of Links + char t_magic[6]; // 257 "ustar" or other... + char t_version[2]; // 263 Version fixed to 00 + char t_uname[32]; // 265 User Name + char t_gname[32]; // 297 Group Name + char t_devmajor[8]; // 329 Major for devices + char t_devminor[8]; // 337 Minor for devices + char t_prefix[155]; // 345 Prefix for t_name + char t_mfill[12]; // 500 Filler up to 512 + }; + + + + + The length of the name field in a header buffer. + + + + + The length of the mode field in a header buffer. + + + + + The length of the user id field in a header buffer. + + + + + The length of the group id field in a header buffer. + + + + + The length of the checksum field in a header buffer. + + + + + Offset of checksum in a header buffer. + + + + + The length of the size field in a header buffer. + + + + + The length of the magic field in a header buffer. + + + + + The length of the version field in a header buffer. + + + + + The length of the modification time field in a header buffer. + + + + + The length of the user name field in a header buffer. + + + + + The length of the group name field in a header buffer. + + + + + The length of the devices field in a header buffer. + + + + + The length of the name prefix field in a header buffer. + + + + + The "old way" of indicating a normal file. + + + + + Normal file type. + + + + + Link file type. + + + + + Symbolic link file type. + + + + + Character device file type. + + + + + Block device file type. + + + + + Directory file type. + + + + + FIFO (pipe) file type. + + + + + Contiguous file type. + + + + + Posix.1 2001 global extended header + + + + + Posix.1 2001 extended header + + + + + Solaris access control list file type + + + + + GNU dir dump file type + This is a dir entry that contains the names of files that were in the + dir at the time the dump was made + + + + + Solaris Extended Attribute File + + + + + Inode (metadata only) no file content + + + + + Identifies the next file on the tape as having a long link name + + + + + Identifies the next file on the tape as having a long name + + + + + Continuation of a file that began on another volume + + + + + For storing filenames that dont fit in the main header (old GNU) + + + + + GNU Sparse file + + + + + GNU Tape/volume header ignore on extraction + + + + + The magic tag representing a POSIX tar archive. (would be written with a trailing NULL) + + + + + The magic tag representing an old GNU tar archive where version is included in magic and overwrites it + + + + + Initialise a default TarHeader instance + + + + + Get/set the name for this tar entry. + + Thrown when attempting to set the property to null. + + + + Get the name of this entry. + + The entry's name. + + + + Get/set the entry's Unix style permission mode. + + + + + The entry's user id. + + + This is only directly relevant to unix systems. + The default is zero. + + + + + Get/set the entry's group id. + + + This is only directly relevant to linux/unix systems. + The default value is zero. + + + + + Get/set the entry's size. + + Thrown when setting the size to less than zero. + + + + Get/set the entry's modification time. + + + The modification time is only accurate to within a second. + + Thrown when setting the date time to less than 1/1/1970. + + + + Get the entry's checksum. This is only valid/updated after writing or reading an entry. + + + + + Get value of true if the header checksum is valid, false otherwise. + + + + + Get/set the entry's type flag. + + + + + The entry's link name. + + Thrown when attempting to set LinkName to null. + + + + Get/set the entry's magic tag. + + Thrown when attempting to set Magic to null. + + + + The entry's version. + + Thrown when attempting to set Version to null. + + + + The entry's user name. + + + + + Get/set the entry's group name. + + + This is only directly relevant to unix systems. + + + + + Get/set the entry's major device number. + + + + + Get/set the entry's minor device number. + + + + + Create a new that is a copy of the current instance. + + A new that is a copy of the current instance. + + + + Parse TarHeader information from a header buffer. + + + The tar entry header buffer to get information from. + + + The used for the Name field, or null for ASCII only + + + + + Parse TarHeader information from a header buffer. + + + The tar entry header buffer to get information from. + + + + + 'Write' header information to buffer provided, updating the check sum. + + output buffer for header information + + + + 'Write' header information to buffer provided, updating the check sum. + + output buffer for header information + The used for the Name field, or null for ASCII only + + + + Get a hash code for the current object. + + A hash code for the current object. + + + + Determines if this instance is equal to the specified object. + + The object to compare with. + true if the objects are equal, false otherwise. + + + + Set defaults for values used when constructing a TarHeader instance. + + Value to apply as a default for userId. + Value to apply as a default for userName. + Value to apply as a default for groupId. + Value to apply as a default for groupName. + + + + Parse an octal string from a header buffer. + + The header buffer from which to parse. + The offset into the buffer from which to parse. + The number of header bytes to parse. + The long equivalent of the octal string. + + + + Parse a name from a header buffer. + + + The header buffer from which to parse. + + + The offset into the buffer from which to parse. + + + The number of header bytes to parse. + + + The name parsed. + + + + + Parse a name from a header buffer. + + + The header buffer from which to parse. + + + The offset into the buffer from which to parse. + + + The number of header bytes to parse. + + + name encoding, or null for ASCII only + + + The name parsed. + + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + The next free index in the + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + The next free index in the + + + + Add name to the buffer as a collection of bytes + + The name to add + The offset of the first character + The buffer to add to + The index of the first byte to add + The number of characters/bytes to add + name encoding, or null for ASCII only + The next free index in the + + + + Add an entry name to the buffer + + + The name to add + + + The buffer to add to + + + The offset into the buffer from which to start adding + + + The number of header bytes to add + + + The index of the next free byte in the buffer + + TODO: what should be default behavior?(omit upper byte or UTF8?) + + + + Add an entry name to the buffer + + + The name to add + + + The buffer to add to + + + The offset into the buffer from which to start adding + + + The number of header bytes to add + + + + + The index of the next free byte in the buffer + + + + + Add an entry name to the buffer + + The name to add + The buffer to add to + The offset into the buffer from which to start adding + The number of header bytes to add + The index of the next free byte in the buffer + TODO: what should be default behavior?(omit upper byte or UTF8?) + + + + Add an entry name to the buffer + + The name to add + The buffer to add to + The offset into the buffer from which to start adding + The number of header bytes to add + + The index of the next free byte in the buffer + + + + Add a string to a buffer as a collection of ascii bytes. + + The string to add + The offset of the first character to add. + The buffer to add to. + The offset to start adding at. + The number of ascii characters to add. + The next free index in the buffer. + + + + Add a string to a buffer as a collection of ascii bytes. + + The string to add + The offset of the first character to add. + The buffer to add to. + The offset to start adding at. + The number of ascii characters to add. + String encoding, or null for ASCII only + The next free index in the buffer. + + + + Put an octal representation of a value into a buffer + + + the value to be converted to octal + + + buffer to store the octal string + + + The offset into the buffer where the value starts + + + The length of the octal string to create + + + The offset of the character next byte after the octal string + + + + + Put an octal or binary representation of a value into a buffer + + Value to be convert to octal + The buffer to update + The offset into the buffer to store the value + The length of the octal string. Must be 12. + Index of next byte + + + + Add the checksum integer to header buffer. + + + The header buffer to set the checksum for + The offset into the buffer for the checksum + The number of header bytes to update. + It's formatted differently from the other fields: it has 6 digits, a + null, then a space -- rather than digits, a space, then a null. + The final space is already there, from checksumming + + The modified buffer offset + + + + Compute the checksum for a tar entry header. + The checksum field must be all spaces prior to this happening + + The tar entry's header buffer. + The computed checksum. + + + + Make a checksum for a tar entry ignoring the checksum contents. + + The tar entry's header buffer. + The checksum for the buffer + + + + The TarInputStream reads a UNIX tar archive as an InputStream. + methods are provided to position at each successive entry in + the archive, and the read each entry as a normal input stream + using read(). + + + + + Construct a TarInputStream with default block factor + + stream to source data from + + + + Construct a TarInputStream with default block factor + + stream to source data from + The used for the Name fields, or null for ASCII only + + + + Construct a TarInputStream with user specified block factor + + stream to source data from + block factor to apply to archive + + + + Construct a TarInputStream with user specified block factor + + stream to source data from + block factor to apply to archive + The used for the Name fields, or null for ASCII only + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value indicating whether the current stream supports seeking + This property always returns false. + + + + + Gets a value indicating if the stream supports writing. + This property always returns false. + + + + + The length in bytes of the stream + + + + + Gets or sets the position within the stream. + Setting the Position is not supported and throws a NotSupportedExceptionNotSupportedException + + Any attempt to set position + + + + Flushes the baseInputStream + + + + + Set the streams position. This operation is not supported and will throw a NotSupportedException + + The offset relative to the origin to seek to. + The to start seeking from. + The new position in the stream. + Any access + + + + Sets the length of the stream + This operation is not supported and will throw a NotSupportedException + + The new stream length. + Any access + + + + Writes a block of bytes to this stream using data from a buffer. + This operation is not supported and will throw a NotSupportedException + + The buffer containing bytes to write. + The offset in the buffer of the frist byte to write. + The number of bytes to write. + Any access + + + + Writes a byte to the current position in the file stream. + This operation is not supported and will throw a NotSupportedException + + The byte value to write. + Any access + + + + Reads a byte from the current tar archive entry. + + A byte cast to an int; -1 if the at the end of the stream. + + + + Reads bytes from the current tar archive entry. + + This method is aware of the boundaries of the current + entry in the archive and will deal with them appropriately + + + The buffer into which to place bytes read. + + + The offset at which to place bytes read. + + + The number of bytes to read. + + + The number of bytes read, or 0 at end of stream/EOF. + + + + + Closes this stream. Calls the TarBuffer's close() method. + The underlying stream is closed by the TarBuffer. + + + + + Set the entry factory for this instance. + + The factory for creating new entries + + + + Get the record size being used by this stream's TarBuffer. + + + + + Get the record size being used by this stream's TarBuffer. + + + TarBuffer record size. + + + + + Get the available data that can be read from the current + entry in the archive. This does not indicate how much data + is left in the entire archive, only in the current entry. + This value is determined from the entry's size header field + and the amount of data already read from the current entry. + + + The number of available bytes for the current entry. + + + + + Skip bytes in the input buffer. This skips bytes in the + current entry's data, not the entire archive, and will + stop at the end of the current entry's data if the number + to skip extends beyond that point. + + + The number of bytes to skip. + + + + + Return a value of true if marking is supported; false otherwise. + + Currently marking is not supported, the return value is always false. + + + + Since we do not support marking just yet, we do nothing. + + + The limit to mark. + + + + + Since we do not support marking just yet, we do nothing. + + + + + Get the next entry in this tar archive. This will skip + over any remaining data in the current entry, if there + is one, and place the input stream at the header of the + next entry, and read the header and instantiate a new + TarEntry from the header bytes and return that entry. + If there are no more entries in the archive, null will + be returned to indicate that the end of the archive has + been reached. + + + The next TarEntry in the archive, or null. + + + + + Copies the contents of the current tar archive entry directly into + an output stream. + + + The OutputStream into which to write the entry's data. + + + + + This interface is provided, along with the method , to allow + the programmer to have their own subclass instantiated for the + entries return from . + + + + + Create an entry based on name alone + + + Name of the new EntryPointNotFoundException to create + + created TarEntry or descendant class + + + + Create an instance based on an actual file + + + Name of file to represent in the entry + + + Created TarEntry or descendant class + + + + + Create a tar entry based on the header information passed + + + Buffer containing header information to create an entry from. + + + Created TarEntry or descendant class + + + + + Standard entry factory class creating instances of the class TarEntry + + + + + Construct standard entry factory class with ASCII name encoding + + + + + Construct standard entry factory with name encoding + + The used for the Name fields, or null for ASCII only + + + + Create a based on named + + The name to use for the entry + A new + + + + Create a tar entry with details obtained from file + + The name of the file to retrieve details from. + A new + + + + Create an entry based on details in header + + The buffer containing entry details. + A new + + + + Flag set when last block has been read + + + + + Size of this entry as recorded in header + + + + + Number of bytes read for this entry so far + + + + + Buffer used with calls to Read() + + + + + Working buffer + + + + + Current entry being read + + + + + Factory used to create TarEntry or descendant class instance + + + + + Stream used as the source of input data. + + + + + The TarOutputStream writes a UNIX tar archive as an OutputStream. + Methods are provided to put entries, and then write their contents + by writing to this stream using write(). + + public + + + + Construct TarOutputStream using default block factor + + stream to write to + + + + Construct TarOutputStream using default block factor + + stream to write to + The used for the Name fields, or null for ASCII only + + + + Construct TarOutputStream with user specified block factor + + stream to write to + blocking factor + + + + Construct TarOutputStream with user specified block factor + + stream to write to + blocking factor + The used for the Name fields, or null for ASCII only + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + true if the stream supports reading; otherwise, false. + + + + + true if the stream supports seeking; otherwise, false. + + + + + true if stream supports writing; otherwise, false. + + + + + length of stream in bytes + + + + + gets or sets the position within the current stream. + + + + + set the position within the current stream + + The offset relative to the to seek to + The to seek from. + The new position in the stream. + + + + Set the length of the current stream + + The new stream length. + + + + Read a byte from the stream and advance the position within the stream + by one byte or returns -1 if at the end of the stream. + + The byte value or -1 if at end of stream + + + + read bytes from the current stream and advance the position within the + stream by the number of bytes read. + + The buffer to store read bytes in. + The index into the buffer to being storing bytes at. + The desired number of bytes to read. + The total number of bytes read, or zero if at the end of the stream. + The number of bytes may be less than the count + requested if data is not available. + + + + All buffered data is written to destination + + + + + Ends the TAR archive without closing the underlying OutputStream. + The result is that the EOF block of nulls is written. + + + + + Ends the TAR archive and closes the underlying OutputStream. + + This means that Finish() is called followed by calling the + TarBuffer's Close(). + + + + Get the record size being used by this stream's TarBuffer. + + + + + Get the record size being used by this stream's TarBuffer. + + + The TarBuffer record size. + + + + + Get a value indicating whether an entry is open, requiring more data to be written. + + + + + Put an entry on the output stream. This writes the entry's + header and positions the output stream for writing + the contents of the entry. Once this method is called, the + stream is ready for calls to write() to write the entry's + contents. Once the contents are written, closeEntry() + MUST be called to ensure that all buffered data + is completely written to the output stream. + + + The TarEntry to be written to the archive. + + + + + Close an entry. This method MUST be called for all file + entries that contain data. The reason is that we must + buffer data written to the stream in order to satisfy + the buffer's block based writes. Thus, there may be + data fragments still being assembled that must be written + to the output stream before this entry is closed and the + next entry written. + + + + + Writes a byte to the current tar archive entry. + This method simply calls Write(byte[], int, int). + + + The byte to be written. + + + + + Writes bytes to the current tar archive entry. This method + is aware of the current entry and will throw an exception if + you attempt to write bytes past the length specified for the + current entry. The method is also (painfully) aware of the + record buffering required by TarBuffer, and manages buffers + that are not a multiple of recordsize in length, including + assembling records from small buffers. + + + The buffer to write to the archive. + + + The offset in the buffer from which to get bytes. + + + The number of bytes to write. + + + + + Write an EOF (end of archive) block to the tar archive. + The end of the archive is indicated by two blocks consisting entirely of zero bytes. + + + + + bytes written for this entry so far + + + + + current 'Assembly' buffer length + + + + + Flag indicating whether this instance has been closed or not. + + + + + Size for the current entry + + + + + single block working buffer + + + + + 'Assembly' buffer used to assemble data before writing + + + + + TarBuffer used to provide correct blocking factor + + + + + the destination stream for the archive contents + + + + + name encoding + + + + + This is the Deflater class. The deflater class compresses input + with the deflate algorithm described in RFC 1951. It has several + compression levels and three different strategies described below. + + This class is not thread safe. This is inherent in the API, due + to the split of deflate and setInput. + + author of the original java version : Jochen Hoenicke + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Compression Level as an enum for safer use + + + + + The best and slowest compression level. This tries to find very + long and distant string repetitions. + + + + + The worst but fastest compression level. + + + + + The default compression level. + + + + + This level won't compress at all but output uncompressed blocks. + + + + + The compression method. This is the only method supported so far. + There is no need to use this constant at all. + + + + + Creates a new deflater with default compression level. + + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION, or DEFAULT_COMPRESSION. + + if lvl is out of range. + + + + Creates a new deflater with given compression level. + + + the compression level, a value between NO_COMPRESSION + and BEST_COMPRESSION. + + + true, if we should suppress the Zlib/RFC1950 header at the + beginning and the adler checksum at the end of the output. This is + useful for the GZIP/PKZIP formats. + + if lvl is out of range. + + + + Resets the deflater. The deflater acts afterwards as if it was + just created with the same compression level and strategy as it + had before. + + + + + Gets the current adler checksum of the data that was processed so far. + + + + + Gets the number of input bytes processed so far. + + + + + Gets the number of output bytes so far. + + + + + Flushes the current input block. Further calls to deflate() will + produce enough output to inflate everything in the current input + block. This is not part of Sun's JDK so I have made it package + private. It is used by DeflaterOutputStream to implement + flush(). + + + + + Finishes the deflater with the current input block. It is an error + to give more input after this method was called. This method must + be called to force all bytes to be flushed. + + + + + Returns true if the stream was finished and no more output bytes + are available. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method can also return true when the stream + was finished. + + + + + Sets the data which should be compressed next. This should be only + called when needsInput indicates that more input is needed. + If you call setInput when needsInput() returns false, the + previous input that is still pending will be thrown away. + The given byte array should not be changed, before needsInput() returns + true again. + This call is equivalent to setInput(input, 0, input.length). + + + the buffer containing the input data. + + + if the buffer was finished() or ended(). + + + + + Sets the data which should be compressed next. This should be + only called when needsInput indicates that more input is needed. + The given byte array should not be changed, before needsInput() returns + true again. + + + the buffer containing the input data. + + + the start of the data. + + + the number of data bytes of input. + + + if the buffer was Finish()ed or if previous input is still pending. + + + + + Sets the compression level. There is no guarantee of the exact + position of the change, but if you call this when needsInput is + true the change of compression level will occur somewhere near + before the end of the so far given input. + + + the new compression level. + + + + + Get current compression level + + Returns the current compression level + + + + Sets the compression strategy. Strategy is one of + DEFAULT_STRATEGY, HUFFMAN_ONLY and FILTERED. For the exact + position where the strategy is changed, the same as for + SetLevel() applies. + + + The new compression strategy. + + + + + Deflates the current input block with to the given array. + + + The buffer where compressed data is stored + + + The number of compressed bytes added to the output, or 0 if either + IsNeedingInput() or IsFinished returns true or length is zero. + + + + + Deflates the current input block to the given array. + + + Buffer to store the compressed data. + + + Offset into the output array. + + + The maximum number of bytes that may be stored. + + + The number of compressed bytes added to the output, or 0 if either + needsInput() or finished() returns true or length is zero. + + + If Finish() was previously called. + + + If offset or length don't match the array length. + + + + + Sets the dictionary which should be used in the deflate process. + This call is equivalent to setDictionary(dict, 0, dict.Length). + + + the dictionary. + + + if SetInput () or Deflate () were already called or another dictionary was already set. + + + + + Sets the dictionary which should be used in the deflate process. + The dictionary is a byte array containing strings that are + likely to occur in the data which should be compressed. The + dictionary is not stored in the compressed output, only a + checksum. To decompress the output you need to supply the same + dictionary again. + + + The dictionary data + + + The index where dictionary information commences. + + + The number of bytes in the dictionary. + + + If SetInput () or Deflate() were already called or another dictionary was already set. + + + + + Compression level. + + + + + If true no Zlib/RFC1950 headers or footers are generated + + + + + The current state. + + + + + The total bytes of output written. + + + + + The pending output. + + + + + The deflater engine. + + + + + This class contains constants used for deflation. + + + + + Set to true to enable debugging + + + + + Written to Zip file to identify a stored block + + + + + Identifies static tree in Zip file + + + + + Identifies dynamic tree in Zip file + + + + + Header flag indicating a preset dictionary for deflation + + + + + Sets internal buffer sizes for Huffman encoding + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Internal compression engine constant + + + + + Strategies for deflater + + + + + The default strategy + + + + + This strategy will only allow longer string repetitions. It is + useful for random data with a small character set. + + + + + This strategy will not look for string repetitions at all. It + only encodes with Huffman trees (which means, that more common + characters get a smaller encoding. + + + + + Low level compression engine for deflate algorithm which uses a 32K sliding window + with secondary compression from Huffman/Shannon-Fano codes. + + + + + Construct instance with pending buffer + Adler calculation will be performed + + + Pending buffer to use + + + + + Construct instance with pending buffer + + + Pending buffer to use + + + If no adler calculation should be performed + + + + + Deflate drives actual compression of data + + True to flush input buffers + Finish deflation with the current input. + Returns true if progress has been made. + + + + Sets input data to be deflated. Should only be called when NeedsInput() + returns true + + The buffer containing input data. + The offset of the first byte of data. + The number of bytes of data to use as input. + + + + Determines if more input is needed. + + Return true if input is needed via SetInput + + + + Set compression dictionary + + The buffer containing the dictionary data + The offset in the buffer for the first byte of data + The length of the dictionary data. + + + + Reset internal state + + + + + Reset Adler checksum + + + + + Get current value of Adler checksum + + + + + Total data processed + + + + + Get/set the deflate strategy + + + + + Set the deflate level (0-9) + + The value to set the level to. + + + + Fill the window + + + + + Inserts the current string in the head hash and returns the previous + value for this hash. + + The previous hash value + + + + Find the best (longest) string in the window matching the + string starting at strstart. + + Preconditions: + + strstart + DeflaterConstants.MAX_MATCH <= window.length. + + + True if a match greater than the minimum length is found + + + + Hashtable, hashing three characters to an index for window, so + that window[index]..window[index+2] have this hash code. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + prev[index & WMASK] points to the previous index that has the + same hash code as the string starting at index. This way + entries with the same hash code are in a linked list. + Note that the array should really be unsigned short, so you need + to and the values with 0xffff. + + + + + Points to the current character in the window. + + + + + lookahead is the number of characters starting at strstart in + window that are valid. + So window[strstart] until window[strstart+lookahead-1] are valid + characters. + + + + + This array contains the part of the uncompressed stream that + is of relevance. The current character is indexed by strstart. + + + + + The current compression function. + + + + + The input data for compression. + + + + + The total bytes of input read. + + + + + The offset into inputBuf, where input data starts. + + + + + The end offset of the input data. + + + + + The adler checksum + + + + + This is the DeflaterHuffman class. + + This class is not thread safe. This is inherent in the API, due + to the split of Deflate and SetInput. + + author of the original java version : Jochen Hoenicke + + + + + Resets the internal state of the tree + + + + + Check that all frequencies are zero + + + At least one frequency is non-zero + + + + + Set static codes and length + + new codes + length for new codes + + + + Build dynamic codes and lengths + + + + + Get encoded length + + Encoded length, the sum of frequencies * lengths + + + + Scan a literal or distance tree to determine the frequencies of the codes + in the bit length tree. + + + + + Write tree values + + Tree to write + + + + Pending buffer to use + + + + + Construct instance with pending buffer + + Pending buffer to use + + + + Reset internal state + + + + + Write all trees to pending buffer + + The number/rank of treecodes to send. + + + + Compress current buffer writing data to pending buffer + + + + + Flush block to output with no compression + + Data to write + Index of first byte to write + Count of bytes to write + True if this is the last block + + + + Flush block to output with compression + + Data to flush + Index of first byte to flush + Count of bytes to flush + True if this is the last block + + + + Get value indicating if internal buffer is full + + true if buffer is full + + + + Add literal to buffer + + Literal value to add to buffer. + Value indicating internal buffer is full + + + + Add distance code and length to literal and distance trees + + Distance code + Length + Value indicating if internal buffer is full + + + + Reverse the bits of a 16 bit value. + + Value to reverse bits + Value with bits reversed + + + + This class stores the pending output of the Deflater. + + author of the original java version : Jochen Hoenicke + + + + + Construct instance with default buffer size + + + + + Inflater is used to decompress data that has been compressed according + to the "deflate" standard described in rfc1951. + + By default Zlib (rfc1950) headers and footers are expected in the input. + You can use constructor public Inflater(bool noHeader) passing true + if there is no Zlib header information + + The usage is as following. First you have to set some input with + SetInput(), then Inflate() it. If inflate doesn't + inflate any bytes there may be three reasons: +
    +
  • IsNeedingInput() returns true because the input buffer is empty. + You have to provide more input with SetInput(). + NOTE: IsNeedingInput() also returns true when, the stream is finished. +
  • +
  • IsNeedingDictionary() returns true, you have to provide a preset + dictionary with SetDictionary().
  • +
  • IsFinished returns true, the inflater has finished.
  • +
+ Once the first output byte is produced, a dictionary will not be + needed at a later stage. + + author of the original java version : John Leuner, Jochen Hoenicke +
+
+ + + Copy lengths for literal codes 257..285 + + + + + Extra bits for literal codes 257..285 + + + + + Copy offsets for distance codes 0..29 + + + + + Extra bits for distance codes + + + + + These are the possible states for an inflater + + + + + This variable contains the current state. + + + + + The adler checksum of the dictionary or of the decompressed + stream, as it is written in the header resp. footer of the + compressed stream. + Only valid if mode is DECODE_DICT or DECODE_CHKSUM. + + + + + The number of bits needed to complete the current state. This + is valid, if mode is DECODE_DICT, DECODE_CHKSUM, + DECODE_HUFFMAN_LENBITS or DECODE_HUFFMAN_DISTBITS. + + + + + True, if the last block flag was set in the last block of the + inflated stream. This means that the stream ends after the + current block. + + + + + The total number of inflated bytes. + + + + + The total number of bytes set with setInput(). This is not the + value returned by the TotalIn property, since this also includes the + unprocessed input. + + + + + This variable stores the noHeader flag that was given to the constructor. + True means, that the inflated stream doesn't contain a Zlib header or + footer. + + + + + Creates a new inflater or RFC1951 decompressor + RFC1950/Zlib headers and footers will be expected in the input data + + + + + Creates a new inflater. + + + True if no RFC1950/Zlib header and footer fields are expected in the input data + + This is used for GZIPed/Zipped input. + + For compatibility with + Sun JDK you should provide one byte of input more than needed in + this case. + + + + + Resets the inflater so that a new stream can be decompressed. All + pending input and output will be discarded. + + + + + Decodes a zlib/RFC1950 header. + + + False if more input is needed. + + + The header is invalid. + + + + + Decodes the dictionary checksum after the deflate header. + + + False if more input is needed. + + + + + Decodes the huffman encoded symbols in the input stream. + + + false if more input is needed, true if output window is + full or the current block ends. + + + if deflated stream is invalid. + + + + + Decodes the adler checksum after the deflate stream. + + + false if more input is needed. + + + If checksum doesn't match. + + + + + Decodes the deflated stream. + + + false if more input is needed, or if finished. + + + if deflated stream is invalid. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + + + Sets the preset dictionary. This should only be called, if + needsDictionary() returns true and it should set the same + dictionary, that was used for deflating. The getAdler() + function returns the checksum of the dictionary needed. + + + The dictionary. + + + The index into buffer where the dictionary starts. + + + The number of bytes in the dictionary. + + + No dictionary is needed. + + + The adler checksum for the buffer is invalid + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + the input. + + + + + Sets the input. This should only be called, if needsInput() + returns true. + + + The source of input data + + + The index into buffer where the input starts. + + + The number of bytes of input to use. + + + No input is needed. + + + The index and/or count are wrong. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether IsNeedingDictionary(), + IsNeedingInput() or IsFinished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + The number of bytes written to the buffer, 0 if no further + output can be produced. + + + if buffer has length 0. + + + if deflated stream is invalid. + + + + + Inflates the compressed stream to the output buffer. If this + returns 0, you should check, whether needsDictionary(), + needsInput() or finished() returns true, to determine why no + further output is produced. + + + the output buffer. + + + the offset in buffer where storing starts. + + + the maximum number of bytes to output. + + + the number of bytes written to the buffer, 0 if no further output can be produced. + + + if count is less than 0. + + + if the index and / or count are wrong. + + + if deflated stream is invalid. + + + + + Returns true, if the input buffer is empty. + You should then call setInput(). + NOTE: This method also returns true when the stream is finished. + + + + + Returns true, if a preset dictionary is needed to inflate the input. + + + + + Returns true, if the inflater has finished. This means, that no + input is needed and no output can be produced. + + + + + Gets the adler checksum. This is either the checksum of all + uncompressed bytes returned by inflate(), or if needsDictionary() + returns true (and thus no output was yet produced) this is the + adler checksum of the expected dictionary. + + + the adler checksum. + + + + + Gets the total number of output bytes returned by Inflate(). + + + the total number of output bytes. + + + + + Gets the total number of processed compressed input bytes. + + + The total number of bytes of processed input bytes. + + + + + Gets the number of unprocessed input bytes. Useful, if the end of the + stream is reached and you want to further process the bytes after + the deflate stream. + + + The number of bytes of the input which have not been processed. + + + + + Continue decoding header from until more bits are needed or decoding has been completed + + Returns whether decoding could be completed + + + + Get literal/length huffman tree, must not be used before has returned true + + If hader has not been successfully read by the state machine + + + + Get distance huffman tree, must not be used before has returned true + + If hader has not been successfully read by the state machine + + + + Huffman tree used for inflation + + + + + Literal length tree + + + + + Distance tree + + + + + Constructs a Huffman tree from the array of code lengths. + + + the array of code lengths + + + + + Reads the next symbol from input. The symbol is encoded using the + huffman tree. + + + input the input source. + + + the next symbol, or -1 if not enough input is available. + + + + + This class is general purpose class for writing data to a buffer. + + It allows you to write bits as well as bytes + Based on DeflaterPending.java + + author of the original java version : Jochen Hoenicke + + + + + Internal work buffer + + + + + construct instance using default buffer size of 4096 + + + + + construct instance using specified buffer size + + + size to use for internal buffer + + + + + Clear internal state/buffers + + + + + Write a byte to buffer + + + The value to write + + + + + Write a short value to buffer LSB first + + + The value to write. + + + + + write an integer LSB first + + The value to write. + + + + Write a block of data to buffer + + data to write + offset of first byte to write + number of bytes to write + + + + The number of bits written to the buffer + + + + + Align internal buffer on a byte boundary + + + + + Write bits to internal buffer + + source of bits + number of bits to write + + + + Write a short value to internal buffer most significant byte first + + value to write + + + + Indicates if buffer has been flushed + + + + + Flushes the pending buffer into the given output array. If the + output array is to small, only a partial flush is done. + + The output array. + The offset into output array. + The maximum number of bytes to store. + The number of bytes flushed. + + + + Convert internal buffer to byte array. + Buffer is empty on completion + + + The internal buffer contents converted to a byte array. + + + + + A special stream deflating or compressing the bytes that are + written to it. It uses a Deflater to perform actual deflating.
+ Authors of the original java version : Tom Tromey, Jochen Hoenicke +
+
+ + + Creates a new DeflaterOutputStream with a default Deflater and default buffer size. + + + the output stream where deflated output should be written. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + default buffer size. + + + the output stream where deflated output should be written. + + + the underlying deflater. + + + + + Creates a new DeflaterOutputStream with the given Deflater and + buffer size. + + + The output stream where deflated output is written. + + + The underlying deflater to use + + + The buffer size in bytes to use when deflating (minimum value 512) + + + bufsize is less than or equal to zero. + + + baseOutputStream does not support writing + + + deflater instance is null + + + + + Finishes the stream by calling finish() on the deflater. + + + Not all input is deflated + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Allows client to determine if an entry can be patched after its added + + + + + The CryptoTransform currently being used to encrypt the compressed data. + + + + + Returns the 10 byte AUTH CODE to be appended immediately following the AES data stream. + + + + + Encrypt a block of data + + + Data to encrypt. NOTE the original contents of the buffer are lost + + + Offset of first byte in buffer to encrypt + + + Number of bytes in buffer to encrypt + + + + + Deflates everything in the input buffers. This will call + def.deflate() until all bytes from the input buffers + are processed. + + + + + Gets value indicating stream can be read from + + + + + Gets a value indicating if seeking is supported for this stream + This property always returns false + + + + + Get value indicating if this stream supports writing + + + + + Get current length of stream + + + + + Gets the current position within the stream. + + Any attempt to set position + + + + Sets the current position of this stream to the given value. Not supported by this class! + + The offset relative to the to seek. + The to seek from. + The new position in the stream. + Any access + + + + Sets the length of this stream to the given value. Not supported by this class! + + The new stream length. + Any access + + + + Read a byte from stream advancing position by one + + The byte read cast to an int. THe value is -1 if at the end of the stream. + Any access + + + + Read a block of bytes from stream + + The buffer to store read data in. + The offset to start storing at. + The maximum number of bytes to read. + The actual number of bytes read. Zero if end of stream is detected. + Any access + + + + Flushes the stream by calling Flush on the deflater and then + on the underlying stream. This ensures that all bytes are flushed. + + + + + Calls and closes the underlying + stream when is true. + + + + + Get the Auth code for AES encrypted entries + + + + + Writes a single byte to the compressed output stream. + + + The byte value. + + + + + Writes bytes from an array to the compressed stream. + + + The byte array + + + The offset into the byte array where to start. + + + The number of bytes to write. + + + + + This buffer is used temporarily to retrieve the bytes from the + deflater and write them to the underlying output stream. + + + + + The deflater which is used to deflate the stream. + + + + + Base stream the deflater depends on. + + + + + An input buffer customised for use by + + + The buffer supports decryption of incoming data. + + + + + Initialise a new instance of with a default buffer size + + The stream to buffer. + + + + Initialise a new instance of + + The stream to buffer. + The size to use for the buffer + A minimum buffer size of 1KB is permitted. Lower sizes are treated as 1KB. + + + + Get the length of bytes in the + + + + + Get the contents of the raw data buffer. + + This may contain encrypted data. + + + + Get the number of useable bytes in + + + + + Get the contents of the clear text buffer. + + + + + Get/set the number of bytes available + + + + + Call passing the current clear text buffer contents. + + The inflater to set input for. + + + + Fill the buffer from the underlying input stream. + + + + + Read a buffer directly from the input stream + + The buffer to fill + Returns the number of bytes read. + + + + Read a buffer directly from the input stream + + The buffer to read into + The offset to start reading data into. + The number of bytes to read. + Returns the number of bytes read. + + + + Read clear text data from the input stream. + + The buffer to add data to. + The offset to start adding data at. + The number of bytes to read. + Returns the number of bytes actually read. + + + + Read a from the input stream. + + Returns the byte read. + + + + Read an in little endian byte order. + + The short value read case to an int. + + + + Read an in little endian byte order. + + The int value read. + + + + Read a in little endian byte order. + + The long value read. + + + + Get/set the to apply to any data. + + Set this value to null to have no transform applied. + + + + This filter stream is used to decompress data compressed using the "deflate" + format. The "deflate" format is described in RFC 1951. + + This stream may form the basis for other decompression filters, such + as the GZipInputStream. + + Author of the original java version : John Leuner. + + + + + Create an InflaterInputStream with the default decompressor + and a default buffer size of 4KB. + + + The InputStream to read bytes from + + + + + Create an InflaterInputStream with the specified decompressor + and a default buffer size of 4KB. + + + The source of input data + + + The decompressor used to decompress data read from baseInputStream + + + + + Create an InflaterInputStream with the specified decompressor + and the specified buffer size. + + + The InputStream to read bytes from + + + The decompressor to use + + + Size of the buffer to use + + + + + Gets or sets a flag indicating ownership of underlying stream. + When the flag is true will close the underlying stream also. + + The default value is true. + + + + Skip specified number of bytes of uncompressed data + + + Number of bytes to skip + + + The number of bytes skipped, zero if the end of + stream has been reached + + + The number of bytes to skip is less than or equal to zero. + + + + + Clear any cryptographic state. + + + + + Returns 0 once the end of the stream (EOF) has been reached. + Otherwise returns 1. + + + + + Fills the buffer with more data to decompress. + + + Stream ends early + + + + + Gets a value indicating whether the current stream supports reading + + + + + Gets a value of false indicating seeking is not supported for this stream. + + + + + Gets a value of false indicating that this stream is not writeable. + + + + + A value representing the length of the stream in bytes. + + + + + The current position within the stream. + Throws a NotSupportedException when attempting to set the position + + Attempting to set the position + + + + Flushes the baseInputStream + + + + + Sets the position within the current stream + Always throws a NotSupportedException + + The relative offset to seek to. + The defining where to seek from. + The new position in the stream. + Any access + + + + Set the length of the current stream + Always throws a NotSupportedException + + The new length value for the stream. + Any access + + + + Writes a sequence of bytes to stream and advances the current position + This method always throws a NotSupportedException + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Any access + + + + Writes one byte to the current stream and advances the current position + Always throws a NotSupportedException + + The byte to write. + Any access + + + + Closes the input stream. When + is true the underlying stream is also closed. + + + + + Reads decompressed data into the provided buffer byte array + + + The array to read and decompress data into + + + The offset indicating where the data should be placed + + + The number of bytes to decompress + + The number of bytes read. Zero signals the end of stream + + Inflater needs a dictionary + + + + + Decompressor for this stream + + + + + Input buffer for this stream. + + + + + Base stream the inflater reads from. + + + + + The compressed size + + + + + Flag indicating whether this instance has been closed or not. + + + + + Contains the output from the Inflation process. + We need to have a window so that we can refer backwards into the output stream + to repeat stuff.
+ Author of the original java version : John Leuner +
+
+ + + Write a byte to this output window + + value to write + + if window is full + + + + + Append a byte pattern already in the window itself + + length of pattern to copy + distance from end of window pattern occurs + + If the repeated data overflows the window + + + + + Copy from input manipulator to internal window + + source of data + length of data to copy + the number of bytes copied + + + + Copy dictionary to window + + source dictionary + offset of start in source dictionary + length of dictionary + + If window isnt empty + + + + + Get remaining unfilled space in window + + Number of bytes left in window + + + + Get bytes available for output in window + + Number of bytes filled + + + + Copy contents of window to output + + buffer to copy to + offset to start at + number of bytes to count + The number of bytes copied + + If a window underflow occurs + + + + + Reset by clearing window so GetAvailable returns 0 + + + + + This class allows us to retrieve a specified number of bits from + the input buffer, as well as copy big byte blocks. + + It uses an int buffer to store up to 31 bits for direct + manipulation. This guarantees that we can get at least 16 bits, + but we only need at most 15, so this is all safe. + + There are some optimizations in this class, for example, you must + never peek more than 8 bits more than needed, and you must first + peek bits before you may drop them. This is not a general purpose + class but optimized for the behaviour of the Inflater. + + authors of the original java version : John Leuner, Jochen Hoenicke + + + + + Get the next sequence of bits but don't increase input pointer. bitCount must be + less or equal 16 and if this call succeeds, you must drop + at least n - 8 bits in the next call. + + The number of bits to peek. + + the value of the bits, or -1 if not enough bits available. */ + + + + + Tries to grab the next bits from the input and + sets to the value, adding . + + true if enough bits could be read, otherwise false + + + + Tries to grab the next bits from the input and + sets of to the value. + + true if enough bits could be read, otherwise false + + + + Drops the next n bits from the input. You should have called PeekBits + with a bigger or equal n before, to make sure that enough bits are in + the bit buffer. + + The number of bits to drop. + + + + Gets the next n bits and increases input pointer. This is equivalent + to followed by , except for correct error handling. + + The number of bits to retrieve. + + the value of the bits, or -1 if not enough bits available. + + + + + Gets the number of bits available in the bit buffer. This must be + only called when a previous PeekBits() returned -1. + + + the number of bits available. + + + + + Gets the number of bytes available. + + + The number of bytes available. + + + + + Skips to the next byte boundary. + + + + + Returns true when SetInput can be called + + + + + Copies bytes from input buffer to output buffer starting + at output[offset]. You have to make sure, that the buffer is + byte aligned. If not enough bytes are available, copies fewer + bytes. + + + The buffer to copy bytes to. + + + The offset in the buffer at which copying starts + + + The length to copy, 0 is allowed. + + + The number of bytes copied, 0 if no bytes were available. + + + Length is less than zero + + + Bit buffer isnt byte aligned + + + + + Resets state and empties internal buffers + + + + + Add more input for consumption. + Only call when IsNeedingInput returns true + + data to be input + offset of first byte of input + number of bytes of input to add. + + + + FastZipEvents supports all events applicable to FastZip operations. + + + + + Delegate to invoke when processing directories. + + + + + Delegate to invoke when processing files. + + + + + Delegate to invoke during processing of files. + + + + + Delegate to invoke when processing for a file has been completed. + + + + + Delegate to invoke when processing directory failures. + + + + + Delegate to invoke when processing file failures. + + + + + Raise the directory failure event. + + The directory causing the failure. + The exception for this event. + A boolean indicating if execution should continue or not. + + + + Fires the file failure handler delegate. + + The file causing the failure. + The exception for this failure. + A boolean indicating if execution should continue or not. + + + + Fires the ProcessFile delegate. + + The file being processed. + A boolean indicating if execution should continue or not. + + + + Fires the delegate + + The file whose processing has been completed. + A boolean indicating if execution should continue or not. + + + + Fires the process directory delegate. + + The directory being processed. + Flag indicating if the directory has matching files as determined by the current filter. + A of true if the operation should continue; false otherwise. + + + + The minimum timespan between events. + + The minimum period of time between events. + + The default interval is three seconds. + + + + FastZip provides facilities for creating and extracting zip files. + + + + + Defines the desired handling when overwriting files during extraction. + + + + + Prompt the user to confirm overwriting + + + + + Never overwrite files. + + + + + Always overwrite files. + + + + + Initialise a default instance of . + + + + + Initialise a new instance of using the specified + + The time setting to use when creating or extracting Zip entries. + Using TimeSetting.LastAccessTime[Utc] when + creating an archive will set the file time to the moment of reading. + + + + + Initialise a new instance of using the specified + + The time to set all values for created or extracted Zip Entries. + + + + Initialise a new instance of + + The events to use during operations. + + + + Get/set a value indicating whether empty directories should be created. + + + + + Get / set the password value. + + + + + Get / set the method of encrypting entries. + + + Only applies when is set. + Defaults to ZipCrypto for backwards compatibility purposes. + + + + + Get or set the active when creating Zip files. + + + + + + Get or set the active when creating Zip files. + + + + + Gets or sets the setting for Zip64 handling when writing. + + + The default value is dynamic which is not backwards compatible with old + programs and can cause problems with XP's built in compression which cant + read Zip64 archives. However it does avoid the situation were a large file + is added and cannot be completed correctly. + NOTE: Setting the size for entries before they are added is the best solution! + By default the EntryFactory used by FastZip will set the file size. + + + + + Get/set a value indicating whether file dates and times should + be restored when extracting files from an archive. + + The default value is false. + + + + Get/set a value indicating whether file attributes should + be restored during extract operations + + + + + Get/set the Compression Level that will be used + when creating the zip + + + + + Delegate called when confirming overwriting of files. + + + + + Create a zip file. + + The name of the zip file to create. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + + + + Create a zip file/archive. + + The name of the zip file to create. + The directory to obtain files and directories from. + True to recurse directories, false for no recursion. + The file filter to apply. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + The is closed after creation. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + true to leave open after the zip has been created, false to dispose it. + + + + Create a zip file. + + The name of the zip file to create. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + The file filter to apply. + The directory filter to apply. + true to leave open after the zip has been created, false to dispose it. + + + + Create a zip archive sending output to the passed. + + The stream to write archive data to. + The directory to source files from. + True to recurse directories, false for no recursion. + For performing the actual file system scan + true to leave open after the zip has been created, false to dispose it. + The is closed after creation. + + + + Extract the contents of a zip file. + + The zip file to extract from. + The directory to save extracted information in. + A filter to apply to files. + + + + Extract the contents of a zip file. + + The zip file to extract from. + The directory to save extracted information in. + The style of overwriting to apply. + A delegate to invoke when confirming overwriting. + A filter to apply to files. + A filter to apply to directories. + Flag indicating whether to restore the date and time for extracted files. + Allow parent directory traversal in file paths (e.g. ../file) + + + + Extract the contents of a zip file held in a stream. + + The seekable input stream containing the zip to extract from. + The directory to save extracted information in. + The style of overwriting to apply. + A delegate to invoke when confirming overwriting. + A filter to apply to files. + A filter to apply to directories. + Flag indicating whether to restore the date and time for extracted files. + Flag indicating whether the inputStream will be closed by this method. + Allow parent directory traversal in file paths (e.g. ../file) + + + + Defines factory methods for creating new values. + + + + + Create a for a file given its name + + The name of the file to create an entry for. + Returns a file entry based on the passed. + + + + Create a for a file given its name + + The name of the file to create an entry for. + If true get details from the file system if the file exists. + Returns a file entry based on the passed. + + + + Create a for a file given its actual name and optional override name + + The name of the file to create an entry for. + An alternative name to be used for the new entry. Null if not applicable. + If true get details from the file system if the file exists. + Returns a file entry based on the passed. + + + + Create a for a directory given its name + + The name of the directory to create an entry for. + Returns a directory entry based on the passed. + + + + Create a for a directory given its name + + The name of the directory to create an entry for. + If true get details from the file system for this directory if it exists. + Returns a directory entry based on the passed. + + + + Get/set the applicable. + + + + + Get the in use. + + + + + Get the value to use when is set to , + or if not specified, the value of when the class was the initialized + + + + + WindowsNameTransform transforms names to windows compatible ones. + + + + + The maximum windows path name permitted. + + This may not valid for all windows systems - CE?, etc but I cant find the equivalent in the CLR. + + + + In this case we need Windows' invalid path characters. + Path.GetInvalidPathChars() only returns a subset invalid on all platforms. + + + + + Initialises a new instance of + + + Allow parent directory traversal in file paths (e.g. ../file) + + + + Initialise a default instance of + + + + + Gets or sets a value containing the target directory to prefix values with. + + + + + Allow parent directory traversal in file paths (e.g. ../file) + + + + + Gets or sets a value indicating whether paths on incoming values should be removed. + + + + + Transform a Zip directory name to a windows directory name. + + The directory name to transform. + The transformed name. + + + + Transform a Zip format file name to a windows style one. + + The file name to transform. + The transformed name. + + + + Test a name to see if it is a valid name for a windows filename as extracted from a Zip archive. + + The name to test. + Returns true if the name is a valid zip name; false otherwise. + The filename isnt a true windows path in some fundamental ways like no absolute paths, no rooted paths etc. + + + + Force a name to be valid by replacing invalid characters with a fixed value + + The name to make valid + The replacement character to use for any invalid characters. + Returns a valid name + + + + Gets or set the character to replace invalid characters during transformations. + + + + + Determines how entries are tested to see if they should use Zip64 extensions or not. + + + + + Zip64 will not be forced on entries during processing. + + An entry can have this overridden if required + + + + Zip64 should always be used. + + + + + #ZipLib will determine use based on entry values when added to archive. + + + + + The kind of compression used for an entry in an archive + + + + + A direct copy of the file contents is held in the archive + + + + + Common Zip compression method using a sliding dictionary + of up to 32KB and secondary compression from Huffman/Shannon-Fano trees + + + + + An extension to deflate with a 64KB window. Not supported by #Zip currently + + + + + BZip2 compression. Not supported by #Zip. + + + + + LZMA compression. Not supported by #Zip. + + + + + PPMd compression. Not supported by #Zip. + + + + + WinZip special for AES encryption, Now supported by #Zip. + + + + + Identifies the encryption algorithm used for an entry + + + + + No encryption has been used. + + + + + Encrypted using PKZIP 2.0 or 'classic' encryption. + + + + + DES encryption has been used. + + + + + RC2 encryption has been used for encryption. + + + + + Triple DES encryption with 168 bit keys has been used for this entry. + + + + + Triple DES with 112 bit keys has been used for this entry. + + + + + AES 128 has been used for encryption. + + + + + AES 192 has been used for encryption. + + + + + AES 256 has been used for encryption. + + + + + RC2 corrected has been used for encryption. + + + + + Blowfish has been used for encryption. + + + + + Twofish has been used for encryption. + + + + + RC4 has been used for encryption. + + + + + An unknown algorithm has been used for encryption. + + + + + Defines the contents of the general bit flags field for an archive entry. + + + + + Bit 0 if set indicates that the file is encrypted + + + + + Bits 1 and 2 - Two bits defining the compression method (only for Method 6 Imploding and 8,9 Deflating) + + + + + Bit 3 if set indicates a trailing data descriptor is appended to the entry data + + + + + Bit 4 is reserved for use with method 8 for enhanced deflation + + + + + Bit 5 if set indicates the file contains Pkzip compressed patched data. + Requires version 2.7 or greater. + + + + + Bit 6 if set indicates strong encryption has been used for this entry. + + + + + Bit 7 is currently unused + + + + + Bit 8 is currently unused + + + + + Bit 9 is currently unused + + + + + Bit 10 is currently unused + + + + + Bit 11 if set indicates the filename and + comment fields for this file must be encoded using UTF-8. + + + + + Bit 12 is documented as being reserved by PKware for enhanced compression. + + + + + Bit 13 if set indicates that values in the local header are masked to hide + their actual values, and the central directory is encrypted. + + + Used when encrypting the central directory contents. + + + + + Bit 14 is documented as being reserved for use by PKware + + + + + Bit 15 is documented as being reserved for use by PKware + + + + + This class contains constants used for Zip format files + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See . + + + + + The version made by field for entries in the central header when created by this library + + + This is also the Zip version for the library when comparing against the version required to extract + for an entry. See ZipInputStream.CanDecompressEntry. + + + + + The minimum version required to support strong encryption + + + + + The minimum version required to support strong encryption + + + + + Version indicating AES encryption + + + + + The version required for Zip64 extensions (4.5 or higher) + + + + + The version required for BZip2 compression (4.6 or higher) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of local entry header (excluding variable length fields at end) + + + + + Size of Zip64 data descriptor + + + + + Size of data descriptor + + + + + Size of data descriptor + + + + + Size of central header entry (excluding variable fields) + + + + + Size of central header entry + + + + + Size of end of central record (excluding variable fields) + + + + + Size of end of central record (excluding variable fields) + + + + + Size of 'classic' cryptographic header stored before any entry data + + + + + Size of cryptographic header stored before entry data + + + + + The size of the Zip64 central directory locator. + + + + + Signature for local entry header + + + + + Signature for local entry header + + + + + Signature for spanning entry + + + + + Signature for spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for temporary spanning entry + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for data descriptor + + + This is only used where the length, Crc, or compressed size isnt known when the + entry is created and the output stream doesnt support seeking. + The local entry cannot be 'patched' with the correct values in this case + so the values are recorded after the data prefixed by this header, as well as in the central directory. + + + + + Signature for central header + + + + + Signature for central header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central file header + + + + + Signature for Zip64 central directory locator + + + + + Signature for archive extra data signature (were headers are encrypted). + + + + + Central header digital signature + + + + + Central header digital signature + + + + + End of central directory record signature + + + + + End of central directory record signature + + + + + Default encoding used for string conversion. 0 gives the default system OEM code page. + Using the default code page isnt the full solution necessarily + there are many variable factors, codepage 850 is often a good choice for + European users, however be careful about compatability. + + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + Deprecated wrapper for + + + + The method of encrypting entries when creating zip archives. + + + + + No encryption will be used. + + + + + Encrypt entries with ZipCrypto. + + + + + Encrypt entries with AES 128. + + + + + Encrypt entries with AES 256. + + + + + Defines known values for the property. + + + + + Host system = MSDOS + + + + + Host system = Amiga + + + + + Host system = Open VMS + + + + + Host system = Unix + + + + + Host system = VMCms + + + + + Host system = Atari ST + + + + + Host system = OS2 + + + + + Host system = Macintosh + + + + + Host system = ZSystem + + + + + Host system = Cpm + + + + + Host system = Windows NT + + + + + Host system = MVS + + + + + Host system = VSE + + + + + Host system = Acorn RISC + + + + + Host system = VFAT + + + + + Host system = Alternate MVS + + + + + Host system = BEOS + + + + + Host system = Tandem + + + + + Host system = OS400 + + + + + Host system = OSX + + + + + Host system = WinZIP AES + + + + + This class represents an entry in a zip archive. This can be a file + or a directory + ZipFile and ZipInputStream will give you instances of this class as + information about the members in an archive. ZipOutputStream + uses an instance of this class when creating an entry in a Zip file. +
+
Author of the original java version : Jochen Hoenicke +
+
+ + + Creates a zip entry with the given name. + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with relative names only. + There are with no device names and path elements are separated by '/' characters. + + + The name passed is null + + + + + Creates a zip entry with the given name and version required to extract + + + The name for this entry. Can include directory components. + The convention for names is 'unix' style paths with no device names and + path elements separated by '/' characters. This is not enforced see CleanName + on how to ensure names are valid if this is desired. + + + The minimum 'feature version' required this entry + + + The name passed is null + + + + + Initializes an entry with the given name and made by information + + Name for this entry + Version and HostSystem Information + Minimum required zip feature version required to extract this entry + Compression method for this entry. + + The name passed is null + + + versionRequiredToExtract should be 0 (auto-calculate) or > 10 + + + This constructor is used by the ZipFile class when reading from the central header + It is not generally useful, use the constructor specifying the name only. + + + + + Creates a deep copy of the given zip entry. + + + The entry to copy. + + + + + Get a value indicating whether the entry has a CRC value available. + + + + + Get/Set flag indicating if entry is encrypted. + A simple helper routine to aid interpretation of flags + + This is an assistant that interprets the flags property. + + +
+ This is an assistant that interprets the flags property. + + + + Value used during password checking for PKZIP 2.0 / 'classic' encryption. + + + + + Get/Set general purpose bit flag for entry + + + General purpose bit flag
+
+ Bit 0: If set, indicates the file is encrypted
+ Bit 1-2 Only used for compression type 6 Imploding, and 8, 9 deflating
+ Imploding:
+ Bit 1 if set indicates an 8K sliding dictionary was used. If clear a 4k dictionary was used
+ Bit 2 if set indicates 3 Shannon-Fanno trees were used to encode the sliding dictionary, 2 otherwise
+
+ Deflating:
+ Bit 2 Bit 1
+ 0 0 Normal compression was used
+ 0 1 Maximum compression was used
+ 1 0 Fast compression was used
+ 1 1 Super fast compression was used
+
+ Bit 3: If set, the fields crc-32, compressed size + and uncompressed size are were not able to be written during zip file creation + The correct values are held in a data descriptor immediately following the compressed data.
+ Bit 4: Reserved for use by PKZIP for enhanced deflating
+ Bit 5: If set indicates the file contains compressed patch data
+ Bit 6: If set indicates strong encryption was used.
+ Bit 7-10: Unused or reserved
+ Bit 11: If set the name and comments for this entry are in unicode.
+ Bit 12-15: Unused or reserved
+
+ + +
+ + + Get/Set index of this entry in Zip file + + This is only valid when the entry is part of a + + + + Get/set offset for use in central header + + + + + Get/Set external file attributes as an integer. + The values of this are operating system dependent see + HostSystem for details + + + + + Get the version made by for this entry or zero if unknown. + The value / 10 indicates the major version number, and + the value mod 10 is the minor version number + + + + + Get a value indicating this entry is for a DOS/Windows system. + + + + + Test the external attributes for this to + see if the external attributes are Dos based (including WINNT and variants) + and match the values + + The attributes to test. + Returns true if the external attributes are known to be DOS/Windows + based and have the same attributes set as the value passed. + + + + Gets the compatibility information for the external file attribute + If the external file attributes are compatible with MS-DOS and can be read + by PKZIP for DOS version 2.04g then this value will be zero. Otherwise the value + will be non-zero and identify the host system on which the attributes are compatible. + + + + The values for this as defined in the Zip File format and by others are shown below. The values are somewhat + misleading in some cases as they are not all used as shown. You should consult the relevant documentation + to obtain up to date and correct information. The modified appnote by the infozip group is + particularly helpful as it documents a lot of peculiarities. The document is however a little dated. + + 0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems) + 1 - Amiga + 2 - OpenVMS + 3 - Unix + 4 - VM/CMS + 5 - Atari ST + 6 - OS/2 HPFS + 7 - Macintosh + 8 - Z-System + 9 - CP/M + 10 - Windows NTFS + 11 - MVS (OS/390 - Z/OS) + 12 - VSE + 13 - Acorn Risc + 14 - VFAT + 15 - Alternate MVS + 16 - BeOS + 17 - Tandem + 18 - OS/400 + 19 - OS/X (Darwin) + 99 - WinZip AES + remainder - unused + + + + + + Get minimum Zip feature version required to extract this entry + + + Minimum features are defined as:
+ 1.0 - Default value
+ 1.1 - File is a volume label
+ 2.0 - File is a folder/directory
+ 2.0 - File is compressed using Deflate compression
+ 2.0 - File is encrypted using traditional encryption
+ 2.1 - File is compressed using Deflate64
+ 2.5 - File is compressed using PKWARE DCL Implode
+ 2.7 - File is a patch data set
+ 4.5 - File uses Zip64 format extensions
+ 4.6 - File is compressed using BZIP2 compression
+ 5.0 - File is encrypted using DES
+ 5.0 - File is encrypted using 3DES
+ 5.0 - File is encrypted using original RC2 encryption
+ 5.0 - File is encrypted using RC4 encryption
+ 5.1 - File is encrypted using AES encryption
+ 5.1 - File is encrypted using corrected RC2 encryption
+ 5.1 - File is encrypted using corrected RC2-64 encryption
+ 6.1 - File is encrypted using non-OAEP key wrapping
+ 6.2 - Central directory encryption (not confirmed yet)
+ 6.3 - File is compressed using LZMA
+ 6.3 - File is compressed using PPMD+
+ 6.3 - File is encrypted using Blowfish
+ 6.3 - File is encrypted using Twofish
+
+ +
+ + + Get a value indicating whether this entry can be decompressed by the library. + + This is based on the and + whether the compression method is supported. + + + + Force this entry to be recorded using Zip64 extensions. + + + + + Get a value indicating whether Zip64 extensions were forced. + + A value of true if Zip64 extensions have been forced on; false if not. + + + + Gets a value indicating if the entry requires Zip64 extensions + to store the full entry values. + + A value of true if a local header requires Zip64 extensions; false if not. + + + + Get a value indicating whether the central directory entry requires Zip64 extensions to be stored. + + + + + Get/Set DosTime value. + + + The MS-DOS date format can only represent dates between 1/1/1980 and 12/31/2107. + + + + + Gets/Sets the time of last modification of the entry. + + + The property is updated to match this as far as possible. + + + + + Returns the entry name. + + + The unix naming convention is followed. + Path components in the entry should always separated by forward slashes ('/'). + Dos device names like C: should also be removed. + See the class, or + + + + + Gets/Sets the size of the uncompressed data. + + + The size or -1 if unknown. + + Setting the size before adding an entry to an archive can help + avoid compatibility problems with some archivers which don't understand Zip64 extensions. + + + + Gets/Sets the size of the compressed data. + + + The compressed entry size or -1 if unknown. + + + + + Gets/Sets the crc of the uncompressed data. + + + Crc is not in the range 0..0xffffffffL + + + The crc value or -1 if unknown. + + + + + Gets/Sets the compression method. + + + The compression method for this entry + + + + + Gets the compression method for outputting to the local or central header. + Returns same value as CompressionMethod except when AES encrypting, which + places 99 in the method and places the real method in the extra data. + + + + + Gets/Sets the extra data. + + + Extra data is longer than 64KB (0xffff) bytes. + + + Extra data or null if not set. + + + + + For AES encrypted files returns or sets the number of bits of encryption (128, 192 or 256). + When setting, only 0 (off), 128 or 256 is supported. + + + + + AES Encryption strength for storage in extra data in entry header. + 1 is 128 bit, 2 is 192 bit, 3 is 256 bit. + + + + + Returns the length of the salt, in bytes + + Key size -> Salt length: 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes. + + + + Number of extra bytes required to hold the AES Header fields (Salt, Pwd verify, AuthCode) + + File format: + Bytes | Content + ---------+--------------------------- + Variable | Salt value + 2 | Password verification value + Variable | Encrypted file data + 10 | Authentication code + + + + Number of extra bytes required to hold the encryption header fields. + + + + + Process extra data fields updating the entry based on the contents. + + True if the extra data fields should be handled + for a local header, rather than for a central header. + + + + + Gets/Sets the entry comment. + + + If comment is longer than 0xffff. + + + The comment or null if not set. + + + A comment is only available for entries when read via the class. + The class doesn't have the comment data available. + + + + + Gets a value indicating if the entry is a directory. + however. + + + A directory is determined by an entry name with a trailing slash '/'. + The external file attributes can also indicate an entry is for a directory. + Currently only dos/windows attributes are tested in this manner. + The trailing slash convention should always be followed. + + + + + Get a value of true if the entry appears to be a file; false otherwise + + + This only takes account of DOS/Windows attributes. Other operating systems are ignored. + For linux and others the result may be incorrect. + + + + + Test entry to see if data can be extracted. + + Returns true if data can be extracted for this entry; false otherwise. + + + + Creates a copy of this zip entry. + + An that is a copy of the current instance. + + + + Gets a string representation of this ZipEntry. + + A readable textual representation of this + + + + Test a compression method to see if this library + supports extracting data compressed with that method + + The compression method to test. + Returns true if the compression method is supported; false otherwise + + + + Cleans a name making it conform to Zip file conventions. + Devices names ('c:\') and UNC share names ('\\server\share') are removed + and forward slashes ('\') are converted to back slashes ('/'). + Names are made relative by trimming leading slashes which is compatible + with the ZIP naming convention. + + The name to clean + The 'cleaned' name. + + The Zip name transform class is more flexible. + + + + + General ZipEntry helper extensions + + + + + Efficiently check if a flag is set without enum un-/boxing + + + + Returns whether the flag was set + + + + Efficiently set a flag without enum un-/boxing + + + + Whether the passed flag should be set (1) or cleared (0) + + + + Basic implementation of + + + + + Defines the possible values to be used for the . + + + + + Use the recorded LastWriteTime value for the file. + + + + + Use the recorded LastWriteTimeUtc value for the file + + + + + Use the recorded CreateTime value for the file. + + + + + Use the recorded CreateTimeUtc value for the file. + + + + + Use the recorded LastAccessTime value for the file. + + + + + Use the recorded LastAccessTimeUtc value for the file. + + + + + Use a fixed value. + + The actual value used can be + specified via the constructor or + using the with the setting set + to which will use the when this class was constructed. + The property can also be used to set this value. + + + + Initialise a new instance of the class. + + A default , and the LastWriteTime for files is used. + + + + Initialise a new instance of using the specified + + The time setting to use when creating Zip entries. + + + + Initialise a new instance of using the specified + + The time to set all values to. + + + + Get / set the to be used when creating new values. + + + Setting this property to null will cause a default name transform to be used. + + + + + Get / set the in use. + + + + + Get / set the value to use when is set to + + + + + A bitmask defining the attributes to be retrieved from the actual file. + + The default is to get all possible attributes from the actual file. + + + + A bitmask defining which attributes are to be set on. + + By default no attributes are set on. + + + + Get set a value indicating whether unidoce text should be set on. + + + + + Make a new for a file. + + The name of the file to create a new entry for. + Returns a new based on the . + + + + Make a new for a file. + + The name of the file to create a new entry for. + If true entry detail is retrieved from the file system if the file exists. + Returns a new based on the . + + + + Make a new from a name. + + The name of the file to create a new entry for. + An alternative name to be used for the new entry. Null if not applicable. + If true entry detail is retrieved from the file system if the file exists. + Returns a new based on the . + + + + Make a new for a directory. + + The raw untransformed name for the new directory + Returns a new representing a directory. + + + + Make a new for a directory. + + The raw untransformed name for the new directory + If true entry detail is retrieved from the file system if the file exists. + Returns a new representing a directory. + + + + ZipException represents exceptions specific to Zip classes and code. + + + + + Initialise a new instance of . + + + + + Initialise a new instance of with its message string. + + A that describes the error. + + + + Initialise a new instance of . + + A that describes the error. + The that caused this exception. + + + + Initializes a new instance of the ZipException class with serialized data. + + + The System.Runtime.Serialization.SerializationInfo that holds the serialized + object data about the exception being thrown. + + + The System.Runtime.Serialization.StreamingContext that contains contextual information + about the source or destination. + + + + + ExtraData tagged value interface. + + + + + Get the ID for this tagged data value. + + + + + Set the contents of this instance from the data passed. + + The data to extract contents from. + The offset to begin extracting data from. + The number of bytes to extract. + + + + Get the data representing this instance. + + Returns the data for this instance. + + + + A raw binary tagged value + + + + + Initialise a new instance. + + The tag ID. + + + + Get the ID for this tagged data value. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Get /set the binary data representing this instance. + + The raw binary data representing this instance. + + + + The tag ID for this instance. + + + + + Class representing extended unix date time values. + + + + + Flags indicate which values are included in this instance. + + + + + The modification time is included + + + + + The access time is included + + + + + The create time is included. + + + + + Get the ID + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a value to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + The standard Unix time is a signed integer data type, directly encoding the Unix time number, + which is the number of seconds since 1970-01-01. + Being 32 bits means the values here cover a range of about 136 years. + The minimum representable time is 1901-12-13 20:45:52, + and the maximum representable time is 2038-01-19 03:14:07. + + + + + Get /set the Modification Time + + + + + + + Get / set the Access Time + + + + + + + Get / Set the Create Time + + + + + + + Get/set the values to include. + + + + + Class handling NT date time values. + + + + + Get the ID for this tagged data value. + + + + + Set the data from the raw values provided. + + The raw data to extract values from. + The index to start extracting values from. + The number of bytes available. + + + + Get the binary data representing this instance. + + The raw binary data representing this instance. + + + + Test a valuie to see if is valid and can be represented here. + + The value to test. + Returns true if the value is valid and can be represented; false if not. + + NTFS filetimes are 64-bit unsigned integers, stored in Intel + (least significant byte first) byte order. They determine the + number of 1.0E-07 seconds (1/10th microseconds!) past WinNT "epoch", + which is "01-Jan-1601 00:00:00 UTC". 28 May 60056 is the upper limit + + + + + Get/set the last modification time. + + + + + Get /set the create time + + + + + Get /set the last access time. + + + + + A factory that creates tagged data instances. + + + + + Get data for a specific tag value. + + The tag ID to find. + The data to search. + The offset to begin extracting data from. + The number of bytes to extract. + The located value found, or null if not found. + + + + + A class to handle the extra data field for Zip entries + + + Extra data contains 0 or more values each prefixed by a header tag and length. + They contain zero or more bytes of actual data. + The data is held internally using a copy on write strategy. This is more efficient but + means that for extra data created by passing in data can have the values modified by the caller + in some circumstances. + + + + + Initialise a default instance. + + + + + Initialise with known extra data. + + The extra data. + + + + Get the raw extra data value + + Returns the raw byte[] extra data this instance represents. + + + + Clear the stored data. + + + + + Gets the current extra data length. + + + + + Get a read-only for the associated tag. + + The tag to locate data for. + Returns a containing tag data or null if no tag was found. + + + + Get the tagged data for a tag. + + The tag to search for. + Returns a tagged value or null if none found. + + + + Get the length of the last value found by + + This is only valid if has previously returned true. + + + + Get the index for the current read value. + + This is only valid if has previously returned true. + Initially the result will be the index of the first byte of actual data. The value is updated after calls to + , and . + + + + Get the number of bytes remaining to be read for the current value; + + + + + Find an extra data value + + The identifier for the value to find. + Returns true if the value was found; false otherwise. + + + + Add a new entry to extra data. + + The value to add. + + + + Add a new entry to extra data + + The ID for this entry. + The data to add. + If the ID already exists its contents are replaced. + + + + Start adding a new entry. + + Add data using , , , or . + The new entry is completed and actually added by calling + + + + + Add entry data added since using the ID passed. + + The identifier to use for this entry. + + + + Add a byte of data to the pending new entry. + + The byte to add. + + + + + Add data to a pending new entry. + + The data to add. + + + + + Add a short value in little endian order to the pending new entry. + + The data to add. + + + + + Add an integer value in little endian order to the pending new entry. + + The data to add. + + + + + Add a long value in little endian order to the pending new entry. + + The data to add. + + + + + Delete an extra data field. + + The identifier of the field to delete. + Returns true if the field was found and deleted. + + + + Read a long in little endian form from the last found data value + + Returns the long value read. + + + + Read an integer in little endian form from the last found data value. + + Returns the integer read. + + + + Read a short value in little endian form from the last found data value. + + Returns the short value read. + + + + Read a byte from an extra data + + The byte value read or -1 if the end of data has been reached. + + + + Skip data during reading. + + The number of bytes to skip. + + + + Internal form of that reads data at any location. + + Returns the short value read. + + + + Dispose of this instance. + + + + + Arguments used with KeysRequiredEvent + + + + + Initialise a new instance of + + The name of the file for which keys are required. + + + + Initialise a new instance of + + The name of the file for which keys are required. + The current key value. + + + + Gets the name of the file for which keys are required. + + + + + Gets or sets the key value + + + + + The strategy to apply to testing. + + + + + Find the first error only. + + + + + Find all possible errors. + + + + + The operation in progress reported by a during testing. + + TestArchive + + + + Setting up testing. + + + + + Testing an individual entries header + + + + + Testing an individual entries data + + + + + Testing an individual entry has completed. + + + + + Running miscellaneous tests + + + + + Testing is complete + + + + + Status returned by during testing. + + TestArchive + + + + Initialise a new instance of + + The this status applies to. + + + + Get the current in progress. + + + + + Get the this status is applicable to. + + + + + Get the current/last entry tested. + + + + + Get the number of errors detected so far. + + + + + Get the number of bytes tested so far for the current entry. + + + + + Get a value indicating whether the last entry test was valid. + + + + + Delegate invoked during testing if supplied indicating current progress and status. + + If the message is non-null an error has occured. If the message is null + the operation as found in status has started. + + + + The possible ways of applying updates to an archive. + + + + + Perform all updates on temporary files ensuring that the original file is saved. + + + + + Update the archive directly, which is faster but less safe. + + + + + This class represents a Zip archive. You can ask for the contained + entries, or get an input stream for a file entry. The entry is + automatically decompressed. + + You can also update the archive adding or deleting entries. + + This class is thread safe for input: You can open input streams for arbitrary + entries in different threads. +
+
Author of the original java version : Jochen Hoenicke +
+ + + using System; + using System.Text; + using System.Collections; + using System.IO; + + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + static public void Main(string[] args) + { + using (ZipFile zFile = new ZipFile(args[0])) { + Console.WriteLine("Listing of : " + zFile.Name); + Console.WriteLine(""); + Console.WriteLine("Raw Size Size Date Time Name"); + Console.WriteLine("-------- -------- -------- ------ ---------"); + foreach (ZipEntry e in zFile) { + if ( e.IsFile ) { + DateTime d = e.DateTime; + Console.WriteLine("{0, -10}{1, -10}{2} {3} {4}", e.Size, e.CompressedSize, + d.ToString("dd-MM-yy"), d.ToString("HH:mm"), + e.Name); + } + } + } + } + } + + +
+ + + Delegate for handling keys/password setting during compression/decompression. + + + + + Event handler for handling encryption keys. + + + + + Handles getting of encryption keys when required. + + The file for which encryption keys are required. + + + + Get/set the encryption key value. + + + + + Password to be used for encrypting/decrypting files. + + Set to null if no password is required. + + + + Get a value indicating whether encryption keys are currently available. + + + + + Opens a Zip file with the given name for reading. + + The name of the file to open. + The argument supplied is null. + + An i/o error occurs + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + The supplied argument is null. + + An i/o error occurs. + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + true to leave the file open when the ZipFile is disposed, false to dispose of it + The supplied argument is null. + + An i/o error occurs. + + + The file doesn't contain a valid zip archive. + + + + + Opens a Zip file reading the given . + + The to read archive data from. + + An i/o error occurs + + + The stream doesn't contain a valid zip archive.
+
+ + The stream doesnt support seeking. + + + The stream argument is null. + +
+ + + Opens a Zip file reading the given . + + The to read archive data from. + true to leave the stream open when the ZipFile is disposed, false to dispose of it + + An i/o error occurs + + + The stream doesn't contain a valid zip archive.
+
+ + The stream doesnt support seeking. + + + The stream argument is null. + +
+ + + Initialises a default instance with no entries and no file storage. + + + + + Finalize this instance. + + + + + Closes the ZipFile. If the stream is owned then this also closes the underlying input stream. + Once closed, no further instance methods should be called. + + + An i/o error occurs. + + + + + Create a new whose data will be stored in a file. + + The name of the archive to create. + Returns the newly created + is null + + + + Create a new whose data will be stored on a stream. + + The stream providing data storage. + Returns the newly created + is null + doesnt support writing. + + + + Get/set a flag indicating if the underlying stream is owned by the ZipFile instance. + If the flag is true then the stream will be closed when Close is called. + + + The default value is true in all cases. + + + + + Get a value indicating whether + this archive is embedded in another file or not. + + + + + Get a value indicating that this archive is a new one. + + + + + Gets the comment for the zip file. + + + + + Gets the name of this zip file. + + + + + Gets the number of entries in this zip file. + + + The Zip file has been closed. + + + + + Get the number of entries contained in this . + + + + + Indexer property for ZipEntries + + + + + Gets an enumerator for the Zip entries in this Zip file. + + Returns an for this archive. + + The Zip file has been closed. + + + + + Return the index of the entry with a matching name + + Entry name to find + If true the comparison is case insensitive + The index position of the matching entry or -1 if not found + + The Zip file has been closed. + + + + + Searches for a zip entry in this archive with the given name. + String comparisons are case insensitive + + + The name to find. May contain directory components separated by slashes ('/'). + + + A clone of the zip entry, or null if no entry with that name exists. + + + The Zip file has been closed. + + + + + Gets an input stream for reading the given zip entry data in an uncompressed form. + Normally the should be an entry returned by GetEntry(). + + The to obtain a data for + An input containing data for this + + The ZipFile has already been closed + + + The compression method for the entry is unknown + + + The entry is not found in the ZipFile + + + + + Creates an input stream reading a zip entry + + The index of the entry to obtain an input stream for. + + An input containing data for this + + + The ZipFile has already been closed + + + The compression method for the entry is unknown + + + The entry is not found in the ZipFile + + + + + Test an archive for integrity/validity + + Perform low level data Crc check + true if all tests pass, false otherwise + Testing will terminate on the first error found. + + + + Test an archive for integrity/validity + + Perform low level data Crc check + The to apply. + The handler to call during testing. + true if all tests pass, false otherwise + The object has already been closed. + + + + Test a local header against that provided from the central directory + + + The entry to test against + + The type of tests to carry out. + The offset of the entries data in the file + + + + The kind of update to apply. + + + + + Get / set the to apply to names when updating. + + + + + Get/set the used to generate values + during updates. + + + + + Get /set the buffer size to be used when updating this zip file. + + + + + Get a value indicating an update has been started. + + + + + Get / set a value indicating how Zip64 Extension usage is determined when adding entries. + + + + + Begin updating this archive. + + The archive storage for use during the update. + The data source to utilise during updating. + ZipFile has been closed. + One of the arguments provided is null + ZipFile has been closed. + + + + Begin updating to this archive. + + The storage to use during the update. + + + + Begin updating this archive. + + + + + + + + Commit current updates, updating this archive. + + + + ZipFile has been closed. + + + + Abort updating leaving the archive unchanged. + + + + + + + Set the file comment to be recorded when the current update is commited. + + The comment to record. + ZipFile has been closed. + + + + Add a new entry to the archive. + + The name of the file to add. + The compression method to use. + Ensure Unicode text is used for name and comment for this entry. + Argument supplied is null. + ZipFile has been closed. + Compression method is not supported for creating entries. + + + + Add a new entry to the archive. + + The name of the file to add. + The compression method to use. + ZipFile has been closed. + Compression method is not supported for creating entries. + + + + Add a file to the archive. + + The name of the file to add. + Argument supplied is null. + + + + Add a file to the archive. + + The name of the file to add. + The name to use for the on the Zip file created. + Argument supplied is null. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + The compression method to use. + Compression method is not supported for creating entries. + + + + Add a file entry with data. + + The source of the data for this entry. + The name to give to the entry. + The compression method to use. + Ensure Unicode text is used for name and comments for this entry. + Compression method is not supported for creating entries. + + + + Add a that contains no data. + + The entry to add. + This can be used to add directories, volume labels, or empty file entries. + + + + Add a with data. + + The source of the data for this entry. + The entry to add. + This can be used to add file entries with a custom data source. + + The encryption method specified in is unsupported. + + Compression method is not supported for creating entries. + + + + Add a directory entry to the archive. + + The directory to add. + + + + Check if the specified compression method is supported for adding a new entry. + + The compression method for the new entry. + + + + Delete an entry by name + + The filename to delete + True if the entry was found and deleted; false otherwise. + + + + Delete a from the archive. + + The entry to delete. + + + + Write an unsigned short in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Write an unsigned int in little endian byte order. + + + + + Write a long in little endian byte order. + + + + + Get a raw memory buffer. + + Returns a raw memory buffer. + + + + Get the size of the source descriptor for a . + + The update to get the size for. + Whether to include the signature size + The descriptor size, zero if there isn't one. + + + + Get an output stream for the specified + + The entry to get an output stream for. + The output stream obtained for the entry. + + + + Class used to sort updates. + + + + + Compares two objects and returns a value indicating whether one is + less than, equal to or greater than the other. + + First object to compare + Second object to compare. + Compare result. + + + + Represents a pending update to a Zip file. + + + + + Copy an existing entry. + + The existing entry to copy. + + + + Get the for this update. + + This is the source or original entry. + + + + Get the that will be written to the updated/new file. + + + + + Get the command for this update. + + + + + Get the filename if any for this update. Null if none exists. + + + + + Get/set the location of the size patch for this update. + + + + + Get /set the location of the crc patch for this update. + + + + + Get/set the size calculated by offset. + Specifically, the difference between this and next entry's starting offset. + + + + + Releases the unmanaged resources used by the this instance and optionally releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Read an unsigned short in little endian byte order. + + Returns the value read. + + The stream ends prematurely + + + + + Read a uint in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Search for and read the central directory of a zip file filling the entries array. + + + An i/o error occurs. + + + The central directory is malformed or cannot be found + + + + + Locate the data for a given entry. + + + The start offset of the data. + + + The stream ends prematurely + + + The local header signature is invalid, the entry and central header file name lengths are different + or the local and entry compression methods dont match + + + + + Represents a string from a which is stored as an array of bytes. + + + + + Initialise a with a string. + + The textual string form. + + + + Initialise a using a string in its binary 'raw' form. + + + + + + Get a value indicating the original source of data for this instance. + True if the source was a string; false if the source was binary data. + + + + + Get the length of the comment when represented as raw bytes. + + + + + Get the comment in its 'raw' form as plain bytes. + + + + + Reset the comment to its initial state. + + + + + Implicit conversion of comment to a string. + + The to convert to a string. + The textual equivalent for the input value. + + + + An enumerator for Zip entries + + + + + An is a stream that you can write uncompressed data + to and flush, but cannot read, seek or do anything else to. + + + + + Gets a value indicating whether the current stream supports reading. + + + + + Write any buffered data to underlying storage. + + + + + Gets a value indicating whether the current stream supports writing. + + + + + Gets a value indicating whether the current stream supports seeking. + + + + + Get the length in bytes of the stream. + + + + + Gets or sets the position within the current stream. + + + + + Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. + + The sum of offset and count is larger than the buffer length. + Methods were called after the stream was closed. + The stream does not support reading. + buffer is null. + An I/O error occurs. + offset or count is negative. + + + + Sets the position within the current stream. + + A byte offset relative to the origin parameter. + A value of type indicating the reference point used to obtain the new position. + + The new position within the current stream. + + An I/O error occurs. + The stream does not support seeking, such as if the stream is constructed from a pipe or console output. + Methods were called after the stream was closed. + + + + Sets the length of the current stream. + + The desired length of the current stream in bytes. + The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. + An I/O error occurs. + Methods were called after the stream was closed. + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + An I/O error occurs. + The stream does not support writing. + Methods were called after the stream was closed. + buffer is null. + The sum of offset and count is greater than the buffer length. + offset or count is negative. + + + + A is an + whose data is only a part or subsection of a file. + + + + + Initialise a new instance of the class. + + The containing the underlying stream to use for IO. + The start of the partial data. + The length of the partial data. + + + + Read a byte from this stream. + + Returns the byte read or -1 on end of stream. + + + + Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. + + The sum of offset and count is larger than the buffer length. + Methods were called after the stream was closed. + The stream does not support reading. + buffer is null. + An I/O error occurs. + offset or count is negative. + + + + Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + An I/O error occurs. + The stream does not support writing. + Methods were called after the stream was closed. + buffer is null. + The sum of offset and count is greater than the buffer length. + offset or count is negative. + + + + When overridden in a derived class, sets the length of the current stream. + + The desired length of the current stream in bytes. + The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. + An I/O error occurs. + Methods were called after the stream was closed. + + + + When overridden in a derived class, sets the position within the current stream. + + A byte offset relative to the origin parameter. + A value of type indicating the reference point used to obtain the new position. + + The new position within the current stream. + + An I/O error occurs. + The stream does not support seeking, such as if the stream is constructed from a pipe or console output. + Methods were called after the stream was closed. + + + + Clears all buffers for this stream and causes any buffered data to be written to the underlying device. + + An I/O error occurs. + + + + Gets or sets the position within the current stream. + + + The current position within the stream. + An I/O error occurs. + The stream does not support seeking. + Methods were called after the stream was closed. + + + + Gets the length in bytes of the stream. + + + A long value representing the length of the stream in bytes. + A class derived from Stream does not support seeking. + Methods were called after the stream was closed. + + + + Gets a value indicating whether the current stream supports writing. + + false + true if the stream supports writing; otherwise, false. + + + + Gets a value indicating whether the current stream supports seeking. + + true + true if the stream supports seeking; otherwise, false. + + + + Gets a value indicating whether the current stream supports reading. + + true. + true if the stream supports reading; otherwise, false. + + + + Gets a value that determines whether the current stream can time out. + + + A value that determines whether the current stream can time out. + + + + Provides a static way to obtain a source of data for an entry. + + + + + Get a source of data by creating a new stream. + + Returns a to use for compression input. + Ideally a new stream is created and opened to achieve this, to avoid locking problems. + + + + Represents a source of data that can dynamically provide + multiple data sources based on the parameters passed. + + + + + Get a data source. + + The to get a source for. + The name for data if known. + Returns a to use for compression input. + Ideally a new stream is created and opened to achieve this, to avoid locking problems. + + + + Default implementation of a for use with files stored on disk. + + + + + Initialise a new instance of + + The name of the file to obtain data from. + + + + Get a providing data. + + Returns a providing data. + + + + Default implementation of for files stored on disk. + + + + + Get a providing data for an entry. + + The entry to provide data for. + The file name for data if known. + Returns a stream providing data; or null if not available + + + + Defines facilities for data storage when updating Zip Archives. + + + + + Get the to apply during updates. + + + + + Get an empty that can be used for temporary output. + + Returns a temporary output + + + + + Convert a temporary output stream to a final stream. + + The resulting final + + + + + Make a temporary copy of the original stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The current stream. + Returns a stream suitable for direct updating. + This may be the current stream passed. + + + + Dispose of this instance. + + + + + An abstract suitable for extension by inheritance. + + + + + Initializes a new instance of the class. + + The update mode. + + + + Gets a temporary output + + Returns the temporary output stream. + + + + + Converts the temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + + Make a temporary copy of a . + + The to make a copy of. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The to open for direct update. + Returns a stream suitable for direct updating. + + + + Disposes this instance. + + + + + Gets the update mode applicable. + + The update mode. + + + + An implementation suitable for hard disks. + + + + + Initializes a new instance of the class. + + The file. + The update mode. + + + + Initializes a new instance of the class. + + The file. + + + + Gets a temporary output for performing updates on. + + Returns the temporary output stream. + + + + Converts a temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + Make a temporary copy of a stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The current stream. + Returns a stream suitable for direct updating. + If the is not null this is used as is. + + + + Disposes this instance. + + + + + An implementation suitable for in memory streams. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The to use + This constructor is for testing as memory streams dont really require safe mode. + + + + Get the stream returned by if this was in fact called. + + + + + Gets the temporary output + + Returns the temporary output stream. + + + + Converts the temporary to its final form. + + Returns a that can be used to read + the final storage for the archive. + + + + Make a temporary copy of the original stream. + + The to copy. + Returns a temporary output that is a copy of the input. + + + + Return a stream suitable for performing direct updates on the original source. + + The original source stream + Returns a stream suitable for direct updating. + If the passed is not null this is used; + otherwise a new is returned. + + + + Disposes this instance. + + + + + Holds data pertinent to a data descriptor. + + + + + Get /set the compressed size of data. + + + + + Get / set the uncompressed size of data + + + + + Get /set the crc value. + + + + + This class assists with writing/reading from Zip files. + + + + + Initialise an instance of this class. + + The name of the file to open. + + + + Initialise a new instance of . + + The stream to use. + + + + Get / set a value indicating whether the underlying stream is owned or not. + + If the stream is owned it is closed when this instance is closed. + + + + Close the stream. + + + The underlying stream is closed only if is true. + + + + + Locates a block with the desired . + + The signature to find. + Location, marking the end of block. + Minimum size of the block. + The maximum variable data. + Returns the offset of the first byte after the signature; -1 if not found + + + + Write Zip64 end of central directory records (File header and locator). + + The number of entries in the central directory. + The size of entries in the central directory. + The offset of the central directory. + + + + Write the required records to end the central directory. + + The number of entries in the directory. + The size of the entries in the directory. + The start of the central directory. + The archive comment. (This can be null). + + + + Read an unsigned short in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read an int in little endian byte order. + + Returns the value read. + + An i/o error occurs. + + + The file ends prematurely + + + + + Read a long in little endian byte order. + + The value read. + + + + Write an unsigned short in little endian byte order. + + The value to write. + + + + Write a ushort in little endian byte order. + + The value to write. + + + + Write an int in little endian byte order. + + The value to write. + + + + Write a uint in little endian byte order. + + The value to write. + + + + Write a long in little endian byte order. + + The value to write. + + + + Write a ulong in little endian byte order. + + The value to write. + + + + Write a data descriptor. + + The entry to write a descriptor for. + Returns the number of descriptor bytes written. + + + + Read data descriptor at the end of compressed data. + + if set to true [zip64]. + The data to fill in. + Returns the number of bytes read in the descriptor. + + + + This is an InflaterInputStream that reads the files baseInputStream an zip archive + one after another. It has a special method to get the zip entry of + the next file. The zip entry contains information about the file name + size, compressed size, Crc, etc. + It includes support for Stored and Deflated entries. +
+
Author of the original java version : Jochen Hoenicke +
+ + This sample shows how to read a zip file + + using System; + using System.Text; + using System.IO; + + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + public static void Main(string[] args) + { + using ( ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) { + + ZipEntry theEntry; + const int size = 2048; + byte[] data = new byte[2048]; + + while ((theEntry = s.GetNextEntry()) != null) { + if ( entry.IsFile ) { + Console.Write("Show contents (y/n) ?"); + if (Console.ReadLine() == "y") { + while (true) { + size = s.Read(data, 0, data.Length); + if (size > 0) { + Console.Write(new ASCIIEncoding().GetString(data, 0, size)); + } else { + break; + } + } + } + } + } + } + } + } + + +
+ + + Delegate for reading bytes from a stream. + + + + + The current reader this instance. + + + + + Creates a new Zip input stream, for reading a zip archive. + + The underlying providing data. + + + + Creates a new Zip input stream, for reading a zip archive. + + The underlying providing data. + Size of the buffer. + + + + Optional password used for encryption when non-null + + A password for all encrypted entries in this + + + + Gets a value indicating if there is a current entry and it can be decompressed + + + The entry can only be decompressed if the library supports the zip features required to extract it. + See the ZipEntry Version property for more details. + + Since uses the local headers for extraction, entries with no compression combined with the + flag set, cannot be extracted as the end of the entry data cannot be deduced. + + + + + Is the compression method for the specified entry supported? + + + Uses entry.CompressionMethodForHeader so that entries of type WinZipAES will be rejected. + + the entry to check. + true if the compression method is supported, false if not. + + + + Advances to the next entry in the archive + + + The next entry in the archive or null if there are no more entries. + + + If the previous entry is still open CloseEntry is called. + + + Input stream is closed + + + Password is not set, password is invalid, compression method is invalid, + version required to extract is not supported + + + + + Read data descriptor at the end of compressed data. + + + + + Complete cleanup as the final part of closing. + + True if the crc value should be tested + + + + Closes the current zip entry and moves to the next one. + + + The stream is closed + + + The Zip stream ends early + + + + + Returns 1 if there is an entry available + Otherwise returns 0. + + + + + Returns the current size that can be read from the current entry if available + + Thrown if the entry size is not known. + Thrown if no entry is currently available. + + + + Reads a byte from the current zip entry. + + + The byte or -1 if end of stream is reached. + + + + + Handle attempts to read by throwing an . + + The destination array to store data in. + The offset at which data read should be stored. + The maximum number of bytes to read. + Returns the number of bytes actually read. + + + + Handle attempts to read from this entry by throwing an exception + + + + + Handle attempts to read from this entry by throwing an exception + + + + + Perform the initial read on an entry which may include + reading encryption headers and setting up inflation. + + The destination to fill with data read. + The offset to start reading at. + The maximum number of bytes to read. + The actual number of bytes read. + + + + Read a block of bytes from the stream. + + The destination for the bytes. + The index to start storing data. + The number of bytes to attempt to read. + Returns the number of bytes read. + Zero bytes read means end of stream. + + + + Reads a block of bytes from the current zip entry. + + + The number of bytes read (this may be less than the length requested, even before the end of stream), or 0 on end of stream. + + + An i/o error occurred. + + + The deflated stream is corrupted. + + + The stream is not open. + + + + + Closes the zip input stream + + + + + ZipNameTransform transforms names as per the Zip file naming convention. + + The use of absolute names is supported although its use is not valid + according to Zip naming conventions, and should not be used if maximum compatability is desired. + + + + Initialize a new instance of + + + + + Initialize a new instance of + + The string to trim from the front of paths if found. + + + + Static constructor. + + + + + Transform a windows directory name according to the Zip file naming conventions. + + The directory name to transform. + The transformed name. + + + + Transform a windows file name according to the Zip file naming conventions. + + The file name to transform. + The transformed name. + + + + Get/set the path prefix to be trimmed from paths if present. + + The prefix is trimmed before any conversion from + a windows path is done. + + + + Force a name to be valid by replacing invalid characters with a fixed value + + The name to force valid + The replacement character to use. + Returns a valid name + + + + Test a name to see if it is a valid name for a zip entry. + + The name to test. + If true checking is relaxed about windows file names and absolute paths. + Returns true if the name is a valid zip name; false otherwise. + Zip path names are actually in Unix format, and should only contain relative paths. + This means that any path stored should not contain a drive or + device letter, or a leading slash. All slashes should forward slashes '/'. + An empty name is valid for a file where the input comes from standard input. + A null name is not considered valid. + + + + + Test a name to see if it is a valid name for a zip entry. + + The name to test. + Returns true if the name is a valid zip name; false otherwise. + Zip path names are actually in unix format, + and should only contain relative paths if a path is present. + This means that the path stored should not contain a drive or + device letter, or a leading slash. All slashes should forward slashes '/'. + An empty name is valid where the input comes from standard input. + A null name is not considered valid. + + + + + An implementation of INameTransform that transforms entry paths as per the Zip file naming convention. + Strips path roots and puts directory separators in the correct format ('/') + + + + + Initialize a new instance of + + + + + Transform a windows directory name according to the Zip file naming conventions. + + The directory name to transform. + The transformed name. + + + + Transform a windows file name according to the Zip file naming conventions. + + The file name to transform. + The transformed name. + + + + This is a DeflaterOutputStream that writes the files into a zip + archive one after another. It has a special method to start a new + zip entry. The zip entries contains information about the file name + size, compressed size, CRC, etc. + + It includes support for Stored and Deflated entries. + This class is not thread safe. +
+
Author of the original java version : Jochen Hoenicke +
+ This sample shows how to create a zip file + + using System; + using System.IO; + + using ICSharpCode.SharpZipLib.Core; + using ICSharpCode.SharpZipLib.Zip; + + class MainClass + { + public static void Main(string[] args) + { + string[] filenames = Directory.GetFiles(args[0]); + byte[] buffer = new byte[4096]; + + using ( ZipOutputStream s = new ZipOutputStream(File.Create(args[1])) ) { + + s.SetLevel(9); // 0 - store only to 9 - means best compression + + foreach (string file in filenames) { + ZipEntry entry = new ZipEntry(file); + s.PutNextEntry(entry); + + using (FileStream fs = File.OpenRead(file)) { + StreamUtils.Copy(fs, s, buffer); + } + } + } + } + } + + +
+ + + Creates a new Zip output stream, writing a zip archive. + + + The output stream to which the archive contents are written. + + + + + Creates a new Zip output stream, writing a zip archive. + + The output stream to which the archive contents are written. + Size of the buffer to use. + + + + Gets a flag value of true if the central header has been added for this archive; false if it has not been added. + + No further entries can be added once this has been done. + + + + Set the zip file comment. + + + The comment text for the entire archive. + + + The converted comment is longer than 0xffff bytes. + + + + + Sets the compression level. The new level will be activated + immediately. + + The new compression level (1 to 9). + + Level specified is not supported. + + + + + + Get the current deflater compression level + + The current compression level + + + + Get / set a value indicating how Zip64 Extension usage is determined when adding entries. + + Older archivers may not understand Zip64 extensions. + If backwards compatability is an issue be careful when adding entries to an archive. + Setting this property to off is workable but less desirable as in those circumstances adding a file + larger then 4GB will fail. + + + + Used for transforming the names of entries added by . + Defaults to , set to null to disable transforms and use names as supplied. + + + + + Get/set the password used for encryption. + + When set to null or if the password is empty no encryption is performed + + + + Write an unsigned short in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Write an int in little endian byte order. + + + + + Starts a new Zip entry. It automatically closes the previous + entry if present. + All entry elements bar name are optional, but must be correct if present. + If the compression method is stored and the output is not patchable + the compression for that entry is automatically changed to deflate level 0 + + + the entry. + + + if entry passed is null. + + + if an I/O error occured. + + + if stream was finished + + + Too many entries in the Zip file
+ Entry name is too long
+ Finish has already been called
+
+ + The Compression method specified for the entry is unsupported. + +
+ + + Closes the current entry, updating header and footer information as required + + + Invalid entry field values. + + + An I/O error occurs. + + + No entry is active. + + + + + Initializes encryption keys based on given . + + The password. + + + + Initializes encryption keys based on given password. + + + + + Writes the given buffer to the current entry. + + The buffer containing data to write. + The offset of the first byte to write. + The number of bytes to write. + Archive size is invalid + No entry is active. + + + + Finishes the stream. This will write the central directory at the + end of the zip file and flush the stream. + + + This is automatically called when the stream is closed. + + + An I/O error occurs. + + + Comment exceeds the maximum length
+ Entry name exceeds the maximum length +
+
+ + + Flushes the stream by calling Flush on the deflater stream unless + the current compression method is . Then it flushes the underlying output stream. + + + + + The entries for the archive. + + + + + Used to track the crc of data added to entries. + + + + + The current entry being added. + + + + + Used to track the size of data for an entry during writing. + + + + + Offset to be recorded for each entry in the central header. + + + + + Comment for the entire archive recorded in central header. + + + + + Flag indicating that header patching is required for the current entry. + + + + + Position to patch crc + + + + + Position to patch size. + + + + + The password to use when encrypting archive entries. + + + + + This static class contains functions for encoding and decoding zip file strings + + + + Code page backing field + + The original Zip specification (https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) states + that file names should only be encoded with IBM Code Page 437 or UTF-8. + In practice, most zip apps use OEM or system encoding (typically cp437 on Windows). + Let's be good citizens and default to UTF-8 http://utf8everywhere.org/ + + + + Automatically select codepage while opening archive + see https://github.com/icsharpcode/SharpZipLib/pull/280#issuecomment-433608324 + + + + + Encoding used for string conversion. Setting this to 65001 (UTF-8) will + also set the Language encoding flag to indicate UTF-8 encoded file names. + + + + + Attempt to get the operating system default codepage, or failing that, to + the fallback code page IBM 437. + + + + + Get whether the default codepage is set to UTF-8. Setting this property to false will + set the to + + + Get OEM codepage from NetFX, which parses the NLP file with culture info table etc etc. + But sometimes it yields the special value of 1 which is nicknamed CodePageNoOEM in sources (might also mean CP_OEMCP, but Encoding puts it so). + This was observed on Ukranian and Hindu systems. + Given this value, throws an . + So replace it with , (IBM 437 which is the default code page in a default Windows installation console. + + + + + Convert a portion of a byte array to a string using + + + Data to convert to string + + + Number of bytes to convert starting from index 0 + + + data[0]..data[count - 1] converted to a string + + + + + Convert a byte array to a string using + + + Byte array to convert + + + dataconverted to a string + + + + + Convert a byte array to a string using + + The applicable general purpose bits flags + + Byte array to convert + + The number of bytes to convert. + + dataconverted to a string + + + + + Convert a byte array to a string using + + + Byte array to convert + + The applicable general purpose bits flags + + dataconverted to a string + + + + + Convert a string to a byte array using + + + String to convert to an array + + Converted array + + + + Convert a string to a byte array using + + The applicable general purpose bits flags + + String to convert to an array + + Converted array + + + diff --git a/packages/sharpziplib/1.3.3/sharpziplib.1.3.3.nupkg b/packages/sharpziplib/1.3.3/sharpziplib.1.3.3.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..5d39961d6001b173009deb1a369f3f036c7f61e4 GIT binary patch literal 655974 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

&WnOh*cjj8XXp&4%e)Ju_| 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

?GDzZmI90 z*?UpS;z*oChO21D?ry{2xA7D!-G6%uR-!h)6c437r_`s^omTPti+r;wGZ6UlRal^!(1F03cxnM# z%Y+fcCXfU~;#-d!-*bR{~LXA0v%|IY_5784e#3Gtau4)wV=lqrh+2zDee7+TuRz8 zNKp>ju)W3ZE_PNRQ1cny%8L+8Dv_$pW^C_}lDtP^IJ-#|{iltU8IppwA)mm|q*z)$ zifA@lQ24ir;>UV!60#o|fTnw|WCPG2X*|_VoM=FyS-I8JH~wq}sYCik#VNaw1#|Ng z_5r^jU?oBp<3*7R$>jf%q(=H5PMD9jk)p~nwmqY}Um&M$0h3i;XUCI}j{q0<;_`~Y z_v!n}9n4nQq5A`>S!euQWy&@BTAOb zy)~iNoEI~Lm<3lbV3IFGhS2~mSuG_SLHXj%?Lksk(jocNcW#FAC%%+V#Y!bQBRwL) zawHK$VSPMJtEG@0hNJnjI7%cC1x^Wnq{fA=qceb*46V9%f68S=CLm2ObT03N4S1S# z?NXSoi#wM9qkkoJf14~H4NKsQWwG>%E(FwJ zykb8+wfZwylh%%sK7n&0h=umrB!kx90$#p>6nL-V4Vi_LK3L~5BP>!dpOd?o*~oO} zUuqd&PUMOgF;T=>7F2eaScwBXXNxLC3i|AY=7lAY(G|QYc$8&<&X1&si5(y*>U;`8 zBjt%1t)BB`+7GO5u

xGBd8OG9JUFEaGQeB@e5!ll#X%s`umAEUaVW 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 literal 0 HcmV?d00001 diff --git a/packages/sharpziplib/1.3.3/sharpziplib.1.3.3.nupkg.sha512 b/packages/sharpziplib/1.3.3/sharpziplib.1.3.3.nupkg.sha512 new file mode 100644 index 0000000..e60559b --- /dev/null +++ b/packages/sharpziplib/1.3.3/sharpziplib.1.3.3.nupkg.sha512 @@ -0,0 +1 @@ +X2mW44oxhhRJpJO5OH6RCXq+BvPKk25hjmuRQJFpm3MZvafjkqUyqWwGKH6bPCh4YYPF+8ISrCu90QgJFR5tuw== \ No newline at end of file diff --git a/packages/sharpziplib/1.3.3/sharpziplib.nuspec b/packages/sharpziplib/1.3.3/sharpziplib.nuspec new file mode 100644 index 0000000..b28ae25 --- /dev/null +++ b/packages/sharpziplib/1.3.3/sharpziplib.nuspec @@ -0,0 +1,22 @@ + + + + SharpZipLib + 1.3.3 + ICSharpCode + MIT + https://licenses.nuget.org/MIT + images/sharpziplib-nuget-256x256.png + https://github.com/icsharpcode/SharpZipLib + SharpZipLib (#ziplib, formerly NZipLib) is a compression library for Zip, GZip, BZip2, and Tar written entirely in C# for .NET. It is implemented as an assembly (installable in the GAC), and thus can easily be incorporated into other projects (in any .NET language) + Please see https://github.com/icsharpcode/SharpZipLib/wiki/Release-1.3.3 for more information. + Copyright © 2000-2021 SharpZipLib Contributors + Compression Library Zip GZip BZip2 LZW Tar + + + + + + + + \ No newline at end of file

+ Get / set a flag indicating whether entry name and comment text are + encoded in unicode UTF8. +
+ Get / set a flag indicating whether entry name and comment text are + encoded in unicode UTF8. +
+ Get / set a flag indicating whether entry name and comment text are + encoded in unicode UTF8. +
+ Get / set a flag indicating whether entry name and comment text are + encoded in unicode UTF8. +