2020-04-27  7.0.10-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-10, GIT revision 17205:9b0340e:20200427

2020-04-27  7.0.10-10 Cristy  <quetzlzacatenango@image...>
  * Correction to allocate a colormap of the maximum colors when color
    reducing an image sequence.
  * Write to stdout for mp4:-.

2020-04-25  7.0.10-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-9, GIT revision 17190:13fdcd1:20200426.

2020-04-25  7.0.10-9 Cristy  <quetzlzacatenango@image...>
  * Allocate a colormap of the maximum colors when color reducing an image
    sequence.
  * Label was not centered properly (reference
    https://github.com/ImageMagick/ImageMagick/issues/1879).

2020-04-24  7.0.10-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-8, GIT revision 17175:481b85f:20200424.

2020-04-23  7.0.10-8 Cristy  <quetzlzacatenango@image...>
  * Some configure --with-method-prefix methods were missing (reference
    https://github.com/ImageMagick/ImageMagick/issues/1912).

2020-04-19  7.0.10-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-7, GIT revision 17170:c635e88:20200419.

2020-04-07  7.0.10-7 Cristy  <quetzlzacatenango@image...>
  * Fix erroneous "insufficient image data" exception (reference
    https://github.com/ImageMagick/ImageMagick/issues/1883).
  * Fix an unconditional jump for the XPM coder (reference
    https://github.com/ImageMagick/ImageMagick/issues/1895).
  * Improve unrotate value returned by the minimum bounding box (thanks
    to Fred Weinhaus).

    https://github.com/ImageMagick/ImageMagick/discussions/1880).
2020-04-06  7.0.10-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-6, GIT revision 17146:634bbfd:20200406.

2020-04-05  7.0.10-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-5, GIT revision 17143:8be18423e:20200405.

2020-04-05  7.0.10-5 Cristy  <quetzlzacatenango@image...>
 * Default inkscape delegate to version 0.92 (reference
    https://github.com/ImageMagick/ImageMagick/discussions/1880).
  * Set monochrome image depth to 1 for Group4 compression.

2020-04-05  7.0.10-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-4, GIT revision 17137:eeff0b6:20200405

2020-03-28  7.0.10-4 Cristy  <quetzlzacatenango@image...>
  * The X max attribute for certain fonts is zero (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=37723).
  * Multi-value of jp2:quality does not work (reference
    https://github.com/ImageMagick/ImageMagick/issues/1873).
  * Return EPS & TIFF images from the EPT image format (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37781).

2020-03-27  7.0.10-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-3, GIT revision 17108:5a4f5a9:20200327.

2020-03-22  7.0.10-3 Cristy  <quetzlzacatenango@image...>
  * The -charcoal option should ignore the alpha channel.
  * Fix numerical instability issue when drawing lines
  * Improve mono font rendering (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=37723).

2020-03-21  7.0.10-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-2, GIT revision 17088:ed6f37f:20200322.

2020-03-16  7.0.10-2 Cristy  <quetzlzacatenango@image...>
  * Fixed another sizing issue with the label coder when pointsize is set.
  * Respect explicit image filename modified (e.g. png24:im.png) (reference
    https://github.com/ImageMagick/ImageMagick/issues/1835).
  * Add support for returning the minimum bounding box of an image with the
    %[minimum-bounding-box] property.
  * Stroked dash array render properly again.

2020-03-15  7.0.10-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-1, GIT revision 17065:130e52e:20200315.

2020-03-14  7.0.10-1 Cristy  <quetzlzacatenango@image...>
  * Add support for returning the convex hull of an image with the
    %[canvas-hull] property.

2020-03-09  7.0.10-1 Dirk Lemstra <dirk@lem.....org>
  * Added option to specify the preferred version when writing a PDF file with
    -define pdf:version=version (e.g. 1.7).

2020-03-07  7.0.10-1 Cristy  <quetzlzacatenango@image...>
  * Do not throw exception on empty draw path (reference
    https://github.com/ImageMagick/ImageMagick/issues/974).
  * Fix possible buffer overflow in ComplexImages().
  * SVG to MVG requires transforms to appear before clipping paths (reference
    https://github.com/ImageMagick/ImageMagick/issues/1860).

2020-03-06  7.0.10-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-0, GIT revision 17026:fd430ac9a:20200307

2020-03-01  7.0.10-0 Cristy  <quetzlzacatenango@image...>
  * Label text no longer gets cut-off (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=37621).
  * Prevent heap overflow (reference
     https://github.com/ImageMagick/ImageMagick/issues/1857).

2020-02-29  7.0.9-27 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-27, GIT revision 17006:49d81b672:20200229

2020-02-24  7.0.9-27 Cristy  <quetzlzacatenango@image...>
  * Make sure we can grok this Fx expression: 1- -2.
  * Do not advance when substituting a NULL string.
  * Correct alpha for named colors in the Q32 non-HDRI build.
  * Write Group4 compressed image as a single strip.

2020-02-23  7.0.9-26 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-26, GIT revision 16972:49f1e4de2:20200223

2020-02-22  7.0.9-26 Cristy  <quetzlzacatenango@image...>
  * No percent sign in lab() color.
  * Introducing the -color-threshold command-line option.
  * Handle out of range HDRI values for -statistic option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37589).
  * Fix improper casting when computing image signature (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=37594).

2020-02-21  7.0.9-25 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-25, GIT revision 16931:2a56db8:20200221

2020-02-18  7.0.9-25 Cristy  <quetzlzacatenango@image...>
  * Adapt to a change in command-line options in the SVG inkscape delegate.

2020-02-17  7.0.9-24 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-24, GIT revision 16919:41efef9de:20200217

2020-02-15  7.0.9-24 Cristy  <quetzlzacatenango@image...>
  * Support connected-components:eccentricity-threshold,
    connected-components:major-axis-threshold,
    connected-components:minor-axis-threshold,
    connected-components:angle-threshold.
  * Set the alpha channel if the write mask is not enabled.
  * Corrected ellipse orientation when computing image moments.

2020-02-14  7.0.9-23 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-23, GIT revision 16884:acb56cd:20200214

2020-02-08  7.0.9-23 Cristy  <quetzlzacatenango@image...>
  * Report gray(127.5) as gray(50%).
  * Support -define connected-components:perimeter-threshold=min-max

2020-02-07  7.0.9-22 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-22, GIT revision 16855:8733f3e:20200207

2020-02-03  7.0.9-22 Cristy  <quetzlzacatenango@image...>
  * More work on connect components, e.g. keep-colors, remove-colors,
    keep-topids.
  * Initialize mutex before locking if its not already initialized.
  * Support 24-bit TIFF images.

2020-02-01  7.0.9-21 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-21, GIT revision 16823:290cb93:20200201.

2020-01-27  7.0.9-21 Cristy  <quetzlzacatenango@image...>
  * Support additional connected components defines.
  * Refresh cache morphology when writing MPC images.

2020-01-26  7.0.9-19 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-19, GIT revision 16789:bac6ecc:20200126

2020-01-26  7.0.9-19 Cristy  <quetzlzacatenango@image...>
  * Make PNG creation reproducible (reference
    https://github.com/ImageMagick/ImageMagick/pull/1270).
  * Refactor uninitialize variable patch for -fx "while(,)" expression.

2020-01-25  7.0.9-18 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-18, GIT revision 16780:08beae5:20200125

2020-01-19  7.0.9-18 Cristy  <quetzlzacatenango@image...>
  * Alpha draw primitive no longer returns a parser exception.
  * Support 32-bit tiled TIFF images.
  * New -connected-component options (reference
    https://imagemagick.org/script/connected-components.php).

    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=37391).
2020-01-18  7.0.9-17 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-17, GIT revision 16753:c300b3a:20200118

2020-01-12  7.0.9-17 Cristy  <quetzlzacatenango@image...>
  * Allow larger negative interline spacing (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=37391).
  * Conditional compile for huge xml pages for RSVG delegate library.
  * Put "width" property in the PNG namespace (reference
    https://github.com/ImageMagick/ImageMagick/issues/1833).
  * -combine -colorspace sRGB no longer returns grayscale output (reference
    https://github.com/ImageMagick/ImageMagick/issues/1835).
  * Support Jzazbz colorspace (contributed by snibgo @
    http://im.snibgo.com/jzazbz.htm).

2020-01-12  7.0.9-16 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-16, GIT revision 16719:fefd765:20200112.

2020-01-12  7.0.9-16 Cristy  <quetzlzacatenango@image...>
  * Fixed three failing Magick.NET unit tests.

2020-01-11  7.0.9-15 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-15, GIT revision 16709:0000f6d:20200111.

2020-01-11  7.0.9-15 Dirk Lemstra <dirk@lem.....org>
  * Also support svg:xml-parse-huge when using librsvg.

2020-01-10  7.0.9-15 Cristy  <quetzlzacatenango@image...>
  * Optimize -evaluate-sequence option (reference
    https://github.com/ImageMagick/ImageMagick/issues/1824).
  * Support Fx do() iterator.
  * `magick -size 100x100 xc:black black.pnm` no longer creates a white image
    (reference https://github.com/ImageMagick/ImageMagick/issues/1817).
  * setjmp/longjmp in jpeg.c no longer trigger undefind behavior (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37379).
  * Permit compositing in the CMYK colorspace (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37368).

2020-01-04  7.0.9-14 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-14, GIT revision 16654:89ef7ea:20200104.

2020-01-01  7.0.9-14 Cristy  <quetzlzacatenango@image...>
  * Support extended Fx assignment operators (e.g. *=, /=, ++, --, etc.)
  * Support Fx for() iterator.
  * Optimize Fx performance.
  * Ensure circle.rb renders the same for IMv6 and IMv7 (reference
    https://github.com/rmagick/rmagick/issues/905).

2019-12-30  7.0.9-13 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-13, GIT revision 16616:dbafe0b:20191230.

2019-12-27  7.0.9-13 Cristy  <quetzlzacatenango@image...>
  * xc:white no longer creates a black PNM image (reference
    https://github.com/ImageMagick/ImageMagick/issues/1817).
  * Sync pixel cache for -kmeans option.
  * Thread -kmeans option.
  * PSD: only set the alpha channel when type is not 0.
  * Fix Lab to custom profile (CMYK or RGB) conversion bug (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37318).

2019-12-26  7.0.9-12 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-12, GIT revision 16587:7d6a559:20191226.

2019-12-26  7.0.9-12 Cristy  <quetzlzacatenango@image...>
  * Fix Build failure with MinGW-w64 (reference
    https://github.com/ImageMagick/ImageMagick6/issues/67).
  * Inject image profile properties immediately after the image is read.

2019-12-23  7.0.9-11 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-11, GIT revision 16568:1d6c960:20191224.

2019-12-18  7.0.9-11 Cristy  <quetzlzacatenango@image...>
  * Replace pseudo-random number generator with a Xoshiro generator.
  * The -layers optimize option requires a fully transparent previous image.

2019-12-22  7.0.9-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-10, GIT revision 16548:281649843:20191222.

2019-12-18  7.0.9-10 Cristy  <quetzlzacatenango@image...>
  * Some clang releases do not support _aligned_alloc().
  * Support -kmeans command-line option.

2019-12-07  7.0.9-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-9, GIT revision 16513:8ec82f4:20191215.

2019-12-07  7.0.9-9 Cristy  <quetzlzacatenango@image...>
  * Build file clean-up (reference
    https://github.com/ImageMagick/ImageMagick/pull/1798).
  * Improve semaphore handling @
    https://github.com/ImageMagick/ImageMagick/pull/1798).
  * Introduce HeapOverflowSanityCheckGetExtent() method (reference
    https://github.com/ImageMagick/ImageMagick/pull/1798).

2019-12-01  7.0.9-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-8, GIT revision 16474:0bc0e95:20191207.

2019-12-01  7.0.9-8 Cristy  <quetzlzacatenango@image...>
  * -type bilevel behavior restored, it creates a black and white image.

2019-11-30  7.0.9-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-7, GIT revision 16449:971ba06:20191130.

2019-11-26  7.0.9-7 Cristy  <quetzlzacatenango@image...>
  * Support Pocketmod image format, e.g.
    convert -density 300 pages?.pdf pocketmod:organize.pdf
  * Fixed numerous issues  posted to GitHub (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Update documentation.

2019-11-26  7.0.9-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-6, GIT revision 16407:1725ec3:20191126.

2019-11-19  7.0.9-6 Cristy  <quetzlzacatenango@image...>
  * Increase the maximum number of bezier coordinates (reference
    https://github.com/ImageMagick/ImageMagick/issues/1784).
  * Santize "'" from SHOW and WIN delegates under Linux, '"\' for Windows
    (thanks to Enzo Puig).
  * Correct for TGA orientation (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=34757).
  * The result for -compose Copy -extent on a  MYK image is CMYK (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37118).
  * Fix potential buffer overflow when reading a fax image (alert from
    Justin).
  * Support dng:use-camera-wb option.

2019-11-17  7.0.9-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-5, GIT revision 16369:747618e:20191117.

2019-11-16  7.0.9-5 Cristy  <quetzlzacatenango@image...>
  * Ensure Ascii85 compression is thread safe.
  * Fixed numerous issues  posted to GitHub (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-11-13  7.0.9-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-4, GIT revision 16354:5f53562:20191114.

2019-11-10  7.0.9-4 Cristy  <quetzlzacatenango@image...>
  * Add exception parameter to CMS transform methods.
  * Output exception there is an attempt to perform an operation not allowed by
    the security policy
  * Fixed numerous issues  posted to GitHub (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-10-30  7.0.9-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-2, GIT revision 16325:6f84d89:20191030.

2019-10-29  7.0.9-2 Cristy  <quetzlzacatenango@image...>
  * JPEG and JPG are aliases in coder security policy.
  * Fixed numerous issues  posted to GitHub (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-10-27  7.0.9-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-1, GIT revision 16313:e068be3:20191027.

2019-10-27  7.0.9-1 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous issues  posted to GitHub (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-10-23  7.0.9-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-0, GIT revision 16297:8744fd9:20191024

2019-10-06  7.0.9-0 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous issues  posted to GitHub (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Support trim:background-color define for -trim option.

2019-10-05  7.0.8-68 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-68, GIT revision 16184:b75b0e5:20191005.

2019-09-30  7.0.8-68 Cristy  <quetzlzacatenango@image...>
  * Support animated WebP encoding/decoding (reference
    https://github.com/ImageMagick/ImageMagick/pull/1708).
  * Text stroke cut off (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=36829).
  * Adds support for lossless JPEG1 recompression (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=36828).

2019-09-29  7.0.8-67 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-67, GIT revision 16145:6f2feb9:20190929.

2019-09-28  7.0.8-67 Cristy  <quetzlzacatenango@image...>
  * line endings renedered as empty boxes (reference
    https://github.com/ImageMagick/ImageMagick/issues/1704).

2019-09-21  7.0.8-66 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-66, GIT revision 16134:f6ce80a:20190921.

2019-09-09  7.0.8-66 Cristy  <quetzlzacatenango@image...>
  * Support compound statements in FX while() (reference
    https://github.com/ImageMagick/ImageMagick/issues/1701).

2019-09-15  7.0.8-65 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-65, GIT revision 16130:254db34:20190915.

2019-09-09  7.0.8-65 Cristy  <quetzlzacatenango@image...>
  * Eliminate fault when trace delegate is not available.
  * Properly distinquish linear and non-linear gray colorspaces (reference
    https://github.com/ImageMagick/ImageMagick/issues/1680).

2019-09-07  7.0.8-64 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-64, GIT revision 16108:2ad3cbc:20190907.

2019-09-02  7.0.8-64 Cristy  <quetzlzacatenango@image...>
  * Support XPM symbolic (reference
    https://github.com/ImageMagick/ImageMagick/issues/1684).
  * DilateIntensity is channel independent (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36641).

2019-08-31  7.0.8-63 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-63, GIT revision 16088:3b7a33d:20190831.

2019-08-24  7.0.8-63 Cristy  <quetzlzacatenango@image...>
  * Properly identify the DNG and AI image format (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36581).

2019-08-23  7.0.8-62 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-62, GIT revision 16061:7525595:20190823.

2019-08-23  7.0.8-62 Dirk Lemstra <dirk@lem.....org>
  * Added option to limit the maximum point size with -define
    caption:max-pointsize=pointsize.
  * Corrected JP2 numresolution calculation (reference:
    https://github.com/ImageMagick/ImageMagick/issues/1673)

2019-08-19  7.0.8-62 Cristy  <quetzlzacatenango@image...>
  * Conditionally compile call to AcquireCLocale() (reference
    https://github.com/ImageMagick/ImageMagick/issues/1669).
  * More robust support for converting bitmap to vector.

2019-08-16  7.0.8-61 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-61, GIT revision 16033:0c5808c:20190816.

2019-08-03  7.0.8-61 Cristy  <quetzlzacatenango@image...>
  * Issue with -background and -swirl (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36512).

2019-08-10  7.0.8-60 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-60, GIT revision 16020:52ff205:20190810.

2019-08-07  7.0.8-60 Cristy  <quetzlzacatenango@image...>
  * Enable reading EXR image file from stdin.

2019-08-04  7.0.8-59 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-59, GIT revision 15986:c3de0e7:20190804.

2019-08-01  7.0.8-59 Cristy  <quetzlzacatenango@image...>
  * Module is a reserved keyword for C++ 20 (reference
    https://github.com/ImageMagick/ImageMagick/issues/1650).

2019-07-29  7.0.8-58 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-58, GIT revision 15962:cf00632:20190729.

2019-07-27  7.0.8-58 Cristy  <quetzlzacatenango@image...>
  * Improve GetNextToken() performance.

2019-07-26  7.0.8-57 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-57, GIT revision 15948:8fba4a3:20190726.

2019-07-22  7.0.8-57 Cristy  <quetzlzacatenango@image...>
  * Heap-buffer-overflow in Postscript coder (reference
    https://github.com/ImageMagick/ImageMagick/issues/1644).
  * The -alpha shape option nondeteministic under OpenMP (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36396).
  * Correction to the ModulusAdd and ModulusSubtract composite op (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=36413).

2019-07-20  7.0.8-56 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-56, GIT revision 15936:2ac4147:20190720.

2019-07-20  7.0.8-56 Cristy  <quetzlzacatenango@image...>
  * Unexpected -alpha shape results (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36396).
  * Converting from PDF to PBM inverts the image (reference
    https://github.com/ImageMagick/ImageMagick/issues/1643).

2019-07-18  7.0.8-55 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-55, GIT revision 15930:ac09240:20190718.

2019-07-18  7.0.8-55 Cristy  <quetzlzacatenango@image...>
  * Heap-buffer overflow (reference
    https://github.com/ImageMagick/ImageMagick/issues/1641
  * PerlMagick test suite passes again (reference
    https://github.com/ImageMagick/ImageMagick/issues/1640) 

2019-07-16  7.0.8-54 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-54, GIT revision 15916:e868e22:20190716.

2019-07-08  7.0.8-54 Cristy  <quetzlzacatenango@image...>
  * resolve division by zero  (reference
     https://github.com/ImageMagick/ImageMagick/issues/1629).
  * introducing MagickLevelImageColors() MagickWand method.
  * Transient problem with text placement with gravity (reference
    https://github.com/ImageMagick/ImageMagick/issues/1633).
  * Support TIM2 image format (reference
    https://github.com/ImageMagick/ImageMagick/pull/1571).
  * For -magnify option, specify an alternative scaling method with -define
    magnify:method=method, choose from these methods: eagle2X, eagle3X,
    eagle3XB, epb2X, fish2X, hq2X,  scale2X (default), scale3X, xbr2X.

2019-07-05  7.0.8-53 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-53, GIT revision 15828:f5d59c0:20190705.

2019-07-05  7.0.8-53 Cristy  <quetzlzacatenango@image...>
   * Fix -fx parsing issue (reference
     https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36314).

2019-07-05  7.0.8-52 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-52, GIT revision 15825:ea47310:20190705.

2019-07-01  7.0.8-52 Cristy  <quetzlzacatenango@image...>
  * Eliminate buffer overflow in TranslateEvent() (reference
    https://github.com/ImageMagick/ImageMagick/issues/1621).

2019-06-30  7.0.8-51 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-51, GIT revision 15812:51f11c4:20190630.

2019-06-24  7.0.8-51 Cristy  <quetzlzacatenango@image...>
  * Clone rather than copy X window name/icon.
  * Optimize PDF reader.

2019-06-23  7.0.8-50 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-50, GIT revision 15778:4a60519:20190623

2019-06-14  7.0.8-50 Dirk Lemstra <dirk@lem.....org>
  * Added support for reading all images from a HEIC image (reference
    https://github.com/ImageMagick/ImageMagick/issues/1391).
  * Heap-buffer-overflow in MagickCore/fourier.c (reference
   https://github.com/ImageMagick/ImageMagick/issues/1588).
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-06-08  7.0.8-49 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-49, GIT revision 15708:6d7e1db:20190608

2019-06-03  7.0.8-49 Cristy  <quetzlzacatenango@image...>
  * Add support for RGB565 image format (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=36078).
  * Use user defined allocator instead of `malloc` (reference
    https://github.com/ImageMagick/ImageMagick6/pull/49/).
  * Add static decorator to accelerator kernels (reference
    https://github.com/ImageMagick/ImageMagick/issues/1366).

2019-06-01  7.0.8-48 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-48, GIT revision 15689:061a3bb82:20190601

2019-06-01  7.0.8-48 Cristy  <quetzlzacatenango@image...>
  * Fix transient convolution bug (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36119).

2019-05-26  7.0.8-47 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-47, GIT revision 15681:5cffc6cbb:20190526

2019-05-19  7.0.8-47 Cristy  <quetzlzacatenango@image...>
  * Support 16 and 32 bit tiled float TIFF images.
  * Convolve morphology alpha channel fix (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36086).
  * Text improvements to the internal SVG renderer.

2019-05-14  7.0.8-46 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-46, GIT revision 15655:84dd3301c:20190518

2019-05-14  7.0.8-46 Cristy  <quetzlzacatenango@image...>
  * PerlMagick unit tests pass again.
  * Builds under MacOS X and FreeBSD works again.
  * Return HEIC images in the sRGB colorspace.

2019-05-12  7.0.8-45 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-45, GIT revision 15634:784105bcb:20190512

2019-05-06  7.0.8-45 Cristy  <quetzlzacatenango@image...>
  * Fix image signatures to ensure they are Q-depth invariant (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=35970).
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-05-03  7.0.8-44 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-44, GIT revision 15600:41f47759a:20190503

2019-05-03  7.0.8-44 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-05-01  7.0.8-43 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-43, GIT revision 15595:0062cef74:20190502

2019-05-01  7.0.8-43 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-04-29  7.0.8-42 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-42, GIT revision 15570:71190ccd0:20190424

2019-04-20  7.0.8-42 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-04-19  7.0.8-41 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-41, GIT revision 15540:c78993d13:20190420

2019-04-13  7.0.8-41 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Honor SOURCE_DATE_EPOCH environment variable (reference
    https://github.com/ImageMagick/ImageMagick/pull/1496/).
  * Standardize on UTC time for any image format timestamp.
  * Add MagickAutoThresholdImage(), MagickCannyEdgeImage(),
    MagickComplexImages(), MagickConnectedComponentsImage(),
    MagickHoughLineImage(), MagickKuwaharaImage(), MagickLevelizeImageColors(),
    MagickLevelImageColors(), MagickMeanShiftImage(), MagickPolynomialImage(),
    MagickRangeThresholdImage(), MagickSetSeed(), MagickWaveletDenoiseImage()
    methods to MagickWand API.

2019-04-12  7.0.8-40 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-40, GIT revision 15510:7e503e231:20190412

2019-04-10  7.0.8-40 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).


2019-04-07  7.0.8-39 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-39, GIT revision 15489:6120f8bc1:20190406

2019-04-06  7.0.8-39 Cristy  <quetzlzacatenango@image...>
  * The -layers option compared pixels inocorrectly as opacity rather than
    alpha.
  * The -preview raise option now returns expected results.
  * Initialise ghostscript instances with NULL (reference
    https://github.com/ImageMagick/ImageMagick/pull/1538).

2019-04-06  7.0.8-38 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-38, GIT revision 15483:23edcef04:20190406

2019-04-06  7.0.8-38 Cristy  <quetzlzacatenango@image...>
  * Modulo off by one patch for -virtual-pixel option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=35789).

2019-04-03  7.0.8-37 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-37, GIT revision 15470:477216fd7:20190403

2019-04-03  7.0.8-37 Cristy  <quetzlzacatenango@image...>
  * Fixed -virtual-pixel option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=35789).

2019-03-31  7.0.8-36 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-36, GIT revision 15464:3a928224d:20190331

2019-03-27  7.0.8-36 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-03-24  7.0.8-35 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-35, GIT revision 15440:4a0a88e41:20190324

2019-03-23  7.0.8-35 Cristy  <quetzlzacatenango@image...>
  * -draw image DstOver is now responsive to the composite operator (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=35650).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-03-15  7.0.8-34 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-34, GIT revision 15413:860af935d:20190315

2019-03-11  7.0.8-34 Cristy  <quetzlzacatenango@image...>
  * Associate one lock with each resource.
  * Report exception if opening TIFF did not work out.
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2019-03-10  7.0.8-33 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-33, GIT revision 15401:c805e3205:20190310

2019-03-06  7.0.8-33 Cristy  <quetzlzacatenango@image...>
  * Fix SVG conversion infinite loop (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=35591).
  * Initialize primitive drawing structure after resizing.

2019-03-05  7.0.8-32 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-32, GIT revision 15386:58d9c4692:20190305

2019-03-05  7.0.8-32 Cristy  <quetzlzacatenango@image...>
  * Fix out-of-boundary LocaleLowerCase() @
    https://github.com/ImageMagick/ImageMagick/issues/1495

2019-03-04  7.0.8-31 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-31, GIT revision 15381:3122a669d:20190304

2019-03-04  7.0.8-31 Cristy  <quetzlzacatenango@image...>
  * -trim is no longer sensitive to the image virtual canvas.

2019-03-03  7.0.8-30 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-30, GIT revision 15376:16d2b4e6a:20190303

2019-03-03  7.0.8-30 Cristy  <quetzlzacatenango@image...>
  * Support define to remove additional background from an image during a
    trim, e.g. -fuzz 5% -define trim:percent-background=0% -trim.

2019-02-28  7.0.8-29 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-29, GIT revision 15368:5d8ed9f56:20190228

2019-02-28  7.0.8-29 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2019-02-18  7.0.8-28 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-28, GIT revision 15345:09a7c67dd:20190218

2019-02-12  7.0.8-28 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-02-09  7.0.8-27 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-27, GIT revision 15315:5d48cd312:20190209

2019-02-09  7.0.8-27 Cristy  <quetzlzacatenango@image...>
  * Mod patch to properly handle subimage ranges (e.g. image.gif[2-3]).

2019-02-03  7.0.8-26 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-26, GIT revision 15294:726bd82a3:20190203

2019-02-02  7.0.8-26 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-01-27  7.0.8-25 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-25, GIT revision 15279:7da783a5b:20190127

2019-01-19  7.0.8-25 Cristy  <quetzlzacatenango@image...>
  * Eliminate spurious font warning (reference
    https://github.com/ImageMagick/ImageMagick/issues/1458).
  * Support HEIC EXIF & XMP profiles.

2019-01-12  7.0.8-24 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-24, GIT revision 15233:db129ba64:20190112

2019-01-08  7.0.8-24 Cristy  <quetzlzacatenango@image...>
  * Support -clahe option real clip limit (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=35292).
  * ShadeImage() kernels can return negative pixels, clamp to range (reference
    https://github.com/ImageMagick/ImageMagick/issues/1319).
  * Annotate with negative offsets no longer renders slanted text.

2019-01-01  7.0.8-23 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-23, GIT revision 15199:ba07f7d07:20190101

2019-01-01  7.0.8-23 Cristy  <quetzlzacatenango@image...>
  * CacheInfo destructor must be aligned in DestroyPixelStream().

2018-12-30  7.0.8-22 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-22, GIT revision 15189:842164090:20181230

2018-12-29  7.0.8-22 Cristy  <quetzlzacatenango@image...>
  * Support negative rotations in a geometry (e.g. -10x-10+10+10).
  * Return expected canvas offset after a crop with gravity.

2018-12-27  7.0.8-21 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-21, GIT revision 15179:114be1716:20181227

2018-12-27  7.0.8-21 Cristy  <quetzlzacatenango@image...>
  * Check to ensure SeekBlob() offset can be represented in an off_t.

2018-12-23  7.0.8-20 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-20, GIT revision 15170:8e8222e87:20181223

2018-12-23  7.0.8-20 Cristy  <quetzlzacatenango@image...>
  * Cube image format returns a HALD image.
  * CLAHE tiles overlapped are now centered relative to the image.

2018-12-19  7.0.8-19 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-19, GIT revision 15153:e74ed77f5:20181219

2018-12-18  7.0.8-18 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-18, GIT revision 15146:b5eccd295:20181218

2018-12-18  7.0.8-18 Cristy  <quetzlzacatenango@image...>
  * Fixed Magick++ compile error on Mac OS X.

2018-12-17  7.0.8-17 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-17, GIT revision 15142:32f2d195e:20181217

2018-12-02  7.0.8-16 Cristy  <quetzlzacatenango@image...>
  * Support -clahe clip limit with percentages (e.g. -clahe 50x50%+128+3).

2018-12-10  7.0.8-16 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-16, GIT revision 15109:9a9af88de:20181210.

2018-12-02  7.0.8-16 Cristy  <quetzlzacatenango@image...>
  * Check for modulo underflow.
  * Change SVG default DPI to 96 from 90 to meet recommendation of SVG2 & CSS.

2018-12-01  7.0.8-15 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-15, GIT revision 15059:2fb22e07b:20181201

2018-11-21  7.0.8-15 Cristy  <quetzlzacatenango@image...>
  * Added support for the -clahe option: contrast limited adaptive histogram
    equalization.

2018-11-13  7.0.8-15 Dirk Lemstra <dirk@lem.....org>
  * Added support for GIMP 2.10 files (reference
    https://github.com/ImageMagick/ImageMagick/pull/1381).

2018-10-23  7.0.8-14 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-14, GIT revision 14943:1a0da3dd0:20181023

2018-10-21  7.0.8-13 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-13, GIT revision 14936:d3ec5abe2:20181021.

2018-10-04  7.0.8-13 Dirk Lemstra <dirk@lem.....org>
  * Adding coder headers with magic.xml will no longer be supported.
  * Adding coder aliases with coder.xml will no longer be supported.

2018-09-16  7.0.8-12 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-12, GIT revision 14843:cb5cf1959:20180923

2018-09-15  7.0.8-12 Dirk Lemstra <dirk@lem.....org>
  * Added support for arithmetic coding to the jpeg encoder:
    -define jpeg:arithmetic-coding=true.

2018-09-08  7.0.8-12 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-08-28  7.0.8-11 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-11, GIT revision 14729:798fbdb5b:20180828

2018-08-15  7.0.8-11 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Add support for "module" security policy.

2018-08-13  7.0.8-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-10, GIT revision 14646:48fba3256:20180813

2018-08-12  7.0.8-10 Dirk Lemstra <dirk@lem.....org>
  * Added dcraw coder (dcraw:img.cr2) that can be used to force the use of the
    dcraw delegate when libraw is the default raw delegate.
  * Restored thread support for the HEIC coder.

2018-08-08  7.0.8-10 Cristy  <quetzlzacatenango@image...>
  * ThumbnailImage function no longer reveals sensitive information (reference
    https://github.com/ImageMagick/ImageMagick/issues/1243).

2018-08-06  7.0.8-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-9, GIT revision 14618:a3663c3dc:20180805.

2018-07-24  7.0.8-9 Cristy  <quetzlzacatenango@image...>
  * XBM coder leaves the hex image data uninitialized if hex value of the
    pixel is negative.
  * More improvements to SVG text handling.
  * New -range-threshold option that combines hard and soft thresholding.

2018-07-23  7.0.8-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-8, GIT revision 14583:300fdbcfd:20180723.

2018-07-20  7.0.8-8 Cristy  <quetzlzacatenango@image...>
  * Non-HDRI ScaleLongToQuantum() private method no longer adds a half interval.
  * Fixed memset() negative-size-param (reference
    https://github.com/ImageMagick/ImageMagick/issues/1217).

2018-07-16  7.0.8-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-7, GIT revision 14561:f85c23180:20180716.

2018-07-15  7.0.8-7 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-07-08  7.0.8-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-6, GIT revision 14541:db940ccd2:20180708.

2018-07-06  7.0.8-6 Cristy  <quetzlzacatenango@image...>
  * Improve SVG support for tspan element.
  * Add support for -fx image.extent.

2018-07-04  7.0.8-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-5, GIT revision 14514:bba545bbb:20180704.

2018-07-04  7.0.8-5 Cristy  <quetzlzacatenango@image...>
  * Fixed a few potential memory leaks
    https://github.com/ImageMagick/ImageMagick/issues).

2018-07-02  7.0.8-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-4, GIT revision 14505:4613eed4a:20180702.

2018-06-28  7.0.8-4 Cristy  <quetzlzacatenango@image...>
  * Small tweaks to compile under Cygwin.
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Support %B property, the image file size without any decorations.

2018-06-24  7.0.8-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-3, GIT revision 14489:c63c504e8:20180624.

2018-06-24  7.0.8-3 Cristy  <quetzlzacatenango@image...>
  * Apply translate component of SVG transform rotate.

2018-06-18  7.0.8-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-2, GIT revision 14476:cda11d81d:20180618.

2018-06-18  7.0.8-2 Cristy  <quetzlzacatenango@image...>
  * More robust SVG text handling.

2018-06-16  7.0.8-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-1, GIT revision 14468:94cb08785:20180616.

2018-06-16  7.0.8-1 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Fixed an issue with stroke and label: (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=34142).
  * PNG: set storage class to DirectClass if alpha enabled (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=34121).

2018-06-12  7.0.8-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-0, GIT revision 14459:d7c892d5a:20180612.

2018-06-11  7.0.8-0  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-06-11  7.0.7-39 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-39, GIT revision 14445:cc962acde:20180611.

2018-06-06  7.0.7-39  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-06-02  7.0.7-38 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-38, GIT revision 14409:01e395a73:20180602.

2018-05-30  7.0.7-38  <quetzlzacatenango@image...>
  * Heap buffer overflow fix (reference
    https://github.com/ImageMagick/ImageMagick/issues/1156).
  * Boundary issues with -gamma option when HDRI is enabled (reference
    https://github.com/ImageMagick/ImageMagick/issues/1151).
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-05-29  7.0.7-37 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-37, GIT revision 14393:61d7e8b17:20180529.

2018-05-29  7.0.7-37  <quetzlzacatenango@image...>
  * Properly initialize SVG color style.

2018-05-28  7.0.7-36 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-36, GIT revision 14390:3a6bd703f:20180528.

2018-05-28  7.0.7-36  <quetzlzacatenango@image...>
  * A SVG rectangle with a width and height of 1 is a point.

2018-05-21  7.0.7-35 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-35, GIT revision 14356:13507412c:20180521.

2018-05-21  7.0.7-35  <quetzlzacatenango@image...>
  * Fixed memory corruption for MVG paths.

2018-05-20  7.0.7-34 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-34, GIT revision 14348:ac9ff6ba1:20180520.

2018-05-20  7.0.7-34 Dirk Lemstra <dirk@lem.....org>
  * Added support for reading eXIf chunks to the PNG coder.

2018-05-19  7.0.7-34  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Improved clip / composite mask handling.

2018-05-16  7.0.7-33 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-33, GIT revision 14326:58c2e4972:20180516.

2018-05-03  7.0.7-33  <quetzlzacatenango@image...>
  * Restore SetImageAlpha() behavior.
  * Fix -clip and -mask options.

2018-05-13  7.0.7-32 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-32, GIT revision 14307:f61f674e3:20180513.

2018-05-03  7.0.7-31  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-05-01  7.0.7-30 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-30, GIT revision 14242:730f1d1d3:20180501.

2018-05-01  7.0.7-30  <quetzlzacatenango@image...>
  * Missing break when checking "compliance" element.

2018-04-30  7.0.7-29 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-29, GIT revision 14225:41edbdcea:20180430.

2018-03-26  7.0.7-29  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-24  7.0.7-28 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-28, GIT revision 23615:edd71782e:20180325.

2018-03-21  7.0.7-28  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-18  7.0.7-27 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-27, GIT revision 23466:734b146df:20180318.

2018-03-17  7.0.7-27  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-11  7.0.7-26 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-26, GIT revision 23344:7a03766ef:20180311.

2018-03-10  7.0.7-26  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-04  7.0.7-25 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-25, GIT revision 23177:17a986472:20180304.

2018-03-04  7.0.7-25 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-02-25  7.0.7-24 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-24, GIT revision 23079:7ccb76178:20180225.

2018-02-19  7.0.7-24 Cristy  <quetzlzacatenango@image...>
  * Do not refer to page in OptimizeLayerFrames (reference
    https://github.com/ImageMagick/ImageMagick/pull/987).
  * PerlMagick unit tests pass again.
  * Fixed numerous use of uninitialized values, integer overflow,
    memory exceeded, and timeouts (credit to OSS Fuzz).

2018-02-18  7.0.7-23 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.0-23, GIT revision 22969:c6b3a22b0:20180218.

2018-02-09  7.0.7-23 Dirk Lemstra <dirk@lem.....org>
  * Add support for reading the HEIC image format to the Windows build.

2018-01-23  7.0.7-23 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow,
    memory exceeded, and timeouts (credit to OSS Fuzz).
  * Add list-length policy to limit the maximum image sequence length.

2018-01-22  7.0.7-22 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.0-22, GIT revision 22391:e8be814f1:20180122.

2018-01-06  7.0.7-22 Cristy  <quetzlzacatenango@image...>
  * Support aspect ratio geometry, e.g. -crop 3:2.
  * Add support for reading the HEIC image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/507).
  * Fixed numerous memory leaks, credit to OSS Fuzz.

2018-01-06  7.0.7-21 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.0-21, GIT revision 22168:a91afc45b:20180106.

2018-01-06  7.0.7-21 Dirk Lemstra <dirk@lem.....org>
  * Fix some enum values in the OpenCL code.

2018-01-06  7.0.7-20 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-20, GIT revision 22161:33a04d3e5:20180105.

2018-01-05  7.0.7-20 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2018-01-01  7.0.7-19 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-19, GIT revision 22133:977fe08bf:20180101.

2017-12-29  7.0.7-19 Cristy  <quetzlzacatenango@image...>
  * Check for webpmux library version 0.4.4 (reference
    https://github.com/ImageMagick/ImageMagick/issues/896).

2017-12-26  7.0.7-18 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-18, GIT revision 22096:ad4bdeb40:20171228.

2017-12-28  7.0.7-18 Cristy  <quetzlzacatenango@image...>
  * Fix error reading from pipe under Windows (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=33288).

2017-12-26  7.0.7-17 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-17, GIT revision 22093:9caea323b:20171227.

2017-12-26  7.0.7-17 Cristy  <quetzlzacatenango@image...>
  * Fix heap use after free error (reference
    https://github.com/ImageMagick/ImageMagick/issues/918).

2017-12-24  7.0.7-16 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-16, GIT revision 22038:e55dc7626:20171225.

2017-12-18  7.0.7-16 Cristy  <quetzlzacatenango@image...>
  * Fix error reading multi-layer XCF image file.
  * Fix possible stack overflow in WEBP reader (reference
    https://github.com/ImageMagick/ImageMagick/issues/907)
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-12-16  7.0.7-15 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-15, GIT revision 21924:30cb31746:20171216.

2017-12-08  7.0.7-15 Cristy  <quetzlzacatenango@image...>
  * Overall standard deviation is the average of each pixel channel (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Update to the latest ImageMagick documentation.

2017-12-05  7.0.7-14 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-14, GIT revision 21855:dc73b2aba:20171205.

2017-11-30  7.0.7-14 Cristy  <quetzlzacatenango@image...>
  * Support Stereo composite operator.
  * Fix build failure with --without-modules (reference
    https://github.com/ImageMagick/ImageMagick/issues/890).

2017-11-30  7.0.7-13 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-13, GIT revision 21823:72cb0fd0c:20171130.

2017-11-30  7.0.7-13 Cristy  <quetzlzacatenango@image...>
  * Fix build failure with libraw 0.14.8 (reference
    https://github.com/ImageMagick/ImageMagick/issues/888).

2017-11-29  7.0.7-12 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-12, GIT revision 21814:5ef2c5a67:20171129.

2017-11-12  7.0.7-12 Cristy  <quetzlzacatenango@image...>
  * The -tint option no longer munges the alpha channel (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=1&t=33070).
  * Don't delete in-memory blob when reading an image (reference
    https://github.com/ImageMagick/ImageMagick/issues/886).
  * Support HDRI color profile management.

2017-11-11  7.0.7-11 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-11, GIT revision 21635:0447c6b46:20171111.

2017-11-05  7.0.7-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-10, GIT revision 21612:36e2aabfd:20171105.

2017-11-03  7.0.7-10 Dirk Lemstra <dirk@lem.....org>
  * Fixed a problem with resource bookkeeping in AcquireMatrixInfo().

2017-10-30  7.0.7-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-9, GIT revision 21580:2682a311e:20171031.

2017-10-20  7.0.7-9 Cristy  <quetzlzacatenango@image...>
  * Encode JSON control characters (reference
    https://github.com/ImageMagick/ImageMagick/issues/848).

2017-10-27  7.0.7-9 Dirk Lemstra <dirk@lem.....org>
  * Added support for reading mipmaps in dds images (reference
    https://github.com/ImageMagick/ImageMagick/issues/845).

2017-10-15  7.0.7-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-8, GIT revision 21507:63ffc9878:20171015.

2017-10-08  7.0.7-8 Cristy  <quetzlzacatenango@image...>
  * Return expected results for a percent 0 -chop option argument (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32806).
  * Tweaks to OpenMP support within ImageMagick.

2017-10-07  7.0.7-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-7, GIT revision 21432:29003eeed:20171007.

2017-10-06  7.0.7-7 Cristy  <quetzlzacatenango@image...>
  * Correct handling of GIF transparency (reference
    https://github.com/ImageMagick/ImageMagick/issues/831).

2017-10-04  7.0.7-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-6, GIT revision 21426:0a1cb507b:20171004.

2017-10-03  7.0.7-6 Cristy  <quetzlzacatenango@image...>
  * Reset the magick_list_initialized boolean when needed (reference
    https://github.com/ImageMagick/ImageMagick/pull/826).

2017-10-01  7.0.7-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-5, GIT revision 21382:3846f9d97:20171001.

2017-09-28  7.0.7-5 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Support URW-base35 fonts.

2017-09-26  7.0.7-5 Glenn Randers-Pehrson <glennrp@image...>
  * Removed "ping_preserve_iCCP=MagickTrue;" statement that was inadvertently
    added to coders/png.c (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32771).

2017-09-23  7.0.7-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-4, GIT revision 21265:bdbc14590:20170923.

2017-09-23  7.0.7-4 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/pull/763).

2017-09-17  7.0.7-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-3, GIT revision 21202:6e6907ac7:20170917.

2017-09-17  7.0.7-3 ADLab of Venustech
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/pull/763).

2017-09-15  7.0.7-3 Glenn Randers-Pehrson <glennrp@image...>
  * Stop potential leaks in the JNG decoder (reference:
    https://github.com/ImageMagick/ImageMagick/issues/760).
  * Maximum valid hour is 23, not 24, in the PNG tIME chunk, and maximum
    valid minute is 59, not 60.

2017-09-12  7.0.7-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-2, GIT revision 21089:4e46ad9dd:20170912.

2017-09-11  7.0.7-2 Glenn Randers-Pehrson <glennrp@image...>
  * Use signed integer arithmetic to calculate timezone corrections (reference
    https://github.com/ImageMagick/ImageMagick/issues/685).

2017-09-09  7.0.7-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-1, GIT revision 21065:ab2194121:20170909.

2017-09-09  7.0.7-1 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-09-05 7.0.7-1 Dirk Lemstra <dirk@lem.....org>
  * Added -define tiff:write-layers=true to add support for writing layered
    tiff files.

2017-09-03  7.0.7-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-0, GIT revision 20996:2f8ac2203:20170903.

2017-08-28  7.0.7-0 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Don't overwrite symbolic links when the shred policy is enabled.

2017-08-27  7.0.6-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-10, GIT revision 20920:9940c367a:20170827.

2017-08-27  7.0.6-10 Cristy  <quetzlzacatenango@image...>
  * Support -metric ssim, structual similarity index.

2017-08-26  7.0.6-10 Dirk Lemstra <dirk@lem.....org>
  * Fixed thread safety issue inside the pango and librsvg decoder
    (reference: https://github.com/dlemstra/Magick.NET/issues/91).

2017-08-20  7.0.6-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-9, GIT revision 20860:3f307d8ad:20170820.

2017-08-18  7.0.6-9 Glenn Randers-Pehrson <glennrp@image...>
  * Fixed bug with writing tIME chunk when timezone has a negative offset
    (reference: https://github.com/ImageMagick/ImageMagick/issues/685)

2017-08-18  7.0.6-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-8, GIT revision 20838:e2eb79427:20170818.

2017-08-14  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Support CubicSpline resize filter.  Define the lobes with the
    -define filter:lobes={2,3,4} (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=32506).
  * Prevent assertion failure when creating PDF thumbnail (reference
    https://github.com/ImageMagick/ImageMagick/issues/674).

2017-08-12  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-7, GIT revision 20799:0db4d8a16:20170812.

2017-08-12  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Improve EPS aliasing (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32497).

2017-08-11  7.0.6-7 Dirk Lemstra <dirk@lem.....org>
  * Added a new option called 'dds:fast-mipmaps' (reference
    https://github.com/ImageMagick/ImageMagick/issues/558)
  * The mipmaps of a dds image can now be created from a list of images with
    -define dds:mipmaps=fromlist (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=30236).

2017-08-10  7.0.6-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-6, GIT revision 20775:061d0fa25:20170810.

2017-08-10  7.0.6-6 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-08-10  7.0.6-6 Glenn Randers-Pehrson <glennrp@image...>
  * tests/validate.c: Show the reason for failures in the test logs,
    if available.

2017-08-03  7.0.6-6 Glenn Randers-Pehrson <glennrp@image...>
  * Put UTC time in the PNG tIME chunk instead of local time (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32447).

2017-08-02  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-5, GIT revision 20715:26b28d50a:20170802.

2017-08-01  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-07-29  7.0.6-5 Glenn Randers-Pehrson <glennrp@image...>
  * Properly set image->colorspace in the PNG decoder (previously
    it was setting image->gamma, but only setting image->colorspace
    for grayscale and gray-alpha images.  Reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32418).
  * Fix improper use of NULL in the JNG decoder (CVE-2017-11750, Reference
    https://github.com/ImageMagick/ImageMagick/issues/632).
  * Added "-define png:ignore-crc" option to PNG decoder. When you know
    your image has no CRC or ADLER32 errors, this can speed up decoding.
    It is also helpful in debugging bug reports from "fuzzers".

2017-07-29  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Off by one error for gradient coder (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32416),
    https://github.com/ImageMagick/ImageMagick/issues/612).

2017-07-28  7.0.6-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-4, GIT revision 20657:4e81160d6:20170728.

2017-07-24  7.0.6-4 Cristy  <quetzlzacatenango@image...>
  * YUV coder no longer renders streaks (reference
    https://github.com/ImageMagick/ImageMagick/issues/612).
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues) including
    https://github.com/ImageMagick/ImageMagick/issues/618 (CVE-2017-12676).
  * coders/png.c: Initialized quantum_scanline and quantum_info
    to prevent a bad free (reference
    https://github.com/ImageMagick/ImageMagick/issues/621).

2017-07-25  7.0.6-4 Glenn Randers-Pehrson <glennrp@image...>
  * Removed write_chunk_from_profile() from coders/png.c because it has
    not worked at least since version 6.7.6.
  * Removed many redundant checks before RelinquishMagickMemory(), which
    is safe to call with a NULL argument.
  * Added experimental PNG orNT chunk, to store image->orientation.
  * Removed vpAg chunk write support (we are now writing caNv instead).

2017-07-24  7.0.6-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-3, GIT revision 20598:cc9c43b44:20170724.

2017-07-23  7.0.6-3 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-07-23  7.0.6-3 Glenn Randers-Pehrson <glennrp@image...>
  * Fix memory leaks when reading a malformed JNG image:
    https://github.com/ImageMagick/ImageMagick/issues/600 (CVE-2017-13141),
    https://github.com/ImageMagick/ImageMagick/issues/602 (CVE-2017-12565).

2017-07-21  7.0.6-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-2, GIT revision 20549:62fcf3d96:20170721.

2017-07-19  7.0.6-2 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * The -monochrome option no longer returns a blank canvas (reference
    https://github.com/ImageMagick/ImageMagick/issues/594).
  * coders/png.c: fixed memory leak of quantum_info (CVE-2017-11539, reference
    https://github.com/ImageMagick/ImageMagick/issues/582
  * coders/png.c: fixed NULL dereference when trying to write an empty MNG
    (CVE-2017-11522, reference
    https://github.com/ImageMagick/ImageMagick/issues/586).

2017-07-15  7.0.6-2 Glenn Randers-Pehrson <glennrp@image...>
  * Added caNv, eXIf, and pHYs to the list of PNG chunks to be removed
    by the "-strip" option.

2017-07-15  7.0.6-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-1, GIT revision 20447:c2a315e10:20170715.

2017-07-13  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Implemented PNG eXIf chunk support.

2017-07-08  7.0.6-1 Cristy  <quetzlzacatenango@image...>
  * Support new -auto-threshold option.  OTSU and Triangle methods are
    currently supported.  Look for the Kapur method in the next release.
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Don't use variable float_t / double_t, bump SO (reference
    https://github.com/ImageMagick/ImageMagick/issues/510).
  * Support DNG images with libraw delegate library.

2017-07-02  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Reject PNG file that is too small (under 60 bytes) to contain
    a valid image.
  * Reject JPEG file that is too small (under 107 bytes) to contain
    a valid image.
  * Reject JNG file that is too small (under 147 bytes) to contain
    a valid image.

2017-06-22  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Stop a memory leak in read_user_chunk_callback() (reference
    https://github.com/ImageMagick/ImageMagick/issues/517,
    CVE 2017-11310).

2017-06-10  7.0.6-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-0, GIT revision 20194:b0c0d00:20170611.

2017-06-10  7.0.6-0 Glenn Randers-Pehrson <glennrp@image...>
  * coders/png.c: Accept exIf chunks whose data segment
    erroneously begins with "Exif\0\0".

2017-06-10  7.0.6-0 Cristy  <quetzlzacatenango@image...>
  * Introduce SetMagickSecurityPolicy() (MagickCore) and
    MagickSetSecurityPolicy() (MagickWand) to set the ImageMagick security
    policy (reference https://github.com/ImageMagick/ImageMagick/issues/407).

2017-06-02  7.0.5-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-10, GIT revision 20155:38ebc02:20170602.

2017-06-01  7.0.5-10 Glenn Randers-Pehrson <glennrp@image...>
  * Removed experimental PNG zxIF chunk support; the proposal is dead.

2017-06-01  7.0.5-10 Cristy  <quetzlzacatenango@image...>
  * Fix choppy bitmap font rendering (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32071).
  * The +opaque option is not longer a noop (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32081).
  * Add support  for 'hex:' property.

2017-05-28  7.0.5-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-9, GIT revision 20113:8b67333:20170528.

2017-05-28  7.0.5-9 Cristy  <quetzlzacatenango@image...>
  * Transient error validating the JPEG-2000 image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/501).
  * Properly allocate DCM image colormap (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32063).

2017-05-26  7.0.5-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-8, GIT revision 20099:870a016:20170526.

2017-05-23  7.0.5-8 Cristy  <quetzlzacatenango@image...>
  * Improper allocation of memory for IM instances without threads (reference
    https://github.com/ImageMagick/ImageMagick/issues/497).
  * Delete corrupt image from list (reference
    https://github.com/ImageMagick/ImageMagick/issues/500).

2017-05-19  7.0.5-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-6, GIT revision 20078:7ce2d38:20170519.

2017-05-15  7.0.5-7 Cristy  <quetzlzacatenango@image...>
  * Support various image operators for the compare utility (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=31938).

 2017-05-12  7.0.5-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-6, GIT revision 20039:9371904:20170512.

2017-05-10  7.0.5-6 John Cupitt <jcupitt@gmail.com>
  * Revise DICOM window and rescale handling (reference
    https://github.com/ImageMagick/ImageMagick/pull/484)

2017-05-06  7.0.5-6 Cristy  <quetzlzacatenango@image...>
  * Restore the -alpha Shape option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31879).
  * Fix transient PDF bug (reference
    https://github.com/ImageMagick/ImageMagick/issues/463).
  * The +opaque option now works on all channels (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31862).
  * Ensure backwards compatibility for the -combine option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31855).
  * Check for EOF conditions for RLE image format.
  * Reset histogram page geometry (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31920).

2017-04-24  7.0.5-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-5, GIT revision 19915:12eec43:20170424.

2017-03-26  7.0.5-5 Cristy  <quetzlzacatenango@image...>
  * Minimize buffer copies to improve OpenCL performance.
  * Morphology thinning is no longer a no-op (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31650).
  * Patch two PCD writer problems, corrupt output and dark pixels (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=3164).
  * Support ICC based PDF's (reference
    https://github.com/ImageMagick/ImageMagick/issues/417).
  * Fix improper EPS clip path rendering (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31722).

2017-03-24  7.0.5-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-4, GIT revision 19754:350fff3:20170324.

2017-03-21  7.0.5-4 Cristy  <quetzlzacatenango@image...>
  * Respect -loop option for animate -window (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31619).

2017-03-17  7.0.5-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-3, GIT revision 19741:070c3fb:20170317.

2017-03-14  7.0.5-3 Cristy  <quetzlzacatenango@image...>
  * Support namespaces for the security policy.
  * Support the -authenticate option for PDF (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31530).

2017-03-11  7.0.5-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-2, GIT revision 19696:da91a7c:20170311.

2017-03-06  7.0.5-2 Cristy  <quetzlzacatenango@image...>
  * Respect throttle policy (reference
    https://github.com/ImageMagick/ImageMagick/issues/393).
  * Return proper minima / maxima (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31377).

2017-03-03  7.0.5-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-1, GIT revision 19662:b7f455a:20170303.

2017-02-21  7.0.5-1 Cristy  <quetzlzacatenango@image...>
  * Fix Spurious memory allocation message (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31438).
  * Identical images should return inf for PSNR (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31487).

2017-02-20  7.0.5-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-0, GIT revision 19616:505fea9:20170220.

2017-02-20  7.0.5-0 Cristy  <quetzlzacatenango@image...>
  * Fix transient bug with -separate option (reference
    https://github.com/ImageMagick/ImageMagick/issues/385).

2017-02-18  7.0.4-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-10, GIT revision 19608:fe757a2:20170218.

2017-02-18  7.0.4-10 Dirk Lemstra <dirk@lem.....org>
  * Fixed fd leak for webp coder (reference
    https://github.com/ImageMagick/ImageMagick/pull/382)

2017-02-15  7.0.4-10 Cristy  <quetzlzacatenango@image...>
  * Prevent random pixel data for corrupt JPEG image (bug report from
    Hirokazu Moriguchi, Sony).
  * Restore -mattecolor option.
  * Support pixel-cache and shred security policies.
  * Bump Magick++ SO.  Previously a global replace changed matteColor to
    alphaColor.

2017-02-14  7.0.4-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-9, GIT revision 19580:d474b37:20170214.

2017-02-14  7.0.4-9 Cristy  <quetzlzacatenango@image...>
  * Revert patch that did not set update trait on alpha channel.

2017-02-13  7.0.4-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-8, GIT revision 19574:7642384:20170213.

2017-02-09  7.0.4-8 Dirk Lemstra <dirk@lem.....org>
  * Fixed memory leak when creating nested exceptions in Magick++ (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=23&p=142634)

2017-02-09  7.0.4-8 Cristy  <quetzlzacatenango@image...>
  * Unbreak build without JPEG support (reference
    https://github.com/ImageMagick/ImageMagick/pull/373).
  * Document behavior change in the security policy (thanks to yoya @
    https://blog.awm.jp/2017/02/09/imagemagick-en/).
  * Return unbiased standard deviation for image statistics (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31377).
  * Don't set update trait on alpha channel (private e-mail concerning
    -levels-colors option).

2017-02-04  7.0.4-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-7, GIT revision 19513:5783e57:20170204.

2017-01-28  7.0.4-7 Cristy  <quetzlzacatenango@image...>
  * Sanitize comments that include braces for the MIFF image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/368).

2017-01-27  7.0.4-7 Glenn Randers-Pehrson <glennrp@image...>
  * coders/png.c: Added support for a proposed new PNG chunk
    (zxIf, read-only) that is currently being discussed on the
    png-mng-misc at lists.sourceforge.net mailing list.  Enable
    exIf and zxIf with CPPFLAGS="-DexIf_SUPPORTED -DxzIf_SUPPORTED".
    If exIf is enabled, only the uncompressed exIF chunk will be
    written and the hex-encoded zTXt chunk containing the raw Exif
    profile won't be written.

2017-01-27  7.0.4-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-6, GIT revision 19442:4747de9:20170127.

2017-01-27  7.0.4-6 Cristy  <quetzlzacatenango@image...>
  * Uninitialized data in MAT image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/362).
  * Properly auto-fit caption (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30887).
  * Correction to composite Over operator (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31282).
  * Respect gravity option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31284).

2017-01-22  7.0.4-6 Glenn Randers-Pehrson <glennrp@image...>
  * Renamed read_vpag_chunk_callback() function to png_user_chunk_callback()
    in coders/png.c
  * Implemented a private PNG caNv (canvas) chunk for remembering the
    original dimensions and offsets when an image is cropped.  Previously
    we used the oFFs and vpAg chunks for this purpose, but this had potential
    conflicts with other applications that also use the oFFs chunk.
  * coders/png.c: Added support for a proposed new PNG chunk (exIf
    read-write, eXIf read-only) that is currently being discussed on the
    png-mng-misc at lists.sourceforge.net mailing list.

2017-01-22  7.0.4-6 Dirk Lemstra <dirk@lem.....org>
  * Replaced CoderSeekableStreamFlag with CoderDecoderSeekableStreamFlag and
    CoderEncoderSeekableStreamFlag.

2017-01-21  7.0.4-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-5, GIT revision 19381:7ae396f:20170121.

2017-01-18  7.0.4-5 Cristy  <quetzlzacatenango@image...>
  * Don't set background for transparent tiled images (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31210).

2017-01-14  7.0.4-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-4, GIT revision 19361:a12953c:20170114.

2017-01-14  7.0.4-4 Dirk Lemstra <dirk@lem.....org>
  * Added support for RGB555, RGB565, ARGB4444 and ARGB1555 to the
    BMP encoder (reference
    https://github.com/ImageMagick/ImageMagick/issues/344).

2017-01-10  7.0.4-4 Cristy  <quetzlzacatenango@image...>
  * Recognize XML policy closing tags (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31182).
  * Fix memory leak in the MPC format.

2017-01-07  7.0.4-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-3, GIT revision 19329:930ca78:20170107.

2017-01-04  7.0.4-3 Cristy  <quetzlzacatenango@image...>
  * Increase memory allocation for TIFF pixels (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31161).

2017-01-03  7.0.4-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-2, GIT revision 19318:8766311:20170103.

2017-01-02  7.0.4-2 Cristy  <quetzlzacatenango@image...>
  * Validation unit test for MNG works again.

2016-12-31  7.0.4-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-1, GIT revision 19292:c5ccfa8:20161231.

2016-12-26  7.0.4-1 Cristy  <quetzlzacatenango@image...>
  * Initialize draw_info alpha member to OpaqueAlpha.
  * Monochrome images no longer have inverted colors (reference
    https://github.com/ImageMagick/ImageMagick/issues/332).

2016-12-18  7.0.4-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-0, GIT revision 19221:d5e8abc:20161218.

2016-12-14  7.0.4-0 Cristy  <quetzlzacatenango@image...>
 * Do not close path for linejoins of round (reference
   https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31039).

2016-12-10  7.0.3-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-10, GIT revision 19191:338f088:20161210.

2016-12-07  7.0.3-10 Cristy  <quetzlzacatenango@image...>
  * Set colorspace to sRGB if -append has non-homogenous colorspaces (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29105).
  * Respect connected-components:area-threshold define (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31006).
  * Enable alpha channel if background color is non-opaque (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31016).
  * Return correct offset for negative index for -fx option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31019).
  * Fixed improper scaling of certain FITS images (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31028).
  * Properly center text label (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31027).

2016-12-05  7.0.3-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-9, GIT revision 19139:6fed3f1:20161205.

2016-11-26  7.0.3-9 Cristy  <quetzlzacatenango@image...>
  * Support the compare -read-mask option.
  * Support read-masks for the -modulate option.
  * Prevent buffer overflow when streaming an image (reference
    https://github.com/ImageMagick/ImageMagick/issues/312).
  * Fix possible buffer overflow when writing compressed TIFFS (vulnerability
    report from Cisco Talos, CVE-2016-8707).

2016-11-15  7.0.3-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-8, GIT revision 19067:5aceded:20161125.

2016-11-18  7.0.3-8 Cristy  <quetzlzacatenango@image...>
  * Support the phash:colorspaces and phash:normalize options.
  * If a convenient line break is not found, force it for caption: (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30887).
  * Set alpha member of draw structure to OpaqueAlpha (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30894).
  * Off by 1 error when computing the standard deviation (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=30866).
  * Apply Debian patches, (reference
    https://github.com/ImageMagick/ImageMagick/issues/304).
  * Permit EPT images with just a TIFF or EPS image, not both (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30921).
  * The -clone option no longer leaks memory.
  * Render to clip mask rather than image for clip-path MVG graphics primitive.

2016-11-15  7.0.3-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-7, GIT revision 19024:87aca83:20161115.

2016-11-10  7.0.3-7 Cristy  <quetzlzacatenango@image...>
  * Web pages were broken when we moved to HTTPS protocol.

2016-11-08  7.0.3-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-6, GIT revision 19001:4cff747:20161108.

2016-11-01  7.0.3-6 Cristy  <quetzlzacatenango@image...>
  * Off by one memory allocation (reference
    https://github.com/ImageMagick/ImageMagick/issues/296).
  * The -extent option now matches the results of IMv6 (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=30779).
  * Prevent fault in MSL interpreter (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30797).
  * Mask composite produces proper results for the convert utility (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29675).

2016-10-10  7.0.3-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-5, GIT revision 18975:a8174a2:20161030.

2016-10-16  7.0.3-5 Dirk Lemstra <dirk@lem.....org>
  * Added layer RLE compression to the PSD encoder.

2016-10-10  7.0.3-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-4, GIT revision 18937:83da034:20161010.

2016-10-10  7.0.3-4 Dirk Lemstra <dirk@lem.....org>
  * Fixed incorrect parsing with ordered dither. (reference
    https://github.com/ImageMagick/ImageMagick/issues/254)

2016-10-10  7.0.3-4 Cristy  <quetzlzacatenango@image...>
  * Unit test pass again after small SUN image patch.

2016-10-08  7.0.3-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-3, GIT revision 18924:d6614e7:20161008.

2016-10-07  7.0.3-3 Dirk Lemstra <dirk@lem.....org>
  * Fixed incorrect RLE decoding when reading a DCM image that contains
    multiple segments.

2016-10-02  7.0.3-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-2, GIT revision 18887:6b27c5b:20161002.

2016-09-27  7.0.3-2 Dirk Lemstra <dirk@lem.....org>
  * Fixed incorrect RLE decoding when reading an SGI image (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30514)

2016-09-20  7.0.3-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-1, GIT revision 18851:ad91ea8:20160920.

2016-09-16  7.0.3-1 Dirk Lemstra <dirk@lem.....org>
  * Added layer RLE compression to the PSD encoder.
  * Added define 'psd:preserve-opacity-mask' to preserve the opacity mask
    in a PSD file.
  * Fixed issue where the display window was used instead of the data window
    when reading EXR files (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&p=137849).

2016-09-05  7.0.3-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-0, GIT revision 18786:10aa64c:20160905.

2016-08-29  7.0.3-0 Dirk Lemstra <dirk@lem.....org>
  * Fixed reading DXT1 images with an alpha channel.
  * Fixed incorrect padding calculation in PSD encoder.

2016-08-27  7.0.2-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-10, GIT revision 18750:e3335b3:20160827.

2016-08-27  7.0.2-10 Dirk Lemstra <dirk@lem.....org>
  * Added define 'psd:additional-info' to preserve the additional information
    in a PSD file.

2016-08-15  7.0.2-10 Cristy  <quetzlzacatenango@image...>
  * Prevent buffer overflow in BMP & SGI coders (bug report from
    pwchen&rayzhong of tencent).
  * Prevent buffer overflow and other problems in SIXEL, PDB, MAP, TIFF and
    CALS coders (bug report from Donghai Zhu).
  * The -stream option now increments the pixel pointer properly (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30327).

2016-08-14  7.0.2-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-9, GIT revision 18707:2c02f09:20160814.

2016-08-14  7.0.2-9 Cristy  <quetzlzacatenango@image...>
  * Fix compile error in opencl.c (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30289).
  * Eliminate compiler warning.

2016-08-14  7.0.2-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-8, GIT revision 18698:74b1d5d:20160814.

2016-08-07  7.0.2-8 Cristy  <quetzlzacatenango@image...>
  * Prevent spurious removal of MPC cache files (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30256).
  * Note alpha channel when combining 4 or more images (reference
    https://github.com/ImageMagick/ImageMagick/issues/250).

2016-08-06  7.0.2-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-7, GIT revision 10980:ecc03a2:20160806.

2016-08-01  7.0.2-7 Cristy  <quetzlzacatenango@image...>
  * Evaluate lazy pixel cache morphology to prevent buffer overflow (bug report
    from Ibrahim M. El-Sayed).
  * Prevent buffer overflow (bug report from Max Thrane).
  * Prevent memory use after free (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30245).

2016-07-30  7.0.2-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-6, GIT revision 18651:df24175:20160729.

2016-07-29  7.0.2-6 Cristy  <quetzlzacatenango@image...>
  * Support -region option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=29692).

2016-07-21  7.0.2-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-5, GIT revision 18627:2b5ddbd:20160721.

2016-07-13  7.0.2-5 Cristy  <quetzlzacatenango@image...>
  * Fix MVG stroke-opacity (reference
    https://github.com/ImageMagick/ImageMagick/issues/229).
  * Prevent possible buffer overflow when reading TIFF images (bug report from
    Shi Pu of MS509 Team).
  * Initialize index channel to get expected results from the stegano coder.

2016-07-11  7.0.2-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-4, GIT revision 18591:50debe5:20160710.

2016-07-10  7.0.2-4 Cristy  <quetzlzacatenango@image...>
  * To comply with the SVG standard, use stroke-opacity for transparent strokes.
  * Define CompositeChannels mask to Red, Green, Blue, Alpha, and Black.

2016-07-09  7.0.2-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-3, GIT revision 18572:28560fc:20160709.

2016-07-01  7.0.2-3 Cristy  <quetzlzacatenango@image...>
  * Patch so -kuwahara option can preserve colormapped edges.
  * The histogram coder now returns the correct extent.
  * Use CopyMagickString() rather than CopyMagickMemory() for strings.

2016-06-26  7.0.2-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-2, GIT revision 18514:a7b5b46:20160626.

2016-06-23  7.0.2-2 Cristy  <quetzlzacatenango@image...>
  * Correct for numerical instability (reference
    https://github.com/ImageMagick/ImageMagick/issues/218).

2016-06-21  7.0.2-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-1, GIT revision 18479:931319b:20160622.

2016-06-17  7.0.2-1 Dirk Lemstra <dirk@lem.....org>
  * Added support for GROUP4 compression to the FAX coder.

2016-06-12  7.0.2-1 Cristy  <quetzlzacatenango@image...>
  * Distort no longer converts grayscale image to sRGB (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=29895).
  * Don't return a zero bounding box for QueryMultilineFontMetrics() (reference
    https://github.com/ImageMagick/ImageMagick/issues/222).

2016-06-12  7.0.2-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-0, GIT revision 10884:f0e15e8:20160612.

2016-06-09  7.0.2-0 Cristy  <quetzlzacatenango@image...>
  * Backoff finite precision epsilon (reference
    https://github.com/ImageMagick/ImageMagick/issues/215).
  * Fix drawing glitch for stroke widths greater than 2 (reference
    https://github.com/ImageMagick/ImageMagick/issues/218).

2016-06-05  7.0.1-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-10, GIT revision 18406:ba4ad2d:20160607.

2016-06-04  7.0.1-10 Cristy  <quetzlzacatenango@image...>
  * Deny indirect reads by policy, remove policy to permit, e.g.,
    convert caption:@mytext.txt ...
  * RLE check for pixel offset less than 0 (heap overflow report from Craig
    Young).
  * Properly initialze PES blocks (reference
    https://github.com/ImageMagick/ImageMagick/issues/213).

2016-06-03  7.0.1-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-9, GIT revision 10847:339f803:20160602.

2016-06-02  7.0.1-9 Cristy  <quetzlzacatenango@image...>
  * Fix small memory leak (patch provided by Андрей Черный).
  * Coder path traversal is not authorized (bug report provided by
    Masaaki Chida).
  * Turn off alpha channel for the compare difference image (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29828).

2016-05-31  7.0.1-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-8, GIT revision 18334:97775b5:20160531.

2016-05-31  7.0.1-8 Cristy  <quetzlzacatenango@image...>
  * Support configure script --enable-pipes option to enable pipes (|) in
    filenames.
  * Support configure script --enable-indirect-reads option to enable
    indirect reads (@) in filenames.

2016-05-30  7.0.1-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-7, GIT revision 18321:5511ef5:20160530.

2016-05-25  7.0.1-7 Cristy  <quetzlzacatenango@image...>
  * Security improvements to TEXT coder broke it (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29754).
  * Fix stroke offset problem for -annotate (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29626).
  * Don't interpret -fx option arguments (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29774);
  * Add additional checks to DCM reader to prevent data-driven faults (bug
    report from Hanno Böck).

2016-05-21  7.0.1-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-6, GIT revision 18241:d4f277c:20160521.

2016-05-20  7.0.1-6 Cristy  <quetzlzacatenango@image...>
  * Fixed proper placement of text annotation for east / west gravity.

2016-05-18  7.0.1-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-5, GIT revision 10789:f7c2e89:20160518,

2016-05-18  7.0.1-5 Cristy  <quetzlzacatenango@image...>
  * Process channels independently for -channel -equalize (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29708).
  * Fix pixel cache on disk regression (reference
    https://github.com/ImageMagick/ImageMagick/issues/202).

2016-05-15  7.0.1-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-4, GIT revision 10778:52dae14:20160516.

2016-05-10  7.0.1-4 Cristy  <quetzlzacatenango@image...>
  * Prevent possible shell command injection vulnerability through the
    authenticate parameter of the PDF, PCL and XPS coders (report from
    Erez Turjeman).
  * Quote passwords when passed to a delegate program.
  * Iterate channels over source image rather than destination (bug report
    from Hanno Böck).
  * Can read geo-related EXIF metdata once-again (reference
    https://github.com/ImageMagick/ImageMagick/issues/198).
  * Sanitize all delegate emedded formatting characters.
  * Don't sync pixel cache in AcquireAuthenticCacheView() (bug report from
    Hanno Böck).

2016-05-09  7.0.1-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-3, GIT revision 10755:d540dda:20160509.

2016-05-07  7.0.1-3 Cristy  <quetzlzacatenango@image...>
  * Remove https delegate.

2016-05-06  7.0.1-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-2, GIT revision 10741:5746147:20160507.

2016-05-04  7.0.1-2 Cristy  <quetzlzacatenango@image...>
  * Check for buffer overflow in magick/draw.c/DrawStrokePolygon().
  * Replace show delegate title with image filename rather than label.
  * Fix GetNextToken() off by one error.
  * Remove support for internal ephemeral coder.

2016-05-03  7.0.1-1 Cristy  <quetzlzacatenango@image...>
  * New version 7.0.1-1, GIT revision 10723:9fc8a0c:20160503.

2016-05-03  7.0.1-1 Cristy  <quetzlzacatenango@image...>
  * Sanitize input filename for http / https delegates (improved patch).
  * Fix for possible security vulnerabilities (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=4&t=29588).

2016-04-30  7.0.1-0 Cristy  <quetzlzacatenango@image...>
  * New version 7.0.1-0, GIT revision 10716:b527bce:20160430.

2016-01-30  7.0.0-0 Fahad-Alsaidi & ShamsaHamed
  * Add support for languages that require complex text layout (reference
    https://github.com/ImageMagick/ImageMagick/pull/88).

2012-04-27  7.0.0-0 Anthony thyssen <A.Thyssen@griffith...>
  * Allow the use of set and escapes when no images in memory
    (unless you attempt to access per-image meta-data)
    Currently does not include %[fx:...] and %[pixel:...]

2012-10-05  7.0.0-0 Anthony thyssen <A.Thyssen@griffith...>
  * Rather than replicate 'options' into 'artifacts' make a link
    from image to image_info and lookup a global option if no artifact
    is defined.

2012-09-11  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * sigmoidal-contrast:
  * Remove unnecessary initial ClampToQuantum.

2012-09-10  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * sigmoidal-contrast:
  * Direct computation, without LUT;
  * Fix re-declaration of i (at the top, and inside a conditional).

2012-09-04  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * Add tanh/atanh clone of legacy sigmoidal map (faster & more accurate).

2012-08-08  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * Add final ClampToQuantum in sigmoidal colormap loop.
  * Remove OpenMP calls from colormap update loops.

2011-08-01  7.0.0-0 Cristy  <quetzlzacatenango@image...>
  * New version 7.0.0-0.

