zlib.doc.patch

Rafael de Castro, 01/30/2012 10:01 PM

Download (30.9 KB)

View differences:

ext/zlib/zlib.c
224 224
 *
225 225
 * == Overview
226 226
 *
227
 * Access to the zlib library.
227
 * This module provides access to the ZLib library
228
 *
229
 * The zlib compression library provides in-memory compression and decompression functions, including integrity checks of the uncompressed data. This version of the library supports only one compression method (deflation) but other algorithms will be added later and will have the same stream interface.
230
 * Compression can be done in a single step if the buffers are large enough (for example if an input file is mmap'ed), or can be done by repeated calls of the compression function. In the latter case, the application must provide more input and/or consume the output (providing more output space) before each call.
231
 *
232
 * The compressed data format used by default by the in-memory functions is the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped around a deflate stream, which is itself documented in RFC 1951.
233
 *
234
 * The library also supports reading and writing files in gzip (.gz) format with an interface similar to that of stdio using the functions that start with "gz". The gzip format is different from the zlib format. gzip is a gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
235
 *
236
 * This library can optionally read and write gzip streams in memory as well.
237
 *
238
 * The zlib format was designed to be compact and fast for use in memory and on communications channels. The gzip format was designed for single-file compression on file systems, has a larger header than zlib to maintain directory information, and uses a different, slower check method than zlib.
228 239
 *
229 240
 * == Class tree
230 241
 *
231
- 
ext/zlib/zlib.c
237 237
 *
238 238
 * The zlib format was designed to be compact and fast for use in memory and on communications channels. The gzip format was designed for single-file compression on file systems, has a larger header than zlib to maintain directory information, and uses a different, slower check method than zlib.
239 239
 *
240
 *
241
 * == Sample usage
242
 *
243
 * Using the wrapper to compress strings with default parameters is quite simple: 
244
 *
245
 *    require "zlib"
246
 *   
247
 *    data_to_compress = File.read("file_to_compress.data")
248
 *
249
 *    puts "Input size: #{data_to_compress.size}"
250
 *   
251
 *    data_compressed = Zlib::Deflate.deflate(data_to_compress)
252
 *
253
 *    puts "Compressed data is:\n#{data_compressed}"
254
 *    puts "And its size is #{data_compressed.size}" 
255
 *   
256
 *    uncompressed_data = Zlib::Inflate.inflate(data_compressed)
257
 *
258
 *    puts "Uncompressed data is:\n#{uncompressed_data}"
259
 *
240 260
 * == Class tree
241 261
 *
242 262
 * - Zlib::Deflate
243
- 
ext/zlib/zlib.c
226 226
 *
227 227
 * This module provides access to the ZLib library
228 228
 *
229
 * The zlib compression library provides in-memory compression and decompression functions, including integrity checks of the uncompressed data. This version of the library supports only one compression method (deflation) but other algorithms will be added later and will have the same stream interface.
230
 * Compression can be done in a single step if the buffers are large enough (for example if an input file is mmap'ed), or can be done by repeated calls of the compression function. In the latter case, the application must provide more input and/or consume the output (providing more output space) before each call.
229
 * The zlib compression library provides in-memory compression and decompression functions, including integrity checks of the uncompressed data.
231 230
 *
232 231
 * The compressed data format used by default by the in-memory functions is the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped around a deflate stream, which is itself documented in RFC 1951.
233 232
 *
234
- 
ext/zlib/zlib.c
224 224
 *
225 225
 * == Overview
226 226
 *
227
 * This module provides access to the ZLib library
227
 * This module provides access to the {zlib library}[http://zlib.net]. Zlib is designed to be a free, general-purpose, legally unencumbered -- that is, 
228
 * not covered by any patents -- lossless data-compression library for use on virtually any computer hardware and operating system.
229
 * The zlib data format is itself portable across platforms.
228 230
 *
229 231
 * The zlib compression library provides in-memory compression and decompression functions, including integrity checks of the uncompressed data.
230 232
 *
231
- 
ext/zlib/zlib.c
1475 1475
 * If +string+ is nil, this method finishes the
1476 1476
 * stream, just like Zlib::ZStream#finish.
1477 1477
 *
1478
 * == Usage
1478
 * == Sample Usage
1479 1479
 *
1480
 *   comp = Zlib.deflate(File.read("big.file"))
1481
 * or
1482
 *   comp = Zlib.deflate(File.read("big.file"), Zlib::FULL_FLUSH)
1480
 * === Compressing a string with best compression
1481
 *
1482
 *    zlib = Zlib::Deflate.new(Zlib::BEST_COMPRESSION)
1483
 *    compressed_string = zlib.deflate(string, Zlib::FINISH)
1484
 *    zlib.close
1485
 *
1486
 *    puts "Compressed string is: #{compressed_string}"
1483 1487
 *
1488
 *    puts "Decompressed string is #{Zlib::Inflate.inflate(compressed_string)}"
1484 1489
 */
1485 1490
static VALUE
1486 1491
rb_deflate_deflate(int argc, VALUE *argv, VALUE obj)
1487
- 
ext/zlib/zlib.c
1280 1280
 * == Arguments
1281 1281
 *
1282 1282
 * +level+::
1283
 *   An Integer compression level between
1284
 *   BEST_SPEED and BEST_COMPRESSION
1283
 *   An Integer compression level between 0 and 9. The following constants have
1284
 *   been defined to make code more readable:
1285
 *   
1286
 *   [Z_NO_COMPRESSION = 0]
1287
 *   [Z_BEST_SPEED =  1] 
1288
 *   [Z_BEST_COMPRESSION = 9]
1289
 *   
1285 1290
 * +windowBits+::
1286 1291
 *   An Integer for the windowBits size. Should be
1287 1292
 *   in the range 8..15, larger values of this parameter
1288
- 
ext/zlib/zlib.c
1285 1285
 *   
1286 1286
 *   [Z_NO_COMPRESSION = 0]
1287 1287
 *   [Z_BEST_SPEED =  1] 
1288
 *   [Z_DEFAULT_COMPRESSION = 6]
1288 1289
 *   [Z_BEST_COMPRESSION = 9]
1289 1290
 *   
1290 1291
 * +windowBits+::
1291
- 
ext/zlib/zlib.c
1297 1297
 *   the internal compression state.
1298 1298
 *   Between DEF_MEM_LEVEL and MAX_MEM_LEVEL
1299 1299
 * +strategy+::
1300
 *   A parameter to tune the compression algorithm. Use the
1301
 *   DEFAULT_STRATEGY for normal data, FILTERED for data produced by a
1302
 *   filter (or predictor), HUFFMAN_ONLY to force Huffman encoding only (no
1303
 *   string match).
1300
 *   A parameter to tune the compression algorithm. 
1301
 *   [Z_DEFAULT_STRATEGY] For normal data
1302
 *   [HUFFMAN_ONLY] To force Huffman encoding only (no string match).
1303
 *   [FILTERED] For data produced by a filter (or predictor). The effect 
1304
 *              of FILTERED is to force more Huffman coding and less string
1305
 *              matching; it is somewhat intermediate between 
1306
 *              DEFAULT_STRATEGY and HUFFMAN_ONLY. Filtered data consists
1307
 *              mostly of small values with a somewhat random distribution.
1304 1308
 *
1305 1309
 * == Description
1306 1310
 *
1307
- 
ext/zlib/zlib.c
1283 1283
 *   An Integer compression level between 0 and 9. The following constants have
1284 1284
 *   been defined to make code more readable:
1285 1285
 *   
1286
 *   [Z_NO_COMPRESSION = 0]
1287
 *   [Z_BEST_SPEED =  1] 
1288
 *   [Z_DEFAULT_COMPRESSION = 6]
1289
 *   [Z_BEST_COMPRESSION = 9]
1286
 *   * Z_NO_COMPRESSION = 0
1287
 *   * Z_BEST_SPEED =  1
1288
 *   * Z_DEFAULT_COMPRESSION = 6
1289
 *   * Z_BEST_COMPRESSION = 9
1290 1290
 *   
1291 1291
 * +windowBits+::
1292 1292
 *   An Integer for the windowBits size. Should be
1293
- 
ext/zlib/zlib.c
1293 1293
 *   in the range 8..15, larger values of this parameter
1294 1294
 *   result in better at the expense of memory usage.
1295 1295
 * +memlevel+::
1296
 *   Specifies how much memory should be allocated for
1297
 *   the internal compression state.
1298
 *   Between DEF_MEM_LEVEL and MAX_MEM_LEVEL
1296
 *   The memLevel parameter specifies how much memory should be allocated
1297
 *   for the internal compression state.  memLevel=1 uses minimum memory but is
1298
 *   slow and reduces compression ratio; memLevel=9 uses maximum memory for
1299
 *   optimal speed.  The default value is 8. Two constants are defined:
1300
 *   * DEF_MEM_LEVEL = 8
1301
 *   * MAX_MEM_LEVEL = 9
1299 1302
 * +strategy+::
1300 1303
 *   A parameter to tune the compression algorithm. 
1301 1304
 *   [Z_DEFAULT_STRATEGY] For normal data
1302
- 
ext/zlib/zlib.c
1289 1289
 *   * Z_BEST_COMPRESSION = 9
1290 1290
 *   
1291 1291
 * +windowBits+::
1292
 *   An Integer for the windowBits size. Should be
1293
 *   in the range 8..15, larger values of this parameter
1294
 *   result in better at the expense of memory usage.
1292
 *   An Integer for the windowBits size (the size of the history buffer).
1293
 *   Should be in the range 8..15. Larger values of this parameter
1294
 *   result in better compression at the expense of memory usage.
1295 1295
 * +memlevel+::
1296 1296
 *   The memLevel parameter specifies how much memory should be allocated
1297 1297
 *   for the internal compression state.  memLevel=1 uses minimum memory but is
1298
- 
ext/zlib/zlib.c
1473 1473
 *   String
1474 1474
 *
1475 1475
 * +flush+::
1476
 *   Integer representing a flush code. Either NO_FLUSH,
1477
 *   SYNC_FLUSH, FULL_FLUSH, or FINISH. See zlib.h for details.
1478
 *   Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
1479
 *   decide how much data to accumulate before producing output, in order to
1480
 *   maximize compression.
1476
 *   Integer representing a flush mode.
1477
 *   [NO_FLUSH] Normally the parameter flush is set to NO_FLUSH, which
1478
 *              allows deflate to decide how much data to accumulate before
1479
 *              producing output, in order to maximize compression.
1480
 *   [SYNC_FLUSH] All pending output is flushed to the output buffer
1481
 *                and the output is aligned on a byte boundary, so that the
1482
 *                decompressor can get all input data available so far. (In
1483
 *                particular avail_in is zero after the call if enough output
1484
 *                space has been provided before the call.) Flushing may
1485
 *                degrade compression for some compression algorithms and so
1486
 *                it should be used only when necessary. This completes the
1487
 *                current deflate block and follows it with an empty stored
1488
 *                block that is three bits plus filler bits to the next byte,
1489
 *                followed by four bytes (00 00 ff ff)
1490
 *   [FULL_FLUSH] All output is flushed as with SYNC_FLUSH, and the
1491
 *                compression state is reset so that decompression can 
1492
 *                restart from this point if previous compressed data has been
1493
 *                damaged or if random access is desired. Using FULL_FLUSH too
1494
 *                often can seriously degrade compression.
1495
 *   [FINISH] Pending input is processed, pending output is flushed.
1481 1496
 *
1482 1497
 * == Description
1483 1498
 *
1484
- 
ext/zlib/zlib.c
1507 1507
 *
1508 1508
 * === Compressing a string with best compression
1509 1509
 *
1510
 *    zlib = Zlib::Deflate.new(Zlib::BEST_COMPRESSION)
1511
 *    compressed_string = zlib.deflate(string, Zlib::FINISH)
1512
 *    zlib.close
1510
 *    zstream = Zlib::Deflate.new(Zlib::BEST_COMPRESSION)
1511
 *    compressed_string = zstream.deflate(string, Zlib::FINISH)
1512
 *    zstream.close
1513 1513
 *
1514 1514
 *    puts "Compressed string is: #{compressed_string}"
1515 1515
 *
1516
- 
ext/zlib/zlib.c
1683 1683
 * == Arguments
1684 1684
 *
1685 1685
 * +windowBits+::
1686
 *   An Integer for the windowBits size. Should be
1687
 *   in the range 8..15, larger values of this parameter
1688
 *   result in better at the expense of memory usage.
1689
 *
1686
 *   An Integer whose meaning depends on the value
1687
 *   [0] To request that inflate use the window size in the zlib header of the
1688
 *       compressed stream.
1689
 *   [Between 8 and 15] In this case, +windowBits+ determines the window size.
1690
 *                      +inflate+ will then process raw deflate data, not
1691
 *                      looking for a zlib or gzip header, not generating a
1692
 *                      check value, and not looking for any check values for
1693
 *                      comparison at the end of the stream.  This is for use
1694
 *                      with other formats that use the deflate compressed data
1695
 *                      format such as zip. Those formats provide their own
1696
 *                      check values.
1697
 *   [Greater than 15] 	windowBits can also be greater than 15 for optional
1698
 *                      gzip decoding. Add 32 to windowBits to enable zlib and
1699
 *                      gzip decoding with automatic header detection, or add
1700
 *                      16 to decode only the gzip format (the zlib format will
1701
 *                      throw a Zlib::DataError). 
1690 1702
 * == Description
1691 1703
 *
1692
 * Creates a new inflate stream for decompression. See zlib.h for details
1693
 * of the argument.  If +window_bits+ is +nil+, the default value is used.
1704
 * Creates a new inflate stream for decompression. If +window_bits+ is +nil+,
1705
 * the default value Zlib::MAX_WBITS is used.
1694 1706
 *
1695 1707
 * == Example
1696 1708
 *
1697
- 
ext/zlib/zlib.c
1283 1283
 *   An Integer compression level between 0 and 9. The following constants have
1284 1284
 *   been defined to make code more readable:
1285 1285
 *   
1286
 *   * Z_NO_COMPRESSION = 0
1287
 *   * Z_BEST_SPEED =  1
1288
 *   * Z_DEFAULT_COMPRESSION = 6
1289
 *   * Z_BEST_COMPRESSION = 9
1286
 *   * NO_COMPRESSION = 0
1287
 *   * BEST_SPEED =  1
1288
 *   * DEFAULT_COMPRESSION = 6
1289
 *   * BEST_COMPRESSION = 9
1290 1290
 *   
1291 1291
 * +windowBits+::
1292 1292
 *   An Integer for the windowBits size (the size of the history buffer).
......
1301 1301
 *   * MAX_MEM_LEVEL = 9
1302 1302
 * +strategy+::
1303 1303
 *   A parameter to tune the compression algorithm. 
1304
 *   [Z_DEFAULT_STRATEGY] For normal data
1304
 *   [DEFAULT_STRATEGY] For normal data
1305 1305
 *   [HUFFMAN_ONLY] To force Huffman encoding only (no string match).
1306 1306
 *   [FILTERED] For data produced by a filter (or predictor). The effect 
1307 1307
 *              of FILTERED is to force more Huffman coding and less string
1308
- 
ext/zlib/zlib.c
224 224
 *
225 225
 * == Overview
226 226
 *
227
 * This module provides access to the {zlib library}[http://zlib.net]. Zlib is designed to be a free, general-purpose, legally unencumbered -- that is, 
228
 * not covered by any patents -- lossless data-compression library for use on virtually any computer hardware and operating system.
227
 * This module provides access to the {zlib library}[http://zlib.net]. Zlib is
228
 * designed to be a free, general-purpose, legally unencumbered -- that is, 
229
 * not covered by any patents -- lossless data-compression library for use on
230
 * virtually any computer hardware and operating system.
231
 *
229 232
 * The zlib data format is itself portable across platforms.
230 233
 *
231
 * The zlib compression library provides in-memory compression and decompression functions, including integrity checks of the uncompressed data.
234
 * The zlib compression library provides in-memory compression and
235
 * decompression functions, including integrity checks of the uncompressed 
236
 * data.
232 237
 *
233
 * The compressed data format used by default by the in-memory functions is the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped around a deflate stream, which is itself documented in RFC 1951.
238
 * The compressed data format used by default by the in-memory functions is the
239
 * zlib format, which is a zlib wrapper documented in RFC 1950, wrapped around
240
 * a deflate stream, which is itself documented in RFC 1951.
234 241
 *
235
 * The library also supports reading and writing files in gzip (.gz) format with an interface similar to that of stdio using the functions that start with "gz". The gzip format is different from the zlib format. gzip is a gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
242
 * The library also supports reading and writing files in gzip (.gz) format 
243
 * with an interface similar to that of stdio using the functions that start
244
 * with "gz". The gzip format is different from the zlib format. gzip is a gzip
245
 * wrapper, documented in RFC 1952, wrapped around a deflate stream.
236 246
 *
237 247
 * This library can optionally read and write gzip streams in memory as well.
238 248
 *
239
 * The zlib format was designed to be compact and fast for use in memory and on communications channels. The gzip format was designed for single-file compression on file systems, has a larger header than zlib to maintain directory information, and uses a different, slower check method than zlib.
249
 * The zlib format was designed to be compact and fast for use in memory and on
250
 * communications channels. The gzip format was designed for single-file
251
 * compression on file systems, has a larger header than zlib to maintain 
252
 * directory information, and uses a different, slower check method than zlib.
240 253
 *
241 254
 *
242 255
 * == Sample usage
243
- 
ext/zlib/zlib.c
1569 1569
 * <tt>SYNC_FLUSH</tt> is used as flush.  This method is just provided
1570 1570
 * to improve the readability of your Ruby program.
1571 1571
 *
1572
 * Please visit your zlib.h for a deeper detail on NO_FLUSH, SYNC_FLUSH, FULL_FLUSH, and FINISH
1572
 * Please visit Zlib::Deflate#deflate for a deeper detail on NO_FLUSH, SYNC_FLUSH, FULL_FLUSH, and FINISH
1573 1573
 *
1574 1574
 */
1575 1575
static VALUE
......
1600 1600
 * buffer.
1601 1601
 *
1602 1602
 * +level+::
1603
 *   An Integer compression level between
1604
 *   BEST_SPEED and BEST_COMPRESSION
1603
 *   See Zlib::Deflate.new
1605 1604
 * +strategy+::
1606
 *   A parameter to tune the compression algorithm. Use the
1607
 *   DEFAULT_STRATEGY for normal data, FILTERED for data produced by a
1608
 *   filter (or predictor), HUFFMAN_ONLY to force Huffman encoding only (no
1609
 *   string match).
1605
 *   See Zlib::Deflate.new
1610 1606
 *
1611 1607
 */
1612 1608
static VALUE
1613
- 
ext/zlib/zlib.c
257 257
 * Using the wrapper to compress strings with default parameters is quite simple: 
258 258
 *
259 259
 *    require "zlib"
260
 *   
261
 *    data_to_compress = File.read("file_to_compress.data")
262 260
 *
261
 *    data_to_compress = File.read("file_to_compress.data")
262
 *    
263 263
 *    puts "Input size: #{data_to_compress.size}"
264
 *    #=> Input lenght: 2347740
264 265
 *   
265 266
 *    data_compressed = Zlib::Deflate.deflate(data_to_compress)
266 267
 *
267
 *    puts "Compressed data is:\n#{data_compressed}"
268
 *    puts "Compressed data is:\n#{data_compressed}" 
269
 *    #=> Compressed data is:
270
 *    x????r?%?.3?C?Cuoe??K??(???M??$?????@?輐B}???=2?z???S[?%?ï˗?mb?]
271
 *    [...]
272
 *
268 273
 *    puts "And its size is #{data_compressed.size}" 
269
 *   
274
 *    #=> And its size is 887238
275
 *
270 276
 *    uncompressed_data = Zlib::Inflate.inflate(data_compressed)
271 277
 *
272 278
 *    puts "Uncompressed data is:\n#{uncompressed_data}"
279
 *    #=> Uncompressed data is:
280
 *    The Project Gutenberg EBook of Don Quixote, by Miguel de Cervantes
281
 *    [...]
273 282
 *
274 283
 * == Class tree
275 284
 *
276
- 
ext/zlib/zlib.c
1534 1534
 *    zstream.close
1535 1535
 *
1536 1536
 *    puts "Compressed string is: #{compressed_string}"
1537
 *    #=> Compressed string is: ڜ??r?%?.3?C?Cu???Rwץ[?(???͋6I??f?<???D&:/?P|-w????c?f
1538
 *    [...]
1537 1539
 *
1538 1540
 *    puts "Decompressed string is #{Zlib::Inflate.inflate(compressed_string)}"
1541
 *    #=> Decompressed string is The Project Gutenberg EBook of Don Quixote, by Miguel de Cervantes 
1539 1542
 */
1540 1543
static VALUE
1541 1544
rb_deflate_deflate(int argc, VALUE *argv, VALUE obj)
1542
- 
ext/zlib/zlib.c
265 265
 *   
266 266
 *    data_compressed = Zlib::Deflate.deflate(data_to_compress)
267 267
 *
268
 *    puts "Compressed data is:\n#{data_compressed}" 
269
 *    #=> Compressed data is:
270
 *    x????r?%?.3?C?Cuoe??K??(???M??$?????@?輐B}???=2?z???S[?%?ï˗?mb?]
271
 *    [...]
268
 *    puts "Compressed data is:#{data_compressed}" 
269
 *    #=> Compressed data is: x????r?%?.3?C?Cuoe??K??(???M??$?????@?輐B}???=2?z...
272 270
 *
273 271
 *    puts "And its size is #{data_compressed.size}" 
274 272
 *    #=> And its size is 887238
275 273
 *
276 274
 *    uncompressed_data = Zlib::Inflate.inflate(data_compressed)
277 275
 *
278
 *    puts "Uncompressed data is:\n#{uncompressed_data}"
279
 *    #=> Uncompressed data is:
280
 *    The Project Gutenberg EBook of Don Quixote, by Miguel de Cervantes
281
 *    [...]
276
 *    puts "Uncompressed data is:#{uncompressed_data}"
277
 *    #=> Uncompressed data is:The Project Gutenberg EBook of Don Quixote...
282 278
 *
283 279
 * == Class tree
284 280
 *
......
1492 1488
 * == Arguments
1493 1489
 *
1494 1490
 * +string+::
1495
 *   String
1491
 *   String to deflate
1496 1492
 *
1497 1493
 * +flush+::
1498
 *   Integer representing a flush mode.
1494
 *   Flush mode. You can use four constants to specify flush mode.
1499 1495
 *   [NO_FLUSH] Normally the parameter flush is set to NO_FLUSH, which
1500 1496
 *              allows deflate to decide how much data to accumulate before
1501 1497
 *              producing output, in order to maximize compression.
......
1534 1530
 *    zstream.close
1535 1531
 *
1536 1532
 *    puts "Compressed string is: #{compressed_string}"
1537
 *    #=> Compressed string is: ڜ??r?%?.3?C?Cu???Rwץ[?(???͋6I??f?<???D&:/?P|-w????c?f
1538
 *    [...]
1533
 *    #=> Compressed string is: ڜ??r?%?.3?C?Cu???Rwץ[?(???͋6I??...
1539 1534
 *
1540 1535
 *    puts "Decompressed string is #{Zlib::Inflate.inflate(compressed_string)}"
1541
 *    #=> Decompressed string is The Project Gutenberg EBook of Don Quixote, by Miguel de Cervantes 
1536
 *    #=> Decompressed string is The Project Gutenberg EBook of Don Quixote... 
1542 1537
 */
1543 1538
static VALUE
1544 1539
rb_deflate_deflate(int argc, VALUE *argv, VALUE obj)
......
1727 1722
 *
1728 1723
 * == Example
1729 1724
 *
1730
 *   cf = File.open("compressed.file")
1731
 *   ucf = File.open("uncompressed.file", "w+")
1732
 *   zi = Zlib::Inflate.new(Zlib::MAX_WBITS)
1725
 *    compressed_file = File.open("compressed.gz")
1726
 *    uncompressed_file = File.open("uncompressed.file", "w+")
1727
 *    zip = Zlib::Inflate.new(16)
1733 1728
 *
1734
 *   ucf << zi.inflate(cf.read)
1729
 *    uncompressed_file << zip.inflate(compressed_file.read)
1735 1730
 *
1736
 *   ucf.close
1737
 *   zi.close
1738
 *   cf.close
1731
 *    uncompressed_file.close
1732
 *    zip.close
1733
 *    compressed_file.close
1739 1734
 *
1740 1735
 * or
1741 1736
 *
1742
-