From b32a38bf026ae22462e782254c00b83c4a5e0bfc Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Tue, 22 May 2018 20:47:04 +0200 Subject: [PATCH 001/277] #423: Minor clean-up --- .../imageio/plugins/pict/PICTImageReaderSpi.java | 6 ++++-- .../twelvemonkeys/imageio/plugins/pict/PICTImageWriter.java | 2 +- .../imageio/plugins/pict/PICTImageWriterSpi.java | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java index e6323d46..1e8b7736 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java @@ -43,11 +43,12 @@ import java.util.Locale; * @author Harald Kuhr * @version $Id: PICTImageReaderSpi.java,v 1.0 28.feb.2006 19:21:05 haku Exp$ */ -public class PICTImageReaderSpi extends ImageReaderSpiBase { +public final class PICTImageReaderSpi extends ImageReaderSpiBase { /** * Creates a {@code PICTImageReaderSpi}. */ + @SuppressWarnings("WeakerAccess") public PICTImageReaderSpi() { super(new PICTProviderInfo()); } @@ -83,11 +84,12 @@ public class PICTImageReaderSpi extends ImageReaderSpiBase { static void skipNullHeader(final ImageInputStream pStream) throws IOException { // NOTE: Only skip if FILE FORMAT, not needed for Mac OS DnD - // Spec says "platofrm dependent", may not be all nulls.. + // Spec says "platform dependent", may not be all nulls.. pStream.skipBytes(PICT.PICT_NULL_HEADER_SIZE); } private boolean isPICT(final ImageInputStream pStream) throws IOException { + // TODO: Need to validate better... // Size may be 0, so we can't use this for validation... pStream.readUnsignedShort(); diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriter.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriter.java index df8734b6..09b0747d 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriter.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriter.java @@ -83,7 +83,7 @@ import java.io.*; * @author Harald Kuhr * @version $Id: PICTWriter.java,v 1.0 05.apr.2006 15:20:48 haku Exp$ */ -public class PICTImageWriter extends ImageWriterBase { +public final class PICTImageWriter extends ImageWriterBase { // TODO: Inline these? private int rowBytes; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterSpi.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterSpi.java index 86507cdb..a5354889 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterSpi.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterSpi.java @@ -42,7 +42,7 @@ import java.util.Locale; * @author Harald Kuhr * @version $Id: PICTImageWriterSpi.java,v 1.0 02.mar.2006 19:21:05 haku Exp$ */ -public class PICTImageWriterSpi extends ImageWriterSpiBase { +public final class PICTImageWriterSpi extends ImageWriterSpiBase { /** * Creates a {@code PICTImageWriterSpi}. From 7ab72f016181b0d63f0a89bf6dbe7f8de3d31143 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Tue, 22 May 2018 21:10:57 +0200 Subject: [PATCH 002/277] #329 JPEGImageReader endless loop fix --- .../imageio/plugins/jpeg/Application.java | 2 +- .../imageio/plugins/jpeg/JPEGImageReader.java | 19 ++- .../jpeg/JPEGSegmentImageInputStream.java | 31 +++-- .../plugins/jpeg/JPEGImageReaderTest.java | 130 +++++++++++++++++- .../jpeg/JPEGSegmentImageInputStreamTest.java | 28 ++++ .../513f29d0-02a8-11e7-9756-6035edb96e79.jpg | Bin 0 -> 8223 bytes .../51432b02-02a8-11e7-9203-b42b1c43c0c3.jpg | Bin 0 -> 1641 bytes .../5145e95a-02a8-11e7-8372-4787a7307ab8.jpg | Bin 0 -> 7 bytes .../514b20dc-02a8-11e7-92c6-d4fed7b4ebb1.jpg | Bin 0 -> 2743 bytes .../514c48ea-02a8-11e7-8789-bb75321f404f.jpg | Bin 0 -> 232 bytes .../514e4122-02a8-11e7-8c03-0830d60cd585.jpg | Bin 0 -> 1641 bytes .../515e763c-02a8-11e7-85fb-573b41201f05.jpg | Bin 0 -> 2939 bytes .../516c2778-02a8-11e7-9d50-e916ce831200.jpg | Bin 0 -> 8223 bytes .../metadata/jpeg/JPEGSegmentUtil.java | 71 ++++++++-- 14 files changed, 251 insertions(+), 30 deletions(-) create mode 100644 imageio/imageio-jpeg/src/test/resources/broken-jpeg/513f29d0-02a8-11e7-9756-6035edb96e79.jpg create mode 100644 imageio/imageio-jpeg/src/test/resources/broken-jpeg/51432b02-02a8-11e7-9203-b42b1c43c0c3.jpg create mode 100644 imageio/imageio-jpeg/src/test/resources/broken-jpeg/5145e95a-02a8-11e7-8372-4787a7307ab8.jpg create mode 100644 imageio/imageio-jpeg/src/test/resources/broken-jpeg/514b20dc-02a8-11e7-92c6-d4fed7b4ebb1.jpg create mode 100644 imageio/imageio-jpeg/src/test/resources/broken-jpeg/514c48ea-02a8-11e7-8789-bb75321f404f.jpg create mode 100644 imageio/imageio-jpeg/src/test/resources/broken-jpeg/514e4122-02a8-11e7-8c03-0830d60cd585.jpg create mode 100644 imageio/imageio-jpeg/src/test/resources/broken-jpeg/515e763c-02a8-11e7-85fb-573b41201f05.jpg create mode 100644 imageio/imageio-jpeg/src/test/resources/broken-jpeg/516c2778-02a8-11e7-9d50-e916ce831200.jpg diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Application.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Application.java index 80e07237..586c91d8 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Application.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Application.java @@ -90,7 +90,7 @@ class Application extends Segment { default: // Generic APPn segment - byte[] bytes = new byte[length - 2]; + byte[] bytes = new byte[Math.max(0, length - 2)]; data.readFully(bytes); return new Application(marker, identifier, bytes); } diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java index 52e420f1..eadd04ca 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java @@ -233,7 +233,14 @@ public final class JPEGImageReader extends ImageReaderBase { @Override public Iterator getImageTypes(int imageIndex) throws IOException { - Iterator types = delegate.getImageTypes(imageIndex); + Iterator types; + try { + types = delegate.getImageTypes(imageIndex); + } + catch (IndexOutOfBoundsException | NegativeArraySizeException ignore) { + types = null; + } + JPEGColorSpace csType = getSourceCSType(getJFIF(), getAdobeDCT(), getSOF()); if (types == null || !types.hasNext() || csType == JPEGColorSpace.CMYK || csType == JPEGColorSpace.YCCK) { @@ -302,7 +309,7 @@ public final class JPEGImageReader extends ImageReaderBase { return rawType; } } - catch (IIOException | NullPointerException ignore) { + catch (IIOException | NullPointerException | ArrayIndexOutOfBoundsException | NegativeArraySizeException ignore) { // Fall through } @@ -933,7 +940,13 @@ public final class JPEGImageReader extends ImageReaderBase { return new JPEGLosslessDecoderWrapper(this).readRaster(segments, imageInput); } - return delegate.readRaster(imageIndex, param); + try { + return delegate.readRaster(imageIndex, param); + } + catch (IndexOutOfBoundsException knownIssue) { + // com.sun.imageio.plugins.jpeg.JPEGBuffer doesn't do proper sanity check of input data. + throw new IIOException("Corrupt JPEG data: Bad segment length", knownIssue); + } } @Override diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java index e8762f5a..533f308e 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java @@ -40,6 +40,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import static com.twelvemonkeys.imageio.metadata.jpeg.JPEGSegmentUtil.isKnownJPEGMarker; import static com.twelvemonkeys.lang.Validate.notNull; import static java.util.Arrays.copyOf; @@ -105,24 +106,25 @@ final class JPEGSegmentImageInputStream extends ImageInputStreamImpl { // Scan forward while (true) { - long realPosition = stream.getStreamPosition(); - int trash = 0; int marker = stream.readUnsignedByte(); - // Skip bad padding before the marker - while (marker != 0xff) { - marker = stream.readUnsignedByte(); - trash++; - realPosition++; - } + while (!isKnownJPEGMarker(marker)) { + marker &= 0xff; - marker = 0xff00 | stream.readUnsignedByte(); + // Skip bad padding before the marker + while (marker != 0xff) { + marker = stream.readUnsignedByte(); + trash++; + } - // Skip over 0xff padding between markers - while (marker == 0xffff) { - realPosition++; marker = 0xff00 | stream.readUnsignedByte(); + + // Skip over 0xff padding between markers + while (marker == 0xffff) { + marker = 0xff00 | stream.readUnsignedByte(); + trash++; + } } if (trash != 0) { @@ -131,6 +133,8 @@ final class JPEGSegmentImageInputStream extends ImageInputStreamImpl { processWarningOccured(String.format("Corrupt JPEG data: %d extraneous bytes before marker 0x%02x", trash, marker & 0xff)); } + long realPosition = stream.getStreamPosition() - 2; + // We are now handling all important segments ourselves, except APP1/Exif and APP14/Adobe, // as these segments affects image decoding. boolean appSegmentMarker = isAppSegmentMarker(marker); @@ -380,6 +384,7 @@ final class JPEGSegmentImageInputStream extends ImageInputStreamImpl { fetchSegment(); } catch (EOFException ignore) { + segments.add(new Segment(0, segment.realEnd(), segment.end(), Integer.MAX_VALUE * 2L - segment.realEnd())); // This might happen if the segment lengths in the stream are bad. // We MUST leave internal state untouched in this case. // We ignore this exception here, but client code will get @@ -415,7 +420,7 @@ final class JPEGSegmentImageInputStream extends ImageInputStreamImpl { repositionAsNecessary(); long bytesLeft = segment.end() - streamPos; // If no more bytes after reposition, we're at EOF - int count = bytesLeft == 0 ? -1 : segment.read(stream, b, off + total, (int) Math.min(len - total, bytesLeft)); + int count = bytesLeft <= 0 ? -1 : segment.read(stream, b, off + total, (int) Math.min(len - total, bytesLeft)); if (count == -1) { // EOF diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java index 350703ad..2f28168e 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java @@ -119,8 +119,15 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTestUoqNIa`_OFMaLBsTYViT` z65oJ}1J14W_t5;`C+-?Fj=_fI#?6bDuCw{!^Wy!(&0s_+|@Cs2829S|k$hso8%msBRZ8+m^j6uBMJC&2J zvJt4`SnGP)6=Za7Pou9#eSoYHl%M1@q?07hkjn?c-dJg`y0 z647g8v$as8732=)4PWx=QXR5WElR1_r47Wd>~x1Dh0A8*_88M9M^< zTA(BYP_4j%RX__ry{mU-(0In|Df$03{sTFZ5Pw3w2ht4l7TAx^4nw^GR0(%viX+fdO~0N` ze*skPoFWhNA|a45m>9vmpZSipb)Dp3Egm6HEo<3Eri z2?;GM-hze!)EhvRa7U&%0zK9A>-qE-K)ak%Yf)0nr zH>wXvGzC>NC@p}K0Pb`FNp8?|v4TMXoc=&TN!@e>2?*SQ08A6esgZ*54$#0kmSInTTVPKQuYGcm8AgN)jsH_X-I|2=E f`t^MJ3sS9VkiJI*fH+0{KhP=vHU0zLg=94V5u$4t literal 0 HcmV?d00001 diff --git a/imageio/imageio-jpeg/src/test/resources/broken-jpeg/514e4122-02a8-11e7-8c03-0830d60cd585.jpg b/imageio/imageio-jpeg/src/test/resources/broken-jpeg/514e4122-02a8-11e7-8c03-0830d60cd585.jpg new file mode 100644 index 0000000000000000000000000000000000000000..27032008e7a8cac18c7e2b586f09744411097b57 GIT binary patch literal 1641 zcmex=WElR1_r47Wd>~x1Dh0A8*_88M9M^< zTA(BYP_4j%RX__ry{mU-(0In|Df$03{sTFZ5Pw3w2ht4l7TAx^4nw^GR0(%viX+fdO~0N` ze*skPoFWhNA|alHV|M+V^|AVi&ARVF2lAgy>-e>H#WcU|?vN*5A<6wP4FLxUoWElRxcP z3NRML>FWQrQu6<6{0FL*goHLUkdeIw4MV6mfGXjROmPHys_EDB=`Vm`=bR!B^CBUq zGGdEhu)~ppG#405FxTF@N6_K$^n&UG5=}wX3`$|(B!oL%K$0uX(-kBja0db~O<<;W z0-0#QJq2|1Aj>TEq@_6=sRdZz4D!q}avcsT>Oh%g0(#Xjv@?q=sLG*p%`%!5@7_IFqt7uVIt2g$d=LNt literal 0 HcmV?d00001 diff --git a/imageio/imageio-jpeg/src/test/resources/broken-jpeg/516c2778-02a8-11e7-9d50-e916ce831200.jpg b/imageio/imageio-jpeg/src/test/resources/broken-jpeg/516c2778-02a8-11e7-9d50-e916ce831200.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f9a294d97fa3fddc84e5c04031d9bde1c6ee20e7 GIT binary patch literal 8223 zcmeHMJ#Q015S_~}aEBs;I0OhQ1__D6%^_ih2tkiT<8F&IC@sRp9jOpPGBiOE5^{;s z(4@fy4J};?kP(I|0g4nfNHojr$9?bm&Ub6a2baQevU__ovu|hKo28%VH)!8++Bcn! z13=#o_r{xVPWL}PaMwn?yQ7z2Tk^{d%UaoP{scIr$H2xc90QxrXA^^Qz;U-rw!Gb) z-;+@f0KA=n_w>nd{}7iaz?Od`mS;=IRU=Og8^9)a8czRS?{@I~0km6J9kStcI(&dU z$2Z{OfO8weJv9H${j`s-@bf zWJvF0n0#w<7#{4q@Sra@X2w-C?w7*F0C6E4(MKQmG>W!dVAdNY9+zN!tp)ps5@1KC zE~3%J!G0=&BV%B9XTywUxADL)IoRiG_$`?V=5R_g3~#VRluR$WYYoytj9 z*$Grta891%CYd2ohRW*6Ri|tO8Qq9bH~dSLu9#eSn9_BzM1@q?07hkjTR_}xJg`y0 z647f@v$as8732=)4PWt^QXR5ZnhNdXla2ozV!81@N!P{Xmi-lq(GS4o@-Oo4(ITMzZF; z%W?w|*USZSPpr|2(p<%B%T=s0tRbgEs+K~1qUD{WaiXNWh#YvelJ#$a5fvaGn0 sjp~4$Cz{{xVm#j_tEMm1(%l!c7ib|#m-#FF^%-x5xdwU{UTJs9UqDg-9RL6T literal 0 HcmV?d00001 diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentUtil.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentUtil.java index ea8db62f..8bf362bb 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentUtil.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentUtil.java @@ -165,22 +165,24 @@ public final class JPEGSegmentUtil { // int trash = 0; int marker = stream.readUnsignedByte(); - // Skip trash padding before the marker - while (marker != 0xff) { - marker = stream.readUnsignedByte(); + while (!isKnownJPEGMarker(marker)) { + // Skip trash padding before the marker + while (marker != 0xff) { + marker = stream.readUnsignedByte(); // trash++; - } + } // if (trash != 0) { // TODO: Issue warning? // System.err.println("trash: " + trash); // } - marker = 0xff00 | stream.readUnsignedByte(); - - // Skip over 0xff padding between markers - while (marker == 0xffff) { marker = 0xff00 | stream.readUnsignedByte(); + + // Skip over 0xff padding between markers + while (marker == 0xffff) { + marker = 0xff00 | stream.readUnsignedByte(); + } } if ((marker >> 8 & 0xff) != 0xff) { @@ -192,7 +194,7 @@ public final class JPEGSegmentUtil { byte[] data; if (segmentIdentifiers.containsKey(marker)) { - data = new byte[length - 2]; + data = new byte[Math.max(0, length - 2)]; stream.readFully(data); } else { @@ -218,6 +220,57 @@ public final class JPEGSegmentUtil { return new JPEGSegment(marker, data, length); } + public static boolean isKnownJPEGMarker(final int marker) { + switch (marker) { + case JPEG.SOI: + case JPEG.EOI: + case JPEG.DHT: + case JPEG.SOS: + case JPEG.DQT: + case JPEG.COM: + case JPEG.SOF0: + case JPEG.SOF1: + case JPEG.SOF2: + case JPEG.SOF3: + case JPEG.SOF5: + case JPEG.SOF6: + case JPEG.SOF7: + case JPEG.SOF9: + case JPEG.SOF10: + case JPEG.SOF11: + case JPEG.SOF13: + case JPEG.SOF14: + case JPEG.SOF15: + case JPEG.SOF55: + case JPEG.APP0: + case JPEG.APP1: + case JPEG.APP2: + case JPEG.APP3: + case JPEG.APP4: + case JPEG.APP5: + case JPEG.APP6: + case JPEG.APP7: + case JPEG.APP8: + case JPEG.APP9: + case JPEG.APP10: + case JPEG.APP11: + case JPEG.APP12: + case JPEG.APP13: + case JPEG.APP14: + case JPEG.APP15: + case JPEG.DRI: + case JPEG.TEM: + case JPEG.DAC: + case JPEG.DHP: + case JPEG.DNL: + case JPEG.EXP: + case JPEG.LSE: + return true; + default: + return false; + } + } + private static class AllIdsList extends ArrayList { @Override public String toString() { From f738e0e20dccb4cc830006e5a4416ca184a13750 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Mon, 11 Jun 2018 20:45:07 +0200 Subject: [PATCH 003/277] Minor fix: dispose() now correctly invokes resetMembers() as in ImageReaderBase. --- .../com/twelvemonkeys/imageio/ImageWriterBase.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageWriterBase.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageWriterBase.java index f6239068..a554a7f0 100755 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageWriterBase.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageWriterBase.java @@ -100,9 +100,15 @@ public abstract class ImageWriterBase extends ImageWriter { } @Override - public void reset() { - super.reset(); + public void dispose() { resetMembers(); + super.dispose(); + } + + @Override + public void reset() { + resetMembers(); + super.reset(); } protected void resetMembers() { @@ -138,7 +144,7 @@ public abstract class ImageWriterBase extends ImageWriter { * The AOI is defined by the {@link javax.imageio.IIOParam#setSourceRegion(java.awt.Rectangle)} * method. *

- * Note: If it is possible for the reader to read the AOI directly, such a + * Note: If it is possible for the writer to write the AOI directly, such a * method should be used instead, for efficiency. * * @param pImage the image to get AOI from @@ -161,7 +167,7 @@ public abstract class ImageWriterBase extends ImageWriter { * NOTE: This method does not take the subsampling offsets into * consideration. *

- * Note: If it is possible for the reader to subsample directly, such a + * Note: If it is possible for the writer to subsample directly, such a * method should be used instead, for efficiency. * * @param pImage the image to subsample From 90593117dbb0803da470451fd038b00a3fbaa16b Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 13 Jun 2018 16:51:23 +0200 Subject: [PATCH 004/277] Now emits warning if metadata can't be converted. --- .../com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java index 21d66ba9..e88b50ba 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java @@ -866,7 +866,7 @@ public final class TIFFImageWriter extends ImageWriterBase { } } catch (IIOInvalidTreeException e) { - // TODO: How to issue warning when warning requires imageIndex??? Use -1? + processWarningOccurred(sequenceIndex, "Could not convert image meta data: " + e.getMessage()); } ifd = outData.getIFD(); From 156990afe054dbe76d42939bfb2f26c72946a2bb Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 13 Jun 2018 16:53:43 +0200 Subject: [PATCH 005/277] Simplified write logic, by reusing sequence writing (single image sequence). --- .../imageio/plugins/tiff/TIFFImageWriter.java | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java index e88b50ba..7763001e 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java @@ -132,16 +132,9 @@ public final class TIFFImageWriter extends ImageWriterBase { @Override public void write(final IIOMetadata streamMetadata, final IIOImage image, final ImageWriteParam param) throws IOException { - assertOutput(); - configureStreamByteOrder(streamMetadata, imageOutput); - - // TODO: Make TIFFEntry and possibly TIFFDirectory? public - TIFFWriter tiffWriter = new TIFFWriter(); - tiffWriter.writeTIFFHeader(imageOutput); - - writePage(0, image, param, tiffWriter, imageOutput.getStreamPosition()); - - imageOutput.flush(); + prepareWriteSequence(streamMetadata); + writeToSequence(image, param); + endWriteSequence(); } private long writePage(int imageIndex, IIOImage image, ImageWriteParam param, TIFFWriter tiffWriter, long lastIFDPointerOffset) @@ -927,7 +920,7 @@ public final class TIFFImageWriter extends ImageWriterBase { } @Override - public void prepareWriteSequence(IIOMetadata streamMetadata) throws IOException { + public void prepareWriteSequence(final IIOMetadata streamMetadata) throws IOException { if (writingSequence) { throw new IllegalStateException("sequence writing has already been started!"); } @@ -942,7 +935,7 @@ public final class TIFFImageWriter extends ImageWriterBase { } @Override - public void writeToSequence(IIOImage image, ImageWriteParam param) throws IOException { + public void writeToSequence(final IIOImage image, final ImageWriteParam param) throws IOException { if (!writingSequence) { throw new IllegalStateException("prepareWriteSequence() must be called before writeToSequence()!"); } From f3749b8fc6b5571465b0f786cf457e7f840c1831 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 13 Jun 2018 17:00:32 +0200 Subject: [PATCH 006/277] #402 Now forces ProfileDeferralMgr.activateProfiles() if TM plugins are used. --- .../java/com/twelvemonkeys/imageio/color/ColorSpaces.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java index 2350fb4a..3293306b 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java @@ -98,6 +98,11 @@ public final class ColorSpaces { // Cache for the latest used color spaces private static final Map cache = new LRUHashMap<>(10); + static { + // Force invocation of ProfileDeferralMgr.activateProfiles() to avoid JDK-6986863 + ICC_Profile.getInstance(ColorSpace.CS_sRGB).getData(); + } + private ColorSpaces() {} /** From 44530d471710a228ded8302077af08a1f6ded86a Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 13 Jun 2018 17:35:30 +0200 Subject: [PATCH 007/277] Minor fix for possible NPE --- .../twelvemonkeys/imageio/plugins/tiff/TIFFImageWriteParam.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriteParam.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriteParam.java index 4ed13ee6..2e63b293 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriteParam.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriteParam.java @@ -93,7 +93,7 @@ public final class TIFFImageWriteParam extends ImageWriteParam { static int getCompressionType(final ImageWriteParam param) { // TODO: Support mode COPY_FROM_METADATA (when we have metadata...) - if (param == null || param.getCompressionMode() != MODE_EXPLICIT || param.getCompressionType().equals("None")) { + if (param == null || param.getCompressionMode() != MODE_EXPLICIT || param.getCompressionType() == null || param.getCompressionType().equals("None")) { return TIFFBaseline.COMPRESSION_NONE; } else if (param.getCompressionType().equals("PackBits")) { From c83171cdbf1405991c2683be2728c3e643644d51 Mon Sep 17 00:00:00 2001 From: Ivan Khaldeev Date: Fri, 29 Jun 2018 10:02:05 +0400 Subject: [PATCH 008/277] Fix getAlphaRaster for ExtraSamplesColorModel --- .../plugins/tiff/ExtraSamplesColorModel.java | 16 ++++++++++++++ .../plugins/tiff/TIFFImageReaderTest.java | 20 ++++++++++++++++++ .../test/resources/tiff/extra-channels.tif | Bin 0 -> 94772 bytes 3 files changed, 36 insertions(+) create mode 100755 imageio/imageio-tiff/src/test/resources/tiff/extra-channels.tif diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java index 10082da7..552ddf91 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java @@ -7,6 +7,7 @@ import java.awt.color.ColorSpace; import java.awt.image.ComponentColorModel; import java.awt.image.ComponentSampleModel; import java.awt.image.SampleModel; +import java.awt.image.WritableRaster; /** * ExtraSamplesColorModel. @@ -41,4 +42,19 @@ final class ExtraSamplesColorModel extends ComponentColorModel { // Must have the same number of components return numComponents == sm.getNumBands() && transferType == sm.getTransferType(); } + + @Override + public WritableRaster getAlphaRaster(WritableRaster raster) { + if (hasAlpha() == false) { + return null; + } + + int x = raster.getMinX(); + int y = raster.getMinY(); + int[] band = new int[1]; + band[0] = super.getNumComponents() - 1; + return raster.createWritableChild(x, y, raster.getWidth(), + raster.getHeight(), x, y, + band); + } } diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java index 53ad946b..53f101c8 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java @@ -40,6 +40,7 @@ import javax.imageio.stream.ImageInputStream; import java.awt.*; import java.awt.image.BufferedImage; import java.awt.image.Raster; +import java.awt.image.WritableRaster; import java.io.IOException; import java.nio.ByteOrder; import java.util.Arrays; @@ -586,6 +587,25 @@ public class TIFFImageReaderTest extends ImageReaderAbstractTest>> 24); + + int[] alpha = new int[1]; + WritableRaster alphaRaster = image.getAlphaRaster(); + assertEquals(0x00, alphaRaster.getPixel(0, 0, alpha)[0]); + assertEquals(0xf5, alphaRaster.getPixel(50, 50, alpha)[0]); + } + } + @Test public void testReadWithSubsampleParamPixelsJPEG() throws IOException { // Tiled "new style" JPEG diff --git a/imageio/imageio-tiff/src/test/resources/tiff/extra-channels.tif b/imageio/imageio-tiff/src/test/resources/tiff/extra-channels.tif new file mode 100755 index 0000000000000000000000000000000000000000..d642e46113a31d415382ff5f74989d4af0a63233 GIT binary patch literal 94772 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 J;f+sA{uhAXyG{TA literal 0 HcmV?d00001 From 18800b6ee4fa7a9faf9080bbb6b68a9130cfe3a1 Mon Sep 17 00:00:00 2001 From: Oliver Schmidtmer Date: Mon, 9 Jul 2018 16:42:34 +0200 Subject: [PATCH 009/277] Merging TIFF pages failed, if a page contained a sub IFD without a TIFF.TAG_COMPRESSION entry --- .../contrib/tiff/TIFFUtilities.java | 11 ++++---- .../contrib/tiff/TIFFUtilitiesTest.java | 28 +++++++++++++++++++ 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/contrib/src/main/java/com/twelvemonkeys/contrib/tiff/TIFFUtilities.java b/contrib/src/main/java/com/twelvemonkeys/contrib/tiff/TIFFUtilities.java index 88b12a58..4c8a58d2 100644 --- a/contrib/src/main/java/com/twelvemonkeys/contrib/tiff/TIFFUtilities.java +++ b/contrib/src/main/java/com/twelvemonkeys/contrib/tiff/TIFFUtilities.java @@ -477,12 +477,13 @@ public final class TIFFUtilities { } Entry compressionEntry = IFD.getEntryById(TIFF.TAG_COMPRESSION); - Number compression = (Number) compressionEntry.getValue(); - if (compression.shortValue() == TIFFExtension.COMPRESSION_OLD_JPEG) { - newIFD.remove(compressionEntry); - newIFD.add(new TIFFEntry(TIFF.TAG_COMPRESSION, TIFF.TYPE_SHORT, TIFFExtension.COMPRESSION_JPEG)); + if(compressionEntry != null) { + Number compression = (Number) compressionEntry.getValue(); + if (compression.shortValue() == TIFFExtension.COMPRESSION_OLD_JPEG) { + newIFD.remove(compressionEntry); + newIFD.add(new TIFFEntry(TIFF.TAG_COMPRESSION, TIFF.TYPE_SHORT, TIFFExtension.COMPRESSION_JPEG)); + } } - return newIFD; } diff --git a/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java b/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java index 1b4534e9..f1a79ff6 100644 --- a/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java +++ b/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java @@ -233,6 +233,34 @@ public class TIFFUtilitiesTest { } } + @Test + public void testMergeWithSubIFD() throws IOException { + String testFile = "/tiff/cmyk_jpeg.tif"; + + File output = File.createTempFile("imageiotest", ".tif"); + ImageOutputStream outputStream = ImageIO.createImageOutputStream(output); + InputStream inputStream1 = getClassLoaderResource(testFile).openStream(); + ImageInputStream imageInput1 = ImageIO.createImageInputStream(inputStream1); + InputStream inputStream2 = getClassLoaderResource(testFile).openStream(); + ImageInputStream imageInput2 = ImageIO.createImageInputStream(inputStream2); + ArrayList pages = new ArrayList<>(); + pages.addAll(TIFFUtilities.getPages(imageInput1)); + pages.addAll(TIFFUtilities.getPages(imageInput2)); + TIFFUtilities.writePages(outputStream, pages); + + ImageInputStream testOutput = ImageIO.createImageInputStream(output); + ImageReader reader = ImageIO.getImageReaders(testOutput).next(); + reader.setInput(testOutput); + int numImages = reader.getNumImages(true); + for (int i = 0; i < numImages; i++) { + reader.read(i); + } + + imageInput1.close(); + imageInput2.close(); + outputStream.close(); + } + protected URL getClassLoaderResource(final String pName) { return getClass().getResource(pName); } From b43faf2fae8e2c944145f738735f544f559886f8 Mon Sep 17 00:00:00 2001 From: Seafra Forder Date: Mon, 16 Jul 2018 14:21:57 +0100 Subject: [PATCH 010/277] Added an extra mark to match the reset call in the finally block --- .../imageio/plugins/pict/PICTImageReaderSpi.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java index 1e8b7736..c19d1d8b 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java @@ -69,6 +69,12 @@ public final class PICTImageReaderSpi extends ImageReaderSpiBase { else { // Skip header 512 bytes for file-based streams stream.reset(); + + // If we don't mark again here, the reset call in the finally block will: + // A) do nothing + // B) eat marks created in the stream previously + stream.mark(); + skipNullHeader(stream); } From dd914444c9f526afc1f85cca3edb0fc13479e53e Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 18 Aug 2018 12:51:03 +0200 Subject: [PATCH 011/277] Now preserves PHOTOMETRIC_WHITE_IS_ZERO for CCITT encodings. --- .../imageio/plugins/tiff/TIFFImageReader.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java index 0878c275..a5a2b53f 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java @@ -461,7 +461,16 @@ public final class TIFFImageReader extends ImageReaderBase { // TIFF 6.0 baseline case TIFFBaseline.PHOTOMETRIC_WHITE_IS_ZERO: // WhiteIsZero - // NOTE: We handle this by inverting the values when reading, as Java has no ColorModel that easily supports this. + // We need special case to preserve WhiteIsZero for CCITT 1 bit encodings + // as some software will treat black/white runs as-is, regardless of photometric. + // Special handling is also in the normalizeColor method + if (profile == null && significantSamples == 1 && bitsPerSample == 1) { + byte[] lut = new byte[] {-1, 0}; + return ImageTypeSpecifier.createIndexed(lut, lut, lut, null, bitsPerSample, dataType); + } + + // Otherwise, we'll handle this by inverting the values when reading + case TIFFBaseline.PHOTOMETRIC_BLACK_IS_ZERO: // BlackIsZero // Gray scale or B/W @@ -2042,9 +2051,12 @@ public final class TIFFImageReader extends ImageReaderBase { private void normalizeColor(int photometricInterpretation, byte[] data) throws IIOException { switch (photometricInterpretation) { case TIFFBaseline.PHOTOMETRIC_WHITE_IS_ZERO: - // Inverse values - for (int i = 0; i < data.length; i++) { - data[i] ^= -1; + // NOTE: Preserve WhiteIsZero for 1 bit monochrome, for CCITT compatibility + if (getBitsPerSample() > 1 || getValueAsIntWithDefault(TIFF.TAG_SAMPLES_PER_PIXEL, 1) > 1) { + // Inverse values + for (int i = 0; i < data.length; i++) { + data[i] ^= -1; + } } break; From 27fcd495db21600e944b5d74c6fb4de448faf169 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 18 Aug 2018 12:52:53 +0200 Subject: [PATCH 012/277] Added dispose() of reader after reading. --- .../imageio/util/ImageReaderAbstractTest.java | 112 ++++++++++++++++-- 1 file changed, 101 insertions(+), 11 deletions(-) diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java index d83c21d6..2ebba948 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java @@ -96,7 +96,7 @@ public abstract class ImageReaderAbstractTest { protected boolean allowsNullRawImageType() { return false; - } + } protected static void failBecause(String message, Throwable exception) { AssertionError error = new AssertionError(message); @@ -193,6 +193,8 @@ public abstract class ImageReaderAbstractTest { for (TestData data : getTestData()) { reader.setInput(data.getInputStream()); } + + reader.dispose(); } @Test @@ -201,6 +203,7 @@ public abstract class ImageReaderAbstractTest { ImageReader reader = createReader(); assertNotNull(reader); reader.setInput(null); + reader.dispose(); } @Test @@ -233,6 +236,8 @@ public abstract class ImageReaderAbstractTest { ); } } + + reader.dispose(); } @Test @@ -252,6 +257,8 @@ public abstract class ImageReaderAbstractTest { failBecause("Image could not be read", e); } assertNull(image); + + reader.dispose(); } @Test @@ -271,6 +278,8 @@ public abstract class ImageReaderAbstractTest { failBecause("Image could not be read", e); } assertNull(image); + + reader.dispose(); } @Test @@ -289,6 +298,8 @@ public abstract class ImageReaderAbstractTest { failBecause("Image could not be read", e); } assertNull(image); + + reader.dispose(); } @Test @@ -307,6 +318,8 @@ public abstract class ImageReaderAbstractTest { assertEquals(first.getType(), second.getType()); assertEquals(first.getWidth(), second.getWidth()); assertEquals(first.getHeight(), second.getHeight()); + + reader.dispose(); } @Test @@ -327,6 +340,8 @@ public abstract class ImageReaderAbstractTest { } assertNull(image); + + reader.dispose(); } @Test @@ -337,7 +352,7 @@ public abstract class ImageReaderAbstractTest { BufferedImage image = null; try { - image = reader.read(99, reader.getDefaultReadParam()); + image = reader.read(Short.MAX_VALUE, reader.getDefaultReadParam()); fail("Read image with index out of bounds"); } catch (IndexOutOfBoundsException ignore) { @@ -347,6 +362,8 @@ public abstract class ImageReaderAbstractTest { } assertNull(image); + + reader.dispose(); } @Test @@ -366,6 +383,8 @@ public abstract class ImageReaderAbstractTest { } assertNull(image); + + reader.dispose(); } @Test @@ -385,6 +404,8 @@ public abstract class ImageReaderAbstractTest { assertNotNull("Image was null!", image); assertEquals("Read image has wrong width: " + image.getWidth(), data.getDimension(0).width, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), data.getDimension(0).height, image.getHeight()); + + reader.dispose(); } @Test @@ -404,6 +425,8 @@ public abstract class ImageReaderAbstractTest { assertNotNull("Image was null!", image); assertEquals("Read image has wrong width: " + image.getWidth(), data.getDimension(0).width, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), data.getDimension(0).height, image.getHeight()); + + reader.dispose(); } @Test @@ -423,6 +446,8 @@ public abstract class ImageReaderAbstractTest { assertNotNull("Image was null!", image); assertEquals("Read image has wrong width: " + image.getWidth(), data.getDimension(0).width, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), data.getDimension(0).height, image.getHeight()); + + reader.dispose(); } @Test @@ -447,6 +472,8 @@ public abstract class ImageReaderAbstractTest { assertEquals("Read image has wrong width: " + image.getWidth(), 10, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), 10, image.getHeight()); } + + reader.dispose(); } @Test @@ -469,6 +496,8 @@ public abstract class ImageReaderAbstractTest { assertNotNull("Image was null!", image); assertEquals("Read image has wrong width: ", (data.getDimension(0).width + 4) / 5, image.getWidth()); assertEquals("Read image has wrong height: ", (data.getDimension(0).height + 4) / 5, image.getHeight()); + + reader.dispose(); } @Test @@ -492,6 +521,8 @@ public abstract class ImageReaderAbstractTest { } assertSubsampledImageDataEquals("Subsampled image data does not match expected", image, subsampled, param); + + reader.dispose(); } // TODO: Subsample all test data @@ -581,6 +612,8 @@ public abstract class ImageReaderAbstractTest { assertNotNull("Image was null!", image); assertEquals("Read image has wrong width: " + image.getWidth(), 10, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), 10, image.getHeight()); + + reader.dispose(); } @Test @@ -619,6 +652,8 @@ public abstract class ImageReaderAbstractTest { assertEquals("Read image has wrong width: " + image.getWidth(), r.width, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), r.height, image.getHeight()); assertImageDataEquals("Images differ", roi, image); + + reader.dispose(); } @Test @@ -648,6 +683,8 @@ public abstract class ImageReaderAbstractTest { assertEquals("Read image has wrong width: " + image.getWidth(), 10, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), 10, image.getHeight()); } + + reader.dispose(); } @Test @@ -673,6 +710,7 @@ public abstract class ImageReaderAbstractTest { assertEquals("Read image has wrong width: " + image.getWidth(), 5, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), 5, image.getHeight()); + reader.dispose(); } @Test @@ -692,7 +730,10 @@ public abstract class ImageReaderAbstractTest { catch (IOException e) { failBecause("Image could not be read", e); } + assertNull(image); + + reader.dispose(); } @Test @@ -716,7 +757,10 @@ public abstract class ImageReaderAbstractTest { catch (IOException e) { failBecause("Image could not be read", e); } + assertNull(image); + + reader.dispose(); } @Test @@ -724,9 +768,9 @@ public abstract class ImageReaderAbstractTest { ImageReader reader = createReader(); // Do not set input - BufferedImage image = null; + RenderedImage image = null; try { - image = reader.read(0, reader.getDefaultReadParam()); + image = reader.readAsRenderedImage(0, reader.getDefaultReadParam()); fail("Read image with no input"); } catch (IllegalStateException expected) { @@ -735,7 +779,10 @@ public abstract class ImageReaderAbstractTest { catch (IOException e) { failBecause("Image could not be read", e); } + assertNull(image); + + reader.dispose(); } @Test @@ -751,11 +798,14 @@ public abstract class ImageReaderAbstractTest { catch (IOException e) { failBecause("Image could not be read", e); } + assertNotNull("Image was null!", image); assertEquals("Read image has wrong width: " + image.getWidth(), data.getDimension(0).width, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), data.getDimension(0).height, image.getHeight()); + + reader.dispose(); } @Test @@ -771,11 +821,14 @@ public abstract class ImageReaderAbstractTest { catch (IOException e) { failBecause("Image could not be read", e); } + assertNotNull("Image was null!", image); assertEquals("Read image has wrong width: " + image.getWidth(), data.getDimension(0).width, image.getWidth()); assertEquals("Read image has wrong height: " + image.getHeight(), data.getDimension(0).height, image.getHeight()); + + reader.dispose(); } @Test @@ -783,6 +836,7 @@ public abstract class ImageReaderAbstractTest { ImageReader reader = createReader(); ImageReadParam param = reader.getDefaultReadParam(); assertNotNull(param); + reader.dispose(); } @Test @@ -798,6 +852,7 @@ public abstract class ImageReaderAbstractTest { fail(e.getMessage()); } assertNotNull(name); + reader.dispose(); } @Test @@ -813,6 +868,7 @@ public abstract class ImageReaderAbstractTest { catch (IllegalStateException ignore) { } assertEquals(0, num); + reader.dispose(); } @Test @@ -826,6 +882,7 @@ public abstract class ImageReaderAbstractTest { catch (IllegalStateException ignore) { } assertEquals(0, num); + reader.dispose(); } @Test @@ -854,6 +911,7 @@ public abstract class ImageReaderAbstractTest { if (data.getImageCount() != num) { System.err.println("WARNING: Image count not equal to test data count"); } + reader.dispose(); } @Test @@ -881,6 +939,7 @@ public abstract class ImageReaderAbstractTest { fail(e.getMessage()); } assertEquals(-1, num); + reader.dispose(); } @Test @@ -897,6 +956,7 @@ public abstract class ImageReaderAbstractTest { fail("Could not read image width: " + e); } assertEquals("Wrong width reported", data.getDimension(0).width, width); + reader.dispose(); } @Test @@ -917,6 +977,7 @@ public abstract class ImageReaderAbstractTest { catch (IOException e) { fail("Could not read image aspect ratio: " + e); } + reader.dispose(); } @Test @@ -934,6 +995,7 @@ public abstract class ImageReaderAbstractTest { fail("Could not read image width: " + e); } assertEquals("Wrong width reported", 0, width); + reader.dispose(); } @Test @@ -950,6 +1012,7 @@ public abstract class ImageReaderAbstractTest { fail("Could not read image height: " + e); } assertEquals("Wrong height reported", data.getDimension(0).height, height); + reader.dispose(); } @Test @@ -967,6 +1030,7 @@ public abstract class ImageReaderAbstractTest { fail("Could not read image height: " + e); } assertEquals("Wrong height reported", 0, height); + reader.dispose(); } @Test @@ -987,6 +1051,7 @@ public abstract class ImageReaderAbstractTest { catch (IOException e) { fail("Could not read image height: " + e); } + reader.dispose(); } @Test @@ -1004,6 +1069,7 @@ public abstract class ImageReaderAbstractTest { } Dimension d = data.getDimension(0); assertEquals("Wrong aspect aspect ratio", d.getWidth() / d.getHeight(), aspectRatio, 0.001); + reader.dispose(); } @Test @@ -1021,6 +1087,7 @@ public abstract class ImageReaderAbstractTest { fail("Could not read image aspect ratio" + e); } assertEquals("Wrong aspect aspect ratio", 0f, aspectRatio, 0f); + reader.dispose(); } @Test @@ -1041,6 +1108,7 @@ public abstract class ImageReaderAbstractTest { catch (IOException e) { fail("Could not read image aspect ratio" + e); } + reader.dispose(); } @Test @@ -1061,12 +1129,14 @@ public abstract class ImageReaderAbstractTest { public void testAddIIOReadProgressListener() { ImageReader reader = createReader(); reader.addIIOReadProgressListener(mock(IIOReadProgressListener.class)); + reader.dispose(); } @Test public void testAddIIOReadProgressListenerNull() { ImageReader reader = createReader(); reader.addIIOReadProgressListener(null); + reader.dispose(); } @Test @@ -1090,6 +1160,7 @@ public abstract class ImageReaderAbstractTest { ordered.verify(listener).imageStarted(reader, 0); ordered.verify(listener, atLeastOnce()).imageProgress(eq(reader), anyInt()); ordered.verify(listener).imageComplete(reader); + reader.dispose(); } @Test @@ -1127,18 +1198,21 @@ public abstract class ImageReaderAbstractTest { ordered.verify(listener).imageComplete(reader); ordered.verify(listenerToo).imageComplete(reader); ordered.verify(listenerThree).imageComplete(reader); + reader.dispose(); } @Test public void testRemoveIIOReadProgressListenerNull() { ImageReader reader = createReader(); reader.removeIIOReadProgressListener(null); + reader.dispose(); } @Test public void testRemoveIIOReadProgressListenerNone() { ImageReader reader = createReader(); reader.removeIIOReadProgressListener(mock(IIOReadProgressListener.class)); + reader.dispose(); } @Test @@ -1146,7 +1220,7 @@ public abstract class ImageReaderAbstractTest { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); - + IIOReadProgressListener listener = mock(IIOReadProgressListener.class); reader.addIIOReadProgressListener(listener); reader.removeIIOReadProgressListener(listener); @@ -1160,6 +1234,7 @@ public abstract class ImageReaderAbstractTest { // Should not have called any methods... verifyZeroInteractions(listener); + reader.dispose(); } @Test @@ -1191,6 +1266,7 @@ public abstract class ImageReaderAbstractTest { ordered.verify(listenerToo).imageStarted(reader, 0); ordered.verify(listenerToo, atLeastOnce()).imageProgress(eq(reader), anyInt()); ordered.verify(listenerToo).imageComplete(reader); + reader.dispose(); } @Test @@ -1213,6 +1289,7 @@ public abstract class ImageReaderAbstractTest { // Should not have called any methods... verifyZeroInteractions(listener); + reader.dispose(); } @Test @@ -1239,6 +1316,7 @@ public abstract class ImageReaderAbstractTest { // Should not have called any methods... verifyZeroInteractions(listener); verifyZeroInteractions(listenerToo); + reader.dispose(); } @Test @@ -1275,6 +1353,7 @@ public abstract class ImageReaderAbstractTest { verify(listener).readAborted(reader); verify(listenerToo).readAborted(reader); + reader.dispose(); } @Test @@ -1308,6 +1387,7 @@ public abstract class ImageReaderAbstractTest { assertTrue("ImageTypeSepcifier from getRawImageType should be in the iterator from getImageTypes", rawFound); } + reader.dispose(); } @Test @@ -1334,6 +1414,7 @@ public abstract class ImageReaderAbstractTest { assertSame(destination, result); } + reader.dispose(); } @Test @@ -1363,6 +1444,7 @@ public abstract class ImageReaderAbstractTest { else { System.err.println("WARNING: Test skipped due to reader.getRawImageType(0) returning null"); } + reader.dispose(); } @Test @@ -1398,7 +1480,7 @@ public abstract class ImageReaderAbstractTest { destination.getType() == BufferedImage.TYPE_BYTE_INDEXED) && message.contains("indexcolormodel")))) { failBecause( - "Wrong message: " + message + " for type " + destination.getType(), expected + "Wrong message: " + message + " for type " + destination.getType(), expected ); } } @@ -1407,6 +1489,7 @@ public abstract class ImageReaderAbstractTest { assertTrue("Wrong message: " + message, message.contains("dest")); } } + reader.dispose(); } @Test @@ -1435,6 +1518,7 @@ public abstract class ImageReaderAbstractTest { } } } + reader.dispose(); } private List createIllegalTypes(Iterator pValidTypes) { @@ -1480,6 +1564,7 @@ public abstract class ImageReaderAbstractTest { assertNotNull(image); assertEquals(reader.getWidth(0) + point.x, image.getWidth()); assertEquals(reader.getHeight(0) + point.y, image.getHeight()); + reader.dispose(); } @SuppressWarnings("ConstantConditions") @@ -1497,6 +1582,7 @@ public abstract class ImageReaderAbstractTest { catch (IllegalArgumentException e) { assertTrue(e.getMessage().toLowerCase().contains("offset")); } + reader.dispose(); } @Test @@ -1538,6 +1624,7 @@ public abstract class ImageReaderAbstractTest { assertEquals(expectedModel.getSampleSize(i), resultModel.getSampleSize(i)); } } + reader.dispose(); } @Test @@ -1545,22 +1632,23 @@ public abstract class ImageReaderAbstractTest { T reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); - + BufferedImage one = reader.read(0); BufferedImage two = reader.read(0); - + assertNotSame("Multiple reads return same (mutable) image", one, two); one.setRGB(0, 0, Color.BLUE.getRGB()); two.setRGB(0, 0, Color.RED.getRGB()); assertTrue(one.getRGB(0, 0) != two.getRGB(0, 0)); + reader.dispose(); } @Test public void testNotBadCachingThumbnails() throws IOException { T reader = createReader(); - + if (reader.readerSupportsThumbnails()) { for (TestData data : getTestData()) { reader.setInput(data.getInputStream()); @@ -1587,7 +1675,7 @@ public abstract class ImageReaderAbstractTest { assertTrue(one.getRGB(0, 0) != two.getRGB(0, 0)); } - + if (thumbnails > 0) { // We've tested thumbnails, let's get out of here return; @@ -1597,8 +1685,9 @@ public abstract class ImageReaderAbstractTest { fail("No thumbnails tested for reader that supports thumbnails."); } + reader.dispose(); } - + @Ignore("TODO: Implement") @Test public void testSetDestinationBands() throws IOException { @@ -1627,6 +1716,7 @@ public abstract class ImageReaderAbstractTest { if (streamMetadata != null) { assertEquals(provider.getNativeStreamMetadataFormatName(), streamMetadata.getNativeMetadataFormatName()); } + reader.dispose(); } protected URL getClassLoaderResource(final String pName) { From 2235f6c9112bb053b8139b1be29a9c02436c174e Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 18 Aug 2018 13:08:17 +0200 Subject: [PATCH 013/277] #202, #433: Fixes offset issues when reading multiple JPEGs from single stream + embedded case (ie. TIFF). --- .../imageio/plugins/jpeg/JPEGImageReader.java | 254 +++++++++++++----- .../jpeg/JPEGSegmentImageInputStream.java | 3 +- .../plugins/jpeg/JPEGImageReaderTest.java | 29 ++ .../jfif-with-preview-as-second-image.jpg | Bin 0 -> 2871873 bytes 4 files changed, 217 insertions(+), 69 deletions(-) create mode 100644 imageio/imageio-jpeg/src/test/resources/jpeg/jfif-with-preview-as-second-image.jpg diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java index eadd04ca..c234a67a 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java @@ -39,6 +39,8 @@ import com.twelvemonkeys.imageio.metadata.jpeg.JPEGSegment; import com.twelvemonkeys.imageio.metadata.jpeg.JPEGSegmentUtil; import com.twelvemonkeys.imageio.metadata.tiff.TIFF; import com.twelvemonkeys.imageio.metadata.tiff.TIFFReader; +import com.twelvemonkeys.imageio.stream.BufferedImageInputStream; +import com.twelvemonkeys.imageio.stream.SubImageInputStream; import com.twelvemonkeys.imageio.util.ImageTypeSpecifiers; import com.twelvemonkeys.imageio.util.ProgressListenerBase; import com.twelvemonkeys.lang.Validate; @@ -126,6 +128,9 @@ public final class JPEGImageReader extends ImageReaderBase { /** Cached list of JPEG segments we filter from the underlying stream */ private List segments; + private int currentStreamIndex = 0; + private List streamOffsets = new ArrayList<>(); + protected JPEGImageReader(final ImageReaderSpi provider, final ImageReader delegate) { super(provider); @@ -142,6 +147,10 @@ public final class JPEGImageReader extends ImageReaderBase { @Override protected void resetMembers() { delegate.reset(); + + currentStreamIndex = 0; + streamOffsets.clear(); + segments = null; thumbnails = null; @@ -171,29 +180,11 @@ public final class JPEGImageReader extends ImageReaderBase { return delegate.getFormatName(); } - @Override - public int getNumImages(boolean allowSearch) throws IOException { - if (allowSearch) { - if (isLossless()) { - return 1; - } - } - - try { - return delegate.getNumImages(allowSearch); - } - catch (ArrayIndexOutOfBoundsException ignore) { - // This will happen if we find a "tables only" image, with no more images in stream. - return 0; - } - } - private boolean isLossless() throws IOException { assertInput(); try { - Frame sof = getSOF(); - if (sof.marker == JPEG.SOF3) { + if (getSOF().marker == JPEG.SOF3) { return true; } } @@ -210,32 +201,27 @@ public final class JPEGImageReader extends ImageReaderBase { @Override public int getWidth(int imageIndex) throws IOException { checkBounds(imageIndex); + initHeader(imageIndex); - Frame sof = getSOF(); - if (sof.marker == JPEG.SOF3) { - return sof.samplesPerLine; - } - - return delegate.getWidth(imageIndex); + return getSOF().samplesPerLine; } @Override public int getHeight(int imageIndex) throws IOException { checkBounds(imageIndex); + initHeader(imageIndex); - Frame sof = getSOF(); - if (sof.marker == JPEG.SOF3) { - return sof.lines; - } - - return delegate.getHeight(imageIndex); + return getSOF().lines; } @Override public Iterator getImageTypes(int imageIndex) throws IOException { + checkBounds(imageIndex); + initHeader(imageIndex); + Iterator types; try { - types = delegate.getImageTypes(imageIndex); + types = delegate.getImageTypes(0); } catch (IndexOutOfBoundsException | NegativeArraySizeException ignore) { types = null; @@ -301,9 +287,12 @@ public final class JPEGImageReader extends ImageReaderBase { @Override public ImageTypeSpecifier getRawImageType(int imageIndex) throws IOException { + checkBounds(imageIndex); + initHeader(imageIndex); + // If delegate can determine the spec, we'll just go with that try { - ImageTypeSpecifier rawType = delegate.getRawImageType(imageIndex); + ImageTypeSpecifier rawType = delegate.getRawImageType(0); if (rawType != null) { return rawType; @@ -332,25 +321,10 @@ public final class JPEGImageReader extends ImageReaderBase { } } - @Override - public void setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata) { - super.setInput(input, seekForwardOnly, ignoreMetadata); - - // JPEGSegmentImageInputStream that filters out/skips bad/unnecessary segments - delegate.setInput(imageInput != null - ? new JPEGSegmentImageInputStream(imageInput, new JPEGSegmentStreamWarningDelegate()) - : null, seekForwardOnly, ignoreMetadata); - } - - @Override - public boolean isRandomAccessEasy(int imageIndex) throws IOException { - return delegate.isRandomAccessEasy(imageIndex); - } - @Override public BufferedImage read(int imageIndex, ImageReadParam param) throws IOException { - assertInput(); checkBounds(imageIndex); + initHeader(imageIndex); Frame sof = getSOF(); ICC_Profile profile = getEmbeddedICCProfile(false); @@ -392,17 +366,17 @@ public final class JPEGImageReader extends ImageReaderBase { return bufferedImage; } - + // We need to apply ICC profile unless the profile is sRGB/default gray (whatever that is) // - or only filter out the bad ICC profiles in the JPEGSegmentImageInputStream. else if (delegate.canReadRaster() && ( bogusAdobeDCT || - sourceCSType == JPEGColorSpace.CMYK || - sourceCSType == JPEGColorSpace.YCCK || - profile != null && !ColorSpaces.isCS_sRGB(profile) || - (long) sof.lines * sof.samplesPerLine > Integer.MAX_VALUE || - !delegate.getImageTypes(imageIndex).hasNext() || - sourceCSType == JPEGColorSpace.YCbCr && getRawImageType(imageIndex) != null)) { // TODO: Issue warning? + sourceCSType == JPEGColorSpace.CMYK || + sourceCSType == JPEGColorSpace.YCCK || + profile != null && !ColorSpaces.isCS_sRGB(profile) || + (long) sof.lines * sof.samplesPerLine > Integer.MAX_VALUE || + !delegate.getImageTypes(0).hasNext() || + sourceCSType == JPEGColorSpace.YCbCr && getRawImageType(imageIndex) != null)) { // TODO: Issue warning? if (DEBUG) { System.out.println("Reading using raster and extra conversion"); System.out.println("ICC color profile: " + profile); @@ -416,7 +390,7 @@ public final class JPEGImageReader extends ImageReaderBase { System.out.println("Reading using delegate"); } - return delegate.read(imageIndex, param); + return delegate.read(0, param); } private BufferedImage readImageAsRasterAndReplaceColorProfile(int imageIndex, ImageReadParam param, Frame startOfFrame, JPEGColorSpace csType, ICC_Profile profile) throws IOException { @@ -519,7 +493,7 @@ public final class JPEGImageReader extends ImageReaderBase { // for each iteration, so we'll read all at once. try { param.setSourceRegion(srcRegion); - Raster raster = delegate.readRaster(imageIndex, param); // non-converted + Raster raster = delegate.readRaster(0, param); // non-converted // Apply source color conversion from implicit color space if (csType == JPEGColorSpace.YCbCr) { @@ -642,7 +616,7 @@ public final class JPEGImageReader extends ImageReaderBase { } } - protected ICC_Profile ensureDisplayProfile(final ICC_Profile profile) { + private ICC_Profile ensureDisplayProfile(final ICC_Profile profile) { // NOTE: This is probably not the right way to do it... :-P // TODO: Consider moving method to ColorSpaces class or new class in imageio.color package @@ -681,6 +655,30 @@ public final class JPEGImageReader extends ImageReaderBase { array[index + 3] = (byte) (value ); } + @Override + public void setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata) { + super.setInput(input, seekForwardOnly, ignoreMetadata); + + try { + if (imageInput != null) { + streamOffsets.add(imageInput.getStreamPosition()); + } + + initDelegate(seekForwardOnly, ignoreMetadata); + } + catch (IOException e) { + // TODO: This should ideally be reported as an IOException, but I don't see how + throw new IllegalStateException(e.getMessage(), e); + } + } + + private void initDelegate(boolean seekForwardOnly, boolean ignoreMetadata) throws IOException { + // JPEGSegmentImageInputStream that filters out/skips bad/unnecessary segments + delegate.setInput(imageInput != null + ? new JPEGSegmentImageInputStream(new SubImageInputStream(imageInput, Long.MAX_VALUE), new JPEGSegmentStreamWarningDelegate()) + : null, seekForwardOnly, ignoreMetadata); + } + private void initHeader() throws IOException { if (segments == null) { long start = DEBUG ? System.currentTimeMillis() : 0; @@ -714,11 +712,127 @@ public final class JPEGImageReader extends ImageReaderBase { } } + private void initHeader(final int imageIndex) throws IOException { + if (imageIndex < 0) { + throw new IllegalArgumentException("imageIndex < 0: " + imageIndex); + } + + if (imageIndex == currentStreamIndex) { + return; + } + + gotoImage(imageIndex); + + // Reset segments and re-init the header + segments = null; + thumbnails = null; + + initDelegate(seekForwardOnly, ignoreMetadata); + + initHeader(); + } + + private void gotoImage(final int imageIndex) throws IOException { + if (imageIndex < streamOffsets.size()) { + imageInput.seek(streamOffsets.get(imageIndex)); + } + else { + long lastKnownSOIOffset = streamOffsets.get(streamOffsets.size() - 1); + imageInput.seek(lastKnownSOIOffset); + + try (ImageInputStream stream = new BufferedImageInputStream(imageInput)) { // Extreme (10s -> 50ms) speedup if imageInput is FileIIS + for (int i = streamOffsets.size() - 1; i < imageIndex; i++) { + long start = 0; + + if (DEBUG) { + start = System.currentTimeMillis(); + System.out.println(String.format("Start seeking for image index %d", i + 1)); + } + + // Need to skip over segments, as they may contain JPEG markers (eg. JFXX or EXIF thumbnail) + JPEGSegmentUtil.readSegments(stream, Collections.>emptyMap()); + + // Now, search for EOI and following SOI... + int marker; + while ((marker = stream.read()) != -1) { + if (marker == 0xFF && (0xFF00 | stream.readUnsignedByte()) == JPEG.EOI) { + // Found EOI, now the SOI should be nearby... + while ((marker = stream.read()) != -1) { + if (marker == 0xFF && (0xFF00 | stream.readUnsignedByte()) == JPEG.SOI) { + long nextSOIOffset = stream.getStreamPosition() - 2; + imageInput.seek(nextSOIOffset); + streamOffsets.add(nextSOIOffset); + + break; + } + } + + // ...or we may have missed it, but at least we tried + break; + } + } + + if (DEBUG) { + System.out.println(String.format("Seek in %d ms", System.currentTimeMillis() - start)); + } + } + + } + catch (EOFException eof) { + IndexOutOfBoundsException ioobe = new IndexOutOfBoundsException("Image index " + imageIndex + " not found in stream"); + ioobe.initCause(eof); + throw ioobe; + } + + if (imageIndex >= streamOffsets.size()) { + throw new IndexOutOfBoundsException("Image index " + imageIndex + " not found in stream"); + } + } + + currentStreamIndex = imageIndex; + } + + @Override + public int getNumImages(boolean allowSearch) throws IOException { + assertInput(); + + if (allowSearch) { + if (seekForwardOnly) { + throw new IllegalStateException("seekForwardOnly and allowSearch are both true"); + } + + int index = 0; + int count = 0; + while (true) { + try { + gotoImage(index++); + } + catch (IndexOutOfBoundsException e) { + break; + } + + // TODO: We should probably optimize this + try { + getSOF(); // No SOF, no image + count++; + } + catch (IIOException ignore) {} + } + + currentStreamIndex = -1; + + return count; + } + + // We can't possibly know without searching + return -1; + } + private List readSegments() throws IOException { imageInput.mark(); try { - imageInput.seek(0); // TODO: Seek to wanted image, skip images on the way + imageInput.seek(streamOffsets.get(currentStreamIndex)); return JPEGSegmentUtil.readSegments(imageInput, SEGMENT_IDENTIFIERS); } @@ -794,7 +908,7 @@ public final class JPEGImageReader extends ImageReaderBase { processWarningOccurred("Exif chunk has no data."); } else { - ImageInputStream stream = ImageIO.createImageInputStream(data); + ImageInputStream stream = new MemoryCacheImageInputStream(data); return (CompoundDirectory) new TIFFReader().read(stream); // TODO: Directory offset of thumbnail is wrong/relative to container stream, causing trouble for the TIFFReader... @@ -933,6 +1047,7 @@ public final class JPEGImageReader extends ImageReaderBase { @Override public Raster readRaster(final int imageIndex, final ImageReadParam param) throws IOException { checkBounds(imageIndex); + initHeader(imageIndex); if (isLossless()) { // TODO: What about stream position? @@ -941,7 +1056,7 @@ public final class JPEGImageReader extends ImageReaderBase { } try { - return delegate.readRaster(imageIndex, param); + return delegate.readRaster(0, param); } catch (IndexOutOfBoundsException knownIssue) { // com.sun.imageio.plugins.jpeg.JPEGBuffer doesn't do proper sanity check of input data. @@ -973,6 +1088,7 @@ public final class JPEGImageReader extends ImageReaderBase { private void readThumbnailMetadata(int imageIndex) throws IOException { checkBounds(imageIndex); + initHeader(imageIndex); if (thumbnails == null) { thumbnails = new ArrayList<>(); @@ -1098,6 +1214,7 @@ public final class JPEGImageReader extends ImageReaderBase { public IIOMetadata getImageMetadata(int imageIndex) throws IOException { // checkBounds needed, as we catch the IndexOutOfBoundsException below. checkBounds(imageIndex); + initHeader(imageIndex); IIOMetadata imageMetadata; @@ -1106,7 +1223,7 @@ public final class JPEGImageReader extends ImageReaderBase { } else { try { - imageMetadata = delegate.getImageMetadata(imageIndex); + imageMetadata = delegate.getImageMetadata(0); } catch (IndexOutOfBoundsException knownIssue) { // TMI-101: com.sun.imageio.plugins.jpeg.JPEGBuffer doesn't do proper sanity check of input data. @@ -1179,22 +1296,22 @@ public final class JPEGImageReader extends ImageReaderBase { @Override public void imageComplete(ImageReader source) { - processImageComplete(); + processImageComplete(); } @Override public void imageProgress(ImageReader source, float percentageDone) { - processImageProgress(percentageDone); + processImageProgress(percentageDone); } @Override public void imageStarted(ImageReader source, int imageIndex) { - processImageStarted(imageIndex); + processImageStarted(currentStreamIndex); } @Override public void readAborted(ImageReader source) { - processReadAborted(); + processReadAborted(); } @Override @@ -1219,7 +1336,7 @@ public final class JPEGImageReader extends ImageReaderBase { @Override public void thumbnailStarted(ImageReader source, int imageIndex, int thumbnailIndex) { - processThumbnailStarted(imageIndex, thumbnailIndex); + processThumbnailStarted(currentStreamIndex, thumbnailIndex); } public void passStarted(ImageReader source, BufferedImage theImage, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands) { @@ -1274,6 +1391,7 @@ public final class JPEGImageReader extends ImageReaderBase { processWarningOccurred(warning); } } + protected static void showIt(final BufferedImage pImage, final String pTitle) { ImageReaderBase.showIt(pImage, pTitle); } diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java index 533f308e..9d7dfb84 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java @@ -172,6 +172,7 @@ final class JPEGSegmentImageInputStream extends ImageInputStreamImpl { } } else if (isSOFMarker(marker)) { + // TODO: Warning + ignore if we already have a SOF // Replace duplicate SOFn component ids byte[] data = readReplaceDuplicateSOFnComponentIds(marker, length); segment = new ReplacementSegment(marker, realPosition, segment.end(), length, data); @@ -272,7 +273,7 @@ final class JPEGSegmentImageInputStream extends ImageInputStreamImpl { processWarningOccured(String.format("Duplicate component ID %d in SOF", id)); id++; - while (!componentIds.add(id)) { + while (!componentIds.add(id) && componentIds.size() <= 16) { id++; } diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java index 2f28168e..8bbb2d4f 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java @@ -100,6 +100,7 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTestf@crT 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

^%9#P>omHnx}B(VO~CR)c+JbJoEOcI%maE~ZBD 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

5fu)V-W{cXi!w#O%*uoxHaBZAd#Su?cpKxCl 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

>rrQ1M{W)Xv!hRUkioqa770 zs~_8pCoF*$(LRzaB1`j8aWLvZ$UbKv}M_t*gxD?xuvKjRp0f9#5(v{{XI6_>S~nAUS#-v`kBDW z^PtHnJG0de4(3td1O`r*c%bm?i#h3#EEs~_n>YJ1%40fm)1owqvK@Qx2k$8R$J6Vs zk~36KwycBIG&b!%FwC(@3MeS_JY zAQUUa0PAGaxb`W063lt?xeX$2(sF_sa-b-6!t7cEC-+TTJ^|}l@t2h5RZMXqYz?ak zB-3`2dN`SkYn?u)yURVSYp+&Qz-;wDss5di?4ytLVRLno3A=$)Q z|EZ|&>zQFJ-8GXjgp}#XkS9N9Yed276*?cB%36AihTM_|LHo#!F3%Fd`&fQ`^^jo( zNFU5b6=rBNd?xs>HAl3f)^=0YUQROi#_RJ<)U07Ph<~*;a3ET6cJ+7DV0_6TTf6OZ zjy8uY3Vf)+FPwi&k%}=^T<16bZdR7L+~%iK>(JAQeKVo4h(7XY>Ke}6p?UR+`|mB5 z@x9)>!cr8&@T~mZznQn36`2z2#K*EM^@VYsjtcANd*O98Vk02}aqX{aUoV$KSwNKNm3W^`qyi}rMRA(WWEO{h0qR(aYZ;i7QC22W+Sw}-QMv}z1t&7@d!Jb%MucmQ#$(YsaE8&)0P`q3gVQ$4;++SeaAVW)1|NxIR!uV3fAXHn(gde=y7LHkME(iNkIo0i}b#uEJ_hA!d{!LwC(*peB*obN1NDXQMe$Wd{2y|-IvI!oSjm&UU6I8x|jBE0pi@kcirVMZ?0!&_H#EFgn}e5sJipHa^OWzWi4N2^xPv4vGy zq`JFVXD$&C5(_M2k{JIg^~nOM0D)RrECnfSPg+8Uf+lz<35)z*G7dI4dZ;!qUXDtC zy8u*!Y0GrHq-lFdz@-o+*>w~)rrTCm7{9MIrz}RHC_~%XvgK%w6+Tbm zV}U5?7~qc*E+5G)N??-W((MD}Z?VfMElFzv4OZd{5muNfVIZdtZ7|TJ=i&vB5uk#G|{^pMYSkDkl2`Zi7z$) zi-d9r+KX}!Il)^E@ zibY2Pn71C{Q@^D6+U>b9*;-Bp@(XqxxUh*K|D!!C&oL)<8s;g)_IlIum#KF1e}~JxmJJxOOEd5W@xnm_k2dv^7V)L z-wKJeIAGY@UufB!%%oeB@^6=aE~$^&O}-h}DC)CZbQ*C+|=e2t}ApI3(3 z`?HywcC5rAwq0YO5%P{-sx<_!tln2ntm!__Z0+tDfKqdTCgw^+0p z{JMl#H0aox-?)@CQtk7-Lz%zYv6WbK-2n8ns&nh~D>5j{k>Ys4Q7%3idKRN23H8?{ zf(Mc*83Pu=M7gI3GvAb)RaC}7B$4Hb$X5l5T&Z0?q&-)acxg)G|6B=pd}$_@D`vBP z^}sBP2;Yk1)@_UFFi(Nvl=dDOacC4Oaa*<+0+WJqrA zVJ9I5N3I!~Fb^3SUZPT{zn&RU!@iYpqiN(w94q``_Co2>348QD%ku6P6n<(wIQ8H} zn_PM5FzI7|uHg6OKLNAF)%>7S-r1GihI@QUgdj(@T>j*pR1rn7mYkt7Z%&)p(Ct@* zqyJGEoZpuI{2uz3j#H!1U15d{DL$CV%;E+U2$lkYzE!~e47;fYn>+;>uoW(ab*t8B-0AZFv^&f9-rRLX0wudIZ=o-R$pv;^0bi02(x=ytVyS& zCPrBTfnQu;z<*jF;U1?~((8Hx1w(kmyaokaWT24xe36C97N__O&SAl$nmmD07MnA* z8_uEImD%;729?%;M?~&*bn`|Z1QinkciJ+vrN6(jwiVY|b%D*ZXkzJNHa9(d%{@G*nX$}t7szGB($G(06=EjPZ4F5ARBtv=6jigAC>GPTS2|K5j)n(< z0CnQDby7i>j~EcAaEoe-A=K$ouJLVGp;0Ai(^vCYd3}I{jEQiX%)PDyP~0%Lgn_03Ix1j>(2!LnzoAuagr>d2xoQVn)^j@XRmzRoEkif$Iavg>+UhHJe zo=v2^Jkc+AeDPs^UJiC$D4VyFHo}clQUR#B%+|KZ24{~t%})8 zDHC|-PKMM+?9FS~yp9zw_U`!j|Oa%2@@pwlUo3ZK*YSIX1ExqZE3 zOA1c3J8k54=cpNTP5wj#v%ga%NM$TvX*qt?&*5FYZ zu1OL>{FqnfqE)IBt1{jGs8iTB8exiD+hA%>928Q-mqUwWR~U7~b%Q4|4ou%`5`<4$ObZ`wjQOyteYzy8%1=%G?c? zz&{SB7XTrx(gMFV>S3e&c@_LUS1bz<%Fhd)laF1h8XwBFgsYN+-h0R7&<1_YJdE$g${Xs-$82Wwe95?`;qaD-nteOLep6@~6>Pp>cX&5q=`1 zzhocF+4g(YIO->W@k0Nw*m3rKIe|1b_%Sn?6vC-GZ|%LYv*g0Q{={@%4f4507y5ol zO~37r{+^`j^Xmc^AL5SZTGoHCK7J*#COyduNy4zrz(Rn4V_zewTB*r|m&|58IQL+@ z!Z(`7YXZn@d)(HhckfhF>~(sOX}AsJERf_p9HhzO-v&`J(BhzG_=p<{o^Uwwm@f>n9s>~5njRM|@QP!+f(ROjUxHLs_;#t8tQ zd{=EeG^Y+$Wh&gV=QrWeH4S0aVFgjKhTELy*YK}a(fliArdq7mg-qQ}2NjMt60o>` zWePuv0_=m(%*;+Z?p;T}WOnO(y{{RqvB&tI)2~Pf_V`KC7u3QBlX>0Dz z+V!HZF54d*c$dYun%1Ev**7OD7z~rmU+}+#CBDB~tIh2g0DxBjn)-}YSYdFEFLro1 zN^-_xwLXZ^bi}eoP=Imrg&4=yy+cB@GRPU1XyXFEI8oL z$oc%RE3dM*W+}U_YgUv~Vx_IFb+JYvv&iL*bGo~pcVY9;SDP90)N(4V{g)~}I!`9y z*!}GB&0^{r5=kj#&JSD~bW&R;s!A3a8MUz1j*;fj5aR=2$#W;*FNLfQGNmAtbIU*+bt zp5}OZjx#tNTT4Bh!aYf&N482 z)dW@wgK->iF<$*Dk*NHSimi7ib5_-e+Q+SQk+Z$HDtlM4LOQ9VqK!nUv?Ja$YRLZp zFg*=sO(C0eXD2*ny=rl^oQ?_Blb0(Zj^0PoMqO2>0;$zP~V3r4`H2jAAL#c=A3J9}5n;_6;H4pC65*#7{v zFk;Qm98*&G19%~uAEwv)f}~?x(#hn%kBrQGy6!Eeb@`wgI+w;T5RTO(M*y( zPv^mIbDFspu;G*z`Fr!tZ|ynKWKAn3jfgx*$~csQt$~ib*FkCGthwDLO8#}6qPm%? zvZYmWo00gDWpVT4+#a=gb(roH#?OYv0nKuIM<0a!Ylkx^(yF5Rn3wOk9lU^g)(4n; zy=Uo#yi&ZkgG-sT=zBUM!cgX=6ptQ-zz!$+hELG z4nfGG*xcWhs9YACcKn*ed!e|ikXZ9x6$vDKB;$GW9ImHyEw0N#ak%7wF;r#o12h6R zY_2&uuhVdUy`r1k`Fgd~E6O&|qYcVE$&pU%_pYiN-zQEvIV4xVImJyx=ch;FltRXF zCZWIrOzyxveNB2zr|&eM-hJ#=c-hHWtFb*J@b#7^o!;du(yPk$Hlbve#Y;EO-}9?N!Yiak zVV-h5s_4zaPW>6xD5|U6>UaJdw-6E=A%+OzyNkQuF371;!){J1$;7BsuBFiSuvLDm zgmISV0WPH^dcNlSg}A`3v2LNdvKvaV2r*h>srxkvE{7gpSveZ9qZ9_knqYF9Dq3Hy?rFyOQ#tsaj3UFOG;0) zqKxu6>slI}lSgN@#~JHhT&cA_PN#eyH77QC#QI9fe<6)e^QbObX|Ct2#~c#r=W2k&am7_l zDn?HiTON4TK!A>IHf9b{BAJ3=zpi<*+{Wd-xiZ z-6o%1Pa79fN~9+p(L+~B(3X+7#zt!k`)XCNHp)u4Zdmjq{N}fmBU&2liH%y6D|=PD zCDW{$=IF71Gjrqy;}z{b9<_?r2=K#rtT9!Sr^so7!+!Vc4CyC?$VuPHs3y|Hx@@tu ztec0*%h=a|rO5@M?8!=X{o~AUw1Wl7ZQIxk7REPw*O2(485(B85Sa`JKKV8DF_*Qh zq|X|%;|sA+jsz9}h~u*^y@rg#-|2%pb9$pP8No^VWW7^t&BEAdWHI zS7&BKzcZc7w<5k}w-0~0^jzNeFJYHu!)#D+Yn0X}NNpuXz;1-sRA{-ccXo3|s^*lM z_)i(stea7lkr-t3BC}0_((EMjSbUgvl>2$3kE4@7?clnP&TWzJ>uvCc;Jqn5= zD8g2f*y@EjLXxPpaz{y}TFPuyCXJPQf-6H%u+NmxNc+>~12xB1s#R2$z@X|mi=v}R&2>9)xQ>2aZigH30(leoL8~Lbko68Z+o6*M^(JWYx}32>w3hOS5xlJ{okE)HkxbRTyJH_91;il_pXdQ zJ(U$MhE-arUANVm#>Q(Kc^WWwp0!6xwtJb&vfvZn>s&P?l9g0w-y@A5JD0V)NMf*& zqZ#Ln^&-40Sh{F+Rc2PkODV2Ay}GTob>m{Fr4!YD9o&7Y^-GiyDi(Hk8ON~hYpwBQ z){kcHPDvOT^{+b{DMK*#dLFg`Mz#WN^*k=q7HO<>aD-|uqM;&VZgpKyd!V*Sy;Pd&`lpyHP<>_ORynVHM z`JRw<2eNbw+2fN`W_a)KUS?p&zD;;EIb$bTd7ni-YRlNY)rxZ48Lehy3$=RJJ8`GU zCZ9JyFKVS;GLI~~oc_vgNkdEA;@fq$ph9PUYn|3_rnz=kB$4Y~Q>D*1_eUiP-pY*Q z(VT_dn-C^(klC(o?`i^oah{mzUWBSPta3HUBNkhPM<9J_c$`Zv2*Ts2rk^CPwkJ)Q zZB)jY2PAV=EuGp|VhPV|*JF#CY{jIRertzYb`lfvj+Mu2P3PLkRj?IubNwsCgXOJt zvS(~1Dv8|ktI1g0Hp95?{OXL3S}nl$uAE|Y++>XC-`cC3UcG)8`D!u%`KzAO!MW9; zz{U?#+Pm=Abe;Mmd~IHOsw-rDGvU}-Z0(Z=b~0MMe@uvpV#gq_BhtQ87L!q3ZhozU zroDt$WplT*hirLc$vGa?(_00QAvnlAO>#lnnv3Xn>upWAhS~QFxf~Q7^IBnw=XYFI zDyOuUnmOe=8+J?x$>jRh!u+|(+%eQvlTwt;qTeNr2zkdD8Ro2IfDAivS2Uv0Zq205 zH^lQ4(;Nh4WRzGTqt`_yh6=9Pd1f`1yPy0Ato zcesk6mBV!F?@~7AZ~@~r$dYoi92BE|;|AcvJdD$bP^ToGY05tHl4UqsR>$QE64=jL zFvWBHKhCXc?QIB@oSU$!SgtYvCp6~!ga+pyoofB%%8PR4ioW6&!e_kz7Gh67jX1}a z5)|jouhfq?T;nZIB$dwZ!nyf%yElXPY{rQR7+hph85og{57M@j8^4jvn{s#Qu`bcc zCpoEBH2XQ{=LVFeHlmT}Mk@NU7F;)&K`MKWl_ql;AbZx$Ir&)SmnX#mtWMB(5OYTI zM>!+bqWvUQr)zPGmCvlo4i%`xgdSn1aq9zU7R`R9R78F z&BeaO$-B0JS+?~XvrcArZQP7hUR5fqy%B@GuVKq37d#gCqzqYsBxaRJrBjsFoRsYV zVAwe4xu+&RVo4-b!YVRt^$A)&=^_>xBc3_P>q&yomgl`?FLq6_B>8)fd@#m&9jO8U zbKL%w%_!NcJKQ-fQtWGQ&PxtyS1dPo>s`{ETU^1+-0Zpz9H7bIpU#1_sbpcn=Bc;r z?v1(Q%kMC7PYMs#k$3GK&JQNIs!CV%4`&rN{$hRMw7CY5fx*cpyD3shUG+2frFMs? zU4Wjw&T3GpjjF)sxiqf%toj`>QKqkP0aSCIS2WV$oRyD0n5kR&jx$aUFS#yAkLFS- zyPJ8=0RuG>nx2hnX;O1dD+o&#CAsIdNs-e%26+^c(Z|S(zGgX{L}Le$)|=;mnZ`bD zFuiL97QI=dr6p@_C@S53dec}BnTg%rw2bM~z5NX1@m^0-Hr&G<$m$ItnU!&lo$*^z zgdAPWuHiexX`Gg9uU~4B2yQWq=O(j_;X8LVb#|9={!?HOcYSHC9E{u^gPNw}s%B1< z<#)0n4%^7d>(9L~h2O~BJJzz5qM9Z!vQn0$W+2VDFD8@h%yLU~6&I6fzN4!c%KWH- z(=m*m`J`Cb4CIh&Td2mz1vM{dH!d4JSW}i+2x5BTsaj1o?BTf-_J`{YcpEm^OGLCZ>E8C$A&% zu2mT+#cXu!$avq7+>y-&GIB%iAoZ^0?mbLp7b~<)5c$sHOJk0DRIXSONDM0%Dau;x z&0!fhSctfhg6$(8ty@M_2pHt|t(;{jrPR_63z_ZExe*dd0+2`*q9ZvZf zs|QZeC^|Tdf_fe?P#o-Glb*FQjP1=Mk}-0NZ=q4QD{d!nKczb-%Oo66#&P9WT7q|cjAxol zki=DIawf*?ujf%pQiL^T&Rnqx7%ta8FeicasHFqT+7y%PimGyrMJ{EqxxLoe1C8!M zI3QCQSjaawf5w!TzL|q=caFuV*acCNKsn;CApsszWTK+b)YKO%M2Wcb?N*dA$8k=lEMB2Md*L)`^{MCf&d+2@jFn$;9)n<97{)V< zb6w_}CS${An$fi=wv8Z_I)`0pGKG#kr)XZIpsl#~I1I;;@7lQ(>M06w=Do`cgi^<- z9MYBs6DIs*^zU8mzE;`IB;txrcLGVt#|F9k`56_Tb{GtC{6e$7$*qDaT0Z9ydvY4^ zE1#K%PgGX z+}UhY4z7!h;olq&TAN=(o%_sOvuy!zGuPIx!U#joPCM0FDOs7R+1Zz)`JZ4Rn;GV; ztYiSr+m1M=6`^-gvJ;##^dqe*C&`=>#a*o(NcfAfMyDL)R*YFw*CQDsxuYE$E?(}& zy|x%*XBo)Nbg;p-zE<3E*A(WtZ6<3$* zW~5mwo`V@8rrKHeW980Cr+YR-jjY))K;Hb-$i@dwX*p|W)OXd6=WrvF{OTz;JBH(q zt4%9OF-zTKZe;St7;g0=k9u+(5?JmBtz5m>+#@H^VXraZ3vaz+C^g~Nh2WRy;eJpSiX4&80}XWH@K3u#C-XL z_9Kk4UAl6b`5_l)IIACOxv~=gaPOXY7TlW!|h8*+n zOOKy8&0W>oWhZ%RDi7X%@Z~o49OjS%j=a%pnZ-Mf%MkqG$>)k`Uz@H;J?atCm6HU+ zsojt>{Eaq6A={h^xh_|BRF;<{i~F(;`xJkhx22N;cD-eBjSN_haT z2Q8jWX$9OOuHDCTvmHqkZESqa%?b2os#ilu#zDb7jWOE}06bJ$^F<{U7J-S*bMKE@ zjg&TX&1)W8YB_u=B66e95&6{%tCUM`G0xTRT=RE&87O_JbU6(}S^d#Sm^VBTT&qVd z)yJD77spXv#vMWl%3GcmDz`k9IP71J1dr!_4&LY1v$YL+D+^f_8|Leg*1TLrPiXlW z6ywUAk0#eVW0)8cR19Y)*1V5d@gbJ&$e4lGIj!MO*)?TzmQ@tx=6R+5v}cisIXUOv zxhtFZX_%A8e`@qAPCWK+TO4ubl$T=;;_ak}fO0ovQd-+dd3F%1WsXFZ`|T-b6uAw&zLrjF;I{S@<=A8SF&iv_SDXqwx}bnYL3$H zxbs^^GL6k-?-NGeEzVoh)~C2#kTYi|(v|)0Q#Ey=#a>6|T$bJQDd*m@C$d*^c7jK( zd$cOqS#&w7K{RGuX!h=TRg*lCkJ7oFN5XbjL7nZf4UU`|vp#O8Ie}PT6F#q zi?3={(3h0D0oRUrt-B8!$s9q8Hs<~=oL6;BBx+F1ZvPv7y?fvex;L8Iwd!yclG7^eiPS(f9Nc%~j=K9xXY2x%~qs*gm8T;SPyxG!@ z%^fOHPfgjPU*T z>QJPU)ULV;l^c}j*A<;Eghj?tc?P;-+^1rnETO)o;cGRl4TdLi$4couFQLnEs4BSM zlarHQQI_G7gsL;+b6iu5)h2yg;V%!y3|kW$ht|G{(`=H@PDs>qj(D#N8Bxxox!;!2 zP^OwRXs-Vl91$@$k<-S zsLz=u#%kle%&I#g#Bqg6m5vaajor;QMpS^!a&w#mR@N0*@$E{c$r;02vb52t81GT} zIE9$=S-*tbpsHHr;-7OKASb;|UV@IO^DTY$q@?;+$iEP0Y4tgZ9m97V;=Azh=8Jwq zPSQt%YV$~z5{1U%Go06q>jrj_{{V>df=zPMhrZkDdXt-sE<>bfDRZd#mq3WKxwf87 zMdG_VOABaP)tUDKST;ENR}EUN;?*UwtSC8PooC$h5bl$289$9SWH&5|Sde=2Ub2r{ z9yH|kJzv1~3u$g{8N|6>jt9$*`Kul!zB9_{8fP6F*1Vr$>*INz$o6U0_E-ybY~g;# zJ2qJux$DJjS!nafy9#VA$T+WY!U^bkF{$q~&rH%ZDI&LwmBfI2*yz>PE{yF0x0H7l z>U)m$!6c_U9S(A6)wj`DsKVzTdjqX>I(~};54<1_#1}raoTaiMN1dImm84rTR3161 zdXzW}5qG{g?V8}DN>Z+_c21;YOI^&XPY+#R-l#~Js}czv1$wTN;6ZC@9`%OotCT^@YLyH^<9si z#LL>dBdqXegC6Hm7Z=g97Cfi7YWgzEM~ce9RaZMl%k5tcn_{JiuA?1~t;+Dr4?6SvrC2lP)WY0#8$U+#WH8^=e=~c z_p3aC4<4ZRuFBLRmo$zn9wJeEt?Wy6r$IjHak+@#V~WUILj;8YCmpNLRk@+a+3MA& z?>7#*lg5|;w+B6Iz3}tL_K3zt{su=w>s(lwxYN1K6x6QIr93EEV}oHEan`<)@cq%2 z%@vpvjMwJ1wW)W#&g!YS9b+hXvskxqjF#(LwRl|eV)55lU%X_Z3GfO(ViJTNC!VSPz&sMRO9{ox7QG%6PA4F>!W_*zhqDYNd(o6D~pI z=bG$ntpnQNWt$vV(ow9TX7*=B87XR3ztb6p?x(K;u!X#zY9J{gKrBe(>0d=bs+8L~ zYelN+%R{HJwL@+W0X=I~Es@h}514eW7Tc3(_9=Tdt*9I4Z}hD?4F0IUrRDBxOG_&lU2x zmXzI(JuBT6T4z=p+b3@%cd89@J5BPD<@Id!u4&58m!XWk(Z6p2SZ+D*?@=zK!sum= z0l?;+Hu;iB%T}&j{?Zx9Y-gP2tuCo3kbL2o^Tl7alxn2ONz`x1(}P%$Fd^{YTG)$U zkxCykE!5=KJnbku9+npqDpOKM)IKC7oKGh5eQQPu;J9%rHgn15stwc7{*&SC;bLg= zN$QTO%5cQw;YXpZnXi>fpkbeS?xx$WmHHdz^^${Tbk~ARjz7kwvMTcKA2Dv2ud}D6 z4bR0Y)&2hfylCA<7BwYvlbWVo3}ZMSLtihBsO1kssyK$GqWYZnqWcRr?r<^hT+H*5 zq_OXjj;6fa6OCCj)xu%DvTWwHOT}wOEZ8{X+PwPi_$o-=aTytmgV&nmm1^Ig5ah$H(k3`-WrL+f77A;xr+*68!_)nww~BU;Z}g)bGi z4a1R&^vyHGP!$U-qoz4Mb6hx?%5);$=c$HqgXNhm)~9VGWbXy4rKY+fxByH62iCEp zDM}oyM-d{{R{r1}oKtWnPnnx}GIgu+`%zJxaIw!IIUBKH>c9&F`->bX0QpVjVnm=C|Xth?yS|mvPkUQ^0*lu_2t^MZtlamezl$gr?jZ#_B(Of zMMT`tt)57>p196yyoL>sM}hNVx}{Y{t(R7IQ>V>=O>{f&4>Nh8i3Ks!*1Zzuz+P#) zlbrRe@ltWFq>fBIPI_{OQ;eTTFwW92%LZ0vNO5Xmjd#$4p` z4SKbe!Iw!^a#(>_lr`ql{OfXquJWItpT4qay{m73^13u@qvZspa9SPYa5&JB=?@xwyVk zu3HuC+D-bMIXu&}frFFHc(|%?rj!>$+`&|pTCSw_xqeMn&1VZE?m6UvS-Rez9;0qT z5LvocH5pEaElF&2;#6u;lBc=n(s+JrDfbuY(ASvw!fS{Nr!1|>$7=Ox)Q&3@osSci zz8?tTC)ZPp(I+EQ4(BVoCq9+vbDL}282)C)bBerLm)9cJ$lC=@l}sezEzY;Y7J$NI zae@yO==S51O?>dy=-VY`dh>E$+k`j^{;Ah_P8%*w>(Kzg)Dy} zc2_KG`sdp;?W{v_#(UR?Yxag^na4Twt~{|SGjMtyhG)-ODskwJYfjPTI-!$m{Hve# zeXHFx&3;=C4yCz#FisGjwe>laV~C>~d!IX&%2<3uth8+!x^A5=t##+N3m%6ZtFE@v zO`bqP0k0l)xj%IJ9-5;%i`(=yCDWDk*JsC0mCmFw+e+C04EC=xo1IDs^eWJgxl_5y z_@en@)1?c7M?+sW>i2$a=q5uWpO|x9`CUF(HqLy;N_8!LEP4lm?#jixI|(=(*Kw`Q zJeF7|lhfX(9|*%67W$Qz$*dcSdg^etc5_~MfTPES3_fi2{43Y3G>DomdMn zh4LHqsrtKzE!OPPo+Y-Vx*Vm{MqBd0;g1=vYU{DNrh@a@4Ja<%{xn&Bw*n(7! zax1p1Icc_XtJ>`9rO_YAGBLuD=~>pI7-o@V1+XiQoo6UXAe9+&M(=i2ykl^UT*Xk;*zp^oiUfQZb@i)yv5#0K41yvtIxS@Pt2+@&%JAlaa8$PR3pz- zPFo<hknWHn%I(4)tflkRR>X1~+7bS4MxhYpsq-uK1VgeP7|bVjzv2XScn2uAgtW zaU+cJkIud;5mTD8=#SdzOOh5{j-K6FN~t*=_^yW4Ra_3dW|WsRb}n~%m&}`QRn*`T zIv%yQpE3=@c6yGq(z8b--l?-@$=4$vrERG#!ztKDQQEF@_m$4r$ypcS$V2j-r`wZO zW(-psagKAIwT#nB&6%%zQ_Z|#b|ST9&Q5z8@>^hL)R~!gWcEFM>%RvdXNPj?a$?$? zlIo7q+yM#QlZD9`;8zLaiH|DJyCa(AsmoTn^3?2VUstj`Lshs&xRHYrH*j&)kVfv{)Lk~^Bxs=bY-?bsBbFzcX&cEI$2FvvG(FNJl+sZe zLxG&}nwRQ+Y-cruW9;-3Ql{*f5~O9D>qtmBAZE3tE$)kI3B7LjBXGd`_o)MIatPer zYdN<$IP@YCmpgLU56vJ1A8b{Fupt=B5l@wJ+Dz$EN>^(_rp9K^PH6yOi~}CEacxS> z;)>=@L&~UZmdkghlenDq9CfSqo3pBEMf;wuQ{azvSf~GBPXhQk7)Udv5Xv&3FnGXPxrIJrbHB2a$2BJ-03Fr4vW?NDzjv*cjv-w@MM)496m_nrZ66$CVEZ56zsKHxe>&lh4+sZakM` zgXQ0#@^D*t8OLt*6Ylde2faday6igA_tWS}AI#EnatA}+l$?>f<=j1Js^p!bO;|o_ zv8tPumv%?3AO|}`WP^%IbGl3^sHLcf%pfSiKD6vJM~s7xPrWT)yj?jt#g7f1SW}Jz zt_MBySM3^0shpc~NdvwHMPdttWn0XVkezncm}69nJFQrS(yfnyzICt8N#( zEQIpTIXO9|1IMZDR~g27NfWI$yOIshCtd*L8h9tn$53h=lW7{hS$ooYme485$0OdL zl0YRS0uS@9N6kHDusJx=T)ha{&zNv9$F6Ek#Qevc)}GInI`jxieAkxSi10}IZ`>zV()g?^r;jyd+zN?fetZ{6?5T5U>Ev6HFD+P0`yk-X2Fk?BaFH$Bfeu2kG<>h(5_RZ-ih z@-Rm^z@;o%53i*Uu-N$Z8;iHrrlOR39MFS??5rbw#BRasM>+e%^HZ<1v5QqXEGzB_yEzn!WY`W#!RD%K znpW&)sku(glSb@DbIndAVyvvdXZ5TUWl?i>JJs}e*l5@li6xI?P7K>vb~Q1QZqj=h z)04Z2I!T98%1Hin@XpRyoC0{FSBzAdwzpBehM*#1#FE{yR)cPI2iJ}(t=5cfBw?eT z=B2pHxhlMJ2dJ$Zb;v86=clzxZ=K589gnL;vaJ}wPzHHF&Ypb2zbOoWUK1gnhc9d-Q7{!Lx zCphXcOnFY#IL{pMT(;+%iYZg&lWc{XaSZ$(quz{Vi5)@6&oyy=>*nZ3#qT0SLSN?3 z&{o7K85syIfme3n%8@p5mAW$5mQ`dSw(VR6BDwq5Vs{1@?lWBRrEngCtZi9Cq2bQ`BLWCsY$5b=U1kw z+Z#xj^&XYo+C+sFfa4tnany2Em9}Q|U%LE`y2Ve+lb>4cY+GZ+$5Gz3pEPc+B^gRr zI*WPvAx7ctTQE${`+F0`V@6F*&t^?UB$0h&C9=mL_oZ=^D}&eOZ1m#0r`+e8weDuz zIY__&u^ePqF{(+n)v()~wlhjERL19MYuMuM$$m>`Cxce(BY!ZKIRx+pcBHR%aN0_1 zlTyR@`YJOki=z70lJ@YV)4^LlumL1JD1`i!g zYdL$NPS@168lC+O+ZsY^`c$j6n4J8*={9H0t=Q)q2qOlQ0hsO??rPS?*S@5EOF8Iz zQsnMDf_X8{QZ5YpEEHT7|ml5<9gSC&_Kf5V z)2Px(p($=*-)d=Z5c4Df@%h&WcdAQ!HdV_;N6Mq2_p75%n^t*v>dFyNj_+}hz^pMT zz&#EsSC$J;Giw8ke8ZvRn&-q+ns!HxPMl%+2Rx ze?wV9mor_*iIRjIV$UkoHP@O+1d0u;&%%;uqCvr#`197L4(=+FK*+{{RE{Hr~=$5g`x&dynT|PG}ljNeZYy7!F7s zYx1ntv#C<({nsw12vD+CM|*8-6+k^jX@x#lrYps2&y^mO<)w-eL}Zwa+2^HdK%QJ( zIK_5OYA}pUB=xx0KQ}#b)~mQ4QO{b!T0sKX$eiX*2YQY%`@jcY^|YH&MKszrt!=_> zkdn^Bk)A58{GTIphWb||T&GbsP0nsb1=-Kt&QBbgtty}-0g`LcRWBd~f>cLyclXLIhhn~5` zZ`ydm;t)%_JE-RelUvlnQ>h+wdH8%}oUJx>`frbqkgQ#|t7in`72fHe5H}pOftdHs zE9Nm687A(11{)H#T~5;1;tY5jWDHMT&0A^Xc+7-6+i)w&RGc)C>q4zLx2b+F7bBc` z`?KFQem@c`5>`x}y=%>_2hD38ux-5_#+)7^Q-io?>sL;^9lme~U)H?YQ%ZI{HC8Zw z@e$P`kvkIIO-f*~p4SW)C%!ADH>Vq};;A}yBGFP^652){SsC@EkHPRuyAQXW+;=(6 zdNlEJwfdfHu+BQ%vc3sPr5l`eJ*&9Ud?yX7M}z>5{90Xq1PX(oHG zg>==4)rc4s=%b~0a-Tg$&wmdOXH6iZts|%?pa|uCu#?`n`dtDrn^q}> z2DXRYA4b2OGLq(zJwr1cnD0W|sk=mEC7+OA1rGtDynzjFN66V{=uc08}d0JIYhyjRM8 zD${45QkW`$p^46V`sTfCG~*gm=ImuHCa!pXwWqPWb#6f%3iJD|7FlE@$AvuLuQkUh zMLuJ;a^{VSURklvZv88S)}y%8wFXsELiFdYDp+_*x3xBfS-L*X`Wfrt8?P(ObU4m& zimxt)@!olD9@Cx;b<>wT?Djn7ry2Xm?sSbh;cSAco}7{CT?%+MYn;m}KG358liHeU zhO2W%>efj`XkUZEVQ%ART>ONRE2XgT^f5`jqYcLy6@#0T({p-pQQYgay(&MnGqU4v z3JB|6DASR%l-=|d%gHWw&DBUKKJ0(?d075L-HT%7Fb{Lyw9~_Ii342_@NrTk%3GXeSZRwfAHl-35Gyv`-1aYZA1vmbhll zJ64&#HZ+oiH!mr|x{-CIvi#3!(QTu*w?-?2?ZK|0Ck${&2OL-C(5F&$x!L*!YL1-_ zSJdq^dv;_-+0JvESE1?F8|PA6#i_Sz%!6SJdsrNmIkM)t+NKvPp1qdBsAZm@7Hj zdf@l3q-i#rJSfH4A^rztaj34%(Xj!ErXkjsVMPDOdO z(~2c2IqFuMQOr)D;E&e1OS_OHU|6xvY0{>nE@!(sbeeK~50dU}HlRG@dsOzStter} zI@e2n(h|R8&zu)Nhg}BIWJw#kb*!02>ypFnp8o)icwWzzSA9=$&zdPM%J)DlME?K~ z9lO=-2K>c+7$@i6IU^(AHMS~~czsVl8+g@8Y|p8@8+?-6F5(VbBL{(BL3noVG~4rW z(!V6cNh+@AsV90`9+e5-A6{vf5pGkvoQ`YNr)ko;;mb#3m%g_72_WLUzBE?MO_q1o{D9&F`ycpHfk4ne-~bY)q`cVY`a%G>xeU z&)!}JYul!|qK?cTc5cmU5e3gVtWl>VlgYSYSaio)_2^V_OzoX0O6ihY*q9x7ILAtC z@`xs4diOZ4=*><R*hYI6J1+~ABY4rRH4 zJGhr5o|qMzBgwRuI6cR$MC!uVMh-XJ&z@&8=YYX+kTKG-+VRAUPD#ymP?i2fsHjDf z3$oD?85i)pMKtQg=9^|Pkyt#5l7X*Vf38SP!v;~2%xeNU&$GZ|s3sYLWmKUj7O+p>fc z*0tYMXLWLO+k;U?>RjEA&@tHAR-~+GCERiiyRhBscTSZI%eDF*b6-&!vi2_hu6$(a z`$~!RI$NuVjhQ5af!4U`=Rk~7O!v)v^+{eD^$N{KNu0Iq>5}Je{EDG7gAmRM_04l& zp5jM8r++_8ypu@@&Qc~Rf>TYUE<+arA#9#>-8~{{<-nK2gQFgL9ns#>1cN5mI zt55e=n)DQ^N@>ZxO|*L@9ZUlNm+ zGGui;^{t3JPE3y^Y*dkty zbkNJ6pF~yu(jIQ$=Z>PLk5VK)=i8B-ir}qPOuENk@^%ZdIjwmp;}EVapC_WO(F{3_<$V zGpPAf>UB`PIat7-Pq&(PW#>NpS1Wm5ARsV^$5W$4n{4 z6%%8%jY+(gi#aB|`e^+5zVTz8E85H2RJPpX$4OMEtRSNv?;#LeavV4vis>|o+ zvtQh!Dfc|wG~p_$l(uJ4rd&&>OB`UZT;TIj>zaeT(S5tddv&jrgkw(>r`4YOoBE9C zKeExGq1>#uk+$q{&!v0joqDn9BYrWr^RA52qp1Ye=ra0zn1=dT!MwkUOOndm6Tmgg z-)hoFazSH|ae-RlW6x13_A$lI6qKAE`<(<@oKkpRUFUOSkzN2pV^=VkJbH!QbD zdMx3dJcFEk+*X35(SWOxHrI&?iNlshr(T<(SyX|_c!W#+n!$&Bx4Feitv6BBpJTi5 zrQvlmK*Ctq@ZjWEbN#mV^SF1wJdB$1>hez#)VdwCYDr+Ay=+E>b8?_gz?C-QFVPmjJrG6tMWzg$qKOP2X)dzCFX4t^Jf7pBn5!w zMM{ZqL2XOZoS(75vx)_tb1xGO)y&P4g$JgFTRqmfDrw_}MfVJ|H|bOMoH?egm&Rq2 zvVH|)6AYcwd$p-LLQv(EdXIG)?Gx{#c1JDIA(D&k{MDM`cm7A=n;yn7lu-w)omeUlMstNfTapQT;^T%QkI|)QHkqoJ6|Qp+0IdY8J&!vwL4+cMI@f-RX}O9Cm2#rX~x^-h&2uEvEry)xv*l!U`_O;in2 zoeb;o8pA+s+sCvE^R(4EB)d#zD&c0Y?V>y7r~43)MO*#>^s8Ql`+Pj|kntZ_c>6;%Gn z2OsGi>)G2kw5o1a#ICCNn+FC{$_(89!i8~|YfHM-M}la59MW-`c>hut=j#$fH*;M3 zzS;ZtS8c~$_F$h5@k#%_)Isw_0lJco@Iaw#H^sHlzpZP#2D@KA`dW`eAzrs{FaG_= zlRYOId9Ykd>(4bx9<;9t>GO7wsMFLOe5Ep13y){Y%}b45D?X@{75I|=Z4;w9uj_NE zZLkRal6ZwJ*EQL;w3y`>L26M+P}#fn#+P0vZpIQ&CCrf@KG_e%2X~Sp3*wQAq$QlB zdXUo{VXogc)!O%WueZnfD&lKtLvlVzG#U53rRhM-wU_j zH=26r&m8-h{g1-m)YwC9J`OVd@PN90yd%O0z4}nbNqpl= zc`#9^;O_4Dz3k$0C4NJx&l^>=*LrsxO6*U?v;a*>&okkOLSt4hWQa?YnX^&7X^_B8 z7ThLP;h!NSOzqo6kP0GaGc*!dB*qR)Rwn$OGAEhHi7QA!32ZO8Hs1sfguYg#bRo)XPsVAN z1PD#MuXSYjuJ#vf*KP5Jx_CNXVHG`w6Au!*Em#8w5V46}e`nQW>^~0;=)nbW`@FpI zgN1a&f?F=Ur$>7Ap-~pGTW+XzddGlbM!OmiL?tDBDQ7wqp5p7b(61jpRnNGrDrmUvgl(c(V;334S>Z1)jwf50NrRvb2wO6*Aw0%!`J10aC_)U8q z47d_Mc|3!meM(r(>;Nb(X*EcMjd+mDgZ{4MrpTs3e)x1dRRFudrEAgKc)ka6qOS7Sizc160STL`FUyD5DmXegyA0P*;C4ef0)cS-JLPB- zMT9O;U3WDlJA2wNp2SVgVTG5B7|O6s2N_th=MSORfh5u`~h zWLpXuXJa%B>fl-E2z5k`3Q?hed-?xO9`XICh+kNy@!*y4x}pOTq5F)^Nc;AhISx_7T4 zbFbF_ivRx5t}X3#LBEzd45a!z;R?D@pOb24>;?R`1>U%#2l(3Sy|~*ga9N}()=J z7Wv6tJN=14s0kc;8HElKq!w0a z^+R1L-3RCny%iqpp;MVL#tl-O4a}9{6@gIE#{GHeF56Ddx2Eh14td-io~49hTqxIZ zR_H<%oCI_BQcMbF>o*{l%R$z5RgmpfPanuetK~ko*IPmQP>O-PaQ1C`xc*e2G1c0) zGCW`mFp<*ppr^`fQ~ryM!u0$z&f}p?wzB&hGz{qq{m85~rTi^Xgv`@;b|dZ{_C5z~ zEX$7pKvz|C*si5uNZ4|sz8HbTn6cq#ABkG?X)uWnd4fgOLGe{`jF}t#Oz=!l_8W<5rr&t{N*tG9uSL_ZO3g zM&axZ3js1T60`sw{|wYPEAOJ>tlzO~+AUt|dA~&)7Q3Z+)plMEx*xG-ImZxJB+L(9 z116UV#|IHB^`3R!r|)m&s;rzNN~1gCU>dH^R;fZKKUgs;%C&Vc(;0GC3 zhWVnqW2aD3hZBzbcaGYjILh1BdbQ`&=FwfY0HN3*@M=^Vrhi|gNaN*j{A|lI$sF6I zz9#}HY^)J^;=X#RB7Q%iu9QMXJ)~NDnqYkwmV(i$0+z5lOB@x9aCYwpTKBT>o~Tej zN}E3au<=voHUYD8ROi+SF>ZB?wS~PC5I7!Z!u?1G|PPio+dSL zqglctc~~iIqs=XN`m2RddQfoCsWvdPSm`d6`dw%W(b@$FqI) zg;P*M5JSuHa_m`Z-I**gsO@pzT~{bIY+@D_{f_rm{f)#>^f!w%6Aq%3*sWK+PyrVz zbeua$wblKj0Fhwa$>_);XzM{)C1!QE&F~~_F6+-A(R!ku4rBzUg*fm^*k*^J({WbA z?%_5t~yZ-m08fKP>)8K1?F2Qj8={yEq%ZsFyE&)gYdYlz`R*2RsG0{~lMQsAFYrBFNp3ShJp+|}MoCSGYY zf>ws|uj|fU+I7Ahd?Kp8rzflZr-!%`+dm&DHa!1yq4$j|;cTOX)95stj;h13o)6sT z2zHv1;SRHm&yzWY&oU;W52-~CrGJiY#R)@2mp}XqJ3Y_;ouIh6EB5C4L?#y8?eaYr z)R5n?hc3htRdeOzUCosR>!>KdoMXM`I!1y>En_68sqX90k0Ng4W3F#-oz~ zUW{j;sQ~HdkbBz~wMebRvd?uW@Dt2_oc%yHq$+Ip(6eYX7CBbSiGVpmE2;~<7$0V~ z@_3aEEDaB$>l5xleFNci(`%zg645dC%`|tDGi~Y9E)}+|kR?F)VR%Ee6;4jve4e+i z+0T}diUNH+7Ss<9A3*T=?sC38uU275TO}x2nHj2^^3JL0BLr94iU_spkv|o>yzF~Z zM?QE*m>M2M)f0`}eqq#s!v*yK@vJ#8R~y4P*Zh;9z|q5HVD~0fql;Jo*R-ilz=*PN z{s{iW zPa9Kh{blmt72DZ!jAJ| zu|uWxm$#>65&W-gZ^j^vqZ@}m=328R-?)%I>=|eHWpUzVrdpUJ1@L96^wIZ?sU6W1 z{=75~KhIe-%gUz3ZUs?dS}H5jMS0}1Lotoj@~%^2k98Ch9n%4uLRg31F_~Mih2OJd zb}Lh3UOpsmz!~$nW4&6YaMWBrni%v*66&rrD)W0bP}9xZUjf$ON`MF#rPytbP^=~~ zQ}S)q(7{q|L;;V3T$lrGPu@oRAyTq`Pd{~KgpF5Y{Sl=V)H;I@tB)=RTq9qxSM@QZMVu!v@!n~S>*cd zrHrmlLTBgs_@{GmEB?zj;xDqf<~vNejs9aETe$+P*D9+lc`*bhnMYg283g{1A}q@0 z%W=o9s7;_TCVnM#8NHiMm$o{ML-&EQr*@$Zf3!Y}MJd|V>8n?KY5o-_H2E)?n#(Wb z52P0xb$Q^jSdtiy|4WA%-;m8sGs->Unl}O;v#{s6ul+|;FF7 z!7Uhs<@a7R2{F1BF21PB98PTcB?+AJ*HJij z46sfnYK`58jVXd!?jKnm62JM3%NMwR0}aM53#4l_T0Bc*yrI79;5?D>^LCpL8SEk7C{`Q*$isx8{SPGDb5eL8uo+<%j#Kpf~f&}iyfPG=K_pNP}YFkKaX*C}}D zoW{Q6%=PmdO)9Ig2mexArvJ@!Y+Bde6s~;y^1{`uBGh>&i8bcXUgtXBwwCwpQiIFS z^PVTaE9pb$m!|B`<;=?@QzmVH`4v9J5irVCvEOx~HKpLNv5?fhBbWRf>Ly%*azmTQ zyadx}>X^ZNpr3fO+x>aUcw&o~O_{m1@os{$g-zJ!ON~d(@vPNe_C9C&5^eYNd%JI|5;@&Z&F)x(7(%d2i6fV*h@BNT-oU}jWv8}( zJOmXt#vgRdDMUbjdopjOkuuD>gd06Q*C^XM&@Q1yRR^PXepKNe9bt>|4#BV%!$1dA>34zh!A+>kHg2Isc;)xHXD5B4COe>xrD< zleI+F)`vOn_eg$fZ&c=G(GI%eJRtg_kTV&snWg=)is@(Qi3tXy3%$FX+%UUJJG-|o zC~sLzf4P^e%`4P;s-F5*&%0+_$gpXN(TYfcQ^oRT-k^&o2@vPUi>sY6%pt>t9fvU! z|EOo~nJ`|xkEbt+U?}wRuFD(ZSGZEt$Pf(7wOHtG78Cnx>NDy4zUc+a2)+Gw79%h8 z9K#V9XNnlFX65)`LeT6Vz=j+)LKD2McJ;uP)}b60vvQ=bjG8H4j8Fi(U{Vp>ebrg* z?>eCBN@;&u*&Ur4D{|#UrtBG4JUV=rdq?gylU4i|+p`UpcB|2*s7qa94vO6sN=DNZ zRZlPe#`i!&iJeLGcZU_-XN7)<KL~Vun&h zr7WbZz&d0_dWxMK%c;Qurn7O;Fucy^Og?sMKY?nj8*jtU?1N~K;r=}{8$RwdYUx-q z`o>sm1d*6_LB1U#Y~;NnFD;&C{4R!XI8zTaNIG-8LM0r;=p_M5UvVE(uvWeN{QhU^1vVej z@42)*&oa3)5X=079}A;18xB|vUGEcm{?cmUwx&h@K~_Jq@+KmkB|kB#Y#;XF-dTYe zfBxhFhpn05CqoweI^egBe!!2tz$igIL`olGuJ4)yb7XO>y#B*E6=7eDK>msp3KZ`N zP#AX(4%Lsj0U-1+NEgZg#eohQn?(Vbx&i4Ty%uP$z z;7-^G=9!ZP%D8m+ZPKRLe=0MmsiW$GmZ-&k3(mY&U{`-P86U9i>9DI+$eAnLtdPHy z<*l|=zvtLF2{QSty=Mk0y5165?(}ZnA~!s|qIqkFgfWmri*^7~>T)Ib+O|BM&K47i za)125oeQZy)gq=k_0{3MYk@$5Z9w92v=P+M)K=a{gCYwKA= z{)oqTZT$L}&ij=dAB#4#=)jatrSt9Xn{6;#t*7!5Lap8Nuxf=lE2LU%nx&Yt@g>-W zt86h7Qm*%$#CtszQO7Dw+r_of!C_7Sr~OUP9pn20rXA~43cos9t5e_v=ehHzp!;o0 z4(4TYyg4tNr&7lMei_L5AH}0_9rOE5o|laDp|(reL*unueb?z>$fBd6d1X>!aby11 z$2T8Dn#-M6OQ8%CF(hwsJKKrG{i-#DLts$L!1xfs#!ak!YBuNJq;pRIiygnzfG~3u zgpIY+{YGTe&hsxXytIKu3;l)a|DdE0H}^<9j{O$G0qAAC*H1ykj{RFAX~e&l#w7|b zfDQ}VMQ%&Hwm*xI4NRQW5?~CqDPIxR+dnQV;y|NWWkY_X@j#+FnmmsT)Ci}J4Q}nW zuOyWb7kuC9yrCr>o;~2ZY@5Y;kX&X!KZ}#ej;>WB-l&g7b+6O{O5WxQ4b*cGunjG(pCWA@VBHp$zo?GE6O zk4YT}J^$El!8SQ)*B$OZ22SW1mW^NQ4;CwD@FG3&*?6sFrH^(hYok)HsBI4m%kpnA zryh|1u70m3b@B7d`8g|FU`YPTf11B7^1NX~)siy{4tvGAJyrVzw7;9MGwje;#qW2T zK$9_g$x~p4(L<9^BXFJSoCL;pLmt=;uEtAaiwp~5-v)c7Jpx#U)pt&)>Cl|8UD6KV zwx4hu9Gr88aJ}jNdsiJYP@(O== z8=(3h1=i@cbpy;$X`+WUCVyLH94Oaw=pRy;OMIpoX_$ETyfQ3K_`@kXpWMv+a)0Dh zzQe+mt%YHn_xbp3d%gt&yO>o0nt;K|RcpJvSpn6Hik<^zg_lW=&ty+MwWxn z$nV!5(KmX2QfZv8{d)cU8t6(2p_mUaR-Y*x{qZqFo_8%n)qo!ieb+pyveD|0z`SfC zm2$YLcJE}b@%DcUg){A&Q}hN|#7tvo$!fhW@)xr66E9Po zW}1N&wdoznaX>7q-7Y9sPA)lOI$0drTQ|<0#T9WQukb`+ugI;Wv^&* zW%xQ)m2?7b^+F$ZUxZ$GN|}vgAW&(u-6-`=>8eA&S3)F)Oc<(SFjql zX@r&qdna;iUDVic)_HxJDriXtaJigTn^<0uNjg1^wcN*+&!@d#G-vNq#(u4M-rwp= zi|hbFhI>H)6}t6PJ@99FkNN3At?9PeZ$CU)-6o&;8=6wy^6gZ^tjo-dEzKCuh)~?;+6_Eg>yA3NtUQ8N#?(n$^UMZX}OK zJy!`v+Af=Az}=G6Bqdt267&%z(*B+0`IoW{i$0P4L3K@k-h3Xq9P{qz%LkA8F`W%! zVNwmQOKQI#ykF05le@QPd%~MEa`R;yap=IR{itd96vn~w0|819zI`B!tB9NnPuW!j zGWdLyOu0~zAbB_hWc9;U z*&3!zi3oracD%%2*X7k`!ZlsvjDZce(0z4|!q1zSEr-`9Z^B_f3l!$8Esg2KK z=1(BkIdgt%Z0G(?)@9<`8=gN+wZ=TWWK|a0M0@B;=5SIaESZ(Ag@?h49jarM1~>ta zRJ{x~@Y|Oy7uD|47ygeUB!WL7=HN<)Ao&f`ms9Pgy^PJy1!W z)4<{hMyX=FiT#H1IR9F^i*-&y4@si!6IB&tHzGs6D)WRb(@=hf4}O{}!~QvFqe8DO zR!pnKt@FrPQ<0DFI@I`FDN3GWph+F725N&(jUc(aD-JOGmGWN! zZooZoA1uRd7G1UkK0pdn9A-^gpG!|xkJ+Rfs z5ZIW&U(teR|2gF`g^{bjcca|bDS)H7p=GsAYlyUzT@~rJnHbq1(jVIS&OGiCv#G>g z5X6ralH)5UAjXu~Pq&4kkUEoI>0K{jM#}84)bmO=bDQ=|+SaVZo{(GrrJt7$t+Y4u z7mMdz?`1;4f+CBKf&0wP8WDWr6w66?0qg_lZM=TJ8D*3{l6mMP zELw=X`BqEvl-@p$A9`auBBD%G@P2H0ontHGjnAn16H<|)aT}D&^|$3-SfXsZ&pb|Q zo&Ndfd!ae_MF87@1-0RTMST$G8zssNwqg%Pu7IQ1?X0u{FxOOChE#wNFO}Vd}ZlzbZ-hD znj#8#>uxraKBh+dlk1&Bhf!mLm<-68HIVDSep=d7zzAdL`iwBU>V;xaW%ER^RoAOO zn`l(0)%D^n^U}1&H(^yLkIcD2`|+We238@R+Gd&nz68e*UBxNK0!0*Tg;?AJ9WJ{l zVPzNZEM`C^m^cl>o$%`v;{wwQ+`qVL0UJ4<&z*aReM$(TlJmdb5VPCtG+a(SuumD& zyzywIEW`CddTm6K{Yzms;jd;+jObWv8@@tjRl~<-nr_ZOfy+Y2iU$trS7n!$YdJJ- zAVVeZNRq582Bjh$2-u2tGwD}Sd32;VB@jYqPX`NjAk3Q7k5#u&zE=WZYKz=ti75h_KE1!o1g|q!YZ| zXO(muHtlB?WUx1>y>T)O?|N}5>UG;vq7&#Yh&u!(&NKneNlYTLw3DBXUcIRuq6*H7(%BS0q?Htt?#4BtJM zw1~-XY$#jKs$7rg6&=26lzPYZKRN_!IJK~|VYws)TF+&nQdmsS$)X6|Vc2DHNC*uX z^>W9;8@6h2mc@kDd(yz$wQoU$rf*6f9UcInDJtu8=OEp-XYsS_vSp~x+n)~K3TC7LJFaVbgN_3>b2!I8Wq6!)MeB(SHyibkhAO5!h#FoByYP?HrqG?nRjT z+WY%%;vbLf*og!kX_|#2P{UtTW;v47-sHKB)ovJG5g|i9SldCa&bu0aAy2@gS7wz0 zGxiR$=1f~Neqo^q1J|B9MECkX<}t-w+|2tl2ZNE848hD8yf|No-2zHs>gtG~l3nAx zH#63A<ZEF~?p)eQ7VEn?*(RZVA*m^sk-8ZB-S7r26v zrg+p%V}q5`u+L`fodbo>JvBlPDU=dlw5;?cs1wZSEK{QPtaBxhugTwOFFCpx?7;ix zj;B~RkhbM~&xux~c(5&y$1ybuPxf5mSSi_=v(rC4*U6W4TsnIsm4`s8ZZd6W>bMPz z&2W6`x0i=MUxSAgXp2&EU4_#XH=v$LZBaBK&Y8QdFD4JYvpaGDdIzx#m>Bfd;g(b{ zkLHfk+1ALBeqN8+&=7(h$+Qv)MeG?s|_WZooHdv7hZe*J0Qm;!zwK zCcNd1tqKROBY)Np$0N@>xCTGoIRtKGb9n8?0mw&lQ2-tu0$}!+=6$yXQkk(rEx9wk z`=>*%JOWkhW4n?lCELa3$!a^LBI^IS?)NJ9@K>m>|JF8qo06w{UD-MKKI)iC#P+O_k!q^sP%`c1%Wq_nSGQ6J&_aIxk|B5N1eK7mnCa)hnk5ZB=5#oy%*DZu~Mz+Wy$GCb5xX(1yxIA!>Fk%chO9jmXYz%FI{)5H-LJk#sI>GfC=l z0}u<=2bui)9(rc>14G{2wn)i7FOje_jv79pwb-?Eing(~_C7228##q9ZZv>^4VGCr zdi8$#P}Yx$aKN7(kwW3tniU^*E>e*cCrl!E7YspoR#~}&m;@X?{b;p(NoN2MIAaD6 zgNVrO38vB5VS>-~u*yTMQj)ad1Z-MLX{{0*P3<74m(0oCPbS)& z-5Xcf)6%Cm9lhH974s2Gh)Y$+R!W}wuPSn+mWii6a*iItx!xI&^ODo-(cK+ySOMnjK{cm6-v4vQktnO`w)-YOVIt(Pjl7P z#|W|lxcrZTj?p{~U7IOTXCf9qcbM_T@%wY{1mk$vgnL`5wz+ARtAwsD_p6Bi)}Kee zvU=yR?UW(jMtSS>xpi<@cN52}n%EoDH*awcx=XbX>E3YQpty zSNFrDj(|Xx!ck^D*j#%><6-@FZihgU<ezuLMR9c?-oHGfvMq zW^yicqe`PEnMo6nZ%&^T1%5ZrFmE4ec|%8gpXGbU&>ni%M4PLkEY3P-ppHc|Dhkt5 zl4fOkI_4qjtmu#fWpd-A6=5_=ZMemq*6=t8TQXel zwaTFc)>>74Ulz88vd`Wb3)0}QK^YD9%!b!hV)y1+YTdEH*W~nyJqL?4l&};@Ex*K? zN1uDc$n(Tf1h6ZP_ozwK8m4O}*yL#!B>b1yZe=*-^r1S&dn@L$w&K5C@jI8_SiE}& zSXLh2;yCOfDio+Xp2FCzd9ad=07&i~AYaJD)S?quXU)C<$mC;pz6|ZM20k+ zd-!a4RU-$uZ*7Z8C8w2w+KNhz4g@~lvyauYf}37mCx+Qn4{6tfeq+ol>>sE1W532q zZMaI1TlT;{pYBbE-hk1{l9sWTYOD=y_E`h}2?pZZOpaHwW}Vm5xg(*vK}#NqaSxsz z%mh{0+lnIW9{r7IvDYv2j8wW~vOMC$6+U}l|2Q6LQZC4ucz37|^07zx+l8{|rhS%2 z(c&)*>X_)D*@uZT38J*9>R_3oW}5n$GQY;x&=1@iG@H%;IR@ zI6_;lwUz$;_bfws?{sPlhf!v+YVoB6xdy6jaTGsiyc7!rT#;AyGZU}wiu4~duMBW7 z^l0l0Ka!Ah#Vqqx)ve+4*$h9!$>tM#eCtfXqt0-2_iEj2v+`fVb467~@%}&Bk@J4~ znU}yZ2q-+EE{)rSVYoPl!>yTe&u$6z5wrT?$50i(l2lqat~H(gawr1t{P3QGLND@V zQ0`}>40@qqLh=WRH=9`ABxccW7yGRgI&|2O1rCPlhsG}VEWrmsYbI`7mOI*mW9!@2 zL76iSOAE_A-za(xQ-Cm-=YEeLS!JL2Um2hY-^bzqV}$!7?caQU52$I8_R?7X)3F|& z?2FHpW~F`$!v9v=~>OO7wUfvN_1WhQ;3? zxV6sTFZ%;blpZ0y>GdBA{rOGLeA(h17OFeCNJN+Pc8zXlJP%?Q_!mIrXih3_LAu3i z{vkXFy`G=?adKq{?qJy1kg1R7PGk%_KsdDZIuub+`i9O;|Dk;y0xw=4>R519a&g8h zF~@XG5k736_yrqYMT5Xk{4bpDcPR$4{Ey=Ju!^wtiQ5$65M=MwTUkzlm!;^7l>F2? z)3>n-tUupX4rSw#ea})gz*^b7h~-K>z4s#@Cj?)h=_OFEwfdz5yqG!+SwLg(`TAO3 z0$DGp-$AD3jh>6GDTZgLVU(-&D)aN_UF3^IimV9EgQ{$O+-;_p+B}Ome&yltIZ8@(<%;BxcuS1! zdA{L*YSP!dy5T)Gb&yJI8E!S_GYNx9+gM$>W}2zYkH0Ry+x@9unSZWk3r13;+r;P^ zwjoojvP`rj)|&j;Jv73d5_&eEcNOt1hoQIV@7?}qsS7|2x>al z=WR3D0adXX2t8>p%WRP8GZ$jRdqjL}F6c(rtv`!{cUmFhKMrtP@DjW4h$S_#YT6a8 zI^gS~2!_TMkcE~PB&?-eb)D5+5m>?tNo?l@x^EB z?>eGN9KZLwNmRm}Ar%wf%cF3oPHds(=_Dt>iQ#6IFTZqcS0Gu8vvlg+Ha;A2qq_Rr zw2!kBb)Wo!)b@1EywHQstIds&u`up~M0S|S#U@j^xgRnO*kcXNGT-;J&s5EUrJ}bA z+R&1g3E1f)kJ!D^A7a*?r(VF;jD2YF7krk}&xJuUAmq{NtA=5_s2)2ulr}d)gv^+G z85c>eT?l3g_!H|$nVFaLX^(|Eou3hN)&|$Je4PA6GHCAley$-f%vGep4Jg$Ds-QMw zA&GKMz%NY_NhraOn|sDt#x5dP!v~oh;P%THLzC zi&Tg-;#+y}toKEQKGX7sh#ATVobEhbQrnHyhfPnlXPAZghW`#_*Fm=GJ#C_^A_v!w zS?D793RIgC)lI^lp(-Z_K6R@|?8}cV^1Tl!5e^8b-33c{RU%Tm6;?$+k$;Cfw(Sa@ zxeVLTV`RnYF3mmPM^TBXht50QOLYE`-=pH6>SU}x5Bgg*S{VE3e7*F}-$ibOlSK?} zZ8W^uUH7o9gThYPYCY8Y-&^d>+WbMFMYkHUxyaD!zgCU&zpc3{}UdXM1OzUk@;x;ZSDBdT_t&)^6r^*JnOckdfQV5OMF z1q%9Fc~er4ZuztJ)#zBfjBxC(d<5_J6<=3;Xp;S@jJa(9?ifl=VztmOwhMpK)HeM! z;$A6v<+!)dGlxq!xGPx~ib?m>Qr+kf-zfD+E&1qQowxrAE;4ejh+81(&a6D7LuCh* z8ptWwhOjkPjb0gG11MZd_lnKzhs&q!jD3Sx8ZrO45wa47Zh?NHh)N`>?_m_&=>1`V z37@R@35tiXF=eMiLX)X|h6Ad!9>Z!w6kz=-Be6n!8}_LEZsF}+;2wH7JHPPnm+B+P z%;)Dah>Wg>SZ5P$rxkMP|D6|j&H~d$y{KV>`_h_mNasN0PkfEFbF%!Q1=ZpNd0A!o z;=;#YjbCIj-vXYx6!ClMZ%M#Q)^J{y@aB|xj#%nbe>wD3`1vznkTL}V{jvioClV;L zc@)(b*k4&(ImWLfY2v_bHc7X0MfDEi?S+N013Q0`pQ%0ytUm5Q|0zejdw(=*NRl9@ zIG**8_e|lVKuV!o|6TTR7e{=xI_Gnp59PCiDFOkh7@468m{ZHk^xrmW;<|bxc|&9V zl@Kk})XNjq*qIL`_Z3BTTCsrCgv8#ZbYi|^$fUPR*SR|Q_?zyURh?X4guBCY%j&XS zy~rs{2fg-Gp+}RYO9EN<%&6b|cxa=uyF~2Mx%v{~A}w|Ixe-HvoAcQFt4-SjT&{Gca~*1oTd8V)dM?xQWSdfo zyE6FnG@Zi8{S%OCR&YbQX15mCaUa|rmd;1bUoBPwibJGds6FX>EQ!zWrO-ZmIWwQ} zy$YNY1cDGjBW{;K5Z&PX^R_m9<~_EhrfbIH(qQklytMTJbb~ z50(^ka#H&SzdI<@89gl5Gxkty{f9Z%s=fN!tjh=g96a?V`Wzy@{9n<)f3ip7g9<+Z zQ5DMi8F`n_-dii$Ol^0~G>EH`f|e>B-pP!?rhnPv*EDG~dA_`LPW+EufzCQ)_Gg(j zeBWP1;XO<3%Lg|SzhhOMXQHuD{SKTl*q2VjRigaG*#(C2xkg+Hs1YXvL!5Asa@C&c zr_Fd)wG`(nJ_fU9i@qMa6QIWC;lY&WzeAu}wvAxOk9BBowA?9lbH*lD`)h4(+2Y5- za;-+(SFm(lGeuP>%qqYn;!$&Q^vc~G$KY70Mx&~d5*-E*O1`zAS0QBXVtcTM9YAV= znCb@9W*Wy!e-G@$6p8BG-=Eg-`Wc+-d7UHJ_s53y5%60n*YCNUa%IaCATK>0M@IW- z3i!W1NUH$!ttLTse2(k^Q~;8?uHtTBOAPgjjYR3m$#`D8*Vhn9{C(?Hu20$Zq=zC{ zae>o@x+h7@d!X#d%A%POx)m5$qgX8!=oSt;y%|iEH+GL>gG!cm5zq&pDatRKsc5vD z@-2IdGTTp*o~!ziYrpWt*G)2>jNIl=__x{mthWV?4jkQBn0imrxtrGPK3zhi zC)rpxbHwC|lXJnAobph^S%k!brYG+!VhkN7}YZl+)j` zdu_2uvYVPCzwN8V#r>8=$pp`!dKxYgy1~V#_aQ#o6ypXKIKmbAa6x?g?Z&y#OSPjg zim?Guh(f~wTN9p&-8?MI%z#>X553&P`SIl`sSgN?!Z3IUM)_|h7(3qv;PrD;+x;HdYjql>vg=m)4YQFo|4)Zc4#7=D;^t| z=2QE|Qf08H4u&fILFWi?*7w?O_b^z8M}<$izqbRhb-UOU+}}EQ5kyC=u=U(DC~xN( zDsOaXwkGg+4mSpW#vNm3V`!e8x;rYvV(BJ1uGZ#$I)yR%Tg9N^aBawD6;bQ<7*Az{BRO-0>ob$;UKT0gN=ide;SuG^A zju_vxvm_Vk0u(F=Sx;&IHOPgx&y-tAKe}|CYe3dHQD;{RslkbwL6jyEH>iBarYbV+ z3PmjpIq2^7b-uXElQx=65>K%$YZjM%WG=2(rRsa*0~`$6ym5>0*48R|EgJ4T^;}js zQ085vxw6JtZ0P{T#360UT2R_^{ zMEOVk5DC3x0&MursRh^DPPvf3C1eWqdVr&CaGjU^R zI~2Qe{W7|P6KZp;ks+>guXqS0|2x!`2#v)nrE!L(l{-VfA=MFme5E3`@B#E3Xixhk zGXT=c#r$z-8|0-p=-l$J@qRk1!K8(kN-W*h5?$ETyEYs-x#ZdO+OE#KU%6UUMQ=%W z-Vc}2Mxp1|ep&D1?b|MCjsWVrntBE_ulsA?WwlBIM3yVqQ`*4X`WA*HUKw7PgOqKr z-&Z+fq=LnCOVP{jRs3zi`w)JpA*^ttS=`Opshy0@hrZjTkpsnirT~*o`CevHPnRiGTIKGI(Hhk5eQ!slO8hq3-lwJF2w+>1DoRlIyb*%sjQ2X0y4XDrY~nt45kfl=F+=6}KU(Vm>!s)!q7Was#if=cR>mL;?2DB+||baV^{2 z{)-^!fIv7C%J8H7a63jJ;J^3z2eoZ*RO3t}Te6W~=(Hev{K1j+bdFI0Kqp=0L(d5^ z@Ul#rMRK52USx4`524GHGx^_5m&YklSCbsswL=0tY2`huJ^?~|C~+?}A3s}fHBRaaq#mM|(lt$rAfLJBuiItK|1gjm^N;!5)6)b&EfB$AtA4 z)~QMIE)j#zP*+85{9={|gZxY}C@S{w6U0(#+^@xPW*f}7tI|V&3-VjqhsWbvcU?|pjFahZ9N7&G;V-3;ag3UjZ&;Bk7FN`|(g-}niWy&Q zxwFRNL?xE49>O&}2xeksb3A=onA<+OvA^UxS^7k*%8NkVrOes2<6xMpMk@)jc1jq$ z^Xn&!EQ<0JlZkhQQY1oD%wyyrFQ2CagCwE7Znn|`0xsypA6+p5cZAp4f7fP{#uhR{ z3Rqqh>j!N%J2z&@y$n{XU7t5kD>BhNWO#@0NgM5R33wun_i81O)Ny0JZ0d`ZSx9rk zqtXY#=zAuHj9Ze6LoXlo(8ZZ-7q{A6O}{$IWN z$o&%9ar-n;q+3hZ?RDUl*gdUrHeBj>aXu{A%kAaDcn76@{G2~&61#yw0^7IMS3HC ztD|a}CrLKmeAl`8)x_pQR6rBsK`S#E}#^y z5^tQ&mx{x1vX6Z?5<35o~1HXk@(k)|0wLl4{##^<3YTC{ z2CcO%#Ga(6q^Ub|Pl`7AQOUzLNj&1J-3sNrZeE2mA>$`J16$Ts<)l#KE1uOniqjh9VvgK^DFc{*d1LbU< zbNSULp)Koi>aXRnJf6h%q%oW+;i#6ZQcmp*`_F=LkJgluta4Lf{fe$n~dT zwvrBWS>3I|&FS1`510dUnu=WDbIobHGv#U?g$Xiv+n)KToB`DLt!-(dU7n+H^By>> z3Kyt2IjtYM^aT{v(F?|Rmfexoq>W2sL6q>OpA1UDO?M(TUKJatf-jvq58OK5Y0P@j$ifH@q zl^_$tXRSgvds(Z+JrAI?-3mK9MF@&W^26p-m#tLyk{cXO>#vl0HF>o$6t0d5cRH8L&3zCZJ{pK2Lm_!VPMSU%e}o=Q)Vw zv7Uq0u^;9<{(iOBN!vqv*%CyAvi|@UYjqHa20vQHr#0Fs8Ml)WBPj>3ZuOLYY>&K8 zQ<~D8UnS5hCvmbV5q594 zX~+lV#!npPq&2N}&k)}CFn%ENaR z+lZefE>v=1{rAjye~2>ENP6S7a?nK2GZsvOI@eV>a?@94JeR3{<@bYaq1*ExTvY*X zSvNQgLE@=NJGHr_qSTrjJV=n7EC37b0O@xeW z1a{)9r-!X(+FBi@PDx%j4|?`#)tqeaspZOy6-(HTPYBwyT*blXjo`xfCr^{51GY>b- z6RL~Hmrz0GJg>L78LenOBDzYUrET~JoY!=4RN6esn3|VzX7!)MNzKDa_NHUglhU`K z_=_Qr4JbYL1I>B3j0G!cx$0r_8j2}0==hfjPnuJZJ7<$ad`VEaGK^>Y)#j|dIa)~d zf3#{ib1iOIxA=l5kOq)r{qAe3wDG#ML5zTtz&opkz6uLt(xZ=)T-GTFwO5^155|#e|Tn>HcO?64gm#4i) zBeumVv2R95+VbO>`9Adr_Tm{o*7NnK<#xS|BRzK>+VX_|09&8NtDSL6WXY4;nu};S z)V!^789YFtPGsrSlUSFYD2X5}X8_|Q=Ap;A)6Cj9ZC}Q4mt{%D2U1OOH$Ehd$zw3d z8S7kiypD=0a+U66H;OItxs#0Yb5$krOga1Dj=9ZpPBV&3?u4ABDO{=l010KgJK{jZ z9&mbnX&c4xE^{cr?hR)gJxg9hN~*T3q~0{PE^{y=Ju^`^jjh#7dEAac2D&GOy{*v7 zHDKYUs;*r01*HrnZ`O-Z7d_RIO<{?J>w={i13}vCjg!~Ju4FH z;xPLhgU>^i;q%bfd@xd;me}N2=*_otoVfUlFoZ^KOql9P<0iR_zaLKL9%*5M2o2u7 zIA9xhTO2PR26Fe_F4QN&!@5j$RUDD+Skuj^-P{&p>_^N2?Ov1>95gR2+2+d=R-qOOvB~@mZrXS;%PTkE&H|p5&tEW9q3q$g)rG)M6Ao&Q%IB_lf5JAlc1Ye< zA0K%2HQ#CaB8!mQIR__>mHDnW7dh3JGe1b7hlMOWDbri-Z(LglBPyyoXQgvj@Wd@- zc^fCLYvz=nGjTmxMb5Ha5#in@xesw9WZ}J!TENq-jJHeQoY&Q1l&N83J(=>3E~X|| z?sxiipjlDa4A*ULNQ(+_>0A{ivS2bN4OL5SO zO8w4~z;1ONaz8rhq;U;~Naq#j)sttbLqyr-ej>epw7%1yYV#Sc8sbtgz=MX!#eEJE z3N*Qy;MKia&37$Z6p3=j80b$qs<(QQs>vF-FVxpJFSM&?)b(7J7K`pzfP`7iUs^zG>j2nXN4)2`tlj~W= zAk!BkEsil>l7^e^bGLe&-AD$i7+|>es@GGc#iF%v#unI2}Uz*QTVKjryKd8^x>iIGss=Vpl9N)4fS%g(pW`oQ_HLuBa|pyX?+M z#m5lbS?nGfmQt}ahmteX-oB>rj?0@k_jRwy^SWtD>qL)EjahqZJ&#VcvmlR`9M@xP zq(-ATBED+|@3}Rl%&u5`l{v0ES&!v%dCxWMRF#^)Q=XejYUj`1E4Nc5#Gjao@N2t` zw?)?~a(FfMm=(=QUt=6al|0#KNnQDhgx@(_v)S(Mm$hO)FHMdUr=}W$h13lauN&jPq7PCVMZPq~dK)2DWFSN6*) z@BSgs3d0s96tT-4+2rQEdQ?v)wy)SIz zZpV#Iij~qVjYZ*v$0I0UJ9Au)sd>J3Aob{f&*NPY=H^u(738B$ChcRAyT8Ov9fv#| zp0$eFq>UqhcwRZ;zK)$gYZUt)Rcet-eN4%$Sp0ysS36jZRD2aOdY4y9(vaXE2bOv zobyi?^0dp0u&Yv+#?R#(>Jq0pKQp(`>?FIsjF3pqK=rSnyf>kUp%Sw2c_zO(&oPdj zPHXOb)>B2)#B;OI#ofKUJ4wbXjn_34m@)zz9N_n_&1pGKuR7{|g?jN(Z18Us+9cMJ zv0NUcSBUB{h}Zz2p+9=RN6YaNy_U!4d9678VNbb-hYcn``A-CQr!MylNhcf}d)Lv` zlzA_6=QM7>t`zNOV8^euPv(554agn)*PB*N)Kh&%;G;KjWR&e3jP<68$trS5>7QD2 zZL66{MLV)@H|NIho7SZlWg`T(@;jQ!{FLt&OHq@!ziD#hm(P9;PPd=C++QRgTG!fI zpEKNsr1eDWe%~(Vss7iP*t6sgc{PnmI3>%}=uJxUWIu1%%Oq@7fyiOSFZPKp$2*yU z+)p*K=jKcm?ugd-hZ~x;cpC4Xe! zVvUW{o52|BdXrsrVWzfL$SaS|y6as?=E7QWl!v{zHkijJn&WSxF}t5b&%I|x{?bdi zIHc4rx*W~aGd;6>*dXVQb6#z!>5`e{X9dA*;8(LoYLuK=;#BsIl8MgEF|!=}pc+r@ zQ*sg?GX#FMy-HuZ=j>fPM=V`AZf5GbWU`=?4B&RJC)X`qcZXd1oKwNhHCLEo6Q;f6 z%P*Ouzc?K^2CKz>LzFB@7|tu!n&q=gL&>EnYQASrrrhtjjhhO)vB~@g>t5e$r#;qy zj~boeb6j}IsywoN4@U~QrzDoGXi|7(g8<~Q<29+L+PtiUj`=4Xd)GZh%?CS~Mx$?+ zt2&8R8)zdVg19G|&zfbw)WV()>@E-9>0G&b=d0~z&r=usnhuKVW7m8$;Sko#BgeW< z`4!xc3y7tPQltQKYg|rXuHua8U?iz4@1cdR`F6I_C}6LQeSK@mE_H{3>O&(2QR`gz zNb|;A$3`x*!_|zJ%%00yH!-we{G`{Q=+^#Zd&nI2tm@KKFzt0_cxtM>Xv?tuTTUqh z$Ohw%E5S8QJj>!#k%=dE7!LmcTH7h9dXi6}&zmXod%e$0()5^4f+Uj)0^|ZJYc#jA zz7vdNIpU@jrsq;8RctEyttrcOW^LYhswJIbK*VhweQMRFwRt?kNEwJ7d9J)Z9@KfN zoS5uXYgXol=_AxMJL%-NK{FO^!&hpR!Sxr zYz{p-I|A4|5gOm&iw$D~Z-1x>CWI zxMPuBxNcZh<(}qM;^hTWpUmguv$b2e{?#c=wi^RIYoXRGETGb0Xiu2HWU_&r1ylPHpa$&J?xNYH=znHW*|Y_dgHXM>d9rWiiROf_;7Kt21sGRm-`a0lL_y z2iWBNMQ*9Ax0Kn#kC}gnR4|t?s8f<_IM1629%ZPf31RVbf*&TFCz(W~DJHfd(Bq2L zj^IW*io&ic)Oiut94+hnN4d*t8YsD!Ae^4KtJZob&cyE-DN*P2hE^WMLwNpY(>TgB$M zeg~(iti40S*W*s|{IXS7Imb%+_3YGOo|m!UCe|XQywO|3+Iw5cxztDleecG-8T7Tf zvn)^mIUHA=i-gr>DQvbo@RGeAMz=7Jg(8;bCfau_nZlfBKDBpI&@J0fDt8b{wHq_^ zM4GZ@)u1I+_!yAa==1)!Ou0p__F1G!8(RG?0fsyBZsw|Q|@&u zB-=b%IT`QwE>c!v4?i!(>3j5c~o2SJd84WHe&dW>4}mLH z;j{IxGXkdxYII}TmnvEwN8))IT3nI=A1!$m>z_EDFnfB})4@V^OR@8KsHpsmR&ZIH z=Eyu%gpjFIoRd)F8fm6^@r)&F8n6I_IpmR(_|*RZJ9^_a<;BO^IUbXx$w|kkILmR< zy>VL1q}{UsNI%3Yd^FtgeBBYjRdP^i?9MuQ7`|9wo^WcD%8bqH>0eQGXMK;GNk(a0 ztt;+aOk(4Ht&;G1^NLas zfr5GLYNVw)dKk(QQnLvVFd@3)p&N0=M?ST5TIETVD7LS1McyMLIp;JfCL@&{e)VT5 z#tosyYAVc8fP@3Pp0wTg7(TtL7|rutjmzE8m1H1t4h<{Gl*VzBT3NK_&7mp6HWEb* z8xk|e6$nmA0|0gAt;+G-*O?`03g0lsI{VZ`ORyvrIOdzWPRBlyi+w<#Rlp}8^{Iv$ zJdShMnu>K4?5t#)i?bED!js9Td1OPKzNvpP1*RG_Dx7G4EGerK5O>$wl78iVG)EkbBbq0Lwg% z4JfwS<}^^|PE3WE4Cg1FwJIrYLu3)iJ!?dku3m-0QF=b4fiioMoSJ^pRP?~pD#1$dGeBWYtU5$l`Ib4yi?VA-n@fXCgm*-rxz

N6{Kj*d#sqdIWhkLW}AmGl^N$Ei563wfM1{|~ zkaOG# zlx1ctayw$0!!d>cwP9%{lGvoJH*Lg3W{?q{znxiTP%u;$HL{9Q@*E{iMe~e1RPZv? z!yy9%WQxwo%WH|rMmHmn7i^QBdS;|hxcR=k)pMurvLe%|adwyFpO&0RS3f5{wasdZ zT&bNYCo8vcN~@8(EZC*MIRp|m_O0daB_+9);-u^~kPbQ9=x8QFpC?bHa?hPKH16HU z;3+vI)EW7S8R_}gLVT?tZ;^S2$X_I!_8F!sxng>e)~Y`iq)PMA2Ga43$Mow{0z?5u z4`M5xT&|?95SJsgg_9w3?@UQQd_s^3>6*0ETi2lzou)m$WGqfd?@;wXaz{1MO3k^N zRhxrWdTuq<%Z_;OOmbDgY;s@FJp#32uix z*0x-pWi|3D%P?66PDj$DQcMfoiTo)-_U5@UYBP2k4)$&1o}-#{YEi*l5mQn(d+v13 z5wv8tB^(pD;*v!RA!RumdH%JO6qmkZ?9`KQawC$b3_5qGZe|%Lp60YwAsDpxH20FV z`Upwcw2Xnz6)J71VRelAE{;11%Z5>b|@rB9XLxoHa-PjQ~LE6A%808Z?2n$AhaO8Xiwah&zzvq{M$ zo|TCxC5T{8HQh>aaMd1NNpm(vKh@-(eGLRQ;5Tx6)>77b>}AZFNR#DM$5Y&ja*vsS zKH|345$2BLYUw4=u@YunGiJA{9&4swOoG@sJ-)SO1!rPheEmqp zaK=u}M^f+aCnd3^58VU|H>GRCAPvCD_NbgDrllQ0R6s?~8f) z$n9Cno>I|hcha0>T#i=9OlO+Yx0B`pk0Q2CP>rN;)>o;_jmTzUAZ5n$#%fo(*%KV( zlh5Nuyw2L((sB0;d%J@qYy%Y}agNoRpt~q;NgaJ_u8e(^?$0V}>gLs)N@fJ-HQL%k zwlGIIJl9m(O|sUJHFpxECkCQ&2^mm89saeAB<_%``EExVwgjG>fr`<9Gq5Clz;bJ% zdul0YlQednr0@B$fH6`ma&0BJ$*FQe<+`~x-?SmU54-kbP^DP6NIi#o6jHv`_Quwrr>=FjI{9Jg0z9;$Z_FvklM z$<0c#lKJXtq?NC8Sji+<1jwW@=qgCngrglZ$)=+DO)YI%eKwWkoQ^=pHE14r;OC5v zYZmP$Y4GYfvRD*vn>ocyz?B4Yd*-EVVY_XLGRmO+?9<6P!Q%&^qS}<~-N0l_z>JgE z6%zu}5L=POPbn`}m;@ycuUZl!8H*hHA6mIdO39VZuV7W#Ap@!CeJVD{a0ktU&P`RX zu?=0^cH#$4L8cIQ?`{F+r&NxWstw@Bmd?@XNHWTjsXIu?2d*nkc>*d?R~}f0#z)qe zS@KU}Ijq;2SG!^XoMiqqHWxTxSPb*&TGUD=@ON!9Cht><2oIRRG5u@L^&NU^sfyc4 zi1J4xlg&*Cb3SQoV~oTqP_%b3;f8s6a#=Cdo@)5=A-Bu7&Zi&__0@=)icyL4TDv~y zCE^bh+uKCuHVB;n&o$ycCh<{~S%k-L*R63;rrWzJq?8vgW61SAc1hovcH@#ab*>Kc zP-c<%`Ln^#YVVy$#prnuf~!7j*ygUUpUh%U%&a*J-2KGdKf0a$6P2i=QN2j?6q8ossMMY6P~75!ik;zYxNbM^Vme z;H7Cz&7WmgVOfV5^vy{S`Loup){i-zt++@JQ_rnIj4!#Ul1W_|Mc(FZ+p;H2uoaTT z?<4OM(zK$|YUQV*Y}2!iw*l9^Y0J7ed2gDPX)kD*S4kKbGI_TE1;GNK2muU9CY0|8 z-4?Y&SdjVZr>$3Z$YGv4R7LyAvFQ>uLd5gZtZmLQTFUZ`k&=#s&~xwWR)X#Yo3Nvn zDf4+93(V$k<6Dd6^7+B*U4E1nD|8!q#&cf7OX{jUPnN_!O46x)4!+Ru8;>VBBBj(> zR@jB-Bc^$-SjDMDc0OKjoi@&GVJ|j7>riS;v1!sFIQeREQ&O6V(S%ovNb!AI;5@8= z7H!xZ^{Up<5O7y;#dKG)ibm0j=dv!#2-raDj+m^;VPzO2@}e`dyC!kwkydqKYnSPs+vrh_2b8;Q&pc+fQqyEWo=F_nbF0whge55RF&L`GenLp} z88u)=rZoisKBQJM*Hmbvx}sBRq?S0^25UwbVrWTm+o-OJb(|xqg-B~>)UdI_K_x)^ zDbwsA9iyf?SJ2U~IJDC|D)b>!bW@TTj|5{qDzvt-bzTpCYw4kx)Qa5jYvlN9(Rvjm zw{bFI+jri`Z_w1O6~e;BW;>Zqd9OyEXBL+?Q|DesIMi-0L}kiv#3fdI4ZUiFx3}t5 z%!QY)*1bAd`V|j1`xh4(U$G^=w{*8mL$Pi+EnOYAh_winS(%i7be!g@^qh4$TEszW zw%pf)#TS80k0Hn$0BZ91+UUi-WG6g>nqJN_dTergTCshZJYGDw4D8Yzj)ygUJ|Iu> zk1@IGcT$!THndItwNX1*(1+p_{(k80PDeX|?^l1}VNO9JW_CSEYV*FP)U{VSrHg#7 zD{(*JV$MS`n;1VX4_bfxENOtlPJMD3oU-*TR>-<|%CU{uqvCT(xxDSzJ&hv#P2C|a zIaVitTd%!mEF5I*6|vf}oUmNaamV6o1z^`$e0-~(ywnfzDo~`E`Nna(n&WwYBX`*9 zr;VHz_b_jMDj30w?L|jZm#!aC_@Ohz%^b|+jE|eGa!&y&mUcTow5Q0MISaptR})A< zoRY^RX0j*o{Q1e4^yi+H$nXws=rqu+LiB zo?m@g(JXYMqbUy@T&%LHN>_UG{?||INZv5NE!RI&)~owI3Rh+|ann|@0{D+nmnKpK zxyaj^N7paqV-VcgOyu*=dcUjEi@D7_Y}~!gif^jwav4?2h|u6MJ!>9Y`_m|OC7&Du zc;>Z?Xuzq~FO)VPzN`QIfSCRFp zRg-I>+d4kYMkwyB>|cTPJPw^}z?79qUPrA;N)GJIyt}}1#BB$HK9%Qw zC)D9hCQ@5+h3XGlAx_m)mdw@9k`*R+WU?*pqSCWvbMkxFSEbmt18u?UoLAH0+EC?N zpEHC`&P?pB?MTKBOnh zxycHW_NvFBX|~%{T%Kx8M&Z1Ipz+?k8!6WEK8{zV1?G8nuei?Oo!L3AN@$7}JY?6o zCwhFS^7#~MHq3j8nkC5VT-=-9W+k#mt#)Bzm%RF(b|!98N$hmGd0GKjs_f{OD}2T*(J}dlC%sgXFr;Je zcdpk_Hj+6SZu2~K^;U&9%tEU7t5({J4cQ}h z?DZAT+__z-OJolG=DBFJ+Jv_{efX|*)WW_((v$bS$9lJ?LhKi413hvpzO2$o8R7X| zNjYqKZicK1k)7G-PZjisfo5_B`8u8jeq)@|=cP7jCHw21{ipK+6U$<^P?6u7_?$M6 z)W&V|YEDMw9M%S}2Ky&H>)EK3wKGp!o(ba1cMwg-Aa(Vxo3-eOx|zR-o`6@@<)6H> zPeO5bZp`Q4l0;GF9itqM`K<`<5^G>fVYBI8tYW>X5p$^v4Ta>(9One&nn^BWb}HPT z=U)E+BB>{BEOkk^B?0RUZ4k-BAJVScTs6Dk=NYZxDO9A_Qx=^mDI=g;*rp5Saz4Fl zI`2-3>m+o}Mh{xzsdSar$8|}AOjSqg@6(DxN)8$~h(1HT}5uK8i?nz`4@?;}<#OvRG8Ip(wOtij0# zIp{s>!o*A1&zGV4j#E)anoQ=eELdcb&g|AS@R5PRv?i8^ zyXbSVv{2b6-nyp(TV@P?Y#uAgsTirWe@Wq^&x1-wo9cGarlBt5v~|r7z- z&Tu-`9?~j{x%|V#uuB(KEoprZq5Kb{nM!XNan411t0GwGrC4oXEAcGqw>5N=)bVf> zRV*uSc5r%@uHsf)k=MO(x7w7Fw1Hf!W2oz1Y*LJp?v6^!+;=%WR$(o<^A8yLjd=#E z3N_mj#O~|qUsHjoqYrfX49a}`z4bZgj}B8A$4acqRx;y^b@#8Jl%KQaK7KTtYDtux z{KFtP+zx3LRe45E?{mdWTBwtfF`WJDu|XnIS+{!AOs8%`WR5_p_-VHK6*%4~P?AbP z{yb;tODSv(%vC}4u6RjKEAJvI&{jiMZG)-KdCfWIK-@9hPAhijXuBE3xIcTShULQ* z9E|c!TWh3vK<6ieS|qu3-3}78xwjXgVL@?eT3wE!m*rNh2^*^u2$%gsSWP; z40>X(o2fD#dK&U-UYzcAPOYSzOEF!m{EhdGUPfY|=OfcJb1q||X*nj#k;}IY&MQ*J z>D81n?+ke(x7NMPvV4^nGu%;pmbvU+8q~+xPtCXvpjV(<$RuflCkGMop;s`<^j;HbyiMh zcvPuE&vtbQV;r#zo`a|zYmL^l;~b9I`EgT1arV|^ViTPva;RM7PVTb^c z!NqNel%qSIeJJ}#U$NodEVJ@_-M=tBE6%M<>wg<=BnIkz>*}yipAYXJJ&nCO&Peq; zAuY|A%xCWMMPpp}IxR}>SCAd6$QbHPcr7e7NlrZvN}`rwMxD23ig>@l6KS`8V#e}D zU5g*?`x^2&EG8H7gBem^k8$f>{udDpUKv#Ec~vPq9cM~ML8YTZcN0G#INj%6j_MxnYLSN@n><>PW99 zy=kgZr+w^q(!<5osaD!6=x}?W|;>ovaj=S+0 zJqhN#vsty3^W~6LhDidx%MC6_K{Mg83RNmpZ*)VUp|_ei?b52 zmbz-woqSI-=y1@h^;|S#z0Ey3Lw6Ig{|U)ZQ! z{K8OYBDTcMdn$77RubSIQcGRxx9A!?0xvFR*dmax%t7a)yk>3^*O3HD#}~xH&MNnZq?%ijPh%y)3tkP zG(243O2d^Wt#DVvx#3jfx;v=iAuMgDqG*iE6mZDH1asH=|u-|_0f$dnXY0z`* zL$Z`<_ckw}wTEylyRn+`EoR_DtjI%-PaM@{)hf!ppHmEUBB=BAO&wN=c8?T(VF2(3 zPg?Zr8+fiE1a-!1TI-dzyuuPyDJzDhq@qUBIm0NgDc6H4K>qudiZjrN7ePxU?v-gxqp}!o4g+$s-^f;CHRtJ&PC{M(*d= z{PSHfgXF(fd3TlXBdxJNx!`+>=xvyJK>XPU2ZNK%MAK4t=yt)jk#X=NJBi8Q3iAH| z7u+Od#9QVnat(7+yQ-H)c1a~gv&?MwOLMhON$xvWb7%y1=OCO4?ZvjK*`8(zN>cPV zKN8QDn4@yX2E12QmE5K=pdE@1G0k(=daX=p%AF@`YRwqsEr1l~9ctJv z(BwBKoL3LI2V9OA+$*73TVkpXm~Aa(zAPy9}bLJq|o`Gz3#)L7{SLU(xX%Ja&j})o*g#%o7i({&0GuaA9(S}G-o@AJ?lm8 zw#*XcPD6%pbI|lOq!mr4ka+^Klp^4y_bQrY4VE^Fw>xxvB7&pgo1ranpQS17jCf~AzN z5yNkmST^I=kxzV>#zrwoxjE~)HG{lgVHA+;7@ldxftLiHDkldi8Oh2pcJ3MAoM8U| zI$>a6dFj%(ZBJFy)yg#%s@5e*H*OiorV>X}#(1fx9$CAXDf>$~XfzVsyKeea-eF!o z@WusaRyyg_>{e)Nu_J;>q*V-e7AF?)%`!Kxo&lDZuGQ+i7T+!2UN~P|*4hy(o;Cj*+%7z)h&lP;v zlww;~k2b`JtgtsE^O05rZgGK<-A!jW%1yHb`J&vIHL`{{V8{5gR$|gFCb(Fkf##fy zs-p8W6X$N9~APLJ>(#@E;IM%E1&W7AwB5#l{f3G?XjVw?)+SD1T(n3IP`V&$%=2yP}{vujidG_8N zn&d8b9pr@>^~W{FUi>)mU5&(%-)Ofm;Eb?Bz^{*@0&M|SGheN4NkrZaQLdtsfsO5=?C!GHPI^?Mt!{ItpZWodx^4mGV z+zkdcf0?tM)jX*_X>~G;8&-N;nPX;BJ7c(}xZ5Wur*B#uZ#@m~%TB?#=Ocqr?j`fP zA2%YR>ei7S>}okK!}k*@B=J)&JhdhB&1AWuA2FxR3)^x)6Jr80PdTVJfiBRw`quQW zz2;p@q_5m;v1E)6{{Wp=Dno7=0QIFssZRY-gtcuVO|FfcW|&!;Yz&i{%A{oKN=%0t z%UNzY_W(C?N#>Ve+8MglDk(#nTb1tFb8d%{p-U;xx2;FHnoz`HeF?16PS<0a*T_un z;hQHJsAW#T?r&P?rv{r>DoXLa$lf8dIp}(Ks}0WFoD6<+l$v_#FK1?w8Mv%@9MoIb zzsvw9fmkWUxh7nvXt>)(Orzxmm>&ITPrtipBe|^;mn)NIZfla=$EjlA0g<0du%M=L zyk{iVv!B0d6&+T)mtsOwE7bKhX-F|Dl1ATNrlqFgbX&h8F2Fx~y^c`_TGQIDK~@H` zYFz3u`H@j6%UvCcbCRk+IXU2Gt!K?634?AVS41q;p6tb0>be=zW#q_iqN+#;_c`fT zIjU~qD7i__`W2l^Z43c%`qXE69Jd74ZflWBBb@HnBHU*!AQ&W{dY{bLFmu+XrAb@N z(h-w`@*m3_hR-z8-?}98>+4jd?x?<|a+Kj0E~KGBO~-+^r>!$`d3YQi$WA9Xm`+3i~$*!oy{2h$_=F+x^Nl9(3*NoFfM87w2*wnv?B9d~SygU{q zKx}hX(HuD-lisd!O*deaUvlJb;d0o|T3O#Q7Tb|gKYCV+-5OEnn^)ZDt|foG2R^=) zoh+N2FyLmKBWibN4BL#Pt)pdj1gYeX`Kc8`g>05Mts9H7Ie9OsE)H8b$u%Ni$XluF zkx^1|a&bj}4^&--J@b6rS3wwGFDK<(b*!bOqIA;c=4)caBXg{o3_B{AW4OTJN;m zg)zoAe9SUNYnrQ^HB8cr_xwgMoOw+ox^E;t zc7St?(ob`g&roV{Dm0x-~bTW;=c~2yOd8-jIb|sD!bin4lc++oF#k)GqI^IXx zNChxC$2Hl*9w1zG0;adUD5cQvrlP6qyCop1@J{|=xEtoe+%Ve3=mfzIQ?l=2buG8->ols zCQNO)F2)p|2rv&N7Mlvg*C(4;s9pp@?02$zV9`!zV00;-Z zb5O6iMa5mc!z4e-dX8!6FwDoEa(SysY7a&`A(-Q>L|10w4(h00F2*hwWU9vl2N@jF zg~WLK!_=Cqd#}vZ#o5?^jp)NZ`KTRBcid|`TXGU_Qj?}-IrZYJ$(1L)bwYg3%*$n| z0VJ`&;O8cVYz}jtwP|xZnOWGL2Xh|c25U+ju*o~K+N!1QY_BD$eii^6j&oD&%z^Wh z?_9F7lVj$+nI^yhIRNI7vJ-dSZ%S`XNq1|QkY~#|Ic#zDskkwgZeKMm-RNEJ7{O)( zIi}$38%9rZdetdera3jxF`0Q8Bds;?q=qK|bVd5VZq()G(0L3%%A6oHLWm-yap}k2$jWnM_!~8+wLo}SZ4m)PNw^P>Tl##oD zbM>!XazT8LE^?^`tUyobYQk81vh?bQHN<<(2!IDYLS$SuWx& zHw6jod*;3SOweuZY*HxW04e0C{&nDD@f9mgC$iN0%)bj99Xq9~)am22K@cjSWcRCr z+^cUZoO)LlnzOE~+nvivnIa_Q9C4bJBRkI>I@aq(*F%wBYtYlNx7|8`I3m3}NVnM% zt}=0&@$s!Fa-Q~AP06{l&@E7i@<(dEco<`x^skVz=dtv&l57XeK>Vuu9kAy=Ha|Mj zQRnJJwjw_{ZjI_H3C|;*aoVz%V<^3>VqKOz=QT}9&o#VMTrT%D)2Yx|M~H(1k&Nb` z)F%oVLHVl=M>^Vs)zO3I7m<#6#W|RT!RywxloX`wYTqnwM!>S3PD$dR#$V<rTy0M48K$4Vl(4G@mgWvT{vz z7OGY-F`jrhuX0K*X(Qlqbz7$&Go`d*BIH#I`O8jv^V+n9H7Q*2r#rMR2|* zzI@8c#3tRi&wpC;9X@PBJt<3;hr87BgF8*A~S+zz5?^8D(RimpQKbbsR5qf~-?zXOo8qJRahp zc?)g;;E&e3sa12-!;;&OMQ|Ec4Bs|56t@>UK|*@-kIssYQ zgo_j*M?Jb##=NezDZ}?~Lk2g_q8PE@^sUspJ5Uq50~xP+c$>=JM}Jer)Q z*?t`?$lMYRIIEx7!Yh34$NMAJxt?(1thWk$KTXZsW0k&wK|2(YkRjnmO2w1y3n9#; z{x$4j^C(V>zf;YtlF7*^y^4t(;#ZJN-1Sg+&#hQdaQ^_t#rsp1HXQuVV;}5!N!ogv z7TR^h&ZB=rjQVDus%dvNiy?M9fB^GcGtDVRw;|B7YLUF#y^calD~b9`&v1L1s(d|n zaLlVN)ga{KrDKT9VNO=)bW_TzO36LQlfn}lf~Hbb4i9o`P7ea+A2G{r1Dw~1S2%HM z$GeBgrztqi=s`DwLR|gh)30jGx$vxJSoWSl&P_thsQdLoA}>X>MJI!Zyl4#^>vjI#!DKTGk{kBVFyuIIkk6V>ayG z=ck9ts6$kY+nowEW0?0T89Y{0dL6HwmyLS&?L@JX_Ifh@r5Mdh-AxFz*pf}#1~KVP z`x;3n`mwvy70jy2ddTgS2ske0jCRPeo#QQx=M|$73mD@7^%cP>I*#2AxJoqND=sTL zMyLkhPbRtzKG_O+kHH?b#a3LAZJN@xTFE!DCB%!n3xnxeT5XvnT(8VcC_+@JHuq-~ z>$%rPZJ@Hx7$`&RitCBHId7aU1$z0?wZl7$8lis|e#B<9b*sjZt7%n;d>(awU zKG8OCSE}Ph+p94&+XVA>ILYf><%-0mS0Hi5d(y>Ja;bH?H^Nfnj9mJg@kGQOpbmP| zo*^3!equSN30}udSjI`s^)zg)T1kgF8Lw2(H1K@3VV2JzRyen!QZU0%=Bdnj8bBhq zIUJ6a&1z!-yPEK*$;xiWr(HK|95w7-WXwqUv(~Y0EHMk5a$C~98O^4zxyQ+^*~{Nq zXFO!%^Q@RO@Y9xXPo;X1sc3t< z9(5pO}5-Y-4 zzV~sA(@LGW$GvGuxVHK;3bE&0-AfkpGW?{SqqS*WLMF9m#?|N#dh=_yPNHb+!%vzV zvPUa=r5t?O_4TbyA$K~R*gd`LrlL-b-sDnB7>{PpOwrT{hH>sI-aI6BO0p>coD5gO zW_R{-Z>iT-7HywHX)U_Z3FP9p)fs^`@Khyzj}`B!C(IYEQ@o75vv)P?rFhwqeGeD$ zO^afD@-lKe*UbJWwGm$&f=TB-mGqfiNYQOGYVl4fvyOE_xdVA8y;kBm*E|e#uX>eB z^K%rPhd-O|+lGCsr8;z=wMXsQ8X>V-TAQdDyVPDmVz0J#2})2Rs4a-t#A?-yJz|e4 zA-38@+uxh_Z+JeR`@Wy+I?v+>Ma&xns25z9yhdY&1Ed77L~P4mXY^`MS#Ea&@UvKk zES^YeOGltKEgP~N-=*!}3bz#vcX@EK_nUi-m&4spkWQ`8OcfwR2x7mo(oODE2!I$A z*#t#FJ39}S+jaGrM8pfbzbjj58*Y0o&hl;FT9Mo_OLbM33JC22;f8DKAGa%)LS>`Z zM?Q-08n-v?)P&{4N1^4fi}4#XP1hxE zebV~>K<M!*8hy6EK#prwSVP|U&9kP8**i08e5O$Vg?<2E+G}sWyK(k{=czT%CdUCO1$b2 z&9Uau$p-)bbh!C`X)q<4sY`jDYW(?u1*`9wU&>VMhVI557$_+KkF zG*>o!Bq{dz&7(;#O8RBni*9q&)oTOI*vHvWQ#JIwZcb~y`*d{cP0UOgIl(K0(<7hN zn3s!pz)#RiUT?UWtF`Y*^Wb?3pA#Q-E{*#{6tQ&RG7k_RnfM6aG^6a8O(L!3VS|?b zPzdlpraN%A3U6+P`b!N5p?5NtSqMuL6=1R(6)a??0)jGLEC>_q13urRAgm%p3k;J*($B}rKzgFPA6GL!Cc&Ghvf`da zb4%MgTuzJ7Ka7{>zOWy-$_ilzk$G`STe4;82?8)UdOBT1VG}-;hTf0#w`IQSJ}(SG zlu^Er`>Tr%J1^f{*(XMAVRtQ$SjNru!(+;g;vw6<>Z$0QeupHzE^ji3Nh=2r;=UE9 zH6YK+0`K7?7&<<6qgj-(;u0NHKnxs`Dx(0c2wDhz2H^j179I zKd&uiQK-3OjIX$}^8UpEdg{=72?kcUMK1gD)2~II9bY-joHGYhXExpWW(I-<|QJdPUIqsmJ<7MR_l=JrT;az#&l_V4F>=S1ZQfu4fMTZ`gTRla9)w~ zRXyk>;uqzmTHOU0%2smQ8bHZZzIFN#ZsTK}o6exV7BJo7bYY}nEH0$35#)gX5RmK6 zYY`(Dx35S(#>pPcFDuc58ZT11wY;tk9_OwQ@(|z~#H5t^;d3thEUbaGE2V_;y8TW%Z_qwlFh#+CkGp`ZC;|WPyxdv+horJ9WnCqleTDXnDz39~Q*Ag|zT(m9a z$$jH#g`LG_Q1hib!^aJt_Fq{Mcdu@dtK7%hBz?qK-(+w#-mF3!C5hf%hbQHL?0nn| zHhtwJ`)jhE1#s%YSUZa4&J@S`-jhPB7L(jZjMvO7d=<85e9NE91mz4J@gd}#i8E?H z2YVhL9)!mt-{|vQh$W-_$1XLxE{B_tTnALPFgn2IC{BIeoW?3ua=L>{vd}aaj9(M}3*&WCNQ&UZ*Y{r7;`JBKmmnRP0%t&wDvC_2NwR z?_iHb5llayGirf>(}GUNs04vZE9N*+5O+Py*Og*h-bR6?1q;lk{|BXq@O=(LGN&&gVgSDrrG(er?>OO(7F0bqJ7aJdOf*A)qkoJO}-k{)SDV#XMeDGUYP@RHI7Z* z@K~7^k-Yrg(PIJ+^q*d5Q*g(8ANnR0fO%R!3Sbi*_BBqkHs1P+Oie{^!i~3M)Jn9N zQX|nbk3;N3?(Sxz2k?AyFK3E7cV zmGhE5+^Di~+fzbkzpi-jO`ta8F{(UOF6qgwWbp=w=q612WzZVM17@(@l2Y4pyLtsd zN_sB8>C4u0iT0`NzztnWiaj0vx7yE^Y|)6)Jz9#@$`trJtN4$p;GHRkUmUUSp$8QwiT5g_S}BxW7XhD8-t8B!m1l!>7h~bOurY+j1ilp2dxx5Unen0FIyTt*yBGe0ODE|AJJ3b}k?js22`R)U?s0 z87G%Qy|Stjme5iI!eD-g@uwUC8(23aeurjr`EH)%C@=d=*5~h16;8n*L=LbN8f#tb z${CJMmOA>z{$QfY#^u)Ged!OQ>_!#ls&Ay-WE_FQ?Hq{cnxlQ~{+q8wRnIk&HhQFJ zs7`iHE6bZ`S(t7L_ZoN^r4aY*E$JR{GbTj^;FyVf{HcGJZNYTkPMLm0K@5?Km3lT1 z=3Kqin7AL!!ZB73c@srrZ+|rOEwi&j3MP{n!ocP*9R}Ze=Rm-##>QuNXoQa=Ku?;l z2Cw|_=8u*fx~@@k7PQ^`>84(RfiL0=5nE+i9)t_)GrPv&2=K_HaF}Z zbZRo%g!jZmyBPVVq!GFgFpX z0oyrS=v4`i=xF-2tL&hVtel?Y$gIvj3e7E@^`37*do`Ap%snZfm(p5UZH&BtzEA9C zy>OE?s5yTWip^ol_S#9Y@T8N3&pgj@b!3gd)1$Mb?ve0hIZ8J;*S&Z$|HnOEakLZV zStumX1kCwcm<+F~*NbONf?FQ0J1s46xX0Id3QJEIoI^Df6KgWLGS6^qhkoAy`*X|( zEH)J3HNU``HUAjuC^cWGsuWPl^B82(*=OZf^<7=K_zvdY$o7d(TdhU=&@;EOCL=)lv7-NmxPlow}khcj(G7QL4sd~y;Bcdb9{1PVE2Xd zAd^cj03@Bbv2AGdFEx;t$yP|5(61cP_Sf#vqi2vm92)%__N4bmc8S(mg*A_Ovx9$S zP+CLHBwOpYXY{{%INj9k*90UoaHK}+mN>9yZ~Vm<%SPX zLIZAMX_9wdKC{p5m|}UWVnxr|G$q?Yy+NM&!o+Fma7{Au0L&*AVxk`AT0*MKKrDMF zi+6LUhI{OR7`u37|0Bg0vsEaK1P4q#gmyLW^pW+hXI!E zNretm4-|RBCr?<`N6!j@khFgf2b-n!a641YKx7&}8-Y!P)rAlmh&@pMMyBS=NnXZP zq(kxGqd$bmjH`0V=`4z0VDZw_6zt!;Za^?krjIsj8i9W+zQMx0wkiD*ENaLz$O6~e z2ihYZ`VcTQAmyBPw1v{7g_DNXYTEUv$IW3)2rK8HNl&+_ zU^FIOBR-027xZI06_C=Vqu=gMUplrmbV5`N_e~n+cOcm1cBK`{9_(mHs><)UUHxZ~%v& zWD;bnX}fT2CICz9VuxE1&P^dnV+^S|%CPwP+mzC2BDqyT&v6olC^3tuRKi1uQFf! zQE?S(fJ~@;Rz-Y^+;;6O(N_pfsjFUzW+5*(VHJ5Qte@o7%3qQo1=UGUQC>}}_IpS- zNr)$#>5sd9gAISzG4I!Sd7tO~w7&kF&W|RJh4Hf}fjYnRmM@0bUgdZ&ATM?L^*h_d zVIN4LCUtgYy7D;<#UR9%`=Sp6yw>Qq)!T3pATWt+7|DM1Tg%hk_xq7xYcemaUrKTd zb;;1R%=9bzEgr;HYjyf5SaR(Wc0c!L zIYuuCZcw;&PU2D=h*!4k#|LKRIMk8Izx715iGn~&gj`dx*yZcx>zV$yp6M4ui-+@3 z+1fouMFMAG@m5K6EPLjufly)ozKm<+T;Zi&$flg=)euH5YBfU^(S5CHnR#XURmbhd zBU03NM3h5?YURC|CoOg#(T;@;T}$YoBDj3s_jh-;ZW;duk7Rv&`4{2xhcxB^45cI}dBOY@w8i9hMzbCs=}Ymh;_+nfDIQk!dHTh8#6!osh|8&7pR^QYg)n&Z%URk*=DgOhDtK?< z!76w_bw;ads zqS0cAjM^Ct>k*xp9%$ruH7%$r;Kr?w@rI^p^7Rtm%RA~PiXQf%SuuigzOGt>$m}v{ zQCoXB8xN)dAi&oWrG^a|& z*V6NN*sn9OW6UK=Q0k#WzI=N??ixV2?452oo8H($*UKa+a)21m;;j#p%~(K$Y~s!9 zwYZ_12NqfsOXojFyu0IUO*9n`aMVWRd+&C(Ng&6l#X3AdcOZ1n`bk@q2Sx5f+gynm zRFGrt@y9He8J0Sh6Ng=mJD5MwmIfD!hVBjo?hG?TzMjF*9TTd$Z_G9mHX>MR1AIYc zrGw0~237-uU-H={p>30gQ8!|=$P|FCw2jj+%rKSX6T&~jmHJP@vBMgQ1VQ}WkD+VE z@d;%zDSUL=(|RDb+szKqu7^%<&M60p?#ipait+`}2a^yRwMKOt!Ox~l+-pSk7a{`g zOnz3jhv$l#5fM$6w=5cjQibM8_GnUyMVzw7hfWfTT)DXJvfIgXnu&097& zLxlbWI-ekVCgV8_s*2$oljchQFl-RWKG4O&v14K(6iGNNkI_#IG+ZpcR>Noc+`5%kc zwV;;0Ffb;=LRvA+ex(Y-XNMB9``3?Da8gzyhOliB!_T~Gzds&#*mbh-PFEry(L7fC z<;IBPtMo4(2gs53&{)xm~GreR`zaQ?&$hO4$Rdh*+5!qrq$#OkWkHy(b~( ztaxnAnVU`Kx!|anPpF4_1BL3EC;Rq|BlHz#Ub022^Zf-?T7W&4Ml)o^I(FaRqsc6z zIosCSGA?8)-+on;CF8TNkYHE$t>RaSRR$@(h?v*r{AjZEX)j$D{HxNX$(N$!>=J1c zzKNPjFFAjif{eGyhh^HeOneXN)&RyASXY)|zWs#w0C0XB$(aV*L$}7rU+Zjn{&3%8 zUcK~r_i9tViP?n!o&pu*FjzuAcArf! zGD%IF&IbNTq~KDrY+tuk_eGP{WMks*yU2O$pI5z#@kjKSl zK`vm1yQvCf&icMSw7NWJ45mKiLBQK*Pr&$t9y#&@U(iW0og9ZYbb=Q&tB(s#t|9bL z5?GH#4TR(wghP*a_6#)TL>=KHpaTm9s2$&86~tlgKGlN{U=veSI)ajD$W_y;)?JHu zF>RHtWnA~QIteLSxB*C8b3%U8;`J!uPrIA%!$-X||Me;Duvx<9U&ntG8aetAGM^Vs z;;grp5#+1q%=cem$XQJGvhbk>l4np_%ey|-W~f4)<94=jYaxwli8j&Fic1 z`HOZ^k+FaaN>^x@e%LCzqu}XKsz3BS%3Qh`nXH|Wjkg(YDEr39*(^w53XC|9UMHg_ z#Fd8EL=_~X91xs|$OBCnpE!EO7i&1t72+aU#B4uG8$W>WNLqe2@|!njuF5H=GAVAe zYJ}SKknyvS>0E75UKSW`_H04lw}Q9kt$eEcY%#OlmK^b7*DoM0kI!E{KSsg3b>R*; zh-uUfbs}5v%G_I@!+r1!eW?TmN@zozKkY0_IK{uz_ac4JNV^^Jn1@<~+4D+pq*ba>Zt_Nh7+v;>ec1p^2%H$ji*JGwL?2F{K^6 zt+VdaPhw3I=5i>1WB^0ZPV-~QXZ*B;!P z<^C^*Rd>IS>1Zxd{d3kS@cL=3yvwti?v`ZexpRd$^GPyUOifv%iy=u# z7>IX&1aF+T?xJ^BMSJ(9q z^VZy`mLNSG&MgY43YH2$KGEI?N>N|AHzYsdwi$159!ny8s@Bb2YkzjfwuXe5 zmL8XFiLybZ?sEmu3ZS~Y71vOma{Yb_i^SKf&lZoA+~u!cBf4ssWrJ7SMHm;iOJ~=* z2U8P}0N+OaYU&^Dex{N^dwo#%aRY5b_+*Pt%~)KD=Wo&nq?sI>%})Y|w;0$o zFe*JKVA7f+UQdRpzrZoiK=&nH*4~GKL96&*)f?Gqt=X$ZYd61dg>d{LCC0o!wIvs&yz@KO`qSkPG6p&IpVYeY!-GaquVCF@_P;$%YS1jG z;X@pcGI^h4W%UY5ncL%Ajltn|`Y~$e%wa1c6(M8IYXp|BhFbhqUZyvE%#rL?T^IMnUcQVXS6W@G=Qu?Dh$!)mV@lQVcAI~jLFsp3g zTk91O8guhRc_G?|7sS)XyB)P zpOOD|-YCR&k93HRo$b7i7NZWcRKJ^)a~AXFnNO|?hkMDR2O3b-q(45^f#nnF`n-|% z)P$}yn)`Q&I?YL8FDgD?S9>7x<*?U%sPbaFCpVhzXwozD@!eK`6+ZMyWoeUC$7*xm zlUCwI0B9aYoT;gS*!Ce$uuUK2JeFeE({Zv`jlJ}d7UMkrxz~2k@YsnQu@9LD=cI;V zizAG0fNG`5s-t4a)ThYNb2s$#jr&cQ0w$0Ha{CprC>OqJ%VRoK?u;*nt!&Wr+%I@056b4kSXJ@7ftSVEwIX6x$ zC)Y`*Pnz@hD++^}SY}D5n$}|cBXWByYw<^|v#enT$7A6Q3(=?mX91D4zdgsieBZY1 zncuBj3!tlx?i?wn6*Ko74`SLZF&2aQQzCJDiWBdyiAp*j10I%cymohcn!DvI*F%_$ zvJJ3Ms`gKe8>Q&IZH5cX-{Ti1+A2M!az-ubS61?j-fq~jdsKe=B%08krkIR80g!&; zXy&Cb5^fp0@T2Qa9=UF5H5VyV_d@f6chb;BX^HF}LzdYb`&NkmjKh0kSUBgZ`b`p3 zx4j3VkTTdkSsw)PaaNM_`ikVXJ3!75yWE8&75p%aa#7bsqe;eO?rZvdepnnfD_T%O zhsj1*@LlF3mLBVfp&Q$Qd)gEyMRfmC$t9N*a~725u`A{puvs_eIS)tRMvH0nMst1p zRfhP=jV9W=Nne7ezkNt&mb?=UUJmB6I4+ucwV)*LlPE`F=%g?f zmr&C2T6~wE#h~B9a7n>%eWHP5q|lrl5u*2KYr1vz6dm-dHhzgk_6L6S7a51I`rfva5v^FLG0gjXJ zv03JmCx2VLf!}(4s5{F~$teupk=)C9~}jM7;QIbw;q4A)e}moea%y*ZaGj*v_!t}LrDVj$$?czp-&^z zT#VpB2xPc7)s)g?-3y!H%{q2Sh0PvVXCyMd@akPlQu*h%xe6-OuL)#<6Y*G#9_t)O z_Z|AFRZc$qHUF?VgRxtP7GYzs20p2*Aho0HShVkLue#x%;OVzzpM#WCo^%ZCs0TKS zyff=wqU6Ij=!>4LT+KMTy2#Oz5Wx^*Qf1cPd#QGI%susshp?KPY{VRmaxH1l?^<9k>Rch(J20rSP-7fovZg8 zM77ULDV$ZXgy={PxDp<;u1gjA-0lr5o3k$LUB#kNS-Y67 zLB5_9>4kh%ee*0=->bz3@+ABBM*@c{F<4xuR9HPgJj*POi?64612vGR==Z0T?r*C|b><+#ELsuUSO zWxJOZ0v>O>cReQ@v-@03{dUlZy!Mh3L_{4q-nF#IdEhEAz0p&7B+SefYbaXK)S@13 z{L5@6i$d~fk}DpbsVQZ<-)B#z#V~E=vbCl>NcZo!DJYJBY-XAG{~Vm%>{>E44B?&L z;|~%yu5(xusJDMV^yL8>_4it$W^s7gWzgVq&6xStER`>n>8?TMeEnHDOukU>dmg6U z**mn6kCfDqUNL(7S5Mxj-6;sbhOkh)GDaD*O#%(fq;}qIb}QU}(Kp?WvHM%aIhap2 z>XtXd1^#UC;Vk8z4|oPDuU=qtfAsGfBl^+=4l^(=#v_wuik#GcI5V555TLYF_^*96PYaUxn> z^na4J{lZEB(qB3(MHA&*yhk7@o9^hwm#+RbR4*T$ltw^(Na0R+#6xWyQt6Feo#hTy z9XDSUg}~nYjv-L74g3>U88m-$({;S!G*m4sLm<2RC#8~W93)$p|2Jb%5q~3@rE*x@ z|3~?M8FulPWyY{rxtHXkDc}-LddBznzUM<4|AA`4M(b?_JYS~7pHf3<8*wjZYdF>; zV8XDNPCd-iOVwI?PBlv*1$~QL6n1v?ABVTwuiCRT!!TMCb@WAWz3QcFj0t*;_G|F2 zZ@apJtcJM;hCpIncJuo=;Hr+KT-`J9@#{zKtg`EDwe5*PoY*gm#eYTt_<0B5LCTIz zIBiCv>tqPZNjk9H2g8xXYc`G?T)MTZ=JT zj3)f5Ta?Kvjt?v_8S&}Fz5Z~myS7RE%~P8^(S+^M62!X6z``ry(NzA87cATExBiVO z@3kGd%fq#+ij1ws-0=Z=O}Cvi4uef&=OSe_M`d(=CnEJM(%zb1iL^jhp0@i0Z{+dT z$2^Ffoya#3QyUgBO2a5X-@2eY`@ez~dmBzgwM-#z!J0T71|daNpQT(`CSzlV^~H@p zc!-7itAR+=!Q;_K<V2}WMdth*D(T72;B+n5%PyK%a!I^`}5W2R4#oUepO|r zMi)#3zoFKgrK%6qfAX(AVxN8<_lFg_W)g3RpjV;hX;1VC^O{>V{`|74>Va{g++%xD z@ULAIoI!-fpW3I#qk<1Y9l(Clb39Y);jDzs~~ zB5q157DLk#=czHPnnLue+TIdV)D_nGTN0L}0jY`O%l^jh)V6Us&~sZ$cWHI`Qs&d>~)vt>nIGKPq;&C6~iY6?oNiRkrUX zbLCp!_~~9Y$KRdzZIjr&6>^Nh(T7>c$YhUcY8u;=^lY~scPWe7=DA{IkM!S?-DEkB z7wk+2HYx#w(vla)1YG$2v)6V1s$h_a9Ow1?&cKM%)p`eAS$)u+jY{B-c$XvWr9&9p z^5+(8XPPX_PXN%4op4dBuwN3ro{FOn``j*(uMm45(^gW(C=s?SLZ3#h@?fm6ieb9W z_T1K)WJ`ChJ?X=bc54T7=m&zweeb)Wq=y*gz&uwApY=)1)Vy8%LvMv?$e_LoesP4{$zG= zxJ5A*u+c*yV};>A#WQm=zX4X}*DAIrM9_QoNpRxi_mJNS?T8xbcaUQTl;NWVVZsH> z$8yF{J0r@0b0?|!K-~^_Wo+|M*syi+P@mE20lWd?X1~#SV53wqLSXOO;8LdccRTYw z6~5vJTYTN_sR0R&aNElZiLso_mJp+eu)QceV8`G1Y+kjpJP4M zuWkpYw*4L0&^MqU$8fNjiK9U1zOtTH5DR#{^rAhOh#2@rW}hh((x&VthoaU6_Kk%W zvIgVUYL6V*E$O5n~Y2-y*K^W%`KJJ9(;sKa>VwouTIv^9Uq1v)MaxUBoBJ z_4k{!8Zw8TYqtXqi}$)7^*%}fB!Whl!>${@je3wWgM!|C`(^ENdYqyQ zA2%|9d^UirBleL$P{C2Q!>xQrckP{W)`$ZDMktE8_eDiyI_-4c@jmHS(AG5OyJ1^a zEo5`_2ORdxcl4H3|PPX9TbjEuQ`c)6V zzxIVhjq+ieS?AYp_mo}mXTm%Bo^wS|8Raa&cfjdq%C~9zS$fpwBlN55O9ME@60drJ zBR44@#pB6~B~h~xi2;69dhijCgF@2O%4xnFl)G2zodsS)Kfp2tNYGglxP5#dD7gF? zdXGXUuMEqcP3Px3CDt$@keZLZ#3z?q+Mjo#8h)$A%+*?!Jk!U91d2(gml}A$;O`{J zrJMhwq6H|-PDzN9ng|^C_`=-hWS)O8B{%3hfz)`h}5Hh#K(Kwo^D@SxK<|Np3>;RP|g+;$zdvrJA;V=mR1)~tAp&|Db6 zpjhv;o|~16ws>m-WpgKhIAE7-5^PN&RCImwPf_4g)6K>+O`ZO8N=uJBg9Ia=N1DB$ z`xKPfd9661OYYgqo##qQ?j-=sfUL9VMgkrt%C^b-ZmG@3Ic2igZDHFY8awtx3&_4t zV#U~D^!4_ix~=*9q247_*{65+v-{gGw+wncbUn8pa+>dKUKC9V)anFD#N^Itg)HRU zF;bCvUs!?g)(D=6Uj~8thU34FrUBNODnAb>fE@t$X4C#mJXIt;&_}|x;p-W#_c_Gb z#1UNDMVGps+@W_f|GM~`dzkFki|7@J0xw`4r`lokAcM$WW-bH6g01iUn?{C7CAzsR zahiNd&ywh2Kv1R5k6S9w{8H}^XmX!l4;VI)Pev`U;!9GUAC&(QAKzc`{WsK&HozN1OaIj^+h_dInxqE{`!@m;TAt+Y61eeb9ZO51$0k@@I;J_IQcP;1{lA?gb zD5V+vx_sZaWDb`aI)O<}+rGq_Px?3;(P6)Pv^(=|qv9jUp@zyumXgok@2FWd<~Zfh zWKFUjmony^!iBb^D`@6}VUiQ&!yel~ri=22Z$OrGrVRCk?i_Ay6xJp+kIT^_*UQ&T zfyA25o}g{y+46q(aQN~3lPA`1$lsKLij?hc)Y9!t$DkdD#~9nE`0MUGv)-rc+|spc zu422MTMs*0lEORX^g2l0Sook1Jo-lYaWG(9=djr@^t9%APw6YpGzjzXT^uL1nI26S zBv@olg8e{QvdX5Q{<3OS;La!rkPZUSL(X&l42xEEzmfd~q;Mvm9zvC*FCZ@wMtb|N z9EJPFqCCyH;0_F^5c#Jnt&~}lQEpMgrn~TxIn&^yw3L5A7}-2AQf~0E$xR_W(TD`^ z)>&^hOW`hGV8tO16ddqQeiI`kJimZW0_UIrSnL9K?q5wnZ3VX>tCb`L0~-WCLF|uIM)@jE%WRi&lY9uJ1PMgev2kRG zwB#gcX+%C`D(D5j&nVVc7;jX!Xi(2vvTpbv3p+c7u?|nCYXaE@ZKOS!#=!-JMZ&ii ztw)UQ-uLNFkm15kowVpFqPKx3lyRLuJnVf6zNUZFBH7h7*4|8sHCvvQoY+D?_mPq( z-zYJ@0|wtbsfw#0^e?2VO7Lt5f4=j+j-H(II;Rq>E}Ga=-ZtT&vuxv#U;XEZZfzc2 zuA4RTf()o_b0m!fK`Sko{oXF##}8X1)6(*>Lv+)DYK={D3CRLwnIv^hrK>4tg)Zt; zO4y+sJ?|u;yr0dO=e;m$Bg}aB8$;ycEt*8e z`db)1&*@(T%g@v~vIghAdn%K%Y$iDTAszT<$M<`wyF(3cuKNdV?cyIs=C}~+kMVcl zBQ$Un??n?Vz`qBIG(Nd$q=kPx9^l8!y@4y^p&ut4m^hp-;)Qn2SmuF*3PE0W=b8#+ zTlx^Gaz8eSCU7;S(3S1WJdF!t=^~5Hx=4%N@&he~Wl>ZW_;EhK76&TOJ2sm%ks~fu zM{wVU5&-p|6axB3)NB_#3oT&qrvPb3R5p*H&o|p12jOa>htDMm$r}_+JDt} zZP)u;;96suh=UvRXT5RiW%KuqW{I+sdsEAD^LfL#7%$ zRR&RVA{TjWXJv!?R;RqD*!9Q5n9*Aqugtu)1bJ~XWnW;yEo5g2ib||%?Qyv=wiysSU4S<}mNZym}9`y1M=3_rJ6k?ZDOi`=c zPx7zA5i=#m+j3n=cE-72`FM*u;~!6&JM(}?+H1w?v;I3tAtnH)S03m0h39qth1ai| ztI*PN2$$rH8=nO%dJVl5Ok8gMLc>iWan6-nN?YfAsOD#PW;c@K0!}r-rYh$b6VVk9 zyCU4`k?J%Xif0(udVq!%&oI*>+0WWf?2E(5`BMLZO+dgqrPH5|u<@ET+DL0NH+i@| zW@YVAD*nu1vBBQ{2x@ziS~0#x@oc)0e%aQD7;jPm*GWGCmZ=;q<%U%SW|=;`v*2IK zhHBI4R_4FUS0&I-i{NY+R?o#2ioMF77CZ8U*c{8<|Eo?}8#9HKKVA#$4K|%bLUh-X z>ss~UpPSnk`!*Kc(B8vvpXkMf_6jQ*tMd67@u}C-8byI`zCkQ{cHPEWX@I=Y=N4BC zozHJpo*dp@excXTE|`A`SV-(vjWPl5@B6J(@35F_YmaM;2itsL%E{DReUPliMC^L| zNUAeTbOS4_lam)FQ}B1vc=Lk1msPA56qsjTDB6f%8 zaahZ7$xexPfj+tp>~cfW5T3Y(Z&VHpeOx1WeuIV~il z!;u-G9I1IF#vYcg6pU(Ibi6TzVWSNzK6DIWswQGU;=T zNdIl%o9wT}4oje0FM|!E@NB7zUZ#$z)_5|}v;oaCXLd^aqyeb~PiHE3!NUa>VA5j{ zNwL8VNx}Tpk_YEv)}IaIJFMHowvBlMY|xYI(Bc;6#yJNj0TS5)D zcR%g2oM*OSgIf!F6Q%u_5k18Gt-TG zs(oMG&O7=1m;ml@?L*mUnZFw@$|d5vb1I~>Dy_oo*BvQ2O^=|>dj_hvqKaP+G8oMR zCoFjzCQnX}(wJCi+g%!vd(Q>bgJ<$Y(5Gx(FRQ$3wU~+`2NmNBWyA$;hb{W%4{Jm0 zoCh#fB_`e11Uo^a#r$o;JU5G+K^|w=q6@pB{&cy=1mdP$QxY>9wP4LZzq{YpS#3!6 zDOLsnNTd?ozisx!U8hQsy=EAESlPu`CBhp%A_^kbkA!Op9Wxraq~(F@Q$xwj{X4^O zVnA6^mj1b^qqG~&TL&F%T!UdKPx+=eRRYj#>NFLwa*_kPUzNz^FS^VODtiDUFF#|Fk~M_)>7L~g_-0@D$)N~! z#Jm5jO>7sDyZ*u$(T{uyPts{YMP?sZ1kt93@uE2jRu0(pZY>Ylph{1iSQhM_QIDU| zdg1~|lz*5coZwqVw~AHd&oLUC7Ae3OFfsRRC(wDuFtZ$-R*Ww^GBno!NO?-Xaps#E z&6dC#>uh-cN1=c-(4wOvzcE|Qc&aZxe)@6*{XC@9kSO~~KzmJ*2DI=>4g9)_PNOo;SMWXt3@em zN(N=}!9=4wy&*GAEP@O-@V(n-tC|bEias{tt2uHbwavg$b_nB}x^9WSu;;-KKOPIz zL8mW^QZnN`p=%VPW0aWMC}Gy&a%Le!OO7P~_?A?#??5-N0Q*f%yYa`ZbsO4^{^Wx? zv3aaC2XZ(!O-Wv@3cZP1_VN=uD^;D_0UyU;G6;DMK5 zK33D-oW!hvK4F@?F>u0xuXk2+zTG1gQN#{M?TOt7-iYHq!98V7OCSFc6`w##QJT(u zX2ltDXf|mn8HFKph*FlzN*<0DsijYS$r83g3vY4*%cV>D|Eb>NWmt1VOEXmUew1SBq?>aR| zjAZqJjpB$9H~hBdYTNPaW96}7w>YW>7jb!~r{fIIk{_xO0kQo2p8M?M>B8)OLM0us|l2Uo1F_@~P{7q8oKX zSV$TjogUcqu%e1azx?bM!DV6fEP?)-@h`ru$raXAZTmTx#%F>X{m zr6(pdUiaIKO#1;_<%@^lwH@ovT~`ktUL;jkR?^(FxELD7*g5hZ>#p7W*HNCQVj(1Z zdm9qJ(O~JhBcQ?C{!ZR>qBSjfsD@(Fa0yT>v_z*arKEqkM}AfKCer5vIBULn)f9FwzDLEwPLFf-<=yTnI+Jwf8|>cy;lQ~# z2=RBD8VK|zU+5(%*1nY&MX&wH{{P8JhOQnCCD3I2I z(m?vq%hj-_0%bl7AnXCV>LT~OeAR#$>lDQ(&;VIUQu~cRO;C@|@xOD=yPknJy{&S; zKE+D=Ygw()G{PH@HgD5#x1R}JkMH>ix+*C#H!)G!*TPzC=;-NURFC{6`goL{!TY}) zsW|mvU#)Rk+muv83mdpkQ$$w)*kOq9wD^L8T4P%M9xzSvLw_O;Y{iv*Gx;x+0^5nG&Hm&`YiK)^d z>hOXeUXrfi8JykN^rD(ANgp`uCo7-uqBt#QmassanR9^sy=-k5)gpWsZ2tZBw~edo zh}j+6JhJs^MakcV51`%~;U6Ad%xg@ksQTtZLbAE$4SH|kZ~2&Fp|5sHl8UD|)f{1U z#okkq(*3F!5>GlEwcbUBsrA&+IwQXDYdF2D3UKP4*XAT38yq4ayr>Yc<0n74cLn0Xa60rWKKJ*sCc`mX8bRyX-&TW@^6aA`((-BOO#`7$HR5YAj3W- z*Pkvxb*m*X+S&rPzW&cRI5ap)uCYRxgMp^*ZV|(_!*@6j2)G6yM5YzWwsM%YyvD{P zLQBoVzJUL+CcP1Bt&&X2s=77^Zu#7u$V!U#c&2EZ{68w|5WJrY5q_lT(F@=Kr)m%9 zY5j(1-gnW|q>RrwVS46MGJ!U-&M!2qRy(Ay=3@4kI^~QUdR=zcj=t=`NVOVE8Xon- zi7&tY#j#wg4EY>T%05FuyBnH8L~=%DvA2wC7}w}aJ?Z1Btquh5G)!7_@^;g)7)&nz z|J>3{Sgr;qRz^&<)`Ic{T2(OYyheLc6yV8qp-q;NpTS)}lU_AC(bU`iAVCEI?W^Nx zD`a9Hcz9hZIhz-?L3aO~$!*;Q1Q=t~2#ca`9cl1-OA_O+p`Svh>Xfs+;J2^Iv70iX z)6z!bR3(I!OCOiHI87Qzz1MvE{MOFN!h?X4u3Z0IuxLy18`l`4kiwx-T74#YsqLhc zf(PB>I9~R{X?*sAX3?TG)pPA%CWV6h_&ou%aR_@%DN}lTYp%TWj#Wvfp&n%!p5N|1 z_Ir7vDcPYz=GV_Pn=4^3}kl+xqMB%~|=21O{ZNDy?G99JrQCFBdzvoJ|8 zco5{gtpLf{hAjB8&@)r{L;x>m8e%DCnYz*LsVHHBxQEV-E-R5gLn_qFfaTdm`MH8M zL@?aM6lILIIR}*u4}=b-ZojtYkDbPMKeMu~y$Ix~8GRRgylGUne8pjs20|(*i4Y#? zbxQvB!vJ=SWv{a%o+@5WVh#SjmAK5nEThwW@x!jVfkNGwHKw`5=cBcqWZrhaw+{IR z(qin+LPye4Yyx%Z6co>s$TG!{Lh<%w6;#&I%z1PyEdS`KId|%d-T(Mbu}!dq>PV!4 zjoie#01~zzbdccW(BQ15g zpSJSO7dEw}2%219w`kvXo0kdwQ&l_^%n?&EX&&@Y){=N$`Pa`rK|fVLQ&U}QTXfBb z@o$F2_?7PEJlyYDy#8(;FfcBy`7M~*VQso?`O?v8^QG^Tj$Eyl(9xQ;@6e~#3;6Ya zqTVd;L4xRwHll{8m1DT0Kz(N)D(Nb7?FrfRZ?f$#**rFN>#4S7*=k_taF}4hJ&9=< zx>)h^%R?IpM>%0w2YJasvHH8fWovG<3rB&<2vr{d=X&2Aor3TqY_!E|sUA2amtieGEp30VUDN@;-%VX6?N$aDH@pW9r0Er zK+_X%HqpUo0@$ZBZ4F|^o0FQWf>YM3!CO`vepiK@dBTLX;y_1IiKkx9f>@s*(^OQ1 z)iC>Pw)(BV;8+bqXKu0!ICE!M3#a)=jw|5yryJgH|3`)J($Eg=i`=PGtotMtw5=D! z73X|p7fPuk>7L@?x51LBla`!T7Z&L8wafpb=sXy3jZ<_j8DLkp>;}>%Mt9x0i$z3p?!7i+vSsKy&F~jZ3PqSEA{D^0xk%Obp&VnF z=c!DZ5gT&DZNO!_rKY=6D_rsfCRRvazrD zq!}M6G}nSVx^X9;zCwjDm6{_DS-w*alH;~2eiFxJm6DEtX9ub_)>u@Qb=HZO-_AxhYSr^2w1V`_mzXEGV%DXnSX$_#@V|DZ{V zxuL^+_h;TxnD73!l|V{YT75D^=|A8Nd2zvtP6T>y8jnu|YC}C6elUGv6zCuU-?_`N zb8)0?I-nt>{VpF_so~4xQ_w+0dURWj%{wDrF%E^mOA5Mto{=Yil&!u9r-KJaBM;UC zrJK4NbZa>E84^NIie99$g$TpZUJpD964pYKsZTyrFjd?uSs(7FL}6Z7YtRzyZsdol z8paY#)O#gW6oZKOzVlm$q0HBurEs#sntHIXe_nBvMo}5|Pzu<>7jeZKtnV*6z*07g zZS6q_rMd!2Kh{n{19VEdU^V!K1X`STU%NB6+!7?32d;Xkj6Oz<8{EECTg#~tP;A3y zpg0eI*R9u!>*$8C*|9%5kmcxp&X@fj-?uG`do0Z((@=BAEzfEdp%rZ+P==SY-V>?M zXQo?;%T&zk(63$oRmLJhBGx)@WZRp?CpU>16gN(?y}+Gw@4sACRfY`@r3V!!gKkJy2@A zaPkPq(=NA`CaROjq?z^WA1fRcZhGmfjgwQ){cbW3Hx43fhU9|qfp&plESVCKGQ`w%v4j+j#R=~t)x+3g# zoLX$XEv1P`bOKTEyL}YSiANyXd-dG+oMQ#uI*>56K(6WOaLZb0rKY5v3#XdKeA;>S z!Fo&tSdUq0<)J2@5a0S#Gt59`-QkqufmjmUZe-I|YvOv%v;CX>$>0Ba-_=N6^Llk1 z6)I1R?DY|;)x9G>LMOubOdBUS*cBB$as1IGU11D-Y&D)M7n*pKb+NpoHoTSS=$$fMIlfP!)~>Zy zzRY@slfahKUUmSo6;dxLS^g(?SWM@%Pn7ll?Xj4ZbEA1W($fzL4j0w3{1TLUfVZT! z24CU=To?aXXfmeXQ+_?)*LRU1VE&VuM#pd4&*+K1y_4D}qY<@br`x(QmzD)lGCfIB znvA>{{P@f!eM?8D&d)$hlqpCZ2>cbdmu-D)I`&!~>W){o(+JXJ~lDH@l<8@Q7xsf1yP~u_Lx2g9m)H=@R%@vRBB%uht&|LSm27R+jU+9RaJfEcT(VA7FzE`csm@i59?B(P2zQ0u_=C5tpw0!Y|KX6z2YxV~$ z`vDFi^HOv$yH_Rl+Y+#NXkO7nG$8>|$%{f+8*aeEhX$NKgm;ykdMhVzhG<+;e&My=nFG8To_kz>P!6JU%w^c zG6n>3hLp$0TuvL7Xf7@y_7gK^UXKjDIYJ_MU0ri|hQmk6Jw(kqb17{&YJSf&9A_L6 za#ChLB;f_&s4g$wXQ5a`i+VkCqtJ6;l^&3f54zOTSbtzmZUv^u-On$%7?)Aw51@Gm zJythIU4v?lTl)ih=-$9UcLDj5A{CGE7u_9VZ|ydWH4`#daZf9D%$Ovr|Nhj@%Xyu? zKrn`PdtR$s7{u5mzq)vbd!d(Ro|k(ewi8j=pA186d+{ctn@0qYdZhhTocU{I*MlKC zk%d_X)>iM{^E$(5#yTV<5*{N|p_Tc38M)xYj7J$Mqj?Xcp_kW?7tY2V))aSz@6!`m za8rL@I5ehUwr1v5!2pm?QQ7Ketl_&a;cq=Jwjls@2=z4{2sqzJdqY4=$*kydQY*d9 z+yrf3MFol#RE>Eosnd(GCf>V#y2& zKiRMcc=e!RVKuAVh1(DtL57`o*=5jS8+T>zK8lg(+(h;7WyCnpbG;J|J-Qhav6*2a6(cHV+uYG@&5iw&56;I)h-- zQRO+pcvr}qRI;yZ%PWVx z)kxg*>ggp{YA+xZ02JO^+AOGoEr(cvnnOlz-w|NF2Du9>!TE@ks1s z*wpOn{58-E^DukPNz?^`T`_Ro#5T(rS_H_Rog#!j2j3ZB>BRbXKOSh8|DFaU_J$T_ zO?-&<3knc8^KnyjKGiIGJ0&jaRR9f9 z5*RG`Ab4V#BGv1?mW>`SA$L7f!-kC?AJQ73M;}rwIprO@?u?0rTHsQ(&H1P973tb! z;|F+;715^22ZX4|MUMSfyLC-!GEozPJ|lI1CSA>ZyfOV6LO1e5z%@G)rTFTjO5?w$ zrpg%tvT>p28dBZc!PIXs+x;h)_YX8yFQW|L@A?GF#^Ye`zdgy^2%M~~tWifQE=gU| zl6}@(S2Qw}A=Mt1-S3ko=CO2feP#lga8^BT=2Q7dCQziKr>FK#f10xRUJW+= zIwiBz&>7x4JVz%LzYkaY=S1puCu2X%I7g*4PQ}H5$NOE%c|Ja4b(ZnHr>t|zebfFg zrAqrN*}W$}ren)`Z z1tnZ+p?0iPexgJ?yup+n{ESHyFvs)Xfw|DjHO9=jm&X!Tm;TY2RfS`7p?IeS%HEc} zrHr_pc}?QI`O_M85$V7mk$@rAkkZs%g@F_b$XtC<*FNd{{}_(8+DnbIVh3UpDU_jR zQmXpErKHfsg-6J17Ps3+F&yKV z$1b>dWi}?0P`o>I%>LhS?tg)8w+Z&2O3~rPyE{7!HS^zNdW_smidv^$>4^doujx#{ zUrpU;>npTus=n}DR2^4W`|nt5YaC}zNAINm958J_+&+Gg85BmfL=~3G%)VFA-lr-;V29rBYkMUWniq@3VWaRA`3=X|-zlp#QN2ovvYj zo;2(RSJrmUvZOeOYGfDCgacOEx;Dl-!;`R>wl=*5>|Wl>GG7M&lV%Khwk=i1yLYTz z#!?Fhb={P%a@SGl#n1ws2KnGt?+tA|{DU#Jy5iQhBc$N$ggo$fecbI2Qa8Fq(-mFQAH zq1Ms=N>`b`DrmUWSE8dL4673f4u=}ScP}z5Tv+#c0}k-j1!0O0hWM}EBZW_bPceIotmCX208?5`fyKHAWcH#RP0 z%;#`(M*2H?mD`?H>oZ9*wxW~L%Lq%4aH6y%?hVo55DV5BA}N@3$fSUKqj8pSCDPj< zD6aN+jlz(_lM?W#hu69Xnsn7KS|pKNC*b$6UE@RqXS}h3lfiM zQ7OHEO=DJ@S|OMhpjmbMo_OL3=xr6hEBa7N@Fm5sD{*>j5nrL8Ux;i4RapuY$nc6R zTm@Nfg{8-Z2iPCjo5q#w*4E_vgO4>V31F9=UH>U^8KhVjo-l=7DY5r0Su~^s1|#h* zt^1@NP+0mqWzk13b&OMXlO&)P_&W`2=e}J~)4q+k&Fy;$97!rD9oXt!-s+n9Ss4}U z2k?-<3mWg)tc4Oi7VO>U3fUzAr$gE(GYxMe$Qbav$*>IBww2m49zK&AK_2p<`P%8qg|oD)lkGKY>SO2>9iONMN}{TRCRtC>R_j!}iZaY>zF!+4{**m2`6^dhPf8 zrEzkb%#ENa*UlaY;v4*lQPSWS)P=rvo!9N@aani*KE?ij49_h#ZFVCQe~ep!V_DO! zqvzoy$2g$HExH$?tsmBUN0oMX%q%_jWabNyNNanB@{oCs;^VF?RsKj8iC~e)=i}uK z7_HbgbV_%Ax9PK}@?pu9ho6=U*j}Lp<9ylgXL%9t?<~AcHeTkYMQzyG3gmuxH^R7z ztv?7pdZm@Q;#yMDP23Ij#f@CWC(i)^0zdToKibYF>Bf31&-;Tahh_F|T|e&y zMe~qCtcotoud!>VR&Om(*TWYAck71uEUcb=#~hGC*3Ln&_SIomr@(i$v3t*(8U>hL zbfm7Usjn`UI(Ta0sX~t&Q}R~DCAO0fCRcYQ;u7@v4BW7OMml#T?jHDsnFqnl^b$kD zbU$~2@WWag?XHRxemWa))-k++YqCxE=0SBY^jg7UP42mZV+oHt}hS2uTssGlB)HPtVZOzZ1iUG!6t&Q8S7_|53 zecpD%GlUE-sdi|06K&wNK<^Xt*NArz40idXGH^g9-F*S*G-KwLt5*tILHZ+aI1r;BcE36Rz^4=aof0W)D%T2?zgL^Os7xS88aDdc&UChQ8 z)FW!MFUQ1pjwIP%PR50}k5-_q{S~<(d?meRD$;iN+}VpS`1-~WOqSO#{KTcg3^dTk z_bf`L=t7$;pVhhM>}_GiO>fT~seuWkw^?ecRndn(AHy|jAs`R4aZ9*^K}{Bi+6cb(kuZ>sh!EM3By_aTyAJ`pT%p{5&iGGjJ1`} zL2GXI5kwUZ2DJj^`2QrF)fSDln#kCwxW_B1Gimu$|6VLV(U^CCj%OzhufNgQ=yV>V z1>G-+`yYebv+W4?q7ME={)9f|FXtyKgtd{}bNGBIE9JLNco1{lhKo!P;qXsWPy6jO zt9s3ai{!v}rZuBTTALF&|5{O>2ETcadVe!MowHy~htN*@;G-L|tG}o(iDC?{Sh!~q zZ#3Ge>~;YgHieHZ3RiI!EXs^3ZLg-8ZadWPX*f8^L5uupLF$4%ZG6U=f|Cx`GCqA} zk1co&ccMdsf)niifV!6DBR+>N=^jhxA z$dgy-{=77`O&?>^?DB_!e5QVzWAgeV-N*hipPwI)^DM=UNf|OqC6ZjtLa%D{H{a6G z>lZ;{&<%$)Hyl`eVl5vCZaBNKkY{oodit@#dp&)Qu~oL4u0`zE zs&OAxs%{2`P_F#;L8`3n@f8xZb`*w~x?gj(CyFXr2R%?&9c%i%t^l3%uf2}d=Q!JZpowu|$Q_}xcq+^E3QolZJcJ?oe zo7NagslRtUq(*srQIoBH=UG=Nhkb9RZBm0-ns!0Z?1LEx%Otwndu)iTGLF_0#`xP$ z&l@e>pH@5+qvXnuCIzj#2a2&EWzn(u4HGO0=dsK0gNr_t1)SGxb+>@ElJrM*S5P-4 zc9!l*E*5WDm-wYTO*~jdA5d{eW$hnvk9wz<2m|Y}Qj_?j2u3 z*?&1jB49FL@NuDNab#K;4T`?_5eTHV6n)?u|*s4 z#fzSokE)P^Me0LY`e&`2sYNm`PY1fq-uX+L?_;CJTHDVo7x!NiFNs-?n70-yKzlQI zq+P64`)Qy5yr+=DR}ZzeE-qzGay+M3Xe7u`qASXPWkg8++GYgPa+!*Q>cWq|gRq&Z zpmCAwyuz2}00+P*?>2ICPKo>BykF|rcF+jsVg5HqS*r<6MfFR70rtopYyq};H&Ash zvGlh6=hhd8H&>`=4~;X zx&mxdCPM3Rq1xK6Th9eW2$uE9*)?53l^P@FWp6UKOg}h7hCPCzHJkfN3%&F(t>%hN zH6IAbB(OCbhe*f^w%jNlPtijyret@b!pP=^^nKdxo%CcJmf%bhi0#*eB(OW`3lw+7ry+jPQ{Sycw`VHm^CM{jr6iv8 zhh54slof((tlA4{QAzZfhA~khyj>wL%}1p2x$?~ew>>j~?pR4#Bwf?C){oBf-BtDz zqr5;@_D&L*;zUVd`a~QQG2v{eN`*xzLvEGWtFDAjLXPL2sDuAHF!>Tslhg~K*E(pk zSzz2P>lV`2)fDe1H)gcFn57%t=CD9uae{^0u9H}{!SNGSKSkKf={ce^##93he2z%9 zJdarz7{>`C2vwCVCnHT zf$I|_M`c+sY%*qE^s=j%Rmp+uE4W^^n(S4Fx1B85rrfz}*!MMHv6+cEvf6<^DaZ!!+B%y_ljJvzq-3nRRV|}mzTjFiP#NxB+)OL zJS5LhzUji}wZg*e^pC|$b}chD1OBn9QcorQ|7u#71cxnWAnX4*$X6VO*f$FI@&t)) z999+J(wbjqapZx9%YWRlYSB8NFVbq9J{1M;9(hG}-_qmkP`%XAm3>$)oI9mLwcz@<0?j@Px2`EW z#bHS0*<7sOFlG-k0ZC2E53^rM%~8?KhCcm_hix)JngIk0S(SI!0|2AON~V4<$M%bt zbSA0+J+F3BnT~ht(icV3@BA3(xEm{3(rpeNe~Ep%bhq(Nyu?#J3T&?Du@e2FBlq@B z-5_<3LqQC@g~6ebMDVVRIm)Q0%rn&WlHTRC5zCTXQnG(H=`v|X>+m8uTVyKK zR8G17@UGCMlbu$fR`tpy$eu;%fWQzp`wCY*#F4DvzkZ7*Mo>9{lA@OBxIJ ztDK%JIlhloK$TN|G$DM}Ce?9?b{gaTpho)DyP*hKRg6O%vN@UP)n=nl?8Uhg3l-S( zwEh(P1p!hEw#~C3tW8owz*3`p*@u>?37F3^;(?rYwS=^LAM=8nd92hBNSjnYt)u{wJ{vN5gM=TAy^isa5*` zP!jKM%b0Rk0({5MKE#LT5ZGfB zZ1U-i=aRrngt6lQDf-#xANMaMPg~d9HZTcry$RC&TPY7{2IW}(w*K@=gfx`l7j?PT zx6i2pUPxZKI%DXD)kw14mt9NA7kqg>wQVS?YX&`bf5iVq-F)iuDo%~&Ro#iDObt#X zl!R5h^p&X0aYnMIe*bI_d!teLoyN1!Yj1@w{pr!5^6{JOu_#as>a>?T+PLNyOeB`C z83BQ+p1kQPDUYQQ8T`V%+D8iAJxT=pXSgj<>_`Q7r5w8*G}hPBRCE>WFu3$D)bzw7 zOcH5R4GT%ASh1sVz%ovNCcJfA7jmK;{4lASsGWs_W=IKBH#2!jHp-gH@R`%xiRYb1fSN-_j0dDH;3p6oFqI|IYV<`r%>E-hR zs5=7-++u&f?<@Tm;e}LAphxga|JzJ*Xw3sgaAWIF0l)ORv^DiIUUmD?$ z+OobAY}ECFY@eJkE3>0Uwb$u)6NDSToEoqa+Z}?Vx3W@_)copP2@WHr*hhjN+srxH zg@0-4Q({9B7&sdI@#o7$tIe4Z!&&s9SL>xkkyN;Sxm^lcIIK9>&T9Ogxgbb=m3e;FGuENP| zpP%?PL>pVL9`ktZta$m%+S@;_7AT%KG8v;f4S&x-r`o4wz$4~8YHMJC$W5c$H`%35 zYgp}`sx#}}52>(Si+>qCjnO-JQ>O=c_5m-sU!JdaaL*#`?DlG-_^gg5;`f_b`ss-; zCa%MKZOyaO&JuP1J00y1oD|Ts8uX7zpa--o?V7qaqnlAjbi4*Sa;&pbwo-bZARGi; z%}=Q7q!NEw-H{TLn-)O83vNf5HDef^a8yQIaSQjkj6xu zkfi^@hNZ&u_{{wolt4}xLd;L;k;`cEMCb&>wrC>tzdbe!p_TvYI~)l} z)VZ+mr-Q-Ys72UI&E-~D5s;(A zO9|*FQIbrO6)$tFWDTCpK35H;`#WAhyI?Zzep7z)1->4{UNh^g~3o7^-xC_r5z4aG~DiO!o*ESpMC%HI@4@@mATy z48OOrGR3wb;?45C59tklo$~XK<^wOoogf>{SK2D-_--&>d)I5?eflcs?uvIMaXo^1 z{W^;RAA0e8e#^If@`aA{cdiiOtD)gd!(1fxxb>|-zQow@ny+sD6MN{?w+sx&f43^m zhk8M_@l7j{k3-pM&t5rDR<%>fpU4F%j|26zIyOxB8$yL}(v@y5-(pLgBVAzdX)-yJ zZDSs@%x-){n?fbZ)=qWmVN3V5o`7p#6l=hj;x?}KyB!@@eZ>4L*o}y3ZBBk~!>APk zfCBC+W4(hWQA@H-sHS@d&+>&J>-F@{SeN4IK@!`IC&S zU*?EV7WAA`hBM^JO(f_MCu!&x=6J{6w^5uM`{BVyX+dxanA&IjGiAc^x}Bk6)q5~t z{eUQo09vYS>SRs3^?nubvU&^_Z+~UQ3$}-9{}<)yJ9@*|w#I|`(bhOXr6TNDroc|u z2lC@}svDxrKm?pUujVLQ>f^xjvfn(*#JMsTCx)O*rZyhjCamq+(#(+CNCW%)bWzcf z!1BKB!A2c@;;&zp%<*Zp*E$H##|$1{?K>^qYVR9%jg!$1NNyEDA%HD2KS&Y`K^@;+ zlgP!aT_n6An_fSSt>4sbLoBvo=#-SHOb`ccYN~@QR~Kv?(=l+q}5?!~j+U8E@czYmN1>on?Fx z{gw%Y4wPq{o8h-#BzxVFd}rBsv#&7YN67*aWS)T8w#b)3H1tj3U3P;{_s9(nlr+_p z@itGX9!txff(4Zf)Bhl+S3aG#p!*2}`WG7*wvb0XzvxA-o<@(EyCBJ8ZRm`X|RggdAVVj-?m|G|iM-R3KigYd?_HbnMqa*SVGLNkn#_ zOt8u`$WAtw86`;itG3sL+WE<1aL8k1c6CY~P2wbG$imQoOj_3Vi^bAYB%HWq=H*vr zpFVs^D{QJt*JN`a|^LrJ+Of_7r=l$nx1VTnBffLqP&$Nvu$c6G*$EV zE4FX8KkFBso!-CV+d0+@1fnD20-d=vp&>2lO)akDk|4`TaYpVVt_>qX{mtQ`fvX2- z4d;8|`et3odUCr__1!Ou+;g){Ygc$<1#T46jIA~e3cY*-{rOn3NlR^E!yi>r-!F(K zM}`N8)DD*IkFGs+|KmfN$a&Ia!O^*{IVD?8`ZPx!^6BdA8Eetv8OR*KQ#Dd&=C8xi zR0C)baBH?b4Y&P|UBe)=P-2BIZNcp7kPRN`gUrs$KFjjn^wxS-{sHS3d{Pz}!jT|| zJ>vA0hpeS~I|M4zF!ev)E?*c38!LZTZ6Z-pSG{qhz&1wk7Tz~Nmd!R_!w7Oro&;Zm8y3@@+WmMGV=A`6jOy>oc zcJ-!%7TC(gZmk9Qei5){4u%?oRT{Rm>IUh!yT1f2pF!yTQ2_vyHh3mD^V8u`W6#{% zR|)6V9O_g#i3+LCE6-gAxRT1as+;| z)aHlA5tRD;qtMG;M4kN7lv=_HRvOQ#3%`quXfpD+(BKX}O4-^tDl zqPPq1SZpkTz4Z7HBlA$CzAn-DCG>)M^sp{}iq%HRC>4*HFR?zn@yW|QD6 zz{eGm*8&85gV$;ba+#9N_0NBNJgo^Kh3me^E0`I|@&mscxG-&cr8s>(ok#e;!2Nv+ z#rIf=7P;_{j3RMfJb$PedN!5qbMWayT$j`kqvljL7~TfZ#ul`tX$o>wF35V{XN)Aw zZTiG|i7CVGYr)Cwr3pfl`d@iCStLg#1Sw=)Ckq`6*7~#MXj7`o(*0;C z!e`s>TEBur(r_)~#;h99E^o9S#W)bKT7P3uA|k=>`_zbaRGCQ@E{TIUq`e1xx{yXe zUfZ(l?{RmY5=`shIoAv`*?K}M0ryxZncWrYAMOy?{5FjIqxC?8tca-x?bv_$mk$*< z0X$qc-0X-MiF~0aQJG-hE@~%l!*d~uaSi@nnmvFt>Jnfw+*zIK2pg9wM)8y}D0N zPNf6=Z{NaPnTz{jYQ2A#2q^IqcY8%k->@2^aQE`i6JKdwIFC;$|5lTse1oV#jks`F z0n#pa#~zpVchVrMv40|y3F0z1VSf2 zJaZS-+?z*KBDfn0Nx+B#XrrXXm3U9?e@4&W+e|%B}`>W^d=^Nc+LD7sO47P_D}=+;irQMa(AlHO;^mSq)7X0 zobff$%34@P-KNj&bj#TX8kJ_2uWIPWX1`#xQySjxD(Lp6K^f+A-L_rP1~q6G^=@n#SDe+PqTIE0zWb5ZHZgo09|0AT#HlUj{@ zUk||6nObzRin?d&DXRLk!~Vq-F0pjo)M2JOx?nH3Obg|)i_6suEPRWnMDI9h2ak6u z&(_-aB>dsCi2!anN-$Re-h^z1O>e5bPt!tytkyw-F4e*@f481=o+W(t?rd` zbE&#gkouP>>~bp7CdZ{(vYDh>PN2+g283F+EX}B;2VX*&FraAwc?~L%qG=GlHEbL@ zDfjq!qjAKwH0GMT!i*Mt2LBFAACsBS`chOgXYfZm9mxQiJg*e-Rp5iSq=?H~x=3D2 z6Se8)`dr;(s^|2@4&S;@Kl!EXnFrF$IKL@&fTn15GSUNCE!z97Kv&}5;$0PTqmej7 zQGN?eJ0gCl*0w`;!y#qgbYU>vTLi1YgNB&N-TRbF*rV=0xnoynZbZMBUuo+%E8bK3 z&;Tk;T`mU74-Q|)Yvk9(*$bJEOtoy>`;-RX-&tv{z2b$j2~Cpy)&=Dj@len>pVBI; zMlP(fzF&-K^)^r45*xPi_lt@!ezCykW1ZnIk6iHbJwl)sb%+m~AV*sxfp>tU$KjP6 zn?oK4mY7YqLKxfCvhhE8RKDO9E22Q`mP6Tf-b!iAUYCaDrlo@k4KxD%O6Dm+=7wi~GN$(JHQKBGyitFni3HAFwx4`bOR=&hd)BftI z%^cERbS4i2)_xp>C(1U>hS0_9Q0*hev&_kC+SPpQ-mQk6!c&xC0zZr}Bs(k*C}?Pv zW@idgyF_mM(F04!`xx)o<6pd3RJIX1STm!iW*kawt}VMBZ_f9?DYCx93f;DY-z=@E z;!>;Cv9mF7+;Pk-qfe=Cxmikn*_kBwgXRPgpyKZ0-Av*F&;JGEFDQ4wkbvl>) zWD5(t!o*&bTBO;Sl&Skh{2Hs^A+?KB`Y5J!ltavlvQCqq-;J&!7wD}0UmeR26g27&VPgCwSg6W z_bbnapNn-^%RAp_C=0DpVx|aXIh1WPp4h;;@arMVXSzeSXU8MTPxapZgOgjgn-$7X z$&-o333sL1Y-TnzmXo>c!+V-T9NeQq&Q_Xb#*Zy;?y8fll5)(ykau%6EJkyO2TrGk zu;SyZ$pxu`6l#m2{X`+<4D+SwaXojpR%J-Ql!$CHpOi4-sH}!`%hta3H{(!nS&uoo zE@d9WYO5TMS`f7J7n{<^O_%8R^b<|6(k6t!eT!~+2>WiDRJg`dyriL4g5|kp6;JCX ze*X*lL-KnB?9i;8!uhEc0LoUsI%aM;rq^xsD5;l-ZEa1#`|3ZEsK;WV6QMe_4x9R1 zpXfT@mNOOOl-#QhCa>v@JM!R_Y`SiyT|b?w_VV*kS@i2Hq$l}U`%U`(rLZy?T))*K z@QNdGS@5gtmfi6Py8IzixUwG#)OqM^yW0j#vl1D=nS?q)?{O zDbECi?7;d@`{F0=%JB_{=zKqi=3}nWfiU}?=*99;QKf3n*=4uAiLr*uEZwzHr&B5^ z;ly=sbn149X9DzE)C+a7Bd+f@vP6Hn4ud}QGdSTN(@U{6J6kc0EP`LX{z6TliHo)< z;ZH~0L|B|uO5Tw+L2@*W23*m3HQYls^s%NLtZAZN zMooCJGx^1gX7p8<=YsiX>9ucxZwXLpeUO*Vu6^D{;c9W!Nlmcp;#c{m(4U_c-Pi=bA;CfJ6~QZFN3L=b||C$ z0``QNXHMuVDi1>%!)gnSWDAwXo*W2T1GxdhW{gyN#ot7?-J&OmAE)iJE~ZM^pnPsV7k^`1d{x`S#MVmfn^_{LPqwf`4&T=ow}#-~2{~ z@|xbL273qlmG$Fl@uZJmKj`(z8Qd29`1NmeD2w3jvBM+q-8ws1S=8EZ+jgHjnJ!A4 zZF=x_te}c{!~Ym4kHkM@Nafy$w*RdMz`6e9P=1{TQ{EsGM2QgAwjbuO`ovSYS1NPL zvacSpn?0;j-(%{MHBcORTymEMVbqf2z2`F&h|Ll$+$-Xn|1EU$uR;1=WJsUoCf7d= zYovF(g4c59-yRRiKS-aYAI|m>w29N%rb!v3Rx<6RT?Dp4HHdLOozhgT8LTvTuaS(c zKa^$34-_S)VCGsBp#U3Dk#M^DJfnB)#6rxf#Dy&fvqW{h%uV82>k(b=xc%_j>$Y^^ zqr>7W{~4_P=EEAnAqMGN0Yh=0Tg>(2hn!MlKuYRNx;87oVHs%{b{FkuI-fhV6K{U;0k&#(=lPMUk>i^w_PCM zzXe> zwng)O90WS$lDAtk8JBozSqkCFe&KHo+O-T`~(oQAUmoL1vsWrvmiG`^4!m2@6U2aMWIaQ}F z^vnZ~^7xz{Wf{8+ELFDX`dM}ud^ zV@ivqB$pZ~7lLFVD{Q~9_%uW5a>Iq%WMX+qU2#LYY?>s<0#;D&U04<5J|7&(bK=f8 zKF9U(K}?>c$I@q|yZY-Up~Uv*r)XR7`k}g(>(9d2kYw#F77FI?MhC53wkO=^T>X!M zSv~f7-Jj*=g{J1B!P9NJYV5d!owq0fKn7&w5&Q%!R(;hhcAQkG(Cvd#HVDk%hWVY@CHTFx$>1*mJ4aapQX@dJC(X}eCxU2c{xA~gNrQkpXXkG#u z*>XuUe9@J%Q+!)Dge`bDbS_=tHNHaqz~G*p!oZfmBV0rm67ncf8r-64X8>I(<%Fm7R@gIfYsGvg%fAOS_E!eO_^&44bhU{st+?3-!@ZZcQi7iqP+NP zU@(X2d4|nvV#vA#{Zx<-y+pCBsGyw0nU*OGa}JPX>19kakd;+uab6d&2Wg--oB-%o4Nw=L4lR6&$)0RhPG?54n7+xx%Wq%*~{6V*iXo zm5NIo?c#!YhS+g;!xOs#c>oDxmb|)1MgLaBQ#;B5H{;fjH|3@_qwxwm&6E#fg}w{7 zu;shaT&FI{I)$FDiDk)@q;11(bw_>k?|Di$tmQ6lcssGMUplJXAABc7JZQKNUMb{+ zXBULss^Ib^QRMPddhRQR0LmD7IyvD;rax1bcS61?_oN2ElFOJYe?0$em+;OuJ>NTx zIIGJR_Rpu(pL&0^Ya~(kH{(?hI+gW2e;L_&QogiH{-|egTjVMPrHpK!j0EAK%ZGrm zb~cX}m9hC|VppBX+thkWNwTQKGR` zYZg)vCQ>#h$f7tZ&Vt`g`;K56^SXec$JN zu8U0_4s#HH+ca!#B>b+`F+hF`?PcXMt$COy?c1O5t+SUUMHP#BfOk9X5jZX}HkR`^ ztSIduUQR_GajU%_q6^ln1>?%9gJ3-B9aME?G-pi9%LeWzmn1(VDw03s0==R#(`E=d`&@sL zMKV-~>52G_!I;f|bCPfQ)b*m2X-ltAshuLg-$39Q)B0B5fY`8pdwC*qoGkmqHXGOC zF_(d#1TEfbr)mmXrs%o!V}j4n%Y|P4>n{a<&;wh^iyYiJr zw2HYayO!VPn2;4S350z53f*VuUj${#4OgCs%60Yd4o#_Sxuo{QXYU=K7XQf$mv5fB zymWn1TQ!0ZhT+K7FqR)wba2!cg{I1ap)Dn8M6!@`vb>J27MtKgZHXmNEduEc0^#Io z-H@2@@tBtXIw?_olM(o~=%LN@dKa_r5iQarPI4Ua`5#>&#I9Zl(7LjbcD`hTx+!}T|GliOKi$rb{)W3PVg%?DezyeZfalsa&wt)f7h zM}6u+Y?fQ2%@Lh5@h?vH{~TC`YTRCsD=y88t7wl->}u8IoS=;MfmWY#^|Umt*C_2o zi>|8_({9FdW}#N%)t8Kc6!kG4=bE*De&aARcJsQzE34bvTE7Q%nJbyY&#hgeK4gna zog47hQ5U7dmg6@s*;gHvOYd6x*i!@UdXG|tl2JoPUqrg-j*iOhbD%|e>Fl#7`HqN7 zorwZaaq2t4dF*rYRD#0_IfPKkP*icv$p?KJv47IQ)2CmoXXvOrQfIXCKbuocgGKY2`cD_R8rLq> zJ|E=6vZ?HWjTgS-S0om;@TB<#eE?JzxZXSlCcB}g+1K=r2rFF0%{}wq=Y_{Hj>qXM zSE>ht(m!Qh&dq3Xcgj-x>O7X>o4)EkV=aLBZJF_^D@-V~)IQBQ$Tz45P~8I?1D4Jr z>XuY#QdDLMG9|@NDr=8dk|-h4#H5;)bEZy+AzkuUUcM?YBHbt;uOiM*vH6 z>y#ItX&l`~Aa5dY&uC4upb#PkCKnJ2g$_{(+Adk$@NfK(ZN*A zilXEf$14c_z=<^TW8{m8IWiHReQYJd5-gq%zlemC)YLiir2chmJ?gazO;ir?GUAXD zo;vgu{~@F|b-f)!<{2DH@6!15nAG5WK4+%uL&Q7#M*0{RJa<%_?@|A4hfZToN|8@| zb5y$aZ=^5QC|B`{Xd^IYVe);3Fl;ag!hJ65PAJilg=BWKnRfZTSP$m4POw+Rq52tAnD*&WPd8INaLwN!id zcWTq7TD1hY2~JM+CsQ%m9?vJG)pieu;CSIJrl?)+!@~ff(pSQd?&K#82p? zXkm-B)VLqpTDz{&7c4}Ye}L-2k*#}!J+?-x{*DW-`%drK4JV3+&ZEU(O*cP^Z1rn} z@-Nr zKbA1Pwt36uli%we{#u&v{V9W&po(Jto_NLvDbu0b{J{}&vTc?BsFw^zfxsxJP}`iYChBl9x?Fu;U1Tpa{HPo?DDW*;?11Cj^4}q= zTA$7>>&)9NnzhJ#f4sYM$o)h{%%nt72eS%eDp)16p``jXzxJ{{?Qk!0b$7j46kOkD zSikpHmHNX-dM3vVMd^3#^B+mq>cW@)*2HxFffAXGAGA_f4EvPqvz&{ySWU9Bx%Cz4 z5B@WfrM-t0rZ=Hh+8>!a87TcS6bn)Ps%;UgPQz9=K5+2rNHc3ETi*@M*J#;V(*rIc zQ8qq0WjWoMCdYB|_D2dnqUqxmMl#TA1Y&KXOc^iN)}A&9{BK{yiyX8`W2J$s8oiK~ zRk|9Gu-$$eepcBTVqvNmuen*mIlyhw4;|fvLHs@}ky$8d|M;su&@lmIq_6M$wO6Ou zY%RI?mc!+u1&n#R&TV#&A?{1fad9X9UuR9lVTQqyKe+lALtsY)Gr&O;4*sXqUC}BO zm~tZBRkqwMgyGrnxj*+cljedrRkx7NbRMV9rJ4rR`PTjfgzh=sS&pw-a9+gl7dAJG zDp;P8}D6JEq`+sX>4laDk>D!4X~cjGSnK?bO!d}1gAC?KCQ}iQC0V~ z;gN^8VXEg* zIqQn6HET-vO|aajRqn2^GLKDE!DA&hLinGs{0!Kh_@v|DEbI0&{Mk`b3lVYGT(_p0OewycCoFTTX`g$x0X3qn;wAS0pCqL2ZdRNpeUb$2I9LVP; zs>^8U`W6J8 zb4zRvpQy-Cm*Vs*{TigTo%w?o3Aeaiv_S7|MTwOW=yE;Phj#r9&nfH)Np;G~fNZ44|CX+p}ap{Bh=U30oG5#kZ=h zt3euDQc3d#FdZhEhLgeV<$56<-MR4qJltCNRj0;@YMO=1scz?b&8efc`g%=r+vO|t z)hYUAp|AQbdgBp!b?XK3dZ`lmu_3R!y-(N}7kgJb0cE_{aJR|1wOX%pO)E+9)sA`W zUjDU3FU=N-rjMP%@rju(tz#@!`nj&3OvfMmwbMsFXio|&w!Zn{as{_W2^nSN`E_|L zIzc3hG%x8qjZ|hnxPX!jz6``*pgNFmAB;fwYIQBxw-xq)yCXX_Nw=aAZj-t5Uh?z3 z4{~OidIa_*7QcMSPE`k$S&DVtT68&%{#7pF6eZUU(NAqiMW38*PiSx|XfxCGcD|l2 z69YBh+FP@bFgeD|X7x*&%<}CWU2Sga9Gw|*m3;D0g$l0?lQDmt@eo^;CipQh>wv!r z=d#+M)t0?qYGA-*Zijq=xN5}caW*+KhQaAB%>B_c_Ea`JQFHS+f8pt6q)LWI5ApzH zSCSnK0t?*W<6rXge^vH5I_e*IY5+^WtM^?nb%U+(Mq)Y}`)jbGk@EG5fM-eE_{OrL zgCPlSra9yLR8Isc?yA>xrX`7SN=*e-Y+g8qQ=fzWHsJiF&<7xBz z#0cw18`#>o;G*l0aRvtnx|>*_=>N%Tc^=dwi@4Mxk;DJ!ZtAnoFs4AcYz2S09~Gb9QmW!=lT7%tT6989B!f|j+=Jg=ZgAa zt?8=LfAiO!Y8JLRV(Ys0zt&+qeHHua`w1e15WMSuCu~TwRzYS9WfA@j;^G;~my8p- zN(Hszs@S(KxuikWvlW*#jd#M_+c%=Fi)&%2PtV`;xkh7FdD$U2?!9Wn98wP~P|A(Kx3}lyXRDP$l83KPrc(VM%-rHP zzl4zVzdS{KdwbsJ_2Q>smej^avT@jJgRnZy@WtH_ce-7n$>Gr$FP)1a&Qgk5ar8KU z#y2Oh;V0LO7~qe?vLtH4m0cmx*Xpd}E8}rF{%(!fKKvtRZjJO<+iz4ku!ERs3acSJ zEz?&%Iki3t63weWW~%hF*D`G`QH|{CU+ZTA!+O`y=UoQ`t52jDOxaKhcRpKB{Um>@ zZc6RRx{RSH_Bj4AH-?a3>j0FwcO`HvpGsl_6Q8NK(;M7nvhbTwdz#;D7l61Y%N}gr zRw@Yfk&bIvJ+R~s_f(u)%o;9WY>8J^meu#(e(GXfPY9zz{Jn~scIjeQ& zgdM_L8t2N{5*F!Zq4z{X)-L3CKR?z^#|v=KFp+HfWzK9q&Qkaj$b2Jf`n8{O`kH&l zc}ojqY(-YFNird-JrO>{by{37HFQM`l$`-%v8s6HTg&KpBdn|C%a_rDWF07QFkqxy z+HHFBC|GR&^qvaUE@+s#$1CPR`nCT%E^4Q5^F^zzWJwQ$;@JrA;5!{{Q z)GbUHK;{IZ_ZM$_m!4b#<^w}!QYw@d-yZd^x;G1t-973aZ(1uoWuK}Klo1)&nE!-3n zOtI^I-`zx5@SLCeR=|v*6;m?`px0_$YZCq{;{hebUzRGNv>|?&%{~@ z;zlNkdlwAd{r%#ngRxpx7F6l@ zY(g_NRYhfq#$MHO+J+boNtX&AW#{;g>2qSQIqL7K(n9RkpQV+ncU1(xTx~Aa2Nj2E zWEsik`3rU(dC9N4SHM?!e&2w=R%eBkK_WW%KS0vGkmQY`To5CO%uw|B^p5hm_+Ls*^Wq@JOoq z4*a`?g6dcc+M0oc-1OiW*3*1<-}BG^czh4Mhlv79c>&sU&txfzf;aI$NJbEwhI1uE zUV+ZYd{(^Il{;A)y#y5)%_<7>xT-IQ+?o$?WmzrLYUC#i}%qL zms7{k@OM=lFX!G5iVm#L$fJJUm0td(?|e3@_jiz|lg97GiI287EZ&b}6p*{8M|9>~L`5wx|Yd&%w{nq*@0W z5Uq9DT`0wVOamXbzuzu|Jn~QOnnwtWNnJLvrETafr&T=dp?p__uKKOVqs$w2ex)X( zKizZ_xXv@a-v`grS7~q{M0*^NqYObKg><^NufO2{9EVgUNZa5<6!RF?sqna~GWzEo zw6H**Z|f&C20xefzCOBPJ?X=Z)YOKF*k^(BoK;;KO_5>_IcaY0x^UC<&(*nT?~7RB znv@b>Ml7n_D}R1ax)af~B1E4O3E7az6thkV(0x$C6Aa8XA8%It&%W!Q@Hy}1nOaNB zkG0deFNXs3z2$`wg6F)Df%NLFl>RHtKF|Z#a7xi^XZZL83+>;489YPcCLqe&^QDo> zOMBDVZFVBLcXM8z+)3{jGciegMuIt>e0j~HKk~J+EawvFu8Yh&_q$tj=aUJa2ey{8 zHyZhZDh@Z#N5^v#%42^aUDi2-u0!Q_(6bJ*0XJ7MF0H|RMt0fr3T2X&rLtA;(>X8- zv)RO_LKSwh_FOMcfREm>^S^tW0Cg1l{UJTB`q~b+lrG^9~E zm?NJ$s3ZE^K{bGqVZQc1I_|$9^uCy29kJ(fS!fX77Ny0tv;I!gPMRuS$ek#<&_d;U zRWx6QBe_(9cZa7Acw6B52HcufqF*#?`xmI4ZgjFR41nkC3XgZeM7lZt^A=n#nY(zEd`F@(K?W?!fHF z)T{21mn!|6lIT6babGd$Rfc-1J?m{f!70rXFpZqo+n?KPtWqXCu#^qwAt$VOsML)w zs3sepKM`UWzLN+i#jl>EPW5VcdEMqdQDH0-a|@lhlYZL7vwMv1w2vIX?U8!#JYSpT z77v^#lbY!452khdajiU9BV5km5p<2*%5vQ=<&p!^x}n5s=F7}eSWPWFqVj`5b$UL~ z&Qljs>WNA#yBfJwKGtmTppiWZds>nxp9;0xIsqJ<9NY2d{rVprzcB<#*BDVj4P)Rq zd=&FfSUYsJU7=|N$^H4fm6i_p*<~@V*J6aWDf%gXBaFY_E8M+kx^!ZaNyW9z+-kVr zUrgLc7ESpoX7nF6w!n%r;ID{QXzUKFiMvN+N3YF+U=i`r4E4`z&e@^@ce z-xqH^x|~E{xqbu~H)F2j#hl>dLM4JSe`ubnk4k!n?QQ9I3=Qz#bR7bpjl=HE^XZ5w z5S(#@o&h&ml_5ny#Z@zk8*@dh}OP3y~S?ejxH#uS|} zd~!fmmofYof@lVv+X9bmT*^hJ&Kbh*NrC7vcUcTxbPL>E zH*&)}r~AHi))2g=Tr~YEJh%*Z*YBAMxv^RVe5<8;EJge-3Tgn0Mpzk~_=f0|&wqzz zC#`+vx<@MMqci-$no|;{Qq<&U7PY$W9zX?>>@^Jaxa(4}H(bU>xYdYk&zEwh)}vEv z-wCZ(=CAGKoblJM6=AP$Mxs`ue+$*LV!4e{2LU;Pm=+ z+FH$rX$qia>bz6}_{(a4QsK4hVLN}u3$BQ;c6v^g~RehUsLO1>|G>;eeC4htJB*J1A02Jjm|cI<}Uf%&A;QDx%afpAgp9PmYOX}D}-u*;IJT7EF z;f2{7$JpP+%5vj+f* zI(!23cP37(Xg&ph9~tHoQlQfA#|We>)PR#3 zhxY`*by8&aTx)kHd6*eMfUcHHsb->)_#36H)4YiSo~e$(MG$N2=kKod2QU_dI(vod z!!(c)mQK!BjMR?q8(626rm#kr6Aa~NXP>3ChYBTbSv%I@1$(1T!myM(rGHSa_5M-L|(Y(`_%k?_=rGoRP%mF4>KJ>_y~KD$g=kX0}u6tlOtFX^a91Ta*D#}@rX8CYa1liogA{qH6>@U+B(J>yQ=o>jz zI?3fpcK&M$8bSPZ);z8ky}pYdWG)#qF65NG*FUhq zTu;o#b1Pa1Tu$f)Zraq1RGE!ua~>~i#iyuI)F*MT0pRoa!rOUV8HnrO3=wbWP2M6rSo-pSVivjpVgAI_49V@ezYO=Cfv+${dVW zvk?rbwi71~Sxr^~4X!nGQz|40R0}2>^`t#erEK6jFSdnEjn8`81nTMk>w;h3dN3)P z_?iyp5ao5n|E~JW^%i&2@MlYb%rJ!8!g~EQ&4vv}BVStD$sA4(=F`!S5#dc(`oU8-BN=T(Du#8DZu$$yW%Ixmz5P+Y}G;(#!wuhj9x#^#-yT| zdY7VrT;DJ){Z-!jM&G0dKh(?dGrklXuEv`f>9%;}HsPW1>tvyjgX-Bb@z)?!FHqya zK}yJsBXCjX;A(zo1RHy;aDk z0P@_oF%PSPAZF|iQUcK=-k;8A=&vPb7b+4A#5QF~W~L?6kN|X_u(2G$#VVwp%mS{1 zV6g{#NpCrgy~(xlzWqrJ6b*^+^SVfc>uci~F!g!vMtkUr-SOnJpunbEU6B5@jLH{> z7vIGr*Idbxer6gH1JbJSNrqy_+TCg~0n`lyHg+M8R|r4t5rVhP{cAU0I6YnEI^!LEEFQ%B62XW}CU~vU@uQ$|v zT9Qz%REJ(PZjDkeZ;(QK&=k;Tio_|2fG6VaL0o>v_GigWgO3w-yI9P6T!_1%6ajQTq83nz;V(o(fHLkSgp`^l96&d|~1G z4LLy>l3|O_U3!B$(n$~&lO`|ahmU1W3a)8eoHSlh?HvnM$a4+D4q1@8^8 z(1o3p?Y^Ed+lKY_K@oRhrByNFd-uvmbBg99Wv-kL&_)TLPH_%`8^Zlsn8H4*!3=>WH+@X3-X@M*{fgXe?h2*Wi^ zD>#?I0qC6L$icwps(Q}goHd#%pPpO=LodWwsv2gPFBYSx4ie1vl-(GT)GWCQLrn%T z%d~{Vc39S0ANXj|g$lm(1%v!+nOLvCdXsf+{-mV@t3b}fZxV~zvp7T=)%K?Zf)p>! zRrhHnbsUSvnMNP`U9dXA?KBI%#=Ol$)CU?W>v2^^V56#|VU8YsoGye@H%X%>h0@=4 zfc-}sH@x$9fl?#wqPQ%)FC6r;4l416DW{9UZxBk7mfpip>i2Gt+$$U2IEaf`6i4U& zY)B0u@4`$I1`Os4Snj1I_Z*ekost{OheM0aa#D0SW{$m%WYLdQgS%;20hfs>NnQU( z*vPG_ytt@Dlf1i+gAY}0T%`QIVBzS|y7!s8=i>({c!e3ykukGlI6671x^R?z^$z-Y zk--~T|BCOU-iqS72YXt@PKc%fU@nkT^Fu{a6>QT!u9LQX)*K;!G2@wjLdFI1ue!jO zi3W#{Wd$D)e}|??dvS(gzuye^QijToO*FGOeahRo5Y>dE+VTdCIxCMRoFZGwvn;-M}w4%Wro4BjXwYoT+#^Z=8 zs{8ySv_ZM!cxvPG%zS60OIICXXTC=&rJHP>{V8gK z;s(SS!gwoYB04_wTkLRYpH|TvI|p+He#aiw5ozdqH;Tf5r)gN2eJ<5m{kS}}!_f?+ z>&TpK3JV8>w7^TeDPf}gwZG6iODRgLtJsfuO#0>}2=D=m?=%$4xt z#};_BqpF-m?BGk*r-D~LgudZP-9CGlDB8c}a2WU~8?`+o%9PkDr;07jc>2|9^#jN7 zWqUX1(&6glTEoZruzLy1lTsdm8KEp( z9*1cg0>Qr zo@@6;5a|}WY3meQ3J9}SDu@b|CBY`K7<_N8n zNMU$6+FZcW53_xRzFnoYO< z6?f3aK!A%xhqxx+(sUqfom5Y>{B8VRjgA*wpy-ag;r)Jl_DMm#EH{l$G=2D)WtKlX z;Z2rNzPq79on|4_ELP5AeC{U;-@sHE^OpGlQuFt5xz2~j5JsUeSn$5K+u1St4dDR$1 z?Qr3^!rq7>%k1aawwAaK`K7NIPnh=YTB?xX;S(+0pI0Gwcx5FyOK!z}6iM?I%)1ds z0Ob?^O~i_ZE$f5icGrl5fhTuAo;iF#AdKOe=HAwNT`gh4Ufg!Mu^?NPs4q~1`}YVQ zx?X-hY1iI{jS?o(@by!p3Y$8m?&e_+Jgf9}^aZ^bY4tDuPxD5;C;|%H0;d(j=36Px zfAxZt?J*h`Y5RCtO720lrAtk4QXO-}`P811J_#jlzP?^M7|45#7Y0M#u$1|TG#pS_ zZqyu>^&=3W0Zq{_#uw#KsHrTotAQX7o{~=(-fvm@ zDTc=nK4FZA?ma1eHHNco%rPC`DFDUe{?6oRC)<9VYQK!E{ak7*zwo>WIHbY{$!2-I zY?nM~HpDy^I<*rai)+EAy%%KQ>vU{L_h?GC!NRRL#B>Tp%zYZ~qy-c|Dp9$3G9V3p zxiUFXA&Au;|0Wg9xom^|*5YlJpl8dk@wz_;&!5Lyi_4Lgd2_rVd*RJg%k?5VmVuVa zIu|d_^EnH%Xzxn{hgOiAqCCW9n3jwGN9QV3pZkgqz+XG^F|BBj7_8zwmH_8RjMp#v zOWc&P{&H0I{aHi0L6V#34F^TCyWs#OL0_xX!m$6`21~cSB(rCIm|^aBDW|(m0(m=F z2GfE>A6m%9h1QPP{kx0(AKi7j7lB|Sf+wfb>&vc%fi~ezZYer{i_2SPpS1_iUh^2| za{>SQe5}Z@;kq5ycP-WbspD!TIPJ?C`QU4erT3t@s{$l(d(g~gcJJ}k#%zdvi-A4V znkng-E3OQp%hgq07ipT&0+1}KE%vPX6WR{#zNFXfVK1uD89L-~yWdL)6Iw3F;a~~r z*=#pQDSDDuj#z@NJ-dwLAgSq3;zf*~j#fpCCJchjN|CBFN{y5Az2`VS$QuWZT}7^+ z(5!CIAs~;r?*jR%3-;B_dhzej)7mkz*N>hrN{da7kmY+f2Bi*2d3>+=AceWsr^|gO!V-QK+CFY>^Po<+&q!8>5O1_CI-O{`S_~ zYhx?xW*ga7bx)z+j*BjzH7c~|dzOiT_@Bj|j`aW5@P5H(=G}hFV(elZ(OV7~fLzMDqI@@6g2zvmpKNI z1X+22$rCwwY;zpwMfGnN?PKv==etJ8G#ZP#=Hpr5`4E)b*u-iFT6kVH&-X)Gj{!YD zmRZwBviJ&MJuNrNQ8PEj_uhr4dwTi=H2*`nXGM#0GZI`M&iKj~zuC5Z!vxaNfuZq{ z0?5JnY({_3YH{w*BvXA_PKm7qe356G6n)~>raqCLdTWmDH!Ec0D_7}b3H1#lMTv$w z?}f^^k$+JAUSTBsxE%1CuLlZ>GJ>+cE@xr;oii0Xc!TZ!q>xkf3!5F4A&y^-9f)08 z;6@7ju{92(F)@A6kXchhh4G#MR8C{J47mdvWQ3sF25Wyz*T&M;7`b*oSk3$q!XU@L z`f;pqKbGNxq$V4kC>0hfmut0Oz0EPieYj<#+J0rG?bGofgzKC-%WY|XY#xc^{5?nU z`Z1&!F8~u0je^WZAsmJ>vN3sq8wGkE+rS|>M2{=iE+b552&NZash>>r;MS0x$(*fY z%Vq#D*tHovZxi+uIePi7@vBhOW4mxVI?6gD!BB6|*!Kqe%e=s>HlSZ125r`v@sSbf z4aT5)ojR-m{rA=02|pnPnl^HRDY?dWU5Y8zR4==eD%bX$OuyGlqbUxg-N>!iH7y$$ zvz*Gk%IDThQWWT5akSwdx5I-m?-RElH#@2W zUbRz%yL2Da$H$-Knn%gybX~H0_Rbg%t5$> zm^8k(Qq5yyC;pM!yT*SVHi8qcS}!gQ@67nH<5C|Z+-&Ltw2b3Ouvn=uk-*oEjIgR# zj^(r~{29^~1)$ zUQvd|q$=$!CRlm#9gqTtM4B5@HzSQUJ9U4}C5AWwu=0APe9AYUo^W(f#I!|;UUo|1 zUzK4PH`YA%rlHL8(Q5NF8Z%(%3NBfkNZO{{BgoVbVy}_Hib4^7AqQT2^l9>d|KtsI z`YSXvw0*T{5+J-d_&ibQLl18@K~?a+z#diA3Yz*sw@*yNObBXz1DoT;AVD`k!Ko0) zIpyPgawi$$^c{ktqF8NERr4!jU}uO<^W4}0P<#yGbMmMS8gUTI%^)gL_l3Nss|Apz znb{n3>&>jGq$`Gf(%sr#_`W9l0V;G#adBfo=yk!TuqL5h*hG_HzXGaOR~RHM2c9<$ z`!Ayd60h{*<uh-gCz~_p)sr!=5k5 z@bh5{c1a_)gHpHcOh|ZgML&Q)`k?6Ns-K{!0@1P4$?R@?pa4==(RBF~Y8?`W_Z}hY zQ!T>5tJqpChz1GDK%>%Ef+vZAsi5^6>$xq=2teFY@cd=)rZs2P+Lufhy>6XjMfAeF zQBhN;;6eWiu8rOBX>9_hNTSDjiU8X)ayS*Rk0b4Yn9d!1L{sH8&8?`8Mej)Q{PYSY{ZXy*Auv>+P|g8A?lW*3Y(E}aP$hMZla`QTO(P_;g%)EY&g;J5aqy29ela?C=2_8 zsnwOFYHrIUlssBf{;F`&!u`q{Pw0cD_otQ7W9$lHn`HFr2i zs;vf85%`Tgg!SEk@d$1IjRABRZTDi+wm$~`SSfE2ny$LK8#0I0r>|w!1#a1nR_Js=jTLVu$^|5Uu*%z$YoaaN3i1`x(3x!qfRH^? zg~$+l`%t+I;yoq?WcPJbj`HHD5EUp9o#Ln^a7D`qUZfzwZcvs9TS5} zS+|j-i3I=jra8yM?!|f8Hff8I>FE+3_GH@dwoy;y{)qh-isEqjL)_esak^Bsi>TrI z{%B$a9aZAXyJ(&rpM+-5GRU{hlCoGuJ^OUC=^S>Un;Np6KDr;pPq`l#+{L6+wkzd{ zBnSbZP}xD-C#N3&c(x72;slkY2mB{+Nd65kTsc?)+H`Mr|ll1K)3Qd6yY1reg*yb{A{~#t4~h12UPfO*fEzfL@6^2zNiOi z@*eRe(YHLA3t1UEn=G5!Oe*4bWIy_6xvwY=sk zCE6gX^ODgDT14E~uGHi-7WqHA9A<-n(1r;s522t!pV@xcjwPQvbOln^meuON7tFpv zZrWR-(9F~&L*|9ILz)|Nq_g}S9r_Ps0M@w8x>+Ark}^F>Vhwh!H$U>tEn!CKuEy)Z z3dp$tm}8Ja&h%()sMPaJ`p><4dZ#{d=H5^uCT9(A=jJ0zo45=2J5RCER#<#(rhP2q zA3dhYZt9lIk(l7+vfBL8K6iWp6Jy>aThR;m7Ftm<;#U&!?GmQx!=uUQnw#o>G$8t# zwoP&1#jpY%Ofcol+=1A8c32iBlI?L)b)Wu4Oe)E1FrkBAf5Y2{CRy1?Z1$Y@yA{}b z#4#j{nG8KOVMyIik&inA+>;cVKHw%}HleyD8s$&odn>h77TB++tNC?cA@qTu?KU9-k_(^-6I35Y~Ub(W`!+D8aF#*H%I zZ&&bTxsOxtxiERj^DAM>M&?#VKdZMwTD~QZm;C_b>g|s{!CSVIx9J}O=d^<)rUmcz zSMS;&p*_<;mE|nSur#Fr2*)53hXiq|@JFoLY=FX1!gJzaki7wqwzjvn`Y&kVH~WM> zCY7NAgO8s-PnZ{VtLMsIIT%zUJ&;G{d&CY*r=B>;GR$!xmJZj8v#JFihc!)_fk%8Z zjc~20_j49qc9*b5H{9oXLRN!Ioy!}+`KM(tT0DCDj1_WKSFX~0tW1JzVC3GYa(Z+c zn__7jmpW8nMpWM+>8nq?WgpwUGq$cunsaLnV^oJ*rCsK&;N=UqAo=Y$xxyjyal6Lh z0hK$J+(O4YM)kyy1|5>N^R?bKutb58e;F?PMhD^L1Lw)bnJ*QiZbb5Ih@;Z^5A;TR zrwL+?1R^YpYs*gu<)}aNRzB*Kvv-H=8w>FKH|{|N=^Yp7&Lf-x4|NB;V}}dE~wLLe5WATmw=EP2lmx1eoRMNRD)~ zT%ij`SNa3NzZ2mr=rla-Dc4;>t6;>@*3tfFHk65Es4Ltm=t;6*18qcEtndONc1vep zeJNg)Pb^o=Ra}zikiy)t(~;^u(UH)bB}!V~ABm0_he-%sPX04_MPJo>;OIfwsgZ%H zCU__6n)-wwNPV#RXeo{wtAL-+?7E3S^RB0~i@tk3s4YAzz3QmHXWR8?#!e?WC1H<@ z6QN|>uL@tTFMWB@BgaMyW0>HIiVBMf8ivZ(+bqLQI6SxjhGF-ztwGtm$InRkqL7Qn4*Nzu9z_uIc8K_-vi&5~?KG4IZ zqphBAo(RpAoeAPB_vIA%)TA)}qw&iNe0|zuYiBc|qaxd(1b`&N0Tx@!h!Wmj2?;Q? z1ez7>^^jWhC*P2G3Q6^bH3pHTQyQmbXl_m&E^fXObbgK(ZiK(sw0-p0Q@1c`%#Q}0 z!B{(AFRfg`^8rh}b#qR$rrR8XA1;zQc`@i;N5F`Ntf_yNC~17motSdzShRy|%Ed?d z1CRV$z3YEzM8EUa+HDXdwdVjYs+vN)KDr{P(!FIGA5~dZxpV+dPjifYu{5@}Et(~i zh={@!mB{=Ud8pAl=sU#0t1aRH<#|m^&^!H?` zFo*e^Z>l%mxz(F5G{_o#L*+i3|Di(4Sy->E-OlVSk=46DQxNdFTyED;DZCco)$!eL zQzB{WeNLXn)^M}>jaC9f?8-asKo?C$?t8Mx81eIYSu1{ZT}r>ZDXr`R=O9nN=p?!On1?dU;29%5)tfDgR)2@;zj9d8wLqxlnA2 z$;a&ls}|Pi9cbv>3RuPPEgbdMVR_arjNun7j84;LhJfU6#eHl3+r$@t`TFPu;N#hD zvOUVuTmbYrbFihQ8?82fH*Xnv1Xg;|t+L)!D5Vj#%iI2l_Ky3p8R(HUuSGC+?H$Rq zR+X3a5;R_LMN9;DA@`p)rEC1)n5k5++YO_peVcPK&s7cTmsn#HT~oX}RroH-mShB* zXt_pu^rjGix;^GXI5`|e0Rg|&A#jm>t*Rvc95z*+*0i$h$!Q=6!=<6xBdc9m3urEeRISP)xaoy|#G z-!L@f$KjmXVXXg0(Rqin`M!NvzgjxAD5XZLVvkxu5N)XuBZ$?SZ7H>4#Eem^)F#A; zplSw*+G4e8uUN51jYw>@s=9t}-oKycujhD<l*otL?c2Qz=`@7g-%f{q(BdewiV9Twti;UP){D}ISc?u`97v&bx^67aV zNcUfQ?B{nd>v|*yda$8f^^-0Qs1Iv4kE`vHn)oc=qoLP|c?9U|>1}mCPSQIyUu0~} zClc~Pn<D(grblh;vf=A;6LFa;O(6gE=8ME=iKM@zw4cWqZSBAy$0((LJ6h-#$4uU(59FnAqOOAz%r z*=dsEm)bvj@TW3L_=zfaoC%rM;HfS9vBYrS2Q*kzrc_fp{#CNWAY>@j@RdpmFq!FQ z8S-n!hKNMovuv%&6!BBJY93bykb2Q+RZgbXCrKYwr*^3a=+OuD*w_2mSr=;dLysl5 zu{O}ELvZLdNahgB9UNgWJ9~B0PDDXw%6oLK3sFXP59{&KoVC#s z_btI~uWdEiCFpywU{s%mH$75RE>ZDrBPQl3qC@-m4zBF8%gTyV8^+wad*n<-#L%=;8w__ex^8Nfd6jPeP41YOt??7Eew2q)DBU7| zMkKIbHjB&%5bxmx93^Hut=~VvN^e`#uu* zx*%5ixE@T$T>4_ufrVnG=~QU}$UfFXHOlXFt%WBrQHGiK?qJC(Q_d7j)(@1~j|)Wz ziVpE-@7Tsh?^jJ{s)`Rg@Xma8nM;v+k_oxAQ; zpQQJ@jw`e7bn)Dzqft%YZ8!#iY{e8_x_(j21B9=v#~*=)CtTS?l==R;)m>AVq^j+@ zc^RX&hh-(^T_vA@{xvMQ+>rvjw@K>5d}DPY7MPjybPlF1Oa5;Ba3AXwx0d|u{p%si z@Qnf7uHtDN^`B^MGCiE$wzAe?dT1W~W9A6H_<{W>zrgAjZ)0sr%bA+w*Q*NW)0>0e z_sf5%gwH?GnEkS6Z~oKXw9!LaK=OkwlTYvr)V;Xez7ixCv+?|^r>4e^Y1+fP=IIez z2I}&D(Y;5n-><|UZB0C@@Xm4|qg_^aNIO3BKU=tcM|%E+`1J(EzW<{!bEnE7HCg#V z%lDHEiFOv7r~hM^o3u5cOr`HiQ1zou2|D(N*M%@#SX7Zv_>N6OIVmv3?~UIi&S-nD zeN>XXj|wbte)Wt+ez_y`&}QKP0ypDjacjMf>ZTLu)3X%s4IisEF)eFSU$v!lU!QQj z*iYI0-8K^d2&<*04S{9g`u>RR9m%d6q}`dZ{0m2)Yr{u}Z-R=r_0JS_%24(@`(M26gr)B~Yy)kF7Gw{-Ac49S$_nZaXzDZ9e zI^2k6Q=1zT`3vU@$1B2m$yC;~O`^`czXS4@5pJ9;ZUZT6w6QqiPoW zRTZjteL$pvt(Wh(2VjeT#m38@^SotlYBz*vNpQocM%3r8lJ0$bknSbAc%k9^ZU8r5;dt>0L5*|1ftNa8mTEZ0L9wXX$wrlAWOb zm}9!&pu98_i>tv)>-=B~wv0j^L9N~8qHK0n_l@?E2gFWEy2jpw4%x6u1ALs&HCz|u zL&BsD=0>MmI4lYWr$1uj&1Y4O~

#}@BeTODudnC{u~ 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�_~Y# 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⪻(+Y*c5?JN{%g_UI({@u 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%0AWmvl?mUR2J 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 z�?$=A&d5ZP<_u9PPn8)@9or$2l8&k9tspy^++KMFDa|cpQP!q_ep)T{52abtyEP zWvQiOVDuy!g`YV&`LjxjZCKI1jBl9bv5NJN3qn@iqYVOMs17GY7k z+MRqu5&`IWsqba|$6Vl6>hZHaT6f&@O=eB^ZIka_d#+ugY4Qf+%jH9OIn^P3d9Iy`5u2VmW=crz-f34G1nE5b2jS`*dd6{5B0Ar4TihLlyPITR$7UN#Qd7~>|g?6daZ6?i9#^(jByvx2ft zNk?b6r($ zB-_~Ki%nap4dVb9pS@g#)Nc1qN%>80hFq+|vgb(>c}}``?nvUWFzIwdxg&QN9Vq5X z_8p(Pq+Tqqw2`nx7)l1CpoVsPEf;Jx$IM;O0FTvvy#`AC@weS za8}%LUPF7RyXzA$J95~@dW!Y1Db&II29cPHI$a*yCM-NF+%>%sUeB#4QYm;+fGR4ty)Uy9P!m1MlY&B4Lqxa+j3s1=2@r73qP z-dq^tay@(334g7=SryK6kEKltT=PiUyrV`Ii5wc6e8sLB% zGn27}DchFkMRlsBzLMmyCm6@AeEqNA&8TZqtKpY_rg*Mwx)N1qHhNgv$-*?3QvQu- zNhI<|OxLAp@eqIxdSbaTGjf&L>d~}mD;|lZS~IHTaqnFtZH_D)WLKF|Qk?WENyaU* zB`VLq87K9qr)Jz+HMK9|E0`#`S+kJVZ_k$F%p48{d8N$lCBtQ_=rHk0Jm-msl%-b2 zo}UuoUQSMPU45j=tAn0Kb6i-tIZ2&ShqFjY??gb5c_z8by+d~LTRydo8hqA~r?yI5 zy^eU?G_sPcR2~Idh5WQ;bJx9kHEk7Txxow6nrmSi^LNS)Gge_nmkh@~wJj)9P3~(c zbXzj?*h^1AS<#%$xbS^zo{PG7F0GuRi|-*3ZyeTCq|94!$2AdLjo8wpq~feX(UXNy zy8|tnr8T1&l;`EnaY={PO6V#$uDPQVaj&LhB-UB)8JwmcMR8b)t!u`MRKbfu}TpY z_XZnytn16Bd9V*T;fchS@W#dZkP-)k-_z>TZ`fmh<}-SR~!;cMXNgN zP7|kV>Se{PN~|#~#!YtmH;*nNoJJ%lpaa)~PZfiXB7=>!JW0>lwJ4s$p!`E^ z=uG?5A27{(c8TL?W-GQ_9D4I#nB%hPsC&y}-lI|#>Dj%HOVhkT4Zv00KJP7_yw^;U z#VlFKY}dx!QkO47hNTwUql~pU?MFb%mH=(; zG1jlWOos1b45z%kjxI8EktTu$?#D;_gydZJ$bKv@Qu#?PgA#(C_a@mr!g_jeEju+ z&dx(tkA19yya&Zmm66?70E1o~CYB+ylDbYOk6%n-l!8kVbHJ)`T`ZCSPC3PXhlQJ! zG}_pVJw~bB9nOJlvfM_;fC&6+)LL|c!M3p+ab8v~a;aG#VTOu^8d6Da+f-2w-`DN9F(`) z9E{|H!SC-jxpCgO?va9r>W(_YSw0=T?uyOvU-Zph1li$*9>FH8%WX)>d&ER zu3S2XY-9DTJx)U+a8IfCtZBm46pgA+nihMQ7Huqd-!b_~g&K z$j2{~Y1MIkPPJ_Zk@9+QYbr}eOO4C}9{8^=g!yH5_dQzl+IpJWeb#l_{{SI?Ooo-%<(=B&zYW;ruc?7R1GE%PHN_@BzM*g`@z#7lV1x~ zlaIS2@fpXGXV1PQ)6}$|F6=f&E5tQ>P@1L`@DD!K_xTk#!KTkU804wl8g^EmZIpRG zC}MC2T3_r$Yt7_uJq>=BhN|JB3b<&_ic&YNtX3OOm~q&e%b%N_xFk_$JIS2W<)H}0 z7}u6%^4RNKt;Mkt6(i>DULG}bMZU)sW&6wbFs~v#`jcFqr2`jY7XB~t5VV;Cr>eagbwj~!SyL0Zw;Fo7ExZmnGtnzt+J zT_~x^rbRAZHY8+@_0L^KHWE74P?sZ7Dsg&P;dM{=`D}8y=ia#)Nnqpyx35a{xgLzp zv}Dq<6(Lz%1C?Xb--?^;auz$61Fn15JE?g&NaK>x67^QOOR0M7Jdc55ZMeMpo|89<`lmq~qvd$6N~YT6EpJn>|&TnBkIA-BgU$zL~ar=)i1(_&(L_VHK?2wlJdQ8mi}` zYZ0V6DlXvv04O;EyuS5cYp^+7;~!f4OqN{kT+4QSPCdC!DJ_wh83EZQ4;fM`HtOI* zYTFoY=Dy+(a;tuag%r}}j^`&e)4R9KPAf_#*<~9LH=b*+6SA?5HO)DC1gif4W-h1R zwzLPh7po!rqrZCTrD@QTXe!F>C%NrsQHJNj@kc6|B}2n!u;@QJ#Tu@_(YM|7J?rMM z>Rhsnw@mjjH6b`ss}-%RbC)dx=Q->WRVXb9aQG zAzO@O)(ou2f6_pWNm!n%DK-3pS84o0=P z&|4^I6t_71O?t0`+S)%ZY2A^K=L4v&Tt!FhUANfjj6J1zws+d5t!*R$qssulnXhd4 zRi~}B~XP_ zaILm{&JD(`NTs`HsY9$={h<;`4tD{-&1&j;)x0rniTCl>*1j60Dy^ovpHC#dE~xPz z8EX>Ak__Q{b6+@WS6k8;$2Q{Ty;BZYkPYkg#Q3sMltJHH}|*W zQjOYXSjQe%T$5f_6{^)->UB27Cqj!*)4AGdT9Zu*td4W(T@aGpm?VU6CyMhb!c^-! zbu^w9dAo}QZ z+D3t86|)8cOm{tN17EjvxC;v~P&x|H)^+hsP3S*i>@cmxYI#<(qRMSvMpigsl6`ZW z*C`ZI+Y;__qCiGZ8OX1p!g4n4vpgF9(a!VgeFNc}n~8K1v*lC|lb+bFU&K~6*AvYw zj8<}f{{T~p`I>L)`JAOqXnh0|#^te6dl|kQOSHXbwo=;$TblJf7gxEt*35GTDylH} zP&0v(@0Vy&6QbGmsmg?sML%CDTJb$vKbsy=&*Bsk_EI zqp~$BMW+51%uP~5dv)c+I46T#h2DcScQS4~vB)C3Fp_k+V)tZXW6s>8vNW`{c&GB@ z!CZB&nmOXM26+HD^{#AFYW`-}RnJb(q2@j%)e}+F(l|)ir<{8K0Fzq!Byd~k>VO4o zWZ-aWtH$edml;+t z#5TPQD5922piWq1kSp3eAq?i$ILflZ56hnQ?BlHIruICl5tp~V$6w+Ip@+lQ4ai_J zqi#X^*T;S@+xGj0=W{l3n)%$WQdpTMvFv6mmV|qsF8JPb`(uDeZP_d9p0($?OkQrd zU9w3T2zpoA-qdtF7^PDY82TQwq}e>DF1aW8dsjnepbNXUW(ojsRZV>5<4SUrPtn~4 zT9S)a)b#x)OxV$^X}4&vQPW{$wTw3)_pc)n&ehj*=aBF>iUw{;=M}LO zDHJ78laIYzUfOb8tmsP8zfrb;z1cgL1QE#Qx~K^Xs-yv36)ddT#JOEo(1dTh$mNey zTK2(GA(Mhlbj8||irk0qRBX2L{{W)Nxbt2?;z`Thd+x4UG3Ug~wZ&FX*fdtsV-h$j zaKW%^xsilcN2gAruOBySM7%xh+2npEx?)^y2Lpp%C#>ABn(csc3C(n2<55y>3uA)4 zy`yJ`>(?Q#*^zi-*0{M#v#}k|HSJJ}bQQNgTBM;Wj^uHYrT2PNiM8$9j4?cuPNV9M ziZM}Fkd4HPmfXEbsnjo&L2Q6?*0FZvx;k(76>kVjSHRBk#c_842}#E%sj0)k)sttfjy_^XJ*wTjk>m{I=bEW|)a0K- z7dDlprOPs$kaM{GYP5}>+~oc>%gZHC)YgBA2bf*9rb*666t4>gJF*yZYf7m_r1v6n z_Z{{ayOrDLA%V>sfM;j>!m2dA%e~O4wz*e9zH$|BmymFI=cO*>-ahchsjU=J+qg^K zl3j^6sRaNyW15NN`OXGTJBrc&02fl)y1E!-0r(q;?NhYb3!a11wMADsr6w+RN+ zmr@Ao53N2hgCuZqMA}P1PASbcJtT22`#t^YVgpPDKDEy|$`*;cag%ojZ=avLjtHl2 z%H*8$T@bojbvc}xmYoet3pcoMqrN!XE{ty`~1k*siYbY$w&=cS5Ud^ZcG}Bno~gcC#r3OhX*j8O0|Gs-xKA$*1nlo89Vk z?H=VDzVYcRnOv32UhT01scirnZASRhvJJeJi703!Ob1J-MpPqjedc zz6z%@aXNH4LEnmup?k1%n)5LK02uKaQ)gplyDU*pP%71T$=*kWPvJp9JQGlAQ&;zHh{B4z zSr3#8WYOd=erh?HYLLE4`cdSrbAd|iuV#bET$8kBm&sr5iY~+1h+$H5ftoy(^b}o( zvlq%=K}VD`&{Mk~vq9x4Y~T}1<&QvUyBD%T`D^J*v3)6Bm&p*=zLacVN-oFA5ZJzy zZ5?~jb{wd8YQ)thA|0USw1T{hs=Gwvq{Nf@oYtMX4WkvT*@8xg@QQf*rm*N!7x~eS za!o6eh4rY&IqQ=`+DofEdmo-4M^E1oOWo(=H_U5?91kO@Ep5_#snB-gbU)x1RQ6K{;R zLB?_`-O6dp+Bu#+Wr%i-C8_9M1@Mbs+{1B#0c-{<(B~QEzfL|G_;MXP!B&!aBh8Qo zM+d0re_H6xDydO%>u|!tQN$@X_D^Gu0I9&|wOI*)>+N476xuz;$8809>rpatax+!R z7bx7@heCVTkoe0)Nh5oWhDOILigc`|jOLu7W6rK(*fS1b=*0ilpmkAd7rfW)euPb*s z?~0xui&4^I)!>U4URK#005=usUolG`mmyg``053D)M`$q4iaxz=zC5|mLaKqt$y+} zMJ>FH(JFaWuFXBeAaZ*lD)KMGK7-l zWJ?ig7?YEpwK~VLGBdlqPc&3iSu#@P&}qg#Zn)y11nV8i-(PX`@@W$^>L3Xu#${#9^`=;lx{nK zZ1kx>JM*_AJt|_Fe(NDcxmhynMjZx5(s`$@LlkAo^!nCwjpp1#lAkkAa(LTxhj+|J z6=oM-F~Rwpij>tja?7ZxS`)L`mR3**1OhSAo%gWdWO~%b?b&oX=VuobNXS6R&pic8 z8j{C*W3bIR@+W3ZWf;3B*tD^fRy>p1g>ASjOA>1SIkUA%J0f2*YaVh>Ac~W4kr${S z^V+bixf+o%a&i%dNdV;MjMUqkV=*MQ+z@G0lbm9@oZitwJfumua98H)YS)?>KpEYd z>%5iQIn?C|FEV(LNWhc888uyB z3Up~JdYD)DD7Jeih5R7e+!3lNF2kzz&#imzm+&6vRnu1G;cd*pakqo-n)>P(igY3G zYR`hJ3YDgXx%dmI>C@aBc~HA95D3V|I%J-`>x;kmRpThK%MHBHV;j7}uef#jaCom* z4fPuD_pg-Y#8IxG?W;I#N8#s-tv=BtHk+dZBsNQQ?OcV%li~=hl*y&ek}~|jq2uwz zYN*kjG}N^`?`1z`oTF#d%!=z!wqUYbO}a2ne3s{)YehU$lxT#?vM*2%Jl6!UHJei2 z?CkcG;Vx+EH8s1hJfk@Su03n1wedqV4Ggl6`|H-YDo~qh>r!dWsdF6^-X*)c(;|W8 zX%PkxmOKi-qIiPl%IYhPo?u4K*6&=df`t~BbGb^Rsm#qyZ^aT`UM#5@jY^hv>&N}&B)Gl=$OT>bBpc73mBy=Em{&m@C5=mux9#z4KhnTE~ zn)Ky|pDN|-aMPh};!X$wIrHdw1?udm@; zR6VUUr9Ff9)(N#K> z`E8-bT1dj*b3RW5^I5mIZzK{(6sg8YJesPq<&#GgX+}CGa+7KVO5Bz>$Rzit9Y#lu zx4u9b#%WHSt#V$nx-qV`Hx5XAFHS2GeMFZylOXlaYN=XKZabOEcZ;}@+%rj%<+oPM zQ@54~9S>^rl6>-$XQNBAFIvbOQ;R)!jAyNT4U~$SZX56Q+)o`VgB3YRB+=^OqWQG$ zW;O9iWG;9ogHDH41&7bLbs0Tt=W9Xp**y=il+tQ1b7^m)W#fb1r+cVmVgLb1;MP#O zj^@=V#m7;nK2Ae}j!2rn``B%i4ke7Xz$sL?PSvty=ttthoO zB^=~A9SN?8SvM(eMOn8Nud&fu>duPHT(CVk>sL;;$jd7^IQOg^QkS~7FWNeASJjh$ zZb;E?j!-km&mycvtvg)r2dKxfuS%7UMk z>?l%~F{u`z8(XPXDnL1>i{PN;@;rl682kw_=GJ?Y0p znmOI%uhg|2*9Eua9)6W%T^4LBZu*+t==r-Gl7qgbg_tqRF(e#{ziH;reFnq8U`VYl zq|Taa_o~ORX_o4ik?rbEO>~g17?MH7e6*z9SxEZH^h2dNPjGT6E!En6#c(}+YkBDl zuBLh-Yqtn9yC$e37wh@gG@Eg=F73-xHtuXT2;4JSOs(d&4_g4sN!vhbQxhJhTNkR;W%S*Clgf>?Opqj-eg_Vyu z$s&|y`fhHuGGx;dDBXa<3=X}`W=CwX-YY8}YhP;WDJFErj9e4!Y$-cP_wP!mH?~JP zrAav5vSzG}OA9|f?Lp*cCcRTiRf60g7~|KidlQw^QTgsW-JGQQn+i_yYa3G3QUQqx zEF8Mr#95mE+ugVnXy4G}4u#`WsaEIagDWypw&x zro^pNb(Nylaq;Ye&)8z9cnI1WUFwRCv>soqsxX$-q zoE|Gkr|jI2CHvdAvC^c3LRT3+^^1Qn5tZjT$6mF^PM^PKZ92QjnQ%oUlE_$O4%MZz z%Y>4Cg1c&8;YKu}%=wBkpD}?T{Ku_PHs}E^OCF-9nZX*U-c7Qd!PySh^y0D13oOBi z=8ACTyJtM5s_t2i%=wFvk?UP;mX#c^ox^h;)zMO`j1`HDZ*|nrdqlN?TllfswzR!L z;=0<$f;bg~*{OHFLZfc;bnY~4&ZC23n)-TV!5i$GhK~KT?+D81LKTmp7a}gi)pr% zB~N~ui z1VYLp%(;Ae)X#8?BOu`C^Q}FjpS%hYrypj7_`37E3SJoK)EOo@Xj9SP>On@w_p{RLCb+7~$s}t@ zr&4VUgh*vl3Bl`I4LJ~Co^jT+s*-kO#XGjnUiwFAnzuI1S8gjG5VxykDnhARmqErJ)C^KUA9 zyS9*S$vrFG!NMvIZ1Ztal&eMvvSXGR_BL^k&bIXXbt8LZ9Asm?a^okL@OUsp;;Kzyoz7)|q#57~~!^&2dmt=WU(!HHj2gK#mXNP~OVl zXJen?{OhqL?HSEEH4CH5^{bg#impya2DzBdB>~Rk-o5nHXsDy-8*`Q4Ls|=yz)b%D zjc-GA%NQ(z#qiAW+vj&JICF#7zk1G=<=7SHccpeyr+D*Asf_AIlzCR=%Oz)t8HN~j&2%=!18mMtE1tUM zlk9g>f>coZfMmce^5dmcKm?fUfs%Vx5W1&x6?Z*JnZZI7@M<9*=>Q`mJ!=(HmiIcE zy18@7P#c_+ROUrk-vcMsxRjiwsoJ8T+h-$tc0;m*&g!WHvr0>zd*;0r@Z9p0Wmget zY*@O!@-0Rf0gTo(7p2=9iRag*YkWK+smgD1=T=Ikx)zL}sZw_^=xa*Zfx&J_HOo1) zj)g0>x|bxIDsjd|7WSpvc^jLpZmKF&n|qkqRHE%1I`@s%b)==YusJnbql+cMwXfjr;wl zYLmy-y@N*9CuBe;A;uSj_}7Vzrx`6y>@%~oN2h6CD!R46bGUF-w^yxrd&Vs9w&G+6 zakP?hKgqAoak*?IPo604Rb#ZbJx0e_hVI|*joHW6wMa)(oN_s@k4eI(D>*91m6a#3 zNf7b+S1Wy^?%u^lF_rrFuTm0{v8@`MviFZZ)_gG)#Ejcdo1Bh#709NIHNDs@grVqh zUw?qbN7?eoy41bs){fWM=vK>Y1+afA^j`?GMJCoHgZk8Br5Vs@16_6yEFTxoA0Crb9^T0XjUhO9dMK!WKd2>d3 zodtqZzHy&%#sqZ_U9VVj72S`Hl^8 zReL_CqN0|)O!>fYMtRL*%$S+Gn(}2))6o4BBaN)ev%mT{8SPwNsO=nXcX#Hz=*~*5 zkKFRuUdNqZU4_&z&9#Bxk-^WsbUGHJA>A9fI6M$}_O8r+9oC?gk2i|xzhfC4((6qK z1!N?O=&Zb4lUc_M(+L1vWsf}9#MQt$wA-=#@rqoPwd!K)chJiNkl?l}!*$o)G`K&- zkU`|vsgp)ApYIPZ9Ftd%LdKn{N9Cj}Fx`!B!7!5KfWY_2udzzgZZAd=s;kB+BX8wv zd>>9LCG5*w7XXo-wcm%dpxl|wh>UK$i5kdFY(oMWaM{OETyC?bOqXIgW+>r#_SlYX7tCi;p-&{{ux8SV+&c~c?T)p@ zPZucKMm1?T>w>lSyLTkZB9o9v;-YI;X#|Q0$;lOzB$w|c=wQEi+|g(H(H&XAhqPvo1Iam13R~@}-Yc~sj@{Dn~k<&Hl;UzAALrr5+=UI2Ew6;C}Pu8&T#mfK950@&^?!J=}WGso%n=HC?NdG2VYw9d*rk_ zqQxr($;l-3u9|98n~Lgr)#9pMzV;G(Jw6>q-bi+tnXrV8Ppx`pjeKIZ4=OW~xKb+W zsn^2A%X7ApjuRBreio75_-^=JMK$E=6_k@6=Ixwkn!gq3$Slc&r`>T8YDwJ{y7<;y!4+}O$It#DDpx*pOmt2-q>Z0OCiQ%3PSh#n%~ zu^+^8MM)l@H7#l4Ov>r^$ml7{45M01+Bk(QGmCvi@gA8Z+8>hw;JE$fM{4uuu!7T@ zfwDe1HKq>g4n1yVjEq#)p6!m-!&I@f@X^CJm^X6AucdijuddwO>MpU!56nUKsl(Ef z#!1O`HJxg7FlsdVo`v9xYl&m}zRK+TcI>0YHuu%}j{TiE8I z8BYlo*H(I-s~f?j1&w*f0=(w<%N#OED&x}~O?VU_rkt;Js>R+UDGDUoehyU6|QA6(ZMSDDuvn)VrKj?v3_MP;3}o+=4n+H?BjQW=-9> z=BBkpS}~VUqYhqrefB(kZSJl-Lm^O1N`6ugQ(ah=<4@DsrbD=L0}Axgx_j}P%Ss`uK2q`MEBlj~kxbnE@1`x|fvjos^N5o#(n*yY4dGN|X~cbWx)PO(oQ z1d)&kuU*mN7V&_JAGLAgYsO2FbUkVm*RxeRnf^4s5omiEe7r6noaf%YGVyKRZXJsj z$t0g_*PWKaUe0fKa`QLMN;lD;F8IE2F0C{670&p3b88uJNI31l=Dw~nm(_LL`O0qi zsN17G{{TgTCezwMhCfQ|G}}`x+TjTu@n1CO%AYa&8jALDw^Pw{>wG#AM#4J|Yp}Jp zXN6Wygl4#WI@CPS2s}UeCgTeH!m|3g!GnCwPB)uM1 zmhy4Xlf_{dc zDcY=4D-RpdzhlJwOLFTpirM;l3h}LO=Ml^3IbVA9s5eeFeNp6MoK;>|*zv7Z+|F=D z2{p_)VLXgUIp+tpbfl@jQ|9VI&ND+pks^clO6Qu8sdz}>1DyNUpY1tnYq8lE8BW3h zj&e5R7^%Tw7Tvkyt!>WX3$sZ}LXG2jHp&=o$?9v3x{*sW6V%q2cI@Q3oLIS}(q?g0 zXvrL$@lb^ZCQ_$=OxJZiAg<3TX%V0>CnG26)~2^0NLy|nBdD#MV%ur%fzwj>iKLK` zy8|ThMMEJ1A@c6^_N-&g6>aQPDM>edY(|VjiAwAs_p8%PjRU)}vl(XcvIjvPlFOW$oFLZDulBILaPr@Ph zq~jSbXR{*Q%g{j}Ez_R0WnH|lnX=t+>sKcU`i`8Sn{Q#;OQGHKagYUDf(`M4%11rx zN>}#EnlYSW+mb%R_zCb`yhW|at7^sJ(XCZvnnJlz=su*^)*7|MHt{Z-VTf#^J7ZMG zLF-+ag#D%>o(d~SS-)0t;U^f-sfd>H(H@`htHG^)&#T`?X0=(0MstkukzY((+H8n6 z-h#Kqa>B2(Uu5#AzIe)`>g;g-GV>LlJu58rhF zzvcC=>?3qAGO5+G&#%o>7Z`L}pGsS4kwpkpj3V{G=~^PyReB89isak7J#B?BFH$PJ zmdeO@%_pd8bDF+~4fT^pDsNmKG3#F<{8so{vO?D}Tda*4Br#loeUEM{s|Q!u)l5}A z`cBJR9~J7_ZO((@Hch@%yY~bm836Oot$j!Ecg7Jk38&37XCELfoE-CCYnVY-!1E@2 zJ|1$TkB3cc&#NP!&V?Nb0FA>3ny)H1l*EkYz9x^uuIJoM^3KS|xK@hd8KPpiZ<`~n zdxwKHLoKXm@@2OEb=iqdcvSlxI9VuHw{zBEebED+Y0w9I;q|W@3cdTYs~w~n+(x@% z9=NC1W8CrLtrQd-l{F=mBnLUDy7lW?UqgZJIeC74D%$kPq|GU>cztGG$W}5b!Cpny z_zZ~W^5qN;O>RSYuNdBNYkG?Mm{NSKuxC$NPqapJ^K)F>tm^iNX}L`D+|l-x{`P6| zvOS>FcA3WRXg6v)nmJfHjAz@B^f{zA(eerAtB{{+?lg=J?IwfUs^inGz@9v_2!VD zdRGFxt(7^dD>;TxLlSe=sc5V;o7C5jQg(xuB;up~(s2B-sYx2j{MQ{Op!+`Y!To8g zsXpFG%@)utE7_GKzmeGFk}9rRX}2CnQ(4WZqo$N)DJ0DOQhzSgu6ZMh^Lr*Z51>bHX%fhTZyXBy zgTisdo*cD`H42f&6am`4Pa8EYk8YefYiro;g7HcQLG`aOY<4lHJd;i5Jo8#^iB}_) zcqG>o;#gJmnRgNoYQ=m;-474e0gSTbA8}qq;;Z=VG`Z!I1cmFKlvI|w?q^B<@wd?Y z_V|geoBeL&xK`Zk0A6^{73G?KqD{*Jr8&V;d9P0xt%rG-ML zic;r_Eu=)V1#gt~9qQ~6u?K4b&wjNPCuOGM=hY@^CA&4LI0du$)Ch(-iDQm4^{+CQ zJ=@&ctF)ub)U=4L2|4+*o_kb+G#@K4a(Y(O?x$j8qNS+hv>}+rPVDEcP4;mc6U!d| z0M?4KQ@zaMv}#+AR3H*TWj%3Is9+gF61_(?wKlnVo|+ZQH7l{qq#_;U)rg65NjYG0 zGg#AVQF51=P=snp_b(PKPTrWPSwqPaJ^&S*YEG8>9g3RfMBzcoH_S7`deMME;DS5X zRIfF8JC{+oM(cJV86=g+2enEeWjnl%$7)m{mL!l=WP6&)N7*~RrOHa2k!m+@k(_bdj`h1{<)l_P zTw}F+lzM1+_?f?9e&?(BXT-BBJ#_5;BFe-RGaywViQq6Glla)v-9P`3T z3eaRTd>+N>3f*dr(QBrmZlxY zhjp~Jl1Z#)SLhK}ar)Ohbc=y3k0rE##;1CfKQ4W1XF_Tm(I#`0C9hU`-@~hI1}QFE zP_;KVD~~0Ze4uyEdiJkUypu<{xRJ%Jv}mJ+NJ5X&zIMG_XSeb_JT(dwXt{Nh9cyKv z+=Ny@Gr=p|8tycE3kYpmJ7h&w!yJ*HOjb2<71SD$tSQo+RO8U6uUvheSA!dI-noHj zCbesXnlkyu(%3bJI)xP{)TvHRdh|Iz65CH{pig_Z>#=1Lef#s>mIp;pLt=e`SgMPgv9V(+9abE+$qQf__DEbVl$*}? z@5ctb%w*b(TiqVEUb!m1W0RiXyUM2o?mv}QX)|o!Hpb2}y{pcuxn;h(eka!QMsnsX z3)V>h-dzSctr36nAq}^j{MYEsIJvf zU+^L@lF)+bBY73sNn_OdR6cnFVELQ)d9KFPpssVu5ayJ+vh;Utf*J9SdeR+5pLfr> zM+6SloLqVAx)VF-h<~)CHzy9ry)oLi?6orN0qy;3(QQXwhH!*iayMhYWQ^c~ahwy@ zt){Uupbo$SFK@a|GgW~SvPnGLDkSk{hW zT?-te9A`eY-RKsjt`UzYrw2W2qIQ)hDE2yV(Ds$mJ!;)pLIC46u#Jeh>+4@T$!J{q z3a;Z?OzzGPHD)qZGnyu>wHlARsgZke`_+tPiEg5q8~)(7?2+kJJ39^z>g>#&i@7=X z=}{v2j5~YPFL!fUKBr4(Z?+))Pk(xzdDqJ;o=swxHBAiU?vzY6QujQb`ORKUs-1Tq zTFSdpdI=`<8YErJJBonHK4uM&e_AbVO_J8;Mcl!-1ePB4or2N{0nSetu9!wq)a+dL zMbtmM1&(peUyKQ`YMyyU>jMrmmPn+`|J6Edt1QCU$g3RMyGZfyJPRko+D{AbJr2cCQD?B@qZWQ3#laY7X%Qq%B_GX5ksz?2n+p-yluTh%kCb@?8`r!d!QLstlG*gV>IZ5<7 zX5mtdS5kzw-gWYgok!lsYMSQ4NTA&q3{M&K_pM!NT{LiVG^I39!I9f>%!`gOR%0#p zg$zak>+4;08*%h17H^o6`ZZz+$4yhtS(vzMYrfFpACL>$4x`|M5L9U9@ z$gQ(umdAP=`6(!wQ?%zP0as91f(YzQV^0%Y+^8Us#{`Pr5l`MZX70_HtrjSbM;NT@ z(XogpBdubkDNg5WT(Gh;HxhtwNEJfra~X0*7<4_U$6B^y_KFd_x|uV|(gh8J>S|je zuPTGhbX%GYu8imAQmCYK32VOLMg|Gz*1AXtf*+e3iOS-*D^-(>e9oxT_oT{q5}76^ zuQawUiK(ke^L+jK8rjXdF2|p5X;E``9j{LdU6PpTo+r_9rqmum~AV^PKcC6(I)vI-~Hgb(9F6{L^A_SL3Ms~>y z(E3(Bqo$;c#Z+f;uNx1DaKua0@5EDXl3mTc7RAg=nZk@#l-3Dvc4m{61NE-zm2Xj~ z^*JfhRe5D6qBt#YP!j6ykb)x}Nj>WlT|!Ok7;NLcdK9R?XBa>-4A?fOxLqSYV-+PTmhwAm zI2B=OG0(qx+Kuus%rVb#*0gf8Ec%lKrzY8bVM${o4gl?3Hm?G$-a)`7vcrED6~K~Rc92h)aR0Nit{xt(IB(JkQ=G2Z!kC{o-N8> z2Q|Z5eAFWzr%oC&_SGbDcM(f-f3?1Dd990k3`B$s zk9zc?+g3bzEiQ@TyeOr&W4%}!pbj@NbKaYSoSG7}5?#vI8i$0i~}A2 z09wXyPB-dxQ;ekqinlt9Xt*pfn#a1-_eR(};-S)fyw*CZRfjh%^*Jf$FDeO8l1_bb zQ@qNs76<1zr9Nm!$m3FKPJIr3@@ZXU5-?zRPzEY1c>*p*OMQCRr3R%GlUU{mJvPuZ+(ANbRI+DLqT5+ZCGn^55%oanqj;GeI!=?o(uw@5K*S{(9Pm)J0 zDLRtoI*mTvcnm&oTJ5YN3n~H0uO|~3R!yF&P?Jq9PVU0oG)=vOs~muPf0J6U7q_@) zM>#d+NjavT$9(Y0q*adRMe$Vjk_DN;O`{&UuVB)APX*Xr&I6Ut*1iWDgXO8s6Ud#V zCkMJaD{JVbP}_kuVdF_rtAdv^(e7i(Z6sjbSt~w5jMqDPrj5ju$tTji8dLUjvuAZF zD7!Nitq9yPgI2V=vt@n>Y+&@SpoGE0?ws_D9nbHoTd_pQS)F_V#+^Wy!Q zac6~67G^!+1}Co@@pND4@)DWPO7U!!bdD;&182_~=mP3i><)RXOBPn0Svfm^BEHI> zH0d|g#|)!7i1lk(BaX>Jo})E~s^5_V;fX%RxgxDqcWnCnRpCbG2R-q7reD0d=A*b9 z)H)JL9PwXahW*sjmdyFCWjb!;HnPhdzzO%eA6oPqTe&tVZbsVoYQ;*-tR+_n$|qT- z&m57dBxkv;i@S9;?T$_}Uq3eCh}8NAPM;?#5Wbs z!!tv6%nnIEH@$nfX{W0^nyIgJ^nD9cR*4mx8R`kHlJ02CAcNMtYVnkD2d{^cbbSsg zTf-gy03_ozy{6xmxL$Ik*R$-ePt^J6Qqtvp&q=V9eU(UToK~CMGK`*1JJ-$Cx|6x? z#jD(>HNk(F@K2>?TsgxyC+7FBI<~gIQ}nEbUMZP3GPdKBfJS=P7plxhne${5)Yeay zR!IHpDvEYToN5y!lNjGDF_t*uwlp%rMPc&*0MD&^o8csx=kaR)0A@!~dn}7$&Cp|- z;GbHa*5#NnVBIm#8Ln&|7Bv%#KbA9zzI&&!WO#~c<79WqHOgvNOwze0Ic_NWf}>YN zc+~M8(v_rS9YRQ$uwuM*t=%VG-*yzqjP*6`Dlt^9WTvT3GU;=^hgpf72Y!8PpthYR zfU>YY_2#Nlg*7C4_l-;3)V4_FVhQ?t)^4k58B@0y1M{vroX(&p^B9V?ZdFk@_EJHI;du{2%WkDr>f*^JN!mkyj3$4<4Pmdd|2+}FfnqdVRuQi{7} zTb5YPTa#SH?2945YgybDH3VM;**-VPQI#dz`kRpvsnR z(XQ`64RO~RO#AT4*-_1VG$yON?PJ2k#;qxGlxDM;Aj*x+jw%TJ(QeM^wfirvdeWRH z7Z=p#Z9&;ROHh~HxiSGcBDQS_a5s;}yo^L2v$A@MgXEpw#rvBtF?T7!#z5^^lPkp_ zF2Dsi0G_qOPD(L!<+;~ZpFX|Ga<2n!>UvdZqWMWyJe=b-?O;=s)%G);oweBB)9qU8 zJBIQHC(^fVbTYDUCphU}r_jVk5asN8xO_XWX&ILcR`mn6cD6p1e^gU0fh1_YVJpcM z=}wZLB-1+Za$ef2w#lAY`ee_1aEBwW9je^u!YJdx9gTahmaRy~vEb8_f|Qx)-W}5| zp6NNaz72s5q-YQaCBj2W}tO}{s=y9tO!8?C&3@Y}mJ54m- zFPXxf+zR#S)@oexJU&TI@kgb2d&4O-?uTeQ0Uq_)PvLzztUR}6iHiKr!+>kV$L0}) z+-<5pn+Jqyljldy{w>hf8`(r)6V5TxytS>ROOp`GHa$Am(cotq_+NWN<#9CSLlEN0 z1Tse`1QDL~q|i;fwd`LF^pS69lQgDD-zC+6$nV;?D1PfM zZ~2+sh=Z0goG+vjK8VmKfL;rBVZXUOzZ%l{Xa_jCr#6!n%ISp85tZ@=A6`2EuuRz#ZMHb=f6Uw#1q@zJTWN;q0bd| z-o{wsJ4sgV1#qdtRMejAt4cDG{#H82!rFw|%$KeR-_Y~(SDbjx%56Jbk(x%4$-x*r zWBFI5LlH)3YlH+prioyI{Zxkq#8uvOG%smS5HeX6X`wqL2~ zn)z47O(2e0R0EuVDP=I5rOf)Wb16!7mAfA+_>JB5Nr7y>?nlU_Uz7DiyDLK85*r6Uual1VV!q}>= zPb1d4%RCtHa##*)p8V0eJz7mzviATc=O7N8)w=>DK_aOD_9KvMXhkSH^f;=`-sa>- zlt92X;lZt_ocY*b0L}-$6yW{q5}z@t8au?!a0N`Om(D(i*0$zNT^#bJ+f2;X<#f^8 z2j&AH=Db>bz3iEN$9Ld!TV?d&d0%!F($O7`i3wX@m}GALm1k833mw_zx(edPNy@dE z(*?~3uIGXHmf*{ECg4No72|#)bQW8;e9QXRyA{bet?gsMsqfU4_dJ79ec5n%>IGxF z0u-^yBbwf?G@X}2$b7Pm*&FQg3paCs1xvRvf(}RXuRb)}f|R?N#w|wcpt)6y4o-S| zQ`McDAQ76{@o;VRI#gSN?q_Oj#YX;voL410A*9^jHU>w%RvG)2JlsrqsxD(S!5CtC z=ZbV_M8Z{Uk3(LZRXD9q6?au9u=c@cVZ#$hszEP|)@okX@{WlcO}6esBYfE>jDlqB1RHW z%rl-ow5(5=k~tk}qMKaie7202Qgo2B1z<<173zNv{3|zzd|_*E5_!t*K31=HD}*az zTc1SV+;U>8+KZCW?0%%rVP)XIhSr)5l&HI724+u`%ES-7>w}zEn#C`jt|^{>-In>3 z4oR;IE9b>#5~}{xjB&s0_;^!$rLU_#+W2K}5cq9wV?q!<0UZw={p-|(c#S~ko<(|< zpEY^PU0KaW%L`A?<*syp?LQk>q=medmzc=m&%d>OTcByHYo@~xA9ZWg#7Rd3PAK4o z-ZrD{W2;#B^`+U(c&Q$P8dEv$b5XQ?{p(8-SCKa<&2c^^(uMAiG*|?(@DD<38EGPu zJ}UUH@btBv&E>tay}}_Wo-%9Y{R>o|K=Bk}Db^N(O|PB-Be&yUrDal%CkW}iZTTM; zoJG>Crxm`pKSF#7;t2I`2U^P0B$6tCRCO5{=DW8Uk0X#57y;o(!d zGcIFk6pVDOp9|^|*y_t091QWE_2^TzS~7=H-J?=6K8n+>MAm5Gw`5kui7k8x=bmfB z!>di6raD~Il#bke(e$OQ-shCIK}8~nACXm$UTW6I6#gPa@9S3A?*25M=9Kpo=V`1h zMqC^oYf5VJ3eL$K`xC!@b5o_sV~peRtzNpATE&mGx`H#BL2yXjyPrxe)E&e(Ox;_W zLvldjvqg#PaldHDB(_?R-7{b@Xu zkmPfk*HCthoSG!=%q-K?ml+(IQ=DhLXVjbOE_2qM>&-O8tj3<^np>Rqqd*b4W6v~y z7D>%g*m{a_jQ6D6eW?YQXE`R2o_f;{Q09{(8ShHt5Ry($ttmVnX^Wtl7&$c8BW`n2 z+8QD9!;-|*O>G-7&o#|DmS?w0jCnO2BS3n7wEc;LkSjlFZO)Hn6a`fE0MUfU-5I3n zGSniv2vrFCqM(t2sUxpi##3z@LMrbd3*A*IGg0BDRw?E)MuAh*7xsb4nfa;YuY>u z;lmtp%;}u-n)^I!bZ~KvtbD!)n!S6znx9AL5Ez~|JwWN}Uq<*xQ6560dUKxD@^Xrm z8=ljXRn^Z>jl;!}%}6?X*Cc$-=eQn0%|uk^G{v~d8|5U|0pdHcb zljq&H{{XFCZT06Sq?7loX~!x1GPZapjyl$kz}b8T1ac|Lblc`d(r{3}%x925>w)~~ zN?{b|uTOgDX?r#1E_o)T-i&XQ!ac{52&GYrqs|GaqXe#>Q%LCUhvkD1at}jNxyU(C z#~rGwC{&Vy=xDA_0UmDWBRS3~%m5sm=eVtDQ?wfF9`dJV_Z$^MR3EJUSY10lU~YV>5G4UvJt2D>RuT{DWZjOey$i`+;X?y>9- z0=4XXLp)A4OSPBZt$j5$3DD$wpO@mQxYTf4Gqu3sh?;L(*zNRhjM}Y@>@$6#Ru$YNiQ^CEgU@>HSL0k44u)Y4-{D^@4Y}sLnc-Ze zb)(qyA&Z1v=4$Ex02Q=5iDWlXs{#s*t$-V+^RA-L#y%OjwOHO&x08NZiOxYDpIXXP zF%%@@z0G~JD!mzh`)|Xu?h)K4m-k6!9P{l`htQ^X0$AAN91uGH06L{otvwm65}a*) zN4JOc+ldlHju+ek8*qKA7VE&8bh3{&)joXmKyo|RT`b0=V|4Ull^d%`YE`)SeWn=q zEwF%N1S!R3TzomPXO*E+jN=XSo@=FJTHE4FvHU-l*705m-BbgZ&miadRFe2# zS+_Zg=X{PbGsfO=&2)QORcC4TIk{&|J8p9t#);x{9IGmw;Ae6S?$ype#d@B(b!67F+sqXS#uw!vn($91S$snv zlg&xfCv5j@Je>V&s|(V{IiA*6j80YEr2v-1E7lb-N_CPw`YT%)!3!89dhv>2qQgne{NYDome#V$Xbj zbr+obnOL0l71E@k=v-P`7ooUeZU*cq9P?6}x6VW45$jp=C`#Q}OO;05Nn*YrDJ{RA znZ|2PZ?{^z0t184o^f2Wh39f<#>&jO1bGJMU*4?$v0b;`hboZrJ(357q^*y&V zCAd>*mMgXUkc*~U@dW@sK=D5{bNS0N6 zbIn|fQjkf2#d31r?QvYv)=8Q_-buL{_L_vH(-M^#$*!u_{IsDS#ktldmY7j zFuymwvE1*>Qi+-6`Hy}(1Xz*pJJ!YHpXf?kcKn6 zt}D&vkV~vIfc57D)8>>QA!445T;SBdvP1B;`Ia{+t+OJWFgfD5p&Qh*M^3S&%*>cH_@-Y!XYW^x)K6%sA>Gs(>2;i@ z;>@`@DW+JC&36*#ceRAnCFga zrK;xg3URVUE4ayh**!lxhTaX6Zf~14)a2tyd7O=2v8L&mvD6;5&+6&>mLO%jW4&h? zd)7MS^f|JjEwVvUMPOgfL*(S+*S&N?9Q7MHrF8{!JV?^8$vpM?(4g1oRRge>2g!G`kZuIo#y%&hG}kZm_A4+0M|pO+%=`<&A3)v5=Rwv;Jue3 z>WwgyjAhPBwzJ&HEQIciw&mN$9`%@Q)(u8mgdpRC$2?aoYU|3n8C0b@p8o)2u+n@? zBDeCL`VKj+hAm+(Lvxefy!qiADmmEir;GNq(tWITx+U5sOXHEr^{blg+zqFb8;!(% zwZNe#icg``xoP1VZ(AN!eFCJCPQ-#wKJ>8ZameCk`Is+LUqMq7ZC9b@(W5yoSL#up zNG9jZd@#>UR=t6N50=;s#%oV%>d;H73KUdlCspos=>!JQ$h?EpR{ou88pn3*64~aw z$X0QMrQFrfgev=|M{k1@Ct9-^5uQ#@rEdjv+v-~P?B7C#&Fe`sMjz$vQ^OfH{G6O~ z?^NQUNqLw>%Cwte!Ed_YvEXNly>`Rw#7Fo0S2}*uwYwKi7NXiNTLP8=&*Pfm^`-Og zu$^0A|MDRSKD($34NlYM$4Bm?tTEg+KS<1X8ddRL=D zUdeMa$i>f{`!iu;cr0;@8oQeiO-q!I43FHF394qt~W`N$33eaSvrt# z)#<3+lNOcRAQHQ71Z4E7;)X|j9;49K{K_chsr%@swT&ojjz=4twRIL6dlIJ}=9H?g zTM_J~&7#!lg|LRv^Vb!P_GR;lE1aCyo}{fK(UmyKDE0{=REV$~p0!tYIvg6&TiNqI zrZbdbqAQjRc^jM8*0imlS1M0XYNp%~%>~aZvc$@}Nga)1U$dlPgJ9tPHO)p`(?_Ar z$gYky=2@CnCnR?@N>+a_*1bBmNhEo&jHfI2DmiD7cb@fLXI+fhInPSsn)j4Z+a%)! z6Cy`xCL^5otJct#>N&2Y)M?mpNw(y4cD8|F7|HL=Tv(VXBpwbcit0-3>QzO}w#3R@ zNsx2?6|R#yLa)0cp#HQ;Xkkt~)o*jobvr$M}E$@iOU2RoA)C zh?7mnp~OafyOl=H&~Oi5&by5;!oE|P7hxzH`C^I78oNE}x~ zVQlK?%-e`OkT`1LjYZ389-p&tsm!)I*s~DG$nTu>sbrc~ZNahcRVYW5HjQdxeUy}0 zY%@12=~wjqR_ey|H<-^KO{DbAd6UCJNyYUzF)d5?k=*pX2gY0F@}2R4%WmU7mFoI_ zuMNym{_}S3`LBw_;U`91(M3{fs`EDG0!GL=J*&{i#i^;I z%&ipLXt6xO;W_6$YtFn!2$J4y!y|9wUpFZ~YNU@UqHZ=mf7k32&6ngmkAG2KdmX#l zT@s|=9E_U#>@7(0-^j}kO}3iob#Q7;_8?DT$31HsP}CMe-!V1E6x~%W$I;iQ0?dGG~q?PSCoY4M>WD-t0OTZY0hidz{$BNv(Ciw#b2o|pQxB`6?Yt;*1Zze zc`mJ#7SA1Pvlm5tT~0hTNjb@PDb1%%E!KAu2eoYJx_OFKXX-ucKdeSH`FfcwJnB`v zyPkt&QD6a&YSMhYvD$LotHG^#>d#-3qUcs-eQZC@@EQ;Pp)iDjzLE?HCoshOX&U*SY-Bnc>w*IUKw?OPR1i z-Q3k}b4w9gt42Oza!q@4t$ad9%3<)+_A``^Gt^pDoUZ;9@&NX%`#nvqFXJw9#f}Cz zKU((V2(`)F^V@HhEbSoH7HI$yXK!7my(31{RqWK3JbKrkQjDQS-EMmn z#HgUSz#I|YscJf!%7lmO)0**lJ?>U|6KPSp+~Bn~43C4n`qwDvOZ(>{u&+hh@2TNe zO6pxk2n&vL`B88YEdap`r<0oe%NG|Kj@`+MaDmNUN=8(kNblaci`j7*ZV5bKcdTO= z#-*0V6PjAc%wY0HcPK57N~JZ7jcvbfTO9>=sKyp#t2nzDvT2OqyKq!+4RacWqb68# zN%?E8lT(wDV#CsLi*k1xr^xY)IU$XD4xMr4BIUOaTJiG;CmwFcw}Gq4I~^nr?Z`a` z0M@0mE5Ll@SKPQGwoQDqdTM)g-@kTQlTU@$Y-@xgfNLh>!>~@RzB9P-k>0y0*OXPv zD$tE}?{3ahQ1IE0=2*IS^{yuONO;lw#UVp+v>clBpZX$*($4{r5U&sG5{)W*woiv;&?6 zSdAj{NjwVouu__p&KO2cO&vCsb!lw84bnO1(-qTM-z1Lkf~5O)ueYS9HF+cJXilCU zDS7^9BdgjgUdge^V0a_HH2X{88Azm!nE={Ht$l<)c|tHexqq_b1k@$9&LU5k z_X4q+2<2sC9{e7pR=8M77L#JkRRvR)mdPH6rdZ1!oT4F+%g!s6)$RVvzjLzSV+?!O z6eky2P<_fuq;Tp#WonK*t4Vi_lW4DXC9W53R{!B%Y#=xeC(@%udMDFKlVMtU0c zvAD0S;d$R;aFiY%vZrlsVQX5d&Em;sU%KCQMQ7b>rq$tW<8d4w^sw|fp$PS{SgP=a zTCOX0cKTP1?IO29Ho=fo9>X<_;>(RET+(Kgc|t)R1_$0g{`KO@HLy6vGrE(Zm|h2usAXE}1$8n{Aiwjk zsXiKOs}7!Io8|;90dK}uTKpnP40WR`V}ino;?pJmd07oG;p=R50S??_2#<^e+sUrvymXC}Ow?iKM8XQ4??4?#um zsiSYH$u*O!lI_r(*PZId?dO=PeAzh1L+@PpWe8#<+cB?NZwi|>bgSthvI0|q^sd&= zT?W*tm=dEo-PW%WNlmxenqcIlqQ=|!gU!2Wl1;>%b*&9X#!JmCl5k4%UTop)B&tiP z+fAy`aq5}k`pto|5(EUUIXTI%E!A$_1Cqz(&T-zpfx%X%%=(@uy+)&iUa0cjVsmoM z<$UYwp1JQ>b`Zlhz90uIq!vDzuKF+8Qn8I*YOe2d*Ve+$;=v&&JB0uE1~P-8ipb44g30Y5YvW zq@f%`>tuY%sxg;Vk+Zn7X1hHa#GO7SJOVOJeFiU?!YiUUa=LBeC4PsmXmRgImy$T| z`q!%Iu!V~U4w=S%Yve1{F3zz--BXFSOn#GblHbZU#x*D{cmbxBH>8Zse z$1rw8Q`0>0Qlw-c!+sU!N^<8>=*^)BrD=91*hEE}l6m5!SqI9y31A7wt!E_VbUtod zCA%>1{$<>9yZav1%g&`-fhT<9HR|D|6-vwEJd8!uv}G2wAO3GS9i9TCOJw^aY9P^H8LuH&FO2%z-a@g9@jMHP$ z8y;aLfa3z3#C*9uMK>i=-Rg`Qv)55FyU1aHMrv^?2zKLpb~P=&URAM_Uc9mt9nu}# z@t!GOHFRyH?j5M7Df?G{gwv7p1-dtwNy+CK^{=?UW-SKJe;B3Z^lZ%peqhHLAY=ph z*U-?EXyx_m$5+dz%MhUx}1#muRDk7 z$vSVY=N4}})s^}mVtf?wYhHn*xoKKf%qYD<#w+R(_c<70)Ee%_LDI&x+~mvZI=C3O zx^^t-FfaThR`U=^-ZDEH`bSMgHi@^UIIgT><)s8&Ccd#hk-6pJL8x3~JR1dMfYc{UYT`qYZw`~R7Qrp}{vMKAwHSq7ne*-3)sL!ZH z5&JQ0$Q3tr>C(Q7D8)QBF+*h|#?5g509ecU955@v9qDHj6%106TbX3_-CP&5d&QRIQ?Q)pCpAr+!Fvq-!wTiWxT>1< zJ$ZZ$p4;JlP+Vz&OKu=nq-ipLrLK7u=lecN(nn=ls-_i4?#J96_@$^h2d_&{)Jk`PXX+6zpbp|J4?rWITSb3yBTGF26R@I{g*zWeE-U;CIR^_Pe z?vL}ZzcI!J#xmR`mlgIU9y)o_52AIs9nm4pE+N<}JU94a&Ag;rY_$)TFGn z7}p^IJM;L`eW72IAO@E=P_~0U)|o0_@y#P#qI2c~ezbE~ZFM6zalg!8noqYTa9fHw zh-%u77g2ejtLHVjZ*dC8%z&P~YYLSek4pirh)Gm-B>vd8{{Wtp)2&-)i8IY){I!0R^r{Q0JxZr?wDnwv-loo)i$wKVIH zXRc|rCLy2OkZw6N-|gsg&P_g94&ohpEYcl%9G)m~kT=w8Yw>5AYj}bjW{z1gHj>n7 z@f1M!G}GcJ{{YFMLPF<5Tf}LT$K#r3{3L2Y>G{=rIb2-v8hk{go}ZmYd_)V5MkzXP zsjOueB7gWu(-`CPs9VHwnXdHFYWW5crXD zIix-$TpyU4J&O-%3tq%$#EZ8l`Sq%^c#t%0gG<==E8D>3AM8PO+`*^Mx#xjB(Yp;>(8cwN8SB=($-%+9 zoz&_nD|II~5$AT{P|0^1sU?8?YYVn-WqX|U{;sNy6oN;+c~-fpnI(|3;MZLWcY2(4 zsyo?kc&CbWCAZUOn|2vNIVTnQ`|(G_vRrDn8=G(>jCBUO@D!Z!E?tcAUhNdSv*sK7 zwVLUOkTdmQJ5~J@0V$LHXF0AMT;|-o&e~E*ufW{Z?j(=Ht_Umgw>l2O>`bm}J=bTzHv-zasE zmCqpeq`8l3Vn1Bx)`xz3bUR^Jp_J;xy64>c)m9i%vT}g*t(0lHjV+0aYvw@0FFAte zB+%pofIe(@tQFg_5~k&%V@Ps<9>+a;)X1bRdgGd?#x34Epqyt-*p@xb&PM#?)%Z&) z08V{KsBx)#-#|~6nrxUnZo4-Y+t8l$f6G+>WRCu|e6!?wZe>=aow-XMZd{=_=O0=( z;Ijj{X-1W=7H*uRnoOPv0GDofJe;3u*NWrIQI^RgkZT@QD042RadB|>v@eNws479g z$jvxNHe{}G$gGlkUsGvX(T`2Tf6S}9lgQjwJuKJkMo0D;{+>SD& z4E}W~h&*MG@zhsLRNP}HwZ9XkwQH@(LMp?&F(h@*Ij2Ne@=_sYk?;86XoW&QeBvp2{|1|>sC;+p=TM%;C*Yli*4$TTt<*+ z-iyO}rm3X0)|m@k1v^<#joJ1U$lWHPqujdc5J>|GF_%I*oM6}8W!}!TTD_!?%<)mP za*{7adj9}tVuXxv!``$a)%ILA=?3f$GtGMnRV8@H^W8afT++AJWoK{Ran*8p6{!Zh zKgqsB>T_7vj9cZgh1z%8#=Ls1>$p(muydUBt6$r<5Jrn5$XT23k;fkO=PGb<s}9TE?rwBf+Xxsa8$rW$;BRoG2Y{Mxz$>HX}J<}aFRC6zVnht)4gt5 zd}cprLh;9O85m{gez~qG;2dP)jp2@Sjh^Q9x5a%u#BV4@$Q(0z{VR4qh}s)6w5Mur z`Hp!4uyiWIcUqhKYIAy;W5t>UJ=OpFW=kno#?l}j&J=sO4EK6plQnWdk zmG@^kcOx?~&PQsf(UXP^l6s2G$;G*JL%VBI#lC#dy*(?ewvFPp6Bja)00;*nxn(bF zCcC54!t%*-vu@Y-T7*v`o_|X9=_fz%j)HksKr{6f=Hj60s(i0zde~&C*OTbCJpSN2 zPUCM=k;PY;R0b`UDl@>&Ybud^=^p%VC7}?Mu~iCGj(%bJ(By{Per$8rxvHlbsPsA- z<%Pxb9A{$&C!A)6cUL~6rVTYHG}lrRd$cj9ZNQWGRi(HglMT4z=BT=>O+{`(zOSi% z3&G}RapJWj)SPZ$*#LJnoare=rfnLRTJB2PvpR*(KAGaH8_7(enXr9@I#go_r_{<$ z^SU){E`VZpV6o=6qP+7}OoJR?d)GZiuO@UsUE8A@BygC^^?dxNJXBIX`*0b(#yi%Y z(o;&tGNR)a?o~%)K3DFJnd6#rOLG>W8-*P18Ls5u>9qGVjBM<0$9}60_8W#U+3i)@ z>19IEZDPZYde@H$RE+tI>ZIbAa@2QdVrWc+5NiB)pE&0vdK&d3DQzyM7UgzEtQSlQ zuzZYk71wE3W=T_bt}Cj_+{oi|_n&rqzl1H!n30JjebZj^rbITX=bpS*mx-V6JrAeA zryMGmbE-_P0Oq2XaZ}B5a_MuT*VK*(&h5-<4N1$!RQ%j@tnbZMG8FFGWHym)fk<7a z(w27pKU%r8svQR|MCH7-jCj!zh_THF463gg$tf3_ujlQQ! zWysV91m%f6zO~!wR^Rf`vPkV+vZ>7*o(49q?CRPL@u3*$%|?l{JGzSNjh#Cmo!6U` ztZ@D)otEWB{{WZ29Gc|!?fJ`d*0is9VUzA_f`#h2b~v9EYY!cRA(IiD=N(VAcxI(= zw;HL-A5b$(EnJkFw&s|rRHco(2>UAde=b`rNm#nKQ(7lo1d9(cKbLuC^K>! zM0-D%<{)ru8urpinbvrJLfs;$CfGfC<}SWa#I;Ty=ob4UkvKF<2(xWZ4{GC z<5d(^+Otk zbJmk|-MR}86yBxXTs(GzZb{q8#d*!sNhQOKoQ_RxhUJwzhAOW$YZZ1hY>m5fS3~x> zQo&SbAaRQ5bYoIUvywGkILplId^@MfcVew1e?D@=4z;^Bk0P^7%t!|ySD#v>Y2qc# zvFgH({l94Q63+gV{LrzyET&2cz|Mi7KnzvgAYZdOz* zGTVlK8t(LEk*@Z$5KnVnmMT!>(DJDBHly6?-gmOORo+1)bUl03^u1{!Eg=O@IIjt) z`#y8oQIzXAbVoC*YA`k5l&lK_&1mVjEA~^k=B9Mop?>8>{{Xcg=*46$VQfQ|NoTQUW zSb_(8^QM$S=;xlO61MbpZbAf9nve{$wcNS)mq`qxGk^K)F% zt8j7kG!uM-Be#0J94{P2+mdNU3OX}6&zgM4KdY9N7>s0&ojI(F8*%oc&GU26_OD6u z#}0D8db+vX+I)}({vqC`6R2`a=hD7uMa{N*F=;EZrN!cTMUU3JkHlAtKBW6sJ6o3Z zuG~Ci=jbd;i=w%AWV%JB`1iV;w>T!dNXUZFlhTwX&f)xWxT!&PgBsE>~!m7TXmJWJ$bK2x{PV^ zJk|$v@MlHMa3Y)tPlLkMS!UdlU^q#Ic7ZQS*$@Lh!km z7ZT?mL7J&M$O{ExMo9pkmFdOvJx)1Cks__^F59;#>x$tueKt2qJjC2~^{<$tQ9@kH zsg${88C>&=oefJlMB^mpqp^bO2?`DfKPff!cxte8;KB*Hs_>-Wgx zn(Qo~-55L(*1V?`7TNU_zj+%oYAbQTZkWKUrocWnj%#{zyG`tJSA=Rbp6Ib}r;_*w zf%mF;w1&uR9Ot0^wT)TF+Gs^8SB=?BS$Ry|Lld4oYpc<_B0+f!1Bmo?(7t@96D zn#H-hj!@f(C)T{`QE-mUmjNc+t zbJl7#6}p~|mmX>ZoPsM8SBo$)Va_Y$B>w<-mvhf>)bV|LYU(fMF9c)jUUz?M0g&;xLPnh=OB^%B= zqQrOc&m%DP{Oh8zoESz&UiIBsa??wx%Sy79PiXWbzJ)Fsw*j~gwa-loCPC-cu9No~ zVNpg><}=EJHuY@%DrjaRUV8eGTF&xUWI?)i^B%FL{0^q1y0@C)Tqkw)<9CE@TUXio(u} zqaQjWtx|BDZudB;Q=~<9@Xr7KYc!@ha5yzEqa_5sieHB@t~A?- zu3s^A8R=f$8xpEc(mYzwbe+=BT|O&_?=Vn}&B?D`(UF?TgA5QWuOCt>pE_k=*S4(t zm9OWP8PCjk>4Q`wyPkKzZRv~nOPjZ)k(TsW>;mEBuKbULX=mKQmFNen)_HblGx__?YBg4AOZJJO6WA*MWT=l=hRjhnEP0@ zV2rsMk?1;g;?5MFQap8sdZ-LQN~w*a!y+(BCh#E z%if~1T+W(Cs%rWQ+EPpdI^=c5a@x0s7FikM>Q|;X714*QDpKZW9wQI!Xvw|LG}Syi zHMZqwatI`mT%@*!-9m&Tp2Lq?_TyGKn6(`nJ`y<_a% zC!ukazAIRUWG3gPTO5&9FWN}$OAL-Wj%JcAxSW-ZQZ z)U?~nQ=`o@Gl|fEJqSHbew|t|jv6YG)twkr>(}I{?bM|$(wpta<_E1>w-HL*58g9z zTTzW#bk9rOsXI@&nvJ_H!UY4bJXB6rI|faob~BS*RI5Hka($Pw#ZEOgXzBEwW6IKo zdKDa=qPfjtM!b0%MBN_XR_C`S57qI`bnO~&f+lyC^3#R){pGlff=}ezqcd~m7Wr;Xv3NA&WuEP>hedTG4C<* zyEZ*QtQ|t~G*w;Pl_m2(xlzzN{T)oWmORGBVVYm#oE7ii% zy=6ZmhNW7Npy~9v^#1_EZx$pb(JmGw+KQYEXW#2zTX`rd;%xW%Z;o^VHM=gXl| z6=xaj&tD#)QWWPBt(J*;w*}f4Y-1x8=~`Smg_$fAqGTKf&THPOhNn7C`!mahMzw2G z)_e)COuF2uaK)6juP4^MCttfu{Uhwa;4#S^&3ZM7}@<$4(8g(5hE3SmnBF6#885{##HSVD` zz2RNtWcIH^3m8sTdzj*Bx=>Pq-1s3OyuW9-CDk0U3UGf~@9(uRkqD9a91-p5Tp5by z#VB+}*c--_s`;ExiXP2$O!4N(2?oAx)+Q}<=%aq)hQ)1wsW%%)jAych(~kByo4Xe= zysEh8n&qN#Z+6nie|Sd(b+1i0O|*^*v6LehEiP?aYx69wJj|Y%-CMC;-OFd@Dcq!R zN$Fm0BAq%k^+$a=^Qe?owmdJzw-bM9%F;NIfgrFQd9MxehNPVw zOG})UmoGD0o+BGcKDHH41+iYyrCP`Ro}+en72lavaH6bw85CnW^5;AK4%N}hjt3m| zuUOLK0@QPyo3p+^?r| zY7ucQ)*l-OO4(3j0RRMJCZ?w(bn-nITKvrOj~88hq!X3^;AXfjIfLp+k{5GhpIYw0 zq^Y?rk2e)3DX62&1(dv1^xmo`O(et#W8O~O*V@AV%FlD-YNs2ddHvHfWS^LW%~f)I%#nfEdekK8T1o0+sS|RcNXKC^b}P&DK)9&$C#y2#!ZIiMn90Kxus3P#9I^V_{sgNCTelfJSi z5-vytZR<*ZdV?4^>BVDBq`CU_2tI0WL9UInILQZ~r=pyUj-$0Hr5DQ+B@TIAmgA4* z-PMn3kIP{^j9U(SQ5mU8#d;gQYbVoVPfjG=rf}ak=U;bz&G#@ztsJIIh|7X{oN@Y! z^?6&%tHo%VJPbon#nF@5NgkQwd8A!NV#q+<$G0`%_g8QB%(D{8bH{q=$YR|(ZEkt_ zs+ZO$e&?-xHSvtPM~I+!=XlCU2z}gx+nW6=@V>VWyWu-a=%iP6TuX<^$nJi%?B_7| z<5exRJgly*s?QAf-5tfCB4EMF9Pr9AYu&Uf!8L?=ATSs;$X}(-Tzf-YX zJXr>#c+TH?A2%a~?}nMxgu4}W^zrRhpD>^v*>sneHJ;r{>=Xg59@@y`DMvoXy70Dl~* zCmH;!>o0}gDT`CkBe#}Z&l++YsmB%f8Onw$FQ;8@k?}cPrG?C@Vdd86wQmx@7-Jnp zRGC$QE!P|z*Tc}8Qb*gk>0_es#-=UrJf>}+9Q|wCw2fL6m06o3vCVbjBGqg6IO#R) zTst0(Z>-r(3jX*j`_%2JS_CJ~2E68_b9GV)ZdW?ZpnQ3mrarl7A}k*#(y7Ksk7~P_ z7d|9}ACzbDtkdFU$>N{0lSea}ZQOi*C|%ei^{t3}Np8!Q89!R5P1qwPKB4eCMk~)mj8^k2G446M! z!`Wzhp4HrjPZ2O&`KRleXz?Lv^XG0oahht2XwBBr&5S-FJO2RI@<**kJVHO`sU&;V zsy;(?qPGLCl3AKek?&1ib;_3Cp8ad0G*R=IoJYPq>&!tryK_u!d57`)^{e(u=biPd zp~qY#WU=e(O#a+%Nq@&Q{fZmJH(@`wNC$M8=YvP~>l5=fKdn!)PF5|~YQi?ULl9hN z>rwvzZ#LE;w_tKbSFuFsqQhU6{J^TcRfM0`kIOKxvl33K?>x+zBEjajzSB9p{1CQJY!%{nXbSiu{~;xzBaPpEW@7rzdGfWCl{&ol&X8AZR2Y+ak}MMS$W#sDTBv0 z1%_@E40YXEsM))nF0?PG;p3YYQVioguzJ>{J|J6*Pc|nKE;0x;v~cp}Qf6+n8?t(l zwz%Yd;!RkCQJzp2Jd=vjSalTHoT|GM-`Ul5-!1@|0e^Hk^8-PN|fGwWROpqz*GiKzLU-l40^=kM}8>x|TO7G`qT z>C~FqqExBgCDFW}G>@CUD|nSHbcrBB7=lZX)$kXKwLi6Ax|t6I;O^(~t#FH$gy(xR zda{hMaf9f2t3<*<$cU*Xt`eFj@B!*9FFyA4$w;siq<%X zbrvdfyR$-oA9J2+RCeCO%R4~EbJn!Pb4pfS4Y_^$!4qxgco;bKsnSCuv18MqHH@@^ z<^clV($F0R8>o#`!qq_X_OrN|s>GKY8UYnyn ze`yD1kBpUSak`ql$s*Kz9dT^mYS5R>VUIE^f}Hx`gITcXejd5FRyS=1PdPwxKDn<> zmNK;|w%yEQMwL${68KumJ#KZdz57MEY@;y45n7f$4VwMrTWJ~Zx>Oo<&5V<@I=BN0N@XyBn2DgI4#CluW%`Lc^C1wON zILKf@BLr1T6@#l@5vKLHso^mkvgMDuk@Ky=zqP)aIT6(X8wl^~Q5{xI_}+J*XGRl81ZfPqpL$2+#CVQ?lswX z%6~V(H!(A^$noH~Ju_Y|DwHYJjBV}sq3?06`tIn?lDSNsfLxO}_)Ykb@;T}#}75cugrQjMlo2|8C>fv zi?M12+i5w+KUzzx-!TbZ2qObERAS=!j#*8%-$5e0*uY7a+`RGDtgPZ&cF!&dBc9cr znwxCal$wp?wHfA0MoVr4<8Ej-G6@FU16zBSOyQH}n5}lhY-P&M&62=yYep;c=auB2 zdhc<)IL_Lf?K`$~`fQ<`?k90PWY?*9ZqaUTV);lVxvq%2NzE-0#cNf(kE%Q!qiwUy zr~${z?OwHGXd{4gmIJS?e6}W|b)T8`u(di-iK4^?_o`%hmn)Nzo|UXE7-~drq+cOY z4^!`0(x(yy0p3FAGggt+U}lTezJ^c#2Baws5oCbujTFS|Gc z)~a*mg_)hK7qh0)p!1$}sJWBsys#1RprZr!=LqKw;0lVy{tOvE3bR z#+eGC9GsrD58hL^twL@szU65jc!{&P^Pcpo2{;2hX00UM*_(Y!mY!sn8vy5yqd!{o zI}&1xC$1~6lKLM#jFOaDxR)WJ9MfdD0x1dV7d71&UMImddApudt=%=<(NNeb+0U=F zbNBZmD*~!U;5yd0)cGL}$ESs9!ctqFJ>qNDp4pXu)&s%oUT(Jc4|K1B-!*nn(bU*m$_dJm-nHV~mnazEX1OaznttiiPEuBsj_$=`{>&~8SdO&=2<6J2Nv;;9 zDP43uD%`xP!@j_+7FBs1{c1MT9bHRD!wm7>yLsZGqa%`Wk18jNNn-3!3}ZE3^ccWy zfN`4Qbz7GzIw`@%4V;d>a8lkk-N@%T_O4@3c6**%b9K#nlwktyN1>)2YcQb5+paipwsgc|B`(8%)E~Jan!p)pAJElxF2| zpJM&vkT7bzw)sLf^PWkobsLdu;Irz?_C8DvxMYFFWEowNi!Kj-YiPkuIU?NPq`Zzw z?75ysImmD4T3Z8cN9&Sot%9*13H_9^OWZa5oZo zUY%>@Y1LSo(^A~}mo zs?^wuD`vU855!}R)!S+I4Q`D){N2VyMj>)TkXU#}+PS`(nfKR;GkJ>HtASngpi~|E zas^`~snd#P-qI>_aowYf)uNs$430i*_p5dqgDs+lARgwss?+wglSd62lA$NhyDj~q zYl#eMc9KUVes$m4TdC3neRu~w>zfhoQHov8j4$t;n=|H-;JbAPa)ZGGt#q0^lFc4D z$>z7KXGStS=}u9p$aZ$IyfHB?f_e&)Ny4w+%V)W-Dm6cOq1K}{6xnVxQv$OP4|;1( zi#w6iw>6w&*Jur|2Hd(l>-a=I_wim}IPmW}4P+qjd( zQM0m=IGLR}&PTmu=LG+6*_mTWzg_sC%ZUlIn}K@>{PgHW9IMAy-}IfM&~_6bW28>6*%)$l9tHH7eS|H-O%w?4b+an z2G6ByC8BS0pPupMTM|ogB0!;=oOP^*xGeH>mItkITFKb#hW>>~rIE@UjlafCWX&KF zV6iMgHKp#o(?r}O%=ah*<`&Nft_^9#gJSnT&a|7+8d2tMPDYe!y;yQO`_-``f(|;0 z;Ay#NYNWX~)tV7rs`7hqMOS;h^A^tlbUo`A2hN)lsH~!hOO_jkSo#WN(SGa9=s>Nm z;Vn%eO-^@x4H<1CmomoNkdD>MU)Xu9a-@uYb@DVS^1fMgJZjOjthPBToiRaR7Xarq zRW!JEk{6ox{jI0&^*V4#YZ>fQczm0HK;47Qboy=3F=dVhIn8=9a`tC+8S+$=S+FmE zd$>QQJ&kTyUX9*dkH4O^Dk;H3>)mA0#73hM1VR?=yq4oulkE}>{ZAsk>jy?ZRc=R< zCn|V^(=aY?obPpzE(a@)O=T_f8FJ0kS9K0XM1R&QgXoFgVrG`k4H72~m|MX64pg6C#A9<}XJ<*J*J!&T0l-zl}GYQSnBG0K5n zv8GKF)+)-`J*zBjIa7*}SVsz+&@W7-H*PTY zy02QT875JK$n~zJX-D2MnsAd{3nhxplaRx;SX-kjVBm4rJ!^_^*5y*1p$7W0mFxwR zDtYv*_#u$C#>vfkv?iTDGnW#iszzPSMzN5i6gfM1%`p_ib%z=C$fX$jRbvQBRH}2M zV%ej6k(CS$boP`Y2qgN_UTKf^H)YD;V|S%~ZH%b- z(mt;&#Cs~1XOVb@+IZz*_mn>*dSbYtZn;{U4EH)Y`F`G-f$RbJw2r z)#%cJW%pMg{KR)P>eN@GbB~JQ%}bc+_n?R{ZoO-s))-1QhR%AN)|fqId2D|>W1}d0 ztEt8`Pj2UKNxnUdhX;&a>5y@;#NnI9)K)i(#aECN>31Ojp1vl=CyR|Nqa#W?Bf}&S|Dv1OPLXH7v{jLA8r;_#Q^#G=QY*J$5@lY{v21sH{t<&ez@8 z^~V+RQ;Ti1ds4EWsmsl7@?Eh5aOWfX);;yJ#}hFG^U}OL!jx}*yB=M5wI?X-au=|f zB_YpBfh>b51#&$rO6Rpse*UJ!d$xrDG0z`Lx%MwPHxyG^6EGUk@14yT|j z*6n}`HbCOMlU~r7cedTKV+V`_TH*N|nminS7700Sd4=Vxq~vYOEmAv+4mTAw?sBCR ze9UEZ)9PMgtMit@^sN0rne9nd0I2WYy&S$W=DX;6@Pu8{-p8NGEVlQ~N#`}w>H4g% zVtmId#{l=Q*eSveg40ui9MHrj`j=q7l56Bd1<-+p&U0P8fRY=uX+{a@n&@gYskJAo zI-^oft)AB-)^!6F@d3C4f=_zppHg{s6^)-P+~XaqnuIyhO&jBCw_U6CI(u0I+Jt^` zeJj22_Kcd0cI?;DK`2Yjo<}dVTJ!|DXki<; zC9ARUwxc2O4Z4V1aKYR;!Ste3qbbYKnaM&IXSh7~bNMLSf|G;0yXxIBZOd2L2Zq7mJUeco{Qct5tnOdw?1`)r! zozHpFu4ZZCl24pBb6%GWK6a8ayvRD9)$>^Q8Z`aaC}x`N3HB+rMn$uysip@20`oXUV~}j z%PY%oHQQ-XxbuvRcQuwL9_U3%n$+~L*?XxuQ>e>&WER#}Ei4k^HE&w;_ z%-a>R2yVYx>UF-i2d1_>so~xRN=jGM^~=8zTVPT%NwQ$m5~N`rWQTm7S+v>{%T zjrD=G;p=;ao-Z)5QP}sc-%~d5S|^+Lh{y)Hvl&{Xc^0hbz`N0#o6#OY;sl2O0K^Lt zMmFVCbiwzn6!7FWp`>J8>_Fpo@$NMM6^s1??L$jo5sRi`^?V_H-8RH`Mt(b8!8l3zi&n&@^)?liP$=cGT?MwDZmol=^XXjI<&QHeb5f0#=QXWbmwzdR zU`L=WsWJnWW0PL38p;&y+~TQE+f-6oSgEL>Fcees*9mc_JKf0bl1a}duMJUCt#HM2 z&K6r6x>HYS56SX(&MTmn?5((xQ@Og=PAbxE^)tfGrza;v&wNv^EyRCki0yDNNbQ>P z3;5u>~y%s zwFs$n4L?p-oy)0go-4MQqSO2=&cSjQc0uO6ti`!fg6i4Tm(hZ(`>UTc_=@SSZ{~Ly z50+3pE9Xxc%zoV_)0Q>uVPw^#eUBFvJ4RhKI2|Z6>ng|zJF~&Bb+Gv$j{x!k`qsIJ zH#}EE+{l%sC)HT=tqBZ_IV+!D_35?|ae}~i7!~vNqWQT`(PJwsuBTBEXp?C9)Yn5{ zBRqhz?CS&zE=BAYSrDRP>>c=<{RChUcS7!WU5t%WPM-=HMf3dp^_Zi0`xn&sLotLt)D6^gIh!kyc5hcibC}E5-H6RkbHo&OqkAqLP<8chbkoR7-w`89Dvw1o4h* zI#~&kLUISCX(r`aE{C5a+`Zk2k;BQ7Fxbh!>sG=UHsp{x*9AtVm5#b{=80gg=?3GE zdYb46?9&b#cc)|TQ!a06lSVE!lao2Cm`RtD!RIxNbrFz|3gt%tSE(5(G@0|2VJ>^i zsf{!yIT)4%=cQHwcKziU6|0}LYBtq%HH+kSkvvf}l5Q)K2U^jIe5i`EeEo5rwT*XC zLg|*JdHc@9QkL^h8*#;C%q0_?eARU7u19}}ChZ#{HU(51;f**A(Slg??^dMRRV}G) z%~K(B@{_z%333O`^B!wir&Tj4Ijz|wWzKoz^{uOJU@iBGjMj2dj2t3WDLF5ANr-cv zcMkZh_aw0m&f&!#(#b|cn^B6>RdTsd*8ue6kZJ7fhz{TYIlvugaf~Mxx`d{ey%nPz zZXafT>CQ7x4h*hxPd_iUT&eQMnX@>}T`LX`Fk%N$RzPM zWX3!6Bc3yp^{=fy4C^hY_?8Aq@Z0hkJ6E@dPIwBD>dy}mWl}H9`j6rY+ufkPv-u&J z10Hkp5zp&iGwS=HyLG|dTCm~SxM9>~y3oTljFvx6wqvv{SXp1hToz_*51WziUwwQC z@z(pa((YXdxnC)MZ@9#aAM@*9agBnngOs|T9a4W+%^^`cbbmAKdpXKVQNHq=8uVQk zRWZn_4?oVnTA%MIA5Vynv#O+zO|jLZk`b2YxUHYHM&mn%YtCuKosp87xW<(;lGR3Q zn9v`XRjFJKa{mBQP>d0>dz#?&JN?_RcQtQHEwhTe)KSJ=OiY9m^LMI|x9>+e$bZq1TKHb)+S)FpFEps-3>jHL>*_OFvo=?E;ko*w!knEvL+sB%wbstji7-#SUpmtT z$&>Z3GnUU%eX1aBV6$h;{c1PWn*^B;=UPfS5$#Gc>c1(=WYs3s4?j10T#nad`%Yn3 zQ#s|1dgnEMEmZB!{&Q5}p(=J`<<(0?_xT?6i*>1PQa5u-Ff?+yyD=oxPncJB>~*M( z_T!!X2Txkv#^y>=lCc|VO|!2w!KoGi7U#ZeMNdJuCeX*!STGsy&oqNkB}omMUd`?_ zr+rG#s5x#x)U{x8UO&i5woi>nHvf4*kVIR#JCv7|5?hU}Zl} z=Z`A!PSzrSjC-Ur76BWTBcb|KE%Aa?xeF?I=WkJyRfoms7|B;uk8WISXg54l9OOd@Nwy z^*w03OIL{>+I&XW8zfiSe(u)59`!5F;zeWSz+KDn^LF+6)-k1na@FY0hxLZGcRD>5 z!^AV)B$u(VgNJ4gPSc+C^frd(Eg&In&9?@;?9QbxW}``);3-y&oa&lE*`-mtHPcuI z0La}(HR4yR`sn5o+3#CBB{{ zBh2|!q2r&LtXcRYUDU3`?<9t1C5S7^gW9^VSV~x0KGLS_j7>_Iy3I#qbR*$zrv6#k zASiMI3}-bf_&;6K?n4tKAr44XAd-6;^{L}2ZP4PD7ZC`qwmT0Gc&}T~FZRqg!mI>@ zxyC#3UqNZUB(&Bo8@iDa3I;x~Lkyv?7arScD(0j5Ye7`kW?}>!4 z$v&0MYg*?*rrSxG_ZK9lcb=Wiahm3)wmNi|C6$QC+TH#BmFMCo6r4|5gcCj#_@&}` zFZEf3a{vR7$~sre+Pwa4%N*si&*NQh-NLB#+~kCvOkAY;6m;8nmh*Dw@vid50*FJL zu^Bb? zWK#^x8A%vDXfdH;OMKZl2C{RMVy(LsNjXw*j^>9Iu4RHIBzf<^GfL36tfJsKK0hzRFaXTp~{oJ+a>Z&=H4(mnw19hV}bzcYdWb^ znp;@psZOO?CX2BMM?lU8LPbbn&f=^$cCL8)vTdVSCZVS2XpT}zByAp@=|etb4T29$ zRNbcKFOj8 zosj9cxm^;h_`;KrI%bqeFhIyXb6s@#Aexr!caJkf${TXF?xUqj0r^Wm-90OUtm52K zM6{)0#mRxBE(zV7W13+*+XQt0mKCIRj-!;6SF$9MtyNuUlD8g{M`5H=X$y=$hZ{iD) za9mEo$G=MHtUOJ35-SUm9JWIf&1Y5-loCUYNhW%Bneh`)wOG~VVuWRgZZlGNlj4oW zr=^Ielgv%HJI+rYmE=PUd{4DoqqXAeLWe77k5A%jTdA<>4&H!_cjmKaztV1ZgBtmm zGp|agHTOAJvz$HUxUj{dZXR~^^e9DHZ6ipykQlE`vHt+3i=5}_U9_>) zY3Xb3X0Q;PuAPc<_sj6+FUc%A=FP)!HrFK%s#(K?JoJ$E-o4j=^ z8!cPRMTrL7{QJ4cr%2cK$jTxkj&cqKcKb?Ib-u?8=}k`aRw9E^xsu_dCp?kQ2Q@lg z-W&!-4oSzpE2UABscYSC$aLc8%$<>V>NgNDX+wqTaw}TLTXvZhBqUTQd(JPlj%hA= z>U|CHyHO)vQ8VE{``v5lO+w8zO)6A%4hrxH#e9Z0o9jtP`fLOu@bA?5lg7FY?w>2O z#>#|aJ9zrnf?uHxE=MHbAL~@3X!9MKXl6qj%O-pG_o(jU{mDPX2Q|r3Qk3-B8%E7L zm^TO-2In$=2+tKoN#0x2j8;;+)WtTLscMcc6^2_QJuAJii_A#!q#Sgpipt3GDVGAo}KO-7V2yJsy)s@JId3cLOC3D@u)RUsFQf#w;P@HlI=}wUg!S{y#)yp_W@n@^f zo}(EsxXy9bpz_H8o^#r(pO%}8>RjfkK#WAp#2z{7X;DTTH#qN(wK}Ak%}z3xx=F$) z7(ASFO0D~r1fQ*CQS&Zmxz!l9@7PR`tl{`RwInCad8EKCWfT1%E#^{5QCB%)}_YWnGSM!_pZq$@R;(qc0J{Qg1GXtN-p;W0(+T7x)7benYU8Ka{Yu;QCPDizU8}R!}GtU&Pn0)p18LvW9 z{{Uxm@-U$nQxO!rkE--o{{VJmBa_zy0=n4b>OrrJisqYa`#P~oX?7AqN)itynP{xj z?qYcD+Pw?iNX2gKO?c;Sz~1?)kes+<`P4hcg@}ZlrE!;XZRb6@R%nr#$T=-jOVNayr&E6r{}M7bIcoli+Z9V_6F$GjiM>wb2-;(iIhE?pR58 zNrS;0ao&<~_U8#Q>3m+mTE;Q^zz=~8fJvQIa96#0P*CT7N6X`8qY{5J%SH@wSoivZc_(XSyJEGA zZ)4rJT?#^cxPn%NeM z93Ep80|4~(sH&VfV$A5;qLi8^wISxmUgO@c%VM&k`J@ICtAa;N8dIC6Fj3}@nY$e6 z6gUl@*r}~iC%wv^hnh(^Q*!PV8^0;iHMofuL4ls$wR$LHmQBslyqc9Hts_Mn%a^Gw z!X$RTCtCAw5zJw?W(1bcLEg5(u53o9O!f1OWi>5&4$iVofeaa<2rsGStGZf8qr7anI`IIWlrorPbMUmJ%} zR73@(JER+FMhZ%o)M$_{$yB z7l|55;cu|{B%#MvlE&^{H+s5X>A6!+pLPWN+D*UdRz#8$Y0yO!rf^fxj=MEPmnvBn z-Y2u>k2YH7%DKlUe5!_}n68Nj;t^>=rd#mn96ejie~svA6{l2i`onS*ujj*;E22}V@Q)I*so@V%gc35|J8e}(Dab8~{CU`qu-9MX5#Ct`$L zX_?f5#k<5nWSd9b+-T^t?p_yAk0P8ZrFhGnCusWeN%k(IZ3b~)msc*#zs>h%&MqG> z`>u{CZe;{xvTiG1T(a$tpMRnjRUC1=2F`YR1;H##b00IBSL_*m!)PAAf!Wnn9x4mL z7l(M)vz%-~0*OqSG#Rm`7nxSm?)uI8)4#>6KH?vpN+*Zkdc)J?ix=czxm85R?}}y> z;C>n~a$0^wYL@aGay)hrs22_PU+V8*gishBM|jk1wv1DUpH*B95y%B@=}_0PS1p=_}fee3_eha}Y!@ z1=CW@a@8Ck&zmjr3nQ3^?k9ew0=m|a&>u&9fia@k&<3YM*|6*zz zJelyQqL}Jt$_6TE+)Pd!yPe9^5TIy?I)arqX$^G@tdz^x{_fz`9g zQ8%D?GTOkC=ZyS$9SJ)0O^d*9GR}1GM=u(|!QZCjWUr)F5z<{jp>HeqG9+>;D|}R-Jn;zO~CH4Y2_W2 z6Nr&l8Lu4Z8={EOGI>u&_E~>3T`F7qsUGnYqJRw)z;G9SU#`60GyL_=8R>LwX$D3q zzY(WCsB&dm(U=Qlt`o;*V)>!)nGe{2*wb_`FJaANr`<{qdrxC-qGfXoqKNJ1Zgez| zV|Vj5*3ccOk$Y0h>f9lh=ulWVe~UW+4bqGKjO*!PUlJnUcD?U!8H9G15o&T9G?eJ< zeJtwjl0usnr@Zf<8(FC)O--iB`V0iWt{B_QO3b0(oAi$?qW9+B8aR+t7Jg(YAuNO@ ziN@h=D8brUU8BYw;@j?`bAP$OO-L!w@O|e4N2Ha37Qj|oV7l| zjeSQ(s0dF%^#yM8aDHcE8d5(u*i?YKybE2YxWz;4Hiy%Bc7{5Sn{1W2d59#5$eXZm z$C|sxzOy?U8HZFr!iS9=Fqe6{-+$VyeM*Ksv9 zAk)(HJ-IY~a^=qo(-(z-r-grV{`AZsmhIxc)cEwXsi9L@U@ov!evLtk7wBM;J41nn z8WzbHu24#UVsunsa{7TW!VF`B$Hx}{C^9s>Y#a<|!zex)nSkC4w=Ryoaes|RVx?_; z)O8Sd4arw;rt!Qk`tCe4Ux^LNzmub;u!45GXWCV4l26OgXWgyPm+C4n$uc5mzHYH< zut*7l9BUuhJ$(gVvtJ1be2ELZ(%X*O&s+T$yy5sg=wQ@>hQkAzvN$4DAUf5L)1l32 zaYVQyW{~p4^PT)?o>eyA|42To32-*Wyj7S{mf7fUcR?GHp+IlS4!P00nMnoQ2BPGL z7xXX^%JpdPlF8?uol)+gT<8Yn*zMPv)lGHo4s7r**}`KWGqLmDx4KB48Cs!6QH8ur zfiqKYWZwO_p`ea{`8Hu`az+bIL`?7u@Eek$v`mbirc6|Krh;jR`)>C~Wnm+o%uL5ZN)M z_v*>mcCLqIxV)a}kdm4wm7CKYmCi;2$}K0VT>h^|cNtws%v5&^Mqyk_9J%nN?>3N( zZfN&rE&;^Sgd2rOjm^xg9Rg!h7XP4m+kb%}3L(>Hl*ccenfA>YOsqg1eW3m6R!0Uy zN^#Kj3VpQ$&}B~!)9_#Jdu8t&h5`TL&6!$tYJ`o}utjc~JI{LhdY%y82!rz zcaOt5r}*oPDY_U6bEO*_v$7d{8_Un;4aV!qELgSQTTO;$A42nb!! zI)HXCUu)H91L;hPLY|uL+Z(U%&%$?`s23d#qEsHBbZ5U{f>r8S9-5R%H+!;{f<0y| zyx0bw+^%=9deYB_lqb-7e*aW2&Y|vo8>KF)xz)vX z-^a^dv_(NA*U{p!1Ckq0zD%ZLs)cij4-=-m~UDSbZZe&OWc)u zddPg87d!6}5DEAVLPlPbqMjgRmRnWb=9*$4cH}2GB+1P-`1cde=KFMMZR!tR(R50K z04L>m9U+OG$RHu}5^*2?(mqyp?iTu^iY<(iTa_pC)H(b_l+O$i$5vTQt}DGK9oBL^ zh@xYM7rfrd=Wo&Ta3aO|ztD`XY@ZVIrToaF!5w%?q^+t*#(7Q|bj>!8>&G>&q^`d!#>p47 zoi;WCQ^l*4#7tm_0wmany{tYqQ*%Y8UPDU>D<5 zu5zm{WGX_E-EAbxs}Gd@E~V$W7qYt2vGK{dCLWNNQW3 zVF?DqFBRpx6~va!PV^+|A^JDNX}XLWL~O@J8vTrm&`Xw%{jn;?#qUeb)17uBCV6u= zqW7wx3YOna55w;)DA7ze1^u#q?ev8VdT0gWe>^Z@txM1$rEi_rGVZ^q{6;PIK)b&T zMZ5N}VFj6Hd8T+JGN7V=GEkE6%$e*S*rqIW*dGhf5SQF>3)LXjGIW9tnjntp>i{~O zJ*7meqGKrckBdsges%m-0Yq^|qmY~29Djy@U%-tEX-CEKH1`K(753*sEd7)d48r_U zj$n(K7I!|4FcMT6`{TF5vc^|Z;Av#TVfL87a-N@CwO3k3sIWeitnaes$Z5pPIIqW9 z)aNXphN{3bm5Y$B8@$ki3DBAQM`7?EE7eeEGIGtMt)1V1Rp<&`38U$==URpauc5^d zj|u9iLD}mBIxOeau{rva1h|V6|FZ~&AktdPVJvQXorga@v`}WMYiE{;C4JOVx0=Olp5KR}rt6e9Dw&7$nU%%lK}L)3HfBiv*~UoXWUoRPL0HSGg;j$3U#|<=fsNE%Og3iop zejaoDTBc-0%xIafh<9^8OX=-69WAD0tknm%-^z&PfOpmP|JIRCWVfH3X;jZvf$Z33 zcWf#lk46BWa|4dN7MI+z`uwsKQuVK^da=l>CKA*4VW_Wo*KqDkT`!6Y{sdt9 z8#&hPj)k?3jaTKLCEvtEef(Y$5f(n5x_*PO`~*@LEC>nnJyoTOQt**=*YOoyb5HpX z$b`KCtpE=fGnHzSNE10d#PL!cL11<45_Ic7MF^12G>bKURidS1-vgHxhaiYU_ zVmCvOtTC$R?an%{&bbO0AC{^lbfsnCj(kCKMA)}E@uqxveX8|t5@~p_6}Ls^W*D6G zIQn?H-nTL2kxmq`;CC=~Y&kw=3_(Vo8WR zy%|?lW!?E#m@fM&Ppx?))41&QQ+l567ID@S=&^N{DxD8si)Q|K=E~NivUtAMS|&HH zXMu)<*HVwDli!`EP{i~DQ=GI}0Zb<0)q=khSG6J|(;SRax#>mzkg2}1ceAlutwkE? z?TjFP!Xz+J7`wv?(OdBo31iCG@Bs07ZW3m4Niwk-S+g9(6w$A|hDmex=dEF#}W*HA{9)=T-yUAnrQI!9cmcd^eb$I##v)ARb@c+I~xYVQ!2 zrK|I8(rL2!-~LD9L9!Bday*?c!>1}6!Jgkpl^(AUg15k96+g(|OzDW{)V<0O98_wp zD>P_E>Kxf9rbMlbeD%(v*w4SHfN_TeManVki5FzCoQ4&921oSNaTu9^dFgeB+uf_eX>Wl#E-=w0-_}O82D89^K2q>+;M2^$u=@-TFA?6Ko zS~LwPBw2sWl}bT6qW8r;-9d%K$SoslygXn-x=SqZKV77mpP6nVkMB!Y?CM`n{nVaR zLQ55|abx*vYaLlOL~6t{-_0yC;0@th^ib1!&K=VcolR!PjLpq61KbkrM9t5+;340B z6u@P06S0AED-%63fLJivhUY9n&Cw^yMSXLe$w)Jpvy0otC@)QSlufa{MpfT<-X%oL zviiOe+B4{XBu}hIDNjR>m_}{4J2N+?lvsIM^LhNef=kGQrkE>NqXC(+U0318`EmHz zt`LdBo;x;-Je1yGw+l>=yUkGfg0ai5=-gLA*Ono+cjbvN+wPy!kA|A2=zer@26_Qq zEx`Mj;1_1_WRL8BREjjRYj+csZP>!g%HpfK>%#TUp0Fzma~wXp5zcMD&r(LK-$_@y zf~%7SFxmd~It{bOI&#|ZO%qtWct0btZa5${#D+#Z@nBrHq^>O%ac{Ak{bxf}6idav z$M-pV*8Ib{&)J_|M|NBjIO2T_!{EO_u&VS3*st>{$ke%X;cuCfM+D$!W{Sq#T1Km~ z{fnRP<AC+$!uAdHb?sJb*p;zm@F>5ZyZpDC56=L68yZkT z_ZWlbd@dR3%j#BH@N_}eHBM}iApB9tYX+r;w7*goFpW){z*q96u!mfGX$DFPaTmQN zG5OF@Yj1Xv$vb1BoC;`sMVZZz^WAA;Lt6ff<&Cl>Tb8w@3M*{OZ4mRi1tHW%5jO@(uTG~%h12+_^0P^^4 zjfMSNr3AefiYLT2{P}dZodg8&9!&G>c8g%JGv3S>{O#!bbA5f9qRi8-d!oHsuc>9M z-HU3&#jcGmX*K=g{EOGWd1%~~l870ApNMISXe-^Pg|Q}(Bv+1>IH6hwM()Cs(XrpU*Z_N~ZelKUrc8BLSi+Tm*OdC6SDj0< z^%=LAb=E$n%GM_&?Xl;B5Jdi5rG)OXBkS8xwliBPPh8#$_@(ucY%qUbVK&=SQ*(;8 zoY)s+smc2$e;2mhsFRVx{eest@7iyFm{E&uQxC%iQh19TU z@ncHp|2f~u+lsJwU7>-qU8cGcODw5>j@@L(6uzi3;`ZMdo34Xq_53W65gq_r-IkCl zN3dVW4WlI~70;{!aeq3?#HGJp?CG??J$RM1TQk#c`d)Xt{4=zNE|KsmRw0nX%$(xAc&*r_oReUiw!fMt4g; zL7AKkL*2(M=bNvbPKl%70KB>1N73mP(h~su$%sY_!6Pu!P(}!{>KXy}A;X+h<&scA9SBleU9PDI2Da zjG}_i3H)oRSHUNl0v$Jp{byMGP_%|m@0)dAC~}U z4^5QzA2w<&)Nh0Ioc~zJLkgrqi7fR_^sj1Rq{1?^2G~ynMxSDpnbzHNu z@hz`o)vUDXE6PGoEZkY|FCG$s zE-MqVpIBmAz4`t_m3C)FQp1~i)Q^fZ67rO=2tN~bUn3-oq@4H%J_*JH2QG#BXkXNUV$PKQ z-Ck$CZ5jimE5LieS}-zTm5{tSRIf-ms)IKn*_AIfr|SuwktkeNJO>iK<2@QRQj};G zK@kmpIRC{V7Z0a<5UQ#l@cOx+4!X=-p1&ND)>Feu8DM;$iSr5THcDf`{sVns@V3=y zXbs8TXakMQfGoQo&DJ>}T?$dL;7J|6>7Oj-r=5-+YS@9*F-|j>gkSDgk^sZ_ji+JT zK`T;cY|k>m-8D;4B5Lf3J_kX5Be}2mZJA30?<7#K{P&O1(KGg`dwZ`92QdUrQe!~? z&Oxsh8`<8?K#0ywRsn&5Z@z3V8g3*{Kf5#n2TQ>05xv!b8pc4yGazs+>id_i+A;Vt zsz?|%A9T>n1;)BP|D{bx)`pugK0Tw!P}{UHXGAs%v-`LqdxvWG?CC^+~cl z3m;UIcv9Q+LF683l2p|TPsCTd^k*5$NC;`)-0h>N6=NV}!g+oZfW40(GXHi;8;_!C z{PGWgg!HgV?R&;2i^0cs=B5)%+8vEj{NS`ncm9cda`MpNAX(3JV54W9z4UN~-J)F$1gxFYcRf2(574S{LNeKg24B?b~K2ebZ^ceEJ`WRr4ly zEwWH&90dx;ntwgUpOOt~o2P5fZ=9Y zOZ!$<_6Oe+CpUv;uuL#|K3ndC~-C4V=@~2AdX-mr|dg!iDpSFW(zhk!+yedQYkc#nOn67%k(X*6Rbd zm0PrOWW%NoK2$Ty5c0pLNrF_s(X1uD`v;4F{hfP6L$oQtdz;{5h<(!kJ+8d^1!B9l9YrE7a z*R>a@4HW^lC}iLsCFtd7VeoTvBfQQ+x5WYQ+L)myfHlh}GbzT)IvV*fu8v&TmAp+3 zQw~C6_0;Q5Adc&pkZKW;*y;qsL?5BI`dUS~sw2MNs}g%~d-M(7Aae6L-ximL&hfYK zq-fs8jz+Aswy%(o5N0jzLr~5Zp08j->2t*y0BqMlWqOw+3)Dg|QpcvoG*LumDJiq7 z-`Msa(!aJy!uKP_WwZFRIzsUv%;Hn9R_D|*uVQuxDFM)LY}m}MQH|^NVI*B{?0W@) zapM;r3*ajiI+7r7w8eCk$s&TDUC*$QGhr)AA|g6I24R+3>&s>{W`C(;4$aqM10-LJ z0`_f_=5+l+?97S;O6p_|s%~e*n>i^j94stRU$K1~6PS*o%L+bw++RC<^i%Qn7Kryc z8E8@_aAH=-9XT3t89EN=7@ilTjh ziJ zzWE+A@-K$MPpR6zDgiq%11lphdtF7jCd6Qvi^#0vZORCm(T*21ZTBwdu*Q5i0^7SG zEGLzF^H~L`P3pm_JJgi1x9>Rc?_3FJ$fd($%=Ht=&2$!cJ*hBDzBrgfMRr5Ut^TI9 zV(F$p*}l52q9R1uZ9)V8POeNb5%=MZoyXRLUl<~sVvG7s0S|FysSK$T8xlrM=^7@^ zK5)_Zdkx~xok#~`iG}S3A$dG-b`Ty|yndx6$pu-gm({7PHAHK&Q0#f{`Y`cKj-C6X z?2ya>cI`s`Jv1LOA}ox(E8F6S5g&R@%W$f%z7-?*-Rl+pP^jgED-o{>d=@XsN9nev z5_twwzm0`!zjdMvTgR{g7p`8fM$V*|04tGm4@;p+mDWEig;Fb0Q`6O|1@POhdAa}b z%;cJwH$Z%j0YY%p@ zLmM%%p4eBe9aGy$KdjTW&5-Ap*>~F2FxhJASFI~(PD_XAVak#|DQbe!`=@KrZtqUR z4}=M;)r#yTX1kMD&453Z39cfGs~gG1^)%dUJ?v9EZ(=d43WhqJrP~Fe{|!W`Ck z&+fXwE-icS**I#ryS|s98OD8VwlP!of!k_h$n;=5H)p~|zNeusd=e;cntFZ|H2qVq zk&$!y2=UcU_{IGXB{~b5I3eCc2HAcG*7yB22!vZjXVg)+{o=Sm=@Axrw09{fR`^&V zU^LLc{EUI0Ow`6SFhUCQCRKTPYazV(3A<6m2wnu={Do4(Q`e9#NTG@t!fcc8iKdqL^V>*3uYgzHd~M8{}O2tk=^bLF!9prunsW0Mr)^{ z&YrNI7gOu85<)pIk1Y(NsQU~CCCuNVi(F#<(VGruJ7rY=C)#vZ}?w(&% zN0JS!4Mj>_D$P$x_AT!q>5+074B@num6C(B-|aVNCR&Yi&sB3y&XDBZV>L6?l9?jf z{V3DqrIR>*4<(n)X_$~E)U!a<{?vA%9$DM`U-rJ8d~I(=prlPvHK{RdQIK z77B<_#92uqqHtuS(Oi&ka6Z-8z-xn>ubp6Qkox;wreE%S`=gp%Xj-boIV}43xuo0! z%vSxO;TOTUy4yJ>9*e>C4U_y%tsI?-j2TekwA^(M?L3)L#HQGrPMd&5?^1;Ai*e}8 zD+n5e?sI+}Rp0hip0BRtt=wI}D8aJNFfe3CAabm|L8#r=BH+*L2K+5VjX41jvuXm{ ztnjQUDXNoR#RM6jeI(8{>y_?PFC0D=C#{vCqd|t%nm}WH*yD@B;&VdVqULt@?Hh~t zYDd7QfiFj8*31%l527`n(g^BKoGNU!I0*Vng8F4l{<*wRu@Uhm?BV8Ar50c%%-Kqz zJt6;m+T&6slr_SmF13HEAuJ|cPeD+dqK%UPLbab1950=-Jo1VGz{Gx$?d~?#w})-j zKZE}jf4C+@G;x3|`-~B;qG+wZh?%j0kvWGo`BA#zrrc(8s-dg<(dm@+v6(78>&VuI z4VmTs$Tc-bvLu-B{da3=A?zZjVwx8jid5Zh?YA!b-Be6c^WDZJtaK5=F^S2`wt7B+ z!>qN0!b*DUp^|~@a1{(2MYL{mPv5CE2VaF@O1*n|*nj47R}WtfzbD!vcW;7=!7nE$ zt6tH-f7PvDD}0 z;Ve#GgC$G1IJ*Z-Ts^}N?|c9p+wYd<>Y<)r#k()0M_Tx*RKZOX)m+C?s)v+|LG?~- zT0^F%N1JY~HkPX`+C%)f6&XZ{>0F=jV(*(cVTC|Zl>$be!5sZSFX|!Rs(aeHr*fK4 zInv|+gA}%V#_o)j#+yNRU|!i`f?V7n(Ah&50zHIcmULrxOZvtaZ%n_m!`H%FzS=@z!Vk z&urA?HeT);=0QDg`K3?UuvGY z7;=m~v5;_<+3KCi#^f*}Rxhf{yG{oSI>xT85B~tyQI*P9-5;tNKJX4vWs+?x3rqFd z^VCPWB`_=oT+a*v1FOGSv+zaBGF7Qi45BXqs+5CbN=6UWi~X=Nd)eM!rlNkzB2Jb& z=Ss`&Z$?4V5INKoJ*)0yXO$kY{QlQ}g~#nIZ4pYF-L7Jp z`BhnMFRWVVL^e$%A}$oH(Js8zr;uu)%(wQ5&3x3LWbF7>WxO+qT%(_4W1`W|iNQ_& z1Jj6+%o$w)AHO|e-0@q*YF>j6d+%zcS>redx5!WfbYQz`ulYrP1g9t@oRL_Pnt z)32a~f6Kg7I=0Yj!ZVvuY~A?{3}W!R+iJk6pZ<5h(+lydLKu`Yg*2kiokM6`){K@* zP*Z>EVGWWAmr01E7?h1?!hW;#jdDq~ZZ7e(OJad9BJzG03(+qdbP!!6d)Vxz|LzSFPA*fQ8 z^Xkcd8Mal)#(aW(`D)9Fj2C}a@T=-^q-Xrxwf4P}f`~nn1g-+fv8}l6vcZw0Z+&p? z&@Q&<{edV4!S@e8Sf~dM8$PVgO@*CM@_#oGG7CTcRn*mJMQz0&_y~m0Z>c6dVXX)z zd%M!x=e_6Ar$^HF{*UDKGHygw;gU_LcR84o{i%cXY9GGCeKR^s zk3mUPc6{%~BS<$in)_*h@Q@VF>@* zt9tFTa-Mw*GjrRg^KH#*d^*TM>34oexSL|9?d5s3I63d3Z)+YSfzAkuS&!k#rfMIY zg|c!O+v}CSdykGo{jGyVt6}Gdc~BfR}%rp4?rYO zA^qNTO34ZGx)~*P%f+YOfv2un)4tD)(8Q_0p^ z-nL_%th$t;VtdwW?NPww*3V`XF-X5%XUzn%RvHZ?|LP#(e81_EE*5mJ)BEn%jTX8| zCWF$}=VofGl)h^KkETMnKmEGH46S5Uq`*ZRB$Srrr%{RCv}#&gKEM9glzuoT|9u z(=~+U`<1p6%-@z6KHT$GbwlB(%h(-^zhnTOx8MMsjvoU9pf>8PIGM2xnBVgpcV7Sj zY$~V{qYH)ag=~dN>u6ll#J}xXWfvZgVvBi;f5z|=y4+B_BAP{@7uV*CPWnYeBuHBB z$@V}Dk24eBMlus={)`^6=Hm~_{1`3WMkFTXx7+7WvpATTJJ=KNaSQ#9fJH_QTt}MK z{7<;W#v$K{}Yh)&U!Uwif5r# z*nx_ju6`dEV9$4=A7PlsjeT)1Re=AySJzKdPpyzg!kO4}74NBb19Vt{SzGg@<>1a5 zqf6TNP2foOuYR-kOg@BOu;5E_-g;kShR087_T5i(+u%)U#aD@nJ$8Nh( zoUw0LF5a@YePq&!A8L}6*tIv%A5j>>98_VnOtbwSd#kWy@uh7h)BcwezCjG8!p|ul z+sfT|TY5dQHYl;J;Z{2Ds;1$1wNG{VYog!xuHRGRab&$b2bIT$`bm6#{kumC3B1=M zi!&|1Ev!;Zf1OkF@u-b`iXiRS$74-8$8UC)VZxpoBDc+ zrgt6LQd)0$G5L4>-9@FESqU$GvaVfnE^*`_puifRPKaD>q6j@3q;{8T_?9Dx0R*HM z$nF922Jf`NmnFBCAgjd~D<*KV%W1%f2Mx8Pp@AU2ov9+#E+c+qU1vLQyH(ZhXHALm z(TMxwIZAgvb-Ma~U0;VhT%YIJGGDUnM0cJQ3=vdrXZe)_J%m?;L?&BX+Q((H;sc-cl*=F6UdWx&S_ew{ z`Ea#0yJV6IvTkF{8w>RCRBM{v8mplG4Qtc#5`)RCm2!f?nNUhl2)z;AqQqcYm+dO? zhlP4|v2im)4gD}V6s^tEsJ^a$_lL8}6!ik>0Eb-EjKO^T9Cg|p*AL97D0I2_kG$D3 z8O{XgFzrl$&(VIE*_FV14pVW{nq=Ha+z5NUNZ zk}$G7zrN)AM3-1WR974r?xXidcT~cK?5rx`|4E2fi3BTh`;}X3M3VnwdL#Egl8W}n z{TvVOHPNhuXHF1dqCO)50DkoIiNBs4kEVLell$QT27P+2zMTo?SMS9w~e^>)k zK5FT8R^m}vZ#TA9f^IpdZb%n53F9g@0##=Kx14 z`}WggQoJ9Acbbr!;_Mt-(l;MX$q0&bE1S3bJ<6`QsAZ8=>+w z4ew7c6f8awRY=5QZul!@LDWNTu-PQt@K7#qu=D5gi)yBm(0C`$-o-Z`*RDv&j2sAd zVP5Gp7gFW0LgWWp>gvQID{?n`0Ap2T!b8-k@_wPsGGG}gM&LlL^!tQ&Wkghm&uIR!^h4A+%FHoM4E5nJ0 ztY=sm+6G-zR5E`!V_gkKaVvl`AuQd!GU(zyxuBn{pRN5vxIMSh%yLu5^IlKt9LRYm zE+?wA9SCZ9m8?VLmigLSW^+lq7Wdz$L^t3q(OL^ZPj0Ot}VT1 zX6clXQ?uO=03#{97dKb@EM#19HbYP{mGz^hm*cjttJ0sDS1>nBWFa0odW0G>{yF+! zJqEZ5nl3(K`t6(cA$3N{OGfy$iS9pVo$J#Ft43Zm=)w>Jct$2LTjVIk2%hUo3~5}| zrh+U&dY}7i`Y)QmIvT{Mm?i?7+CD#j)BLJGW@>b=O(VAU`qRGE+LoNK%I3Q1rO&0( z`rl3`vuSC=zTcqy$eAe~Vi@su+iS)SXEHLlpreetxAwqD*??zh;x+!`_-r%#A%>Lz zuYn9Ut-5dbh0#qi6qx{Et|Rkr&$I(K&z9@?Tfm=yBq2&um|nHsaOMTDmGU6XmcJZ5 zcEq#%4-4mJEzbYXZPMcM^7@f{{q0XU-`k}+1?(YZuk?K07>CR*~d21=$Z)$3@kd8y59ToT%ks{k-^|-eM3gfT`MaA7yD20|bWW6ge zpJOQ*(;b$$u2gT?U_9FR@pi%JDK4yInZL5`@VAKX{fc-WZ1+(-*7U9122+DiN z6bWwM7r@@Blj?PDm289btey&Q<1w~H%Y+@qFtrIImxPLXVc#zOyAJ?g<3%B=%veDX zNEGMNapbscDMT5*pZu;UNKuPD&NS_4-rYbNilNc0q)zbd*wg+h`KnK6w1l62(gMR; zVgAmew`_Rrl3OQ%=}|Gbpu{R$v!kgY>u7sgFVcm{)6FhfRly_*Qm?!Rh~X=yMfNtB z{!!FNH9w*KWwyyW$=AU1@yF+v6hctnX-%m@AZ#8|FMJ(PRfR=>Czp#Mq6;=m{QDPv>%E0ek+p?D{zdc0Zc!wsfhTLfx2 zz^pBEx+mG1hPi_GM7%5un~EsL&OeDtbzqIz~ANo>3(#`$_Cgjr01 zd$5{4Or?L!o^&kg&j5$p!|LWJ!6KGu6+T}zQqqa`)M<+fSo#4v&XGZpJ#J@w{?0hk zaj~ECY`MJwZ+s{h>U8tcf7npV>*JmpE2(POBOLCmxRJ}#*Db-5B?Odzek~V`I2#ex zX_)hV{WjyD@99FCy_TZdC~msdod?JL>pHE;=Su7)w$zK}of8WbZ=tYl`WnlNgt9R3 z5FnA!UZ;0%U(pg)kX16)SvFfq{vi14&zw!s`(oyU3o_%vsf#NT05a7)S^lMu;iJ~N zvUz_XMbUbWF{T+tfPrJ+fn#{1WBkVAMYV2vedz4zi8(7hAtWokA}&;E%KNvy%p!@O z^)g(iT58=JADB7U@AV`kQxs}>{7(OM>sl>>NPM&}_B1(@-&Mc(ODSd1@u*H?M6G|i zU9m^bLww70gi>LKo|?|pxY#eLF7{pjq@?((gb_<0M)VxBk(?x@Ua<217*bd1wx5l` zD@04nk?(o~NV2-!B=f6w7unz&!s$cImRJWiaS7}pHiW44mwx?)m%>sb-YX#B)2%A{ zevN^a0i)I%s6UJP)r$uu*hj)+8@`*8wqmQVV)qR_c)kcfSm-C%nf%3l=G7P>HZkr9 zH%gt|!MW_K%G4LtnsYOutx*-(S{0~)^&57rXr_cqb(=tFh7hX#fQL17*M67=c`Vf* z)v#6l%9lShY;c1=d9n6maEB!82IF2h`b!C8r!&ATFmqz;+(#t-%>jTLJ{kF*+n1>3 zIlb=KXD{}7SfsQfyZyvl_0P*836tMlw|mjKQ($dES^QpDG}PYAUEb@5l@h+zNr19G*^n8RU!fYB zwJ>^E+?w|<$#3g5PsUqkr7M)J=t$8dlX4{US}JT`2c3Wu=+Zdy?trHR8IK!ybx|u< z`!diOS=$azdtC$rqP>mYFKupw0DA4me7J0V?S2r2L7wK&Zp-a>Mxhx+hI*|xgYEhL z!tYObp0W)I@T##=&A0rj>u@P{Pi{*A4@lpKiA5mbgRpR42Kns{4sV=n!uqvYv8T;* z&&T;K>rE3}cWXBSWgs{Q%5crUO7Iic+Xp?mbIQ!=dYX^H!=6L=~ByKfs*Xsnl$H&v)B zQIGE+e@w}sEUYQ76Dv9jKxZ@D4{ZZXX^@|yz(wv4Q`^8F!|C))It2kHvxbc$MWZ$* zxyIck>{s%C9ZV@a)Is1boIf(+SZw_V#NT_e+tj$M+7!}g=vf&gQ|QbWCQeJkF5kEFBM#kg>1K3FL5>Omc+g4|438z zvn^q{p#zM=9nzOZ>NRikD>;3$t2*Qh$JxTZ1)J4pVEaF-3T&{a^cPh6!NBHaoQ zX+TNye~Qk+t?9Rm!~vWfB7!GJ1qcvoT_$OX&tlWsITJ7%@6VDbhJ& zFk0ybVT54(-o5|9zSp(udCqgr=iIkpRVM$=cE;tq9rgom^q0ok@-p0A8lKf>n;CBD zR;PY>0=*61_)Rk@(Hi3;Fqf*yH1v^b_Dxw6{&k+x5)d~us7JV^|4#+k)2ig}fTtCo zRJG2f$!dVad&GDAQk&iFnbu@T_9_m)a`$)0&kV%uhqYI_2Ni66F}>Wx?eN|T)$2#W z2J$zSMN6@&WiVlp_ih8ldjXUSo+Vt?eS!|9yEH+eJu*<6)jQq^d1w_Om81=aX^ zFMy({+~Cc3M7tAL$wxmM@YaeX1B=Ji%#F6hz=7POFckLev?3d4dflM+=pa#HP}|Y5 zpJ`=1>G-Mzm)@}mwE}s2-dn?GPkN{I@;8Cg7$9k~e))YLC*r#_@RTqMDij%sA)&Jq z8XR-VX06;FJ-|3NmFoRRCoOrFFVx7><($uDYzX&K*3cvg_)v`er5{6pM}+_A^qb^n zOBL0ITRhR<%7w1EGzlk~Ph`LN9=AM*w5Tt4yCx9$(xloGLs6*UlyGzBEa^9NVEp)O z_PsX$KkptZ_poIjW%@$jMW3LaoS5|V4=FxeI`4Ytcv?%y5XOXyvxi7#7tw+}w=F?J z{I`)lFU|{L{u&w6n2R=;^&c+|&CG4F901ckrH?`N??nUeNmjkuxC`S1V5ca$ur`kYNh#(}ETD4C@ zeSbUAaWh}Pd_saAJCBF-;fTv-xq|tIUaDT?`Ib**h2}`sSKsQTj>QCq{f{dYUqbUo zF=@5u*)m%@+-}NzP@)E5XfzB@_u4Gck|~>5R-zSBXxe091_z?HTpm1GlkG;$ndO+W z{K3txNMzs0$}WM@hkg{Z)iP)e`n&X3(Y`6;b`hC6Dk3z3;~=L(WiB78n0k5I zv=ubY*Nk)ZRXDOmSP}e{%QUsYVm$w_RBh)=KOe7{-mdW&C#_yRYw(aDeZIU6R3ARC zdo>|>>L^>8BjEJ=E3ZBzYIkxsBUaF{d2SJkYE;5lxc?y4N$Y_)8$|MN%MhnoU+*vqa_?4CwbN^)7E=3FxxaF+vJu2G$E%=<8CTT> zGfjlcXKXfyTeS}TiMuPKqdW{>hc8Y*bzdCVw?>H@T7!{$%Y$mY!E#`@oX%*hI@LyS z8DQ|#i5>#(whCu^pD#jtTYt?_vRX+n^~xW(CxTZf-f6fyQo}RP86nHGe4paV}-8c8TH$67>xfbl-t0|RQ78q+D`UZkm}MMxt&Zz z3H`tpe4t!!uE8k4#9xqD?^I&GZTZQnO-s2Czd~m02DzfovU=ugrp_bHa=0_gMUl_y zpCwSx3-^<>+lS4M)l295KkcIi@EkzlbB-{XcQ~ulVVC?Df5~aDf6ykhPvdZm1Muu` zZk{!hGx>7n5d!wFS12MSE)7PoxQ^AQ^6!8e$H$E-`o<=FMwzHo+|H=4{`j|HmVGhm zdsLXd7e&SR(4wqd;0m|>DK0)W!<_m+bhK1(^-jLpfZ3Rk<+S6%FsGgK=5g8E$`+p= zy}C?${aDSwBXJ>+Kx(1lx}y*89kPCX(Q{>g78$-G`Jq6snQhIY?)VP2-l3pj2ZI^g zMa1-u!*PZ<;O3?eV#>Jex|xrxK}$ zpVyyjo$jt-DqP6{Wj+VrsyoQ&lPz+#%X8}IYhZTwJQ?Y_n=oZ? zaArMYO5XSX_I|qs73pJrsd~ zDJuj>D-=eX`MU7Bzm*zVE`7?v%FR+2|1bg&*n6e(>$N@+&mRZh%Y!+9h8^Dy=guse zsQ5m8Yq^+l$GF*@l4<@Qj;$i?|8Bn<6v76*zu-z8lGKt`5Cdvj*AOy!Tm8S?9RGkK z3yjzIM7-AFW?QHduEki@n`5YxEdk0OjVJX?eU_ZTEC+jUwtSS_3h=L0e^2aRbBP!F zW9xXD*{pp3${t*g`jVI^&>%``jlg>ll>p5f;qcFVqg^Jq`3MCTvcuQ;!b zE3Oj%sdzp)r9+%-cy1$H5FFM-c@~y>c;YOg^W9mRBb%>N=j&hiLJ-I28PKPit?L9f z<%IP$;nqLydoqdbF#oCN2b{&Fwj8j`r3?mWU^5Fas}+bGtF=AIsZ9t z(p|Z4V*1A#zAbH0mP6wzy#|2i>Scu%GCF|0Lo&{uV%HwXTw!r(yM$TK(LO+i$W34zRfpy&+B-UqXq|K49_VXFvOrPeJ2JbGPCVRohJzRh-%6bN)j+aZ9h+Xc% zbJ_{Ky6boegE1RE-))D-B8e+U1n#ywR`Y|NeaPky z?zi`m1ShIPqwZl?jtA4%B~CbWAqklcn*J9|7i3@&xoW!^!)t#es!x*vLnXBZsWadF zuMtezT$$%gxN^*V=bBB%PV9E1g29zS7%4RuN(3D$v)b;nTNdYHZya5xYtc%cb1JUm2N@-AggMt@{yA?Piu9z|mlby0U zv)`{lB|GHlafQ=`nDvfsm#s4Yn?;K;IY6nbO)MkDp?0!t4Wz5ZAbFvCU-z#J%{4el z`6Gn5MPU9WtV04E5zBa9NQ$2*%hYi&1%}UUm zW?`b%A3eWcZDF;tB;EPd>GD$+?!4L=;d^dY^FceCeeEPpZO3~#a+NliIcIHu#N=8g ziNH06S~pd*lm!n30_u}*8Fp56R>gGRfxUZs)5h`99q|ctTg;IMSwIV|)8^GF(NBG; zk(rqKxM!@z23}LUe*BPWdOn}wHN>)QA!Bht^yl-YkbItr_dyKd>@D`b^fRrJ0Jw&Q z>#)kv*$0(*u2a)k@BCVM{kkB=jwbYurU=%5`@~@8g zAmn#A_4*M^zlk*XBZ0lJVw$%gtrqhiT|j~AV>QeOIc-Gu)RbFEcDtulvo}4=6RM0m z6b<3Tq^0OJ?ygX=uzR|K-_$CylKdAN8l1A;ou3i{es|W7^5COsnI_&`Xt&x}MoQf> zyt>5i^D7OjcPUe+C1bzJ^WCv8joB!l%9iN|_nf#0mKoVyNrI|Y_NN7}Zt9Mvj$Q2e z%#l~LQbEpz4?U1w(vtL55Ws7)fw;!W^zr^5VYAI05Hw;Vkjjkfc$E9 ztXal|;bh2VXKBmgV}EVBq>BZdy^?8AhbE)=kSu1@n1+F1*v%Bzk=5!K`>qUH+SA=M zKIXaqu||tQ04ssb(K9g0dr9L6_LJ^O7O)MA(<$>O1yEqC(6knBmQQZyWTaNt6Ajwv zGryV`9tLHTV`qV7&qgISyz8heUL7~elQXT6TZ;?iy3$Ga(QIFor}T4mi(aX>D<%b8 zVD$-iim598arVkOzFUI@C`_Zg(hN%1b!W1HdYHs?ul1QC^CV9SdeTtO&RQ}lT4#*+ z-`Rs1OOb|vb5c9+jfOD=V_C;WM?(1vkP< z3F zGcw=V4hp{ALe?~&Qn z6hXt{OL!3hf~boNDrZ0o`tDW?ajk#}x)L~9yHse{)}=ThQBxX!`yA2_9t+@uE&<@7 zRsFJkKsCzM>TK7E0=%H#e{}JH+s@Eit_r!Lq@YRR$b5f(eF^uBWGEm40ry?r zV9SXvE%gV40MlICd$5f4%~v{pta@>?9kP-z4(s?ItgjB?gQ*@Jb@OO3plv=?T|@b2 zhT?Z9H80m_tT8)yv+UZo>10#f2|1D?8i-!2i#JJ~=;K<->r+iGB#Dt<%gi>42zd7J zNRR+`WdiQ|LEAIa|*4x58pu4hmu+--xee%cz;9uEzTZAY5I@dlv~03^%Sze1jUy=nuZue0^M#&R#mN;`$j^j7@f zI|uBlWi?J*ev+1Zv+RP8oU3>wiiMP5NS>~ug@Sd3r z*r$BOnd(Y4koyfW^$NG}n4)X^$9UZP(yNbTjw>`WG~qP?9w)k1^Vf^?sfwNnUg}%# z!`X?xoFYZ=BB|+Dcuf8fWFyYl0H|A18>6lQNixp_s{h^2oDdKi91=(U)+-$OAkJbS z{Z{vVXgKC(+;%Z$En5+ijvKx=ZA>SNhLpeaS#2U)gMHjlnQG%ct^uEZxOQv#tHXQ} z9?tiu!&xk}^5Rs+A|B4)v5WEN;tqgte$y}minJPUg`66R;glurrcm89UL*aBR}(mY zxnk>#S4AXzr2riLqt+SybaQ`I$08*OpZ@xHc?lu-P&`7A)jG4oX}?D{N8u886IPDD z<`o!4rrkqq90AIMvP9OyG)`!akEbtwS2c@+HLdIh(`}N8&YdXKw>bTCy(t|Xe6^?B>{m&D6RI0@%n>qtuDPZ8$mc-tC7Yht)p9%!>X^4K z!7?eTcDF)tBalP%$Ll?t@=@%KrONA_+=$SUXZ z+tCiIx$Kof@8(D9sc)Gq3KhK8%eaW3{%T&m*zmn=asatpRI$TTfIFzDW=&7Ks-OHp!DuQ7)$`?bpZbvU z9P^?{B}4mKJP{<1HC#!p-*K&Z9VSRpy8!j6c5|N6;M?paoFl#5g_E+Lj?}0tb+GqV zb^C^=^@)@RTs9+AeDQbl<0wlPfDD+v0kdZ)PJ7l>f4Um{$!EyxgjcRH)+{IztO^h- z>^+jj5MdV1UN`)fygv4w#Kv};-%(zlRmNv8=`WQkVQ1eqqt~!3;^3W)ME`GvnZ4bO zzmfyq*t!kKKJo@jWV9SijNiHH;~?_cm8NLL-o}VgZyqN+uO)_x#1pJzT+H{j!;OUx zxZ595xOqbpMOfc{$XCJRRojZL?A1wB@j4l`3*%iVN#~)6*%9oz`lfL@#>#M-K@}FL ziJA5C`)Ah}ng-G7{o%GTN81M0@6ttPkj6GN#XUhs_f55tCDVf53W$EMP4e$atA2`Q zKK}P;<4R&U_dBGxLCskT;i?Df`OR?m#zpV@hvv;}p>vK+JOa-H<9pjBZ&m(~_I0ZB ze)IZlWw=b?*0yEoBb`T1|Ixiezi7JB-CSJ!8)VSz$?5P?`z0%lS-f50*ZfON+$YAkmdVZAWG~GP=KuZFZDbY9Rhqfjy2yej6p61^Mei0SBwlE0zyqbD=hF0jsSLj^%;$~935br z6OQ?s$i}g~AEF|mpEH(OMpLL4z8{v2!#XqRLdo3Tgh=NKuU}R+uVOolVFfyqvn;b8 zP$}pzou6}u(`$Lv*=sv~v}n+(oeo6F3HvX7jG@8hlKsj>)yX&p(S~MiA*lO4-}Rct zufSpdee0rl7_~+4lM&Vf{)L$nFFd`tl%1$yLOlN75zNW?!wJ#@m))Ka;#LBl6yzesy-N4nDg_a$QMpREC5&lFDKkS zOusTkHFhJsXyCN#`z*X=HCz%D8}If-&Pgz>=RZ1|dfjA6H{fgkt{3xL_l&A*xN14p zg>ft1ia~2{9{N5bW{x91DQ`%`kqIBXN}I31OQ(rif0Lurzso7(o@spQQGJhusrGRo zxNnYl6S(ckb9PflKPz>Q`HVXMXnL%r>l(De) zhSo#n!UF?YJZ3@$R*p?(nM?>zs%Y=>m$M-|2qXjE^LYY%BT^)Ipy@GdiB>=3pJjeC zxG$V%Vnf%JV}+58<_RJSXYQ2+RbZ=jjA_MY&$eB4dXa$AO7=*)4U;1R7BhNcf)>Ph8h zT8j**j<;q(f536Q^6~J5wssAM8KqtY@2_gM<+iO9+x+pg859?sKj*cLK!dHpnd<7d zv}8|#<#i_4=y+J6%XlD&Mxp}R-P%hOwSU9c58^E6Af+}Z4<%5ojukQ{*UWq!t!J@< zrdz6}m#LiVy&}LZi6)FY&ZBslJ)JO)r(g3>F4w<(=Wen@YT#I@{xg;(J8fvc&hEo^ zDsTEooPc$7MDm)#8=5!HlvCt3TGjL3RH?g4c4RL%`uHvDU{D5Wc^|rL=U4wdCG)N) z#Kp~eq9RNB;@)+YrAld$JGW<_%xOA2rFjHmI>{(VLLwh4{%#DFMN66Ytip3#I!CId z(of;Q!zk4r0#hg_lQTyKxcp_n5|I-Mol#5Rk8eMwY+I4H18GQP*D;84^UL~wA{LC? z0`>vilwzor9_+=<`got$5Bktwh%_q$ppG33jgHJ~K1 zYg2Tk+hfhqTa1)bv1%r_l7zY;L9CgGG;OF%T{fEJn)L5&uffM8}CuZ4HQRNyNlXyGv61BW{Mjm$QwG$CAAlBdm z8#k&NTA0Uw5yg4%z)mnssbU)w+eTLD6#@fEb@x=aO^qx2B!!uK>Kqs5KGh?^<~|%t zNTM-uH7T#4&37({#e3^Q zVmUrBM$$kc{qi;Q^10dAc~~V0o3pTLyT~~_;EZNQ9&GG4hGR`zdQ6*#3;z7+;i}N4 zck@{$u7Y*9esjT9;3Z0+GNd~e52GZ z)Ds^Nw*-5=i7wQs0%5ev$IAX>@Nuh?Q%fl?9nbc7Nd~8cxAKEkAj};)6V+g=yR0C!uk>K;$6^CA(2N5hLDh)% zDwx-JR@6}YV1yUP!%Po0J1ejr*k7nRiC+i?$BdoCigBH0#=UPFq378qxxcgE@~5GK zZ#fJZwk_jXw9b6AHGVnH1qXxx-q>9s?<$`X_5;9&55m&dIzLw5xO79F%C?Y6pQ=YF zAUGRBz^3GdvVxN0&hMcNHvY@ha<*DNu*A^XWY1ImK2SQ^khsj6Nh|M?qk`%er&#Kc zKCy1>aPol!@wBRanM-XFQPb^~ep@i<2?;tG0f{FrE#0Dp(MDpu--V|pHnlEyPzV=e zEyV-uDV=L_G_qa;pwM7icinX>jaJKK`Ck_V`-F$1&zejGQ>%<%Qf)XsS_By7)^E)7 z-H*-c%D>Ddr^9iHI5>ZEcATJ7=FO zjf&^yEVl2ORNqs>2}Svri@eLbl(1aqN7yP&+Y0o4<1E1;YyC6Wdu6>{Ygc^T zXvu)PsMuSW@Xc5L`a(07Et&gl z*lTfz9NQJA*QaV(bp*h<+in2`qc+he9A@IuS8cvY)yU@L3Rv(;tSf74R{(ELlX5dAaAcJfVt4n}4)OQBSm4}u zF_B7=6$RuDlo7ogcJ+#jxNcwGJXmi4pMT3p=Z@cSz+?#Sbs}3DXAg80FRdG&ULs?H z2a!Ue1rM(^2;_EuYG^V)zF*f%-vB$ZvN{e13-6Q-@AaW|l$ICjcctSrI2X6OTu5kj zgExB5Qv$aBqr1Hl#?ZS351XuDN@K%(Q7-Awd}V0s~pRNPhv20fMEszFmfQ;A2M15(HmV;5+oz%#1~?%zkPa>SEhKh(XFY+E`^d*k0e8GtUV}SZnUqFoF zjvYCvZvAOozUeL&v)#k?MsVuJmJxcP?I8;f7(N z^b$aHlLR=!GWvR;{ph~+YH6)&YfaXld2Pj!6ELPhv()*@@4$U)MC2H#D0S+ntmfq)7?yEM=lFqI-|to_d$ARvRCiNA?-y{aTxES z!50Y~Zt|d^g~JhVA#a}se&;95yZeS84}fYZ$xz~WLVg?WF76&}pV9f>L3!(=mwt{+ zmb5+IzPNbI&7^fT$^+0|05}WZdyxDw97`k=N%ZMPJxsx7P=7^UchAV5EfjK?&v@u& zGRx%OeZ{}NJc##?q&wF0__(69&jm;_`BeJFN$c-$?u$Bkb8S)Up(Ocj%R8Cnf6 z9gsLq zCITt*%Xt`v+Cf5nqj>7LnELq!f;%J@Xmh7{OSVfz%gy|(HW|~9klC9Yd`9ThOco4I zJ$q!ajz_Y*I3@J#{I{8uZvlhCWIDU?L*1?Oj<9_^^0Rp9{Cp|qBr9G@r}yl#S077MgZL!9sc;w%4BWBfMJskv|X z+u3rfzn_Zd$vA3mv#TH7@hwLw1ScCZ#=ucUb$Wo;XI>>=0I$7PrlX9CKIxWo%3|@W zZaFtu8Z4FLfDq{^fGwzLI5(CX^oL-;NE&M?^FkLC-a&x>2s&BbTGYT}PFiua{KH|) zvvz({j+~?SgW*@&USAE~&S$K-j;U~gb4g(C*EL$ zny-@X4AO4gXMt6_zX$Ko+lX63Hf+A*ffpXkabp4dL_B6)+-P7Vs z&y{Gr_aY<{EW@7h;Fv~F4_ zn+^%?Ah|*?7P$}|v|boEAdOSeC#w;c{l%$Lq^C7)Wj52~1>JnW}H*-4F&i}&8#}S>f z@1w8JEfGDH(Wz_c^(tax5n|)%uUcOFC7J(Vcj%rciU3wm22)||;EF~8dp_L+CSrx4 zQ&L=A6ZV5s$-I7%q-a;)S7u6rnZPo$I_-0U`U)ITryc>O05Ppduia9o=i&x8qyD42 zuHiD7fHQ@le%A{jJ(B}Q#}+_RgIQ zf>Sf$VV^&8-+Uz>Q3^{9-L>7QaJpM+*Y(F*Hd;F+-+|kn=}_NK<4hV*>ERFTS$^g8 zR7|s9gtXkcsU@p^eQ5fHA>AE1CbK3#TY&ZbTf)~K1#a5_>?iIFw31o|W(yUX1tz^# zUthWi5?93GzHD2Yx%e|-E=fm1owm$&pLuV?qj6z0yHRLTD2eM9pZs~hH zR%@9E$5EQ7I`hG4@&xk9LTFu>#QZ$v>5F~sI*=Y<0%w?b} z5^klJoeJ7>c?O!t1}`&wtxd1EoDg?5V3zW6fGYn6Yi(k>0PNIj?6{L!P1)oIpI8N$c_BoB-paI! zSD6sG?RfUi4F%DcN6>S=MkPa6FbHWk^z9P;Zj!B{kK7H9JH4o~l>4!sJY2JS z-#kpY?9JT_^dWFrRC_5PqvL+ssw;+EGMmlyRimyBs0#o(jJ(8OF&(f>_UI`M%8zr2 z_54f4gqoNZ*es{EWIMYlDULMut!4B_(_zqJeIf&MD+z_1hrJ05T%nifkm9a2G>HnW z9aO#UR?$=oFhHy1L8?mjR(L1GOJ$iS0w#0~1M2W>(b6e*;I$4_slYXYWmB}kfFM@o zs2opo>vmTgu2P)}e_0yK%smirKt%~2RTTeWTvDuSi86lQvs%fIr&$vU3-vONHQ;Ok z2>rdRqdN(^wg*ZPh~w;MEoV=G;ctUj3Vu^x-G}=~A&RZ+_kg|1KTLsli$06H7Y+=W zRI!!SqhAb<(G;Cto~P*tX_IY@zf_lrwXFdYHb06bFTRKG7YoI7472-IYdpL?(`i&u z9slUL*IzAWJy6&o(Dd1Zs|XC80S!|8PDwB{dARLqd}>P|p9A2Ikis6eNSFxx*Zc9I zRMNal$Spse|L9=)B_wXwvAH{1+$&BAzbVb(Ap^{&g(MLU4%1fAwo?s!eXVi)g~#V6 z#}OB{;A{5~*r{bcs2%@oT3^BYri_9_OCT431ZzTCK^wi9du~Yx-^0q|H?_trIE;7a zv4JZT>~@o?l|@VCfkzAexWY6;&p2UNoIGKrh9`7Wq5!7o-dQU}X}fMM zEr9ViCJbNqfm>X$+dNc&s zi`Vt=cwCfIG~JSiW3QQSn4@0P$cu4f*?Sej!UETsIh8$eX&Cel@OcFk0dDTwT(iTk0_8S2&r|80vfhPUZlYCDS%KG+aK093CO!Zp{9nvQdo_}bQ zN$50*THH4uYZtraSIZK?pCM*iXb)*Kce{x@&%`nqy?itGgzo}FA@;$|++8t>9qk~uGpc9|1 zmn^I_z`k<7F>bKl$^KKR(Q06hr9=;tE>8K!1VS4eZB(PPXRIPNA8th7OHOp6S8nvb zECokgoS7~86P_2>RM>=-2b;O=ysU*L1hA&Co7(`5)!Z7r)vu|;SKh|7aU+y0iPwCV z^uH$gUiy!2lCUG;j^-JZ<=r(Wt@zFN@4CvIB?B}+h|G;%A>eF%Z-l2c5%?wF-Rvuy zX(q;-wj|z3Ml`XuCV}u}pQuiKRte`uiDd4`hXK6}C1A*n@J}4;DqSNNx;>_rh?`wC zO+H96)gQr2t6}6H$v%7>49C^hi<*fmo>TH;a-{$)J=srH`mKi>bdzr`?>jV6Mm5;e zX^I&C4R!e4(!V*rVlFXIo?oll0cnYt;|hRl0FPGH<+b zpvVB4DiKD1=|bQ*Zph^K{N*hh?t!N(@>~|NG>@%Wtc%o1^5AK4x`~iuOtjGRx+A7G|44%q+8_T^4~cMi&AwKVeGJ1=z3av~eLG@;7$<{|x1M--?fI zS$|+&Pe;YNb%5JLMo9RY7ep88#XZ{hfSSP{roQzyJL*m7_O>Omz4QbSEd^BMxAzD3 zy&3T-Wz%l6+7ZF(ql)_<&M2akxE=+TDm{=by71W8Q%~ZVz~bY}ypM~+AVFi6JaJ`j zShP%2bSuSW!+Y^Eq@DxYh9;0w6L4*BoV%}^^yG!Tq|Bp7(5>)D2h?4o*170^KkE&Y zH~+#+tdg^;Hm&OHL`!=t_e@m#9?1>9>2$zgqK09=Qi39<{P*J~8TzKS%#sq4!y7Rl zj=FTqo`(EfRavSnA-jjH05yZuEv%!Z9`I%J%I>#RlRg+!W_w{>Bd!YQh? z>)PQ{Sr4RDBB}x+j`rkw7ItlR#j!1AUP{z=+hY+Rpp!Ll=*dEnz&l znFzvgG1_Tl7_PqW?TQgM;N*@Qd+FiAte1)g!GI#-&5T#MdT$;08SnGU+i@!7^SFk& z8Ny7-?r2M)Y@h-b8R@YA%rn(#mQO`2&ReK& zuinwXYh0&8gsVK~?o;n8{5&P7aPuYmd~K|dhLZxxqbBE-UQAfXzCl1X5HSdS@ID zsvpi$wfh$=H#a`f71LtqK2*|Vv-~YLMkcfFH(N#(K&#W5*oh>K7le~fgvWg))#ha% zzjMAxiZFX#IqJGp7@zJ<)U}qASM4vZ$^@Pn+da}=3GtM3WTp`P!U^hmV7 z@uG|@uivuT^_~3098nu+u8X$vH`~QNYbk?k2O>LJ!Hm`hMK(HBP`Y~(RGI&Kq>{V7 zuzJ5`+PWg0_x-kC+GjrKev}3P0+~Cc2Bk4uvZ|Th+1VOhJ7q&S((wWTw+Fk;c+LP@ zqs=u=%O*n7j^_g4VSwCc*W5QY`HO-2lpAb(S=1!XWi?7sKFn=B*$`!5gPZ=sT6Wom zQM5MK5znFb}h`2?cq;R$V+pnOw@Q*BV&j&utZa=78)WA@xv?gj>% zqrRQ<0j1Y?3>XDZBCl`&Q*U-_7rwS3rrIhwmSmpi82!?DgD6Jz31`cHNPoSjS}Kgj z`=}tA=PFkuoppvBbwBTcN($yI9gV(oXX8GTA2OQnVnBiKr>orHN93=S&A4<^VJ3((u8@f z@Ge5$w)yd!p}Qb~?z;G{)XgZZC8XyQEz0Oc<*Kh&CZM~0a{iE2v+gM69 zVLt1>zI{syD&tlpSSHZ|wB@vw!oX2YBz>xQIFUBcC^-*WYUmgeP6{|&x7z=ld$%)g zSevKytRN;2c7G&z*-{(p>&Wf_G23u|@_;16^oiSN-^fawz@aTtXrerf8Ot@&#p`A} ze?hpKN_|~HI~I`e-_)+pH}GkZR7iiCnODPMB9UR!8uOspe8UBe>AuCrf^`X2(AnFLfXPx9avFUx4CbM$7Z<^ap=gM=R?0?EH(OF<{jGMD5vzy`|gD`v?9-U?%#kL48o zcqAGwfF-VH4a9Wn0#*;z8K2dF5RAQ9R-P$l?A;5KzlZ7A%dwjNd$k#$=O>~s3nA$+ zJ(Qb7%*4gLA6W6$`95~1hT^gfh+E;ul0Kt&&w#8~E_Nj>D@<|w3aWM2c@0_uD5bGs ziT9*P4T!l1kVc@!vQ zmz}z);{s~m9(o3s81RoAR@pnQ&_WxzS+j8cu8vc+)c=ppk^7{}qA@Kvje%vghyS$f z%&eAJh7%f0LInagU2m8l6LMdq7revvPziII7+2)t40vaAjjT9ZHLP6rs4mOicJ8!7 zSeAz5nmf5^BCaVPf51|CpUTESo1%NxmkT!VdM=ApQ~(NFGuZ}8ftKE$=-{;C_%{)m zt4$PxqLO>G$B%p%e7#T{J5(R6errA(8biI>!q2M-VrqLnTWx@Ah0Xu?fHZ1e59Wey z`4ZDEA0)vrpltHoloe{<+N1V`uwsL6F17lgxCkF zNtI1tX1p>DltgX7A$z+JeiI_&5YohEth#C(Z1uiLdAkq0=Gfkkl{HVBD)6Z38@>`? zA|80HI6o}sk-K5PB{z+|w7?Th7yN_1PLprwh9{{|tOJcsX)z97d%>17l}5E~IO=uq zfjqvXu2YO!4Re(BP1SaCr|*@UkowkhH>W3b&MZ<%I>+G6tJIAZZ!y-)dCx6<|A|dW z2glRRA>Z*H7ecPd!tV@M((+4`Sg6?EEdjr%-kZQE^8CyQYVoE35uIf!0$Z)9&_jyX}o^j z!F60-^6kKMZWayh3EyIGYUWbzpLMleOqEB0D5rn9`$03 zMuAvU6BY0UoK6Qh>_9&laZQ483cl(CPa2b6=ck%qyne(nX@F=_JEn2rwx}oG8KmlX z6K64jk1a0*oI>X)7s`80FC~9evO21`#HLEFg7_3ouc~zZN^BS5rf%9OE#1*TDf%*< z9~FipOq;j-OpMY-_x%2qJ$vyVo#^k*1FP9C?$li_N&n4PpCK+?+TM2Prf{4Cap4zS z%byUnpYb*VU*S?Wu31+rqRekLY`29sHMC~6lgx(&9Xf^-g#;7(PYDj8j^BJYp>LMf z_c4w5kVDGcM17-&k34sR_r4iLSX1DG+FFw{&DDeG!$~_U-#rhwnl0^nsaLp}vut$t z20`YI2s+_e#@!DaKI5yk`Q$g6+#KK5xr+W~z4G7B9c~sKu&nnqHkd*V;BgMO;B5qLG4{(ZW@Ld+u{hp=7TLiL7B9eun&}Y7N?jx8T0ae+uaJPc16A_4&ske5-OY z9U-uG03K`F3h<3yXP>csvCN$?S^kyLLkD&sM1ObZ z*4LeExlq67E2}q$JL^*=S{Uvx)yiO;4rB2BDv+ma1Q+`Z-EnFDO? zB{ljQ?T2TnPRhrGI8P(cu@-yr8B~>7SSwY5U7Gvci%`VqOMRbP?x|mb$T9v@GHOtw zGR4p6P7FDvmiRU&&~98mS}a)T<|wE<2}a||AUxC3wr#o!`kLlJzdKF+&RsP5a31OI z(K)}f6WN^k-aX-1Z~EJ;0O6+d-0YTE5!g4=`5Vn3SmdV^Q+}aY?lp(H`gQ_((Er-Y zmE}~{t8H!J9!a=$jKx#w+FS^+7OaH9woFDCcJWkMf5H;;ysco0$-U~Scxkgy<~w;} zp(4)ofH9ZzG6PXl*Q(8Z>j@x^qu<|n>lv$JfqQ+y`=YtMqqRKiC##rB#6VK|;+<VTRh@uIkg_6~#8y@)|DM`6K>j;w%wIY=JHbCrO zKH=HUjO5b0Js!Zr;%Qug7+jW3UG!b&TAAFr5sUEOP(7zOIR93Lp+;A7Eag+%LfdBk zL4O+jM@PsIOr06G!-6)gQ!{`@FH?r39c+w}I)^+Q>Vc}UOD(4s)w#O{59s<0=1=xt zsV!ayxSgmL4ngDUcc_8;b5?RybHUpx&uuRqcll41z%$6&8OqA!nvKVH^ADnxMR2Wx zlhHeWRVf1#k=T_nBSelCQ*BKWP!^17!>LwS?8%Tmo%ASTCSvx*P9Oujx!q*fBFp6XTt#aHYgA{zZ%NpUs2h+rA&Ha z0;@I9|2Z02=JSCk;3o9EwiBxGqEasKHkKLO*qogglsGkjQa5xB3I7Ak zKr_Fa=y&25)+o(0%Qfru$CQjPoVUGkGU^K~EFy5hz4$fj!i$VtndUr7g=q4696qBU zO-4*UPo{XPR~nCz0+npYc|P3NxlO3kia0B@s>!a0L8t4*t>Qp1{o6bm>E_g9TL6L7 z$UgQf!^BXXDv8H)Y#W5H&)DUzbrAD%*(!LiM(|a#>bkU1vf#1g5zTegl}dOQE~v_q z=fo&Wt2<45!?uZ;6p+e3>Ejhz(^0pv(nKY}Ba>e>PPJTK2}WDo_v>NS4;Zl$c1<#t zyR7N+=?Gnfk}&6vpIY+knb2Q@3~RLKJooKho?9x^XUQ#$Ga2ElMl+AaW6^vycM&nW zb;lVU>(JuYqJq*%ACRMxJJ+RK4^q7J*`9t5tSO~`GIrLA@}&I7f%UFeQn-7)K*lpA z!+gycQpfA;E4vAmP1IN1s<_H8d3e@)gB_NR`!bA>g@g)Pb_F|FN%{NR9tiUaa~QH!)q9K2L?meaXoM; zEKQfVt)Zu~cW!LzZG0oA+YnORGAZCPjQ%FIVbNiY{zyjAz{29Wl;f4l_Ppw(=gF9gHn#!Eija4+A%)Le>n%R{6$G;Voq3TPg>TPLphKnGm^)=5{4bYT2 zvg1?O){RHr-+9_LswB8YM&!15KK1BU0u|E|XE~D{>*DcIoeFW6R(%8_rCr0we6vKr z2VhA(D=zm%w!55M90$i7SDy?-sa5Aj-pOJjUxn!?hx8HtYFSYex1l@gALX;v0st(xW#MAGnAzO?Vvcc>ZZ^6WxtJWrcQH zw0Vv1!G9NCTuUeROwtDBOlV0TU(Ts7!S5AVXwu6qp|pw?%)!7yJ+Mx5UtcW40HJH2 zDGC_4*7lsXJoj6%HadO8Ei)OnV2ttfubw6|MH%PRDI-varxHG-VLJ!oRVdIMnLg`GmtCC{6TX60Bn=^m>w3hqwh^7 zWnM1Hm2{E1_jm(#(U$M@uKp)sV$6Ehc-6?Y-0h>QJfFq4jhPjQU^-&Heb(HBE?A6% z$79WR;W@pUZ+3YY*(q00JO{*gY%XNPgsywn3qAV}mwsEVeGH=N($jO`E7qw_tkUSp z!&3uz;QlpkJM_<7pG@&ye5pA$t*O;Yq-rJ2p{otbPa^ql30`YrIa_f#-H zdvcO-Qi(K@v5aTGrBz{uErL#STVdr=5%m>hrtNKpv$hHC)~L%S;4ltz&2+{oM)U4) zR+Z9df_sRAfLI5pog#R5Zp)F>S5L%~in3&KDa%Gti5YGNI(O!!F5Y_)&(^Y>RHw>u zN+~W^xfIgL&;;ZsLMgQ&y!w)t++;IX!q{H&!tFWRd2a~PDX1< zDw4js4M(0W&!Cb-T$BV7MrxGyKj@FS3$PjDw53^6aprrn)i}u|Z&Nhb#4UkTA<5`! zjIcCU0Wxv`&2FddYP%S?Q|4`S9)Z{#4ZwOB;0~J$uuOlp}VDsZB&l??Uf(co?MR?zDY(;2n4Ek)0}2=0R|qLTA5U&b;@>o*!#ln}G4{!Q4L{ zYtEs1d5eSlNWw|f%a=Ck+wVM5W%4B_y7V5k+IVMMYg^c6--4_+1+UPs4Jk=8<1zGQ zI()qk(XWF(IFC`WO&;dpMp<`84|e{Q^e%Ei-Je?V@l?HrI#${0dzc#D+XWu+(5ZQE z=i4%Z3m(V4dpE<&1h?>PA#hX7VmRmCwUq6Gnq9{wd{i6k&sT;luf13>{G|0Y;m1?d zZ$btbB-AW9>snaNvKCx()~QaU#@*^9iagK6QK&9S0B0FK{VUDqk1~|&gVws~-&^9!=~js`+d-}ZLEuV zOip2A$7+g6&K5UmMoF77%e&trny>-#n4ViTPCjO7JL)}7R0lb3)eDT4Il;wSNhZqK z6=soQiJguBT=QO0;;$3Qv7tx6UqecqeWg`>krS6KHrDL$?N3&cYl#>)B=pU5aNW%$ z?7)+QmIJkWsi;LR$B7lqD>I?Bybbej&QHzFY<;LU&nr|NATyu>#ia&GI9P)jTDgs}N@p5IE|HgVKSDmRyMA2owyw*#Ij z(#?&#T(_<}(y-%uwm8nraKr!y6rOGu?`4fm_hhv#Z`2Y(u|Fl4wsK7{+%bITrw27J zX31%fTaqNtz=@|xUNkNCho_w z2Sx{wN2PMQu8tlvB!74gKozWJ;O>cWyl>Rv-3)V-eh8}U0UNXPb*|ZNu4Sr{xYEpa z`iX$iT&N& zR(6#;r?WefQ%SAOe%U^i;z7YbGh_MH2z9i&xdA@u z>0K~`sd*lCS$h~+ZggsM7&+};HSt!-B#CYnL6E_gKBQz-;a#ht;*)C zJJwrXAx|-Wal08E>#fD}$f{K%ElUY9IUBj=wyh%bA9?5oYn{6%b8D$e#O~Xlrxmqj zJP}xuKrhGyn&+Q4C5@rV>gsb^oTZ8R$>z9SMgwsv$;%VRJu9LMm8LnqYuKj^n2nC% z&#h=IU%MI49qMYgI+r5cvC!4CC1qS3b6&OKjZ4bdg}?gs*(!Y0ta4^*xVh>sEF%-Y+qU7|HAEYJ`w& zb^)?SLyjwto-bpsmP+iSG(}>39nFq#DuUa(yE6^Lp{Gip?%L>ADvd9Da#z+-o% zKg)RH&IZxR^{wgDZYe#MzfeitkJQ_$4^?G z<4Uzkm_TaHPLD>7KOQBGO$-jWp9watDy_+?X|1UEXtVZLWF1s7c02 z-s~k6bcZx~0kiWC{AN&FodqdgY6J%*P~VsY59WSmB91E4qzX{4(lQMef{n)4L~_=L5Gjl{DZw zl_9;)9M@DUFJ#l$=cxwdq{>oUFk(0(JX8%co(Ts%tIw@oQddmYUhGhX$b9S@kEKo} zcN;)0?^!yFlU6!z>EEE)G7M}F*WR}@RhCUv3g@UN6%HKq8#m>0l3mYp)8T*YxRLp8 z^>tz-$fxFTeR@~RLNa@wq5C;gq>18(V-|Cf*A;d>rc$7exvx?b<@X$uuBl4NnvlX> zgMsbEbe47)MG=g1-im6{)bJg5CutpJj+XOX#h;rGo|W~t!d(ESuN}vhN=1Sgjsf)* z<7bohczrf!?0gZ0jImzP^heoxZSRv9T%0Hv&!u#6YMHUqsnru8B=z@D{M zYeAAo&1F`E8oD~^;#!f(5WcuT$dhw}3 ze$mBwAFJfpiAyi8Lvx+lw#9b{B_J@OX(FUIcraYGe1a}?l z*Wyr-3?7{;<7e+xyXbudbfA@pu5LmpW;GqW+lv#!d-tcycr!Sq%8D2FEx!PgN#d(y zlm)pyw4*Civ9v9JGPT5{L-LWDz-`i8`I#gE)7HA_UNLQsqHPl@l1V%cwI#d<&n|vp zn#ywbH8kaF$SycWC#_O}M3)Rn$=$~tsHG>!pg1-mD_?k=Hbn>S?~@ z%t#!Mtw+E2dvV{bVa;`95wg&9T(b=FI&)f3jLHYz&r0lqzMV|xWfya?(=5!290QPh z*I@z_P&?OjAlp707gw3I7ki!}3C(dA+!t2J8S9GctMFNFcr>-EbIx@+8XZPQXWWMv z0CcZ5@dV__l#t<189i&yNja%A*KPYdqsT9=oBK$yAe{8Yb@~BWEegt;j(+ua;v)Tm zIq=FZwdJX>Vv<|(h&K#=m8A}k`_j@TRl2FDPBf|6Jz5its@HAonOgSQ5WKI|pj!k(~BPz|l$83}+(^H!z z(%4+%Cw4mLy>G^ZN=7rZE@muOftD+{C&@5e6AN_7qs5YxE2<3FMQ_d(nfHE2G7!D^Hi9(tVT*X(R-RJ8{;i z#AbVi50i$grqxI{E`e3JNkw%!xJ!i{G2Hr9E7=r8N#%gAGV=DS$5j33^2p~JL+3W! za6dY%o1W<~4<|i(SFL+A-$R;lT&YE!1-aW1%Voi=ZD#e_aT<_Uu1{*0ay;Ej%yZv4&1T-*xS19p81DIwdsneRMskmmJlcsWP0Mz7 zeidt}ZdC0fkIucrLxM=%On~P-O?lYll%0i!=AQc_uDV>>oE~vrHLkNosJlD;=HuVm zxp0zJaA#Fi+Pdg*T7{Wp-lsdd)jLQgx0Pf^B#%noRp9Azzd&>+N=f|8J$5J5^%%h| z@`5WR^i{UEQgFncaw}NPQjBTDg-_c~b!E`>Z7S9{G;PFk7P%c__$Av$hdDi~$Ds*S z#Yw%7ZxJ5jy+oN=1xuCL47oScmDTu`TZHf<-*%L6t`_s<6gtigQy z4|7^gE?bp4$x6u>TE~bag5B4CK3em5wMUuUq?_``1lL^(9JE}YQ<_zz>s{?))VGr` zSjQywuCqjl60F3W4ms;ktxk>6aJ^hb&g=k|TY5HgR32p8w49vREM;}fcFr-4RNmGR zB32}U^Jnv|7$az-0gqEtI*xMG=9QqW6`>X7)3P!t+(%l>H&RDv%*W>=nj>##%FU@> zH94PS&9#e}C)C)GWm4G3YPo9r5H2ur(v~fL<}pT?c)QA7SuM@uq^hB|oN_C6(*6F* zM*jex92)0TqdE#lp+^woQe4kuScYkgjO@j^&23wgG(@pH3Yzrc7^aQYX6C8))QyLf zuFcQAQuAA5IXw2RSSwwz*OEy@;&q86l16;+J^I!+lw@_}WY@PjC_yE$;X~e&Z*ywG z&uao00#7Fu-dJ0rZIQ8nbDHyNReYyiI(+s_qpfQP?Q0Y)He-`iEM$4^RGc0#PCD1G zMv|w6QtHl1n2%|QZ{&AYHs{I>yNcgkh9m3VyqRB{L#hyro~0S@78%)N87JPeXT7+U zl?rV>$2HwXloXXobv(MY?adgA3bB4hJDRPk%Zq+~wdP`5t64@Tt4SzO^gPz)LH5Tb zFbib*(#Iza-9YW$y$Z2uq?w%`c{SX>X#>2?^B`0PpL)ZQDcPNFwV`L+#JGw}h|1?V>T8v~vnuDDW3FgbKYMaH zCn&kSnTGpfc1-Wdrlc)3z)azaGE#j zc*knyjMV++XrQ2pB-5ltQ0iDWTz?PNxm(0&*sFk~6Mzp^{Kt2$D-jcY=H(b0s_EO6Gv_f?A2pfU==QfL z$l-qXBR^X8T`KBmnK>tnV!mS=I7)YCL@!Dnr=@8+jmf!E`~rSnbH}}Ri+t^DGT%9` zi^M_>rP0vbqZ{`zZ{(6sLNoJM8>vDXHe>gPO6jM`?%4C?PnkCNJo@(1S#BFS7vuh3}Jj48%fIq6ewXQ23ZRk*Rc5wbSIKKk^>aBJ2h)K+^;s{-A<>(0!f z8BJ7=Q|z#ET%3%@zGY-$NCVQmzh8fvQ@bnJd)LNRsFh1Iwxn%OQ^kBib+Aj9&wN*o z>sMu^VtL4}>>MQJbHaM>x#ichAGSVQJm;F1PKqgHa_P9|oDBVI?cpw3YFn(y2q+hF4>laedt@e_?&t@S>-l{Zff6(fSw)>#kCQC~SbPC=?r zLfe6C5KkWU?$YI_PfbsooUMv&m(8Kh;=jBDo;uXFtT$z|yPOL2DPNV_b2-0fKWN^J z*|&~NhRNBC^schW*&uH;U7eS`I}=WW+R5@J*i_ZE&&H|u8I`Wf<_gp z$~&DUyom7zZn(g$xQa+H8zgbXb6z7cBu<7WHXskN* zBpjYiV~K4};-eOzpjN!JXu-(J z{{Z!?g4ArsnM$`+YTKwZnnCJY-gMnjnu-Bq1jpW1*~Y*omr+GSKU*PWWiaZghHX zoMYs#Bh*(%4Y4@fK5nA9@f8<4XzPShg^{BPVJ_d{^)+7k0f>@%_Z8*Nud|wGLQ=a- zty-P}&e6=Scv&CLiu707ypTU~!&dNWU*b&J0?_7t7Al+vs;0|~q zzD`k4t8?{A8dTKr4Q3R3z>mn!Zflsiv$ui|-KYy+Os2H9$IWpi6*tcJNaFQLqd-U? z6|PoIW!0TG@H!gqr%Rp|KLN$nl?uGk>Qs{cTZu%Teov>ZbXr~0i?~dLk)Cnhy_oW) z=y(;Im%Y^MZ()_K)?|^DRB!?Qbv}!B!N8N}-Nt*z zKnu<|HAYyz(HU|9E7H7wdJgBKT|!b(T}W;BKqTDVM*xb#)O@-19pl%fdUVv4UUPz6 zwD9gSB)76@E;IZj@O>+&wzB^KN860#_4TarQjM%Ca9+_gbDE96lYGszZ8-<)T&Axp zM`jN~4_f7fW$hs=+~3`boEG*nw43ITGRVQ$bt0d#1a-r>Tp6fiylD0L*TQjIOhs%wK9FjSr zOI9j5+y#6kb?>Nzo1<37B=)W@3ED``MMV-npTBBrgIv$CfpcIB9snnif!eYf#KsDP)44gW+EeGy@?2j%jeRk8 zGw*Ie=nZ!kjuOsBEL0wVXqf^{HS`{T6 zEL7I!G)9oVYU#Y@^tWOEm?+@LYG;z-6wu6-^p z1;VUk$ssua_ZjuCqo+a*b6a!9jb|vH*Wn8^)I3F{*%^GlIzWTalV3}>!uW0GXxZLQ z02xeYBalUOMt;whEpBNTdsQbFwT-ww9_YyxscUl5L^4Ti^X>Rn>|PYp<7FuV?*9OG zyA^7ZM8=&sK5f~#7MO_{MU8g)5my&XKyq+%-m>O$c4qwhw2QFV^ME~$YWT1mAI_9w zqoF+adXp`X3-fcIN|h{=X~5&C&0fmnN!^ZXEWpI5BdD(*@m8FgZTP#5N%KkbKiS7h zDNb%p?r@sN!>gOChcVm) z$;yzq$F*V)gx5c4E^aWm`LMi`>t91d9Oy@pEe{tFm&&!|4Up7*^O?!FWF#d&3L!S7ml$mTg8fyY0ceLvx!9$4#E z4C`>QOh921Hc8KF`21cI*+ZHq)ZlUc*}78bdJ^1;!3VA@j@F_u%$I1aUNOlBfnGf} zu9H1U#_G?Y-4n#HrnHT95t&zmgOa)LiuM?_kF>&~83+cxXELKDG~UYRw}P(xxz!&A_^?3h5M{t1l{v>9YYG?EbW6Ef zTa&$bE;2FO*12ZzRie~4W~z9qYST?vVt9vCXv$Bi7f^A_U<}tKulSA_;F3u-CwaiY zP3LY8f30v!4?+t_>U4c#wB6?PK5X%ij1{MUCwN`FIX`&%{VT$?olpBg@Y0t;-&`8( zqlUCp+Bjv1a+8JjJYU7Z(6~P`<2B6qegOBZ7OPxNb{YwQ;M|06Emu0rh433qgjK#7!Ij<_o%bGn8UD^=z zH*BJL4*cb~I5pf^NBgn3e8llitkO@pgdNjn%sjG#)OV{*fq=&y{Sp9qA^eR zako}n(T2dS)wT?v6ZJiW!Np(CA#rFi>O(qT-f-_ztt;&AIAtbS3 z(3UloZ@4?C*@$nU@`$~O-G)GWFIXN5vIuTvnzFBgsk=neP(Q&Bd(DiUL zy$MP0ac*7L3ZY3DIL}|kn#4N{3<7xPr{i1G(Ol`2PV$)a||Fc+#97*oZl@p^hZCllx5DIh>jSt=Z~8m z4MNJH~s`%enE4*0Yu1?qN8`nOW{i?1Cl( z1l0?S$^cRF?dw{>#uB^gZ97v-u^dnrbPLJu*{xFuSQrus_wQWxr#ZGdDm7G^dlW7p zMT>B8yRfWFhE{xFZpH@{tq7+Zn97_vFV&P<-wBMAEHjbXpl>rQqFjU5-l@qpp<_>E zoOjq@2bEX(v7C`ohuU$}{{TAbo92zklp@}xkCeC@PII2L;}Vr(dgi&)moF+R4aK|c z#2a_y^ihMwLR@{QeA!%a?_DyDx7>u>Uoh8T%p0yhT0}gM#{`n6#bjH0Gqbqr&C(v6nIQSHoWx$){^}(lo~f#?n8nev$ZN#1?x00EHsFN82#~ zNf;bw9cxV5l%ktj&w$mG|s_$Bt~<`&}(^7Gof=VydxsPx3e zv(+I`PN_GL)#UQ8Z`qRP)1-I2{!k~6rT^{JTw$!eo=!D3=fM7A1dnd@#HnD|upAnmGpLJ5GU^ zq~e^J&4`+xxfikLmovLvs`~5k{v2(#^*<6a0x&N8S9?) z)59Ykq!HS@={a4db=kccA!FwN4<@v1>}0zPLEJOR9<)WMu4ZX(e&yG*^4*b@m4F3K zI6sX-Y#G(rosRC<&MP-Ra?5jBML5{3)-!#rqY=oUF$Z!HNY;|6KPgsI$GvFg`EAt2 z$zI5(By;UKUzfQxUvqB3KQQ&FjIDHwZtCN=w|44(Dp?&482rb#8KoIMgeKFo7&jIz zo&d?Kc6L)-+(fZP@|h3Igd`t)`d3vbN~3qsB_$Phdd`FJN8(qC8Uv*Ge5I_4U+tF- zvL;d8Nx(l$*Ije_Is8-7H0dszO@jI`g#Q4e$(G3NfK4Y?2&2m9?-MCizL7cGJs$r6 zOxAwQs9DQxa~go^%?~FzBcFcsoNj3sbDGq&u{yiPpgH86R}FD)&|Cy0lD%_X)Md>cSGk2tsiHOL z8yt7$nEbKsYNV{}J>u?1yaGYxjWnD^p5vdbVx!!MY{U(fY@YopJ*pTw{IBXbCz^JB z1yac?4$BhTq-O8erF7aCm@m=9gz_<(_3%=S_B`xG<4M^1+u`lP=Vo$VI_`DoUQIJ7 zrJK-ouLh$30BL7N8Lz3PbGjavGwLlg(UnCx`McM5x%}OMcmu6E%{qqkZkIQ5Vt6^E zZQBW6TDi{Wdlh`Mb8945QHE2HdxM(c*GAMVd_uuj&9vQ=V0i=5yKwa*2GiM|UM4b~ zH7ja&@q^?pdg8px;xS2VQQg?5z9- z>WXG3*BJJ#Cpb`#E7g%oQ>j(8q9nTbZ>P+B&GUyGk)M^mqtd+lS@?6R+ZUG7HN6|K zfp}s%oc${(){RXhtj@Ow1@4}8b!9cJ=aY9EK_NUVsTs$mKzPo7DwiHv*@MyCnkOPb zo`7|(pH06AR}Id1HQx^B6HxESly`q#?hFMIVq zw*=ywn&^0@wR$GHeDjvhYY%Z|FS{%UPfB%vgLl1+X~{aA(%f>)Nn%(NoaUBB5A%b9 zYs-ULBh*bwo3O;U+@$Ww?V3Yx_W|UdNUfn$npPc?-Q0}Cgq$ugdx}pXT4p8l#W=Ma z-*zP!*|H|H+`)$it}IR$AY=hfr@tO)G5f-@UfsOn#|NG(6(r}r zrn7@{_m+bM1!BWKNjw^8g!!XCGj^>KQEu;YBN(Xivd7u-xg+Q6OXaX!`W~LOoL@CW zYZRid)sp#2$gRk6>Uz_}TbqzaJ%wwlnu{V(jOp2%ntqQp+<-(0$-o%vUg_a)g8GKL zY9(*;48LTZ16_g}U2(s&5#!I8 z(C=1m`5nHs%6wb>h%`SA_{!SvNz^TMI42vN+m<8_m|@U<8LcYgX~wIjmX`cNi{_^% z-o`G6`#5OUHj2jCU4wk_?d$Jdv_Av1OL)PHPKzy^qe2K7`uDGro?%r@+o;_*M^2|Z ztA5Y=71Sd(K*mSTp*Ej-@UIpA%TddBJl-F;7Lmo13>PiCaOyxHbv4~f8FZCJqdMIA z8|8YRH{JX*)-)|@Yh6OxSYAAkSa9H;2sO@K_;ztJx}!Ep8CvZ2YNNb$M%6JAP-*T( z_B)u^A&ir^_=j4facw`Cp`*bk<@czS6&GZ4OBYeDUWGQclu4FQquQ9(>|1v3y!~q@ zLQZ#m4yB6cvOwNnoTZ1Cf-pawUycQqFEgGG7_LgHP+ZnMDp-ilJiD|`ZJdp}`tzK0 z70v3Ah?YUSJaR|9L~C((sI7mJeO5vHP# z?m;6FoxS>#M3NC`TPHouHu;*ddRe4L9m6Uw%t#03KD8m7GH=dKdSqXic|y9g0#>S3q4{7Tx;PagfQuB!S%0i(03-QnUFMw>Wbd zY@BmS%mtQRVB=ncN2d410vvL zlGx{()w7(c5Ey43wYySn#$5=n(CxHcN#VOqvW6RSR=rLOk$Gaxjl}@mM{41!;{@dT zmr9~j0HvkwB=@1p#7v#X-Q{c(2>-2tC0s%z-6(} z)Vn`*oix%{xguH1Gpl{(&p59}@Xm!INSAV{UBfCEVz;X=XN7v6h6;nPidNY>v(@c! z=Bnd&9E!IzQO7G4mv|>5@~;w-aEeJ>`%GPBPCTUpGe~xXJasjzZDc&bCoXaKzaEwC z#U&Ht>eY26&W^)Pv=1uea87Yu-KL(Y6m8}1!N@qSS4~ATuPHMovMh7P(*P^kCF3kC=m?DS#|-{u&i;0wB~EgC3jJBv!*VK5 zbbl~Ht#>|q*<9o1_*tx5n2n$kNRRv7(VT4_nD1T2gJu1Zel70pTHT5J&bZ(1D~}z7 zRcLe5dY?sr%p$P~O=x`^;eBsQlF~I3d2%KfX&&5~^jPm;kram=GxxgJ<@Fs{)oNR# z^a*m*OO@Qqyt-K*3fr)1?YsW~q7qLy;MYS_JJxj^V-s0v?-fyP0?$0|DCh6TCqorDi?G&DK$*pN30!{}N=uukp9|2x% z&9ar-ganh?y!TVM2I^HDRyC5dY*Z|srOVT&veS*UgoB)%*7fTs(otQG zEIlbXbB)$7Cbh9`oSn77+g!cX=Q$ycMtfIg3Y=XhHPqtA)Tt_}4E2pN(IT-&L-UcA z_N)8MbDhjide?_iPNbxJG~nsMMCUbonHgPCil0$jK(%@GH!@^k{o*(^*FmauWg~`i zbt@&<)00m|h#Y4fJ?XG%2$!+UR5sI)eLv1?rj2J9S%m1h)K8(aBwxBC0M%&h$J)N< z%eU`PrOOu4Ek;!@=31UJ98H6osBZQa!_b`;Ss9S}Wacile-f`I)IZIdtj|I5n+m%%pC~ zIO4i$xTx8g!6x~O%0VXia&1kZ1gtI#X9wD_ zW3*}R$ZWT;uS)}U4ry+A`1fhrJ0s{n2Was&j~&ATTWA8kHr^1kg-|oryi82xD)LXE z-x#P;US+wD?quB9J9^iY>rph9Qpm$NIq6YFs7bI%v(Klw^Cj}Z=zVFcCzC2h56hl= z=C!F63q_j7eDUUG@3BDFLR@6^G&Y?T#-gkjAU7hs=Tf4Qmt(qEXgG4m?K1A7@!IJ! zE&w>d_pcqkGs~(sCAsV?(7;EXI*(>>+VNhFBJ?tzkPTB*3+Tca8i=6r~gQ@MXF(K*}N zx#el58<|L|j3XL1WKK=u9G607wvbwvbMs>(nrwFgY>3Ct(!BbvQl{u-@;2O@0(;k2Z)=FtEHVcqQ=LT$Dk#dG30c&a zQ+6wG>4CxNpIYhd?1XlxFdHk*JJ*q3r@EI`dl01wPn)qy`qMJwJTF{yHII959KrQMk*Qq{sl02$(y_`9X>qc0@ zmgqUH*1y|s$h;Cc1GuhrPo7Dedrn9<)ts#GwD+t?$^Mnq=ypUh6OycR&3pCbA7GSv z9!)w;O+JTwEy_TuoRT=J(OSv&W4ImIuOd9Lk2JSBr#ULlDQsn2+BcruW}`?-oUr6` z&1qUI*{c&moD{v`n~&Pb3ywLgy+SiDQ_9z$DB7xM?NL=d)wRz*)FUf*wN$Y0-kE1_ zDLY8Uc{S>|r%g%j&pxEwE4Lp*v9Yq*2KMCUtV~A;4spjltICV!uG>8xR|s3H8!YV{ z2fjx&mF6Q#Sd!S|tty+zp(o6(*tTw?h8?8ky-jg?t?BcmE66p;hm73$ndw%Y=%`1r z&PBRuv-gQL*y+|^yHg+s9E{gSEx1O<9vwM=zcu*G?1w7Hq^Gt~VnJT%-T&S{8(lrFj)4b<3?j_$RQJm+J3o(*=U z>Q2WDrR?DofVznpi5&>%6w50(B#<0(a6rvvTCC~8wb1i%G^0AVN2BSs5yu+8Rv)cy zq=^l}^bAI8;OAM&r@U=aDxD;B`gWzTrbswEn(nN%Nal$SbH`fZl1^OF6*{VJ#k<>x z4U;mGT=%X*Yk=&*zH^S0P-+o;{mxpC_o;U&J+yA8(;(#4g@O<=q-6CK^h&JMQ(BtS zf{d(b!*BbN26vw0wQbl+@evSgbKLc>N82ip_m5UDk*;2)tF{djF+F+fUR$qRZD-GJ za8FwJ>h3<)$sIN7IMYf;hj@-{?7;Bc@m@Wu%ow>Rpy#=-a|ER9x}H*>Hn%+X;0Z4d zNhdh2*TZ%`Y^#LJ1DuZa_Elh(5u|faPOQ&)(e2E3%e;2M6zxV+_K9O$g7`N&01tCIPfV@5MB;tt?J z$f{Cka($$+h#7(74ckBAUbQL4+HOr)xxQDi&}r5MV+!lg@JQ=g?_-2JlM9{?t#eCS zts~M=i=}1Ip(UYL;Z8}(&0V*!SyXLKeXHK3Z)JD6;YqhA26Was3p(dvBy`PL8g0Z< zpOYAFp1$=o@f76TTP~#;P^PAf(AnI1sWSBkCl%?s2B9a}(O)?pC_0 zp3NPje)8C{$3C@-eQx9eyz^c~H>L8P3C}bS<%@~VLR*BPuT$Ysj74-|a+7s$Ua|L6ca>xeK+!5Zn z;Z4)ub9&AdDqFaxO@R4sxX9%D*8P-1H&DP8JYd$IWytI4 zTCmy2DOSKddRG-%jX^U@CpMPGkJwTsEHRVZQ%@Y8#<d8uF0ErcpY^&H)^bS=-I71XANjTa87x}VAbiS`keIT%~ncJR60Zw zMjNXESd-czy-6Q(;kg68Yg!VLe4$=2bh)1AO{dz2wo(&0^{t41b_%-m=~-8claNuI zVv~`@_=Z)9Tc}+0L77vw_5DPQ&k}3jBxXCl7ras-xXauUN+;E&P8KrGS0fhY`r&jt)WVv)%jYo zvE|g1o*}o~_gfTOi!~>fJwfYNTE)agSPW;bEAp&LP@7(7(_)~d4rH~ln{lVNnVj>U zF;#|~=0sotZv1tqbYD92JXpa;N7T_8H<*aWIR~Xqnmfe<1_Y7MPPOCIg|Exp(rq-Y zv7K|LaNCrhObWrcv0?Kfl1Z+LF^ro=9KQ1II?~TKUSUn7pPP=gt8qHRr#Q|?9Ac$Y zoT{jucx@*6wmhd*ovvmjGU!_(rqcA+Hz_j$2d93wRtUzk&-zF@U9Z(*}T%vky=pw-8-Ucxok;e8_9PXF*`fv zyDLp3zMudk4_eB-NJCe#q$x_JJvU7jHH$wc5fbviXEmK~F^T}=lblx`8B(3^xVe-bcOU zj^z#maD#U(_zL|l)Z>oxP0_Uou`G915lpiIfhI>^&o%UTgy)2zTg|V)<)Q9k>cgXo ze~FT|f4U--lJWxb zR|np(X~RZ#`$p`UNwmc%tn2fE&!t9m^*B(x<0syt7n^OG#!0R z>U@_kC07-rN7?=Y_=yIyr9`gFB+K%*JlCh*Kic%?9Yb@)er=1U=vF@G4^d(%DLwXQ zl$D;>#O$H-^AnEs>Y6sTu-wHPw{CKHu1vu?)YOr9FWuIYdme%yivHPOg4=gj4|Qzt z%_~J2ELf6j0^CZmP$r#%p@S)^<~%%E&(o@V!gM*LM1gGasB2^6u(> zwe=WWBxQLgx$=0-LZ@f;i9#Bv&W}Zxwy%m zec~&>Hr?c7$6;PhZ(Hros&F%qJ$-7R;^N}UlW>}!a~H)>tojL(Qp(uKBe?HWd?jNL zf@XDM;EZRdy?K?VKdVYH=zT>B9JuOIk6lkjvjJ}bMA}b6JJ+k|Q8A5WB$C{k`D*aw zr_TBS=0F+0pQlpRR!?)#Z6p2I{`NmQ(~D}cEuU)hpwoqx=XBRJS<-3#U)p1lf!&Xk zgU91tgi?;QfL2p1fwg zT2$02t25@Y5|WhKXM}2DK9=9O5Qhi3$R8mge%5yYa~wMF*^VCjYn=~_lIl-uZJ zmqNRO&xXba@~B!3(v}Pq=b^61@~K|tYI41wQKk@zBvLb+WBSxhouo4L?@d}sE1hz1 zoL#yRg6yM{(~;jas#v%=VkyR?V?7R68EJM)ge+0AtPeS;`SVH)22qetddW(2o0N^F z;Go+jXv->qM&Nll>rsfyK3sc`de)LkJj<&eD&+Mn`DCLIGC<ZQoHknfIk*u{@bo((KQQ=;14pDRjEhB7iB z@%M+m%X4t?pEY@GuOWwCE5Pm`c(0uO)l**1TUFGWu$j*M+@Wi8goq{28SIqhF(UV_D7pDyV6Ys(9Zg;%rO`##=8EEyZjT;q4G zdIyKE{?Bt5$sg9fQx9q3T6>>IiCnW%?0Y_)e;n56bIBgHx41Io9M_V)*;$>p=2s(O z@}F9(AnJ2lrY+H*EQ+Ay*D0!M3aZKtLcF9YOO_{`YF9pNhm-4Ey}`>dKU(zMTw;zY zI_k(b9pj3*4Zsrs%e&vTMvgW&SBlh9*Ta4@@W#F2eP`?% zy^CAPlbH$m4n6DYa8}1raN0}pJX+EEwO(iNv&tm>>^^8i8E0(!^NiI5%yazhyA|Wq zg-F$ET@KoIQulhBmXj~Z^Bj)392)AZ=M20y_Wo7Lt2*NB?9P_e15UnYBfWQ;X|+oL z*;G;1u&p~S4v0mzMR#>%WEq)xKDBzz<44Zsxj;P$$*xyYQQJ~vpS5RA6X=%_sS@T= zK5X-oNps=*Ss;+Z5Hc?v)5yhX52a(V$?l?oHYK4|UK^J>*p z=kFf#q5KHdbnPJCc-lC$>v;$6<7VBsk)5m$-8l8Brq{Gz3|llBEwnylV-2}Oup@zj zM-}t9++?fPczPQyr@cmuY18(#HNQeV2jZr;Wv@gnXY!D?31`j$>w)WENO*I{b81>7 zmlrZImM`P;F~xIYaDK)LqGugESG29l(dXVJDXZVT=M5%#e&_2{>^@E#uj^jbC(S`7 za=(qqY|f4uN@S0l>sQ6WZcjW_rFV8~&8>$dfuEC8@WhgHNv47}u=WGXEm%69m-e{# zfDD~Usf4*^nN2CHGlRLek{KL77&ygJBoax_71-k5tc#_&5hFR|ntl(Hk=Hcs%PW~i zN=c$TWS!kdH1YZ5b*$67x+z656@LE!Jm)`J=yYe>ewpdmSAH4(^2a77+^ru(_&-oK zw{SM>6+H7_K*KawcB?dJayLBJk%?BU*zh*?Jfq}wiWYJJ$Dpis*5DGAVS}Ehy<(!| zcT}3DjX5R;%goONW}>*e5NT~cTrOy~nvv~2>-iWlc%BBAY@Ku3x;uM_uI-j+&gEfE z!co*vs;8qYGX+9e;11@zOUD|3xVpGIfxy76@b~tYIq{8hq> zlU-tRRcHO8jQ4jXZjWiuh~9+M3;8$lhj1Zh6VAFr2ZZ>PXWP)a$BAY>zFS zjm6t_IXu?&jk9?e=XQIF@Ub-|I*QvKyf1Gd9(K_*)2~>@uaj7Wp6mgf=68X)#M+I@#YEon`IXTGk*^0E&U;l?3bHPEbK5oP${kV7IK@S`xjLgUBpkLX zB7_pfiOA-;Z0XC;&PnrKbR-ZHFFft%t#lfFgWTLAs-4W=DD|&r2L)bhn{qKVqfR$I z*7yhT7gzD;i>$5m`%`x-jHF5c00EX_ew_Xl_uZet4-t5FBW-h`Nf87E+?!OI`W()S z_bFb^*MBqf${3Z1sXEc<>~$9Z01s~(VE1-I1-|ede@gY=4EPUDg3U~}O7e_tX6^V_ z1QWx;$=uo0l}3+b(lp2{ZQ0B#fS4R&xczp+?bk;uxC8QxR|Hd?M<#SiUe1z8!H>ex zhTdUa+5YcZvHt)F-M9lWfJdONWru=ydWp%)Rx(cw*|L)Gt7K!PdFHp_NMe=DaEC%V zWAv$%_4vN6}ho}Hx3gadC8KxUu#YmL#w{IBrucCyZ zLk${n)K`^hxigK_egZ`3-dt_R0PgKvRo}oFL>^*AxI}WNJcIPEm^w9L+_W=v>PL5{ zLy*+|2B8`WPje zTXLwUB#=dA9Tw`|GKF|OFgsVDIx}&7Y;OlTa&Kl z)f38gXD0{stf3U$nQ5wUyBr^MB)egS0|5&Tr>-kqx|MX=aTwAv#&(|l>34#P!3ed+1X%x8GX^C4DDxh05P^NzGLwgFZg9!V5S_mb0d6y)DJ5HVw% zXFUCCCnU~DJ-DQ&$u_#!a!n^8y90H@Hfr=y6>vz+chj46<1YG`N%K;>+~}4PTb@UnW}dTjrUJleD0dRQvKT|QE3pubN8|N)iB|X0NlW2*B3LI zyEJLGg^qPHmOPyFtMO_Gia>F^9FTj~nyKDBgy#hgW_F$zMAUU%uDDUx0=<~qi+Gc= zg~Ib(n4WpcF!DZwCcEaSyNI_LnL?=tx%I0Xo>>nE+PbLHOG8|KB~+78^ffIlmD4UV z=bGs4E%T3*g*}hfx?>&L;V9ZJ?C&_B{Xk}M@S)f&yDoH1< zO-dc|q>?>r;9)&(&%Bb1lDOeBiBCDn+FG{5$b2*M>EVS!|u{=MRxAXBh9vuXpiB#0wooEw7=sc=bsbwd*Mx9f{8601do$ zudMog(E6Tc03}a$9XiP_N}MJb>M+qtpCr zbrqh}xn@nokXt;SwZ0<=rrw&JlyUVUxuWcjn#aa(CBm1NIc$(kdj^xP+UlB2azObw z`GXTBIy-!{jwx%I}GU$ww zJ!(V%$(KD(6_lfCD;U#*QgTIwP1EFZb5q>O`;CUOoOznDtmW=D%xJd;CGpoarx;D7 z@tk$7=H2uriuZ0m1<20;b@!_Y%-LW_9V;1LF-DziJ&&(`MG83OvQJ}L)3o(tW%v|{ zPDX33(xF)$8OI>kqZi8?o;EJ(Iv$N?0k#7;BCNRqa>pXQN@=JcpVii9C#u~j%9G0; zD}vOO)eOu@z%|Q>_hYY9N(r{v;(jH(Qe;+cpy%H;eF9V*nQC{wyj)~2y z+_7s45@wM@bmE_>;Mpq1f;Qiik9yLQa;+5Jh*g{^(3O$a_&UXp(ug%u0-$=H$<+==4kEdgbLj7ww<%t-ALC-n$ruo|CK^jqv9Hdscyi5d7n3MB+3fF>M+I-;hyc+CO z+zLfb-vqTZxgZws1%o2C8MYTQIY}mq$$av;&OaL2Yrxa|rytg;X;iIc(H91xMc;PINpo<_ zyMWpJM!SsyJ^P%E#I8? zCn|K|%6XL2sVVdMp6B6ojeIhUaIQM299HBvL2lggK=12cHyLx)sN{PyNu<1pZuL0T z+&RE2kbP^8)aQxxiR43`4?kK@oi*lfOP7`U9#s{T*EpF7E;Ezs%}*tajVxuexEl8- zC{9itPd=M*hpwkZYh!S1b0Xn^tm}zpv$`kH_pdE-^EjTIWjMkzIW2oraR}Z^bH+Ow z#hv^rZ0=xuP1$n90N3+UvzZz;2pUVSQab(1|hwJ9tz zk5oma>0fQT^Ocw$z>c-uq$bYTCICI_(8X1}`4;CM8j6G+SLkF*1HA0#oyM)(*vGK$ z8P7G9TGooOczPc5WgSQbjzv`)v5&2Cmk!qG#hU<}))eYlYt$-hRrwxmuH7om&ASZ8 zfn2?{(30$LCzD>x6skcpj&ij{6m|Act6TzucR9^>*2q!?=QO7$B$Fwq!N}i>FAmOg z{OOYE&g0B0lU&NQXv)mWROL~7rnZ|Pw~4p^01ZQ{>ZmOw8TqTss~0-=UC&<+Rv%Tj zRC(~!nBHT58Shy-&Z8`r`$K0Z@~+=!&4^byp;MBBIRtq?A}HEIe}q><8avu3WckKA z)5WHyq>X6G`l8nD^{$c`50-fQqP(in zZ7107r)3n3T}|0AOJI|eT&|~dCjHUL72QgdWob*HvIJjY1xXGK1U{0nw3jOq1js7sb$~IYe@j|&M}Xra?XDGxvUbqY|WC?NbK8kI-h#N zzY7{1aay{Z(ny&`%IMCBuO*I2JZ7ukF6dYeN#?oc)M_@)+Hp~&+T7(D$h^$#GHPUn zBbXhdc6yrXbLP=(azdPJN?&8hp!x}9-ql`d1O(XG~7m65^Cb@Hy;asaP07go(h?2gJYairw8XB(_Y z5R%P<&3Nv;sIK{A$ot)M&2-V^=1f!l-8XZ9n&}#1ahD?@NvclmBY~a0>(GjeeBI0{ zB{(K|yqAoJ0kS*iyS1k^&D+?Bp3K4P~YH){F{Fq64-=Ngq$Z0qgZI%H!Y zQ_$k$dyL`!TnyHAA0!^Sp8S+~)rHiiG1_F1J6DqUlJEv@H&@8}NxGb}GsHWqK8J{F z_nW-ukQMoO_OB+solCat?(d5GT)I5RlPPPV%R>p9P{|vz+~>V}e}r_c>l}p$9W#pd zarKoPKQD7k1i7mw&sG-81-9zrb(spRsv9Jqo0|E2D{g$tsq{FRDAR5BIW=(CBXHb3 z>(O*ajN8P4+jDjFud9-qf|5RK4^mR8Bhl<&L2A49oS)96yR(O9oTKJFvrZK)@bzc9 z;GHJAnabNwPW*9N3gSqy_qgsWr`fpF^*AA0k~(!Q+uM1q^8j&LHnyYfCu)EJ?cTPN zah97I$}w=e-0Uq-M;78S^3|4(DHsulCb?qtc0%O0qWmc=$;bR!0<<YbrH+z ziGmAfKU`K+4m|HHpS{r6M>45RUvrA5Jt~@-%mTx>Fa&zbTy}Ie$aocIRw`vsj11pnN^K6rnY9k+mY2n9Or?GuRX>WcI=Mz z=R=w?6k_`sTRmq?UA?g6m`JPYooBfE{MY>Oymxg=tG`wn%W*kRb^$=^=m0u zLlcwE+>u^`q2JAO2GjC7_a~_0yxNK~gKYMpRnf#l`^wC%tHUI^gL!#(9Dq93j-LdJ zYx61h&2|3m;nPQ*Stw)V*2d%(X|=FE@yX__O{JlnIe&2w9AydmN`biGBA49 zK7ghTVl{LekD0wqY0VnAcWo|=96#DU?vGR4^qHYCCuTL(4U)&lBpi|IEAu>M4oZys zI?9zw3zu?1WA=lPhc&Td;ftGya*&b%>x$v0K3LvIfauhm)MBpAfjld56kBJ97(FUx z@c!5i263A5rxv8|syU>bG?zo0zS2Z-5?3A16~tUyNA}XFpcBRoWrwDvHuglp@=ZSC zHHVjONnTG%#<;RC3k>pk^{++|oF&eVs#IkuSmWo@7E8v;^gIgFwX%*l4*c#1Am{TH z_pa{?9#2vz(vq7@-iuX+*40#f;l?UEO>Jer%#K)Y=87~WDY?DPs^aOx+_vYX>DMVG zvTc3DbT!x6kU*3i3b{6<(joj;+`Vye2g=d{an}`@EsS?7BcRSl0-`PQIlYdULY+#h zx%01#^zfRM#6VyUqtd+MJw4IXvJkoI22Fi-8AV}qXUJFPhA&cU%So2R<}z3u4DtBa zpWZ_v+{g&dTajFGmX0X)CkwdCqY*H-X_fC?HLdd_aD1>v3C(fh5~&L_s*`tdf+4@W zS&P4!y8{NfDK9oVC~OY6_o&0&N0jEpNlHq6jV%vRk##utFm_o1892>-f2Mf1?VbX* zwTf+oM~nvGA6nlvq^r`V`lf4@)N#bM-7~J!t)ji~%+EPH1~T~0GhQL9BtP(xPa5Q) zlY&QD@^E!3R>ex1*&E{NNnk0?TiuXk!E_4ng9M!Zb@!jcuMqzLZTuUtjiy;;w|$ZP z*()9f20c30-AkHTZI{_;pF7T};~{^vnmg#1bOD(3JerZGwL}dh$fK@Zz^)kL6n)jX zt5T7Rcj7%3$t77Y5!?)@PC+%x-F!*YEiQ&4`$~?#Had^-uJszYk0YK{p-pS4%-?)i z@?at+RdRAO&MVF}kBK)|4CSt*bGw0)itnL47A$$>jokBIqJ=m?OR431S=IQAbFMp}1nn8lJu}v`ZZ73%By%Zk#C)XiDORaz z-6NuuEvXHrvesAV!a}1wkzTo_UH!7w78xOiN4Lnr>%y3vYj{TjsE~Fs2hez zp`cPX1tjE2@r=+dljbTp?rBCAhp0wPvN>TW#GZJn(p&CMMsjH- zZ+NbDpE5a}TFG7svN8vteANU{Ab9zW!b-v^=-$mLtX*m&xTrtgRRXR5it3c?j-DG9=v8-%)Z)yr zFt3D#dVdzoq2Zl&`$g5^c~#6XP%>gHb`G6vs2ss>%wb!0d=B4dv zoS9_QDmY2>{7O3N2(SLuh(^=c_4TaHH&K@N#8I!95M&Zdes%MT&kxM{Bh;TVtm3}a zk95*Ci+G|j`O3^d1m?OAIte_)Dvy!L&U)A9Rb|Uj+e@Eu8dssp-RyaPjPz+PbgQYO zKmws8*TTLro%H=iL^3fTlatoI-zci(E=GJFaf9VbT^Y++>ykrv<{PF{w2Wtin(uV2 zb-bwAq{uwvpIZ9rk$l(acobmLRyzna=V(4zPVDo|X6hQNVZLqWuLp|brxh7A&iFrh zsT@uIp&?QO?QU?{s!-p}CC=A<#~C>9Th2?8H|TE)QFG?*QPm`t;@Q4a7bgciao)Vf z=2I4~$+Yp#eQV95%Q;CdheX#bR+<)WRNd(g0Lx>ctG*kv5fTZ=$u;Lyl8q_FpG}v0 z*qArb9o4<2>&0TNjPYKZqs533MoGpqUn_{4sT7w(^g1?GIiBe5;6Os;Yt5${)NiHFPTQK+U@WM?wytxJTI=odP%~iUQ>%AAZig>3o3XiW#iJv(Da{#X z&s-Y1QAM`eu&k%fAfIu~X3+rLxm zTj1cS!4N>$H1T`y6ew2K26>cc$#G135LviI=~7 zp0*MeQIhp$Y{PkGAp2BXOQwGJY9krNb0VszHrZN89|5|P)|DaxT;ncBT>9446s>f5 z$zG~OmyIMPN3S@nSyh%&!=S7w&CRs;D;w@5DD*7A72?YigU$h^krp>%LEJinN^+EC zXzJNi?NX0B+(el%^NqxwDX)f=n2d3ZS6wwFG1IK-TbrOM7#o2*jw(5D8)ALj@lh|{ zR^MYPkW!=PatWkdjohB5tFe8~cW1q8s%=Z5n@K)irC{ znBmPGdNL1{Vr|QVoRd{ifF@j(?gx6-E1G=9()Zx4xTZySA=r}L4k}M2j9d2xJ%v?T ziACvSl3cg3EKs;o%)omSPQt72W5zpFwI>9lxvFw)a}QThI2qi>ty#5Z^JGxi=Z-5{ zPEA@}iEYZOhhwwRFB;nDV3Nm!o}FvnJTI+mY=h8@8tF|{g^!!BPnEQ{N6`^Vz9H~K zM%ZhF00Z3DfcTQc+g?sj-B!i`>Hc#|EowETLF{wl>A6#2<0t~UPtk?_KpReJ-7C9oUQIDyp$9zI6ZnlAlaXyVGW93uGhL2{;fw7~ z_8}ZVp(Al3x}i=fIZI?kSv@Ve^f!k-9@*I2q}PM@z0(~2b?7UnSs=pOt^nXyol>Ve z^g1cQ!aD9uEuaeDxlVuC6n&Zu58W>ZJu98v^*1AX3pq2s-5V#KD~$0c!`};di%yo` zR??unw3Pn&WQ-Rd?zS>Mohy1Zs$u4;LF$a^Q-xUa%VXgWi+{2;hMi}rc!%Nr#p?hJ zk7Dd(Sl84H?Z?mzSHgO}k9Vct%MIKnIU^su+_*XJF<)Tn)5p>J%vGefU#a9p%MV#l zpIw<+(oKbd1e|aysIiokjmHFzYr?AI9Zya=zcgxI>j`0K9c9A~yT4lEZoGRc2)wCA z(s?<^#w&)6KW{5AsZ~;H=QTHvW|l+y{D6NtKjAcDibVKf$mjL1QDLJ9u0(kiE4jtD zrT+j!QqSTg%u_2HmJR$$8-rcelkraOJgQ9ONq|WtiszmN`be4>*+L1eS?d~4#5+sX z3v>e#zdJ8py=$ji%|B4IW`<=d4{`yo4pE&czQ?}_#-w?XpDvjU(-z&4*ERJ&!QUMC zcflS9y|!I0CDrFSH--LY7~u%VO!LQ5dFU&@6^N@GvQeX>W(tfaji%?Zh4BN$68MVN z;`;Ye5k|i@!q_qs#s(|oy=z*EZ9;f#)EqZ2j)%Q?cp6ivoAcE4F;n((_n8)qrhE89 zGdpg`>&dUIv@Z{8)_wr<8rAUWy_l{#_OGYM(r*tIwr7Wila@YD$iZ8glHkW6!RWxA zmA7tG<+o(lGmo=LuBT#2$3tovIOOD2fZ>54@M@LW4)-i1xJ({fwN9;*l1Vi>tCqVW zR%R)JdCfRE0CU&Bt#jyXotclQSjBY|kF;<4b*>WT$>EW=DH-qUT~z9Owq_Mm=3R<= z2Se8s!U~4(&T8H6?nRPgSCl2WCY*7BjAs>TSg4@}K`c*NyJI^?cpIr50j|m%y!Sb( z#oJTYyg8~BWejq7>t8^4V_QXECTIQIcRb>_@wE9{Ik3~^mn-OZa+Q|fD8a!Q7(Hu^ zzlu2KX#pzP=xfiVGt{dNWJxZ)Y@Qzx7Cvy`;rfWLRwIZZX9ip7Q!*DU}>t5|?Y?hWW!o3hs>ETj4A^zGT0T;D8R*htCXr#bCK-ADiKjbsH-d} zpax2wWwfY9?dm}uxv!c$d*K^xTH52vLmlLAy%-#Hu8K7sIrAeK#Y)#cZN0I%vYFw! zO_G8~9Xj=_ubbvQ$6D-e%*r~gMe~@*2TIn4>4N8Vb@QaH)Xl**?mA1hz%>!M$s@md zTbB%97k*Z_Ym&BEu;%8C!GT_9zinttYuENR!@u@jep55!`E525b zc`GscrO36?-FPfd%Gu=cULCC5G}p}AiOzFgZ7Qmz+diBAT}Bc|KF_tu=LfA*c~6!^ zm~Jsx&P_cIzhb4fWecv#I-cgW}pn=Xgsvs$1>~h)Z z>0YHar3c*SsO2f8BGh~)ROI9HsUwM87GsZU=Be%_C(zwSNjGg-ehYAC!wuOS=DmZ! zdN}p|7U)vnE}O9=w|5#!1%3N^JRj6jX4_&hPIeMN?)1&*GA-CG=< zMPTlusoSN^OW=`d1xE}=TIEs!EWGl4>M5sY$*AunjWJ}tUjv+Vtb3UDO2E{|R#`$! zZ8gu|!RCe}ZosNhZH3XxU1%{}+nuYmw*pSw)&$-cU``i-?Oj~G%_A;UV@=`7MoUBh z&rEf!$$US*B)|%H;+?eA)-@A)n3tXyh1)L~Bpl?|C8_vM(V~6ODI{`A=CPEfqM9}4 zT-Q8T#NHi&ujA8_HF)!rl^FU~2Bq+_!sAVnYt$c22N$RG|gT$L&*)=)=WAk_yu?2n0ca_fB{;kKM) z9;UD)mRARG`GCmHbykbFy}CYnF|-{-Rm+#);P}xQOn+f_TL> zZZWhM!RUSID@vu7#%q~2+jn?Fh*TCI{d@%saQI;G1|DcY4tRxW|AaQ`+)1%RO=FjZSDL#d)5B{ z5*O>#m(3|#p%{;G1vnnQwXGB+s^zz1zIsWYyK0G+{GF!FT|Sf=^oL?N&{o zk_%%zS0t{fw)ZL*a=$`pgNt(P{{S~(S%Tr%?Es!|PpwjFqA{(^qjoBp5aefZ{OSoV znmxj_@@BP>2{)#$jW-?@C=(cihb z1Rx$j&$Vt@p^`#Xfx*G{s!_CV%;zg6df$fa9W2a@yb-{~bxfh3Cb()r`$p01V5HlN zd!Cozi*nv2vj!u}Zw>}P$Mxjb)e8v$u_17JG4JnRiE$S)#PYq-{gskIQOc>`sSJn- z!TE?h8W=Nha!q^`Wb{6jOGLy}E}MgN;}nGm1d*Dk%lEcVV${;psDQXpw*#Jdq}+L6 zc|7K|r%|+5D&}Ln=>p`Q{{Wp+y3|Zc`E01_MRmcsK2-HF_9?UHuZeysc(iMaNUj4+ z#HnOGGxe{Xw2KvrGDcYL&gVH}pHtqycF1VTI5#f#KMV026&OOE8G4*M`I1kW>TPM7_0^P{mU4@?3>S=_TF=)!Pj_;XD4Eo^19N2Ky>rr| zA8C0l%Bd+?MKjB8Uv#oI?6EyfK)0_LU@&W0!s^k|*FeB^aC>?FON+2P}+ zqZW5|!GwHurJhZ&wtH8hOW@S_DYwqfGWUGhTbsCj>nFauYVcTfDO5EfnH2Gs!CI5 zp;;<%j3dyq4yzP*URiOx)eUm(WVI?7Fh9zb2us?=UCFB?=}P;fjfNufu!vv|xUTZT z2L8jtADg{*% z5GAw%lSsLNbd}rFdDsf*|Yq{susQs!)U4;>(lbmL;?qnteD0=fw5xq;kg*2lVcex$- zEurmjB;%p)Tr+}LP_Z41eBuj5<4oJp(=A%?msUXhzy|VC_biC;|c!rscPm2DH|&g+2nfF z>kTexCJi9S$9nCj?Bh$`+~cbmO16ih=-NTIiKSz^J?cF{w@y?Y*frvFD!7*}$FuC^ zMv{!Wna?_`Lj$Ek*Y4X@2RRiJruu`e>{qFqe<|D<`t|0x9e+~=e81rb)~=j+wEU!92MY0m$aB z{hQ?;!nmbU?)N>o(~65ra=U^U;P&fX7LcN8cH=G7*KA$sH`M3$i`rQ9yBlOnJ?)(1 zioXO~qHa6qHQ-6wEgqGv%9+Rbj$}!=Y_RQ`;>)zN1|+fUE6{^+!}Bx3t^V~Up2edP zXbB)^(wdgJQd_U3OeDDzI_&B-awoS5mu3Ze)>=+wxqP-Ta6RkQq0Kh$vN*9T*d-Oz z==69RTc}l=an4B`X1!X|Y&Ls%tg#LAC>*$3B`LD>6R~m4yZX}cRt7$2jy5|DBs-?ejDOBcK zlRdfxC#SC!%HF#RvdbW4&uZnM`RaKK6B{Vosg%y`D=<9`TUmC*cOG&1*F}GO-9}Kf zcPPy-9kOdC>wAN=^P1WzLf15$uS=FDL%`-y&)(~rk{f-hH+uJ?Z<$!j4;Izl$lJG1 z-QYGrJk{kcB~p54t#Dmx-se?Gdr7MuMxUrG2&_(d>6*~H*W*iPW|M$3*1T**7b&CH zqgtF{?;c;`4-l7ypLk|&n6DeuZ>E-ZW{{T2Cmrk8!^4uAzU=br)>UdG%2CL~hLHVD zMzVhSw=p?66@Jf>qej-f&o|X!`OX{WBeAL$1(NIpVynk`_C4Czd)V-&e{E}?ho{db z#ZaZ&b}Msq%B9$3=Dr6JLM~T*PeM?dijjKO?r`bbHQs4g^A!t|^{*Qfhm2n_&1cNc z-rDh*0h69P)@HGFm1a;mAaPujY4cW1mtM*%yE(PAl6jfgK~^&_K$evU+n`2&5?|n)0z#T%mra&_O%uVCz?2UB298k=N3^KVQ4a zk((#xuMRZg>T?-ZmFmTwJ*`Y1cG)xA8Lu+bL2ITv$vMUs-`2kKErpfNI<6}A`Ihue zG3L~ezDnowuc3T7U}DqNop$l}de!EMIN!PHWspjfsnqGOS$@Uof#1D(wysO=KAf8K zFcjrz5x33Ski|&XKbe*XL)XpnYPWRf|wW;oo^(N-;Lig_o~Cia>+=~ z883#aJqE$!xU^Lrz&~2miVc%wbI(s&;a7y^6Q%p`O&v|7iZRDM>6)atwO~#+3c*N@|Tq0|QdkRqh%*bByP)u6z4IQew(^9D+@BI3*O9Q#$n(N%M9t z%d2ihB#(R=vtxDV%yPiw@GD9*T`E^*Gn1^;ncZp91%ZQddW;H^`G?u}t9-+#73Fg| zVs4K`(dNUyBC=gEv+8)~igb6+EEs>4uzU5cxl>L|4ZOu9EoX!b8`O&x-v2036$%hx7$U?;acCBu(;XBRq`Pit9{(%B14} zgU?#)q0K2P^*ns}FJh$6B-BieD=v5^IIIb58e|SebHEk$R^*IQ(EfeJE^3x&&6>(c zj&MLzoL0t!hD}prDQxsL>C%i6K%c5n1DFW54AZ7 zl5iOGJt?b6-dmiKn}TuZU*031oC0|QmRVH9Tb%|{uU`jBDoOWeor{`u`A#=Wm88`~Z_Z!jKBLyXO6uJcKvryUppr#no6bs1tPM&0ucmGbqIt0yI??bdMQ=8or6X>%Gzh0k85y*EJCZC+)Ijl|=Q zhQ4~P7Dus!ohZdQ{70)<+1ctEdpH4@0iR=SJ9vR|2R@mH_?a#^%6~Db)KE{&dK5}!K`kGWD8a~sh@lv%)-tNeT`J6;mTas%! z7-T9^ULPkpuS*XIDh~ZmK}jm=-HdzdK@%6w=FWbV#@}Dd11ABQ0(Fw(hY{u~~2UWILw zk&}We&8p+=9gkL&94V(GL+nOqnnAgv&fUa!sgrCrj)0BeS2O07K2I~EjA2Tms@dY+ zC(~W^Mq?3|dttpR6?9#;QMrpG0i0K@8jcu5c@F(m|aX7*JYu5Zfs$YmgM1JYQf_m4t z8gQ#l?Of)Rog}87sP~;GR@H7a87+x0W-z$N`R`St@bEV#N#uFS=jJ_Y!lgnOTuh{v z=eayZOhyhdmWDR5Xl?F+Q=SJt)$HE_d`o9#@dx`WRGKujxlb$1k%$q7=-hV(zTX8O zYk;i>+ULyT(}ikszS2Dd#9t5%t=-Hvvk$}Y%*?2hVUeVx9KwfD+RI;g( zCKx$6KhysJ*HJsm4BuvSLR`3nt-0$F<&L$J0GA|8kb6M)~800DhgCf3_@mGdn@n^z|UlGA?y8Sw z#ZjF)%e}txFjI4dOf&1M`5z$ohr*9*c+6rL=jQKPKM%DD^j%dfgp9CA-*-KYeRVl1 z_-WI7G={&|So%JW{A;lCJW^enQ1Nd7bJUS2N?8j*afV(DUMPHIi)_dQ}+ z;JffO^wMnJ@DhwqOb%=FqvDT~4!t`mE(@HR^72}a82Lf;)bz8+##k85bv#}hqvxs4 z;CZggO}TxD1B0G%U#HZUEE8Q%kHUO5J1c9gupAQ2oSamX&AnTkA6nq&yXHH+lACPi zbtG;14co0@$0fqbaQjYvQ&T#QOH)M_ow^#b%<@?_?pquh^NaOksN{kPHRn=Z&ZW(3 zX#(w(ityl^5;?BBNw!=Je|xSgj=JP+zNfpEH0#9etspWmUBqDY_2#?1H3BCafX}6T ztGBgQ(EUOYhqP?!tA40_dz zokBZ1f8ID86ZNen2*ug0PA7<`8eZ3Xo_DM2kl!?dHswY-*Dq|2_hd+ZP;;8=p$BHA zqdBEh+f_{-fv1IAQ2FN^Vz}QF-0inzKQY>O3h?F4EMi@cSYbrNSM0xb&=R3WN5&&d4=N)lba`~%qxf>w$ z$*F{|YwT2@qx;L~go^J8mgIx;XVBC$IA-IcRxqa+)NLHKe|d*(?jUDTl|8BrqYf)RT$D2Pj%Be)TQE&(ozu&E{ZpigBqqO(b-3N=TeOQIrx{dQ%vJq-PYR zP1Bo`-H)19)PMrfo!BS6Mir!Yz!=UBO?6IO>(G|3HReXKF>R&rdW=(y8OU>w#zvdn%_Nn$690B##gT@c>q#_YHIo>WUi%R9lKDCyS)h%(<5wGLE9%Hx0NM1 zG})Rvd9GFHjbplUKA1P{O?>t3}Mnz`cQDL!`D^bdqJ`7LiFj!B6^ z;JTjQTIl>|q(bTTyEy#lBu&o8*107((#6JWX&z)bWrv(oyNkKtH)-Wv0>@x1I@Y$A zd*n<8{)`QMt_^Kh>O$f?YKbBc{c_KY%)cSfZtbb1|SrPCyX2Oyq#t<=o;#CQLPK z0$s2NUTLywps5@A>-DL0nT_O@r5P{x0ymS*Vq9DolY@$Ba_VUcZR%zgkjQtp1En7M z`qoZSXLK|}T|*3YrU>%s+}3cu=C4I_z3`@iHm9h^gkTF1pU16zS)llO*GSVNL{MhO z%-xM%GJKI#kX@G*A?m|eY3>t3c=i2Ala*~{UcjPtS7-CQcEABq~E zn>Y5C7MhH)O|fT3!v#O*6+NxjllPzH11*!qZJJYbaSobW1`?yLl-A7i4-j~bq?TQ` z0!Z5rB({&fWx>Pe0 zxZvRQuTqr#+x9pnlAj|zlSS}l=Bs3v5Kn|sH)LkE=I}nTWs_}iCRRBK8XT{#bNSYP zT%zhKbq!;JsGz2{WJ-0d7e8o8M$zfX71n5;GrNJ|S9SoL5L=ZP>+WkjMG7?)>6c2R z>B*~Vdlrx5TYHOS63hc`+s}IR8(mz-@V%kYw^E?Df@$%&HwG~Z1R zw!Q`Y6S)f7?}#G+ZBrUJ%Ag*ca!zaMUlHl?e`K&o*52MU0|+oWV!5--OeKs|Y5XwL z=2lZp%9N{1dHzSqJ|luSd{uHFf0K7iVxqH|e7rX;$2qB~tvJ4?WF+0$y&L3kb5n_c z>scm{r0nipRsbso`GBc}q>iN3C(o%#wW&OA&5+HL)}~|f4*4~WNZH*NXS);*PEL8M z7us}pw#=pWHZzgdvAv7<;&AttPj7PIkH^-i1j_TtuJ)Yc%yYQ%t#>2XNhBVW%w>LV zwMlAgbTxtU_~caa4WPK?yBbPOGa07c&Yw!uS{amuVok?AT z<);fH%ysQ|%vaqfKAEo@)ioxW*+Xt5*U;ghqZ_m5=QS$AXtpBjQ$lib-23}i)*cPf z;<3;E~NNe42t?&fGn!Vq1L<+JbO1UK#BGIT@mXCv|Y5ftBvA5({Q$U=BDQ zwdcBplU&Utp>w;Mzp&deZuJsAd-#!|6q#?)QAjwGJxH$)od}VJ;znz_ot++IC#6P_ zSc8n@930iC-wB>Ze_BdOvBfpGtju^mxu&~+8EhWo)|-{KAw@ZqE+zpOlapUQd{glx zaOq8E8HP{q0-jGlpsst$b>kFWM(NO$*5}1uCDrAg_GM$1ImLOk#E$L`cM@y5w7GrL z3?zb4ki9o(PIK$vd-(l5a6$EsviW70%mjN$i=TZWOMx zu-L?s5A}gup7nKMb%%6}8$Hx>TgGvn`L`mSIXJ1OxjLLnf!Cm`KrvO^4(xt)o{(Pl z%+k(E#mJ1RNK?5npQdVch)MF2bB;Nz=LIi%D^p0mcBdkgw(gPu=XQD(<0h*;tCfAf zE)P6)t=e&1#3;?xxlhb=okt|+ARhH@IaDFuc0WU!(sZR(n!e@Jla=qXH}vh&+zxpM zk?UVvd>zqaxz#NmHfE8eUZXs*>+}`(nGGn@jJbA_eXu_U(=DK@H(V|rcr4v_II@PXM z)$Rt}nXJoc6gMaFq_n0>)~2Si+^3dCL99FS3l|)U%0CvSr#&pB$&Ay?VA-=CO?2AI z<|(Ga+T9vH$2Dd2=-GbgHBypH);|g>Z+vqr>=F>fY#jS$yGgVnG{=qO${wKC zULqX4sT{a@U!GoOO~-~dS^TMijDiJxA^TEU8+|$}Nl+`MNeVd!1oK{13UZz{K1Z)o zN;o;mc0V$8MUdPLs!IZQ5;~gZE{vdOX67A@d(!yj8E$x#qiS5GY)adU513O9<~)Kq z)W1Nabm0nJA6dsi1o0Wmh(w&;zd#riRPflr0SRJo|J$u$(&gn?fN!#2X zzDV2*hczKBuOy-A~%R=ax*NyWC# zi%rv}ykXF~4l8aeV;Lyx&N|kUpYHWErks~DDBZ|>mjn`VSh0DE#!k2$E0zvPa<#at zMLi@=#%DY7ewCYWjOToZY3rKV-9IxrNx0rj$aURxOJ%$AYAK3u*m6AxtfO@KcQxg5 z)iNmyWDs}&3cq4^T`pUk_4Ti6jFd3)lQ64JPxoy1-vH_pTHV6&HVVJaYv>#OX6szH zjw`8JE%xFObwm}0qtPD&uVW=zmsJ z#Y+d2(wuuEI_txiamkRmJFs)bXTFm<#KaBloZ`Mxz7jNNWOd=Qs#R&GL;as{v7OQR zWxi}u{eou%GISk%dRLWK3neWcr>p&;Me3PU+DeFWGDmz=4FljYUVfEo5~U{D=+neP zdZtmhaU5rG!LKv%e!iM!hb_dDh_mv54D_qBhBL_cwrF|vf%~`K4yry8? z&)2;y%96Fo%Bsm#QRsRqfL!O+oXj_=9Dq7{*UDB+Xnlo5)V)OEx^vEIRbls7)XBLc zOK!$VCe#@@AoQrb&C0|Kupgat(WfqJiK$q*1mFRagWkO(!%yZ|J7**}99OX6?%%od zS%jm@%hc@=z>M}dtZho+lGWcl*KNJS;^n(JAGNc}`;P~j^Y0a2hW*$lX&kp|@Z`C% zUWca(`y0gY-ER{%)1Pyib@g>un{=2Up8YG5jR`2o z?yX)t%Hyps{F%1Y#uTvo5FyWJSk!6CZ)S7iz^o+a}f_39|n zR(qVR(#tISgA9({$*zk?oPuTQ zEIw+kPC8e8N6SSc&ZP$G+3siEK*DmMXN;P{n%$OhkO!zHwN(@q*rf-~*FiN6pV{%I zMo8x-y!zy_-fYJOy9%5<`Jme_rz)CBmSdSw7!%Zfb)7RGwW9;MM1jgn6}CcPYGDM~sVG(DYJsL1uLHfSNz`TN9z4R5{reSkLrfs%99zHW5tPk!gK z$qIU0^1VXbUwE!dnDShV6OO#sRrYXn=%bM^!`i)kMdGQ$vB`!?UeZsgWJe@$1sPC! zdy3JrlgM4I%Z_u3^D3n%zcaN@npb{?m9(l|+c+fgTz80cp>T#y2`4Asxv9y~t>h^} z@o{I5-svl8tC>nEVbI`K8J9Z3jtI^UE7qKyO1%9NB1zGtue)bgXKCkL$DA@Vcdo)q z2w<}etB(1vCbemMNWmJ?rD}4iB53anHe+eX^c95R=D3maMtWCm8gYV@hgPbWDt!uV zZ0i}$NfgMS+56c>HkvBQC^yvQQ1-P{UrkOg#M+W9`&IU_>5B6U+170Clbrh2^b@5` zNt;ey-fywWT!Hq^4o*3)heWq3rP)Ei>)h9)%_&k$^S$41XzY3}o=Tm{dH1dJDUQ?3 zBomC|HRf`A*Xnn+z9T*>_BSQm_s0gb&CHV~)#RR_*G#CztxP?m`Li2Qnq91n2ptY< zk-T;CT%VW@YEz0yl~0+w_Bq(@neGnbfDaz^wP_-?>~47#HDRl<(}!|i^!lCtp1yoc zFmcnRNqLCVVql!tffzSel=t1EL)!N-nj-8D2|4NOUFU~1mUj}B`F7-*@2L4Gxii9q zWjg62zm63{<>M+Tw^uP+MBNF^c?~&Q$I>*RP0mM-_={2VwKv+suTfdn&Q2J%d)KO| zHAO|AH5R2-O`5AJF&vdXl*ulNNq{$JzolapuOaL?$CsPP%)Pw*%!l}KSvFgy)OT~A z;T@~q!uyH!vGcg9j&n_(zo1zpcEV;)-Vt2{l7&s6`uDFUbsXzTU5=#>XGS+GeY`v* zp~xJ6O0E5%Rm&FYc&+(k%FcdnX(q)wm;n66jyTDzO-k|RUAfQy0IIX6PAR6&iAwa` zR^}u{kYwckHNRrPhC^eTx}NplLNL~YQIMLJqp%Q-xcgT+6{Rdm$?I6sqwMhReOb{e zil!yoXpj-Sk$?&7QB3<6X*-XlX$Z=8x-)iZl^Gd^?!eW5EuKM zE?rA%aBx?e=5-x*MrTtd>~$Hg)kYK5oYI@+-*bz))E;(|dvTryYn+-vu!L+Jl7AYC ziqf=t8$vO%lh;v^$j$=ADurI5d)ckdk;kab9LFN}6lA z?7_+^=L4_ZW*HYaz^@9|?vIfuX53FqR}K+L)M=y1mECO*Ce)fXIRu6zlg)C*9ryUo zdy+?5{R;yZ1luyI-@=be@V1TTT_BJcz+Kz1Udw4}Ac0i%#&Rph%rO#gl=`eRBTor+ zyE8Re*e1mwwnlSYe2^LLj`5tHYqtd(Q|3p3iKv@#k-cN#$*zjm!)il5 z!PkRc^*Xg6xuk1P3a+)#vidBrGMK^J)YJ+YXUhU`c>}$Bm}eT0O!Kh{R3`3vSBI^m zo?*O^yO0lR^-Eno6tYpbE!w<%cRKseX9m>Z@U^S0AeB^$l6vFmPY+s3 zT(4scT`p>Oi5-N}EIwPW1CD#vqT9zi?o~Up&3dw@$u4M|H0naNKW9D8uT8dS$`DBc zx`mG`mf+WwQp%&5(@vb}!dlLlZ3JaJs2>eE4d(aQNw%sSVt7%8T{ zfWc^TN_u+4618k7G3 zX$L3eBWc0wUW zIEt;oa+**`-)3yLUX@l`msvpF-?eweUZu<>2B{}OEQR@Z(i8g)f=x8bKoV zKU`O3I|tk@iPHQ+k@isjE?&*NUT7%0XPJlyrK zt1I?A>fxg^7Lc41#wqSmikQ@ap1H50pSTkwy{kbqAF;ew z36&WinW?8))1N1E#>8R$vXqwbN2Y14B-7(b0rNU!cCM1z&kwj~CbFoVDwbxAdrEL` zc9FLYtF6Me@0Pck{N)k>7& z^*NhW701ju4BW8qPF7Zw7Cmayii41)erq#3Ra9FUK)~J2eCOg@C!O8HHuWcfct2X} zz}0c8n=!`5^wL|Lc8dnxe0ih8xu+qnJTTGu$eTF^^lJe!)*yFPO9432Ky z0n5AX%T>P)SpNW|MDma086al6DYZ`mqbp+T5)jo2h@8=cRdWsU*uT81*^n&3z^YF?US!F*Rjt+il2nspd1emmyD2dg$#g zRx6%PNo;iKUX^Gl&BiA!87h>$?&qLr+S*4Vp}-j!=f8UO8(mr*t06g7;2zcESED6S zJMMb4>&8&z-p6reEO$CPHbBYA8Sha~2b(X*dvir8sLo0BIxDD7jB29;QPV_``H}!} z*11cINaKuWjQiG*eCgX`maiV0c^Nx~ZJ z&U&rXT&tnx8pelmtn8@7vFVPL%1dhSP4i%F>z{h}sdCDdj~&UkElzvuKehRoDlkvKy>S5H_iT8cTPOl~raw5^CXqP3_kWwax2xR zd12~D$mgr>&N5xkr)-maN>5YLx1+cD0-PRmUMwRnW4ijb%YSCfM3p7UC zuUuDUC`wA{6U>xKO=_U8o$`~@bwwqaQg$ySQj&4ek##k6RW^;~Fd)|>ujz(uE>h#7 zo(Rrs2G!KN7WPc?CXKCi0Ku|1XX#&Bd>HX{wxMLc9o1(=v$;5PF(4$sadk{&QYYZK+E7t7Y;T^V6k8I%U|q)dvSH)gtcaD znDK-3uZ(^ro!Xtkl+Ir&YvOPa<;^8#dpMa&rdb5_Xz=7hld;Eo>2#Jpav?b*r#)-+ zDK{!DJh+hU>N6~wCKA=%^Fln-2G0%);wE@7Y7F&d8@Hqtg|psaE*>eIjo~SyVvkVO9Cl$|X8iev&k`6%!J?q@T(2Mt_(C{-HPb7H}k)`VG6tYBIuwLIf z_O4DyV0+iOR|ywanE4pvCgE%Ba53FFtcdwc6VUapi^H@1u5%ouKGq``{&g72PMjQ~ zcIBA4%Cb{usiY{jJC7J0tH?ZAEW+w^W9A**eQV?BH9S(j=ik5!C<(}Xyl`3;zkOxfH4SEgNO4=T+DLRxbH_+w$#`{s)ch<$B za6sF}bCJ@z9X?ocMDpWOH0IHwWZAj#zXurgtm!5!JjOWZuWIF$Hwc|I6Lj3Kxddfg zW%0E7_oltR@(LZt&>B!~H7vuG`#To40crslBB+&&2G~AgbH{qu4-Qu=new|`^&l=0 z)kaG9#Y~O9O}k0R;k#1hQB9)h!6<~tNx5_! zL}EPP;GUwR^1zJ9dCy8ACaE;{xs^4~XJLx0UwHezv@)qxVj4m{DK{pp_cp0fbNLN^ zNnSuTFa-jFbCcGbl7tjrW0##&mV(WaLC4GoII8|%n!OI?N zrPJ<;UB<GhxJzbLKbj$9N?axQ(s5uch-8Zg>H1~mHh1PJ&zX;1y2y;FSViLo+Q!Q3#oFw81lmgxD_HN+{fn51$`bGv*l7x zdmcY4a&+W+KZSLZV{{xy%e8?RKK1$=@Po$x0NOePRx`T1na1PRzLydrM-$NZ!z(b#8z*J z^!2~+wZtx|Ceu0hXGYnH2Oe$jL^ryJ8zeNp)Z@!P@C=pPYpq_vP6R&B}qyk|Xf zey0`k-leHa4w&jljGW}>t$n_6HCGQxyjHSWpDUA8ls%;<_8UA)SiaqNAVvgdpzU1b zS1I2C&VvRfwI%NS9{dy4emwL@_anYeDwF`DvZuUDMzguiuW zWNVjNeWrsv_YthFV~UhU$5Y&0O(0<%f%X&(gnvntq9Qrb8a1VGZKSIWrvX zBzk>o)nxb);BoOHFA!Vl&_L0-aDpL~C$10mHOVYZOurd8Lu(DwS%wWoy_xIF1+}J{ zw(ug`+eR=IMgSGy-xK^*1(uI-vQZppq%J#}`Dj8_u}iCGvs$EZ*jY8Dk?_^;#4CCH zNbyTDmS@K;UA~=ulSCaPS0C)0*VX12X<=M0c==8tVzAd+qoB6A&n58LCmF3FAUGuD zhpl;PFLTtAYDJ}xle>4}Q!K=>#%n~9Xe}g8E(l;r`Hy``~gIvIn%W;x-WahoJ zqZo4aGouUp(mgl9_VKmsBmvjvudFO%SoC{kUY=M#op~7M-9&cauPM#4)iO-^N7lT~ zr>if8nQ>pD+_Y}p4QUCHmmz`tYgxw3=6(Tk?(Q;L00KLv=5db4Tlc^{8-zqELE z@G64k8*WDx@tl+IxRn`5kU3V*ayr(SWamOpvDa2=IEb$IBN;EBYMc;M9mM0VYBe=a z-nknw4Z+Dg@!p}9LQ@&R9crq**%E0xoPNEkrk|xxaK!wHk%Q0Hz9smL;xl!5b2Mx> zhC2a0a(S&Vap$V0`VowqR8%{kJnC0|b?fJs^);1juQke&bG7=PN{mfK?fnj_X(*(Q z&dxZQjK6zn0ee-gO69F|qQKy=EVoxKU zPg;q=!%|?{N+Xs6z>&kK<0q{?AjQ`|H#x!YTPGRD&1iI4==+z1FM!{4_2AXW<9C%x zus9hwrzE5BoeDRCj7evWLyYp+$Uc6Ht9%{6Z zuyc%Oy=_jZ#Z#J_e5T%v3B8R;JBjP>Uvm5p+aHN^pvODq1LaT?p5ZwtirJd9H6-mM7A# zv9~5R$v;Ynr_HHJ>2t|^DWSzJ)R&T#X@eCWq~!OleOlh#HJBig)Ng!~TUM>@F;?u3 zIyBupDsOlGWV(fgf_Qo5S)&8CSZDle^5^!kwz}3e$)d2!G>?qO=ms)B99Eef>toZG zc6xZ}Iyfet=jWa8fpz9`7RpJK<0K3psjTQe7{2lQF!S_nY!{yx`K+SVH6fV~>+SNxsR=Nt` z2E0n7xr@%rebr1Fj!%Q$AuAYLVyZK{E0b8lI8`22^fTnG7|FG{QeT7m_-)Mtxz7Y4 z6+&Ny-XlqvHJg;iRO78xOg0_KI&9}rteR0qYkWNM906W?CLpon9E|j=>AV}Q+ssw0 zrRBN#4P#de2WQP|8&qDQ`w{XA&IbaCD?M-W9qm?<&aa<9Nc*&->Ewxrsix@)|>7K{lnIK?Tk&-<- z)Tb!Q>~1bFv(&X2-}lB&Ju2drXh2+X+ck_N+YBZx| zp~Y%Z72U@x=sMOc0i??l_+qP(uZy9@R&UyD3IbwSM04my-DxKF;WYiUkSdr%Al6vO0EVql0Sd0!x$9n91(~^gC zj#HD}9?9WJoNWE)Ez4kVYw0}((axC^vH}?LGf_HnqZ^pvO0oO zuAi4X!3Pzdja_bbrm9TPdqh!!x%aJ|8qdwvA=u2>KX)IkX-@oxvP(nUEudtyRU;&? z1l0ad$hpS{HN#PRw`aeX+E|FMGuC_&BSUu_igppx74%+>ub5SE`&6jUy?zs()b?20 z_CK#`V3sE-gnW*k=frVJi@DZK!-fO-)(dNqZaE`qHR5714zy!Gk@C1anyhYz4QdU= zLFc~}A=T~K0r@_iGhDH%oNp}|=u0iF5$UMe`NfJx!)_0m$mX!_udPxJPC@8v8kHqG zv#$$<#446&mH3}tg3%g9knS9F(!N{qzlvnOyOI-d((PQTXQ#b=Zx3Or)x^T3wm(L% zC56i!X>O6r=yr147rBubF?@sSFL(w#<22*{W3D8W!`YW%J8qX_${GoAkcgpsAy z$}Ptur#&m^zlNIgO{Ltdvu=Hu;BmXPcp0S`MuweFq{!zgn8dnV^52MB^J@Mwk}tF| z7R<`v9trd!xXcK`<%sThuV#u=aJ1~VM~|3Pc$~teOX+(ZmWejYgz7WYSJD3f53WhR zK*X|!`MvAL$2lv?`X1g_Q7X|*bv@YQZchM;hj|a{&3t@cHnKlJm&K^^PWCy^rYb>_ zck|M!OUDqLCFFiC*n9QUu~drtPTZu{<(f$d3PL< z$jPss)&BFj>_=$E$C&C8nWQH;&v9Iiuc(OGY|NpHrg;5pzJiS8lO7@cUJb?WVZ(1C zN(tyrMR&SJp1)*kpoGcOn)GW`P*+UP47=O^6O z6zg8&l`d;8`kJ;l6R;c%kH))wGBy%{oPvAT6;$na)ZT;?R)+4O<*t^++YO5I8Sb4f zjAi!#+#16NA93@Qi_%FWR8QpDl3O8{gIpG*kPjm|$$h=WTmpnP1Q2Yt2L#|Dw0p4XDe@P&#i);3Hi9MS<$SvL<=0T=O()GRV5x& zw`VREpF3}{=oV*uDF`L2ty?9M!6R(2Vb8sJ)g7U8wWU&R-=Uvnr=s6E*f$f&$GvWS zo97uDfjv!d)~PAgyE+n4rjYBnfQdN+XyUUQYfF&CoO6oi-ZwS1)rSch6lo6ude&{; zp&iAe5WxO5%Q#A+=8r>qTDv{Z7V%D}95?b3`~l8RIj%2Bb3Ne^VUV_R4tXZNmW4m| zHs#poty7x1OQGskdA5o&*d%jXcQ?XaF!RV>1$Z2nnyJ|ICnW^n_pyZzqM_9s;j^Ai zYezk^5tiiE)nPa*t(oUSF_kZQ>W!6(-Jt~Ik(}2v;u(@HJcZ+&*9|GkQnNjNT6Czl z)t^83ita;n&RDt=jym5G+YCLT-B_kt<>8O2HTVDZ`#Ba6^IA96wA3;;b`->)0#;yX>z6R)8*xF+)~5`= zaJh}@q^ir5&y8EoQG&;Ab6Zvsxt&f90q<3LN={E>CoY|jNYmwbbZIw?Gch2Z;;QbF z;(f=JCz|r;QcA3*dbMWd7*S6{TE@@KyNe@=_02XI?X;mD22Xr@S2i+VyGeC6!PDfF zrz1fv!IYAC>QAk49w(P_$tF0eH5${Kr zAX0Y&gIVu(9Od7k$ic;Ts&{1Lm56M}y_tposJvM_ngXr;+c&vs!5y0v+U!s*-c9B z$2EB|RC3MVisE$%f2_{{TGDy#x^J}T(H*Q(CjGTK@tfV{l2jumx z`NGt+JjGfusG90_ntV+1D=FvRy9jNh62`-m>-bm8SDS{6^rbt~zf-KUS9q{STNxs) zG*byT0gCWtB?&ZhRF6CpH>~BEHU@8$boI@4mbdso4^?~nP|f#= zIIFgnW=Gsc4mcI6e#)A;FsBJVbZm=L97m2#VronywQyUWpx2dJYOU|k^yg?nws_{h zcEzL{yOYc_fhdOR{|s9a_7_kgW5(hO`s1b}nWvz1FZMfX0I zttoQB$5FQyn23i_gX$}ixv`CITPwi*Yuv(AQCb{W%5>_}*K~HC9)WhFg(bR!UZ-Ts zfTzRFT)gZ5kqwIU=SaFJ&mSx|>F#%E;h^tI6HfHtnD`Z!>NAtg0Adf`qngN=MGM$)v4N1s+Q-cY1ck{dEL)` zYoND?&mxt_rE*EQNv3qvqPcW?ns*4$LA!rWgEfOK;CV5><~=#B=ta1k)$dMf1xuTW zL?Z_(dh=L!H@6$J{3D>Mqf4G`zUL)t#p*4w6Wj$Y^L4Lj@T_~ZvZZiGAe!-WnsSUU z*!qlyvZs%Pm!aNi+m`Wjj=gKTSj%bcmC0d{eJkW~b8eJcKcJ;iSu@7GXQvsh3joS{*QjbqyH7%^w<9BuTI9vklrd0|juyAHgMIqj(jrs#yA-Yb z!*sy582VR75)@+mp60u&Nu^_ooN7W=+@5IxfRb^ORbxAeWjW@&%kugiwG)>sIlW@) zOh__M2RSw7I)d)szns^tN(u`8M-57@bsS~(PCP>zYK&4ygq+uq3a zN4B?;+iPH)e@esDwBt39RREFP3i%v8S@S7Nsr5CfLeH0ZBc6uQ)^M03Z(b_YQO=sK zV;JNUlYxxa(sHhUCXXJ4;S~n9JqpDqzbj@_ zg(X9s?wRG6ejmP;W+K_0a(03+K9y%p@WtG^gmAKL=bgg7+De_0x!|c)bF)Xe_;Oyt2M|UfQH_f@$Lu$c^b^SV3<+4^e#z%8k z6q0^NH#4~$_M^)@cJ%99ABcQBCbyR6G|MQ@9c!sKPHIT0B~}gxn_GhpzYJ5B@>%fv zM`KsKVc^NEqD?}{9&IjF-y3YfKDFposOi*;dr0!A!fusFz2mRQ@q5c@B9)F0%y{Cc zi6qHgxxwbUF%8Nd^Vr&gO3my>$mT#t9Oa1}s#6QG9GqgjzFFHtsct#!-OkXw?fGgr z^t-14(F?C!itL37)uybDdYrLb*ETHljYjiOLmh;&A>gnW3Pp6Wcr#RKWmMCqGn1EA zTw^`6U9!OP#WwXYh9OEiZf@K7A5((Zyp}V0YySW(F~B~b=hCsfJq^yA@l_0p0L}nC zbDqB38Y$AWryc#>NUd5v#a(N2>a8XwcvFB}abA<5_;XX%ZlQ|K(WWd8Pob|Sn~y!& z=*~?>=d5X;2lW`WT`@JyLK|e4iQ|EM*G%#oAo_N$g8u-)-V?CAco^MHv54G2T=Buj zHPc%W%Vme?a#M?+@eX~w38iXKgJE|Uoz-KI9Ou(G#d+Sd;j5i9QfMZGqb_%3VAmvZ z6R6y3FL>EfROF=xbaHapkk6i-c9v+IrwvS@1M~Ym}bA-Q!Rf_#dN z)K$*v2A<;rHrzqr175A+D{EUQnA}DhX+CV8$Gv=xE~M#GYA;rO1RPyNx*es@h$FRy znkfRXQ;+elmOOiL=W0?*BLJ;09Opij%a=hsZ!_HK#BxIqB)YTCBeF+c0d_rc-naD4 zBH`u_9DOoK^{>%mDYV~X<)Kb6y^lb#(dUvi-5U;lE2(`7>+B~H@H*Esh5hcAHl*C1 zs>d0s=`#s-2-wVd3Pv+o_I?c4?$z4P!RDB*RutVjj&ip8nY3fUzCjgHNjsIg~Cq%02Pg+ zPQ6-w?v0!Wh`t$Unk;uK9n7-bA;OjzRvw^cyzlWGrY4BV5;OEQAvvpv5*F|daEIo19=Dt3(AyxZGtxwW$l~ie^Q*%-{ ze91<~>N8uGcKc-Mmc?>PR@15Nq@^qLI)wm4fw*(}(#D6+1e1gM)^ww4j>yXqG?mc0 ziDtG4r#Urd&qS8y$zT3ix3^z<`kWkMu=Z!cX47)3e0MpFgoL(miLsdu1{9JwuW7WYCVa&uD9y#5XRdfodruZk0`P!*>(r7@ABA(8cb%d5 z!|c~8>REU6;193kT1%F-Hy-HHg;`;%DSs9%^?tS(z9|_^wPji?$8ktBDhujG~cB+ziVDI1L5F6&eUJZREn{Bpyf3|INb{?J& znn^c#cthNdYUlhQ^Es4=*vY{Jjt{MNLWC2%o}?-1cJ((S_<3|~Riuc3>5-9~it_&e z9DFjC8z-O1BR|ECzM`~V%~Xy0nN*XN7LN?M@Y}>B0yfC5Q&aGz+{oCBmOS*Wr%oK! zTbD-@B}v6S%o}e7YEx=a#u7b@M>*%OJXflphqI3kKa*<3)j!q&#d+>7*JHy~N>XoK z4=~icKYed_(3naLZrxnm+I7&}Fiz9=an`P_881e9IC-knc~<3jvboMm5OJE47^RLx z4tw>k3bgHHW6xRCytJ`?Zc{rlr@d$SY>l{)^!nEwH7-{pzHSq0%%>=06E@JhdHU5= ze=m19&tqK;uV&gg(~mXQ;+NbPcSb(FYIWv4rMu@Qv*q?uw?n3GG5ETU$tXbt_Xefk zwho*D!8A&jyB5VMC?z<05=N!rHo67y(SYY~AH7Z%kU5bS@P-Daj^vd-##D+#H zM<@?I)lg}qFT+Pb>$`#S^I-SJ!g{|kGJs1KEOVZ@vzPgR}0#! zEN*n1C8LSHJK3yHKl9n4mN!Kwc^Qh0y{qXzhCVQw%T=~fDP6lxN$X#sVdw3zu9sA` zK1Urkq@A_7`Y++_UJYMFhVtC5!T>4{d~;ns?d!qjzA_7zZ9a$8&8Gz=vl@Q!8RnpJ zS&mK*Tzc1UJ(_62t0CLLVe@tCQwPePa8IQT^F2#ZNop|=nG58fYPQ{~ZrKrbV5cm4 zliIp{0wFG`6BZzYlDPZT)j~S+8Dcf2&#wF_5=Y?JNa|akdg*J&m&VSTU&BRfsNPF| zl>Eb=tz$>2wY1(<$RnHv$6DSAPB!Xs)^ev+Pr0IXC^qMHSDRV4OyRd0k7mtXeGFT@ zd^BW6*r;?k`Yd88TzQHxPpy7$nb(DE zT&D%p_44`>p@)oQ^<&y=Tj*Zf&BHLq2b%d;r&9?Yq;Y^V;biq;{$h~ z`c>ssDMuS0YP4q#cSfcoE}Ut-PsgoqT-5ZR9bMR7#WlRpHrs}jFmE$FjGm*=_pfF6 zb@4%?xL7XTwgw6jj&}@K>ACI;o||1#x;{H0#LEhlCD(K63msMq$Rm;&H||hRvGlHj z3xdt}v+G}*Mpstqev>86?u~fm?VKD{#C@yt9GcEe$y~Wz4tM#oSRB=*eZ&LKD`cC6 z%wbg`w(MI^!FudQ-R-IdO#ZH^OD(`1HS z$Tul9&dIxeF@v6Ky|p;=bvZ4|CYa3SxIFvQh`}7@vsYW1DEqpL{6vGut1-@0HhDSX zy42ctM?9jfc3+D9gJ8c;TG)e9U;*S!j ze3Mvv1twsW?Av<@Ca&)oZP_Q#)=r_U7-91zV$0tg){sgm4xJbAGagM#&9`X>YD*nP zH!9;N)MJrZ^VDzVdT~+YUD@rP43$mfU=DIW8v3%|{s5IgYQI7D{O9*e{HxE$CaNo$ zU|rn(NvJ%7n)453>T|c+5uWJJZE(=J<&>Tn))mCsj+oMYsaQri4mkvUYqB$p)t={? z>AGynyw;uVNmt3P2Uwp~xVL|^BNZU!y*=x)gkq(6=#C6mv~=8Q{7mJ%H};j*<9n%0 zt{an#b6-Z{m3owKO9=a%6t0=MYq>Mi zrnOC-oHnZ(rr*1aob|3l#JA1lybAf+Yv+BZJ!L6$KAwzY3Ju>=&EyXy!OI57V|8Q@Ol(CmlKhxOdNd^s9F1oaYP&AhE@2ry4YU?xaUX(=4OzUcXwq zZ#LP68yM;_S-8o@?9-c;eDN;Mt2Mhea^0&LnnhxzPTuCZ;-vMH)Q79O>P%q_uEDv_ z0Gh5LEpH<+1;PFkn(v`1e72I+Kk_1Nso2!hqY++4Sde#caqC}N{3q6phOcKNj;pd! zgPt4M*XTF~qlT8dpPgp(Q7!J5K+UR$ItxTJ+Ym>6+}UJX3yEK$PP=zwY zs^2}EN9MOqd9M=jH;2Zxd}N+6AqS}()X@FQ=8omHQmsU#syNp8eQ5ZY+9YI;m<6fR zz}AT(hP2M`N8Rs^wZ!JCNw?hhV&IY|Ujf_sMMb213~novPd*2Qa-z|B0F$(1{PS8~ z($JYnN%Kf>@M@q|TX3WvK1z-J69P!tw?@VZ80%Ok74I&kIqP;sKZ9-Nk7HY4510&a zGuIWHFM%x?wxyuqa!$^K_I4n~QgmtYdP=2P={EBD#LJS+u1sP}L|) z-8ifN0D#(Ku`$}O-NLkM_d)coLs0kwW^v@fAZ@r}?VQ(TEL`C`%Uhm(ObV2}(~8wT z1y63$EwC(C=H0ioaJrwttz}adj>dL8EQ`f$8uTUaNovI`El5LM(T69)Eq)vmX}!(^ z6g?{v^TAr>sAgR{M__i2I_K82rwT4kEu8amr>(DYq*@jIz3-JZvw&A6h~qw=TI~EY zp)>1SWQc@j$qYF)QKI6dCUUh=Q@dKT>)ivvpKI{Nxl2#pD&V@WTH(BH;QdofoJnzO zBgE$_$r&IFbtb&3G?c10eNSP^*0#rhYO9&#QrYM7`qovvJC%SO)#5KsI_PpvF_l~O zHEn{xjASF`>6*#Dm(FJN?TYi1eW$#2)2SM8Kyt@UZ_ZtR|M_C{-(FI_#C=%oS#bdDLF=aZev!gR8ME{MwvC%s*xX%78^+%WY^c) zW|fNwR0EI(gFmZ=JiB^26cUuUNIY+Z=y(;aH;woM*b@W-WbHx(;&J88vRT@3lw zSDD!GcYMOTj|SO1xA8F<0M~0=v|EXsoSjt@+WyD>iWqW5XUh_cpf+K)qW9#hQzcJ5;1xq<5+Y={o&7iwsTe&S7FZlXP&jrp-!S} zxue4;t%zmUoG<#^`i#~drQ$b=)NGd$1BK?U6u)}9qk4Ea?_$*_C6b<%Nc2>L*#hd6&$}NaZhvB^i4IE$~~VpSEf4GTMvh| z3E|DPtH_x7PAl~sJ{i?cPehO4Oja@wo0Q*DmF}B!rtBA%?+)zkV!Rv)qe^Idf^i9#_Og5V!adsN}Sc~f46RF$dvmNeqR6?w6^FF5a9?~1jbvFR>R@h7*v zbGdU@*QliVX*PL|nX7KqT4!y{Pbb#Cfbds|+fUQ(K#s|q^ zYI(hr2d~}cxbW>dX*1Qmt$oqwmwKk%O;$+?fz0@VLS3L-?T(X2MngfMhznySnWRxP2z7i6XlV%RR zcp^uJGB8Iq#>8E)Vl4i zmaa@&_EdSi%EDe!u-_2E`v47sMn!ow>6+V6jL1C9oE!{iJ?m^NqbeyrrPQY5Rn(TL zlgWPXrw9PR>z?MDYXo-|&g?@tv|;QiNtvj+(`~a-($oDYJ9B}?YfbFjw*2IG zsD~%Cv73X04Vx4rXm#!0wS*ayIO7?uDo!z)A>L}pvu^^dfHC0mb5`XdD2VP&VNzVu zHH0GycUzq0>br)NoSNs_M*BnUImpQOuBuSxr*6kTOR|;4(-grYJq>1BL`~NDa_4q( zM-{WQDYVFirqeXFAgutBA{DXIHHix`vy{JFe8=Avgj${+?{lY}DvZIhw|S;_a0_n8 z#cn;aNov6G*vPKB(ot$B9VK;sUeolQ0@UJ>>Qays>|J-C!bDOCAa(z&qFwK*fPw5ld~ z_lR`wv|SlkkC=0w^^v1lC6&TC8&o!M26JAcuD+|tj6IC0;yK@QtGkv-Wlt=W=bR3r zv>q7-mabbY!nvu_8Y4AP!G8z9vzO5yb^J zK3CM$xxA4QG*gUqt|!GhjFIV#S+_CC13fFwrAiX1A2ZRM=G2eJQrkS>6WgPXcrEJ-4$;musu$5S;YF8|li>YP^oWe*L zBCA|mNMbBcL(d$V=v88yM;|2GxDe6DjO3G6Ae_dH&QDC&9Z7qy%M1UU9)yDb8&7b@Ip>PfjKA62Yhzllw9@L$t2+?P-eTZmt#&$Ykfa7x0Xm$I&bX^r zjA0~o)1w)r-&0ccV_1r*`L}QdSG0-u4E<|3NxCUL&1DrD`W=>+Zl+~8+(GoOM74x5 zT!2R2E6%T@M^qm*I~HapC>Rb7E66-isF+}xS=2E&#_qnr|MtY9G4F$U*Ka8EzVDf=TLlHQ9%y$rep& ziped_>p0zj1Mg$Mdh2aaN3$LO09v;_Z1p*;)O9*ENem&!T;{br(wcBAa!*?1s@Jo! zG=k-AGnl=(VpuD3PXtzDMAPK)5o<(Hdf?;w` zByn8J-kZ5{pSp4<{yrFy&%H+=VHqbFJab)DW&6ZqNxoY|<}Yp;re(-0nt)8t2`8HC zsVK%5Zp2b@_LpTV=_C6qGas8AR}p+sna)0A{9dBG)YPKddmYuOxytLIg*YT*l6v6P zP??GHO1KZ6skA{3mZ%=!qd0-fZO)EcmkWDFE^9crf=E14>hjIR2e1=XlahT1T^ znthTY1t+h1^d#iteutMNqb*NS&}}1-M~+)O*QeTPC}BglBd<02-eX!+rO6}Kg%;z? z_Bt4>t>gXY00YSNs?ysjVn-nJUIZ(*QMPkbTC|FbAc9lB2c9uq4WV0rrCjIGcdeR~ zAGGLs(QY!78M_sv+w+W^aa&gASk*~hbNbXyq-sXSn0d~O`5C0syG70`iPxr8vyo0q zSCFUgSoLa4+CllAAFocqrES?6z7?lt_D2KdOU&fm{L7q-w?CbF zM}_pYl5NfibA!{ZeLgO%DbnVBio!+Ku8&}b+slkLFmc#cZlx~NIXvT>3i%p0t6JyM z;yu{e939azF&X*E{Ht%n_A*@EmMX_ zE2TE_70V9YtA=n~*L_c`jY;yRj(1iDJ9gX-K+bVoCGFN7k+~+ld@VNKhmDJ_l#$YS zcHpZb~kmfj=;+CiLN!T%7VNo>bKRR=kIm*{pZ8EjFbIxm)tP)o@rqjLI zM)Fv<vIYkr)&{k2w%?DOV<4VQbT*ufV-*T4 z^Bd-5GI@h=_pS$5fSLTjG7Wk(;TKX@JnnC4M$F@`AlmN0msZa~!KOkIHOTp0k73vA zU3C=f`A13?nnj^BhERm@w~EcYvzSVc$;r-Zj)L}eQ+-aF(VXeKJ&wagy10pB-zMOr z3@g?2S;WwzlZGQT&5DcGZ+nXhJRF+$9}U>2**L~= z(!5OSyQxauj=ZLqvc)&p-;USI)JL~!^u0dKq|!!LI2@Yz>g~>iY<|r=SMDOuFY$Jl zCA60kZFeLOkPO$({vpyF%Og4#&QD7E47H^d=W*k)Dy9J*Pkm}(cETRK@k~t=+`@l} z$m84AzPfa+6)W~X7Ogn@M@gCQpveZa9^9*S$m!O*^|!f~ONAMPha6ybuA1sKDZ)pV zr#vlMk+$l@&uuhtecWvwsco+&3ejT&ILEDGlq#ziQnaq7v}qf5O(-RZ!3R05p*WdJ zu|IpQaJp^I>!3!YV;xrI_$?V7WyVLXX}#x{7aZfQbj_-fNY+2PPUaS&s};9m4hDE8 zpwqQPcpQ1a6Yot?y%{vNFm+W-Od8mws7kX5VEoCvk#5tz8wZfcalsmM~CDc{E*CM-QHr=@6<`vLdME3xI3o$tZ*1mDmN*7%Z zeOBhGkp%ifnPek!64@XgzST;5GaP%POt>89y>!y6dTQr2bmJ{PWr1uTOjK23M5x4uBg8W-_RtWN ztdL7=(-!D>=dNmojEwi~v~IxfSkOwQ9#EG;YsJvS#-v@-I;pgv$>)S2jb+^0>_#qf zs<|T_YAH!_@+NPHr^_cKw=>cQQ9UKsd>~W6Waa_KlBV!@mn)BL>=VPfqXH6%wIq2k$JK)84uv3HFam{nL zeoXho5C8)p`kEt3O20DbM?6(6NzRoFntnp5Y-f(fxm(*WF8=^}58jM>4lCco^Euv6 zQ_QOLx;;z6R|$D<6fd+-#(Ch^sM=|Pn|dsVvq-XWzSWW2P%QTP0<5*fK_W6=|t0O1g`=;{GYnC$hh3#Aod8 za;$@pdxKt);0udS6KEsCx{a|n4o{ILa>`EteJigM8R9bjc<%#>oTEoGT+iK_Y5dL) z#(xMkOFdd*ux1Q#vy;}mTIaz!v{&g5*xBYe$w7?Z``4*}czkXjnxw4sII$3|g|6Xk zFQL>}{3h2ft^C%t3a*)G-|rqjm2YYP00wng?o}p394tAL{4>_NVN(r8ZOdC|dJ=_Q z8R+^)!0S|oD76J^i5HF1013~p=UuIj!5uy-_yb9Zp^C;B%8Y!e*YmBU@P((IXYv$3T&jUyO-xN$&h6@Ss&QIH6F-Hl8X{%1 zSPK&3SxTFnWS2se)MFVvPjfce3hT=bc&O_ZIr2YB$p?F~qp?`2~;Gxj!FVrl;cj ziKF?W*Z^;!#cPVG3F8#0?2(QgRQ6Km(&vv|+W{%UWFEftk#%kiT#i7cEpia~;Z zhQ1#f=TjNW9*4U^F<42@yD{azY0xfn#&cd%;)pKpZqy`u)V5f9SGRzR`qGQs;KbGC zp!=O?fc_h5n%<~VD4Jvmxv+;T{&}yabbo=vMO{kNDxQ)3iJLbH)*x0E>H@WH2pye4~ zMvijxz`hdE{vO4wYS&S<x zu*;XLJSkLFE53Ko%+_tK<hd0d5s#ErfbtzhDQ$-pynca?g ztwqyS)QJIO+clL~E8QIma*|PfiQ&>A6Em{s+PCdAyKD{t1b+~$nw62B$tG=EY5H#U zQ@3~-#@@BP1*V!5&2wr{DTloMs-8hQirt8hn7mC1On*3$38S5O5?5rCFLKs)5A)YRHsvBu4gFKr%}eA zMsxSy1N>DLvOKn%7`8H?up{eSMx*e5#FqC=1TDWGA~Jh-uKCizB&sQ2QyR6a+VWc* zUC)FyJ4o3kUDFP#Itu2lG;7F|mQwQMWC318XvcN2nypiFI$ImHgzt=P-SsCmoi&u% zXCpp<3eI?U73y`%6DK`3D(rNZl_U-IHgU>E0L9?RpY3^sIMi8 zg##pd^H8;G&6uP(8P7pV zP7Gue9oh7kf;AM>EEi0>b=fz{q?`p~-nj1?_-f-$*6!`*ixNcV1ar80{VO~?-7LZO zdi}>7+QeX>`oY`e&mWs~7Yt8K&EqMm^b>kC zec|v^#}SLivAmExGDZ<{c}DdW^^|gDNj*X7US2v1mL*$ebY*oM@LZC9^jrIhaCftM z(lP_id8}HxJq4_p0S9v9tyodJW_r`v3CX$GwHgpd*EIYYB;@z0=6wrs&@fh9gOOc_ zhSzqWxfo!0KDFskcTM>mc!t#{bL+1TfIJ~-j=1^0wYgps_?g>B_-HDv-IN!WjTEcy zt&UXs(^7GFL#YK)HfNq|DSM{Ov9wano{bt7A6mdGs$9sSEvEUsP>S{=$k#Jxk?(Al zrN}%xuUzGlC5zL|YV>^*O?@{@*(`!d+wYJtD+<+N?A&9y(N2u{)0abFpU#wZ1lN@< znd#qC^Y`|XwDYXp%9G`@;P&Rf9(;Q94MoJkQf!^!dUdbRsZ;j3G#lyuXTo8*R%wam zTeNttp($&I{pNi@stYM&*p8=~_}MRgqwHxx#+pT|TjIAW74d^!rQv@R&1XDuteb;m zZ9NWsYdW+&wbhIvQPZi+`=3hax`mFdr9~-)ZJ8s>?*1=&y&R8!tCjNG?9mL9jDjoA zyrU+h_B|ILY46AF8Qv(@ZRgV9((Gd~%6A8N&)y#O=8K|U+_8xjp5jA@Q53T`(0Ag! zJhKf_w=7n&lQP9sges`5l0Luq5&Iu&e-Lh=*L+zSwD7=XWJw}uUPGR8Gtbh$UA!IO zuMKz$!FJjYg|xVI%LrEo%Rm}K-I$K2^z^U2&N0!z;MQM3>i#GCA033C^BhmsDz9=o z9W3lt(r3>h2_KbsMz!Jwveem{LIG}YYxBBPy{xQ#CNi?21twIF#Y!&Xk{g|`oP(P8 zEh6x0ejSQ=6fkw#>Uj;vIsE9YMpR&?_cEc1r&g<^wb1;<{jI(jXk*2*Us_uv5ly(t zz+j01&PSlZ75SxmX?vk~kIH+AQG@PRk01~aOxNo$#eHK1LQ{IRZ@BoShiO!B`x1Bb z=zS0H=i+>}>Xw&REYX(3XTEFd-6vLt_fC#wkzXTl!&m2++CIjslIneCSzXkm)VD`X z73WsnS~1;kKYMj>tx@bX&8c=b1u{-YTDX!N5x$KMrdgfiA1S9z+NGIuk21egm@$-Z zm~-zz=XUJZLv4vCU zt2{R{mJJ{Wr9*eGG_#=rz+NyE{mq1vSxRjHHSkPf$j4Oif(o zX7G-eE%}@WO!CQ}l%HHx*>pQ5)1C|@Syd%b+5OWmJ+e~oW5KjjcP>Y=JC832{p2{4^`ESJ9^p_>%X}3uH@_KV#HK|{_ z-8c`(In8>wh0Cu)nuVIbQ##2>x(+}p&G?G+9XcYg2giSu*NI+gO`hajT$f|Av9x=# zih#U?a-)x}XLyIevrh>z5*UI>t`!JHzHYZW9QoBs%b7da_bAqNBg?gl<}^Xa41K!QE135-PjOsVgyW`+^)J)Nrbvm; zK%{z9`<6utd-SDJZc$CGh?E>@*|NZlc{pM7XOo@{LJ$Dwcx-kft!YN0a^*oL?2%u4 zhTD_n_1j3mk_kIl@+!TYV<$J%&I!V9+X@^8#(2-(_o1Hz62vJri<^{`Y;P;d4#mja zY#%u!^aig+`rRLUoTzfR%?$gffGzNXgtj2>Hr2;und zYuwA`)jww0@%g1cZ3d)$N8z6u&YEyot{F}^VtEzlw*ES}QiRXB`l~U`eRduy4pvu3 z<~W$jH5z>nSMXLV z>2redzO^9L9Z|s`;NAxPg?Tl8`6V1qs;3~`H;=x2>=AP;&>!gGpx+* z!(?^((~Me?tht)h-qH2x?C%ogWFk~NfzZ?*JJ;@fPoi1dT?Ldxa5n%puU;|K=C;E} zlN%bhw<|ZP4tyJ?`kqLdGDmXH7}^2I0ClaadloD+^5ECdPaP?@Hb1LVj5gTUiUw8; zqm$H*^{oUF937eD434zd zwsP3d9qX3rTE3@Kg5~odYc0WpjozlIK8&rnlm$r0&2hO|+|~-p#eeKY+%lOM;-oq< zZy?9d(z)H8(ly;#5)BA8(&}&yNFDg8S4WI4z@2;4U8kTuh?_-61q$VJ&mC$RG-#D~ zd3iYGP@`)kHuNh=qm96Uka-+aA4N?4(~^BS#ZpdDA2Vv~t0sWB+*7worgR8d+!Py+ zY*KsQsw(`^Wh;*kL|79ZJ@HgqKv1l^0ncJ8d7k~sjI4~Q{5Z<_R09X5D<%p+^a&3aHaJiwhm66vPywbZcr|?W$ znbI(g{^+iH^Wpq$6Avj#C!DPxypq)%t}$7la{Qc(Piu zNFN14b;nW#chQ|nwoJ;rqlc#E)`!p@7}ICdw8(tLkVlM_Zk6p?LGbRqpq&?Awn<<@ zS|`BVtVge=h8k61oKeX+)28{^4bO&kE0}|=tb}gHHW5${0P0f26{Bd$Y@Ru; zs@OVorMZOV%|CH!Y+8IioLnNh@J9zd{p+D$2PK4}W?<>Z%a6{ojv|*jNgcDpa??tC z?t3r8Uk}Ybv*olw)64}=ps%a!baal{L0)mvxofoLbWR%Fl1sU$G~lGZ+~nu$Rj(2? zw%qBHw4McXx2k#f-D|+9Ze35c%75M>{LOt9RF27{BkB4EeS1|l)FccUNq=8j@Z%f%-5K>zf{YM{P$FH- zOL5SenRQZG&fq?LE`2a7Nk$NwX=`I|WSS$I`y)H>)y!Y&A)?%pZ^+F&Jd~?A$L4KH zo!RDE^~1fJ2RUMS#Yf?dEA5XI>Q-l?o@ozV}%{fdtKDpKZmW>(%J~OAllLhz-H&EHT5`()n=ng57hoMrAiZ%tx_CW zK>Gf5^UBX9&Z=MU0>_;7qYRg`l#J{D01_%cGpANmumqeD%VgJxc>e%g{pZ=DaI8-z zj4e1-#KtVu+0%T-6Qf^D_koyYM}J!S8^SP8JEq`D{{RjvzYz*hoSJ(ablOm{^d-H7 zHd+X2K2ldKee1|?rCXgwK)|vVIS0QrT08IX;KGm&(|fuIIi53JDyFfE>(Qws33YVQyQa^ou1eN!6X0l6QO4Wyw-H zoc5@*Y|?=@8;I?5 zo|V^1F4sN>7}TY6p44B@b~*YC*EOii<=O5h=JYj=GFECQHW_nB@sAYU3E`VQ`R2ZT z)~<-Slp)SJ4W6}hDRV)-$8_xnc^nn%%YAnnGVl&_T|SwiNpOjAAPjo0YtZL~3Td7+ zAyXBIlUp7Ao{*;9OO2!q0xH$r@Pc6m@LwDPdBCrosXuK~x%E!;Afjt~k5bym~0lu_;B2Ws=H zd+A19Pg0WPo03{HBUsl&vqq{$6?x~Wu1fOYT-(GQuvGS}=<`KIK88}9Y9^7BCgr=} zWE0Y~U{~F{kSo`da*f%+H_3L6o(QD-DSQ(6=~^k319&*DD9Y;nQM4l|Su;W@(PSVV zdYZQs>csMW4Q!K|=4Jb_c3Xt^BHXFY?2PrOmg(+fRZ?G`mC;U}qt7FXrCoUz)ya!;*uM%Xej-JYhEImtoEb!M`Hl+yA!Ym^2?&H(OnMYNt-G49+MxaPF4%{9tl zNhr$w$z}o7)9)NsHO$7}O`6;j^L~b+7Lts6n^lT}yXc5CWD5+rBXW+1sjEAsXLj4W z9ldKwFWWJjJLcNem+irH1;;gRU=jvn=~mKBph-$cFk?%r-OGjw*#fRzsz+ehz{PXayj)^j zAe3%%^2nyq_nh(0YtC<#R{5AV>@`GY<5EX=CpRg_YPWuM^C%GpAhQtHZAD6wWn91mLZpA<~@cSJ{mH}VG+whk}bsXd9R)hsiQ zR$*J)1cVpsiXpc1CNi9m4RuPcvS&R@x@s{xOG|cQB>oZit9^ETnT9@MD}qpNF*+kV zLhP!6^4m^FN|-=h8_cb$H5l_F8g5d2jL*7=#|)P(OrQX#{hcQ zhgL3cm7c^Np6^6+GQ77Mh>$TDZb0a3pswGcNv{PkQ->#G1m*s!9>ErMD1Hd9PC| zq~!@zI59O8TBf%+<+^6Pa$FR~agMcWDT{^#^y^zBobN7#K_^bjb28#q6OgV>PjgqT zhbz424bQ!IDN0dIbUf{FnnP&>l`WHH?*{X6EHP9gU_Wx8(M! zchl^Qg*$-B#(LMC8_KJV&iO~&P4zjJGF)9T=%=PSRp_?HaLfqzuTHG_qsi4AxMj;O zX>}be*1fYnqYWcHNRP@AVwY0B#4bdgHFILAoFuX})K(IYHAi!3D@M%gY@Zax0!(%1%Ab`d;$X%V|qp7C0lE3cGBs(FY^}&Oqy4 zi%Z$1*x-bJc-!c5dWe51${=^obBxkk!b<`aZaj)tmnGZK;gvU0o{8b&@#C)JjmI_Y zmKQ+U04w0LXgZVIbK0X(xN^OUx3f(eHq5@`(xZmy+zt83>+N1Y)%kTtl;bE@w?Wdx z(RKuL;QG87929Rnfy;GsXyRxXpIp zYBy0gvEybGV<)ELEFzNL@o>afqgdXu+a~7Acdu6$6)4=x3qNHEMVf};qyf1g^`wx3 zneW=X#V%H^bY0ZCXu`RSG|iLLb6LPi9Qn^qYtf}EyFRBBpy34io4Re}#^n``(Vl(l z(X{)3ZGyXQJ?ji)BDNkCyR|LR9sFWd-n{Miu2xByxmG-i&VzG}nXPJarSB)W_%5AX z200Zi;q$FRV|IEPRgzQYMbML#;?FkMElf_%z#N~HW18iSnp|$jR z6=WF$t~sd1B?@trdK=)U&sW~+P&QIqPIjr}=j&Z|jPok44lzYvXI758oa>&RDWjpd zypf?fZSCn<#nsMVm+ULage2Naq3KqWt??SrMzX?sWqMO(45QTgRxQ3_CGNpU)weD7 zQJyj0yRQstUS05o$=rHoyzG5GdQxv>YYLK#;P&o%tX5)MlybS}BzlVVEh^Ce0A_*L ziul+&!6(rBnwYD>N3qHHyGk-zx#u|TUq5SlSDdf%{KKdsy(~1nlebf%7>{W|#hztx z;iQu8P3j$-<#0Pxka&3^wQLrgcIZZLT3TQF%6 z>_P?^dt;?FR!LaLmNnlrw+q_@YbITpIP|VfbiLP}Ui z(JNGp5;651C7#ulSneEvE0X&J*3vsD+P!Ps!s24-H1|A8^yf~Z$Wyvkk8W{E3wk8V~#BJ zY~W_TS;|wU(e*N-qa`J|Wgzpe9PQ0k)a;{<%)ZXqI2Dv;;VxMt2GvN&59rxbDhrU%|c6? zW^nqgjK66Nsy36K@v0XP7~)o7dRMtlccmWa;H^$x)^g}#UAFjqvI_!oG0Cp4!*(mb z%#dV*k(#+mG_cZ=+{TsbR8fCro{b_TmU2fLt2WX{HNf54Ngkl4U`BbsJR14z9OW6b z_h+w+i=94h%&Z_;bss4ZlgB?=_Ad`0Okfqf+NQr_U6-9L1H~nqIQ3 zH!5{34@&w&!&;O#mXVcge4OC*HSO1=l{n2D*lF_Blpj;JYgUp1%YayQ$4bn(x7x&& zNR^HfOVrv^Jl+2dfdtu9ax+VxK)UbGrV8_RTg+d<>C|#=M6|xw!Cm z#mjjdM~K~AhGUWe&3d_K?$RQK{KD(Ud5sM@;* z)4&+57?#l-DB4cl!yU)1ch02cE54@+X+=evkbRhq%Il2al0|C6EDV{*q18y22CiC3 zAt$gP=B)XM(e}@^bg8K>V-9Au0_(RU>t8zjSX+PiOe~xqFU^c72_A4qQ=fY3!?dx~ zmeFAUR2 z#F9^1^wlJmh91$kbC;Xvl(FNUD?Z^yTX4xeDjHWdrred!HSx8F+B8W?zyM=4@?N(a z3%L~^%PS@hJqK!v5|X~1OslO_pHnDEz;I6o^Q+Oil>}rrek)r0-EMRw`B0ZJw6^&t zj`hV{tH(R?NDcDW967Aqj*aajpwjQB7U6dsD8mk%)~YkOF3vZeTL-;(RcUh9bs6YW zl9fJFZrVhKBCK~DW17#pcunHEs<7S8eJSB*CtW`0Gxw8B_s@l%CR;s4QEikc`FH05 zvN^A=G+z^2-FajcL$hcg1+Pai!%bAWW|&&hO3do5wHqSg%P2VG-ln>_g8fz|B&irU zHRSSCcXH@xsxD{de1q{WOQCmj0B&P!DxTk3`Nva|_8FO^E)<`a2Oy7H`pi8Tdj)gm zu@ziuH2N8EEYsXG@>q-#O?LLrFwr(KB!hvIoYpgolzCb^F#iC=QeBMOn+fk?K3qmj z9!T}Bc<483#zujd4hBbhRA|D4Upb_zUTq^amOnM1BQk@6Jq>Tz_;TX)P{z0z>$bFw zG?m$<`IXL^PXtX2Z7w{_46f11^{q_`Dg2Qf@w_gL%CYBMeIY z8q(59BP<&Y+arqF77Pw{E$LgU+TD(K zFMpW1A{iw{k#fVQwM@`{@9$)eb5k9ajJ(Qnz|2Vgb)Pnzg^43A>q36>bg z?s5f2EK0FEc*g_Ys#Zz1YNQKcCL26tRf7X;>Omc=6#dn59IozIiZ%sV$6Bl0?PpbCSN%)>Jd&Q zJZrq1;0#w?Wvap<5i)E=!6y_tQjG-!_BZy;RFuD&+_|dws>w8uv%{w5Lnh$a;2!3@ z55-!|#q9Db!k{kTPnYu_p{{Hu7NlEKdz#e5#aX55c-{7%Zf0j>8E*KlGWWx~x*R_eyo@`~3AthA0fI7k?_7o7hbM}59#-&qBOPdz)U3&z6dlowd^K?L zWLuD{&PeN;WZD`cA3EIbBa$j*7s{=mQ?#GFW6P#Mu&&TjPeV*PE!?AgYGh%~aak%c zPStw#I%7Um`3C<0WZlN+auJc#)Jtz9a-HMwuP&_%JM=xQETuTyA97*9&PO#rnTSCn zaXjL=BSj{po~6QEwKerHuOw*8Fvwy!u6|p_c>!h_2j(PKVvVM|nJIEqw{j0L-M4PY z??}^aC#hr5`qr&Y#djy!$u^S^U1nfPkW^K#wYQhU5PE%Ul|iLx8pGpV$zzq|gcdtr z-?*vCW(1Di53OY+>(;D^72@1jf_sX;V<<&+)ZUX*nv))* z%)u>?J*wae6zy(DuX+?))#-3>i>l^{U~STHbH^mtU8LN3H!1tf6V!V8*Qp6c8=hVw zpR|WD?Oq<$9vip}ZH7^}8uwjF)jUh^`};(E+Jq%zU^y-b~!tZOb#TF58>wYhBL}U1jC?)ud_E!YBh#{` zFhS288ek^`Fv!h#F}$I4eJfXDak!r2p{4nUL(`tL?bV5-mCFkwW0Q_EQZ$2-DLpM< zPf-IBcIS^;>ij=;k!o=(Fx*>%UWOTSO{34nt5R}rM16bVsRMXM*zN?La4Vp%4ZnU~ zr+po1Mfn938;5-LG!uc=jfv%3nOEAit(1(CxZmHJhAnQ|bW;&&81@2%88n#=YA)SP zNXt0f+!NZSB|*y(fzLFjWSHT5U7rO0(h~@@8<`7yyUuIztKu7j;wz~GfD04Pdi@Uv z7V=oNz1jKwI-I%PSiY?u6?W&%az`Z9BFdwjmamSlCaTK&-224++mApRMQ;6gHQe}a z*j{U}LKtVS2E9BqqwLyy>Ty;|oi`?ZYaWYprTAjO-IILrhuR;IhoS!f>sKe@KM~z& zkx6f7aLc$2!A>`QYvk!lIEu|K=eXQxP;=~&i{RV6YgX3ehfmWRP`)Gxkeml*>yy}5 z>yN=tftp62rPym;G_#J@=jCL#o+H0F=Z>Iu&3*Nuli|Lxf8I5sK2kGy*}7kQKHssq zvo^_VVH(A23I&Z&VN?#@)n%_BRw1Tc+4Zl3_Vp^w%5LqR^eNM!4p{7o^0Pp2*;W|H zubw=4;2l!_*6Ii)W%ElEc+ao@0A9U(9cWUkd7fTB4?IK{A?1D+_;c|Z+fWhfS2j;> zt+o>YV#R$<cizD$DV7v68J~?&f1P{h!>@^x!!p`j%96##)+}->hO&lXh4zu$^(b>-aZ-!^ zk@dEZtih<+MJz5^SZ5i{br#n@yvBN(`M5nS_dcb|MJ2N~7USg{=jm5rnVXhBFQsi{ z)3`^>x+V-b$T{cot4VS)0p$MxI(B@c(MYzF?*l(6srTiIxxTPqB>T#A=nwwbh|PJ-P4A+jrK&f?i8Ly?hNQmXy0sV*s|ne5&Z zxqy`@+nd(Dp3wCLn?isw%PQkJqaVzwUPlfQMM_pT1jv7iqznkob6$O!>T_x>3~;2H z3Nz-uXxV^|aqM$gml}oKusVa~=dLR`K|R?DP3&Ns7^S*0+_v`jt=ntJEzl}rrgCzP zkmD5{Ugb?wQxB&~H+5S0Gvb7?r^N~6P|Ow}+xv6WAA0ow;Xoe0a*1+IqkqcJFCMw2 zN6JTzUU;~}6SBA%9Xi*a>i#aBqLhh=0keW@I8wab&dF5Ows}^!;`yXUUo?z+*N1qI z#1cEW$&i!tFm9fe?81a4YdsO>Rrk_X(DLn4_2fb~5_*qn&K{+_d97elXlX_t9WBijJnR~S-Jvi(T<%Q z&;Vi?#&UbtD{idp&Ztg4$uwc=o)wDn+#^Pendc*}de@A2tKp-Cxbia@L%B8%Thvt0 zP)VwbbHCb3`W_pq=@oV6LP5YJde=WOVC$coJab-j@bISjZ*+Y|8mgTRcfE}1 zVvwd-;{)@kP>|!3$2H9^(C%3Hr302hyPv76Y_a)ZsRwscT=RsK{nNXhRHm#` zc(8MjdFxHs9|ZFGt+}qPQ*zd_QC&zTz>uj2u6U&oJgf?wk3(9e6-`ZVv8>@JrOIfC zHz;g#(=|LV!ytf z#WgOcC3>oav@_dJnm1t}EKf?SCYs833=HyptD3bL(v(uz))%b{poqyE?K#|Ak5gWo z;m-_f`l738wvtUTI3F*|*R6ea5)|T;qr^Vv%Rcl^LOP!a7lJ3V)RgfH@7$k5_eJSB@ z7Eh(=lEe0gDE|O4Oz;n=u6)jG6DvolmJ1C$Jx1lw$k%mwukYSf1gmrz=DE}6mdRpx zt}4rxoFjdYLYx)cyN`+)C4>f2LE{Frp|fwA6?HAhzypf6Hq4qylM76o;+!p8 z%|GWgZfWQ;LvNM<@<)1i*#jNjO<>zEL88-!Cz_Y+i{89?;-4m^nWRN>!nxQqC`G^anHR^Ew%(O+VDvn=AkwqsW{7hDk73r4Qxdwo{WboNgUNFG|1m$9KaH_+n6L1HRXr_%obk?5MggzVze=7}xBRR{0|1cc=*-uUd!Sq zjPA8zro(0~rSm0N5UPywagKnVYA8-rF;bQEXeU)m3Zd5L%Uaj$w$Wa@*%prr(60ug z@HfFbYY!Y-*!YSUirf+AP7^ri9S?f>;(-;$Fi5YHrHiSFgj?&m_HLaTKf_w1#V;+7_Pb*& z803-Kpw%o~X|RDGnIU1GaroD@LXRw>pHt`R&A3WZXTE$X&_L6?^A20FKg2yjuYb3( zK!D?rdybVg-SHB?Lo7Yk9xu3)+xbDd8sv2$h$Lcq4AifBXzXu9&OJw)sRA>N**=E8 zn(!TwO$8oJihW0X^sd}fai`1Xk1G!s^@lEpdo{Td=Q-ojvM#NDOo7{zUpZB{-LvfS zbdsDv$2a)SpcQ>RGRr~ta;Tf!C@o7t`{)6O^=E1@FBc8gym@xo`kl>si zDgmj=6P%3puQ~F^L+)dTi;81D-!rf!vU}p5H761kXTdxx4x@^3gKE!nPh%aBud6(f zsBi;kf-9Z5zjyOjl5@ewYV&8X^;L;)+i=jOee!umR;qz>52 z4w&Ru^fnfXp@)h`@IQ%JipA#=rnZUox5CL`f=MkTb%;m+W^;fC*11oJb~pM*#T%Pz znAy@%x)}#4w2bxX@A%ht5h>zip7uWns^to4t&y9gTi;75bwcZo20EJd?LcStZt-=M z*DpPav`SA$SqD7*OZb6=d2cEoFgux(^Vq9eP&TEnuju{@$y73&ZYaK?ND<$ea zMl+iF58?i%_WG1>F4GR-mfg-h>&M1H%A2!2T)nTZ#QIE38USNpz>I_IN>uILo@?V{ z7Zs`cOZcu?iGYj~(;cc8J7pL-6>yil`x`;o>Rh)^F|v6X=DVE^Gz_O4`qyf0)3ZDr zZA-M@9JE^x)Fof+nuU>>b+aI6SmgWqu+`Ag$JVU6Iw`DDnjydUGWp^5t{SEN; zQPA<7VcvM;3zyt$&96K<)5vkTfjHpsE3!D4P<*U)Y0jjTjQh<78z^Fsu2lWvM@s2* z@d~1BAo0??%GI4%U2J+dT2aH@bvCDSZ2;Ylnc&wWb0?dqmwXM!0FlY|qX!GVXRxt# zrJ}Z^V@Q(X_j8TWh6N9Pz3aKPvhwZmj@hfPQWKKU=Af!OxgjJ~idh-E4AfUwksUA` z^%cc6DNQxd?!UXf$CA%`BWlwlJ3sGww{NGlI!m|n2h4amHSW|o(X)* zrFWA&^v!lQ>b_qilhD@{M(y)DV3kF7ZF#J==M9DfsHq{iS#65vE&S-G6w{xW=TXy@ z*sw(-+~D=~tsf|)+etk2_pbR)9O^yKGA>PX47=nYV~)e#t=PgNi_Bxwy+qrM8x;iS zT|UIu7fUQ{80U_)%iP?&F43ns9Zza-R$Q# z$u-M%akV*1mOTqXL+5%9^_!?h#4}@f>&H`B#++2qq@OfWk!I4|he;EL+futNzshi3 zxvn=pY4V%FS@X&0wk+uP4gIK2aOy(}y?rWO_@{9qMF8c=<*Txie%9-vIC-4ud)>|W zZOqfeBLFUWuV(O$meDX~UW2Hqttm$g(|WN&ovXPnhk1Q^_Rs}Cc=4LgvstdE+}Sue zqJ=+YN1j`eI-b(9hhwWm+Ymj+TEW-#1cykJ88*q-4*s>z6?vuH>bzo|&S%3KgIzqH zVaYCWpG?QIFB$6DHj zD9Wt4j+)h72u4udm=i3pN=%q0Ly~)%=`?H5n^fmH$f~bN&s1}|lBZEQ9c9UBqb-c_ z(xuTMS+x_tAP&Ec6c;8EMaof@DmU2J)osLaVFr2YRBi0QpUfvX8LoIcP}g$ZE_&C# zh{W*&uh=9iaM`am{>_r^NhdA991L;Rw8PKYVcg#1sRvgPWvWFhm5wIZ7bFg+y)MOA zuoPsPX?vb*-fj|dmq@D}1*9$ICKmy^fm%%zX#+Vp#bo69xlxp9^GfexJ9J5I93j9z zcCJlo%Z}!nc!rM4SQ$&j;SVcfGkUbkE%SSJ2>ZO9t)ceAXlV<;@ffjHQVL0X19gcC*(zcMEz70z&ToYt+a#?@WNam8?3nI?9)TUK>?exM%VR|ltF+}B$L z!wCNNPIF#;Nc*nlu$9$@++2crJ?oy-u8W~m;8t{#l#=XIR!yUvYmKDkx^=E^P`mST zbA$EkU2%(Z=a*J1MblSjGbt}2Lw8#hKn@Y_UV? zDva@$k+aArIW>&s1yisg_LSd~GPOw=B4#H%SB`7&oUi10SlKwICAjSx8E3p)bRBEoG#hgj zf@6j}ocFJz#Mvve&&#hVNxjadCv=#x7{|S8!>NG8lkO>~D!O+)Y1HIxNVM9j&c0ln zA9~4nQgV76j!kq%gQIwuy7cR$*67HaPAM+_dgit4Z9K@qIouDedb6m#id{|woGUc? zog_Br$x)u7qq{w2QV@3#f!OtSLlzpshWTgr+P3~Z7^Ca-NVhfRxT%DXuFGe{~)x9L) zhm=h5UiDbcDBil#MCil}J}Wo-9o`b5OE!8M=cQHqH_mp{i&N%bXskRkq&pldXRa#N zpQNlrtDVOtl&i{gnvpc{?hYlJy(tTZ+7G7{nql%Ag~kUwb*@-WQ}=Fm)sG~lKbcBd z$&?MHx$Rvpmt!5mo!G`RUYnbvc6k)!>s3+iYrTTojH={g9_F*=w`GvNGBeI=lb@X( z6(drcaC(yhfQ+6GIL&lAOYOQ>R@nIjFsv%3=)P{Il6?9j=r0cxxzi()srRp2(xLwV zL|>(RRSI17+I&Ujmw;vlx{yS{H~!?!6j?azL>uKEtqXv-3pI#TL%P$(ArKKC8!oIuBZ z{F1rNDrq^eQCyLIQEeoSLc|c{9j6|(m49L8+soyRtlomT{pd+FIaH@O^4R3k$?fmU zDv{4WTHJt?VqB1GzPnX^slG)sl6t_QGqkVcOvvmh1y8WEzA8FL{>Q9nR z3wB^dDx}QBjoGT{D$jb!*z;X+jJ>ZjJj=$E7kit6)nwDz3w)U5*BdRm8`6Xh4_wxe zm%Ssq5TVNnvZcGC>R4 zXvz|b*2c7JbJM98(Ad&67>Q>w<&VruS9zt_HMnMG#(Rp|b=>JSEzW9m+-Y+z=Iz8@ zWP5({Fyz-OExf{4$;%E#Itu5*yEd7R`;Qy=Q_H98jaa4&U;q} zb(rU4*WSIF4g61I=WEHiCnHBmzcA`?N)OB%Dt!%mo|kV9ub~!@2?5~ql55k%M)2nB zDiv*Ck*(3^zA4b!-JU@h^0#LlFe-lm>n{$m4WZ~?E62Ti*jOsqSuV$ujGU-qBX1+? z4LpggMi0%8x_Z+ttjk1B(8P{w!-Sfar?pWlU#ZQ-{*QV|I2q=;G>>o+C(n_<72Q{x zMtRiUvWQ6mc-wM=>Q8#{{{S3#C|~Z>Z8IJEuF%7}`eL`iS9okns?9MJ)*}llPj-0A zY8w9lhVLL*Bapc`4uFG<`&RYO#P1Qz%N5VsW>gzfELek&@UN%FWmtS`RigaQjmq;3 zP6f*iJq-5owzShohDRSD-x~sOdiARdO#&}Ev31${{RbLQ3~LX zv`nk}xbuSE#Mbq<#f6Iva0GuSeVNHVzWA(vu;%IAJ`zK{=Wg3(kr@87nb*{@e z@}OXHGuPg_y*bP?h73owIL&i5b|m?1&b2j(ypW9{+6MzP*1mTHv+!vsr8~2NN>I?u zxs`~{?E3ySl|0xadsjrHxpeAj8(g5nDh_j+s`2k2wqnQ%!>4Vt|_b8NYvE+3VburETJ;^=6z}AjI@ty5knar6y$(O zuP~oT(Cu}Ujxi&~oRxVuX0ra*uaCU_pDm02&ib`JXFK{G;`pP&dS`%S({%p;55P4C zU!L}5GC1|xF@^n2c$UAd%PBC$oGIKm$6tE#-5gy^LzQQvJvy_({ards-s*Xjla$vZ zW`M9~8;bIIJ?rd`0{B|q>q3U)q8Qmg1fFsRPZjTCBguqPO!Mf^nzN?*9-zJ#v=J&B zQ8KXrfB@^)n(}WF_+C9L#70sFHG)Sg#i`vFow?Mk0@fx$bv)w|qJdxqSjoPtNKK_ccnV=Yr+75QDaD80I~vD?mh zs#4lS0U<`_scqiIu~yv9lGF^S88r}q?BH{pRZ$@!qa2 zNf~QmDIz6E#^>qHbN6~wQ%RX3&O3_AFp_#2rlhQM^7wMp$srJJQ`_FFH-ap$U}ueX zJ~$+QpL$ZL@67re#YS$@IL%wZmsUSIubP7gfuGK~3*8{H2@Fbsdi=c5nw6!}=Omo@ z+$GTE=7JdHJJUU}iqD?L3z7?<9B1iKG~ArJn#Ht}XDO}dR{MO&Qw2p}*lG`E<_8<2 z-OhR+dX))csdBy1jB0x-_ePx4+DM1x1djEAabz8`iZkCG>&b-Xzjpc_oGWt8xb-pa zEoF$bVL)BD=bzTIzRbl{gLJH<+HO%txlYwuYkL_t)}*TzyacY@}zQW)BH2=)5O~R5w)BT0+W#=Cm8kT+P%y!9ZgECx*mOM>BT|_^|`(t z>KYE7jWS3>@?4(3{c7)g9jVD_d@ZgQ&9`7TM%)bjYo8Su;xNs``L^m%#w7cg{yXsR zmwPj$YSAzZgdY8IUKeo*g6!wzW#o$L!9Q(>j=I>2^pz|`=})=4rRohG;B1@&^H|LalMY9mb$CK8csr$l7`qPxvhU&sMd?h(P$ec*0__?LXC#?rn(4_E9WMAA) zkuZt2wmSM!)2S`$k>y&$PPfF!#zIe1-nX<%yLc^>x%vGos!#VTl;MhhSbWD$y1^uc z9r*XC?sZlcti`)?Ty-O8YInt}p96l=ddz3TZ37N+?npeHzz^wPjs7sXGHR{!Gwk^? z&60h|^{>>hmWK}Csy{iWPyR9*vhI0x+P9opdFKFCW6uoRv(r6m^SX_<%`T_t6z=18 zNCKuXays!|-SCG(i(2vBm8p_DcbZUwS2$J4#!2+=U6f-VWjfM!^sJ}n}e;k{tAk&k6L^YfHN1&Dy{GqVt&R^sYxc}V2;p)iPp$s|;2)3Va;sMv zQxiU?u;^YRwec>3H2qdZd!H|AzV5@dW8c{79v;;Y#J*evj7X;-uUyyXnQcc$66j6) zve^A6Fr)2o{@y#qYJ0DMJ|xR&EHO(n6yRq+t$kaec!f1P7_MTFFee-y^kx`et5;Hv z%#0OBR);TCcJ|k-TYh>Tm9HJvKpjau*P8WrJy|DjGeKwhK_@4@PaLXLF*yWrRTraO zOxkuymm;4n&rw$cv17HnQ<861ZnPz7O2#wuU{-a_-qk*YS2Nw2D{jtDP}Led?qUHx zwZ&iSl7k~FmgA*tsq>mjR!qP;{l}Wc<~v)W^u-I}8N_6~xjDxMw3QfhSmpMTm8EjD zn)K{57i2J2f^n!J$# zB(fIyv&XrvxYC5`#wf~il2==v>)>5RLP6eJzJD6}$HO;IE}VmQax+UaS81HMIZ9Ps z`kjiINX|}b%uOigB-fO!%c<~Z2#ZZEO&PNAxu?emaFO!uw>Q`KDj`;I=f-J~aEWobPhQ_b~#Or7jp;}zzb zh1Zd8K&+ zitcns-v0npMMcOAH*?maF^@jI1t(}Ew?2l@Y*IT-xaECCcG1I_!hzbjAev`Oii}bu z`z}Tsw>4htO^#^a3NU))b*9%gImgVwBhNhEv?&FPB5Qk<R;uR$)EstaH_rX6F_=+|$L?MWP$>#il z!0Yp5S8rweIQX0=n+g_!2q2xOLoo8`zB0*@F zXTq|@{uRSNf@Zo5u|v3z;UgKxtrX}~O*uUnspHi);|-3d!~Xybrfp6KoiKp^0Czn5 zn)>g;S{;^)Z30@ri0Yw(?dLe>nplS?O+p(S4Mo;6$-ZVNkQ znY)_D4M&x^H>u5tpEI%ubh$j`V7+_dx?4+UPPuCLeWB+@GS=nfwl3U)a(^naEP8NT zn&h0DEk~Ie32G8GRTwpWV8#m!@zB#+ByD7)VpX>VF^$>mYR}n-AoL*i?M=HaNKs{l zwG4N2>x!9e*MpCGlS>vOiFT9HtO!xS1GvpJ^&e5?b|+5XodAL|deLoLCR%DY13C5M z6!91Yk?U2fLQd;KLlD6ygPhY>BalBITDuQUqJi@e+>y>Ht(R=z2B}fkQC`KU;ta?B;Eo1xc{NI1KYDHhJ9>N6&8VetQnEQ+ZrM`PoCZ7-UbpbK zO0(Ty;EDKMgcF zwaZ`a4WdZGyRrMVzyg} z5#vYWJ6S=<>0dokomB^BdUuOxkBI3d1Dv*16)R zA9hbxcgAt4vOMEO@r{n59M)HbHvm@z?)__@@sELI*0lG%umFU?03HrT4SN_`OAjkc zW16LC&0RC+eP7}A<(0&j65Ex5e(Ro(>t1Vn37cAu0NBG|fHRu<3O1=)EfToaS0&hc&8sswTnsNiRM6dlaqngxLd2&TX_pc*;Dgm zbg#*Cyaei2_K;itXZQaA3S%hZGU#3Ej6*!K6>te+cni)&H#aP$6dyO~kzPzPs4TPJ7z2j#}&=M)kg)+tRee2S+ z_>8QTz{_VG(^%*^Vde>ble$J|?xIfxM9La&v$>SDE;({{ZZIRm)@++riCmIl7gb z?$1&;P(E4IZe_gIWRgbCTjd_Lddf19Z)ODNfm!2rvB^djhP#*^Gu2I(ho=ljDbqO3 ze5ozNT zU^q3!nOsU@MG?G0C&Q7eZZd%;{ z>&ffSHR^sJ)yxc_Fxj|%HNhn}2A1b`8l!~o)cQ}t-Y6GI99I$z#~VrQ+PyD$Wgz|T z_3<^isnyqG^!zPvZAD0WzAy>RN}z7ue_E(=^Iy5>t<8-(9r9!of^%Kgmv6KT^#Z%B zoRU6QGo7A?T@0IT%J-<*gAba$m_Aq^87*dWI;_SB+ylWC~vz(7wt30a=BLfaFNg}bUPukRHsYS*&ayWff^{1G|%vk~9J9Aewt0|_k z7Xa_teq~;wy5~wXXse!Mt18va+t{Qi1epO>k&bJhW{oA>!*+QbR8eo(-X`=x$?{{n>~ov8d&Cd0Yq2abApJYPNj@(o~aAdz!j!w30A>tKT))$vKM60^@kD zda>rHqaKXXDbuFp%aL3(mdvE*ioIb2Bu76txvdlzvS{a(>P<6k1FVQtWapZ(Gyd^Q zgP%%%qi@>sZR}N)9AgKLO?YBdZ5k!o z1LN-wtz1~EO400TMcqo~z4fS`P)N=yOJs@`2mr|MMCT_M#F$fzX6DT)8xWjV2d~HW zfgpDUHun`uQH+x{A=NrYlcVCOvcHjEr2$j=M8 zy||FHcxd-$DtI-eqUdcUv6kR&e^NTvsfvTcQgU0f8W+S@N?RkB@dc}{ujQ;KgPqvo zo2D=NPI$=Rihj+y38E`iRVvB8jP!jv)$SNCYdCm50F#>YT}oy9agVEGajuLsR*cf5Qe4leMkIM9XI04b#df+Spo&H(fM~?dF-;+1 z>8h2YY3n+QTIuZ)5bj1Rp0SbSJDsxJbTyt5oD~-3)tch#FK*)>vUYYMl&iO=dh}f? zBwJxFGR<6gr5Hm_rnptjJHCaBmXrc^))nRRC@H&~WY!evrxR+@ZE|&Ii};@X?k}W6 zA#v$me?HLM@s5@BP`|T;Qa*k@^OgIRg0nP|ZY->NdQ?+y1LPS!!KqPEo!PwR`D|FV zUDJYnIIhP{fsBK4fOE&vx~j(U<}!m)I@M_6PFp9vT(wn_Lfm@SlIJB&$m@+b)@mt~ zZ!UJu$R7=y3bm(MZ{0MxEuIOkEr_6~%qTyJK^gi`!d7}F$-Hw&#R!-_&&qjn{H7;$=8&R1aLdyGr>;+;=FhP_& zbrtC9;}eQcm9|n#mS;PTMr%SFgTDavt?d;j9)!wrlIAvTFB%tBB$J*ix3s%0ZJpbg zj(w}j#5n5BDLFYmAev*r1eplV4Q6T%JheFmz&!d^Quid9>UF`pJM}nA``G|>2M0MM zRvDG%aC6?h2Nh)#jyG+hMjl@m-3Rjj~*>+9dJ_lWOyk z$^Lb_X9>a*2JBP!lrPxLM@Hmv%1hoqm~qb)*69%M*uaiQQQnM8kFvT75R~S64W6C4 z6$EZA_lz%nb6;zQqLe((IxE`L=Q&+k<7?5WK5$nx)?DD*qE(3jQ>hh>5u4a6uI(jyDUKF+ynB^G+oa`dK=SsBS zZ^7VKv0g3IyV)9GSGje&HKns~fwE0kTUKT#IQ%-+kk(1AhgC$}nvm0E@;=bzTdr$b z($Im+5(w*Fom#hsr7_CaiXT6FCm63vl^CbY%&JvRo~0e2 z;m_8(O&;kYmuqBZs;qs-bIgqC(yJMEXG=BG7~352o@%m>JLbnVlxgz9@1g5eoMl$) zsZQd`P=&#(ns=HfLUK9D&2-C>R4v%^mo#c5eGlMS(rq|k=PmN{)K|LcAQb?f-7DfK zMavZ?bSX6T8?D2-)w9k;eD~tHKF{WHlgTxXEn2@R(x&4sW9L0Y0@@^v1$?^jMv z5_cU{?P>Ep?o4H5kPP$FuUeiUuW&Lmk;ti!I+JE7_RM9JS;DBqXmntoxW;*|A<<99KfR)r0q(ms=d9lFb}4iPsny$?skv z;|svD1uO>aoK~=;y}Fk}mK7x&9s1p#V3P;b_-yB`dPa#1uAs&VVmnuUEn1!B)L0uy z*`9=vxYD+<>ONp=cFEl=3`zkc=RURb5lfZG`YFcJi+vH#>Qcc7e zUhOExFw?2?c#4nfETuMMY?49st2$h<%X-IfBz5AoRNZQBWWHZ(7|h?gx>&5F8Tm;2 zxvmQGLp_g(r`0{&o#;FTB)9IEWam=`quHH)Z-+K zU0-JxE9z1ZJlF_#?&7;UeJ*J9o$b#Vz^bi2MQ6KbB_3(ib6XMG=_$?GSM!L;Pw8E4 zhM(rcx=v3~U309Ovm7YeR*zG()2tNRpgbPK*0pDa;Iw8S<#`ydHdPXqr*e#)K2~5I zT|+c%a6RhGH_$b^5zAw*tyI%#xb-;bRgB*(-o+m-JGf=Z0yB~-D;+jDbpUhs4{G$O z)|EA{LyoNubfwju!q`NX;0%r{m)33eS~ge~BZ~7?Pi)hX>PnxprOk87bvtt_{P|`b zKN{jS3pWbqBn{cGq@>g#W_--ktM4-&+<7xFB;*{|xBNNOOKP8GWAYc^sO)}4AstKz>7t>%hnSd@aGWFAd?m6=-T<3J;~*`C;`Ur{KUylQ zg!-Ch)Kp{7({t+Y0BZjL+MXVQLV4N&=i0q8OHg3Q>yB%e83jWZDE2j>Q`=$VKIadr z+dO2q-2?Tf==UN(V3oGE-Vd!?Uebn#B&Ew$Gk<1yBdizs&s*T>}k)=-8Xf8Z0r%xb%vPK+tMZo;3zx*OPbH4Fzq=Ip| zYgLS{qLPuEu+(JJaaS2HglrkqwX!qkJt|S*TLlU}&Y^+EcJ&`x>5e|UW24yTmI{QY zcC|Dj@b#QZ%N!AeCnJt()xMJq6AvyhtJi^CbFWfv@^>_i8gPZ8jirE-v=W|}ts(od zf;!hRyLuCsWF&)-MLbMMAe`3se-~2+9&N@=Ghhz9b*hd}Im2U~wJ%uc3Mh$NBa_Lb zkqH2=HG`99O_j_&QrpbarA|p<&%Jz+<9l_t@f@YHjg!G2r}LtdlapOeTt<|xc{H+r zrJT!^W5FY*wE|UPCe|dW0Yd)(5w3~+DKu?O$Z@_@dD+O9Lc|oyhCXYu>@al}6z8XOmgVl5_qSoxYKNIqD6S6j7SJMz&`%9uV?V$Hl8`8k03Twbj^8ms>TjV+N}>>r6n#`7o$m? zmY3iUCQ#m9d-dyGwU2{9h?ZlM`d4hLCbfGU&W~1g)}Ia~x|hzkmCHn%m;=T;=B!I| z7lSnsCg|CU^2BFp{Cm{a#C>9$pmS8EDu2Acx{oRG--{sEwN|=mRcBQjh~OSET;748 z>RuzcmJL4q!6d7nFdh>f>z4;jVQ~DlRni_RKUu^n(ssW?)5pRMYVO`YJ6nmEMhS=# z#rf@w@@tjWz8*uRUn|e3nO&TMzGg_l=xdTWo)$B4rjEH`u@Q~svCI9F!?u>vy~Ox% zOBF&sY}b}}i&4`VBx`hKT<{yMVOtYgrAu@N8Z@ZysyxCyQUR+F?TzOE=cRqi@Sjsl z&k9DW#K?ed`gE^;y+8H^DIAcSc(|q2Gv1*hod=MEjYM6$RzBe!o_oPf$P$35$rG;}eX z0tq=Rc*RMaImyp8qjy&`*5qzcnSmW@w1aB(KTOqZtj)H%A`Sozo!O+^%RWdO3FMlF z(U{j6eDK3H44`>nvBfmSDYS+&5f97B?kRU` zzGiCN>G98KSjG#H*BvunH{y>Di+LoTFm^ZIUe(V@^64Xb@#c>@JY!e42{RO2W52C) z!^@G{GsCYWk^O7AManvyQhciDj(bSjCQ^3{ewD>)z7@NcLp_Rlh^dmfSlh@bfUSH zp2fMsPZ%tBgUP_G$?S@$k~6tIJq>s>Q;kbcMX~f)Nj`2^vz@$2cCwL`BRDnBn{zJU zILAZlUR-IqZTj5wrzljHFH)@fd$Kb7@@pln%1FSBusv~I9?>-7g^1=;)f#s4ENY5W z6V&IuZrg>*zR#D^x#u?+x{J{3grQaQK85J5<0!|>E zgHeiC4YB!(NdOa8lL384TI;vGk!tOvghgwMgk8BOjw`;K5f}l z!TMF=u@BlylSFwirr`PH^(pv^!cbjlcM4%vI|<45^sklmZ6Wl%dRQDX^OfL?jQZA@ zYlNXVJs}B042m9f$wS=n>t8!~n@M~W3nfbtI)5_^ zOx;LRuh!OoBbv99ZU)k)xF@Z4J|ESlx71XLisOx-@tXSlwp_82zKrtml+@|psr7fm z-yB|AvJr6NH6xOJN3DGyW#ex)-3OW&Z5clGE~c z;Zhg4VIJQuA(n3E`Pacd9rzFN8{%Jzv!qzLw~&^NRuJw41$rleby;-1UO5%YzTiO>G?G|nPF+q+N@`J@cSqcMH;C^w zPYb}};pF202R(hO15vz^3#lf$xPL5=H%NFD@U$ty7>PwA>uSn%D8fzZ$n1P)X<=|1 z?EtVn0j`t&7aMuMXNql$jtCgf?W-Fn#VeN)t6Uc2Y5BVI z*1ZS7UNyMX{AFni-j*g`xErm0-;m*{S*vts;yL22I&M=xSN___gCajR1Qaa@sEoR7r|H9)Mo z{O2aaxM9SyTYF2W{J9Kn8zB4F(jFP{R-NJx4@;(Ng?H==6Rt8n{+(;`oK$Mv zPAlGux%b#g(Ta5H?JW$gLrK*l0K2xIpmFhkK_=|I6EJ-6cQG>OckPIrdDaU;i^*mYoOa?QS-E{Om!tnQrVAZtf=1JFf0o%KiUH!GzLXz1gzCkHPxV_Qz zxAu|ek5gSFJ4p@t)!3v4A_@7sR<}+(%W*e-OUTD)A+p`-c;=HQo&9s74jEqt5HFwaL1fAbeMZ*#X_P3`y^N|{la#!VKN){^$I5zy z?9s^Oxn8xvYBCdU$IRM#a%)M+bF^y+C1!c%r*K_aOLC{Lt#KDj-hS|N&P`*_dTmFk zb8R)|VBSbtS8hqiBCKh!nI%k~f1Ps0u1hh?o2k^j+;AX8Amg0ox}OVpmeR{rQ!p4j zH#`n|)-mR3%Ev`(M_17LYe3a4wFpF(j<1CWZgNPj-qp7Zo~F6zw=pHUS|fhl5cIt7C|+d6>N;0Vz^Cn!trW0@*_qLR|Mj+NvF(qroI#BuNZtVdwH7X z({{m;h5jn=i`_D7dDqTE8hjL}Y<6`B*1NWE*PG`C2-nCGQ^Iq;9cHrmFo z1eX!B!y9hK-@FH3>t9PtmW~c}dZWR|%bmuJ_dfE{?X;aG87yE{x7oEsiViY4r`=t_ z6j%+hdf*!QxH{95mG5&JwId5bY>r0%09>|HIe8BCUJ3px@@;PVZEF22;gfS7Sb@PE z>(s*GT&gKgq2yw*QjHf*JF`Pc@PrEp^KHbWoPu-Sx`=!o9_{G>89be}ywthdzJ$_N zrj)ljYd;P_8x5(IBO@ZZdwnlrBH**H85M$xjhi%-(^h7u*hbHo2L82RT8-Q;GwoW_ zT-Q0Da^hQH<7WfCT#nZRIOetLh)wk_rJ)Bty(-jp`5DK})YFxcy9Kd1i{=Hn#ZF=j zpziHd_d;#la779CzZ#e2EWb8*s=9Ad`H4vY1_uOFyueuWsZk4$-PZ?-lt`d*dJ1+W zwt=ToGFvCTG`bQAJbP6wSYMk_UQD8&ymL}VFgY!Zj;;q0!IXELVb~~;zTW=hiB<@mL>OHQKKz@Ik zsri7b9oeai+5(rU7%FzVzF^p&smo<_x=-f#@?){iGHOKRO@7 zW=ndGGOHlm^w*gQ$ZU#_QlGrY4CSOe)S-cmi5YL_RV_9c( zBO8gwHJ>^Z&Ico{bIRP>nw~xJ16hkq(As%%__kny{Ahbv#eW8fjGuFGO zh3CSjEt@?0xV1wU?(|0YihMt+c#~PTEY3gaqPI_|HR#?3)RV!tR@!8(`=X=fbJX{% z#Z-&HM-NYZ&MFitOB*~@UqpQo4!@<|!U&NZILJB9b5Y;g>FHu_+0r=io#m_NBUW*O zPpR&5#%|}8YTh~U=8dXIuPD0+yO(bY$Iz47zG?W8@fOR(HaAvwv7!cxVk~Qp{d3=% zSZpm?_=Q$mBO2JMbYS5gr^J@mI;V$xNbyL86wcy2HbZ3R=J&6;J`8GBz9JTuI)r|3 zk<>bG#zE>cUrUEY6HRxqhMD;gdbgdY&wuGeOE;gn@S^*)vM zc8dUu!>}PxaD$w6t#P{4iNl0$e9f~{XUa}$q=+1ldSbkZrz_m|s8n?3nU!~HlEBL8 zxMQcSakrWfkjPMsZ2OEp@$X($NJcxY58X08BCCO;%9)iPht)1OD)#6)bL~?90Ae3C zvZFc9aa^%U!Sil=IKDB&N>}C{G;&uZa&yNN;iM3*tla0Q6rD7ene!NqBdu3nW=M2I zDV7_X9qM@WV54r)f;r=@dUWZelI(nLVVqXPQq`JpSgI}edaDc@uB+LGpN zl8IRxsl`awOi0PcHR*H5mdBIK+|w_|sLccqwa6!)waM!DvQH`V9P&EXH8i6cNsdd~ zSB>^Z1E@*mqmkDf8u`QG7PQPwu$h-XGh?ClHOEEA+pcbhu|98N(mYb%FL>=CED6p) zuADkY03a3sWRqO@nL3pn%&5i3bHu(TYNhP-#+uxEzcOQp2guJ)0MS8vo6LuQstJ% zN&f%|hj3yf zXCvCZ8RBEfZmjt(SIy>dJ|w;JrjiEvT{`n#C8}Jj+`e3&b6BSzXU){?g(ozcG2*?5 z{DuB))n8h0fgU&9rE)78GI7KuE}>bqMauge2#!gwoZylUab4z_3AfYREKcK*U0H=h z(uz6oahzq(A*O#iXI$>U=QW>mVzNZeq=^r4N}Z|8*_%$IsIE_C84a~gr2U*HchteUjc9W>P;9s+X6h@D)-IzKGb#XhJk?X?b+6FcjWr5Vl(*FLyM51g zWGAOwbgqul*UgoSH#y?HD%a=cIcZZ;-0HO5)=22YIAtJb-nA{6C%RzVdLLTjPxq3V zJEiks#CRp-z%exsF8iaQ|F zO}1k|?JVs5v5)Ypl3i@ryGcH^Rie4MPH0X_E^n!wdv-(YR@_^jIjnezSphGT>0MN# z%LI&PE^3Lhw6Jfp*vW8MZY#xQ%W%&*K4&K<=~>}gl;tPrI?I-vWAi%w5!_6S8w7V1 z^p}IKw}{ZOZvNtBqtb}pgpReB98wFt$L8j-r^@2nIx0O;ZsvWq>OQO!iDCZm#SwXECwOHBmvUm}qLQ8Xun$w2$RwiQL2`JsL?T z6wZHCy9>Ol=L0yeG`^9h)LLGd3rs#}f~mJXep2<+Nke?58<7b4O-uTog?{Ms7$M`qz|ex878;xNPKCHV&ec zn(lRC`J**1+MY*t;^OU`@(Jx&*DD{K5ROlJ`Zp&Ui^%b5)8&sehDM{xbw75PViIx5 z_O3+dDf2$3O=k{R>A3hI#l~21oL70LENQ3iWhKu_?5#HGoYbKkv9miFM>|P8R^_hf zwAl-N;y5O;u9vY;k5f8Pm$h=(&0BT3)C=cv1a9}Py4nWvFuh0XMk;nuUAHx*MaB|$ z_=zTeD$I-$`L1QmjLyt(-H4|}$CsPAqmuTDG3aDnTumL$KKH9se{GgqLOCoB39h=d z;mLM!Myrihj4QJsloG!#an`dg4nZLGToF#oLv=XL=*o9>l|P3)MQB^@-?`fhxO5$> zinQdHG<^uA7dK++%*OCCo&4jkQJU>+CE&T^kIt1?b5e^pqdr=Vvc$IxWZj(AIg8v` zNKRDa0C%oQ#qy^58pd~##$Lo#i0X5U)E4j{A219LP-~{8M5*(26*#w1G7VmI7JE^F zJx>+L7V{r*ZK^xh1q9U|XWZVUr&dh+Ps=Rh;wxsn&byvM+aB(up za_U@eJdB#_^tm28h@1Eb&mAi&+|Y+A*F!8kX6ELZ>Y8q$3qk?=*%@l-A)Xd(>fnK2 zA5~2^Bz+A@FJ;V&@!fK#etD^-xRsQ!J^I%bTS0S3@F!Mn7}pbJ&f%Q(6`ArZ!Lh;V z&2T%pDKpBGa(8_V`w0rXWll%6ZcB2;1z^QaGDUd!=PB8(k7k5dEzS#EzH=1+0697C zYsa;lf;_{V@#|57lztVyhm}@uowLq$24;|jJA?JjUDBZ6I&Tf~xFqJj&NU$lO|fBP zDOPdrdls64J7mKjm;+lA-0ij_elR+k__~vI<*#$>YkROr;I&(#B9LS=bF}BJb1|&4 z-hu%?H#PUz7&T4Dy^oB>Pnp>s$Kgv-j-{0QSGQ=&ps!{F<_Dp!`t7&Op6K86Rx z84E97`Rpq$;#Y=JPIFntKK_rO>Q7E((4l>(k!Vg!9-_EQi}ri++lc19tQ8c~XPb?z zsyMTt)7fqzM=Tg0O6g*aR^KD8d9G^F<&o%8jAu?Wixm}GW1n8N1>qh}6y$BreQOk@ z&RT`3Nv+ILZ|0IuQ`A+vnYuMSCq1xXs z*0!NmiN;QIQ&MThS30TQl8Wp){_I5p{Ns_$a#HFmJ;u`9=ku;iH5-a!#~a)Z5)3FYC61PUW-3bDCUb?<7Od&79ZWVJax$MIH{lqJlLs*0LcW~HV4W<27oUff1)OAa3uoZ}}@m{eM$noFf8b2lfRwYg_; z6wHSp5IWaugp=l59I;T7yWN}7HhCP6TDD~F#~_O0bkwC|txCo&rGsqJW9I8vLgfvi z2j)4!=Cz7$j;0f-8g*2TL&Q<6aBt+c2^I5Si)HgJNau{>CcE%4cjj*A7CA0k$7XPL z3nS{EFLTKCuY2&kLMRxrb_DLNGkTds8#Ee6R`J z0sQ%^8a1r385&j&N#KEuSE{+G;qMcgqvx*~Ezu^g=6NF-2b>>T6YRU_r9H%7I*&hFiFZlR7itG0JZ4aBLismLVft$EHaag=(a+PaEO zog6p9TQw&+CadZ(r1nfn49BMx#_39&?svv1UkJ*(fsLMpGk_eYmj+>Q1= z)zi#cr-b5>ipaPGg&lb2zI*tGpoH^f18-5qWq_KYjkDb|)WxNU%kH|NeiG{!F=}7g z_YE5|G2lOJ@t=HG*3e<>RkAWyCcWI|F#6Xz>aKVhT->nE4|uyA_OE5;TarfO)K{L% zBU$R+Xgq`KTsT*ypHrf=Q;TfwEpA2Kid+s!7&UKa?y`Ad)cVv(a=un|sdJ?z)MLc0 zCUJslxrh=@In7}G){0Kzc>#&zCmm`QgXJYhA4<*_=hS@8E4wr0ZIKmi<$*j?l<}PB znuo5X#ja#lyb9LNTPKd)Yvk{VQ2BbCq_54tJoPy>oi@F{yiOwC&D`)C)(HF!N|O(jIk%F&V6gquAFG|_X-YNiL*#t?}up{f#WB*syBgJA{6d5;>Jn|d9$W6k5ZPF zjJN(%xMt5$+N$gN8(Uw)c7;{~Lori=r#0$fYAQIWOZkpz(~cs9?dE-j@MFYx8lS_& z((h-EZzJW3HW|W_aC828*S}g?Lxl_!^Imo;l&IsUcfO}i2BfQH)a5VtHy) zmGnK6O!(=n3q)b5%M{7Tc-(?B=~z1F#7o^u35#5v&Pg&8lh1nimx856qm);n^>M~Z zy*^np%Wk|)JhL6L22uXk-mJUrO{TGuMqoJOCc5j=f`XS*iY-r?57>3zCW7&_fzPkoMwFZ(@Sr!TqKxMBsd`C5uPilv%FG^lbo%4wfQ9o$#y*Y7gvk! z&4iQ`2jAAMdEs1hob%0jysGD9v}0a<-!Wi0#W2VVoVIxU>g}b7TamP&E=GQ}Sll)r zaRde%crsh@&b{kM z-IG-IL$g)5zr2;jD2afsvEHY0LnP&S0Qy#$sK#p<9l}tCT-i|P*;9y17ER8 zblZrW2FS=g#d&Ytt*N@a>7Oxpg3eQMFpmlqv&gSGm|R1BF5$c$a61b2uN_h4sZH56 zro{1(@p+pGYMYy+8pl3DROA6~%T)VPoQN>G@*!n}^hr%60#b(Ox?`rpPa)uU)qfdUmXMycKwA|lA*X*=m z8tr5O7o2+5m)H;?JARe(a*VbK%EnFYnz}Yur?*=9@8U;=+T%`^>IDLHY=$F@dK&bw z$~5Y!Jq}9C+F|661&B>;sO=IJJGjBFbH&Rx2RW}|j5%k0jyXr3lV`AaV^frox62V1u*~tZqmsg$U9Nn-2An0DG}gMFKl@q5 z;ZGF&0-oDYOMAU~&f_-s0z61!D%o86ZXn~^>tBN2CDCKkbqU~(MwMf2j9-@gYs<>( z%M+E(oVDe5Psr-T@>0(4{K;R`;OC6PfC+LBYPYA{x?C%QV{myNjZGKNEA>4pvF27s zu;_j_zSHeg{iU|2%!OMRs<+-gz0_>BHN%x+SZ;4x^5cW$tmJ1_tw)DZPR$sH#4`zg ze6pN^Lv*T>c#+Im-gkqZweQh_g-FHha88X$!`|H1v+)f36{LPTo_VjTz5&QJ4~QCC zfU6m~3eJA==c&bhwUSngtvIfUpAny6?U%}JpSj)*w`A}oqXzl$gYR89Nxb~A&o%fx zReV)O`?K^MDz*la{_6aTr#nVZIIkA?wg~Wr;O@~JQl)>bLHV0w9k6v9{#W@P1K_`d zUKQ~t!g(!xM-;wnvcAdT10c3fIR_&o99QPQ?Hl_kU-(wy?&C?b1~etnBmV$bD(5?g z*1p=FK2yvp)0?{Jc$s|&*2!o%>2#U-+p6i8nnt$pIuOyEkVXit4I^84Z-a#~uoxrM zRv5ZbO{QFvvTJkb?+N(Y!&1^0P1g5Z!axyvq5gvzs+#VJE`g{?d0}xZ+FQ(gnY$6` zn)0&B?+=Q2ceKAV)5g*I#t~HeQ2dV9z~2$>G@ILJmf+y9ERDz@_Wf(@&kcCC*H_Y^ zxQ=95F|?p=PruWe-!h>pbv>nzFD|bssZw7f(yZ>(##p}X+<;AO!*Ch$M+Dc9n|h<# zX{#5~Mlxkj9{uX-%5m2|wb978BJH~n&2RuCf4y?LrRYLVOAKcW+4oIh{O>xSZn@-!;60j=rX*Qs-%-R~yI)bGy%wXx;*GC-A+F` z{LlE!VzYRH?k5|c?_hdou4}Uict&zv4qDc8f<7ei9lP0GOdD`k?Ot1|OY=G9lnmpx zX(ujjZs%2xIMpRA&cx&Ku3hF+DFo$!?^wz+Nu26;non~U;rz>{4oL&Hcs0FjQrk`Q zv-4vhpQTKnEhT-~(4#3;O?{nCQ&83d%Omd2271;6TEiv4e=vZ4_S25_>fqv(QkLxU zaaCTt&qjL>gnl4RrQJrNXWB494U@%vYvCV=8fLg&CvcYl4s*dZIE);uszau%tUf9d ze2Zh%;dW_z;~A}pS93QVE6>rZ^*vX;%MBS}z!?qBd(=|dd4bqq=hnI9YZ_d}yV7Ej zM&XPM=NZAT4e@uwi+kwgmew7z?&S2&dRH20YWA_;3(hOK^IomtJx@y1q>b&KWLXFd zyyl^^@a^^Nphsr=K`QLZMi2F_ig+ZiQu;{x3K*!$Jd%F$I*2?As?Bc8_GZUVOxIUs z@S^s6ge?pG-c`p>#)=fM)YDH}m{!HFWbCzPqG|sC2W;V3y!Z^JG0qQ9Vtd!7={EMh z8-^%t)5<&#k$NBKD5+94qwM0eJc^FjttYA1N8$+*-|w^c9Mv2D01!#DDJaNZNjaj8 z3pM6=&cE+3yEtpzZ_R)8zF|Iwy59t8OMQB0kTB0cM@srHW9;zLk>@&|*Aob@Q{8Q} za3dSSmII%c6}1+etHA4wkzY0MG|y&Q$(JM3<5%1loO7PlVmmB+#C7NCOO?IICh`LU zF^uy{wyX03Yoa!SCgp^-{pL?@I@OUFD#U@1DcMTW64y~c0~tBUr-lJZ4bStao!Ha5 zBWXa%-I`xLLV`|lT6v418(l7NP5`9)QVe1Gnsz4dn&X=BPIB4JLbuE2K6(DMCf>u4 z_rF|jFOGUtM^r{9X~`$8YP3RZMbrUbnf`9|Drz}k3k=qB_gO03_8tA9^X$)FLCqsy z0#D78-nCxq9oC`!p^yQ514wT$q=wHFo|=m4*BIJ}9Ooz2nl&u-d^gsTS0T2T!>NG3 zJM*5kA=LVv`2f<~xa)C$wgwau0};un+f+OLSq5|8y*9eA=NQ_mnR$Q5)|z!dK+ESn zIjo|Z5|o|BomMh%NMqL-q-|O}=RcKGyqmdg>2ar0`L_d+{OQZ6hHR68P}6H&!8VoI zDZNiK8^O=LT#D=-q#k%RR<`9{<%PI8`Hvamt*zQOUevX0&docL`KU=Hz3V#q;T0bZ zl16KqrTLYPg{kt-#vN%QHn!Pft02m#`HLRM@~J)=-K4j%Jm&!pK_q{k_4Lt`{?1oN z%+!mkn7wq+`&Yv$2B)SLk87Qvmd1FlSH^lauV<~ra|OFeWLFI6GtX-I$}5_yi)XWl zl$9TJ=A-cq)w_s=!C4cKs@Ob#O2_e6#M}7v2`t{}*t(OBYpOUuYf?8`GspVHSW%Ua zowZ*P-`>l^mrP*%$MNE`G^=~vOHyAlCTLlP!ZV-7y{XcU9xbg8Hw{{*Dyoarx#FJ* zS<7y$tQEinF&ysiTHXzlRQP))oq2W~Sx)8FbW9ci^N+_h;9}~$W(iZiuS4so(Nr<1 zrF(8|e$by9;PJ1)$h2u9Lk*e~hGGYt!H#gpzB^aSUkBli^V{7(-f$|nVJ$*;1kkPR{=12_OwV{GfML!Sne zV+@CebTG6*2GCe6)*d9vqO?CSk zIje+uW3NM<&BJGn0{8@h+tIn$+ysE4$<%^#ZfQ z^2TmYv2{67G8lH&ESxyL;?A6ol-EFnt|3-2rbCxMKdT}ddPp}zvWH~xtan9>R zd`q|*ew{2x=V>1?BL_9|^_}wv3u(FQ;FYkP&r{%^5^4UOs$jD{c8P^j14`y=F_3sX?nZG z8#s`FJu9)W@jcX07Z)z^k;vY7`d2Kl(UNXUQ#s>(;d`{6l9nFS=j|ZadbBjd;~^OR<$V29#6oS+>=zf3!jSLV=%~En51A zh^^waR*qGCrvp7tZflC7sZzSSIwJ_ilb-t6oWy_Pea7S)y z*TX^bw$D1cZgxcoB1Tfdi0_YD*|CwtybZ&?YW?XZm@nP6F6T;*xPZr;RIo_vdY?TUUE4rH7P|SCjRB&iG4GS*C}~>CV6ab&f+~uLmkE zEy<;5)m+E7SzN5pvjdPR<<+G;*Ne{LwL3l5?qcgx`Bo2yDCKeud406zTh~`|-1YUY zs#l#CAe3!5v!&A@Vp-QDgZbBaXC#efi3c?{Q+n=+l=U^Bwo?gmIrOGVtIriK7i@8Q z9OkDIZwymCxD|ya!*1bJa(jy7oMe)3q1R4Jm5|z)?a9gJwVLf0N|IJRJ!>kGce^xd zD#wvt>f-0b(tv(#{{Sxs^QwBTu41!j^M-CdwdmBP@4_#!gljm_l+H#Wvg}O#9MtnD zn@~wW-L%$qB;9^)iC8H?#)^kq-HGOpwgn(of?NpQ+>S{3Ylcwwk?H$b*~_tYWfNKx zxE?Dn%R_ULGApS;#k6y)R7y{%rK8^9_8n`M)Gkac>j~YHTuL&O^){5FP6|(ZoTj6H zF4A1%(z)NYd6To2-Gj|;p=s(k%{r+|Qsi^I^YD1>TJulkTkS2$9V(rYNgWV`=PA~a zfYLOw9_?K|h(FSRBRLp6*QGT5m7}@i&QF@>w&-@MnqifI$vsb6&`Y?*;c`Fn5dtx{3#p~X)# z3}*!6n$5f+;Ym;iaC(!{y$H!lt(k+5JYSI8c}X1ftKl&jleryhRVM_~>cp*4Ci)@p zDUv_{+{LrSbn&r<*+I(@*0!A7q%&Q6`4w=S(H)032TGQ8m={dXGJhXx=?&#hHxb|#Bgk)vl4eWxd`c&?%e0z;0h zI{Vf&XD&`o#TQRDQgtP@OEB^Jk9S)->V0$2yXfljuEJ=9d5#a@=!MAT6EPAPi^Hl%vZn2EI1mLUmA#H#iyS z3F}%`k(Q7-BOv4o=!$BVrc#`y(`T7WZo+0}UMQ#w*< zy-u3XQ0r$1?KNd>dkxKfN^?{0D8BBJiPohFpU;6}+f z193I6dm=57U~oq!zF!qpsp+ykN>RNA`<`L1T!!4?_T#AauO!v3+2nE5Rp6=KPDjtx zi+8cb%QHR4BN?vS!_kJ2Wqy2o#EuPpHYQ8h*>%wLa@Z$3v(h2`+-keNm^GKF-lC@8 zGv*yYubjeDlas%5=rJ-%2Mu|6&o08*Lz7zC1+&k3tWSL79c%O&ad4)ZJ|ePj5|Qq@ zMTm~tJ>%vCHyl@KZKy1Av1I^*pRH1isqGca$@fJI9Alcw{?H;&81O66r5wp#7$V zP2QZEF{ZX@Er=tY)y_VW(%ulu$9#^p?O~>)7J1dFx{fIt_V!O|Fb~QNXh$W7dydt~QG3awq7D6ArUEhC&B3TeCytYlhX4t#98gz;5)gvrexgIqO17pR^@{?L;cd z*%fZ){bjccyOUjYXs2T+&XbQfbX7LZC75(MG}{SY+GFN1E1Xs|>U*+-Ii#lvLThGs zHrHs@tMdcJT1m?<-u|`cX&E~nw5-*}+*>`}jHrhWM+ULKvcyMhypFY^sFW)wM$*WFu=uRg> zs~WSvbAJ3rlNI1&y>l9Z1xICJ=5_Vr7s^{ph=ViSdFGsmrG?ByzHzQs7H9m(xjnrzWp>cGED?djINOa(@$xOFkc({h)#=z5Y%1iE@Oc;$0ZMQfijRs^x{ zQAY5lb*M&jaX`Yo;(Two+u&`Zyp5jyFlYl_UuR~TWx!ek#MQ?~r)aLGEho89O z`Z3I`$jlGTjEvNLcKgSg%GYN7H5>uk@9j=t3S*^Y*184kt~+l|{AV=QMPO5g~gOY1hwYfKaN2p*)WAx&q{CUL9XiL zE$*0ijliyX?^Rk(GJ`dumo(zKou9#b!w1BZrTOavPT>@@U|^p0_Qi|wfOimZ#=R`b z^I{`6vqv5Z9?q2GeWcE+-NPx#=B0T)V}tZH=hIf)*}kRQJE0ZCPQ>JqkUq7{{A|%y!C4ZP_aRV75zJ9&GYkfjMCo3Tz zAPxUQhEI-sT{qPpMmau9^-TRA@VASt?{o`UR#3Z9K^wZ9a(_J5 z?y2I4*H4f%m~FY^oY&3Nh3eUEd$De5Gs3U@MHId!W%Gb$`=F7NT~3>+27}BmyA|zJ zqsdAw^*E`@Gpz1((O)idUZpqV$pA=8ZN_VbtGk_Ymh3^OZjU>&>rXeMaBbX<)lt)P zJG*Ky>K`Y};0lgg)G2`9{d!As-mI=K8Klnr%jjw2QeDhd!9B)m8nYVF+=5H+@@1Rz zH37X*A#!t$^{S6Bn!L0T@A9DMcdb{J{Fv|#PB}FTbb&j&3|r6MV|U622Ba6H#kBPY zgHY~fx{$U10L|tHCyWu=qZfsngY$K+o?9!j(<3vuCAZ*aqx)fP!CM(UMP+r&(ACo; zdzCz#mhN*^{?evRy?Eq zUgiABZl$kd+x$Clv)Trb_Q}O{?PDC4+k*XTgH=(eopF<$BN}}r7CBjtRPqKrt0sLV zc8`=ddg<0m>~~Gsm8H=+C6pffNcF5suL)S)2lFk}i5WjFV57+^z0KhIbU6J_;ck<4 zC+}_W3ElEG2=>izy1&7Q4Z}67gvTiofcRm%#aw^wgF{0>+4x_=}jvU zw2U_-4zl{wzFIoed|D6QFbt+5%v=iZ<(s9%}6#dSq1T;grL46CTKyXpDY1+T+z{g-qm zWD#sR^Ez~_>MfX{o$P#jtVe8`^s5UgUHJt&W~|)WCC-*sPna_F9V^nr%1#hG{42Fd zL!sc_D)9BiuB9x|u3;_ms2wYah)9ky3b&CXMe8=`w1%%xcQODF^FcT6jlDSS?{i0aOmdtzn9(%gar& zs71NTqx3$k_;{Gq6arTWf0cUx{Ix_TqJRqLd`lkx01U`aAR0_f zpCS0R#80fvC{Rz+t}B_g@m{B*Sj!A9$`tXO*Qt$55r9;rc(`QYi1y37JV(Y_uD9b$ z`Qy5ffxKkK-+cEN>?`LFiyyORjo|Q9J~*<|?h{3KA>{J6B%Oa8@P8v-o?RL^EF@^j ze0pEh;a<}hi>Y4U4&I3Pe^b-ug7WDaGrATb*eSrr*16=~yCuPG+>d(TtA~~zyGwK4 z=Y>jq@#<|`$YqaVJ6kybccNsGT!l@_4tV#hy{Elq$#Gn~#TU7BU9JvCCz_A{RdqY@R}{hCo$z;EZD+*XcYtDPE+% zy3dE=mCKg3=6>pUW=ntgLu^tdD#9_lKg4UJEH``CKQj!HP_2_vjCv~{jDNJR?C|=2qo`b1#3GX< ztdS1A`LE3#Ur)T!HF<5Ph^&a%&rJH)-qe(FSXA2D#uXH4)OXqbWz8>GnhA2UZD2e1 zuXym6i$2?8EHz2~(_~IoGTbk0k9zr9^jedgcSiVm*|^E*%bK@`KeMjI)|$q9IY}tW z$K(gKb>0i{t?rd{73XH!`%i2N`gqocF9x~Q<<#@>RHcBec>1I4zX|x#9al(=%&J)w z0=u~+*Qr_G7XuBDefn3)dpAz2O!oQJNGg%poisA$6~kv8D%gBS_xa63Z8EJcQiasy zDc$$Kop9Q%?pc9ugD2je@*I_)Gd$Z?xRvKSP7rhT&2w_gmKi-Org4gb?nGBKoQf03 zeq)}dnq+N?PdMs+wVFyTNF3$Ra>{epClw=kk`Tb-)CwgVT1=;TL{<5TCyscea0Bq% z5me&mXA@_pq@h$HDgnsnz_>GcI`Hy8BA|x#!Y?G@aDob@U%=& zd6*lR41N{9Cegxkbva>qSJ$EI$O6TV_^yw`fQ@Ac>zs=5sB0F^s{a5AJvNGyV4{!( z6aY~`9RC1`WAi*SF+A-&SLesYn=Sq$l|o@#aoh%R{&QV4ei^27&*O{pJ~Q#>huU2# zd07KG{MlX)2EJF;3n`PX5wLJ7Fx=RPyFHHj@0NNTHSN5lN%E2Y@Xd2FTSyt?WF<0k z*si%oR`WdNWi;ivTH3{Lbr$lmAqVCHqSoF~Y!NU5jFt5jm(}V@ykR1tClxn+^gPp2 zTd5)SCM0X?90g8 zelXCGdgDJz_3sXUZ`f)~A=7S}L?e3$hzvcCdin}@bvg3Q>1|I2y*b88QRsbn;7wmw zWJ`PHc@T{5Zc6$C_!{=e{MUpP>Q5f^@Yt#b&G&4oSspImtyt>7_U})7z?(XlXRH(TuYfYo9R;`HnKGoq~BDuSVRFO<03dLE67#Z*HT^LlQTFvNjV(LrT zB@>yGQkh`OTm(VJ0p!+g#r_Mn<0$k8lV3wkC!$A@8%f@yGh-K$-R?-YE_fNQt3DlR zBNW!VSL!GRwdqfsP191lxeJoL&uy30mfv=a0l3Jdox{P>7 zA-Yls@T7H6JJ#}wEe#_b25E(e1ob${sj_UF5v|bM&stx#DGW*Cv{7jZG*=gjQL=gM zRVLInfrH<@Le-hK?-iufHjoQ&YOK1D3&Z!VRBnS_q(9m#yzg>I>ruX^7$19~sM}N* zY^d780uV?}dFjPN{jwdKYhxWbt3*o8q{?rsm6WfUySd4#?XRL_tK|J@q~ymX%c&ap zfj1n;OAgg;J$VQvr6IH1y-Qt8Z>KWcbNGO9nKItA;jZt99r^Bgr)xEEa&6nVhr}_G z6{H09>qvFbTjhMzcRV-Eu*B5;VB^ zhB>dPs-yjv2uFR-nY8}9JN3}}JK^t*7S{3~n<|TjUd%g#>t9q@>RLvvrEiW^9DL~H zSH#!mrBj(7LrHtQrZ&6a{S#QXD|Kd(yK*IgcCh@reJjGX{{Vx}_Wi})OA>Z0gddpp z88z2OG>#rE$j-J4>sE@;z<-AtMWBC?OQ{?FP&xE9g|5e-cw^2E=v*iyKd`-5S#Bepc{@`&K2k&##){lsOD95Y(CbZGSQGstE zk~y#gat2pEndZKQ;OkzBTPLaHM-=5cvrl~wmNowX5=%AYk*g99&4zCE?;iysbb?#S zO3S;3D7fp=zSl8smIg3SbLVgg$1szg=hFWGX>qrIL)A&F>D>aB4b`&T=DtQZiax2W zbU7_r;D{Jxk=nQ!=Ph&zA2B?GUZxT9&g{aoe6~H4;iNAwh;8r-IbcQ)O8WLVo*QM2 z#vOXsE-gQ9uepW_-pWtRdm@O*QS%d%?@(Uqs4mZ9=aYLaL#sMi^Y;C$Y-11=jRR5fLCZ?2>= z6Oucgn5txuNnxK;Tg7{~B2sCQU_aw5rNpx*w(A2DB%%@SiCkj=a|Ud>*;qS-StnIjBw_lHW3d+78vg!!zF{Vi2A&zqLUMr($66}vNUYlq_WERLg9OpHIsp@h9s#qPvIL}Jtwf8HQ zOVIJJ5Np>GU%JO5bs&!a08#B&OFWXO-JZO2*1DV&5|JG4bF$eJE6eBP6Oec(y;w83 z!Db{^J(`a*D*Ed69~_`R5**_knziER#FqsXyzR$u7$>)S&)7z# zMRQ+kK3iN4y(E%s^Uo(ZJ;f-yl1Fj&fDyU_(wDKPPfHyzl}7oLjaz497$#sz#&KIV zrsZUF8v={ZUiHb#P2DtZ=UGPkvsxLh-hF|0l6vQgwkEk-fg)v&+-1I!b5Ix!*O=@=<+DigQw&c1JCBBg1rle3t85`X1Gp zWPiGP)z)d!yh)=TYO4Da_=@yRc8MP=w;x)~)78AiY-H!9cj2MQg^GKeb)|Z;w{y_+ zXq)>)Da$Dt;=RMeR){cLIqXGeiIaw_uv3Gm_1yLyJ$#Khvc!YW*16fWXOB~m2W)4M zMR+vYt2tcmvV@X3{Z~`Cy|!(qf!48fn`vi8X5qtEsFWztGxzFLyX&#&+9-HoXyyYv z@;mcgWwsj}=DfwFX3jfr)HnRQIaa*D0{>Zq@I(zi-UekPX0nc)vwYm{VV+Gy>Zm5s zy($uKQ;6{_QQCZ^gA?i2xJ)v_&R-;+g07UMQi_+DSEi#=k#382wNE!&W#6F zG3|5G?j>6-86pdZYUQpjTVUrbdgIo-EHotG<^0U{D^-+gxb{aQc#^fwSddS>bGoF_ zMG}mX!Feoe+N`~!QIA8+p-I|uk-}YFNYno1Low--#Q;00+;VE?MlfFP=PV~F$=rU@ zi|?G)luFYDPN4IEX+js3=xFe|2G?^Uvg?gNv)!VyC5?A1!Gm7Z;@RfHIV>))j zF6_Hu6D&inSY&(Fk+peb#tAv=>qO-rX>eT8ijB^nO459kX{5<+!1SrFBN=0!b6ifR zHCJ=iROK8xi`}!IyniSh9(`+`xJQ&6oRWF1)uRq(aLO&ql+Q72l}RTdv%%|I@Jtfh zBLls1;v}j;KBsLOc5U@WW&5LBzT?U3>t0)^%l?$>&OIwk6uGZ{gyJI=OMOaFLd@A- z4tmzP;{YG6RH}1Sx-q2(7+sn+ZWY55#chehG9Ef|eQSzNPNOzdn`y*G)DaPw44-=E z@3j_^K^Sa+O>8l)^upcr( zgPh{4NH!G*mm|GtQhMDUbY|(MnHIv##Bfg}`qddzGB!>~JXbrHGG|nibdh2x$$Wk} z6|D`k7=(N?AH3M>U9J(ERyo|8osB3o$r?z(IgpY3JRe%?Ej&LnFn=U~I`LT5nuHT? zLwG^ddLzV%6SyUYbI7Qqgsi{@CbNTAT-^(FQ-g6VMZa*|amN_%T|I*?^xXS>N3D7I zmej7vhr+IQwpQrY z-OYKHt2W}tILYK!zn7=?9y4~8j&=d(UV=}4IIl+0(IbrvgsOwoSEG%RbW&TM-dhIa zDKn&!?`69tADAnl!F_-Vz?)70uZ87$6I3HXhvxtc%HIj!rp0%BF;yYUj{mwWXl@4PEVS zRax?c^e4S`@oM3%fi07eMh$l2XkJQP&oc`@iZUH@t0a(;&N$+*O#Wrj^v@O9grg|K zQZW@2?3vM8q=APyHEq=lg=NDpeAFhRCt;}jwne|QBSsrJs6NXRPq?Vgdsiy0HG3V7 zii%T3nY83+iSLZpHF*F=&*8-wTCSws%xlFb%r+UBZPj-Y0OKb#i+p3dR(AT=p&Dva zX>M>;pCltLr&A2EG%F@SKJ?3}BgrENit}wQeRQ$yNmHFJb=OimRuXWhC%rAnI|*jw zS5u9fZ0EA}S{&u(qPFUOZZVqYXV$#QN{^Tm)7HAE(dT@}pI;E@`<5)jaNIsIj+L(0 z>LbfGPBLmL(RWPhr!@$3+jB1F>$Rk&N?E zj=U1(-Iaue>bCkE_NsPH+YUzWmjbcUR`Y>oz}-rl_frb~?N-jJ#lV1WegNrOO?IL) zwC1__B{?*0%c7Odj|t5&@%64q2v`CB_G|1dB0?2GIVx~##mrNVA{Xp=i}=%LNqZ)2 zGoEo?VXU0_pq!J^yxdy9%CdUp4L1=KeDUd7Cfm!DsU(kD^_5O;WO<5$8g|?1=8X{b#Rc&V6OykiRYM`bzGsfV-P=Pj(lt7_h0 z3^9xv`A5b!h}xvApL~IJiQ`9Z7RJ*yf{%$#uC{KRt6^ zvEe;9JYq*1n;(1euFCUN@X}1?qNOZEY;S8;QS8fh_OCG1w5TrS3Rtc^>%zlMOH_Nc z;OaLP?Q?^_@S{b1XH1+Dc8-TWwY8wwNe-bNP=7qv)JnBF*lRr+JU?Y$4O6|I=JvO2 z&}r`MGoIDu?_qIsa^Jf+EP9Ib@NuUKPNQdbKBDG~Ui+NpyQWKR36b)xo(Foz)AhM* z*n=S%7$6?MTJ-5C;;6N`+fAWkb|r5lT+-FH zd3c8iK2%vtR(WxpQE{giwQ-#B&3erx1dayuJilJDDdq-Fqk=2UW>XyG=RY?9*G)BP zBy!28q3!7VOgOlvU{Y(V6dAe{BA^H@PwjYZVF3zxES z{#JaAelC+k}J*i=)LPxMHFVHx@jRUTh`JE2Gtwq^Akb555;+;oQg?SJmAzPc9=uaua)2?N)ponpgr1h_ zM#whsNIh}uP07c$DL2fuDmOy7%w>t~&3x_gVM|Ap3%DMhqq(eM8{%PRV^%AYQSv@Q z)!%&5JF&=aL9S>|8nF3GHhCo1uU$Sz1<;%#_ctv?a6@Cw&p81Y0bwOQk&|odQHBd7;tdvWsxJ#bGI=3*x=XUdMRdNaICJz4^? zyNz?)8&EvVQ zBP7f+PYPcdr(X{JqnDYNHss=2M65MUqZG; zc{L1t!T3J3r&J~YjNG1bDy^a(#BHgnz0K zP$b4qa1UC|v^DURn)q!$ycrzgoZ5=*1U5oV3YVnq$zNN9Y$oqevGz;X~7#!qt zSjt+ajV*LmeM2n6(E9bLTTu%dF=8@!;;HIST}GWvLzgYJK;+biP>rMvNMa6D`g+u+ z)}bcSxh$8e{D=Iz)1$v#s~&!Q@^f1$IX^*NwRUS;-Z7Io$*qa5L&KJCgP^Wjs^u=X zJd4Ls#Uy*&6$Nq#J!|IOQd?7Yc1g)&pJSTt!Z~|AuVXhA8D2#zQ|WV%Pjk&~*&~~T zad-m`a1REtsW_^aaW%ZB7iN1;gXb!$lFA&AIR}dNIAtD4+CdnudXS2naq3kbXwtNX z&OrrnkWOlz#Uz#;xWy#ffe~%UK!KQ?ZX?!)wo-ui&U22nGFqCasSK82%1PuAoK$aP z2@K*f=5Rr*DniX@YwaZ#LUhRFiIvb0PC(mP^XN97X@9Z?Tz?SBtD3!zig<>%)W*5+ zg_PmmNCC=_!)PSd6yFVWdyuUx0Z!lH82P(YbILlSbm_^O-Wm9Lr0M$1H&R-M5uAks z?|WC(ejn5=Eo`mg^1QvEke!8XUDT;fS)A&pD{b{XGQ(ZAIW9R~IUQ?lHQPZGKJcTd z&2mPJ?Q@c)PIj(Nb*mz(Ov-m~GJ4bpQM4?_%mmi)Rad)Xmzq1==e3<~+Sg2$cHHGg zcBsi}`3vGVj&;kJe5-pKi6E8AgBsw*JzG52rG>-&W~%0PMDPlX|$| z5%QY$Uk-htL1Zkze57Koy%y;w6NZ#rlb+49x&q;llB`E{#XOfs^E|fc*mGHHeGb}= z(M71HhU~ej}ETUr?g4I)aJ-D4+teb;$hR3STdM znFMy`f?mhVI?N%pX#@4$T=t>i+e^(pd5nQ12uK8VuAE(8WTMU-3{>f~`j|f}Kr)g6$G21>Epd*lf9-h_mSNtnsJ@7)r zA>c8uUO4B8z{0h?<)ia3h7D4b=*8)CBJ<&np#v4OZTLHhV}p-M=H~F$uWP*pqsxPh z#<`_BRc7U}+UQE2g&FicR^eIy0JB^;`EXDT-lnq;g|*`Zr0J5J0kA0_H?Ml$j3WLg zp%dnDYhzzb@SeWzO6iivG7gV{`q$o{viF8Hh=a!QRIP!;nhz})zZ@w3-?AiulG8u`>gpFz@8%1G|v_^61xaukSSN| z`RAJZZ$n2MzRYp649tXZ_ik2#!JVcZ}85`oT^=n~u z-EHV~J{j=;0Eo1$TYbLBB8`VE#QCGCk~1x2HIp>12PH>ZS8H=*l3EbHlFkB_AQ7C?qta$1{NVQ$vZ)rX$W-Rl*)r&^ zV&>ShE;bxoWB0Y?3LvCZ`_0Menb)UDX&CK4VI&{;} zWS(tY8Huaz&RZ4iXens5W{e*T ztfFO+Eu$@-M#0{?Yd-=(6BHJz19IOlTGlwauS=OaRHChI&Zf)45ki9zZ6sqLbo8#G z-$M$ZGUNfry+fR)`J_WiCX(pcUI)!rVbKAFgQh|KYdOo^)LgcDlP-t?oF+1R)W<>q z{Og<_O2wwurLA`(T@^gS-e2icE{=ZFor51rhZv`*ZK@_3U{~a1j^4F>Y)1!g2dz&c zX)(#%%+@VH(xol(jCHS*JVB>h#i&o`YHo?0emFriOatFqmM8myRkiXm6Y*rb3n z{Ojy50WQxD#L@yc50swu(~Y#~ClYAYoa(hDZ4XWo1zdqjCnKTjUPKac)a-hpvdxsw zTpoFDM-HH?IN@L2oA6~VeCbpY4 znKv*z*2?i5n{LK?Yh!=<%=cbuoVxP~ix=JPni8`nZKY&VlU-u2H{|u^s!8Gj9AKFU zV8CH}irASUI-1x3ElJz*U#eVC_Zk4VJoVf_jY$X7Wjdz!Xs;2mAk^@0sdz6$F*}> z@5P-^TO@Nx+mN0avJ)THyb9O~H6JqT(D&(9uSqMOBjQhrmyTVdx%tl=HwWuqIC$6M zRF_70=f2u8gU?*oqlCdhPAW0f^J?O2REy?%A2w<}ERy3^cS%VBt6D!2NNn~QOW0;dG`8qrM|N*DuwAl444V5>;e1VP;U6#ztAU&k%CgKQd^~J*;VGwy zl)9d&HSQ1+{i?ClRpU5t#=d#I4{|SBbFJ@t#SrclKVN!0n~oA>ETk8pL3TK z?FY(z3-FQ^ePFn9TMLkTSJsFbV_n2JJ?oDY)Uhp?VG~sBz^Tq#t~jPT921^%SSM$x z=&v!Q1dKr#+IsrbIQ8w&`p~osjF2$^_wP}XcAei*Q){s;E>)WwL8yuOjzGm}eJo3T zL@ZgxIX!8TfI-2@9cgmhI+Wx9m0~v$$TeC*!1U^QtF?imB~tQ`LC;#Wk%9;(E$d27 z$&nX!R-PacnDwta@iw6ymYFPthsqBIxZJhW?2ERi!`?I28vg*qQw5ORCQAZ3W74=s z*jPw|lDThc^yJiRjwnUB%1!Re(a2T++2q$L;%!Pe^f}m_%&LA&ed_a*=AW6>2g|wR zdSp^vc!`^7A={S6O8Te3x*08Ok^b&hz*CIkzONe@MvQx(Hk2htrFTZDw0cMwrkt;8&wvn%umhFHHA-prIy93^G8Fm zk~Cc@oa1P$4IA42t01hMM_tN z&0$t?eAhN@yg??w44HiLD^Wa1>ONw-yYpD85lGcml198fC0BBAxxner)Zg%tDO?hx zob~Hi{aw9oOsXdxQF1ME+CmJB2+t$ET#sC_Fqq|itlhKQ{F;|eq*jLi0K2vBSC;m| zWIw(OwMhWCTE$~)EZf#_2UW@IQO#B>YnJKLl2(?)vbx6t;^A98c@-_R(gr(a7(DW8 zH9lzj%Eh=;r#r>mdukU3URV?Zf$3Pc`isXgk&e)L6%nOQGUoCL)T-CKx|D3ZM{f<` zN#6s5ll-ev^TgJ3A1x&tRkAVE*ES-A+|=W-)k>`>VVoY0<`wp%Z8Y1`Rbz}`pI)`p zX*bcfoKEqOwT!f*6v7EAjmKh~mnm^OKJdyLu6kDHoKwv~o_A-hdeNGQhxj9dmU8$$a5vs^xft?H$8B@4SC+DIgUqX zI1Jru%)`63*HYx0yq@MvHwtFP{D!T)I^r99(2d9^oL60WIj0_`sy@mKo1xg+%N&xH zkM8xZg4RN@GoFI5r5Q#Z_UAm^<;;eiQA-6Rl1)o-cN#_sa56KKRbGC}PT@&PqCDfo zJ~q?z>6}Y&fmGvhY;#{e_{-xpoHMiHh%htXr>$TE*ldI4)QM*nR9yN2ss5rIf+A$*X95MO^Bte5vSe z>7FXSP+nHS9H>41wdlGZjd7?eO@O!`F+KBM4q<_mY0H(K<_9oNq+GQ~_4sw&J5+&u zh5|sJIYMjW^JGj_0Nk@Q;vsT8hq+Wn6upn zECUm?bH!4YP)(R_*-Yo&q|+9(!9xE%?Ez(mjm<7bkmYimG?&-N)xL%sGW_4 zf?G(=$E|usg6oaLkSoW;H8kXpdWZWnPfI4=0VMm@mXQo>;GdXNyY@WKa~Y_*_eZB#MyX^Da50=!JBgw< zs;B2}_25#xsyEd1$D^k5Mmlj?_KM1Pvws$OuDJ7Zw)&jvDb>G2Z0aZzgT-b| zaAlF1K`YeLrv{U9D-noxaYh~5Jgx~|1816rwnqVx*CcWQ?^Rj11iP3}_?wZ<-8qs{ zLBRH^-))vC#_|Zp8@DtH z2a(&MKb=%){L7>&dUdXcQ`xl#(BqXk%ideIZ9{B+&ykVSpIWUpRhV@?mCX)UQT9DZ zr%InQF=m8^X5_IsHIFT`d4#(bZ1pt_wNpdSw>0d^%zUMCc^xrX?2PK)H_e=k_x7(r zC^+*zheVyP176P90u+w>xHZz+Sr(KwPIJ<+bL6RL^*NJv=6jx<;m;47sZpi`3}mf( zJLwTY2nvIBeC{_87f4=)WqdR(k@ zSr-eqm-gcI{dWTGEM59cs1iznuR+Vdl)*miQK~|O*{wt*z9YZ)bBrZ zBW)mqk@H{^Uqg6u#iFq!u5vOtuWqfRmHJ%rGPp~h+9R$3mJIYY&s{x6E_SYTe}PBra9HZN9y03AZ(K6^V%j=Cb2AFlkJS|a-e!w zxf-yiMfW_4u$@dqTRLw#IG2-?{LL?(l1ZK1de@y9N=)`-llKZ&W9BZWa6IH1qZXVl zSeH=3y6MeQT<4iqoZR^%)avxzF=1d&UbWR5F)g+_oN=1r#Lc#u-%69Dlu^uFX%Z~# z>X^amYAJ4{hBa3?BBe>!X}7VPz8~IQOc~{Q*qmeQ-m>J~<`M_Y2O_&E^3$?nm%kom zxoX1VU$rVWTO-!G#fx+#2Kl;oQl#f=?`xc*S7fTA{w$Iby)@YwIZcwfUD&sZLVE z`}!TujQ|$>jzQ~P!dZW#7Ga(<&wBGQ6MWj8l;WbJZiY|Tl52)LMn_&NjMl77H>bBu&q~qn;$1&@aD8%W+~o9xKOwNBCQTG8!FX@sitjFDZA znQ0>s%%3JcY@UX?YE*?+DM;y~c+iXPcQ&XXu>^MgYjVou-6KHFuoJ;2it%L_xZUn{ zN~a@?W!FO!Sccx%2OoT#5_{JzsoV)v4hI}pp@+PbX8ImIct(un9_YolgLUG7*voQ7 zd#{G#j@Lr-7+{`GYthUn7l!o~3Kqm&nfm?Mnl^<==c{JCzVhV7t16SbJx*(b2}yEW zxzmkq?s4cc_CRe+!LrA;deoY1=^2hk!arPRrFUDBlfL8jlBkz!YF*TCBDjTPlWFIi z(5FjVQG%iK%XQ6p)1_DH_K$OS>?&0E_eYrc!V!5Jh%u4JC#`tt(k~kM!pD>ifODQb z>+15Ts9|kA9;eJ>la+30>vLAyN0ScnL`VZYGg^(J7M?Pw3CAN9>&ZqCRyaMMG+!~R z4u;X)sSER*0;E@4YhcDr(&KO(3Wk)Do9J~owDj4XHIlH9ykN7hLOWE~TCLCx<{z8Z zxo1K(D&6jNMzg1Qt%@;S8;LOAf2iiSEUeyA9F99zeJXs8%;BpgDK>RB+G`g=S94aB z+DU73wQ}7!uBwaO(7`(%UE*ylt2(rJ$@KKE1=p<--sV#rcmcD4R|fQKrTXf8`|%dQ zw4Q8zHW1my3C|UY@RweUTs@!90;H^kSYwcR`t#nsEWR?Umehkh?0a;vw5HMZ0?b<3 zdCOwCZCn|lmpN08qP}*VRAs5|PWDHTYc}k%uo*jBC5Zdgouz71*lIs353XzIXihVO zgFKqiaH-6C-jm`qxwcUwZ6NY9T`<3avdZA_GwEILxeD zj7AT0ROO&O+Za@{6VQ%DDPNO0$?H)aEpbPh_ac-xl+D#~(!3Yqx+-Ym;khhu4tY7^ zqIy<~*_zF#N=^1YEZ1gHJgUc>GK+=%yP+4s+{P zix8)-N8rkIZ=~k(@GT-nV+t^2U#Of zNX`K@^yk8#5{do{+S!)dEse`8jyjF%2p{Tq5d|gpeyUu>;qhYvv7dPxSu)uO+MM zVHvy>TxHRo1XEbKXi~M6H)T)Fo|W2J$j@jv_sx8?qTwxB>&3M_HZ>Ye@uqNb*0;3x zK3EE%9P)idMMRWa?0R;Mkp`^nB64}pdf_f)5$X#01ase!T=;sf?oXi=qh@tlUbk%x zz8-Iz8S7hd_@)dTxOW)GJ!{cb>Nz8a*`;fj?Yu@B>=5589D$tItN43g2X4~L4?Ndh zZfH_XoYbPz=8sd-pz%8kHQYCI_>oe-h|3eTfEe#yY$Bz0dUs1v6I|Y)GxYv0^o_5N zC;=fY+>=Dyl$DH|Nv`aJ`)tW829u2NGgH2>G5)(FA1EiKX?J9q6z|OLWSw!t2J;DQ z^e2N&{@rrU8cn>`>y}GUlU&vub@*HXQml-!#` zTUGtpZRJm1O*OSd7UZ)W{d(27rK>73v$GTXN+&8E@~6<$g8kAXmkpkT)^7Z%5jL)v z@u|37%G_0z)Ks0t$@Mj|_ga$bRN89B&5o=Z?Nm4W+3#J7%pTM*a7iAu%~80=-ZYN2 zEP0QOE+Y!+@@`ca>t8qO(do~0+uS2(a+26Jwi=}28^p?^gr{cx45;9=X#p1{H;iu2 z>sQvpbW0o>iwPG5I6XhcwDy;&c_8GIjg!>%&jrY~K?K(gaKTAq(UV{FvOvi^(sq@Qb6v7w9BdTz&qG4nW!Nzdf!48=J4Vc;`w>01)4ZW! z=sVQQXrSenk=mgpV^t|F8Kr4vqD3VEIn8u7(QJ{3@6xnOnUN_bZ$&fk3t;y3ttGj3 zTmzH*>!Ql&*{K%(@duhjS7!#c}uAD7X#2 zAlb$VUTPC?*rcy5Oo)6XZi~7&Ks&#?-@R_z=xd+#c=>tao+7mCJIkTb7$~3p zV0R3rE34bd!p-bUXwr{DLlYk>1a`$pd_IN%?+`8Djty-ZjY-H?SG|cBLr}t1hz>nE z)bQw$HPGCfzHSCFikCUL+{#f_J=?%~L~yp{UPuR}d(DI#0gC0S+_4vCkxDeuJ*UAD z;>zw`bHEkd*41vMsmn*UL-jGBE(m%`7KJX0T&tjNcx zB#&zI*?dDSymGEd$FD_;yatm zEsZ0v1F2$7WnT{oIL)m~qgqs>D0I6#_gb=&`X%3)FngZW!#9Og$&`$6N$KlW{n||< zwk_V|Qg~Syu$CefhH|5tr!RxI!DL5?soI3O6-VuDlN)QvV-ZiqyGSe z8Ye78s8$b>z;TZCNwkw@zS1q-qi)N=!bzFUu6h3NJXh0S2(%e2b&E;Dc~}?#biw!f zSJdUT-8fZg^k>WFu~qQb zqVyXj%Nr(eq@3~ZUNiAJ=*ytZ7|wjW0qO;%n<=EQO6ml$Kf{Nj5{13n~t@{ovwRr z-Cb^JCx)0~EpZ@>|%!HCt<{iCiqWYQ2O~s=0ULSPjlmpuWx*L5WRSUUyE-PPX ztz!u;V@WjWf;Y{QTO*E@F|&Uui6oQI)y3)WZeW(TMQN-iWn!th>ITxKc>eDvuoQDC zM^~sQYjjhWM3tKWa!;j0{ev>f7{~SXp~*c;YR^IELy`Gmfu1o|BhZ_1%KHk245>OIPrDXlonC`4bbX47qq~P`x<p|ni}rT!H(5&G*S@c0L1fw+cnbF^(I=omm|_R0F3wPS~2M>zzfiNRJV6xWvMFZ zzc5{Z)XQLTlDKb5w$-jdWo$Q`k*pu&sxNk(v{-HP^O5q9 zeuBE^P6^tqwK?Hi?9h$Nnth$jI;>4S@EL5f6Q9G{zNqkZ?sO=kECx9Qd)Bq*2~kcf zV;WTFPQ0Antn?vzqCQ*k^{8J^2!ylb_2Rtbtai!ST%>g^!Lq;{bMIMmYG)YVxE@C} zP2W)~NTn{Q*g0-U>sb?Oqz%m3aazS$T!~37O!+mC#Esd&?^yEdJM)$q9Gn`P$^h3i zk((~E1f(Vgqn=Z0THXH$;TGd%gQq`N&b1Hpo3wD^c;2Q*HvF%AG7rmL3VhGh<8MnN9$ym7&%D1m zx-JcO3sN$vAfjAJNhRQViO#qm=j;pFSnC#5+&QtsRLfVs~G zmiLnmM%!y+LO&HUlb7B|!RMu1wed&}q)cDS8QSfg-2SzTSB2iUHI$W`NP2jkmOxL; z0VFVPx$9O3iqQcf$ye*naaQ9gyKiFbqLL>60EDVDhAu`1dFX3S*Tm%8k1}O!9FA%# zDe~@NDvy~LqVW^V(iW5e7lIqDX~C=~m`|C=tkZFcwHIa1^E3VI)(?q%O(njYavKr=gmQR3)y+L>Sshdy zxi#o~nW^gEXz?75uaBQSYo)io*R1q@_)z)V*cmNp0Ckav5K7 zuG>ZUm2qcwGcnjf>ecGbjTzH%wc9)jkW_2ABeaj>49H6Tsfi1d&lQQPd|{StKX03` zpS_08?|S*_xEWJi(l&-Vqjq~9H?RCho=D{hIS1JFuNKz)RdIELB!?uEjMt+^KEXDX z(k@)pn$*Iy)yrI&9l<@b-n$!JQQFYHM?Gtc6DK;0qdgowKVi_@@Zf8mb_eB)ws1~6 z*WI2IV{PGhoZ&{$03S-v9a1lrH`I78cR99gUFs#20&u>yk3OO0D{X#HBDnPBJs3(# zZsrZ{qR!j50#8q4RIIZmrVdWy@7BFsBotROFvUM{v+Dl{enhD+z6=MJu*rY7!KUh~)ZL%%2pzOt9EZZyWs0kVxoj z8WiC?LQ>eN$}y!T&ylVtH!>N4Ex(WrRV3hrT(_lmR#ugpF`%TNt~f|qJ%j;)$OgRQ z#q(u6zPUYfT-apZDJQkUz2i-pz7w@KI?Q0G*`7YN_9w&3KQ~^nUH<^;x~Ls;Yw0m{ zTWv{fnc&?@R*v^R^_oPm_%}b884+#rxL$hq^{>l6j5@O2c#`lddBndXJPP@ox-G(U z^FFH+6(~kNM}k-@%O)K`=Ol{sy$aZ@YQcFp#dhx|na3SZSJ5F+wk&Nvqu;%IK8zV+ z7i%21jzRw|L+E{XNOoA7Q##ed|QTM6KTcUZc z^%Uvp_G!#tDPx{J>lRHlS=c@cxZ;#2Xk3t1O{fOZllq}n`k}6cL!7Hl}K7xhIG<%PwRFgxBPFge2k&1Ja zxs$%cSzhaMqiAeN`E!x!)~HFKouq{s9crV?8Q-~k=*kB~e<*(JG@bn_tlBX^#gzX5 zjZ~(a(9TLct&D3ISn}JqA5PU1TF$N!Llcg2YgnbBi<62Pf^=h&*&G~nt3u*q9{}VY zrmi&Xc;IIz32a*Kg5@ zX-@9FYK8v*h;Irm`3sUb&uZm#VRLF#D?$!8xy(U&dk zptLyZRjnvnsS0?8{N3h4NGH;@qw!7j5g6KMa6vy$YA1$+v{|Gp&Jv8gffhhr7H*nnqXXdRLbC%i=Yjg`&># zPCUQ}13fEs2Z_Wb6?S(25#bT$8tmKbJ@V|yG^_hTN$jo!d=quOkJ{`jj!z;0nV>ldFJ~tce zo2L`d!ex%H?`N^q4+m-DA~4|K<2>_Tf8rfIv;=A6F6TMri2}SBVjWk@KButoki*k; zAZKYlI+6*MgxJR|)f-uxQB= z9o!u8RPL_{or<5EoR6(})M%^Ux$9T1ogQAPlW8#-rQSZI*G;NiEw+=Kb;I4-%)43%Mvr%qt&koETMo#TpvNI{F$Bv?U~b)+zH& zF-J=jaogIjmT`9aJ#s39+ccUV`7}pd9wV#fz;Nvjb%654&j*d@(<=~ z(Uh05M~cY@7_JH~rCO>i?W@ZSJMPX#F(bRk_y-(d^{CCe$jr<~UiIur zHB!jNH6q`N9qaXrd9I`8zhH^(9v)Pl|TJxyz63`2Ec!RNhpnq(@`AYus|*U#eQqeny8 zrApG~xze_u6!9+nGUGVMT7cNdzjN;UcdwRp?He=B#?xwUboVmnj&R_SlbiutI($-j zpt$7quQwK>?D^KL;lWCymZsgz?6DB1Bz3MoQn_MW?j+|p&lU5KQH-x6*u>4LCeJ(6 z=6%fh&#~-lmmte>!Hs<$4M*6yc08Cy&t9iPr`jvY)AyLhO=(P20s-hNlCCCoYbUZt z0MbA$zuQNaodlOdmcDm*+=m1K+}1P;D_reG8`ylL*V*OwacOowH!`mNCDiv125F_P zVs&;?ea&;!%A%u&=6%QCTgb6C&@qon^KDj1Vz>l#1e|); zrGtcd_3CqDB`98TIqCIQE47Ez)M8bXg(Mx-?mBJ`=-`cLRFA#6)o9Q<&ZBuMSR7-e zdTpdb$Wjl^I~wz`H5{5}ZWj$GE0$!QNJdM3X0hkhn9A8XtTt~B)DNZYf zc}X0TTXym9jh*=;ky_OK+*Z1?oi$R-aZ|j5o_iXV5UQ5@*yt;sdcY||maW$2MZw>6 zNk2+*F^`t?t>dgYWJ`Rqa$QM7#Uqwh;P(cj#H~MEjM84~X_?hiZCI0Yz!;pIRUxXc z+X_EU+|>It;@nN;QPQ%Xb30VJLm6z3YUL!<<%S|M0}+x(Lr#o&mn^p(cIj95HPFhJ zS(MJNo!I2nv8--XAf3dF;Mb(+Mo`mpj-DaDWi8opFJ+Cuk&8sYkfrba_Oq>|2^e6WGhac0rL%jK*45d~MBj#-!spMn*B_bYnI^bcjyiTX82pO5*jE{?EB^tTv1u4r=Jtol5+VW@lRs z2ve0rQMK34*!m?YjcYgU!HfDVi@%Wie)3_A%Vtv*P;&`gwlj@g&0hI(VE*6 zgLSDc$(d2asxx<2x;d+_6gfEgkHKlz< zHu;I&mItx#SoaaNo!1C?BTX`ij?mKm8y}uoY3%R=&^K z%T`;olkzXeWx2$Fao^spJ+dM!om(|&S#pr&W=RC576pD>dR1LcGVuAJ@tkDUMxQLy zq-D(7WeqakRn_BW+Q)7W9M`dEmI7Fpa-8QPy$aD`GocW^{yItRw=$yxC7Vu*L4{+By+XQwk5T{k_O@Nj^4Ghy4l%> ze1pjytEy>9>$uZN6R(J7jGW9#CybwJk`EKetXs`4I}&S_FitN)Im#%}Ulqs#mVMtY zN$pmm@oKt|uYyk*JXU_r+M@aSZe33mro)yE=~f4eE!=(J7z~h4HIt_+wj9=rlP#}` zZE{OVk&b=pW$`VW$cQEdh|W9WvQU!Te9^Vu<%HL52@U3e4`OP<>eg(|rgQ{)x4l#) zKB&9hTwv90Oxamf{xvgd5cxaz3}f$hsP?k5Y;G2b5Y*ve%z&P!nm@Fyj$6)LcR8&+ zrS%R)xW?6OijpN>271&7TD0Ia>M%WOB{?^+-IFUx;tK^$vRxnt0FloIyer~{wP|su z$rZEjjBq79Zs*dml9a2(y^Q3SB&_-$7wgiqUNo7&Ilw)ujh1ZAm>`_wlV3$zYE&a- zspsLLE9&$g6tWAM1^^k#;yGX~J!%m+=hZiRr z^yTJy#C|1ms=jv}M?7TrsGr30ZSxJtBpiM2w5iSB$3foPAGv^f3-URhE}IsY2M8yXt)NQ)E1b5g;wEqbEJuDjn&R&D z39cn_q<{`XFATave?oz+!9N3v4>j>xZZhQH&lmL21X)PVft9TZDuR{ND8$*0!96&%HMJV{2-0MYkk2J!ys6V&Tz_dermlW6Uk) z05Oxz7mTKkyV?83dDctFU0?m)b5TjGkmD?P>&+7PC3I%J=(aWWp&=x{>qF}c20{rnNOrp|$Ej~C^NokTdeyP0aDHKq!lh1E^F=7V*{NZ6O~7s4dRJ?2 zd{W2~`Sls9sW&M3gj0;}dH0JhVh@R({I-0S13l}*^*f6f)Jn7Sp2M|iLNZWJJCjvK z%UuehJuZ7j4I>5(!6z82(AZjiolswdU`80R%Vx5a>Z+Hv!}f8MQ%v+P4#oCK_j&$c zX5<#ldxn#AzDEta13hZ$RduDNmJ}g4KY5!?dPgO&#l0zB^%IuK$;Lp8vin$%w+6l=gt!W6|5cOrHe5k?tROVItI|mz- z4t?m8ymk_H)Vi`9Dd3D${{VT3f4omq-m+0inzwddLIQw$cddB3E;%$MW+^3mn$WKq zDhaJ9p&NG-$@{gk*Fyz%-OI7T%I-YkrfYEOK;+f*2CPQ*IXS@~j&n_YI7#y|VV9@9 zXUy+*5leD)(w7G#IrOVbq^{hB$sKDM%Uul|+R%}7pv=LPZX=~3(ZD>f2BEv?H+|U| z(c%SIu3sF|{{UqT*$cRRDrDFsx(of9p}yuaJt}3>Ky2f1^dh&rur2i*`f3>XPnh}& zRMQvF9CKA0wuLU|u6RDtV}YBib_7?d+C_jk=hm^6{kEdL;(ITIV=LjebDy32`)B-X ztF7vP5uEfs0HU%wLW%$=paPev=a72P4EcY@HikW7@E)L?{&n-dt{n`x3uw*1S@r+KS_IQmkJ8CVh!58ieaGJtjhc&q07P#9nk=Y~6Zt_Y~gO@z6WQ0JEQ*OCJD;9|V%#hNYNqXe6Qaz_o< z{P9-@2vtm(!PTPR`kz1QJ_@_Em7GK8DEW9D0X&+-I%`H*Lhc~puzu}*Jxok%M)xqM z1qdie&7V&%lq;S))-<{zxGjzacy(mv&bUXF6$XHf^A+RiN;DvOR2V(+T)Rx@_(eJ( zS3e-Y_NiAzQl+-$o7EGp#LJ?_$)79|r#y;LrV`9B2ev75H88N@rV!mTj!DHzbj4w{ zlRRd%Z>uv)QCCaB$xaF4mGrUZf~nh@N$Yaf`ixyIN}a>z&pcATl%##!tuAdu;H)`x zr3g;YNb8ygm;ekDH8xgbR!I;3%~F7s%jSmDa+|S+2lJ-iDQ`z{vFXc^mG?gNFw=>Z z%P$?Oqoa2tR_<9_5J=oJj+CEc$__Hb(q9nEwzim)?(?2=UaR4S+N2YcirR1YY~_}- zN1(&W72SAgH(W^Mat3N?X-%?g?2gx{%@vW-6i@?Mj%h(BuQUU$Ji5a0u^E zqE(9vXqmwo=B$fQ$0$CeLL64y7s4`F1K`+)^a7pGO*tu`{zAJ9Vo&|wdL&oW;OkbN>zFs zl)fRm+VNZ1$Md%Zlw|SiiluRN;tfI>C}cM^LNniPNusv zzrK3a3AJ(Mwp=l;Ezalg+{>F-8}b_sp1G|1jbI|NCviP7+L~8HwDdBrHFD8oc^v1h zV$Z9&W_|h3IL&Dnea$&{Y{$FSoM4y1C$4%{9NON;f18kb`MT3~#ktk-a6o*JIXSLs=Uv6YLP;3TM@m%W+l};PZ?Veeuc>Ku_FpV{#!f!) z`qhNj#xo?O9?P1?o1RwK)0Qx`_9B;F22xn=9-^2v_6xKT<<cMOphFJxW}w-E4Ae z%^KiIl1b#AwIp64b$qj*z0M77PNGz~q;XC&gZFwDzu_m4sbx9irfOvI12hU9fX}^3 zmoz!x^=6h$-Mtw+TJspnmh%QW6UHlE4Rz$4D==R`PkPR3T&nM4oS^jGnzs7%sty@Y zp5W)2+=s;MW!ipbBRliK^`l8$8mV$!zJ=x2a{mB-CpjXlf5J$`zWy?LdscCZ=Ddw0 z?74zXaZSfFeGYL@N#X+YZ4zJ(`Jz=UuVHgHqa2#}Z@lC;Qc0$#h#PXZnUEWi>snKl zDQgp1B?!A35qOLMa_85tTI2jp;yGv2rj1G4)ExEotYF_dGK!R9(%qgl6y{w_xj7}c zuEHzXBhs6v3)Aqfj6+<+;nyr#&rho~QL{4~_xG%{@dK^dD)}G84R_P5)4lgcpIVb@ z?{d?4h22VdfCI_qvM+VFkr;=`2iCgl;wf^r^=CY3$B|s(wH;P>Vt1ao&TE^w)Mb)G zk{cbX&y`o~?G|;=qYI*Fr#*Ca{m5{*Ip?0Wk9Bpq$Eo-9 zsHqnS9V*h3Xu-I;CPD*b_04K&F3on2xU+h8uUiWy+P`Ci74UN(VtgAe*YSMe1~M7C zSJWZ0nRCytt#D!;tFv4aa-nu7R>|c0)oB=RBfs;mbgt}oNnH^GfH}danEa&rjh5l@u{#0u96DoxH zxj7wrQi#9=FBw0bHj+d%NUMyK)`_RYBxD?Qu6m6nbZs3^J@HPimRelXw3|u-!`i+N z@#l#q)U{cen0aPwAYVi4SB0eIc@v6~jAKsQo^nWvHQARq`Eq@`(<6BqH_L$DfYeR5 zcK0+(OAL{=t2dYi21v(R^3M`X(`r$w9P`e4fn9hn<3>!&5~WU^&ilanV=;3RIKW$HM>5U_>Zd_AA}Rd8@d-lis8S65Am_v1o)Kexr%5A-i7dxcCNYHO)Y%1re&3fgY zloG-;+EK{K1Yq>(Q&yr;g~B&&+&kWKza47W(peQsk^ti#)f3lF=52Gywa|&I zl3cD%qkr9>C&yj)40=XLqusn z&Kn)MrEN45!spt#<;>ZyGDwD9ERmlm@$FEZHG;4y!S<~!(HW-GWMA1sgN$V7j`dz$ zKXQgu&!{4XwKYtD>42*OxH<1tn@nx3l^LmRtwnMJrQj2SIOmSFQe7wj2F{&*>RqJM zA40j)GRNc?^ff{Bo!1VmnNAM^tD4d!-o??zJge+Lc>L z4hu32^dl8b^o*(b0VmqFO-4GC%goAu*yTQDP&v;dtyP~#ZM(K(zC|d@t07Y5cSS$! zjoIMls7s?TxCfq2dUf`#9G%geqj#>xeA-mISP1ij#%h~sl8{C}Iu!1mjU0J(GOl#_ z6y#$c#g6q=;FUnmaa+YXQ`bW$7M;;XSmw#f1duQgq#b6B*|N_$4Y zJ9)wgYecC^nq5r)0DCF9MV9S6L#V|hSh!}}*LOMm zYrWEZYpBLJm6zrO`_>bsPHODlm0IzVd)W1j1LAGXqpL{8l}1^GdS%zf;&j(CH{VcB z)dMH`SIO7PU23Z=&G+E^+ z_Q{cjZk6q36q1iKJggl_dsMof=9kZNrlTfH;Afm>x(FdMK#bs$!;TEu9=!wiMi(>_BG~4aCn(E&q}8}F!4*PICYVrzZ;HsHBEMY(CDCU zB-T|NWhFLsQ&x*FL1Qlbh50*?Lj||F3n3(9KTd1Ti&B$a&r*zAT+d`hHl!9g6gFSB zDvSnen3-z0|QjX!ND-#kbV(FA~k3ubhl^ zt~S;Pn^j3A2Pks2^e%j`e5acTuWNQ~UTl&D3fO9sPqcRViTQh)<%HC5@0cq#@jmXw z=^#^bihz?{mYHW1T48daw_McLzpzZwj90d8tr3fTDPbWTk3(D@p>W3Rf==&l_3L3{ z6%={Z=gk(4%@*%5lwKGfpU%4rKqkB!j#wV`olo7=lVMFNu}JEFbrrY)Mtas|_0AEn z-3DvHrOfJG>Uz~8ptLcT^D01m6VTN=n}4+15>8Kldi7)br_OLV%Db}I&U-dadmfmj zio#j$IYt;6&uZ7&rul}Hp*tgB*$Zeq*-l95n!%ijuYf11!1t~wUajg|W2(EAp--vO z!*2vuV7MH1t}|RwG^Jt53()%41`nE8k9%Zx<0{4!IWMa@m$Q|ROaO9nDEk)qhB(c8 zH5?S3k1B-y+gny;>J}{<9Gs5zEur#3bJ*gAFKI}xXYA{~W=}25vde+U&p53sIJdijUA1swN|#f6mMM-im@CF*FGePCI0)<(7Bc~%FF9d|cUPeERF3^%o?l#fz)i&4K*;`<`+DShR^`?>V4s@5{`{{XZ` zYuLn8PAW$o7<)T2Zp~!#*>)E1kzJOaj8o-e7=THypTx#WFPQWpB^Rl>moi1cIUOqG zH%iVG&mFU0J5meTH`L;FBke6SLP%}eP{4-B&T8eom{kwloY&9Ql;K9~^eND$=9~&w z`Hy$MBi_98Rk+(MtgVyj>t0VPt2ECm5dGtUzq&HMT=e4tsoF-*bR+|CV_#WKdnh>h z7-4<+r`YO}GaMnuAn{c1CB%FVy?yJ;jD4heS5xULw;Fdj8|jW*mB}?{L-Oa;W6J*Y z9s_&V+hG0LR*vV!;@`EXqb{e^J`l5tJ4lJ;k0!mA)d$%}_pw}+Ih>kj*VCq{Qb~3z z-$p_ZPZ;Ml!Rl5K%Oh@FwlX-cV-0&NZh3X>CX+n(QqmbqkO?9A#biSSt8hWjUVW?U z={U(LGvzA6QLFPk6GdQwa(O1b4$4$;pteb`pRT7VyPsQ1x4M()U%a#PEt&92V+W26 zVz!9Wj1|co;EK9c?GP0isqZxZ^_eUpwjSb@xxWVJzqncQxu+D#Y2O@_lHl&A2 zP?c%IW-YzJNs8|ILCtiK%Cas&#zu2nVkLEcCYlFGDBI&li z4tm#K5hoUr%ZuflZGB9;%|hj^O0mv6);HQ(e4{paaHN#!lpmWg&zf zNyci;rHZsbvH6En*w-_t<0oT9LCU0WrOgS^o+U*;Fs*GB*_l#OLuZVN$xig`)Y77t zw~KphdWDf+Az4o=R)y}{kH5}272!fktlH{(4SP6jEzQ>W^PVf3xs^N;M_=wsQ?g7c_IR~`{V)q~h z&-JRKbv+KckJ>>U_lI2~Db6IuHy(bK^tOq5lWDN9ZOjw~Jvpx%H22b|&Q3^0S#EFK zUFOV;^NRCbURflShVB8ck>=*9aYZwMznCPh9l!eZ%ub6v!O!4p>Tv4GGoqg?qsuMX zopo$c3GZC^bWKP!opXRkQ(n#;DW;-1!`QnWt*z=sZl@!GQpu~0tOJep=PGVfw?ooZ zqaBWJO;nvk?vwGT?ykPkGL}1qcKbG}Mn{#=RaJdD;jN!u07)`s=rQ`obHG8mM}-v_;F=(oa4 zh20>^w>dTS6O^Y3a-0;S?e|To@Qm3RgSv zae_-zT08hY%!(T_FQr?w*ODgrzH&Ny)-c0XbJZ5>Q;bxXLq&X0uMm$1=E?nO>Ea86 z8;#gO$j@5shFv8+dYqN9Jl1HVajDHO4CFouUU|h(d%184CphN4nBipIndHh+YV3|l z@)NyVCc1r;Q*FJAjYm7jv3lQ6D%l~J_sHh1C5*d^ znTf>r{*-A(?v}nZ->ioyg0zF zqS1WVo-n(DGxQ$xypo9!@LOd_MsW7d^%^TRvA3Tz%`Fmuqf> z4C8lRm7(@k0Dv+`{Ogj;)?3)*{6nWBX~s|v^e39dgJX_vQ8w^faMmesE5|Wph z&so|xK6$%RH3xIXUyAxC;Kr*WJeqlz%$bhtsN`UD>%hf(6(f8dRC#pUg=p0CvFaWs zh+Jv2?d6q8$nGoTZxc-xo8s8+$qVJS_9v+#yu6eB0rA#EP za^mdTIf-td^RftMU(&NKH80$dt-F!HYTup8TC%52J6w!vB;iAb1Fl+{bvX704bFHT zwS4kS;pB6_GahwfVIMKUTEXCa=Vs4;U<_MK5-f8 z^HT?kXG}SL><)5z*J6Y&s!CDnOaA}~g~1=XoG2q6C}H)6DOwC1s_q}`NRMf_`V^8q;o zbUCU`<13CwoLPYC8?SoSRMLu-x7_8MsHENWGo|r$&y?Ai6*%X2Cb;c$#1mcF%4U(6 zk%5C;m0@O*CXA%rpJT;!o8*>O1mhfzYmO41wUd&=9S>@AlwCh`^eA&9LJ4xH%y36s z)}&0O1e>_8J+{uxI+tC8rZ_8(YayhSbppsh8@czQ4Z-U5CZgxqgHWDHEac=9?s%?3 z4MyWm)tv7eNyr)LT{IF`igvk`dTMdz>Y30di>~sg&B+++On(?lBv`gvJljJ&MeW}1x{D<(RTn`xzUxA6Y}!Ow_ZCU}mQr7#6|=2qGrJFq9M zde4Xd0A>$}x}Dq$6qZBHOsrz*H>n2%w&nl|!|T~T7Nhpk=yXE~j;Q&RG-pMqd;pV0 zzM8{S@fv-iKb6g+Zz$fG#y_QK{{X_M&~0?t9`jdsat42O{JL{qP9rzNHO)o`qZ|cU zO4S~y^L=B&dVQ~*fbuFa!yc#WTqWI|yf)w>C^`AKsfHukOP%_PG}Sj|7Q#LW#{!u& z`)6!79fyoY*mggpvxl_MU zNg7|;jzc*h4DpJzHAM=c9|QTt1hnd#A~DArUZAcrDhq zrt14NqH<29IM3e*A3}888PqpYaaX>>p-hA&=^1Q|%Z`U7#jNy42(cKIw zBObLn&NpP7=C0oErCP;>pAqMFeJadXjLq{lM`|=|&h9Gg*0#Arxp#6sYhvC~0NQxY zYc;)!z17Y8Sx1-2%V&z%gpV*D4;iPbT*9`dv`!c%ezkNUGi3MVW9d?zm^<9Fv}2K+ zb*a`c$N*gT=e;)cFR6Vkz!=3?h6NeVddYk0!gjsOBGfYy0N=(>tt;D)G-s{}#Vu@H zz8jGnRA9vR6xFrCJawj%wxUDU(=Upb?2C?i3aM&44QNq;z{wOPxH5u8YaMJudme}3 zsK5kq^sh{^P{n`FYFuBo)PQS!eV~JaLBaH{+K-xqPAn?5StfaH zq(${PRA4rFe_HMBAR7l6Jw<0#*)HcyHu;;dz`Jt8l4|-}Ek|3*0r+S zmv$(#zR4zZ>HXjSy+byUCBuIDz9%=0b7u9){0Y;sml71R@|K3k1(1A^NC@T(x}M-fT4gSj%#^cOH$UTV#1hV)83w9 zQx`$SbH3#!-lKekAhQ5QC^pIn0DILn?v(W%*N* z?M5+FJu)dh$9)+PjBW=b9qPaf*Eyn6Gep~0X(t_c_o#|5 z2RO}UuX~kr-lWi#56Q_Nt#^JNe6}-_it1m&cRA+TsT0s(Annb12ZoMJyyS(=Of-WP zZPPmu_eau-$lYudP%u38=86C)paAj>d9TF#L3Q9ZbDV@=Pp1{FCu*^NW)=Scg)c+% zV_tWQR=A2r-iqZ^W1t5d`_%d*sP^H51M_2pT^Pm7T1j^?p*HEk_eXtf%IKlG_pNyR zv_N-fHRtnPGryR+u9@}EO0tifn33gxs0mb8va3NzfCMnii1;^&HYhA`BZO^{UcbA;8Z$>rO4%FnW-+ z%7)2rrDxnK2>ufYvlp5d)6Jz@mWJ|2kTbs4Xa$tn^0zvx#zW3eMo%7 zxI9$1WpGaJ<{qc1C)gY_6S+=sdiz((-X`%5mu2ERxa6>Fo3R@lX9J#``qH4PN-~T$ zW_4puG}NkWdDNaEyPSr#vna(siF333YbxUFUAcus()mmVTM3R&ezno;VHM3cci7`~ z>egJe<7M268#$r5j$4bja-ePj5T+vpu6$({pN=~D_ z&i+kY7>-{#=~q2eKsR~i% zj)pY)>yY@Ha}R%d%evM{e=x{P0gfw2D^9@fwkfu@%^ZcB1oS!SShpI&% zPVDzI+>%-{Z_N3O+4Z(7!*Y2fn#Pv>nH`z-gVQIiWZH~w&81QNNW_}_i9;4G*NoPD znw*@1*MtJQ5AZj!!*n8kIR({Mx8XSaPsmUWe_pf6K4`~N&&T7%MJ2ULxgYG=jmptQWKAx5I z-uw>a*O^(%>kYGfHKR#1N@XE1PteqE+oa>S>rtY5ofo+g=lHoNnvI4dKHS!lS64$K zL51Y^pts)O9MWk?HVKe8AI1Dt69p0DJdsIRmfp4#J@?kj=XQf%!{?6W53c}hDs99IKy1?Ijs;n+3__Rlrw;M7%3dmMO)-B|h~!j>Y_ z!|LWT6-O+4iuxzvbE@jebcCyR$j5r)#ZFR;+;t)_=aetp?EW`vu|?o0t>ThZ1|8Ub zHlFzPugnh-T(r8^%ORE~8Qe}yUKy-DUaq&f(TcjL>NmBE+B+(;4X1HD8udLbSr9&X z2bzdmn_i+)Qiab`&=t3)2;4}$A|ROf8(1~QMuL2 zZN_t6$u+CTst=oRQP6j&ti7dJu9gUVE>C-xbpHS@{^D551!U^Pcd4SWkuF+E4(QbL z#}%K$c=a0h?aDqKF4}9!B#2@{bBys>$!#?HlSJ@3;2iEA^}H`8+`1zf^2g!U;(ubB zYxkN*-iM<4dsj`S>0WF`Wn6KdluuR6Tp-i4dX^;9@ENhqQ4l0|SYgRI=CgOXrkzc7 zw1uM1KMIWL@X3*ZT+x)1WodFY(V_EqZ3N=0oeO^KU=lkD*V<`uNlNLWl$sNhmO^pg z6`wYZI4W>x^Ee+sEJiz^I*PoWf?V|zqUpEB2>Oxp}FWbags zrqRgcbL*PTrrx`UI=Zo0tv3+cd8ppcLo2xSI20*3s~}cr%a=k-y2%z#L&avxpsP14kT~Y6+DWSql_Ngm!)Wk0 z*g!pT-m&KJ_sp;5@)s36*WAe~M9!N*c<{^%DeMJh&7rXv2uRImeNEb08IPlqfQ2pJ zJ&jX+B3*#0lh~13QdW~sb33&w5PxP&uEdhV905qy&NAjRkcSnfuTXxnJ1B6{w1kTl^z5k$ds?t`nSQe{{U#&TYTBvFi5XxvC_CD##D6mug@`66*`S| zKGz9N)`EQwmMgezG}(?m=*~Nu^KEZcj%((8-~q*a{U}ORWi!^4>B0&xp~76;skvzs zkXY8fh|4YLGK`G(uSTj-pzif1gjDLQ>~}X)+uLc3BPzv@BR#bHYWE#BM^K;piMI5@S`^JbpDq-c)!o4LaE=hnBa zqZ3Ul{K4N${H04j)H6DgioZ$x1p3$_{ z`6oFTHO=4YMY71-n>p!SbmpNamFhMS3|*-dYC{9SYPuDaDFOP?{Aobof;uMx{D zG;>p&snhgkxVdM2vK)KXW$eJiCdb^&yjPJJa?3<|l^7@) z?dx5&WgFR?vF4#4QdW-}RPqN}*s_i#By~N_dG&PE@1rP6uDuHSnh9fNFMv9cTvS6E zk;u;0$g0Cl!i3mVSFIU!Y}2~DRJ9R>21e+_{*+kh`|Zq=1u`B;UTYXf+0y2g?9-7| z#kosj8|ygWx6aU6xjC*`fN8SZL#{x;$6DT$dE@OFbyX@-OR<@C0hO7FEshOlv?RGj zW6gBZlvUz!O>?&2QW*C~COVLL_pRtdq)g0k3f1EjB~4t6K9l9_aoWw+>%gekBbFYZ z)+)+lc5>J!0D4zLf>c%dj&(nN+8=IA^0SuR^J27$1SU+KKnvI;XP@5MkFHO;a$i8DY$a=U+s^P1{3_*csW91Qmr^mXFn3tv^KrU5C*%-fYffs_pAoSxOpYBws8 zIB~!qop=~kIW*hqdNt;@XAgIC=Q|Oc`ewH@BCCEFoy>8NYwobIv=mnC`4-h&Qolp! zFAsQz2)0DbNN>B&MSEtAs4UPY?*lOzqI73;+4Z<-sm-Z9&VuR@J-E+awa#5>(iU&$ zT{wENiqP}1wC1XL84stqpXN|=&ozU2qeg_dj|xwvdeE!yB#wDgi>I#TYj|EMfFuAq zpIYebq;UKkA75Wu?y93Ve&-)Gw7K0_NM^MW$i;_VyjJ{CN9F<)ZXjgW&sI({aYwO9 zsnfi-G-R<>w$3>{>z=x?{oo^$p4C`NsZW)Py*_9rjjb~qF(?=V^Q*UTCzQblJ!_V- zOAyjFqSvys-5!0a*-I?p!1d$tu3qNC;R!of59eO}9$80~^gLO@qH>z*b8lyKCG!HX zDs#6rqiJ<0LAi;*{427(7*wa`a!{*M64bYKGEZ(x44UEfI0SbMu$Elz8LnI^bgL+{ zyAYJ=sYh}F0lJ8mOyG7MYM|2@Zb893@x^-5Y7M6MI9z?CRFT+N+o^>XWdwoLRSiZI zw_p$)G0y|}*U!3^#LC@Iqjc%KH#PM}WK!;%Zwy0zHLA>Q;xk9wdUUNSNyXW0a#No* zHuq~&M$cb!gxr04){@@J^O+kw)0Q1jmow^PEJX1%(p#o$M{~V|W%HV^a}Ev&&u~HY zsFHN#+v;3emDghe;zmdE$jB$=&!#G)sdz~zkbgR9y*$Dzc(Up!7XJV@KaE;~-eBnzt#{>A739!*QIP*R1FsBuhBj*_}uSBoobWV`A#ja9sgYP^#NH z+m91lJ(C#R7Ceq?mX}f!mU4Ug*Thr9&MotFE&DY6)^OU@#_i5I?_9~fkqVsh2t3!> z;i;)%?)Nz5KW9??4Mx6(<^a814o|IO+*`okzF5SwgOnNQYOv9jDK?qv)Ku{i=0=J` zES8K4Mk!GmBVD=MRhu5+Bz#v$_PxH zoL8@2n~fCK=b27?)!RBHzpzME+Tu0@Z~^31c|1pAiItUD1A~KJEHL%zyIA#Vdm2eO zGnCalN|H)MGHp@Tyzf-hjmr`aaxa?wHeD}Jm~K_bC)4w;l?rgs zUeaw_c1ItFwI4a#V*$s~u1Dd!qcS_TN2k4Rs#AkF`Ed_(ReUupk?t?ICjg4p{{Vz| z1PdoqgY~59tr^szJL+Cd1{aK(7-t#jpTeY14?@aOv66W0T1Km|r3bNKXg2Y&P)0GI zT9I@(3BwHbKJ?vpd$Ls|_t=nWc4BZyB!iu&jQZ8Z(=EUxj=ZiaWl~bue348JpKPaQ z12GxMslLYnUQhxDUgoQsTefKgmZ-IDWp2chK5oXgpF@G|gB&&v>>6It$5v90JHJww z*b+Gjb>LK&HVZDB<>P`lsI3n=;3ax%}#FbV8GDo~vn%qdhU!w4<{9+6>7>yC0MD#$IAX7iDT5{z#NQ>*6)DzFYNyS z7hB1a-@O?dup1|#uWpaNrGK=KInSC7-5K=uvpAbiX$Ata=Z`~QC;UK$H@PR~%D(2~ zhQY4~D}Kut8Fpu>jEtv-Z?ZZ+0Bd`!%x-cN;c{!+E%h{Ob<3We>($MpDA$vHPJ9&H zu(2_9O=2Xsb`odXHRGE1iCgU~V}FqM&sy_iX+_-Dq`7RbspnUoC6Gu$%k%fbQ(pB3xYx@L`IHT~Vm0zWMYPEI*$?L1xKPZ4-K z#5cNLv!}^zeQ74iqG6Up+!0=!u<@hIN^jq0Ue%~Mt&_7n^5R`WbXQkHJIcD z{M9^iX|n23uv|zp?Nt|j5lS$UY>jUk>6j$B#~25_4|gg)S&2RKU8*hU(Vrw$(NXn2 zTj%GlYO`vK=5sMt9lyO;#!XJ_g-@FIA)8c?e;#q^-lP7}J5-m>PI}i&s($XsO)7D1 zkV~k(cOYUrfmNlwkl~q+BR@*G*Mg6{V<!d*F9R1 zn)5ZIN0wUddA_RKCMw*6)aRPQ5`UyHCk2ms5#g-%HweQV0KNR&e5L1Gw_o;elMO4qY15g&7!Cp8@Z0J|&{f_m0H&D4!>p=1MZ zP--sR_2_acoYawD?aZ!zUQf^I4p}P*K?-wnR*c!Cj zo=5^-dgI=%GPO%bsoN(8^cZzH2_c&U*VdUXqp%iP0Vk==RHnI-Gk3SVR+m)TJi^)e zdmgnEnw*RyD~>ok*GAG^jHAmciVvY1YI~6GW(0R$xvJ}_JBJS`HP0xk->By#q>|W; z^%f&(ecxIJs#_b61Epx{Hu;&Y)OR9l@>u-%%`vqnRXKglz~s|YlXqu4o{cg{wMkAv zIr`Mksp3!rWcM_=?{0w=cnUQjNoFLI+t#g(OK=Py1Jg9!X+p`Xp)DQcNgkxcKIY`q zqfwAEzVHDay=q|p0C>@|yp_>*9Y_!v&nNP$G3rK1$W$lQhiV_Z^(ilN-rT$P=>Qv> zLNkGHuGZ80%4G&8Fge8wqkuAnxZK&0L1^@}a{9GvnA>srmq>chSFH6y#;`Buw)YV=xxT!wr|2Z3Laop0!FYdm2zpxB^eP ztpt%9C-taa>(GQ*5)~x=H7S*HJ%61WtD3oKVgPt-p1oc4SN!X#u$u=&{v~PH8J#o7r8R=Z3~vhwEOKWB`?W@+#fkZ9#kt_MI<3 z*cPME9DZiBYbkt8RKJFTij!cV^VgaHD4+s^%>a2X#AM8&k5-S4E91`;Ohv@#Il;lN zL;hiX8No(Y#mOFBWh;$U*qnm=cExv=vM5E%WaFCUsV-?9bp96KbD@S&C>b@Q9EvuQ zb6DEUtrO7FOOSvzconk++WC94^HzGY?wYy1V=10c2XkKU;af(s)4cbK20_6iwQEsw zQuAgCT=hK;*)9==bKlaY6Co$&8LS}ejU24UZ&EXy(&QfXs&^gGv{M-j&K4$P>0VLe zSKp>H$rwrr2M77o>h8)` zL(TXg=LVDQOSBg~C|a<4+)O^luByvM9$<*WS8i{1%Q`yVZ+lqQc$lyzs<> z?TiV}$ymc!GOP4EuGCgXNKrrq6aZ2?VM(SY?5-lV<<4_lmyQ$6_5i+PN)~deo-uj5h8&4AfrE!&XS0ueiv5am_*fprmDACp2%Uq(>&9h|U|F)pMu< z2rhS?aa9zo4c!%=Q2BCS2D0vTHCc}44fxS($cf%c$mj00alQG+r#)*5^HuqB4?TL* zP-)$SBWUVl&8;XWFP~bWCagf*56XQ_Ory(d^(nqs-5ma|{%?WpdAedh=OV z8sG1+=I4x_X-ZP&cF+=wmC=JHyNS0fyO50a;MQf%x&bSZj=g%;wsBf+%-_2^v|-P# zedaHb*R5kutrFYW&tA35Chfh>g?G7=HnhHZCO|mJ&w9?e){7IiT%1+zlUpJ#xm?W2 zb;mI=-^o1lR4#RFAd#fwJP%shFka2IsWjSem6?<4Ou(`}(t3)_n^qxk?n&F6X1O`z zYs;ymnpf7k&Bz_MEQhV`lImDuL~Z5`{ETtX=AGucryv3bYU0;EgxXFcmi3fi@Cm@j zdbqlg-lu!0>Ot#H(o(sbylj_J-}avQS>tnnJDh!L2GrU~3l{~mkTXs)+?P+0UL%II z8X@H{U``3mNByb>cM^StDsWJ5%qq@T`4OE*e9X%DUqWf?s&0=Acs$ibIKMGRSbP0R z6H{f8L3IF}fu6PMo(P)C^Hw(3l8B;{07zNpfKoGL>7&3_YoGkrf+ zH#$zBnv4!N0;_|Q{Hv3m!uktMmoT(#jzOzXwX+rUktZW1h6*I3pc>4NoHuqAC%Z(!S$r-qO@fuBuP2)0wV#Ss5UFH8Oq}Mr zX<;kZN%S(QiKR(9YR@p$zAQ6AHrG<55%;lP72*#cU0x8=-7>N0H~RK9?cwlHr8cFy zJQ|qVxP{7(Exy#{o%b0F^PXyg&Ud%Udi3?K3{_=0a`rvS7lkB?D{_Jslzr^6Y5f`mSMX9uTk$^l%nH@Nu5PjKFUILcD=9M>sH>nNjib^S_$#>?vC0Vw!6ZESqIM{KF_pH5>dzPwQ zj#-m<1dJX4rOZVMARc)YgN(0ZTixA|x?9LIv>rL)sLf#nfbCJc9ZghuuI^5X?4vG? z10Cf-ZpNs|psAIlQZeaTDx9wD%h^SH%W{mG5&j=c{c5Y|axRr?q1wmB-J_LiU@` zj#q1EgN)TFtxuXpGoDT;jBmLux{E>sY;m20wKc5|o45~~txqD<=vwGido?q8nA})= z$JVO8nq@3iR1wc76&k4AtKF5KOCDQpdR40>aYd_{lX!YJl%bCU__0-6!*OjJP@Z}kT-w}D?^aQh!#_D9Jbo2L zyejRFlNtV1v?SDQ$mMq`OW?fBB`8_I>s6b=b4rI1oR3cRuhthO-$Oc(X(W+c_(tq9 zpDQOE;CHCs!gouIBQu}9$6D4ksrB8N$~7%yNB;l_&GcZBgb;ZoccdB>@hc*iBy~~J zqE3U2`kC@pZ<+2n^sDW>3=T_Xv*gq70{p1VamG(t!g8i`D9tTQ*|h82sAa}^D~|OF zY4e|*qw0EkRy?%j8{FSj(6+V=Wnl4@J;4=X3t#~)fWos-Q33RzI#AC5NeXGbd%j=0z;ZRINrcP@- zGK^iN+}694V(emR8f5J-GZ17XoG9YE5ofVb1o?>0K&YNV8bdi{Omhd1*(uFI6Je* zsf1iAGMqi6dHS5)z%nY1;P$SYMBC=6l}_I0I5ilBc<6Uv<7$nwqia)lA&YVPgHT>* z1A+nFjt{12g;h#1k5fvNr&+o79c!TZQSOxd!>Pww-P52jTyD-+u&MU(se6hPB}Q>q z-1Qw2Fxiuh#8#E{;k21lkWYM9iB8pV9H)J0Iuv=ChkK~T_O9f7*gTH)=h3v6T9oEQ zWmRvKo{z)Cud)TH&WF9*s!F#H$vT z&pVVE89A%4=?M&Gcjbp(KhM2)`&9*Qr=J`P>a?I}BSG;NnF$l!OaYjsh*&NGY**DT%c zbwV1hV!Mwr<$>$l6*+Z*dFp!9$tk3asl}-`)tML9ic?~@1oK!;ENgPye8m2B5{ir* zO)5#Lx7$Ii*^x|`Vd!gq&h9mh2{;E7u^#<3ZIRVV)aT0mN*bNlpEG>lyB#Z=Q5>W? z{K`+STB;^8Io0-$V#JA?Q?)ofO>3BAlZNa+^3S`26;L+!NH+dcwruDPW@~0=+2N!7^-N z=G0b+90Y_QotXEUMfp$3&j+n=R>Zec z$n~jGiib3eJG)Ud45KAaLbb`?+O%nfQo%=h*PYJMeHn!5#u2;dcn!6yK{T9XvB<8D z+!Txvl_swdK5M?`6e8f;wx-R!yU8bCaqnGzl^w)WAz2P`2?L?$rFj*qMY~I6da&kk z=3g_??cL^uLwaPi`yc z@ikJLM8&AnvOLRKX2Ay}WOOy>dW@yyZO0iH73g63Ih3QhM4 zBQZNTBePexPK+f@rgTcBN^MFz9@C|3YjbLXTo)a4>spgsB#XFXB=KJ^=(=@m`=3iv zq%l;~mgY^vs^#(ts?1h<6TLD(=N0HiGS*#AB{k1!BPL4}X&5NT$3DiTw6&2Z0F0dV zuR;>#zcIm5nu|`ypy`k*+x){P6>+WvGh}`M*O5PZZJw1!2+@tVG^4-Y00*3oYc}HK zd4zV(b6j-kxJk9SRVJJlDHXlpSqCE(y0Zyj&U2prwY^BbYqJ`6ZM0RE-5GLDd-GBM z0A&k^2_PTBsx>D~b2Dux8yS}#9UItmVmTPDR{sFQhSzhT3zo?McQxHh65G35o_y#^ zaDGP{aTL(p^Zu-_UvpG$Y-XA;=(~@p}yB&QiqLV{Y2MRiM z#d-LwMXKE$cnU4T@2Sn*Ah40}3Ff)IO6W-zN#yjbqfN?6X48^_aAqZ|{{W-|oSgdC zWo-<1Rzf`F5sYV=?ZhriG>ovy&ctIwYg^QCyVE#k#z+;>eU-(koOAT4uU%D9WKzP< z4^~QlB3mnM_r7BeK&`vTV_O13{QkM^UVbWabBs=k6#hPAfW30pOgP9i)JK-pU6i3e z!hfxIE>#rH7+>18eaR3!a^Z+#NUqY-*`G{VJAqESP=cAQHtJS%*Y#rcj9=*t&N^}p zRMc-C+Vt%HA;GAGm0FJPbZXOhSw6QkG|fg_ZIQz-V^?nVRD_(iGBek$c@=4M;(1ZY zK{(J(MpT!nExeEB2hDTyT)`l0NH+t|HQ!5`H;UZbmJ_EKzNK~5ZS6#Jhsz<`aPOLiY3(*EY%WIw2eGb;Rg*bwPBkvd#!GPQ%Abj- zR_ZmEdqxMb>&wj<`S0tV*S{g> zQ#oIHmaQ&kYVR1>e9W-R8?FmyjyhCV0z>7=E0U~vIjK@sQ)X{nhb_rg=H8og`BiQcf{kcWKzuu}1lkt>jX9$6EQb z;sjWNZ`O$4+9Nuj3Gy$A_6z4bK|OL!a<&(y4Pq%(fFXkejN=BrmYPtgj~3Q!`i8?* z7rqD%Wh~n;H+QcO@xk03Sb}zvF<&c9I(V5rsh?3d31QQ|=<|;S>JnHj!mNaBa?j3j zlb%g`1&4}$*&Jac`M;0Un)h=#^H%1Uk>cTQsOj8?SJk7BPhunv?nofFBaXG>x~8Db zIRa2dIS1=rULJ9)th6?(1TEHV#HPkQ!nRZ^^+ zwnrZ?Ehi*?o%l~e(Y_k|5%8w3;M9vz)U|k(^$ki7y>F4s80)<|*rFiz?e08o{K9;e5@h!e)h~R<-Ib)JD^sgiM zpYYB6GvW)ArOcO_VUe0Cq9miKImq<-cCS5V(4JtS82hb$CbjTbm|$Ka_mp4Ye8H+* zU0L2tAClt-BcQH*wZ;-1%yK)|r(T_<%)1=eTF#{_$Y}8s5J7TAa6RZgAa5+M-Z}fj zwQ#*1?r$z;*EYmZb@u|MpJckmTwsIRagXhFyPaf5I(fmt9XYN8T8V>P2XLb~&wBGYlf-hP(UfmNe9ji& znDq8w_+!$z+lkwIhHMad&sy(|JzbA3=|M-SK;E!&#N-A1OBQhdp- zpx4Y-XgS@~dQ=kX59X7fx%$#v-2U^?5oH#edZDrEEF>&{9%{^*q$WI-2>te&%4&Sq zxTwkMrLj%#0?5sr=b+71d;B0fbHTvPcEPHVQoiQtUFt^Kq=k9Gr!D)ko^r#zQ_-$;x|etYA+RXUMZw^It0 zdm2$*?oqkEVcR`w_x6vKFu@96pgrp28>@9^R2$^>olQG!Lwsx;ouKv2TZZkF4YOqA z^{hFhxuDDTmtOYl-nF~{g8UA-&0U{U+@C9V>FZi3r8|`wSs1T(C|MW{!2Xp?SObcb-052zZdab3hO%<5q^+_ox?617wWr)i z3lA;E%$`2A+FR;}?1SdZ4uAc0xt!zABwmX|X~n6QwHf)dp7kQ?1*GMN%l_3h8$B3F zY0O-L`)ZI|JoP5DE%gD(E%IIu~ADE80q@`w4cY7L< zYHSg3ax>0NT3thP5x+P+t3^23wr9Gt&!4N zUnp|L`+C<$ZK&sv*(03M346CGN)9i&H{iboGFrAE)HAei$s|T#hR&YaPfsN>fsacgsIKf1UW9$w&$S=gA2|fz2K?)EuOcODYI+%z4dBdKzrXoVk_HC-{!cc6KWt8Sh^gc(!2I*C3O>c0ufG(WkBwN0|$(b7zuA zb>(U@Ic^E#itB9k0Cw(tlh(Z1r*$LHPnK5bbP!*K;J$suX)dS{RFYVdI0M$UO+7l7 z&8>?c+Jmk}52>vyeMf~Q`TEhNgym&)dRK&}Tb)iYdBb{F(@Ai!Y0$)6IYQ>gw&1_q*)2)^Tgv_oVQ^f{${Np_4jYtFu>qbWr( zuc!^V-OtvVbr5hv^!MvpKI7&kT}^l-@!qWe0BfUQ1A;y38e`{HBW*=_UBHvgFls;o zOMIuTUg)OP#|>6KdCBz6HMLQUo((B0vpBoEF#grww1No7KDnr+)WKo_8Krw6>{b5L z1C7H!T6=0}2&@~O?^@=+_Bx)6xW%m(^fF*;0%&mzB5ge zQ`|x6p2C%_t1?Zsc1ATcSr5&VjF4!3P(DCxAFU;;xu-S$M3&l?CCfHJIO|@y;H$wX zm5YpyfE?D-yQ0oVtw{GrtVJ&an(n+UC_2Cd^&S3|jTLw^O7COQx$i|}wmODMAWUvO zO*k-NkaJaMYmlb7xq6F5BEqQM-6VKI-!oOkU6|FEEEwx)10f-|de$F{NIna=1ZU<3 zvYTAUm@8AWKPvtrPq*SmuL2SkC1a906JB|z-O4WHjFY=L2EFWk{S&`qB+i445sGj^?%dI)_Daz}12r?#?}awDGKDjm?vfTFoo!322zZtDiB{NHdRG ztaX4U3FZLV=bCX=&}}B$5^ZI0e|eLiTB#JL zb89-?)KeQ68!EqgJ~sBvbC*zSA8iY9cjYeJmBtAtzH?mhjT&!VS+z%76(4n2rk2*0 z!M@XYCXk%<s@0YCHE>5fKMFOWZobyxebBep0!iIEzvyEi&5-k%dKD$ zyaApDYd+&zW4jOAIVP)}N;YPWQgP-nrPjly)_y~0uUgEXSIj|Fl1a}dvy@#q>#?NV zoNv_5n^pO;{{S#N@M?v|p}4$@E(SVgiA^`|>}AWMiB3&KfJkhDc&y1aDSXTsLk#`e z=BDaKQrB|`rw7c+a%wClBz(a7)_j-JF=xr+wNr{#>U2h&rFlN3X)fMKOAzO~h1 zkvz5t+yV&tR#hp=gXTv>Dmm#hZU`)H&Ks8_IH`_`BUWgDIPL{!8u6T4k+fB&tcM$0 zh+_=Voc9N^o*!K&avmR)gp2PPIKG}+M1xN6b+ zCUnB_LENsaPBN-!NoOttD}&Q%6{=lX=TnT5eEYK6OSj72OW{sNIvm$orE4NS?qdv zY+I=p8J&i`qh-8x9(pxwq&|6w{PfHkKu{qLI>CSzgLw*#i|} zka5ATqSr~jjvq0U@Nz5Brz|{T_4kfCs-;*vEf0P0L6J1*ivX?%YV|>Pwg`iqmpJ5g z&2i3Y*KF;exoO2qp*)ub(Ek7qIr`RJ%)s*FEC(1I)^g?MUClYQZ>f-Gce(k89jmO; zZp<5a;C1$|ZiKmF+TEUBE?)kp(_aicO>JST+T1I~c5(9ziu!sF8)@tTYqiF3as2DV z#5$6#bF&Z28Y@yZ@y4FHBH>GCr>$3iAL*({l0mn3Bpz|?L{#OcV^3=an`V5!5Udgv zlg?Z-91YynHu#-jlPGsBAMtHG)bk)d|7w-)=`n`SQoz)E(lU3V8y#1*1Z_uV;6b74F0uI z$3vUC_=|eb6?@iv9Jf7dn!54L%Na3t&PQCgO6!FjHQt_Q1nO0t?)5p#j~87!Nx8{g zz1yvF_ns)4RSsq@zg`Y&wazh(?Y}}{PE9W(mAlsDkdK&=p6$}PsqWZeTj#?TT%7Y> zRe8&snX{`8PV%@U<+&v8JqW9*A!SAYmIFN3g;sZc+3!UzR>9^a80{Y1)jNsg5SPYH zYPoH8XBEn|In7s55L!Dve(z4TpW&;*HKmlX9Ow0}n8r#R-Og#Z?UnXD&9$d}6u`4N zZVKZEKGp1g3e4vE9qn`0~RcC z{5k&s_1DiZID6*a+lXR$uC(N+sGUjs&7GE-!H6A?2j0C7!Gg&O5bQ}fa56rIu~YY~ z_b_qN$o4-CoXHHNo&7PI^=Wk#gGXZcz#D^OG_2grlW8;5{vY0?ej2)!=F1RR4x6*> zT@8)eiDzr6M4Q;)9xy#9lbfkF%&esdr>9e@x72>cqp`3|ki4kx?OM^^&2^%F@r+K~ z;kYB(lSTHBuK=$j8{qPbSG zNYv8|cT*x<97@l?uD?*YRknuTfK=8}(yB(=Lz(VVjIWo;r6M;anC6XJxk(W`NJd9m zhsZ{Z?p_JwHAysq+T>DLpmDSgM->Zc{{Sfizw1`2Y-G|=D@mrExIKF2ppwpHytXL?xLw1O>rFFG4mRWtm6V~Wr!u{mpJ;sHvr5+h0tw*OZj-*FRT6e$iO|P_ z+~d7EJAkYX?6+b&R5&{`PIR?ozqxcFlzQ_}Nfo>EwQDQMI}YkaMzgh${K&m~R4u03 zw4ZbzT344iojAERim#!;B9bsFoVpM9PES)>#WskHPc%b`iRh#AL9&XY!;uF^TJ zRY2+HFJkOfhFHHgY&5`T(^B-VweE~HIrz_NubYNOh?$t&}E)Fsr_ z$(5Sa?KvFvH4|EI#~)f#+)2BYJE>HknFH2pEx*^r{k-!Ckl~y=lpDsV-}ovjMaq;0`i*tmy+bN8TSwuVE(?#X0JX z$rZweetE}E^$(RRMihW}&Oq;13L2Fv>M_)bVViSiJ1n`C#OH9YM7{CL zNeZKl$`=FX=y8hiD&bv9>Q+4%Vm*x~PTDgOd`cut%ODTmZ+ebxVmX_6kQ{o{)x)?n z_d6(6g3yK=xaN_Zka5W7x2!H>ZjFPwym>} zV%SmdUNh%)TW7aXC{c=AnYS9;38%O}IU|A%U>_B%ZX<^!%W``P^ze8&&AaS)7~E7T zTHDy{bZ;3?1muuUA1^&?slC=s{3`zd#OJ8(TYX7VuBsz~Sl_Kt_IA{aH~Kco4o*AP zYcfT2*f`^g%2j!$&Z;!rV;3#RWVu`r&D*9bkC+rYw?^bwI)svPI;PXp$db}U`Iww{ z`qc~T+?h6$x26Yr?59dqF&Aev>nKoBTd}Ymsl2H?b?a8`l#8|Co-$ba`d37g=XYn3 z%Hs4o`&i2;C4IT?TF+=?LAYbN#d)&#C3Dh?ZZ;#E%ZWgKwZ!U|@uN$Y3I{{$RYo$D zm5i|#jTJ7Z8TNo@lW`}Ul6%uu^zS8@YzK^*_ovG}5$0ADu?vh|7NUK0e>(uXx`&U${Maae#IoG|pWv*DD&PNpkUq3N|bK4!OiNQ)%MwO~L$Cwr5dsHRM z9ASy?L}>nD#!B|9NnNhTOzLyNCD74OO}GRclis72!5TI$0rkytManX`SxOpoDn)9j z%yE(1HBRwEkh%FWgI#Z#)=l&@RFk5U>T@?X#ihUi(N#*VnB6r}hNsVsrVXK#9y*M5sgl)vrN{?q z<24l}DNjOul7w!{@RbtdkXQAt%S$TE6tEtIb+0zOT7;S!pC+j7V<+WhImJ%{O!AUR zAa*tJbyS*XkzTx&UQ~1tMq`A#9Jg~>`jp5ZVd^_~ua}x`T+g}c)S8SnJgZijx5&YR z5Nm|Ge3DKJ5ziIw;Hf*g9263in{3L8LXrIbryN$DrSVm5*~e=1aV@#)(Dtp$m4;8K z0TFVd|`M zH@6G4^&sN67U{Z{&$VC2thYS4HyO7UQWrjT(?`4ICb#UOQIJ?>oTTAS-N!@slX7MA zYMXGt6YJ|qZxV~Lq=LX^y#9Gg?Cj*U(|a8RGAf^A)KW@y7$eL2RBvc{= z=bTjwqTn8KJC5eFjJ@l!B}!E3a~Ou<*5_$F3g5N4a~R3SIj?T5IJl`JnuS?&w;gQgK*K@_%7q+Jlu#{!Y_a%^@z~2?=6-_^#|E+lz&@Jp4-Mlbg`Yjxf@zsUgR`bb4Le z$Et*L#}(_&GN~VC)~Or{QjfhC)b(pLOPfsO5@{~u5!(=R&qH4)@4~I0L+ENsQl_dm zszqp6M`yhC>+e)=Z=J002hEb^ne;G)br_`jqm!LUxGY;e>u%0Sj0I&QIR`bQ z(^Qj3H8i7BZOt#T+DL(msUf*FscWfQLkpuwpbputc}}HTT&*6QFzSt8X|>4T#8wd_ zA21V+0IoM%@invDk1j=ga4>q-_-q|{RkKIjF~L0zQq;U* zE$-JXwL;?qrF-zpWeUF4o-fwo>9{0hFN)_yF{_=p&1KwpfU=fZv5;GitSi14B?^vF zTbxp@H%%t?GoM$Tj#^U6dK~noKC2;2i3tbZy()BCW=?n9YU*z*3`kUD=N;-PE~eYC zeC3Ww&2FgZW}CL9ciwlBNhIePsQj6BfD03jGIQFrQFlwBjP-gwiD80Z!MwxGTUe$y zAbE{}*U;9`Nw77Sl;WfRU4oo;a(6OhSQ?03h|O`P_CU z(Nb3~C74h!nK=WBo$O-{MgS!C?^(&dW#$UkBwICE0AafVr#8SiQ_gzUt)`JXL0ptu zk1dy}%{W4eM&X7%C~dHPNeoJII4z7+O$Q{N^*gIDTE^^&t(A`_r#yG281^q9^Ndwp z+?#A6jZ5T#oaU^@DcpAe7Ozl~M5{6rz&SN>7&K>b!6T1)&RUB5BZ={CubHDrcVWW< z81x+04YbX1qhVxLk$7x$2Ch2M^km95s-#!7ks(JmH=$W9r##a6QSh`LEGr>^Kaz&2(w*kR3fkZJ?U$Zh;}u4<2xcV_BWfkyuTP)3Ex zd~wZqM~-fM$mVr9$fA>Orlw7ECVYkBsaRgj7y>_sj8~rd#czQ*$o?$;mG3QFY934z zokw%r{2{6N-X2?7CS!#A-{V|&i*CfT&Cc}-K?A6-oUJ6Wa@TX(r7n6NhtF@R8!cM$ zD9MPj?F?Ap`_v2KTgyd0O~D60F&t-__oU+EdYZP8<;HT>Q0_x@lZ{vP_KSal0pq=7tg9-PJNDh?<8ymZnMZQIc6&X2#-k?MY?g$dgb}=J{?2JF|?{ zP^ZgU(t8dSp&0wyA8&jU_}68nYBpBd!!-I<^)lO*&fq$Xc0Tp=Ux>eGdwV|@-raa! z>RSsLGvp+$9hF#p#`WX9eC~0U&RDK^=@zeVGrt9mjA%M-`_S9bpCI_p#!zb-oz3IU z4&q2sd*`iqrmd>N`?D&6*R6NqV>(onS43r2am7{ViOs&FZrR;3j1QNZh~C2Ls$|P; z$RPC9ae>o6O3L_`t$2UK{{RCY z!O^T*hORCI_jly0c|&dlXh+wdabE{kwOCFVccZ#@K8`f$-|H0J;?qrepPU{kk~uHt zm0xm`^6~lCmCOmak=6cO^e3%;ff};*Zv9V|g*2+S6E&n`G1&OQp{8MT%Vc8*6~v~b z?DsplCmqSmiqVG74mbv@FV0klAm@;3pxkH7_8g$Oxw@SOp3Hy}-+SJ+z$&DZxpQ0< zC(TpcHhRIUY+&k18#=IT9CM22oRpU!pS#8db>W<4bk?COX(VY|oW`jjE0dmk){mA} zKypS+bItP0K)+JR4W0?(zpY1dNwi?Vm)q3T)t@asWVISjS4SN+{MPfxp~gV2XH(Rs zme7eM45z(v#+s`bN>6P?8ndSd4USjs8C~13#PWTqhU9EJj_i&NcP5*5+~I?bM()Vk z^fWsaM+YF{m~ICCK_Bf8TFP|4d8;~fj=jv=xrtT`cVu;}re)kYJRXL+S2SXRX)c=@ zmRANjx92%ME4O_q9`q^0M$DxfmIceYZr|_qt5Mw%g=Zmqnu)mEnFOUIu7~-` zer?2az%?nk^2mJd&p|~ucYdrQ`Qn=DOfOvSEOx2%?^YJ*y0Ih-oB|Itl1f)>nMyp| zuX1?q*`I=286vK&?){|mk9w&ztdUV^-o@DU2NAdo2x`%bQREhKa5~gJSf<&|o91ow zFGs7ec2fBO{KBo<>Ly)7{bqf=YN_m``lCg6XR=19yto$3Vvlg=Ada<8E9=e08r19` ztv*#L-AL%0l3wXM-OAFjHluFdMk*tJ0f`n{a*fHz_4lnK8EIxj`DJF&V%t(3Lv1Bo<@I??i8A&2IkDdM!dVl|+&= zDdd1^P1W<*j~EG6#gfo3bTXX{pCz1=VY{%)WHS+?N|B4n=g zdYh2yYxZ&reA&n%wxHEYLX*Cw@M)m$$P_o%XZbtX?kM&DK?x0k~K(ALeqtfd<#c6$5Lj8aV$ zld+>7vAQA72OVol4P$rlat9eTJfyUn)X+^-0kA&doRgZL`&|GZK6BVpZE}L{RBc>H z4jhkT#X%;r+W}_!;=i&rCz|$cHgH`=aC1>K{<7{(H)=Yb^`RX2 zUfAa+2RwV$y<;zlo6`Oo7~OME2O~MnK}q|;MFoL41d~`=j;$15x<(A=sRyNN2=mD2 ztv*P3mhEml-8Cj(m>SSl+_|D^(q?pJ?xc9{#MxRo3FMD2Kc##%;>*p~uOM*@xOVTH&0sCv({Gtm&X<7PA$Op6kj#XxOIRBGJM&|=C3xm za+_rQeQCih7@J>tG+OvFVc#uU*4pB+Ae^y1b6P0b-5l-myB_oKzUE8KLL%po*x+^M zzO+OiW<_p6TH7^TxQO~Ahb)_)wSHvSg$OFcIpk7#k)*8Iz#_bkX7@d|k_RwN$RPUF zR<$LD$0`BrYNIx^VsXC1<7t*%uEl`w>sryye3Q8J{c7cFTw3)Rb9Si_$IM9UUMKN7 z^BxVkkdct5AC*l6-X;&s!w}NLPtl(RU26*k@rpSKL}EW$opt5%xsx3`*VATDO1b9c z_E<==!fT`)2@dRW^zTeM@!Or>hHJ&;PF6hzm$cLdxZg3~pT?1O(#}TU2VPILHk#Di zNbX4b@`WVGG3;rhT>uvil6~tgM)xwQ4R;Ui_AU4M1CyTg9eXhnBn_UYHEmgFIBKp! zy7~_>o>7oMz(3BO-XYzz6VI+{d1T$$3Di=NSond|urh^GbHSuv5eA#)ez`qsPE~7% zGjHDLBkSoP1I-)9Tz9Dd0O26}*^@lfD7)F0B-E~kop2e65B27vms;S+TPN7nsNYfZ z-CSa8WGDK zZB1U}hL9hr>t5~f_fSbDoOzv8agMpJ%CG&MlH&cWT0OQ4v9xYEHRv7_xX*~71ob$s zN-NxDVjjn>cRsXM2W9W6jjg=tq?sT>?589SxU3yJ#0XJU-*+8zUDV*GMfW_4&QY(- zbcw54I)Y^jk<`=|TJ4kyaW9zO)y}EOyB#kQlDW%jJ~WCoVG{-S?_7fG*EhO}k|r`^ zxHak0p=h?x9zs*ddHv@J&A?-}2f$0s$h;&}|754b0gab6}ODm78`6t6fo{Ljk& z0E!G#;wGT#09hHgu^mo$uQ%}B)r_7lL46~AmpGTpKQ=4qv8{W1z4=k+VJ@(dzxAp1 zj*sx8;g+-D*fkv|#CK!l2IVDI4GSLJHVCTH{1nkAR&6`ScH_3$SA-|mf=^ocx_P3K zYH`&b%<%KJ`ZJt=fc`9sBmJGN+IWgZV2scJn~$yzD}vX23*%o7YAqI_q|VQ@=L?1P z&V4J{zuVo*d-bSJyjbPrRRZhIB24pNq#!2MV$~H{W>6y10=gQ6I@;&Pk<6m45Tw?~WSw3Eb z&CN+z!MgDYD#v&v^yj5u&#p6p^Yl45H0GRRWG2@(re)5$0~cm2M>rkojGEDS2;2~l z_On@gsVIY=EN#@wlU8FKn;R@W`qw*idvP*9m-9&2J8_d%sdGIEgXPtgUOi%26;+H8 zlga6yZ`PD}Us1i8P{|{>A2!_N*Gw>~GfpwR%t7VFkIl=2(Y4WX1 zRG%w?D7EWjmL z(64;+sE6+xCDn14Ery3U$ZT=Xy;$?Wh!e@jHKd`;xlzvvG~Afg zVUzQ4dQ^Em+nUA3cC*;&_+xZAuvdee)7mv@8)jPvJF9p!;F(%WQh3r*<7oMbty^g) zN7@T+13#r(ywg*AoKkKLzUN12s7!}=b|2mu>s@u8xXS=XB=^p13E`9yO=@iljw_m5 zodg=x6De2w-skhH@-3{erwRt#_04BGZZS;sBT_T7T}tNEWHfEO1CR%5mOG1^c2EIc zdUmO=P7{jdTAqzM&YYEvNVRX>x7rvn>(aIs_Riu21;V!-Pg7oHN(v16{5CR_E zSn}g(e()#Q)REhdHOT~ywardyS32Ax=H!^?fp&+$_W)ET-W)#V44=w~-Y{Y%0A zt}KzpHUKhl--@p`j~ttUjC-6_MsxOeiG@lrlD|@e_;%IfCP6+v9%`9n=tC_G1V;;5b;jzBfq+=zy@;Lmh z)5FTDdlhT|=Rg?0Cncl##~z*QyVI`>D!2rKc{SUKr>jW$+A-ytZ&cCU>6iAiTK$sw z5?CY{bzlkn3F%!6d?)a3zcWo|tIK2 z!Pc`$X13K}nlQV7PNVZ3Ysl|>7jYbnUh9Q90FS*|{{U%WtGmWFxzij4c*4?>yE)7K z0U$|Tro#b%0Oa#nfqbXP`e)Xz4b*;zEa*B?<&(QdQ>ALH2uOj(2XkGOzOm+8c`Tv1 z$o{pi6;sR(?n(KBb&<5>x=2^J0P$Ul_}=B16FC?{Fb!^~!BG9Yew$vjdoi0>T( z37;LZ=bYE8hf1ZCVsd-R{LFOv-mV~4Rgsi|^D2{y=i9`0YjrBQm2gg7iN<{^(62%? zY4gK!Av#!zY0%1l5=v*mxZLZ{Cy~Wdm&8-b>P)+te)kpTa@44~rLnT3ICDj4w<(=w zSrxZPMh;F-YDCm#nO#JpP)7rxtEN(B+{~s-f^(X# zP?T-wI6QOKyqQ&$+qu^1MlopY zJ^seQVCdH)OhNhBqH zRy}jpyAzYAcJ?%ql1ZJmnT3WUyEr+n^3LIRpk@I<;36L?s239AM)W=X zt7yxTGICnnnNx3;-4WEs;wUUEqK9ism%~UKf&NWtKCy9e3{t}7QMm)Lsf|0yN_#S$ zOD9gA=-6FG$u#)h;rz)|?jsq+Y{}wi;ek*mospcW;Bi=T%5L6ba*Yaidb3AO)fKfE zZntf9A+S#wt(&cA%dLFPxDk_s(uBWxchL=}?3=#s=8RgB3}x!t>It;u^VdGLO7_s* zORFW0^%_Hyk&LO$N^Vf{TeU{1-I^_nG2E<=l0X39W}ed^dsl$b zE@Pd;sadqlV;_mC&!x+gweU#bis_8w)RzX<dRf=TLW#iU2h3C~(37&Ka`B%GN6yJaH*vT9L!bA#6$`qmP|vsF=E<38Q{ z%;bUJ-jv-28;?(V!O@gUb?#A;RC0b$4tcD}LYXi}6{jt>8LPWy(a+N+cLK40`%iceS}cyDo9TBzL5v2>d|hEzuKM7TwDN zPEA&qO=BQ@pL|n;Pj9>xjTkvX9MBACjRT=AEbxJC7)2Z1C()g})F!-Kijdsi!XR-FH zQ~0OMvN6rnj->u|<?#tAI`mROfI@CQ%lT;owej*Opz_|gJZBtNnNJU8e^c3>CG3l@mqi_0y+w19Q4euhQc~wh^dBpVl$l^1mM1)% zcC0x>lWG9q7{JKmoc{ov*M1p0xwFs3K3-E&4Z%Y9HLq-jXo2~Vo@u%goSfK{oUJ3N zx83Cq?V8ySA-5;E>s%Em-t6k9TG}I!)$Zg;4(8<733ujAGcjz8#02?!8l@|&a0Nr2rv&w<7|QBM=55JHy{F2+0)Fx2p5nULE(0Q~u{`zltZREn z)#f@V)02kgs$Qfvj6nwjtx||B)}!;Cz?{}GRTO15bUI$rQKq)Jqj_y^ESPNtw)OO` z9$Qi87VHjwwaY^hB?rx^*NUSLXrm5>O~&HeQ>Z-E80}|kwk?voxFq$jUYm>}=Fb+R zbCZHw9V9m4V;i~8t!i6X@6N^Vn)2Z{tL}HgobIA5kR)!xL!1+gR%O)rEgIwu_wQ2= zdEcR|q3me+qP&cW5ia-}dsYj`qBmR;H)oU9yD86_Hj$@0(mq8dVYHL{U1}#JE(hUK z-KMXx6Q3-3A~HvI9G{!(Oo+L1t(+dFyH_NYk;}~}{6_t;Vym8&wG2i{!f;4A2E4gN zL0$AaAhOI2&g^(=T_#a-r#qN| zo;jl>BO92H#*!qx5$!}xpM{fxb~XOm8A$|SbUw8Q+k(rU=dF2hPvJc&$@Mhgyo7hV$u`j{%3Q>sY1(o*6p{fj1au;>l(}8SI<2jCB5fxt<|y28nwC2@LC$*gu8KIW zW|L-8hcC?7w6{?<<{8IIwR-CcD-ON!T^DsKt20#<>>EUI-T8xVYBF3+yF3$DJ0)k- z#q%3G^NcWp0zpEPAKKYl+a(W zWGd=Eh+{Ra9guhPhYjmq&3r|qr30T2N!0z*^*YTXP!P%^c?L6#XQgl6-P_4(2$f0a zp|2LSW%Z70ZhDkbag-!u{{U*(CA&stt>2mE`GlV1H5{6Bvb#AOTd&r=I8K~(vBsfUS+bnk9P$mv zxxh7CczW$E*oI=c<0m}gx}#p4pGe|IrBLTIOTK4rFF)o zG|W^g!QJXO=r>_Gk8=0oqZ&-2Pbs4-v;x47U;hAAIJjInWS!qp$48M4@Ci}LIH_XO zB$6$~P7f+^jM8mbty^fj9+J(HRQ3Go+UblGhC(sYvy--{YC1Ai(t^eVDN)f0@0zbNSQx$Vq|qZ_RTA>B!=n_2Ch223XIcQ zh|U2m!31O7a$MF!UP3n$frG&YtF)gkSneIDX-Qm!+mQ#Dcb<6^ z#<*OK&w|~vNjtPv)40)a%@P9GBCSJms+_(^>CFvjQ}<(`ldRkctmF@Zq;v1Zd99A1 zwuyHVw!^rLW3GGCr=%o|>a@8fexod|OT3cG-ynQs_pO-q3u4ZZHzB#^obM@FY*bu+ zCdrgYCG#dH%O@byq}5~lYQb*7Bw^Fn-ky~-MI{)v*;+R?w^tL~lQ)=nRyhOdSFJVp zmA3LQc*QimqxX6lw3d?Horag)TYRd>=}RvD*5MEo@M_*1Xkl z&$JG54S4?miuGldIdILnPhH#*Sw~%ne9)2ecZnul@<`J&voSpO73DWmx7za=C)+jc zC&^{zd9<5VIiz|Ygf%}dFos6XJF(48;ybpIDV;Wl#xPG>`Mg?RTe>}}5njck=I;_b zkZTU^LXvp*u69e3!K5s6*b`pUo$#?onMprt;+L6?CDN5U&Kz~(uqQ2&LvhzQu615; zS~IRx`Lsqo%do4UR6Zg+h5W?kvS#I`x1{4 zy36uN+*baZ;)~cWJjmo5fE?zY8Wya)^f@`FIw>Z71K@v*`nQL7$!mJ{?D6?oNe)?k z4PMp$C*NwSX1KZen>&=8=8SG%6#^TPuQG01 zqF?w)BQdKk(~;LSCy1hUUz{uFwP_E6*VO59jH0~G-$uTUXu&xk^(5yt)hzf_#@&HLa>KlpiZzk`(jEc^x`(1{cPU!P3W>*q1&wonft{*mJm%tqL>qKLC zCD7%m3HwKPq0ObtfV(Id>B!9>l-ot#x!vHyBoX{mCa7e6@ z(_PKvl%0z6F~e@nu6=8f-|H!}*MjzxZ2BH0;u**9o2KK&Pg?V9*;KLGahmra`{;R6_{`8{GGPIe zKAe+Y>){`RUL^58mj(5zu(V;91YrF|apG#j4?$I^^tsi8!cQ3|NG0)f+I3!rhM(ZS z2HHdC-ATQ&cPMYr)|1|NGf%XYEwqSb`EWP3aD8jf#$vIxWy>8G^{ML7!(~`V^GS0^ z@~;qTP+Uw|B90I^`4<)Emoh?bU7Aep?b^LOE0sEY*SlxRW)r76?Y#_{t|R$~=sBvb zd@`giPB|X6>vGNdo+mnlUC~-gxeKue2d)i6=g8+E;1So>w3H(V$5WL`&hKlLU8Za< zH(=!Z(jPQQg1qJ4Vl8MN65+TM{MlAd|s81}ehbnH@=Co}WtA3B`^MF!y3uHz0AG zoYk1+54(0r>DIZT=IXY}QA<`4-2lv>l*g&-Q>D}SxmOzq=z9Cr)Y0e`R&5ueyaXJ- z{{UX5d*H2t{e2BbDs84j?BuLOnu?pP%uhWz>s>aPIcW==gVS|-FjkJ&(0uXx&XHuh zm@`|+y8xVKrBi>Am(S~5_oE+mEqa>4&DfDHH3K|~30`cDM0|896`1GuE^s)LHz_ zSw~D~tyG`9TpDS!MlC>yhS@%DwX1EYulM@(8S7cM%9|nFo=fG*VaNnz^H!qNP_Q6; zJePI>|lN)?*0?wc)*X+Q_eC9&&II@3uL z5hmOKe)lJyl@8KITC2qnNv_Id=1>VaKJ^Tm+qOeL%tkYs+DRmn+)1>BU1uaQlzR26 zkZS-bJIGRV*Vd|Bsv=RetV{j4{DArIoYR+BB3STp3uTYiu9R-o$-gXa&wBWCtE9~C zToxm@Kb?IOquu$k#&>6$iALC_O*Z9)yYoJj@Z0b3eW~5JjOMp1j$a!(DCdt!q0L7+6 zDFNCu)E;XN#vAQ#RM`Pwfxmen918BEO;U@Tj(OB|rDS@woub)kscx)aXyl&tVR+4X z6P4uTdk~K*itKn_#aonFrun#4$K#6lAH|p7@iCc1n}{bh>`_VOvcGhBG1oJfqCR@p zwHYGRTyFzCDy^=z%7{F`d*?jYoZg9dJy$pFWfp72ula}Ne39Qg5mwKL0ElKzeF3c> zH!3PEN;hS=wd^=0!CvP))~%kf8bE?lxo!@9YkVu_ou%C8sjWMs?Ee6O!|gHx%+ej> zEPC~?vu>cxoO>Sx4)uBOyN-(TN1Ky-)GA4JlQK4#-*k*kE5Dx~1mivH!*1^9(e%_J zRzPyt9rH~y%M_UhdLMeLsWNs&$nFHB;2e|ORnm>+u^gI*c&jpu%da<<)CJiY$eBjd{*VUMTHsZKH zoqbko1sqyk&oeE5?2vuYr5}h3F&pqlUTRaVWmo6i0pREP*M_3EN4F;QeMp;Ieh8B! z_4cIx+xakL%YAy%a#l!9b8c2`Xpy+eP%CGX_qhK6>(s+u$YLeV22B%^c4&sBrH20i zZwS?gm_Z}z`im$>sF?e zwK^p$M(lHIN?{<$oSuE@M!UTUB&b&4)pIGOHcGse%`07RH-SqA&t7ZkKZbg_mK2p6 zY3YU@m37;AbgXm6qLpc~EPn(sU{s(E_MFT3VP2d`S?!>8<>#fzGSu6+!S zB!MIy9YYVsom{7Ub`O5_%_x ziDPyo@!q(<8Q(3Bh9!~M?TvS~I|1Ilb@NW7Q{Ly%xhPYc?3wvR@k3KLJ}sJbml3gM z9QDcKzJ5;-G&;i(a214~FvnkN`rLKCvBcg~NQq8QqN6gA64;X*+7pnPQsdie|(=6?FxXcHWgB?jJYiMQy|JyIP7^ z_Fv3ODFFGI3!d0D$2_$s%^i)YV<&qRwLgk_UbA5@{3IG`Y7#y$@gm0}{zIR}yqjIr z^oyIRWv~LuGBf48n~r|C?^Q-M=r*%3m8!I@W#OykNR$)>Uvi z5NmYbwb04I^7B26*YPyJXjCK>9ZqT)JVO3(W_)L;?rW`CS)829nUTxlA&uLJ&thte z_=unkPT|mVLu&W#Zsi+X&$#g(<;ZcB>N8kVc!N9GILSFVG;0{@V&>GZ(8jsf{!ql{ zC#W@#H;5QHA&%qJ6Ii>=?hPq5Cd`|!5IK~vasr$VY4*3b7k4qNauy|rTJ#}CH6)d{ zF|R1NyY77v;9rA!zm0U?wc5-eSjaMfGF%$Nu5Q>r-P+8@KTK869YT%h z^6HFm_*(Vps)^{&K+^sK=oad)J(;=rK4xdmIpA^+t$G%X@O#4+w}xi33YgA89l7U< z^D1Vur%j~KYMu%*Z<*gy(d>K|V;!09j;McYa@qY;jz_o!O(Un!Xvdt>G2tqn@rnW({P{Yv?#5K*7VmA1sEaT{a7p&9xFCt2X;4WWYZ=M%D{f;s zDx9)9TTL3);tUi8ha)33rhGK50~m?P=bGz{X}I#p-c+UR-z(Iv`YqMF0kNB&2o)fP z?FzH*0C8O$vXwVcYh#y|af69|3&~NDUpq<3^{sfX<0#E2-II)0nJCMboo@CzAzDqV zkCr%YNb=YQCkGvBDXgcDY>}Pa1~Xcv&2Dw-cg9zDlO|icyL2q%t9$mXs60TTKi-_@ z&~>jN;O|$Tx$j}K4oNO|r&D&{Qn!@#>U-9ds|>KP&N0Zxdh_b1NnM{$397X2wjfw? zfT=m|dsULVqYI3-I@W&C@~b1YrEXQ&tk4HiSneK_-zj%|ql44hwy7yv-4>*|*(;*G z#94+zw-aNLfpWfRKGns{kK+oR3&x5elOB|+eN*QQ$p z`y!O*aPDj9YfkgObMqPs*XARV@>_Wqk{3O>u8zyZ^V%@Pt*{O-YlXqoi@v3)NmXpM zH;rzjQd#o9?HuO3>sHrZTbW!OG30Z_V6ae%a#}N@Sef$jws9JUr6kR?jJ9){#`6rL zarEcjw@OfHr?C;7r0%vRhaPC%!)HBfdeZTY%wu*)_peG7V=KZ(nTU<|J+nc&&YXc< z0tQWW@Lw{v8Jfo{=Iriv|&e@o{egAR)l3WPD^v@ zOAib9SHikHc3Pt)>!a_?^5=TDCy`z~@k_w^UYloiaihr=q%PD=ZzL>n7DhrII*v16 zEU~rm72A3yddmri!&6b+rGGQ$9WKnz;y56<<-&aNmqx>PU z)AaZ?5LIP};^qyTcITl4^*QP*n-QCPSS1ZPv>hxHt5)?MiGAmtd{oh5u&~nJ-$`2t znh=71@-}|;cRv7r3opf8d8~fb3{4ylCB)LU&=m(b9nWAZk>lZl!uwe}?{iADYSgJ3 zRHJQGy$(zEs`xAa018{hIz`2{rga@VQHY4+ShhO1UPgbde0L_I{39Qjo zRakwcbJeX$(3d9csxPG8_@l6t=9n(LQ=?_?n7 zoYqB>m%3Rok=T0G)RTofo$0GuM_X?q#~wh#1N`fH+T{6o-_9#KUi0N<9Jig$<4V<( zB8|k!o=0p}rN*}qxwuhflN!=ciWvt5`O_KBRACmlJhB^2W1hTNQ@&Y}%?ZBXZ*T-DXr0VK0el1 znYsGZ!%<+tvNQbXv9w<{gv+RsGrPZ9oL!6tEs|;V)TY{65BpFgobj4^+$)Tq!``aJ zT{KM6MsN=w)|{JjjtxS(S0>%Z6h=A5M{`g#D0g~hi?)Ze8f~JHLEFwc)oEA zpmGTrs1A(8hHgnUT-u4nw`+}UB%I}O?TUcuYNrHdp-YzS6yfh&uO^wefwPi&;;O!w zLFvfrO-oyiK5a<8!}9`H1Fc0hn;9?x%U+#D;ykSH2E||trf_OS$wc3+MLl~k_JvQ(z9{BnBy*Jhmsg_a!o@m zsMg@1OtkCL>z_M02LM@KK7(iSp|`a8-c1aY3aSNyNTzKLW)L> zq^?kxO&f8JdiqsX(^SYqV;JjOJ#Nh0mgRG#Mk8~Kxja=fq#%^C$B7T#;;`1`Ep%jZ zX_+JB$mC-kYK)plXC$Z}FHBa^m6K#RZc&p-Lf9*j)KxijT*$kDIpsjAk1N%g#x{+j z38fXzRO8>RMKzn9-~vJ5gWj-eH#WSMg+__d31UGN&)(h56b>D-2RJk+MZYmOZ+Pd{ zMw;s&<+pQ_UZ3H(ab%`UmK=juh=02DIqApWM_&w)$*4ybNZfIn_X~@dZM-pPs=zsj zXX{@rjHca6QGHqTIC`GWjOA@iTN_C)?%Nq8jMmJ48j?GL%!k*3)Yqdp@+&lQrro4k zdlrB(WIpE=%}X(pQ7jHX;2QHGNvCtutBJie6kN_%8Ob#?c7Gux=OVFAOWiS>_OIUP zX;|s)CD%NT)zrnM9e^T|bLm~O(rP^tIn(8fZ0c-uL*#~Z!Rj+sFYV*D)7#|%kF9u> zChAL-9hi9X!tZu?{686yuAJ0qrrFCh+@C7k(zS@jc9!IHt%!>R1hxqk$6BT4&Ew6Ae;HLR+=U|^!7B`4QWrtme$O~CVACB5oFV8xq~I@dKw$}oyYWf|U5 zsB<@(iED?;WM@2gtf6-AC@qbk^InuFa?@+6*^_H4y`U`&iK)c7rJX&*sM;gft9YB*W?@u@-Y>iNb;R( zP0237s7wX7UUAaAw^z73-GgN0o@?iD?YhqA4lZ2sZ1X)OENLA4p`LG-oSNR! zEaaBqNK(hS#eH@jqo)|@@gF5!uWGxV=i%5~TBvBYV*~5&UazK3U@FHW99Jb+H&)5q z`Z{%C6|U&)MydOtI+6xWH|@(L+{gg$T2rLc=1BA^SA@4FG65Ft!vt1E%Ph)4 zhV-ruSMejFKi+0Z)LmGv?6+*1(t}xGpu&7QU5#;>!UyRoSzt=P8}vZ8J)&0*^NMq7{Y zuUdsx>Z_e8FJ{q!4c5s2fh%tDx#$HrVr%l`4vN zItB4XYU_F3|<}{{Mo^3z9@<3c2j~6UtHEg zc(z@?D-alSpW&~i!r)w}T1S&Sa)n-aD+BnNPdj*X!N@9k&1gsBDW}4j7`qMJn)RvR z*R#C$N0U<(?JGG)s6E}>gtBFi)}fK_O}RT6k5h{2jvkz3V)>f7Mt#%WtS11L10u8A zP`XPp8BYHI?_#=RMl(pwN@@GcKud}8yN+BBn;p(6(cWB{_OT)HkUd3oDr(^>p6;fB zy_HxgED5Vis_ZHq$YaJknoA9Jbd23kc`KJz?*tPg9G-;L^txs|F<^RgLZQp8j>S`( zOPY{K&77LIZcK;<-2Fvi%M`92(q@809015T^c`x*w~GXMN=pt&T+ti2>(tS-m55hO zP0xfJ`cj=XBOn_A$F)+@Rx@_E@ux%(kiF?v#Q?!v(J4uhve1-TqQ(bMIT;-(!qf)e zk(#9Xuy;h_5xkw*H8QS8-TKhCyC=+-%Sqj9C9WGkpK zcWvKFMbye?aRpfLeK@UkPQyvtQnmi3rpy0)P`uDft!lRNW|VOL7t(WkYH zaS6Dm*`p6lzSRENC|Ts1E#U2TqT^MzwvH)8*|^6m-A|=)@~FXb?#_idP2O80F|~WSb!eoxn2Sz@ zef?^_sp1Vj3z*j0a^;82I(Mxaahy~>W4v0FrdqP`D+{Q0$&Y;3q*{2b7AW$@R`Skr zam^};tsg@KpEF7BHt)p>*5n30VII9}&h_17O$4cuo46-~#Y7>>)rToJr&GlB>!u;g z%s?Ob@b|Adyt)eKV-Vh|de?KDXB*q8lpx$&mgcsJsx)_TpkP>Vz@BTV)UQmocqBIJ z^6_-zDXAUw#r3-N#aeLRKRc19Fe6ldK4;DUPoHE@%3`8ynHKkZM@jzQ6}pRG}v zHj)MmkEr9&w82hdQaghRzaq%7RO*N@Ee7yIV%b&atxUAjzj+UFX`VJEo0YDo-zF&Y)+MjPC$(Ty4pgNjb;>V-?!2pxK7An`!8DJ`>WewSO2{ zTU+5}dDT=hOiNzhi3B@H90uWYe!NlOURWoj5gwu`z9>xumJoe)o}5T@zs}InQJ3S+ZLYG5`z*G`+NCCa>gRlq1tpldOo$ z$0VMWADMC(FeQ27w2I|-XDvrK%HurweD9d<9uZ6-hz6M}2$&k%eW9um?mvQ_7~ zwMp13?%Ta`2eH8w=v2i=4NeN*7KY0X>p3|6l$qsc!jr>r0#5$`DCkXCT?Xx#6?Ssn zNHk7VrrfMdVNx<~`<=#z;hQwme7o7@mSUL_060GN#Q2*)7+-X>zv&x-t?t1a+$bNep;(A&0Me^(V^;e6eR0HOnV(N!&A%$0wny zD}3>y=jI2cadUe`XuA!{$=`D5zBor2CmCT^(@{r^lKW3jt!||!6t@&=b2}}|a9;pH zS0odf*Ih)6;q%30)4I8}HyK5~#rW^R<(uaE^{oWdK5T~upV_l7Xsecf+zMpL*ReHX zJxqy0mdVEyXqAP^o~6I-C)zOhIqEvrg}$iFM49=B#&g!HEopN7)jOk6H8(C;$%XID zUtLf!^OUPf%Z!dQT1!h&glD3 zQgd2x>kg4%zFQgNy;PgzzjC1_r)SW(o*-Z|=7LE4t3nNM26EDFk7+%5C$&U$S2ErC zhvIr0vh8P1h-$8`S{@=+Q?!mc9My<*wcMo1kly`sRSC^W za-lZo7JUKm+gC?Smm>!rmGuvX^<@_dH~w|4zuNWcL@f*#-hE%-T|q9qHum6x(VhKz z=DUjEsJUu1%`mg)pqN$;wV^|-#G9sTX_Wl3pvnBH)2QjqOR;t7ds=*_4>y5z$km<= zPTuLeAwq=yImL1su9f182=`p+vY5f$xZ zBu0h+!}p9a$5USQV`B!Lr!BR*?Lo;u-afU*jHs{46SFR&)H&z5W!MGe(;e0*9#=S3 zB}^nzDLde zFw|N*!s>IA$?sfD8u3s@{MU_2^QCjzsb`3iWyp2c2uPEUO1u5K8C8Z%gn@xu&Qg1r zyC#ukHT+6LNuCZst$j0ES?^487AP=tjQ6i&FG{8+HtvioD^t2ZPCsUkGF?4dMlQw2 zBzoq)(Yt3*o`R=|QdzrRNb<4<{-rkm0G>uIszvKBB&5{3q3Gak5;K z3xW?LjMMEH%atqB)|`G8OM0V8Kv(KBT2}Igje#{1);BDne7jNIToaC!^54hXsUi3| zJiGp5Ib8a2U3d*~wEa=#W?En>zb1Y|c!OK}H;O03#z>vcz@s4#etxx1+r%srK4v-V zUsszbtWUmq*-D?(;mm5muDdSdDCvXmRtJb3K^u==d9R%2<&&}Pr>kP05R$|*j(QCA zs1Cm%axwr1uX@VsQ&=BS=E%kQ^6H_C36|RStrzg_S>{#GW|UdG#zn~9o|pYvW>Jxu#;-+jO%-X zmy;@b9PvzjX}-|-mjt&o+fK=JCy_6Cu^(B@$tFK_JVJJ;ExXWz zLyMM@F{=HXFW7Qx=W)cPhoPihc)MgucLUQks*{RWS{B}lNZr%5z4I<*-ovM^E9+l{ z`k?y?Ic@A$wRGaA{=}WSoRs3Bie9%qhqBZNi~{`iuAfZT5)DNIOSPHs4tmykYWA>k z>P}}L-1|<))P4}w((_A8S!Dg@GKW2VtGBKSk>#5^aMS0am{D0BWh?zU%T%)aKA~)v zQ3H^!GlNyF^i4L-Ah2610qs`m%|n*@8GAT6^R=m^@}zq~0Y^bpZZ#MqeSx>jj)J+9 z=5|HOR#!6&jIqggI{|^7PfGcV<8O{3vhbDEOF0hz04~saj{g9zE3XAj*2cjujPo(| z9V`U<%k@7m{9~;ftILM-nTs~yPe3|izI)X*Q4X~z^Ks63J#${(I-~mh^xOQ6VGdjs zIQbLUc%9Wg`Cnpdql?9|@*aHq=D8`kLsz-MIy~PZ>iD)`P>Dt}>(-e5E}312+IG1; zMRrw^5g;Js^YyAy_@(6s%$bQD$?INaSUD@nY(kvdyWGxi z5=yrbm~Jw^#gob6tIgsd*<&VLoSthaN0;AcsHFK+dX;3?aP9l))ZR)};p5Sj^j;9QGBJbF9c$48!ks zHByt&4J6}ZD&t&WgZG=W-#sdg#<)!E-ey~G0QaQ}ZplziF58*1YUROQ!zA;X>ij>c zFusHtI3zYJ)5BDUI&wUk>H9X>`hV~n#af`EJX>;i?(x->Z>2tG|)c!o_7E%~iC>J2GM&~}H8uN`?_KkHf z6{PB@R|EtY5k={^?s~-rb)r2LXquuPoL+HR=-l z$$s*$Ab`Z@y?qTVnw>g(Y<&Gp*AZ5w*Hhp?_ziuubQIjS;|^!dz`9G zsXdOHO7Q*7)L^>jIpZC>*H;&ZB8noco1C7)xp8=#O(-8vh0CKmPOjE3E`e_Ff2#zJ zymkKoIjEn)HqruGGIG`A!xuK1d+K^I%jn5!v?6Z@+czFw2|UwZ!4|tfXnG8a)nY2y zT+{nE4;fxa&6B|vubuId$I_~=ff9FRi3*%?p7pE7PnX_X9Fxi#k1}={FMuD(e=LzF z7(Ht$Z->|7J?ebTr=8prTC8O^6Pl(~SC-LtF=X&%@NMfE<&Jk$5_m^cC6yw{3&uxZ z#=4zqRV~VSwKD8nTC{G+K^aFE3-!Jh2T6=mr(@#Sw;cL@M zQjUc)q}?Gb$VookDWb|{3M5nY#VE!uPt3!S##WZYMZDYP1~O4kCmysElXogdIO2)& zN~bqtDNRM{Xh*n20M8vVYjVzGy-93iuQimFqtgPrY1# zanxhps!c}DJxv`)2(PMR^rX}1 zUA4IwwYm|Igs;tyoxX!^!vaZ=CH4Zg;i(J^x=xF2_%`&TWaX>DmlRJbI{h@ zS8+(7qm9_FCZv6pMRmFMG;z_Jv(c6md5WO*#!1IoZ;}b)h8*)zB&tQe$Dte4k2HD_ zNfT@*IrXnN@r8i8(B)helyVqVVdH5=eT?xm)l59!TOJ=_x*cFeCU+LbabB4lGD*Uqe|q$v4#eo|Ji;Z=r{MaUr~ao8`qf?Mz@9ZVhV&lDV65RdzDo;D=={TfbVz zxpH0b+lzLtN|h3-uhhmA+~sz2_fA>Q_m-<6K3U-BJ!?fJCU-)emns^?mU0-J=bF>A zlMLP4J!_)yoOImblX~_&kHc?2_BeKLmmeX;b*Xwpz`ByS>J4JlY5WzC2*wU zuQhA!A&|EO=b9q9VXo$h@}eh^(473)TBjVW#GZtVb6PF#IXw#!UOq^3fDaX2H2{-_ z2RSv+nE_%nNTr!)^f zop6mL?BjBVYVp{A ztl-rqtls|sd9E627@1VP`BB6E(cc=M;uBjYrK!(%G;GYW%Z=NQTw|aW@vOSC77e_y zUYzo4+E{0W!BKGV^zMOiS zaY$JR865WSR-(tWu3UjO-}{M+?%DtW1f1` zT1vd`gIZ_BGChPgy97gd!|mkf-|(x1{jB2V z?Wqb-p)Ob}x74`Tmr+?Q-<)KLpBQ7nHGXdrSdAYL<*zfzKXeajw^7P%M@Zb(G!$;; z?=FU1ekYhRi-!n0_3K@Rnc_U#`GP{NpI>U*5eiUNgE3R6pT2ZU;z?Fb;!dNUdWzGx z@iA~nlrbGfd)G6JTyBnzcg$!fh}nrIY#j9lwBzv+I6KKB-jjm(Se*60V_bNEwm*6G z=B-8I9Dg4lTIXprDOt-yMn4dSDyBl*!?KxnYFD|&gSS=s` zo_Xt5;nx(p<;gwGX6}u-($LU4++~3CKN_(fuBJ8{^N#gB2X2h5BRyMi0GC(gfD*m|iJT+q(13A8HMsm=-36^to?s z0cII0&5`X^H-R5fLe*GTu><_rAdbA#Fr*e@J?SK(tXi=HLZzL7=dLO?w^M=u>&+|j zvRJ=n4lu*&X`f{n;0E`ler7kQeUVrY+yH$ltdNLBRp2ITz+|@VJ^CL3~Z$!e%#b?uq-NtiOUrgMjk@I>0yFf(0(py}KEpEzx z+3n^tW1RkVPFolGvMY6NQwJBZTkI?jO84TUYcd^)UNQOBeAkhBb7(}?%o}#zI@E0g z5O4_tlf_d>Jqyw#W;Yv0J9E3~P+$_^o^wYlcO%qk^3}79_UqS*MGMiF<;E&qHkPHf zOm-Nsc_+O=2$*h`JDL0{A?MD7NYN;lk2w?bZkJ6Rw^&4-Qq8716R02HXg~07hdjXdD zdH1S%XjED#O=Lzm`MK#-WYdTlBRLs09WGnDF*OT9Vs0_CX1vE)k917=BO{^fTR~~f z)KW>uQjU>qWYiR}ECXjAwe6Z!podN;W;=|U&k;2^*utIEiyC?~zAm&wzlJgR`k2R^y45x%quJd7hJC(^iO2OG3^CZ^F!6mZ9Q zB<8wXC_d29f_W{DYmvoX=(?48mm=KsoioGEV%}E_KU(fAba>;0Z&ADHUQJr=S7wo> zn_Z1bt<^1Y#@um%UU%Y|%sOK>K5FNq6*;9NtxD08@;ox?NnYgckc$CG9Ay?qc1<1;|wAj)c|4iX^h!N6mtH^{#5OYMNb5DMdz4$jg#_jK>E( zMN0+Gp1|(mde*8g+{_f$v`E&DHv2m{!EEtd?xW`g`8mnt`c`;)igjCKt$9;X>}A1v z;!>NA6!Y&}kWA9uAW{3g64~pT>Zu>z^K>E-yi$El=^bH%8SR`3%$Q^`#?pFw*N&6s z=k9jZij=Ikv4LXu)n|jFLU; zu4$!nnil7FB^Hgn%cf3!I@5l_-1g&&!F`CvNmQuZk8%pfwvrWHN@Ospp~-VbIp4AY&GJ}nAhcxp?cBQ;w}5WY}U#j zDh&D#wZ&E{GHIT)Va*P7a@wum4VTHsO7o3Ya#iwjd9OAQv-3PTsW~>!J-lZ#7ta{y z+}0bgB)KDYb6-mc^3q84sHX(1Kgtr6@tIu*KGASg4`oO4_4rNiX_ zQ@1t2hs4Tp=4ZCy7p%IJu3+**VBmV1=B1tDzVfn3JeD0g*VW)^IY(2HrAuDtL2Y@u zJTb^MB&Bk!4t;C6#rsQiJvgOOo%)vTn8_YgK!sQ|4-03c7{E zNw_l~$E`^7Pb|^4_ENm$9<{T>q|<0ox^CkLl0@6Io_gn#OpeMzrM9=;$2HR$E}XC2 zxlfr`yqav71=PEBALClKcF!Hp%r`DR_G@(>Xp*AgEp|E>UPS`~BOaAFmG^>9GuFA~ zNh#^M*U!rlXHzJ_9G>7+Go_goSoIv>*3{P|Oywsw$u z&D#4II&r@@QOl-XL^zPJ;}v7dx`m_a?VSGryF+y5_7t4ssi2ccszWIlt1;axp$)*# z2C(F|#;~i-wb0YIl^JpzWK`g(8OYpyD?2-u`;W%l0&|*E9u%DW=AupAlNWWVRpSd8 z>fB?VYO6D@a(5ctN0|xVa=+U=u3T;%Xl+eE+zvse>AT$osw-GxYY?)l6O8)P{{Xh5 zSwP{`jO)L8)6?n@zdFQrh34mwVz_<+4PN2WiJVeQN^l>Hf_Uz(K!;z3{iPT)&)*I!24^z$cZBj`I20@JT?_7Pw!tZ7+mItS;cFo&PjM7c3 zBHo>J-)-NV6WY3atI*bAnTog`wZmG?qoO|(zQ>sOn3?R|{LRFS=Dhwnn8Ua}aDT01 zN^Ws!?Q=Si_w@VA?hC-FF}`9Sh{89t(_ zFP5J)&PtY(vooc(G8F&==zZyy+FaAQMJ!mH@!GEsQu`9y<R1dRfwG*|YpD5|j?=p} zl0}(1ZeTrYs-;HSj_n+g=9FHANh542=mGCh2-r)Jj(N>Qnn>T0N~BUN%@!Gsa%u2d zF_0A{i9HPwsmn?83RG^I`JR*Et9MxxNtN}@dX=;O=@bl{5^`xuT=Bd&E{8N@X>Lm? zc8Q2?Ju_U@#D%0_r`nul%V#|eDo;e&SIrxS;z=I$6qn3C^O3Y;if$TnJ;llGBj<9X z-j?1K^Y!mk+Tc2~k~f3-)04D$x}5H5OO>3axic&!$2|0}JG_<5c|S2Hr4(YJX7#%{ zsxN0XHPo*hpnzK-im~TMxQ*E-wOpE2TSl$V?GKLQ68`|Rp7cv_?&N{eu&FE0o1)y= zYX!@>U8F9@u+KEm2bgo%WP8?%q-3w$&T8uYOHsec&UfRAyA{-f1EK4R&dqLWo3@*q z_HoHOs>y;rVW$jj^0}#X3?}*K$;6CgarUE&MGs5wX}9Ms+Jhc0na(F*eni*wlXNoX!=D*$i>yEzD+R}DLaNf9~*M~Za zdy05!kfNuuW{-!j-%Qn(Xqc<#rm1z z(Gufbd0Y*|=Q$bcShCAB^0T?zJ8@XyaPw11qn{I7+PALcKVrFXs0<%z(jHL8TDK_;>R&441ADQK8ruk7%0QD!mb{0BdfU}YclflnJ z^sJ>;Hn5j6dh2u1yeigkc!JjA?bUp@1#;NtzQFOHjWiu=!+I1+dLBqL^oC5R2P(J# zp8o(^^Yd9tmV>9dJscjBtmN#RSLS%F#qE@mA1#rFIUw^>S^b&UB&s;)8LvW8l{!4q zGFG0kIyk(KAdt(N=Jh*Oo>Fid@UB?Y_LVMcH7HqhXFVp0k^=7#+zwRYy!*t~F9eD< z`;+Ni)0%VT>JF8uIWvHgR*i^KSPxo}Zc72l%{5I#@+E4sTIh+==2a&Iu^mM@ZnwE1 z@H*C%z1y&Yge7;>(2G#{ln2~6=B}H`JmH*?j(O`_%|=h&IwLsBpS#qx7NSE2bBqqv zpt_Pu4%XURpsX(x-lBx=xoxN${{Wl-}UE9jPu4_lEQ(;e;?plvi-7r%p zetE5U^$oZx`Q6mia@ky1cBK}jx-7@3kPi0FdFxi!QvtFY1K8I^maN)I+_xUFD2>WZ zfmR~c+1zGginusjV4n3UYjYV+NhfU$1=k3;;y}vW;Q=txIQzOENc=O_3s|sb%c;uuAB}xApz8-Qo#jqB z!RtxY_E^hq%%HD?x2g1p!=D((2CR$bh9K=>o)6Z(sI|I=_QftBV93MQr?qtE6x=H* zcRbv#s%mulrdXo9qv%3|f}}7E4^T!yqs$(=k$&b7NC^-anTAE`sQIc~X?C)u{Tj=D#1`y}ad^^2g*E#&cdrHmb3(D*K6U zd9Mo$?MmmnHO*1U?pTLg!tO3}>7KQ9b+XTuY#jR4H_o}4jGs27@#`S%XOsyKUU)Uv zXczKNt3evK1;%iC@-tr6QD=;Vdozm{H%^P~WA-!lUoR(uptx*hrsMD*{d)T<_%w)5 z;&E7UKm3kmZzIm(#^skeOLr!6w=m1gCQU*lbVUvhNc69sl2S+1-QQ9-xy)mY*{fF5 zGdS3|&svoiVcj-vMQ+AG>`66eddJ6F&AaGPLiLfNW(NkoME#}b@;(l>$ruvFopHd( zz(3Br^3{BGH2a=jX6=_%en;Y`inS3Ri0)7~mITapg~t5#{dul-9cn`f-5}uciu$bX z9JrT#&P=jb!$r%ns}{D)7+ju5-p>^%)!WM?N=p;an)&$CTHC4LE6Ss`!i`mg?Q&d_ z+yYzDnsug?WIM?_yBt!4W6Nn4?wU)WtEveLVo~yPdF0YQw8J}&0-mF-K33yy!+J^F zR@WJe;fpWunGpOu1!Kq zVd$EOkE>j73zabul5@>M+RGJf#Dkn=tebcZX5pqGr^`EWU2$4 zk=C1(t#LT6U3VHaR+Di@JHZ5jRu^3T_c-U$wfL_?JcIy<13?yMN{N$c%s}T!fTx4@n=laBXwrQVG!+b*WdVAAtHDdb8Y>=I@bH`f4 zDU*$BuE$Pc6*>+l(Y_Y(8^;_jBq7rWc5CQOBgA&s@FL9NCnK+Br;Me`QM7Piswl2b z$4VG7?gt?BKD4#vp7r{at|po_B^Pn`HHkiEx?KFbPkQ;+TGdzkP2D9syN_OL z#`dzSjhAEUYSWDhD&|US4J)e&y7Tp|1=qlrVlmITuIbImtu{DeuDuJ7;w(qBu?HB) zHC*_FyK+fU-m&I&6{JM1u*KHh;VtGgWF9%H-`mdF%N8S$Nv?@aNeh>kUaV_tTTl|` zdE^?1>yF6BJG<~}nv}Vs(_5CGGti1nRhkDSiz|VF=~bUtDK=hG#Pu1^6`O7;q)VqK z739QiTzQ3y?k1_rtcTn;WcueBsix(2jbo$K%$HS_WZoTyNF$n#U03D*09nb%&UvYn zRHT`rw#d$(Qe{^8x^*P=tobzuc{gvv0aNbII&NU9YiH1bbq7foaowL<=rqk{Xf+g- zWXK({U6^|*+quJu{o;J5xcGbGCDoOK#wT=OMwIJnE^jBZiCcUuZE#b z)tyFom8w^&<4!MSsn2U3HFuIEq_l#S& zC#`aE*+V7M#~~^}C+0Qr_{>|JHwmrn5U7Eo-3@k@ES)J z_Kf8hImafv3iT%o%ICR-!c(hKT-z6*hCMpwSXv{wSB?)Kjaz9CkZ=@&c;lMzl{wU{ z?Jwqi1nNc<)M7-c%_?DWo;a<=j}a)q&T+`C@hUn?t2e{*I(*VDt+05$Wej~qS{i(8 zKfL60BDlSzr3EP-@3W0arpW&QvsH_HfPNJTutn#~+THU{o>G;TrSkJe(h@sZSqlsv zcyD@?*ha(>etx*eTIHusv>ds&CB`tDYpF@}=$=!)Fmu#mllv+Gh6)MB2c>VUCfQO} zlW(Z;r9>mh9aoW#xvF=1L`P0Yj7zmo9CMOtsZ~~d-9;);l`Ble{{Vz;8H*u>cs`Wa zycuOEW_TAp0j~H~lpA+Ey0}VMom^~Fx$q6AK3rt(=Z=+?C&Q*7xL}>ZVUb%y8x)*g z=Z%QTAu5)J=QDNSTgA94fU#ka6n?dbcj3$HP6)k#ukQ#uvVH5*wB33@gLCfza4>75 zl}R&L$+d2%^i3mPNfQ!DmHzE^_E+|Es1qU(+!A@N8Peo;M`UMoqRW^56!8A7XXLT~ zBmlGRLl?l?Pu8T{+IhAu1JsJa(kf_lN&^Sx8RTAr0L2G&>kHx~ba?$k3#jHf?=u9~#s*EBUTZN|y&J|ZM@y>aL&Q)6uZ05XLtdCn`%sdzh@!P%)5 zWz*EKU^c1r?rNWta}pI?k`D|x?@huLB&7Nskgq68=)E4JaT}gV&N_>;WII@n zFl$9!X8s(=`*-2=9JUL|X$+=IdI zSWP*;ZH}nvE0kJd^1ehSBNSp19=*-S@>FrKifhws7 z<|jQmRY~rRlDZF;Ar;%4)60Pp^*zr|J)0$V*^;>_9mp0eeZuhdu_M|H|UvRx6Q@H)_!n!cH2;u8JEfrznE8dEOmb$ZxvGF*9K@#%jzC6y}N@iA$)Whsvq!_UBzm4y8=IlIIc`x9%)A14An}I zgN^lP6RT^}-%pubmd{Gbw|OPI1QsQaC$Ol-){CnftrD^6;VGn}V|v;-Ly?h=t5kZDBH=;09I1>Wod3{2Y9O-t<<@>P0gR1HG0}r49(Q`tSUxUP)l>IC(M^Z z=h{b>;n=WVyz*&+VD17rQm3VKb6GaJ7)hx?>t<<3d=@;hAY-jgFZ|oTy^oiSbmF?H z&el>C>A5d6q_os_S?$2*lKtzaw$*PUf+uMShk#9Q_F8Pm27C!d2PdAjr0&wbmLaR!cHG{z@iM$Y z+CaZI9QCcpyhyE_NyzW(SjtXY?v14v2D>u)c#k%jX?Yxy4l6=G5Rjpjw`6xUvel%; zC@8*UT#v+sNCr$3*0kdB5ii8K{ApQ4P4jz;V&Zs-nQ`WZT=X@1FA*KveABq|)``L~ z)$VNNXLMdq5v;cFha~3&`uf%QJWH}NJk8zDHIF0fxRjqZrj&jp8woOibDq6w#6Be7 zGZP`(^`X<0Rl-ejtD4dHj07jm+}@e1ad?P7CQvXq=DE3Du3M5*O&VjwIZST_kD;p( z>wvyDeBPO>x4Wk0IX9v&$E^UZhZ!}Xy2yA=SatQRwKrGlOq!yCNpNy=)}m(JD&htEfhPZQRv`yi5k&o_VQ~W{KSsi{8T??EyLb zO-9zCw`E2ul#&bUc2qWT;j%h*s`6N`TxTaV+__!5i>=Dr~%PUzqi%=65B* zb6kz|s5}N5=O^4tLNwvi*IrXw4&URjMja|jK)o>J;|xl>@Z2ytIIESKH@dLGWZQ#+bM>n^8+N$QJ!_HE z*5t-bJ255l%Y^YbkDzap#KGN~Z) zO+?n_MeB#}#Y=WGcE6b!gDLY4-D;7y9b1*{O3cz8?&mM7!l`R99Q|v@yh8w4VF<)F z?nkY4;oYXLO-FmQTk!R&Jn)4=tQ+TMJ$bKZiqp%}eSTg+u4>9ssbmrNQ2zi9Sv>wJ z!CWxqaz9%7Z^E7)TdTxknIPbtSD{{)vzqirof_&(UhMkI!#*BJ^ceQW2OgELccdz# z5-Y)++nZ;t749R+{9$bn(~79cJQc-!`>1J|k;c=_XHov@-Ob?L+04tQv~zUbT^@;O z&3J)^2JTI8N;Zww<56y>neKKL>m7=KIL98fXt+#_^ItOr<$Io#pDu-2rQ9)`n&CWC zYVW3(3zW_Y%~GivQ%#ixDaD={s9K1Gj$B|iF`i9g;Iyo&Hxba+qgJoAh2mUd;VTMl zx59osD*F20IvuNzIgPY#v*~^KMhf0=sJ+G_C`$%sH-%O+_1aIWYH&Y}tJ;xlHlb z-jVcO(UxJ`j0*9&?RI)}qWSL3sq}^CBam`G`t_S}Z4?kYoB};*%5G7z>U27Ms_5iy zQ+$#)T%6RFXzcuqgI#>Kr+3ivQ-0ATbV+mN1p&JC2DPEo6|L|a2R*BbRNR}BJ!(}W zCuC8&xe_r4n$8x!Y=q+=ipCOfr)FbU>~NRY zE#xrVcOLc3o2d-^=ReB6o7pdAruIEmrmUD;w#Ecuhre3Pl0wsv23fkA=A$2a=LRyP zg3#=IHv|2?-Aa>_l6@=bZ2)yEa*Dh@*7?ADG zahm%70AU)GRnMA~>Ox7QztBD+c^gIBWjphX8uvXb#d>wsgmMdo-s6Q0&*NVSnqa2} zxl#2Pd~9pC8k#lKy{T)mLuPI*m`DKi;F{&njW5)NX#)+sz48O_zLmg|~rApef2~JHF=QEZ0dE%&;o#7FcYO&W5ul0X4RTFNzL3!`f%a!9Qe zTN&I4$l{m#JA0`hjEv&8=d`(*ob}MrhfiZBB|yVGV0QPd53mjUg5>w9Zpa~SrKPh_ zpyMag6*t+CVD)9|ij>=BXqhs=Ne2}7fO(2nApVtHok*6~7h)@be)DoTprQbC&IhGF zM<#;ltFkc=Sg?8bG!^qEFF4(i+r39CQWrC9iK0?Ebv@`d@#GM=_N^0Wowa0b5LFmB z10?g-q)_S!2emaV43*R7PjXo1kxMo=oM)3(Mar;j=A7fy(_88zN;e!f?2aloDoG>~ z!lxB?xI2k$SsL5)h3|l$R$^~>MC@Yyt3QVCjlC$-|#}!&jHW8I480R$k zt!805QEx)C*)ZHoXVR&)o20GDB=tG2m{!$?BZO?(1KG*9?;g3uQI^(z2;qBH-rg%& zEzJF#ly2EZNGI7Kb|p_hYdUytTG`ioDe4NG8q=CGS{b@?akoi0tH#=l_eX1BcILSqe*DQJyJIRc zIqO+T-lCH>_hg;UX2(?#>MGKF=vyUoTX!1Zy49kB&Oa!Tz%TxBTgoZaPG1d)jg)0& z?>&aWsx5-L-G+HH&Q4F#skQs+5~z)t3iG!;D~cSoDtk_dq?>|-mZ;B{SdQCGWRrA~ z4xIB@52##S!uTu{3>==dcUE$H6&Bm&TbS@_09^deOOCbCN30VYICIJAn&`wiR9D>Q z_Hj>L*)i6fFa?RvLQOJVW>Ex@h9WY19<{?6D_NVWQRgsjuFQbof^(8HSZ{TSi#NPk|^B*t$=V(QfoeC z0z7x6Q8xrclw~h8K+(1d>w%C7uT%JU7M7kNjkP#dXp4a0_Z{k~Qc5n{iZg{fPFp5@ z!)5RT!rnI1qP_6eqYbQA5pEE?o8^bL(}Bs&a=s<~lsseM>EpP2Cz`~jH^u|*KBR+@ z_|b;q3K35Yi(c|)ZX+tK%k{h~yk*e$KiR8PxA;4+U*BJNGfURBDU>7)slaCYHV#WK zJU1B6YV=>)AL1U5@jpa`;_zLLiKsyl^KLC6`KQl7ew_RB*QH~hR>fj-8d#bYEd-LW z#e$9&t{QZ4G`-~aKQ=r=;LFFlnUcao{nZ1LUSp_uFI9}Tbm^3VxaD~sweQL_E7Dx^ z)ZwDzPVq}sba_U&w>B42EQ-mNIRsY~bE(MEl73)1kzPzGMO4(@oq4Op=*>taX0%oS zmnW7z=}9I`kWPA$-nkn}reu1lX&j=#NVqN1|>o!GE1kLOua%y%4~dK2qP@>0~& z{EJP>EX+=M$E`;0RI$!U9D7r#ep|Dat@*k4F*PF33l;^&D}=p@MVC0>bfrS0aZMRi zjafll&KtMn^!21w{pdTg!=-gj5tQ`mZ7FlbcP(Lo3R@(OrkVo*$vMY7*DRwXR*7EZ zn9OAJoc?r*8_aWpPio3BQA+!dlbPSKZ6LUHOhV<01^HJ!YoN67&aZJX32wxmp7pfr zQ-izeZyGf!KXqN6o#DR$Ym>La%;)%rx#Z*ynOZcID8wY zD9TS;ADU(um{q9b*nPdE`>+=apOl{U)mUg+gscQ<)Q(8&>t8^xIUX!mMY-Nt_&Vca z%X1l2Ea0$VNbfC;*ba z)xj#syWdmNrqYdyL7`Lylm;DgYAG&Z+&=G4w53`qc97*Ccgd7)H9L6SRiB{kS+i?V zi<7Z<3!I+y&a|D-bJ142Gv)CQmYer{`Oa%DZx9mf`QCjq*142q?&NUP#L6-EdKt3# zfHl;u_j&cK>9xjYDjb}g_2Rne(MjDc$aQbN?4c&5a{MUB&m8rrE{Cv#(wRcos@qYIsn=HxI6*QD(wsy^cCp#{u~Ku79bIVx%o%yQma&zqb(9LjU?+!$g?hxw%SWb@s?(8 z2ws)KU0qxYqN^SNJuzF+wOKxYk(FpoH7i*bA)4#S-ZH#r2DO)5xsKgL(idO>&#ij@ z0K2VfaXh--(vIZ8QZ=36e57^r{bUumGw^ zB%F?!t?@W2v^83z&!vd=vgITB{LpdJuKr~dG`E4GAO~x;noN5Ks1#)@sR#Q=AWLHq1D>AsdOcNym@*uH7d>l8Q@gta zxmJb9^>PUt`911GsxVb7`^Y@wy=fY*l(pBOwYH%itNxbd9FR_MPfDR8fgyPkac2QRy{j|x$Hc8-;Xd2iEL~aNpicykC zjb5_qO%}FtK7NCmxdyyE#LIky^!{~v`%5w$ojB{z`bXh6h{Wn4GCGzc2>nkr_4bpf zD770@$Bg49xUtf7@m$?>D-G{ZY4m4X;m;GvW8y%{>Y#E)IW_hdfj%H1hCIq7jQ#a3 z*1pddN;s?(YR7c7K0}${^9L@Cp7~{}*zeqzQ`Gxt$w^%dZP_NN zPPb015%!+OsavU(oRc!2Ou3!Un==uPaC+3HD-ALaHsVDLdlQpUI*KaMCNOfSR-9oX+(xI8?n&r{9ES5ZowUaa{S;x+WI;+@gAn36^V z9^Svyit(*VMmFq8B%fZ@-zgV~ zaq2r}y&u81X#OIJ9rERdIXUb8HT2mkYaI)9XPKEM@Y1(L&)nbHQWTTnt-C232h0iU z&{xUvzfq@cRxS(~pE?d5)A**VFf zCZDLKCb!&cOzDhryjKp^DUPXK?;Vn_F6EUY&8kSqfT7JXkMl;{$tV_=y>B$o} z$e?v4tIc$3&Q?dU^{hNq+c;fY;+>Vg{kIA2gI+P>Z;Yt1%(2c137)w%>tS-{<$0by zCp3yqH1%i89yIuwCF8p_*9Rmn?zQr-iFL{K9dtR9iuds~KBqxKJG3mn56uNp{8DEP z;(bM8@abT8GN~kXubFi{MQ$}YNOKz&;FDhqgyx?#-*fBpDslHC9p0vD>Lfl3?f~GC z#%gucLq^OSE!fwts&h3ad35gXn6hdQ<^?(R>(-e1nMm06J%($YO7TtXDBU?Wh5pfS zg}3J;p{jD~4j7Q+Zmr`uIrDU5^%~loj{CQ6Byt5tx{IuiSdsuB^IT4DGI5UP6%>`) z>PVWbp&fj}LFA8Gr6!}kQVV0h2B}M(zayqMa3Xz1MTJ6~h3`=<`#8={?*8;buOe-c zQ{A)dK-Yn!+8pl2ah|l#Jnr0iZ|g#vOgSX}WDjuCN_P@Lr80u2u1yhln?q??kp`8b z3<*BQwd~U2)G){=j(sa?Gf}Ff&Sy=nj+)!;DCRRJ=N*CTTJSB?rT}K|(DR!5$W%%k z(c7ub?5!rA=V_pLV*6O0S6Ix5irdxnh0Sff2skH`lj6C5_d~sfTlog)(9cooMoz;ZhjWI&8Sm>}=XYUk9j-8^jAs}I zzGpP3)kPTfN6}?*ZjUSIc{Z^OO{h$Px;6;|p{)3=xC{nVb4!lX87a zA~=ZLM>*|Rp6zq>_L>NKKS z=2|Vu(Xv#xT;S5p7U;`@GmPN(6)~SBMA_dxBYvh(Tt2{qu6j~QBL)}%5!a5j-tRh! zcQ};q?=rlSZ2`LTQo>e2p4}^*rlou6O;(iri>VMXk)GTdPbGm1A<4%+_0MZZo2jdp zH8hzVcB*CFf(iBhv_yl?DsnT(^y}8T5>kR}9is&m)V?j0!^s&G^@Al<#~J4w)JmLR zy|YG-+>0eP2`@fYcrn?Qe$~I`?HBSR1uu8~^jHj+T z*O}^`6x1w3J+gV-_U9G!7;Ic7`DT0;Ym@tqaeih!z0}s%{$0Rj`LTjlGY)_38AnZ^NZ@N2iR@fe5=&PeQYTUpH}bt;L|=InNw ze~Utu-0VXUj2z;<15NQ`M#Oo!-PfA)=S9j+=J2b{Ee^sBR>t}=E*WNKOnm%`qjlh4 z59>Bgs0F-@Aj>EOFR8^$D$5Tgey5ec}7N zSqyS+SB!2W7~Ni^)N50`db5Up(LPf>?Ii?xfb{K9N{EZ|43aC4*~%^3V?`|p9^DBe z7++rXURzSJl8^Ia3VkXj+G#Xwr)6|fk?tWl-rai|xgNAUqO*t`w<|6P%OlT@$FI7Oqqwe~D^3-ud&#E~oj{kJ}zZZRGLSCY1@Ozi7?g z9`zG7Ei5lC!m=SJu=TCjd>MZ;iKGT34f7H>JXdXeZ3+@@_h@vmmFrKE)?LkbJR=ek z_Xm(OfO`5?Zm*-;sCBkY&9{J0dilSu)UQ44k5(8ObW?KGoJ`sSPB>pJ&t7Skx=fJD z!GRe#&#iLTsdnthR4)C~eKhq&1@p+st=k}Cw0)rM>M>jpo1FZP=LkYqwx+~D9h*rf zImKx*2F7|GMO8-Mx+UMaUQMy?=Wa#?a{8^rYiQvZm+nn8;m(^nAli22?^7&|8{`wuI2D~rkC)x*cW9DqnWa*U{UFy{%Xq?V6_O4IR(oYdxMioPE zMeI#&T6n5(%f3Q!)C1O~(Ym}$l&U9Zt&K>$X6JggP!e(p{cCF1#xaP48BbrjTC

pMzlU78(4XnJ#*_i1qQkOICUW->!!GoTh=CvW# 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%0A585BS@>&fjkk`mRCy$Oi+ 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΁r<3Ew}b{`*#IpU~Smwyhl|{e@v| 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 _v_9eGFP@LtMepIayCx0ZK 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 z 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

kba}<-@Y%Cu*Mtt z%sa;UrctzS(O(#a3||5JdY%vO1$A4q*;xhu<=IVIlDsC3|C(o zYi_h|H2q1DG}^@S^|PkPelx37C{sk5;SPgl@(_Q3^!o}`_RrJ3D zcglZj`a{P>?~0$w^+2*8yga_#%mc}EyU~#lO${Eix+R zD+TA#JyU;x+NZmpD1j7GXQ1a)LcDx&SxRQVtcenoIYIv4UZrHM#f@*hmHk{tjdh5P zXf{pFnsw{qbrK#H5-RDj2{8*U@Q$7N`TdpKI(Q3$;?7Zu-Dnnfr5=t(GFIVoumgi$jov8jW zy{`-YD>baa^7LIa6j z?JS?$?_ncygvXQMytI%tCjq0iz_Ne-@m#gD4RQ6@E7(j@A+ebm9^0wln1-8uLsG8{ z{jGg?v{Wm_wVgN_hEU@)04&ySbOVs-W?z%Vs>1q_M7;2B;5cRPt&eCzi5+N+EjdOa zR?fT-y2VRH5wf-SwzEg7pm}C?O9lin3}BJmffI{ESjXXPYf=`*aY7{<(~X{ad)4P` z6=Mudp0Cd4$B?Vw{MR7$*)8*Z_}KTZ1N9BzWyclG|H!WEwvJ|N)EllwhHLe)ddb@P zIT=J%=BeQLE-L0Vr{f|7;*5E28`DRh@T4CKTAO_MKzkyt&CloS z9#veAa?*@6a?qg4%8wc61+GF=pDOC2J20zz_O2RjVr`F7JLfBwq-Mio_Gaq2?(6-W zB*>-JJJU``+IF@UHd3xTvufQ#?n%$b zo!o$lV(fc=e=@xK@Z?wlZc&-{GPnmt=Rd9*#N7}R*#VYubZ+^~3RUN71WP=hWHwwS zM*zYQfy8xR*z=_Cod>T7LK6cv#wOe4JSc14v+6@*BwpW42qsG4>Q^$ejUbsL<>@7`KJ1O68DcaKf(lWIY>aIW4*h^{vpw{Nb}XSZerm*lp)7c zNxbA|zqHR&A*u{{y_abTU+Su~)k3CmfK=77kK<5CWYa2dL5WbOfjAh}GBS{yFDLgY zZB|w9??D#0+HU8n(cBY6@nuTPckzW{i$XBI!$cC@qx3yfdiG<;s9_+Br>_4){Q|ue z)4M0=Uv&EJ$#rl$Of8bLaLhV^2MIWV12)sbV+WQ;TtG~dt zx!CwFK7~3xV^Cjm*P$yx_Ktq@9x)kC<@oUyZ}o1Nj%YiGHu@^q6HZ=>~Ky7rjVY88O=NsX?iOB!VU?v8+`HE!t$|E2@Wk9!L3 zCiexjx3{M$+Hzk`cH+8tI6#Z9=1FQ|aM7sdBl_K4YOk=C2bz=@Dcpyc0%=!`m3rZj ziwZC~%gV8Xwzs*5`jR4kpeQYDbi`ey|9Dn&(LnG0cLcCl_}Of>eQj(nYTF1M6r@lz zTvPUAWrnZrr^=vf6655vVovYcZq!mETsH!?-KC)mn|gCA4h=96XbKELtD4#D8P!Ff zr!ej$(LjUogTKIJ`w@F6cR-q1lL9#R+cuxnM@9SEW|^CnMM0Y8=M1@a`fFH&H=nD) zN}|P2=`(Te3^~08RCBF0oL*A;Id+jqEO2YXL^CUs_+>OTcz_UP&-`uko`|v)k$^=* z-!vt0)ndCueCOzcl zPR<+U0)TpP*@>KMTU$_X8^&KqZJl$vmEDBz>B5o7h!%oSMUej($UQz9gPu;8ij6Vz z#1&47+E|Fyk2IQVeY8YsOi4>;g66y>yfemgs$jWyw@^(*o4cF6?~KT^+_uXhwSqhwA}3%( z&4#`2`A$HnTq35`Zir!r02b>+|7TX5wtzG^mZYu~{pFCKo&K{Rflwpr_MnIBVLuRu zShc74WE71TxByRVLR(5wXUVw851b9;UIaJ7+nt?)H&W(?>UioCc3gU`Dz{}HnI-gw zE?HCEsrpo9Msgrr9spX|v)gx(uM72-595puO$;PgV5dCMydKP2?1kNVN$~4R)-bRn zVbqjRA~}}b78|%qk;Rc)s(R}lymr~Z4aO+@ly+{WL{d3(%9-VDb?cE$+Hqu@2@6CZ zyH{9O$EY}2%>Z}X7>8H2@1dJ0RiS2J?ZO(Bn5boJ7@)ZHZ>6o)U&+p7;)30EBYx|w zCP_$XYe&S%zHH{a#kLgj`a6U5%RW{9+Um&=v%ZK}$x6oU+eQy}m^YpMD-c62HeRf` z=3m(B2Pl3r#1z5Ao{`u&6qrMx*=Bas2KNdwQToF|1!=k*f9wn>8{ohTrkq5t<)?mm zn*n6s9RA&V#&=l40#BIKhEKz@S>3EDlunm zfA;6C)d!}7Vp=JkUxo1|5u=Bq|6+=Wx)GIf{{ju!+purY5Bg;}#Ehl=2?-E)^77Rt z%>_0=#m=ioTWNDq=_>45k8d=&q>b6j-R?JvYKb$~ci5heP!enJ>PEOsSC6#!&ZB9& zo%1W57VpXhIkzT2kWgWlz|EvenEJ?}bZ5!OjaZXvOu|^|pzlX-HX8*sHyFPOAVH$9 zHDK6_5w%nGAK4?#&jxc;G94z{C3vvitzMpw4AFe|GwA>5CeeO5si@A;)Vbk{Vsb!@ zr^7gyqkW-V%maBQ2L;la9i8V4O!}Dkn7jJ}Avs}FPD5l0WlDF?uKyzgr!rR%xIP6@ z2WP|^CYZP>!PkgxiNfX^+*T>JVaja1lyST1{#~PzlML;xJnH?Mr>XXNdmG3cwJDu3 z7wZ@MTzAaA!P89!E9w*F5@rVxKpY`IcZ#@%nIXg{b{_ZLT$M{PLVbA5bf=M*IK}w- z{*5L1LrYc^w!q+c@FYGJ0x^&>X$NxNVq)mqBzl-myFU>bN`rz+9~u@3Mkqi9zuO5z zkr=!Sv)1x+;CbuP<$4K%}l`Ug>5?DIZ+ zKNpM)>lnteZ!`F9LY;>*qEJg5LEH3>{ZYn5Q?u2Dp*;rzIe?!+$r3hR{kL&AY?kRu z`J9@Y^GK^b{fh2n341huJJO3!cv`OHxu);aNq%xR+mHGp#rK@~dSXx^Y3)sR29`z$ zEtN6NR|(7B80yP9&CTo5APa_c==*J$wH?}nLf~_>COeKQWUbzbDSl(c$kh#o{rjoaOLeu zu-YIbVL9EVu4)Xk{;BVf<_8C!yXF%J(6wiw;4cyhP7uCJ>lx|6Frd;d*x3JLTIDq| zZj?jSPdCrNi{79^4huXp?w>W!YVX$KKFZH{2Ys8!c^GTa{T9VG*V$jCm*GVS{AH)U zyb(Q?=MHFnl^~RD%XU=CGj>wa9zc2K6)gKKNu`2hFGn=xX6v|xkU4OnZ(D@+1}HCK=8G{YaYGd=I*$T7*EtDM(M)K{ z;}ZVYZ+cb(Cvd?|AR>*A*TndRd>{@qV{09^-Td{PIK0hAxAd+D{QImRG6t~j@R8f_ z%_o)SW`-Z#C2lX}QV2Nz;mXJuq??)+sB<1{uq*(4bBYU-xih$tGMF)ez6I+ECf1mx=g}IM`Ydwd0WASZBdNmIXRbWXQC0m%6TI<~WN6o*SOc_@G!Sxs)8@?E{| ziww%@7OLeu?C@Xqnhn^I*7B%e{1&rj2|1YZ6bl|k&n)K1MnL27YOtKk?QVz zPb9o3P%fdND4$&iaT(ZyzT-S$^|#8$;6VLH*3Qlpp&W7EB&_MJ273JGQ|@W~Xve7V zu8Z4E*+r=Vi|gapb96U+xSZGn#`=@0KP4G>t32kHhGf71`GJ?WEo3n@+=X1iSW-gl zxiP9s`aUB5I0j1%?4dLC>HKw*lp+Q%wsI~>BZ3oma%QS@><8!S*8ja~ zK(jr656KUdcw}0$`*BJx8ea^nZAmoc8rHwsk#3zX0Q z+`+l&)QEIceokQU1#hAzDfwl%S8IPhm;!qF77p{zyIuKih~Tq4M3NMH_gSeFM27qEPNJ?cWH%uo2ShuoP+Gz&3oz1 z%4*c2HeqLcMYjf|T3{la-w11INK2c?7bzT%LQE=e^*UvPULjHQr=>3kiRuhILi&Hj z3Hc>F+kVCa;aLLKBHpp)Wdt_2*{%+o*Ga?I`+BZs)(t$}V;IHearh_x>CNG(8AiI( zYy3vti+bnxEJD#`Wm=XE&hkMt{vsZ;tn*?G_%Y_~W1uDd>~D8-{bo7e<}C|zPvdOE z89gsxUg8MWI)~fuY`W12p#VK?NkP52K*&j#_%K$wSbHdQeG-K0@$Ty+sZ9McD7Y`_ zcP!H3&&JUCCmKm4?3n60YJaN*ZuPm}MV{o2!Cz#rCa>0om8{l>AwaSQJUx}1@I#sj zsh!_Rl~I3?OLp4&kxk2AR(`Oj&m7|-!M;sHD?d5+V@!S*+b<5!G)T@b6OyM*s@}$~ zLsiZKU0vNEOJTS1Gx!aP|RC%D0)f%!F2l>PqeI_PMw8`Uuk%779Zwt zhUfOq4I*j_q1Zv?$IlYE%S3jFsmc2-l5_V(OnOKfe#a6WSy-2~M%sDdVZh}?Uhswu z!$a-uJ2?+-!$%&SBvNX~%sWIFxx6V<&MRMC^q6axg_(fR{0Wf>6JBeZ|2_{vn};J@y8iLKcqYnmjWqf+wIfjDvhcjNSBl_xd+xNv0AZIH>P zHa;qkd?s+VdGGbNGe61;J({%=FGv*^hkp5dvHS{D!jj=wuyNv*9-H{-ah_TMWcWh~ zmRR;SHATFDFFbW*GKtG)r27;`AgKm5?m z_#rjnuJSkE|bm|C+K20lD)+{P!>eDD6m52S=aKT5}SDCU!ep7N|dP0=U^2BLp z6l+(!7>c^>JYK5HiWEaX@89fQzFJ5F=BMj} zT+qt56kr0A7He4+@KR05;+N->RHx@Oz+7s-wgQne?!bRig(q$)@=h9w`vM({bSndv zs_f3t9!r56bFFD@MZ=ypT}3lXIbYufP5KMFoVAhoOa7xZ{wVka*hjcqkh90G+#>MI zia}~zB{y9mpzVqHzyHV<+gh~zayEEuLVWrJfA$B}1xp=VmljxTn#9SscB|ORAw%Yx zwuFAG+|!uW@Q(T3ZWv$4-(jm$jVB2q46e32KC~KYIpxlpy(59y=g&tM1rNv83MweG zmmE{?%Zj(7@m+T};i%*M)(0k*XTza}n}lVyh{GHU-MZ*C)q-v@#993AC8(@km6f(} zC}5PrEbZipfZns{f6J?NjMPp*Hgs#ZZdDNZb#J8@_pn?&=iEw4MxSy}fSoJ)(On9l zRG&dZo}y+k|EmOkf}00sJc6t&c0NI$_O5cNP~*70r%=Tcne?BSBLVGr&g=nc27NuJ z9xbjUY0{y^yJ|msXpP@Kikz;te`yvlUeB`sIcPVWS|$Lpmt>lHowA@M{CG#52_eu$z!dNR33Ra-aYFSv&M1li)v-}*~9h@a&f6Ry@0KI#&ykj@K=U`6V zc}fxv2^KTeK?ASx{?#i#*M0V}>H%egp zl4ZlWL5WStI%8d8x)=Lw!+w|n>iRw8icdU8aFT|lVmxspou%+q7+f(3m>3oVTz@Y} z)xo{A>3q0rtPp#ID1pjWzZ!qh*{aa1-jeS`Rv1(4q~7`>%Z>KRi=i;f#FQ(|s8?Qp zCZcpvlZtA#P$k_ZeM4_$KPlXrygIY=dK0r1X8AQ;rLO>M<+R&PyMM1m5b9>@;zOy_ zo)6xaZpoZ~25va7ioma{@U%BBdJHHvZzqE+BQ4lbH7YUZZU9+#)HO#`Gy^Sh-Y`ci z9Ii9VVF%>|U(_X|FTDrfrba&GJWNI!k6aJ3$OjOrI|%Okr64wdiIy(LOw}-PQ~0~| ze`HnBG45q0Z5iYUJx@g}rkQY6;OT4o&I=IK(?b^7L2R5dV+Xnoh~)Z3$6rk_R|Jpw zn{r9|V`4X-ndw{pgGH(c#9X|TOY^-;qu_6tMMI0S@iW~M4Rc7=ON(d|_zB~WgFAPz zzr3b;$y=Fzl5<;BikUtw*h$pc{n+pxgP+l+*P)Xfug?3agh>tI%TTr34MZuZ)>NWx zo$pk@rw2D}51R}IVAEHoJvQ~gy;P_H0ctswrp)a)j(qA7Z1^4hUXaAU)agzViW1sw z*{xJpS1NI<4G(S4Rjjt9g-2qD$zt#oI(y25cmIe0GdCat0Ix1Px3p7>%T#Of7pF<_`+q{duQGB zB&o0p7p;G=jbGXf(>((6nSH4<$6LA@7e-yKFuU5s*ZP|elVjF3-~D?p5ML7Th}phC z$yfENWJSgsqn^;N|GK2}QqxokKOfyGidiu7YAyEhkBvYs6cp>cxZXvKTi)T>+Z=daC8a(m9jO?*q*X)O%j%QIW z$`{5+!XCH6hv%5Kzlk@Ba-HS9{j?C5@9|Zvzq>q_9STD`7U8ChfAHRE-5Q%uD@Vye zQUkgn{L{0rz20G9uKPgY^NtH6#|e?~Xshc(6EbA_o1>!g>oI?>dHk|S$tf81Ud6%= zdN*~))2l_k*BUqPYI;2~b+5Efswld?OzjvKF?|yGw|5ha{___hVPS4@ueHP88^_W$`3Nkv`#GQe^4n71?`jlfgj8zo=h~wNXKEMEE73qv-dWlDPW`yHi>e|Zb%{{Sr?`e66u4;VSsFFcfP#7#E_ zOg^R^Z?Wch{xCBy-&*454zn6Gzc6Qji4Tj}_tW3~O~2GX!ms&IJSyGuv=4Oc-ucK0 z>YoP7VC@2FX{t%$vIhO@IapVh;)Xw~CYZ(5kcw{+XzhAXk>RRt@|WbByKfC^{H->s z%G)LS1naVw2np(tQ}Y|afsAptel`L?XaIKkn1Yz{*4-jEs>{7>^fs~z8BIT0&UluP zg#9aLAHLhZf7eNE4)Dg7HuM+s0GA|@thIRZSl*xup`-cJcRYC(x6BH(hSMfFsnjQuQA8od_^Kqai5 zeQg(@w2Rc+c@ZKFpWGyn96k@$q?&Zqh{EKN&!+n-X`;4vEX++5e;;JmZMyI90CWl} zH<9CWjLDA%)K3L~T@0PGMo^T`QzrRwJ83Wbo_K|b(cV~FeE@17HKND%?jQiA-^Slo z5v-ssSZ2U^4J@!pD5G@AMG`Yps=lwVuEU!BMuB`3H}RZ}7{HIeZ`69KZtR(hCsn5I zW%9yTa&t!aT;-ucp7|0IRn1MVbKkGM#x^Wu!aQlYT$tO(H~lt@YwIrYHr4H;ThM!G zQ%8TA)MAr9@i*u**ALy&2tZ|3W5hQ9_u_ou3>n2CPBIVb6OfuniW!_W|Kyn^A5BN4 zu+?Q9{~x9tFs~IMbn?yA*^LwW(C6o?_vgo}_C}728^GzguSdpEsdroaf55>MLyRNb zgB|j8R90TyW$UneIf&mcNz6a%pTIodvD27w8y=l>vDao|*7S+*0#1vCU4GQu{%bV; z`lpX>O1=!Ttt-LvqBFw9O`VyX1@Bcb*}=j7OW~|k`VSUsus$-QT`!TjZ>HUA<99>r zZGZvKUSviz@WEws43k38dg$E>EzQnQ4UwRJo!;u?I{WBG)-gxw8R}@g(y8Nf zp4f3`qI*IiIICO?NQLmGX>Q+vB287HbehK!dc!{MR<64b-_{1MmCEazgZ8}vSqDHj z|6$GU8qrkV)Xp7zTj$)_QnWvDC-n&Nle!1lm7{yAQ@3uVBcO0k7X-9pO<@}|t@jh& zx!hG*k{a6?jdyva>4q>I_YpU{Sq!2m(a3YQ2eg4d0<{)5FzZeTnfT1u=@=~KyTTJ!)5G2081|hF)jxmJU+&$ zPeIo=KIz03*buVp6_kIS6v-v;ifTIbbx#8~6?)U$`xd%qjMB8GpHtV(E)liDwBsnw<4SHYUjlV*SeAGVMy2+fy_qslkZ$?= zY)bXvS+qD5FtqLZ%V3QYuB}}?d!GIzDq$sqVRfR}+5+a6cEVUdm71)KoCfs@PwiyOX0`26bhfk z`5y`N4@sga9#OXdrK%WQm&j?8V;H=28nZ?VU3a_V5_uvy#LR*&i`^KXqFa{@^?5T< ztA8p9^e+%XpI(WpZ|Q%RH7mF2Fd>XW4-R#yZu4LL^8u{bE?f`i`W+UU5pyFNzE17Q(<4RmMRIv{ z3u(12-y>7m$;HLs1FoU+P<|q95kM@*>hnDkENKTz5G7@XvToNdMQk%uOtKY**)gv+ zGJ(Kj@c-O=DLnKg(&AXD$($zk8=cAUlFg2 z8bZUD#k8jLOs&zR_7nH#{4RKxRR3mADz_JpGZ(O=N0p!^b?GkN znUt;G@l&PE7IH7HT?U7N!^g|}bYS*xqPslbVo}6axjs?v zC?zF_NqoHm(xu=oL|w6U(2Y~x((CUa6_}QRq-A2pN@21r^lt* zLt}lJex#iYAP%J_#4xnBFcU|p+cglErVF?r>MH*EUcHo-Tf5}UULK_JcUi!7cJtsS zNV!Y#IO*4Jo6?trKRqCq<)h-1MS~3v)Z)!<45x2Ez&cA)8K`@4y(*LaqPYS?k9tYa?mF4_s8;BIA&$7+IryQAB^7W zVsZB;O}}q`pr>eY_$BH^{aXUj zZVqc|C*0#T$2iLOzUNd^Nuy>24b4`&P$DBa;<;S4vglM?wmD0eRTIF>Az1Lkh^ z_HHkq$sRPm7TLL`>#_zJeZ$i=)WxbaqdEDpk_~+RD-R!TpGJGwO821R&WB2zn}h`X zzMi?SMzYh|^@hmzkU=1NSIT1`soqTaJXGA}%VV#LL7!nFB7k+xA7U!OK*0x^`FTq3 zLyA<|N;1&56^S@?1g?3m=SR`4uC4sfl#)5F8P&9J+UK7vGL>Z+Y|fS~1{mD@s=yw# zqYZ#X0eyXIlk0M*o!-Zw@YLz-i(=5X1Q2?YN7#~BFit@3JJ%mHm76h&Y24?vZwy6y zZ7DH_LOJ6kSIoXP@IUr_#Qt1CqRD33G1k75C(J#Kbq4nyCXAgYR@)v2d!pu1lqk#7 zai|TV&u;6D%!32m*XWq6L}x`ftC5A~l=+_0(DQ9l+{1S3j`=m4oFD@sha~#fvqAfc z>!HU}-RE5qzoTn^X1N8MDjT=0diIsB`Gz?RxlZ`xkzRH(g68I0vub#WTb1u)x3tuR z(67&fo`?BXPOk4T%YqMXYvgTe>Pw-mYLbjO(!Guy;Ue_8ILP&`%R{(ZG;&z{{I*Fs zucEC|bt&@L(w8qUH_Y@qE7)aR`i`f)Sdzxl^~sVjdE+9!DpRRWq^7zZP_DU}mclQF zEDJNNSjfN%cpmj$>qu*OT2P^*QIk;dj&)R|_1L#dno3YOw$)VM$e9WQZBgIxuR+jk zt*o=`y zZY17UCj;KRAC7G$vD3`?uhAS8*NPbTeLXR%Z>Gx5Rij@9}cp%p?mS7%-d4Lf!^9XJ-ZjDdz> zl5^Ih)C^E8k`goZuNHONpDb3l{10hbOI?iJ9{bL_lVf0yQ(a=sACkv8b?b`9GJgG} zbEv6%=;W^M=4;todDu?_xTYJoTX0WMIUQ?wC~`OCc{R1E%)JV1UE~j*D?-Y3jOE5o zc&|3AN*ujerA~M*=Sgg1aAXIZbgcx9e6m>co|WbDDspOPRW4WaGA}0bScGCT+ZCE6 zE*Wvqckf=jX+_08r=MR+&O4%}9J3AwV@{9FX-`qNj+L{5an$6LB;?s>`GPN)=O?{3 z2+JX7QpX^iS3NkYYnx-zr$wksI2tmI;Ajm0{kyX+>6-Ew&-voNV>f*^5wTMSa|VI@ON!`FSV((OAxpG_3j^ zSa|cw@*!t3PF?sp{OZzx6-j)v9z{gu8!C3YIx5QYG$KvloM#A>>UMeQ{szT1ul20D6H92YAU#t&?DudTs*NbB76Yq+GU7j<_t>FFTn9c!PryD0hZ z+cn)o6DY>(rOr%GEm3o+H%{j=If4Y z-<%v0^f)2STBiCV2VdU0EWa+`$FHS)sp4@o+KZA883g**xtCH?ZQEk;Do)Beo=d3O zI+h@|;nU*fuf53UoY&V)eUcn!2`N3^3c{pUwrGxJDI{}Ommu6_M&s>L zK=R8d2Zn0ujVCH;%XDEn*Q?5ohATbTXXNIz8YpA5U=$P3n)2(V%zAX2jIMYej;%~u zgEFuHgOT36k)#UwVlsM~?xQHmf@@>03QoV7uW95>5cz`~@m5<%7Z-S8k{g^?mr}A* zyFT_b<19R6j(^179|uO27Crv}DH+ByT)%=4X&bFfCJm$IQhEIA*TG^Th{M#3`kq!U zl%ZOb+S%%RR1+n|g0VY^6`gSs68T)?n(>^YPNPWlYI0Reu~G}TlS?in2P{AywaDv| zi=g{Q&5x8Ac8pKzk1*`C`|IQj4(dc_B3im!acRQ z<5q;NE3yk6GzL<Zi^w3A1(O9fJ_T&iw&I%bZLTbRHf zFIv+!TSx&lgP~FSY?kx>FZWjOj?hZAd)j)tev2jnej9v<6X0JOR!t1GazGv2?TeoN3%$^ zc*-UUob{|~*5<3ok6M-xS2=ePnq~&I4U0vcSUEetDd)El}&Gw?;VSD$kY%DC>XPI8Kmi-Ba zre#C&XFqe^pj)Mu;gIl0P-ud5>gu*Rxw)yfnX3%QhzH~=L8mA;W2Zt-TJBX6z51S% zWy?a(b}-#Hmyr1*k~2<*aU`G@`Lj}?%^R+)u6w>x^FqZl#^5<4y*J6-I);8K>sL{Y zmqT?z>)z^U$v@ekQoDol2=%Osi^&Wu%-pczxnWA1f=_p;rC(`A)RBl=a~5VfC!TuN zy@AAAq&rCHwXI0CbdMoWb!uI+tg&$|#>sFCAI`OBu(O8hGH_XrcopaK%2iSC(4z{t zXBqvIN63Zjfde_Dp{ zjpJ}R^{)Dr5~SQuB9$dpaZ5`bC`WSRZa^3nZVO=$4F3Qr&sy`T&2zMRl_Mm)jmWgN zoOy>TPbRVNqLvwcRxAm|2&GE2XH~*P&Xl1^)RNPoj_m5J%-Ch97gdyF%wlkU?RuAu zMPtm9l`49hkm^v}M1-+Sbrl0^FK--~ImzQZ*PSRgFJ~@>)0{n&XBV!;C_GDZ1i&fY z3H+;Ec$uEri(pAz6|l7aB*jM?H6=;ysast)--w7Y&Gza!KUZ zmUyGaH`=|w*`aA5wGK|*+_%(PU zcvF>3MMo8}w3oA^c<*zR)O<%LnJbBlw2z&u$<1TE-lup2e9-!C>t59wRH=LH^JO{C zPB4~)*4kkcB(gJ1*~vN2C#`fbM+8geNCa5qZaB?lR~2QWI-yQccUz+;Qt?icVQoJ5 z6F%NiTfKPhwc{!7gOvkmIT$@_93~gq%iC1k=dW5Yr^=qJ<0W~n*;^%$Hto5s3mqcr z{$$w>=<~_1p||c_+tD6hDt3l#Zij6H0`HY>u>8)caxira=gnk{!#gp+PHbyxI zzG}ab=7v>m$9E&zlWU&qq0HdktiSeWFrsisIl-#ZqZBcmaVh zs=sxo(Czdcc6~nPHjYiQDc!%YHTMU@PugEp(KO3#Jl)J=jBead%7@tX$@Z_-xN8?m zz8&E)9}C+34~EV#Zoj`B*2lds?Q8a%93i>gy9B+-Imccr3itM&npsZQeYnYIbAj#F zzQ_9qE2i&r;guZLtobD?oW0-eD|*Q4*AcAQ$V8JZis$D2qBRK#2I z2u4oEH~cLfcgQ|&rtK&E^yoeKteO5MYSLX?2fi*y0i9guKTg%pQ;4r8D0DiZl+#T{ zQ7R9Jx}1q5g6c^DY+>ai7^Yo#>sFp6{{T;9TwtO3f&6;coBp!Yl)2l`?~Y$a66A`} znRgy5xt`Fo0>B*MM?4y>apFtqq9R9TjfPxz#dFo-99EpKp;YjAd)=){m)hOr_TTFy zVn!815mX;j)mAT=lhYB9_J0wzJv>&{QV6& zS-v7M=5l?Gr-g*z!rQ~sT+xKTVz{OZU5U-8OnC_S{$t}BqR~{m*&b8dB&%XG{tKBS!+Ks{7yG~^|$Iw@Z zc%Q{rnx(+|OwBBrAQDO9zH>U_H(H;vj-1D_fXXP)mppr%1^PJC;+f7&gze`%*DoM4 zT%6<_*Wr$ZAUUtnKl76DH0)dYkx(c2vN#%t3V|E1(k;|Rz3QBL6sK$;}IGIW~ z0+CRe4o?G-n%ABXj-dr*sakF(B%I(=31*Bp1dhg(ttea{GIt^?wKoxu>rMno@?i1M zQ4yj{lOelSIT*U;MNr-E2nKll8kj@oJIEbc)0katulBgV93fx1e)uoHBuLP z8%~s=uScmx;duBeTX%9OlGwv$vLW65;6)OP_NlI;ihGs(#>r#Q^{vepQHs*^O*~$5 z?IBf;FmcwZqH|6QbDmOlG-H3X3*Nbq{DkJMMS9;Z!-2bl=~k~nB(_AW%I%xho*=n` zRFF*A9ldMO^j{qmWHPZp2U@>p?Y$0|In#GNcS-R@z2%H@nTGZ_Y#-LUOD%1tTy9p6 zuC>&m4gt!X z?Z~fz%`nc5WmYTQk^06`#(|o2- zH)Ni9HM;|duF5dL#}&Y(DJL0jWl{WyDNdgI0m`Tw5*TG!5rqgsWhKEG^Y!upFtAlaNDGi820qX>s^+OI~bXmZyhV5 zwPfk&jOry9|uU_T&8{=(Jy3<@;L@vHwT{8+8g_K zy;A1~HB)KNLy1N5S(?jnZt)GSGgcC0^8$v*>&t?12NfAU<(rAtD_z{=_8iu1Tbk#tN%pCQbNSr^^d+m$CRjGR_c za`$Y#aaT^#z0F(Hb1^ZJPV99RwWHWI+~P;*4_fJqP$ZK8lWU1is?^RNIXlE&2Jf;?|e3+$1%91opMI6DxRQz zwL3b>N}OeR0<%w=T*Z5>+{n}h%Y5$Ojw_Uf8cVWU?+<$Gr&IS&%$X#bY|`JmAeaz38{BN?E=M@6m36j8jzNac2CAgfk0LqgseDs3 z^u0zad;RhP%Zy`oDqHb`pk%n^v9=s*8`s{xf#(5zj>MV^0F%{WMkH}mT~qcE;j?v zQ5@Y{9on$aOFxX2W-*$x?T z$gH59kg9S`Td~<`Q2B6)4{Fz*a$#Z9kIs~R>aI_qQ;)lTrxU13$uT74^)-Sed9VKf zck5odakK2sX0&%Yi$-*CIXSIXww6X$+D{#8mPtnJh$&81HXxT|3!l6xlg=3P+nm>s z;P1?OZ7JEA&>uG8vQB!|MY_8yNIo4aFO7i)z=i#xx%;9rqc!llUR3?27S5ax#M?H zwrrZ%&hqd9J?ZSYi=IfV=XURX&6bYmJE_W30Z%o^UP~vPxSV(EP73JkgHkBn>Jltb zZE=8d-u1|9H%$H_pavEy!h4gp8o(^&ZK3B zlYPYMdrKv;qOq$+eS1_-9>+O2=BaaT$(r}H9~8l#)Yaqxvf1Y~r!Ov}QL-$^2M0fu z3Qp0UMJsbFbre;qYCWUOjm|;mueDK?h?9HI?I-iDh43S)n$uD12q$-ZXBA-rr~tP) z=DF%annlA#Jj6DP@>q7L9?y8>1J4z*ZP_k_R9A@Dbj;poX9Bv|BN5xCI}b|Mqiw64 zT)ekLua+6_-l)i>*yoX+Y066a2^QdN$&B%ewq)7R^P1C1hI|#_nu6ouC z*DTUtw;8Re#W>lGHxySY+xLUty-5UY)8+Z1QC$t!H!b>`_R%P1b{XTPUzvoBfu22U zohQy=EoE|)$8uvlr|Z>pKR8bYgRe6HFP^A8BTen zSqnR4K8Q< zsMM^tH&AXDdz?MCZ*|5}cOV}r>Orqe)3kM4Q0>f^`DEjaLTyr&2T!+yG4C6M%$Ao2iCtc!n&&!C`ssg z_{R)R9ZP0nTi#CyWN*9QHKk$V^wT70 znSG^8Z!uLQH(Z{Esn(S|N3(l$Iprl%GJa+-k7Sw74s%_mgL3aELf9%s1$I@9;NLK-FBR3X>5`8uG;jKXe!Hp)Z@ZebSpYDdUP};oi1YBG1I+e!2lQJ{SAEe`5!Ai zdb5us)as!?@Dsc9uR8Ix^1)yVJ_vk;Kd7%Vl;-hjJq|ZT$_=iEkj-!|5v1HVXP>QQ zU0fHjc+cG<9M|2-GEUu&Dp7vTKCJQ$YS@eO#!!9JS$6SxQmdYe>tAguuBH`A9glwt zMMjHnbF#9!fg%plU?9&8*13&mQ~O29jXEBB*O5XFGjcYmXi`t9i(@<3>M_c$cJ9k7 z9Ov4)*mX9Se)r2c-PW?juWHoVJV-h7G~SJn??S&j`TLl5JIn2smthbmvd& z75SU>IAu}LsMNj_Hf!H9aLh(=ll7|c+-1q#kPc2OXhu%6pF=3l^%{E`5zhljl0zJG zRq6cQt~+YqTha<=nX7 zfzL|wU0&T$NkPkciuKc*t)bgZLBjJ|qnnXW$+f`hTRrL>+mMqX0~}yd=7iPR=gw_5 zqF%MKl1RZ&WXR7?dg$!58SXX_12%GfD_0tQ_A^sbl8ZWMJU4hE1VqZi)oQ|Mnu2FB zF$DFmIvkRzy^ZBoRO7LB9R~K}WNB|Bl07qn?_0;fI)RN(kmT*>zH8BiN*HBk_X?P~ z&MTKwXT#bB)|ui25~C;pZot6JeHW(NO1fM#1RGcQz3MR%ii92RWeUl=EzaLe+j9eN zY_>2fgYl+D5v@AvZcrNb{XHNB;nck((Q^c&|~mun(pTs3jLU zuFQSvLtT+DybZk;1$-&SYS3$f`+w#e3<> z$B=Wk?+Q&KKeR~1oy3YEA7_Vi>VeKPoLep2+{JGp4&OF0T+PM&lie~WAo0y(8a~=; zQrPILB~3eSTDFaR?7HqIx_BdrlXy@F98}^XD9Y$m`4VmJ%gNA>#;eUKKy%X-%g@;=|FC9$EGXUz+w5QBzh65;Vm~P+iRCr#Y}IZv zs2T<~3s~Dp2)0T{Fb%<}5=ZOk)GKYqy5zO{Wu&-Z02D(~F@RZAtY! zTsA5-S0${>ONgCRw$K-LO=dg_X3LUQdSk!65uTU6yB!gv<2x>=4dWYoaFI$~g9G9WOjK$l`k}vR0N^gtc{R0VcLEsXn36Yk*AqSfr~v{Zm?Vxa9@bo^@~=XJ%i#k+&RK9%!yl}JhRpG#6yYS4&KbCKSlw!e{K$po?Bk^Jk{rw&?nJ~maHswHzsT!}3JmTvt? z>sdD`7)pVg zMYuBcrO9R`$RHjCYI$#SlNlv_Dr)N`D6JAZ=~4EJmAzRDD_f~XQdP5>jtS5{^4ThL zUW1fpM)4y^RB7&wukB?J?BjMhKBqOC9;-Z8ayaJz{J73*%jDP*?_+Yt;$^xr5CVnBIr+0&3ptW>Ecx$~MP5iGmg#k9(;-%R1Y2x7tr7p)gJ;K~yfSohxT~?cJMX+Y!^Vin4 zgj$BZ4h$?6d|aG%+}cgbnGN5qUos(yLlrCEJ?ko|Df300@=Z?C*tG_@i4YvA2LuzG z)Eb@ANfD7)dYa>vCr+<26sz;nl|G2)Jh^VS1x?|HVN~AFY=_Jp4SI^CX|}qaN5t(V z?vb~b3K6)DIIK4p65cyLLN@^Ct!C!ro08Pw#LebDnB<++Bm5 zWb$iHd)u3Ho}DgMAIg+r^yY^EywE>T;x^qY+%fdCI;MY9FS|AxYuo>x^RoNLFad+a;Q$Mn`68q z2BW`2h}E@$CF4l0SZ5(Y<2BCtmp6?3;X3C$*RzL=X~$E}eA1Iim*TaCKi)9hTXzb;uN}5Zl$lmzg8))Pf%3e_4DagUDH&XGYrKm#D&v4`^ z%7S`x(!DBJILaK-TAw|L#W`9KXDuz|#n~mBc1}R+S{6DT-R?hkfsW$62qjHx&`O$< zQI6-KX3lhf=(cO6{y6)8JN)I94sA<;Uw@WqC@h8ePwK4^B9HbL#F(Hl-X+ zRR->O#b!%=G_RQ-?=>nk5?6bQwQ0`r=s?rB8yDv8b5^b6l1JRfBk5fhQCBd7*2XW1 z0gp(0o(St+M`^lERN&+v&=u2-wa&YgKQh5(kNy*!0IW z#Gx3=nD40N7NWOC#B<$CZrj`w>VI0NaIF6Tc!up--U{rhkDffzdb2&u@s|O&0l_sB z-boV;z_G;{yQJ8bxm)Ep$Q(CC9!cIrT7fW^5;5_iC;P?bntBy(M*CS4&OGUzz~Ry>lrw5uY9A9x&d zRZ1M!P4zFGs2O*GS~-zAj2czo<(*^B~Md1`_e_CW@*aGcZ_xSs{$F$4^mP7CM}^?r|>Q$C10GcVX*$H}2?gRifnAnY;bJI?R94 zFanLDtw-W^VnnRYG07)`Ueq&eT7puM#;~yVs!O31n%hYym>-<=&ouZoXPWCJ_j-V9 zlBP1c)0vxl2(2FM)`IN_ca_T!H!gcqE_Kk691=)4=fAyqZmmj{lD>#;F^lChhOF%D z`?1Fq(|a_iNq(cDt=(C3w%N2(YQ$|j9kG|(Dilc`>5?<^9zY%a>soS@uKF1^lh>(b zH2a2P5Hm;khe&*s<(L4%uM1v|PxYH&o zNb80;2fc2tzv5YBTRkV?-NnG4<`T!HswyA%pC3=gy%^`9Cc^?f#NT@+*ZSB@(BcLRK{Od(@UyWC~T1?s`wl_FZk;^AB^U#(4m4d)v={G6V zxaC_gl2VK}H}sDU{CSgK65nYuTfosBw{Xr(k&-dU>xw_&0{HO`r4U)HWs}Qn$S&QP zob<}$eA8|pxApXmGt>iK4-wL&_425En3rVGvvit8|N8&3Ye+_=e zI?0vc)ivD$2Rmc?O`I){QHA-s=e21~=lC|do#q(tEglV{94U~Jr27n4IjMiaJiI}B6qjBK@y?y&8zu!(TWhF9ap#?{jAgm? z>0Ov^C&b~W$&917Qt99@wJ-I0hmLrk_8j=tqDvvR@ZI*X%G(^M+>st1^R(C(AD|uR{?*Ce`eD)z+1$!92oiN#YSP zNd%EHm2X3l#bn9m$8cf?<|B68)>y2*z4_y;UsOyg)9STEBspEr!5`$+SuO&S(Z3k} zb>Y>IL=LT*00YPx6;VkJgMH+GiH)TPo1;e zR&&1AXUWOqn)51oY{-&LHubqsAKn&c!Ove>42vi($G;Re?xc|{RC;Z#1}ZnH4JLl1U~KDgHZ^ioTS1ET+f)BVfny0IM3Fg za8xU*oxo$0Qzq0~+_a@A*@>2D`Rb!JEw%l{y10&3k31Y4X0oRhG}GM9Jh74+B+^fC zWRbVA;fr-N+1Fw#hB(I}t;Q}E3Q?4x?#%r8vKHlzcm}5H{5zY_RW}(&m6|5w8?j1> zNM<}^rD)s7Xl>Zag{9lZ4k)|iNi9lB3i7D0b2dzGbJHCKL*=1h!SHdR=1 z6JrqOU!Ud2w_4kXsnDkcE92)Gu7~aURhe%9w&V9OtjCb>mpH)Z$n#?NOvF%!)Di))lGA>jl&y zT2vP#^@!V_48ePE8(F!zxsd+=t3lJ!xXbMl`qEOe!zSI_n3PD|Q+Cbn%^ z=vZ5)KsSU(+B zW@32+NDt{5Mtw>Hj@ymMGOxkc#dz`Z7 zwaY1gBsWZ(umQ)`w=MNK9fs*M$2qK^z3zU7k#3@QI;}eRv?I&NJxHy4om$~Bk_O|J zu6af>s(F`u?RGiqjZx>FywI~EpO-lq^{imU?#hGCd9IGH(DdoTKFa0zk;9CPjMqnF za?t`hbNSYaaGsBC&MB+KoqQKUdmtF(uR&GkwGx8E8SB=rol0=Kw^NcUlT)6&vwtsn zB(OOms2JqhHi43PB=(|JAuV51suNAN#s=GTOLVJnGc?4Z$d5&r<|r75c$yQrH5w=UNF#ZkJs zSfMOW9qT)2k;e~<)bU>$Yo(LRjkhK)8=O)YFLe3(mNQ7s*ZnJ(p^!l{JpJ`TjtMt;*Tv&5$L%pal1EO z{F`m(rZd*7!*o2hVsgf%MM6HNyvuV^+C+3GjAxql9}T2(=}Q{MrP;prK5D7PT#fmj zb}De?)#`d~pJ=xB0Amf*^Gk6q)~fxvJfi-blnH*z?;pmveZL<L2naA`6DFP zOq!=?8M!&KIdk@j8M>AAu2$)M-9((^kGv|cWb73eHio{QL>PUiJA0akQ@SrAwt3BS zP>(fEcd=C``>Qf2W_F2~ob4GkZV~1=X8FC%YbR*klOA4svNnb@8?YyLQCzLfsQY%{ zz%eycXYaBrQ@)7kY@=oJ^VAM&R#uK!nID?wc9gD-<33nfm~z`Nl=L}0szGXewcVU! zy>-;6)N~V%I=Qu{!jZ?jIZ^o5+)V?>T;t{EHRi?2UinazIV{S0fmd=zAPnNAvrjat zXP$<-d6hV%`W)&vc1K$5ky>qDFfm!)bF@cs%}gKe-S;Woe2!OCV$;r^|g=(r7lO-ql^0yZ1h|+D1!9$2E;fDYnV7O+>dV5eUG^9Zfne96KD0axu+P zc8!fLuVikrk2iB1n&OQ`eGOqASr7*#=dTqE(~%id_01_Ybj{x9AF5n~I03p>C3s{J79_AH zs-L+8<<#h3356?3B#gTo9;c;cY9N1Rvalrjb*`BH>8lfTpv=2#d9C)`$QctO$8jh5)JASe+};t>QS!umqTNkp zc}2@-C!FzA=A#RZsV31Xq5ON)PS55Mg2y$i7gkeAM&rb+vTY}t(}NN}%r^=WvQkD- zpE0)-afBtXAF-&|ox}shB<|a1KJvRKZXv-rJ?gV2Z4)7^7x+ry0sF;zxd> zvT5Bi+PX0%kh79oIjZt1pxk-Mt)14fG_-kjBqfYM<0CyQM$K59xaxZf8uwd7$?Icw zL`Y!guWGKWe1gP+$Gv42?rL+|83 zY-HA|H@i2oj8}3g6v)Ga)0&biU7MKlY4h^LBTdcoB139^XY4#nQ(UeAvLKyOa(juQSiJeNA6@4Y`2LaFb4Ex!l~3YStQE zp3O9sqRj}3n1X>(&Wc~2a(J!?`?7q;O-m(qRCOsh=QT7^I6Rz_*19D5mZzO}b~5ID zhb6GpktOOIj5*6=J!_q}C|z!C1mQ1uqjP$slbXi3yi!OVdvn&VnsJS~oimbfNswF4 z(n{!0L&aUej~PfdWmPecJ?mt@ld^BRAci8zF zp3)DQm$c|u&%%=1xFmEn=$3X8Nou5n$E|$sWr&S6cC|O5CsG`Xb5`EX#m`*Vq-a+c z7Pkt^(-;{e8upV+Dy^lhUNRzBhMS>JJ-h;w4HHs>*M3 zcZiFn%GRYB)%1>>DAk7I zKm>QMd9u_%feQ4;b6Dnll_$8c{IRC}OIJGNOK1a-t)I{9UUjW_$}4~QXcuYcn(*+r zcZjN>imQm^O!NI~;sv|etCVe`AliM)JLC*#nQx6 ziiU@m>YCJ&sKaI0e8#y+=XqDlZccJ@U!c>V=&Pfb4~dko8=Vh_<$$@3z*C-bYkO3+ zhUZUqTodRk<#F8b#Hxn?#6Ua0qlc!R8MnVv%;oK6-slw`DM?QCaxAX22{aCz%mFEa_e!-eOkV_rRGonsj%?CgvG0NSxdWx7H} z-cC8M7V+1Je%C7&W*8(A)L}4_mM5IvScOiFp6v1^*H!|^a^(ELkMXHLw8hQ2!1=51 z>*1vcb3JYprxv*q)W*I=bmx}FaDQ6h^%-6X*#eS!@m<(hN-0I{W8SA~R1)2oYpTr( zva_6a%}EsgV;LOfh^~oIlvJd;o_my`A9$PPb~!w+BR=(J11TT^NeA<;d0I62WN|n* zCTa|fy92u!0;DXYf>h@@BQ@vLmn|(zf_8T`EiR&I6iB0!(z-Zc4Blq_$a*e1SCJ^% z*4XBQbAyfbMc=deimbzcE0@%5-DZ&&k~&viC^^pYDy1b?4|(ootTV84AYE zvSCz`2R`-dEH23&ByObFVc3!x#v*2I{XoxZ+O_lK1Q1J;_eW~ZR3z=r%frfQd+2Uh z_;XR!uKq$#V`k`sSxupM@%V^{lAUjY^NX&rQ01?8{>2Ktdl* zJ?gNC{in>8b2bPKRc~P{_dN=8lZ=b-AlL|P()Tr^8Z$5N04F^?Yt5@R<+05dC@D46 z(uxFN+kka$FniH(Of!XM#zt|DE8fA@bCh8AH|MF&j7z3fB$mM^r>#KOEx2KF39oK1 zNj76Ia}mr{Yn4mPZ^+Lgp}V+>R~xZhEh*Y*>~&I%T}HYYo`03Om9zA&gGjXdb*YfC z5(Az)*RMi{GIb^rrj=C~zUQUs8f;dPd7Hm@F@xXpuDvd!XfSb;Uc}T?Zq~@|p$DPaH)8= zt&Sc?3eE`yiKv(NlLR~?9AJv(lsVR&4?0RoG>?DqUV&?Kr^M>3Au;6c{HxitpAFh< z++b3}rxo)U%uLlsO&+Z!N;K0*>JEW!${nK}hfcL>FALk;KG6tapYGS2O0402W^FHL zC3_u4m*HC|B~~yge2y{JyM@p!%&J-hjaYJ_dRF!3>LqP-IqAA_jhfWRz3|PF%F`?> zyV!oTozpezogSoa$0q>_p*5o0)E9X;*7&s~j`Q=0$T$?SGjgQYbZ1Vl zG_BODWQ}j)LklKUkGv04UEh?=2K?c%+PITm?N1{OxuW_q{-1dyPO3@IrFORWfuIDO z5nVWk%#@?Kls(qdEoq1*)ZRkC^y3|Cxr)v=9fNhOt4c{PLuk`eM=9b2FIO4a%rCyUyxzAb=qwg+-#S&gluO?4^Ygu&2!-fN#4ne7}KW8+TLSbr? z=9g1O-p6QM^24dE=;2hhA+gfD+*NfbXm?Vl7+JEUvVcBbqOvb850b)013U`zB-B&6 zUhAo$^RJ9AVmDK6FE7+ka!k;{P9;_)sHMwMS*FI3VcSqbZ z2vgYNon*|?yEANd zIFRww3{^QUkrZZ4$8RGY>zDpsd#0+a+?1qw{{V_-Nt8F7*(93PueXJ&r7Rsi{_V}r<%o|Qi@1U(VUL8vZHry$AGHS zn|#cr9mJ3Rs1cXs3esCfWb;>+Jen#~QGYV2w}`d2EkOp^l*#gtLE^hBNs(0@~K}6u9GYm8zgllz&JS=H55cT zvaj9;Jk-f*r(>dO4ab|QY8D%c`gJwdX#gWMfbSc5J*z5{oE?`_(ZlOjHr##msU||G zENhvRc`x$t8@){#I#Fql65{GRErQV;yF8L_&q3*1R`$`e`K23vG1rRfs^NETrw$&Q zoUJ2xM20Mt$E^}5jd;OacCS4*Yd)vaN)er>*vETmWDg(&s5l4fP%oI4Wtyo1@*>S2iXpH5{Z=Z&oVHRAlNh&mdJ& zK331JMPQqopD^U)=OKN0uG(spteM4$obII+uEyS;(!Ibk3=HR`chF0S7v}orqPwP* zqty2B5}JdZtVp*aII>?Px8YMqbrg^t$2|Jiiqx*r=r;+@)9PkVbRoI`Hs&XQDl5Ca z;Rs?mtlt1Q5un4ZSIl7n)JseKL!$CV_} zLs7a*Yj$8&PI=9FQI+ln>ZkFHc8*}@buXn6z`fM(U1MYnw#F|j_SNjQd%Tosg`*P zs}*K!4D*`a)ATF3?juP7c-Epy)j#Q2@U0gB2 z1Wo0IAx8jLjaGFlRrhvhtm(p(b@+*e%(DjyxfsXNqgW?dOO_;euBg+EFPV(nl)VY# zgUp`=PBEU8=F`cS=3S&7m5gddU9!?jBi~Obp~uX}u01O31!9G=d8{hVQdU6Mvz^*F ze;3^U0H6S@G8>R<%`DKqtr=6*!8os0gk3rgP2T65TC0si)s+f}^Ogi~bNuU8**u`U z<2?yA!6eeSLC!g=B18~|-Mx+~B(#gMakQknAOw(4P<^VoQ6XUC zHLO!enLTeVgz;F!WI14fjO2{gbi(B%AwesiwO4L>nyA?(hQWCxK#4&B9A&%Kq<0q0 z7*&uGdsa19vyU~m+&8k3HK|3^1e-}Bx)VCG2UZIpIXN6stIXVAW3HT%i&oH%ZPz4k zI2g?q*6Q;S=8)Oxjty%mdp>I(eR#QBp}vt1C7U=P^v_z!xCG2eQVw(VsG}&Trng(2 zO-I@5xeIwuE3^LVaOsMxy4|LcfC2OPR&$+MPfdimJ{b*H19us0cc|3~kTytM_pRe5 zr=gujq^w?=NSjXxI3WDP*0LkGBISq#j8{ssotIrms;%!gp=3^OAq24)$0DxBG6S@p zbH;0U`?oNKt$UKRt{*Hz_Ba@+?Jo>-F+zHB2%$;6#Qo=f#m3a7Z~;9JLEfHZX;b)# z`=EMJ2uZ(m!d7zTk)dm2b2%}`ld*RaM`K=%q5LrMe~Bbl(==J-vjA_o18OhlT{V;_ zE_$!d!i=g^T(s5M=&SHX*3V6XZxwjQNYRjh(nt28B&XYI2Eq0uRpTGQ?+n~sCELEc za*g}E+$?$Hs9svRRwomRYL*raF5{Y^hFtiWYPu1{@eb9r&nv@!4kx0O?m`yc4jvQMmduUgd$O42p2+TA0^ zO{9VkKaF%eeF_of!^3W(jtZ?`e-l#e^gTaI{g-|p>G8tWx-8Pjt(G^J2H=c(7UWl_ z=>Gr&yeFkd$4~IhoJVE>XagU|j2iRm<`|lvYR7yiVQG9ZJ9}S;Hc@O;(rpuCZU9>@ z3HJn7OBaK#n#fy(@@>OzSfY#~XXpSG=eH>>S-YQY3+v!Jwumbvg+p#1TD-mhl$@A} zKBcrPJCK+wH^vI}>!`O%%FR$Jd z*DqEa>f4QPhjDHB5m~?96N1FV zJ>v%i*6S3S{p3`RM}nZ_=NrZO7GQ(+i}0lOZQ-wo@(nfyKj>GX;4LHK3=+DS0kuRxJDg+;{cDP@QJ3PO%}M(?_cEmO96I>9(=as;i~j(# z?}{TS@k{o9m%~dVf2I~~t2g(G#~;d9J-1d3_rNdM@8X2TJQL%q4+&~gAq%JK1ry89 zJ4}FpzQC3_6sh7f+@dYge$txU(pa1pCh)GgB+oGMXZ#b3#Gmkw4NJgYCDS}xVdNBL zvbhe~9OM&#Pp~X&;~yJ-%wH9J4Sd#m--WML&QAT9RUNaC3CQPxUgi%w%QIWTukPmi zo6ikWGE#@V1Hmu!4MN81ST5}DZKRF1yH5im{sfL|oRT>g{a?)(2Q8j6SYj}>D6Z;V zQIus4Ye%CYcKz8>Nyjxz%-M7thV`!@#(xiUs!?2xGOM;!7VJA!Ne)znVhv?mO&>!f zxut%EDH*)pPDt(6qL3t@iI;yoX0qmQeT>ycuB=ff=PS!+wJ>Bq-6F7!-A#5KB<0L8 z+hYx+{N9v({js)Kjsas^B(B=ju2iS*Y(&Y2XDyS{if@=gC<6l>eJhghn$p>hPI0sD zN~D3fK1u1GDJBh+WhJtC#dO|33g~L2?8uMGbDnXG)Urbnu#Q#8mvQQPigHVIXBF>V z?8?!*7CW226+4q8j0Qj-!&2$;PnZ)XKwa+G;n zxdARhg*>sT0T&-7>#l0G99^Gs<2`L1%eo$4K)JGJUFu02n**NJ$-aKp z124`FI`K_OPZ3ff%%v55$s_=w$oY*{^A$?0jfU^VY~jxZaGO$&qeu+@0K3UPp0uZU zWxzQCwr+4q9P#FMv1&OTQzYTBTQ+y9WmS-sW5(f7`JC>V(Bh=7_c}{^+2EY*n1Zdx zt}CXu*5RB-73@Y>m(rr79Y^kH(4jX+%@N&bdS;}?OEy@J-s&vHQ;WmR==DbdeFeat zXr`3R3lfZYAbM9dHNMH4=Hofft$g&{ZK3*B6{Q;)_bS^-4g1ffXPzS^htJM2Tx}~S z6ME?+ni>fz7!#c4r}GMpz?=?ickfwrIiS_wFC-!0ynoaB<0p9|1~!4+=R zUR#WlfDU*aYro!fuFl6e#s^HwB8f{4+;^s{65H2-TyRcK=-_Q9amlJl1;c*u^V+rT z^@er%+vd(e_O7QMSXuQv>2peElif#gXwvzCx33)ata%+#N2V)*-Mc=AToh8VmhKxZ z*!DGc)?`#*56o+_yOd*du|_eEGcoTjm8UBkh8gT?sD+yZgX>#HoPF2a;!=vJk!~9w zI^gd)#c0Q3HWG)ATDMtJ_idszl9Og++I+EI9x{!Lob&Hh?`@hG8bt-e95Dx{*10NG za;@rTtadP_x0CEMT=}8n-Z2^KJ?lHqk{F$VEJ@BYUDRg@w*y$EEztXUU9MvU76fz8 z73$s>fZRBC7$Le>u`k`jnR*@;GAVng_w6d&MPz_yKT7DBgtlVXFODn6vrf$O)3ULc z23)ahob;`mWysx(jApuOMRHtqAG%IR*h$Y$mCI{40d1V_$pD(>ZN(halXAK9zlg6E zYndfO?UP=7pwFoWf0*YzYwPLil6$Yz;KoaKdl!ank!&N8K*J35#aPy*b`Eou3(~v> zoUtxXqdKU;tU9^oGg`6LH}5Rc9-f^40QKvqwYD%spD-uX4z=G_YEp`O8DZ%qHraCL zP>$Ll(i~@u;;vZD70})YW&)?#a#C`M(^6FBQ<0M1%Q8pgp~-A*%~fmHwuElZPZ+7C z1lsdC=RQtp^jaF)cBv%tM}%xM;MdWf2eW^%nWXuTuS(w(y_Gv7j+X{QUw z&{pNM?rgVEIHMEq8NyF+? zLvg*4YFHH;aU73I$-JDX!2K%W@6B9Qr0GSYLrjf|bCxYv)Cl~=EJ&%Gle|%lE4W>d zw3&^`Iblt=yD?4}o^#JNE*EVwr71$kMlQ^;WRQOvtZqO&o<6if7f$^RTzbgo@9qSb z`vC+D9E0y$T5Y>c66EkOdGG68llX3PDLKx^XKt$y3I|VG(30ddJDB4Y!5Vj$F{-uB za_Vf#Tdrz~k1}lf{HQf((8j&YySqpV?i)XQ$pL)+rpDrfJ$^NuSH;`=4bHfzpnnm0S4B(!ImYucXKWb)hQJ#uT5(*&1V z#J2?x4UGDZE7yWbEwh4lm1~}*VnlYT80NYd+?dCwdh_SXozATusF|B_KDqqsQruu? z8947+INe{X8(SKYf@VeM4aP-vc2ES5b8=65**Br*)$Colm_==$O2MA+mMnP~t!g`? zDDG2Jyze<T5YAxt=(voXY##>h0*c-yvD)TMX`^Ay+zdrSJxtel)4#_G~x{p&w zRCs^01Zbd;IM1zVczA}4lg0-b?@9AV59-be>YJ>s(CXS{XviFzr7EyEUgoMU%axhc zSJb@(c-qa^t!>0|a&f!br(4)s*wS7`;B)Csnp}c2){9-FHFQ9cZ;YJcp_1PcF43Iz zHJqlR&WdnPQ$h%_A0s?cy8wk3sHlqOcV@0U+8N|!$Zm$3+f)qo^sa=_&eDsx=}I(8 zPhPcF7Xo(o9&d-;r-AX*l<+*-nNkPUcv`V5T zInOjSoikLEz0BF?2|F%wbNSPQmK(_98O?Rc$o67)`o+>%5 z6&7=-r5g%G@uUS9dG4FJ4=+qDDsMeot;{DPMc-9<^%D{zW}u>SwPRR_vawZ#&PAZd2lmr~{P3Z(g6{D$ISI8<4Bvmi7=2FL#>rF~L zwmPDteL`qP-&|BNTW)p)5&dZ?+9laJ5*tR{f+>a*&U)s#`Muv$STzU?X2f7O<5^OG zBxc5Q(z1qMIf#_*RO<8N>v%hi))fJ?^zB8yPnGdU#WV>DuB)8#v;r*_$;8wCd(^G$!=N%y}R;e&2h zk))fFvKaXXCkKjn+7Oe}3T?RRI7K-xBP&psbR+}wXPV}2U6mQL^L8e>X)Z%E@S-O&I)wC2YdHm9yMHR8T70`u?U}qekTGEE}%_6HQ1079y zPMVu?eGd54g3$bS@fMF8YSJbch2@AHde=DyhrV&grzXCJm2O-*lj?Yw+6mO<1f<-UlYOg-ER;XH{}jw0B0{gt5mbn#1NNn(g0Owu;m#JmZ2rYl5vgRjN%nQKtmu z)ZumC5;v78jF3-En(?h)S)S=m=RJ7m?^oGnm{`Gc^*mg2jY;ohd8Vgza+8u>i030U z!{1*^B*k2u17D<2r5W1ig&t_hwbX2QXvBnNi0Epwc|s@iFw$d+b?Veox%3!nbfp-n z7_v<@wZN7q$vopfrEOSiuPmZD*zG4BYnu^Dm3l4p3eH%1s-pN_=GFD2Q`z~ua@|F7 z&$=tpK+9&hFf|lnw(Jv+i$po6(l#BBdF&j+H@0N^RXU z+x#J?hteQO)O5%myjP~_`Y2{`B!4j@74jJBp3@TK-rAhgT(E?Z2BYDlZ6n;-?@83< zSy=O3-izWW*4hX!A7h*<5;!$gU)Qk7{iJzS>PnU;nk(IVooKvSGN^JhRW6}dDA>za z$JCRjRV!+bVp4}HXsvGME394l7``m%vy?nZD&i$Rvd|e)O72Te7d2Qv&S@_%3deji#Ll9(AOM{ik;MeGCQ>{&3 zW^}@mrBXNDmVVhBvb(+mV~={{bvXmxz5(6WCbH*k`-ihp$}l+FpzkmX+uD{1B!R(f z81a+pO?tC`yGib4T|QlU7o)vKm4h%0O?AE>M!mmKe&FSec{rFladTx*q@{_1U0HVh z)h^vY+v!lMmyLk{oDA2P(ydJ?1xqe|rPr;PJj zLWD69aavn*nt7MIanwr>Hfhq${7I7IQCkRT8%`{QjS**2oNe!4OJ1cs zJeM)@7--kTN^17DhYNe6`B#!7NAm{7KHI_9S5fa4&9w8=tq_bU!`j^RBU({@#p@#? z`@-|uY5+JYfMkYVe?QKsPp2`ADvUp3!ltEYRf=(19d4v)X!J8)(rBbCx!v4~MVd&; zvni7&Bi^~3RF^Rv_l?%fllx7V?+h{QD>ma*mVLmnFOR)lSZXStzGW;!kGj6{qh2hQ z*nhk|YKXr?w_+t9G2@*5Yu9d9%<1_&n%PxP;A35At;-fKgmwRK9&vu6e7qRh_UyW=^o^G<Q<7; zYTTUlHNxNNGP5uNhB-CaUVO1lbSgaa*RjZ4+L+mi8?b#UD|k$@rZTObGlSTiSGCzl03Z>#9)0WL^Eyl0zFvo^PSK?o-5Unri!xic zpst@s{rqa<9Ca1vLYj0XId?F1A3Bc5TeVUpbiiPEtMFWjVpehUk4p6L)T2_Hxf6V{ zO_E)h-q7}9d)F0py)Gn7f~V5G95oMm#8i^yG0ma-O2{{L;ELa6f3t;^2yXmWp&_~qR%kaiGILr+oUria ziObFPiMIAMZT2B6j`g;)$K+rSo3O4*>Phn>qLQYxEkMMf+HSwn)6>3Yk~_BAd_s!+_rju_3NFdIoqKW?-^YA%fuJYaVs;hBYt^4 zwZUAOCf>mDy1tGwS842e*luanb7pC`cTl^D!(<;?d4;2o%<5F~KDFl6sNBz>p-IWP z$ck&|qkoypIO|pI99>^I$z{%Yu9`I8v*s$NB&pf%b{2Mb5=2}nRrVcgYCZ9M=cpLP za=E2<*QuR2P8XL#N7SFoATCc#imT?&Ea|%}y#dGbu3A!rTe+&m`%iTvBUiUovyw~} zW*8v#HN;0^rhE`FyC7Fy9;B5gHfstIrjuPwD_a2##Ej=8kCYm}cVs29J9unxdy1Ns zeWOyohtkl6pyMss#z_+!lO73t`qdd0K|HGb;A9%~AwPG_`D(NqnwOaUp<_^30(s`5 zmSRCxeBkx2$lllLS1%-5MxC_ikpbr5;~Z7Ps4&6YPTqJp&2=~JcRMLs%Hm6{<^vdF zAJ;XM`isdgE?AFF^^7C$v~sHVUh~k7IOVvLB$jTutC3j+W_KCL=z7-GD%mu<7%DDJ z$qYo0HU|se6|W7!SnlnB2&6T|XEc>QR;0Hwl>OGqS29fYgXTEKK{Z|rhY%67&B5qB zYpxXF>1o{HR*Srd^%jy)6=T{#$>WplT+IGv>|~+pL9Qq`%1$zOvB8Rd+DcZk>P2l9 z_r#5s^&Kl(J6wCS4hN+Us*`NtrwB>wsVJBynf~s5d8$HXl5(dx9Fhhr3Nn>Qb4cr) z>8NtG)Vi`HmZ76@&qM24_LEKa6B541JQG(dN~XOHV%#O}mgaU@)sHW?gH*0tI}3L_ z)=7Iwe94Ttq~+BbHV`e&HiN*(#~jv}D{rt&_+iy^(AE`O`p>gF@bTrnNpv)AFD#{Y zR+smHa0%;GZX}O*A&X?=gX>z#GWN~MYCQ)vCYox8H$XO ze=4mJG9AW0o<0f3tzWWSx4GuktI0dGY1#%CS>tb9;w5Gpyc#D8Z*5X z(VrFM(yJpk%iAKXdFD4&4}f{bX;h8m?YZZv^TpJbme`Va21F;7^&RTbXnd650)6Q& zc~g&*9Bk`3OJVAf>}NxVCZ&n|xdvP7n(LfY;L|+X-o{lu$J9xs4s(R1WYxMI)ukBA+}6Z4w-KzwI}s)`!RcK>YJzDLvz@rWA4=w{MpBY&=A$JA z=FYQ7)mAt{&fpW>X<&CvAk1nz`_}`*x!2`ev+1z&g2KLi(c_wirzP9X zJgmY;ErWQu6PEy z%bD*dK)Z-s_UrFoPNN!j?0Hn`)UD0tT+=L6f@RK6T-A+BR)A4_-;f-9*J@c|UkO!rgeOjjN2D5J={x9I>XkNQ@-+H7zaQa;pqr z0)HClBh%5~Bs!W6MW@i=lwj*7+3iv3#!GdRJ3dfACq1eu;t`-(3ml#Zu0Lq%=(jyOlsRIpy^2y0 z82tN=F@sV>`&15?>sn2@MOfvtj*QZ`a$Kut<~(D)S$MWadz03Zti7$gi%Xg;uja|- zH(}bJB#azd;Cq??hnqs)?h4dXOFXK7??C|sU-H9*R&0MAa9R9jGTiqggvd0dl5J=?S8kQ0ve zk-A?y41|&C-!<6>2CdZRmXf)0He!BYaw_y!F`hiKNbjC1lvG}w1$3V?BbiCdqLMR{ zPz6J|m3htqsDzWLe%cyTak69M!+eD7Aajpeasb;;-XL?1=DL06nUjoLEXHP$)NE$M z0gqhQQEj4LT|kX%ZXQQC0h<7yt$IIJl(}8>F!qW&o~NLE6Y*BCsdQ}(ovC1}EzS`e zJZ{{_rfbxq_(|~B!xBv|jQnObd0+)+veJ{~C)7ItJ$-8$n8ym9%MBiB4pgj_TCbKr znREUYKY_GphL!N|;l+*3>gE->x|OablY!M6<<5JB?rU*$ui6L4^V-EOivAtag!ziT(?ehuy-H$b6@fd~durSeX&cj9hlJ#rGg*;>8S==Lkq{6S3 zk+YoSXOG6czr#PXH-I#Y=`NqcaB5d_C_ieQGbZ8CyEoS;HB@1MJF5A7VyDcb2{oY2}Q{##T{<$<76MlC0`YxjVDg zl&-zq5!PAw5+#r3RbOIjpo79T5jI$d9l%<5Ios-L#i41jocSgH0NyouEUjZ0OLWJ$ z%{#FZ2;)}D#;Qkfpj3pCa(dF#ONQlGgW?}cWq8rQSc?B$0o!QAsILw ztAf7p6`SxE2RSDd600bdtDbD)9+o0JwN?DjI-B8tjQlaGE&l+8d|j&8Un3b2q`7uL ze}@VP01s;FG@p;Zv_FINlWXG(T|38?3Whd{OFiO6^<%`0ex%koye0!Ojik9McSo5D z7~Be!u(G^+Ga_$_f3r`I?wi`$f&xn{;4!@^WNIm~G%^?`F8q5q`t} z00w>~7H@;!6YLDK?v~q6)KQ^jPY#E9xLau5S2QXlCx$B zN(myfZ6q9g#B=XVkwM+qk&(@L@=d!YQ*e!wD9oi;ZsCtPrWR=cVaPP&D?;)snWwg+ z!YN08y~S3SaCc??DjP{V8#I;fR{~!@2N(mTFW%jgliM`czfYZ`np0{iSg@$4Xc#Tq zCyHO0UukW`47E(B?zqKjH8mvCDw1Ady92!rPm}Wlxb&-(Wy@uw6k_D8#)(=oNL9u* zjEw#??=Z9(2a)d?E65t)-hw`ejV6uR6I`V5M%IfS>pDVXgCT9_z zInP?z(wwc{HW?X^sUJ~9;TH{eGPV8Xz0L0o#F9s>#_pt)$PJ8)9@WX-sEbjQWH-%` zTv5Nbowjy5>%K~AOSp>*%W39<2M4L^%~XAZLo*%xTIuNoqj(^S3eU`qZ(=#X%T5Pp>tknroSwb8@s?TbVP=gfTr& zrE9^dNURXYyb;u%m3O+jGfL8NX1%Tc$q5qdKU(W7wb`&DyT#OHar5$VP~iz^_Z%-q zYEkN3y3_P6TFu%y7TR(K(B040xcyhcmzG2KP&CWC@5Xlz&bT92*iYHi>UPvrsy}HB z*5@a2Z*go3JZ_}(gH`4NNPl{`Cy>C`S0bkcQaW7XjJckKYi3GiSU!4#O;Ic{G-EuT zao(*s)zzB4^(7Z=v_#E-2U^gFQApiR<{aRVJ!?pNl@~8jJIYpPr+81sQ|Y>>Mw`rl zwi9;%SK2=g{9ioNEY=bosm#$vG8>ME^fk$vVdGkaq`nr9pviGlrHb}_dLI1utElNP z-KrIpzVvK1vijB?hl&Ao1Z`-Gpgf|pY!NRHBFVqYC@Fk>18v*au4|r^;TGFC;I@%9v~4#=IZj!CY$P9DPPn#xzaSuUlfz)>ZOg1oQ?si#KJn*yw$ zIQ6V!Qhv!#sxgH)LQTn*tnJaGVh%{}QB3|!q;}40H5pZ$nQlv(?U6gA(1y-VIjl*h za?KVCE3YIDwXEp3uTW2$QyS=E-O)z}wR6s-$VWlfr5IG=+k2bA^6qHqunDyQNX9v@ zc<_CTGe+fbxZPhtT1phI&jS@N-YE5FvRWwz0C83>WgBsd@*ykE=btTPR<}a;L%7Xt zoFV`Z*1D|KmvE}|Af8Z`=Dh1(yJH-wzKK&)-?=bNMDe{!6_FnRWDZ4hx^0q*SYJ^$MzjC6TvISMRNC-6HRc@0k{>(YV#>2cP4bnx^Pfi zn2}q&x~hPnh0a*^u9;xigClYGrBT{QDK_J&g{Vj7u}02Iaf;K@Z5jnF_eXDf(xl(9 zX>~J=7VGo9OBYiA0H%44S7Hu5b6FP>o0*dUusurlt#I_8GLz^=E^viDS#Hj=La}DJ zi4{w73FEDOMd4`L-$X=w?kAl6D96dT#XZ^alYaAYI(c7n0i4z)?E7x^5;8?`Pu_Mp zBO{a4=4F$PP>y|ThBmTEt*g7@FG{*qIUwYAa=A4WUz#{03`bm7KLUBz&dtl2k^&RR{YVt7oa50*9aQ9f{s=5&@3*9z2 z#anw&BPa>_RMeAFr0P~*poNXtms&{r|0$e*kUMkJJ{$S`& zH4%q1ZIjQgrP*9J%1&y{vn(+?9xA0yUe4Xh=Zlrd?~brn ziuc-<<~8QjY-&TO$sB(3iFau~T()Gs!0=y%S2bSRhr# z6b>pYPu}HQ7eX>?nVVS{#&gAGUeD#ljoIg=V;Sh;X|>F0E^`s*och(9AD%&zn!=)R zyBhe8k7ytj>xzxW=@gUFyx6AQ+33TmFpW2WdYb60j8^t!0kmw{Cppt7M#IuTj&c;~S!-syvgK9OZjdw`>+;kF9qpDOIvEsFW#lbun(I z%7VwgHJJBINnm*GUFr(joV#kpfgOP@oy7Gu(b&e!R35m^bJUuOcL>GvXis-^s)aH` zVz|9d>EndvLVZ2!iZ_f?XIq*)!&keKONNabE`4jN&@I_CnBDQc&tuJcYSE<^E!#1s zqt4sxcGk$wK+gm9t+aKH5tEW@l53wtRqYbRxo49E=bGr_2V(J_D3+2;iCr^J1z|F< zAc4sp&2?(qErBPTS40;)lV>GHnU{HTTGWzz^sG`hmI`?$oTRymryFX?(3AuoYMahO zGj71nPHP3N+ct{kmDyHnh6}k{JXa;C&E`nQJc_v4u47AIQ<=DLm|*kmRc<14ZqlAj zN={SM(~?)RIR&|pO>kO5-`yDfDl2#;TgfL?IdhUldMcWY2Y#m;c4?E%9nHnmSz=H( zBk-=9PFIX3+@D&SoT`$G72Vv9p4uio$s^XSge^DsfazR3$-A0GHx$`-ASm^#aFMf< zlS=l~+U@9FS%O4BJqHv=C!3Mfd(wNh&D2%3CRsK@!}zgNBOfDq=blY)&0V(pol=i0 z&_$Cd%pW7QQ+WpC^K+WjyGxYOD>9Q#zIV*rih8kVp+FfJ zrLsdJ0(fKAuC1xl(8@99lCh+~N6Pi@R3x2+-ZPL#dh?+r%_%d}glvoOU9Xhe`Qrkk zl2s6bqykQGD&pF9?n73U(U`Ej_a)obw7$*zgT@9czH_|nwlZ+$O|vTO7!;Aosxe)= zxZL;|^{Y_kO`OtAB@mxbSmnWN`_`qc$DDTpa7P(6t=wUDW}h>+Lt!rVt_kN9gB|8lHk_lT8Or^WjwWWwB+s4nbqY{xs!8z)7}>Y0;@d591QLzw~|RE*v=bjDlw8w z_XDA;#|1Jgl3GhcckqlT3Kl1tY9nslo`3&qifLa% zSZeh#q;}ZOPc@Zyb(G2ZNanJfUp>~xp-wiD<$fj91c@Y3wjHYnMYM2QNl{5BJAlS( z)r_i-^uOp)J8LkS)!LE+NKPnta$tJlUGN!C%qNh=|Xg$h(kcE7Z+|&@r z=3+-6){)j1mf=;WD|R~#9yT%n#J7Ccq*&W0lajwRV^vyC#JNY=Td4b(3fs0iSDotx znnJnA28vU>yve7eS_)wdLNn>T1-rlQevl+TOUUuwPw5%ouL;=DuE3 zl~||P#-ybcXror!Qaklp800wIMmw56wifAB#>BD6#xaWY z)h6e8Yb#T``H%|WmNYju9%Hsr+T;`_{j`hYcdgs=@dk-sClp56+Nyb=Z%r{KGc&1)* zLF1bA3tdI#MKd8@**(Q=j-}4|*68DPzj)QOMO(>%$%ygwtO0oMeU5%s`H3BPt+2M` zcik;c%5#j}qp{an%+f|ObASz6YnF`|sU!hjT~)1-)lv<`G-0j9?ZwUpLF#KlTU)s! ziQO>WM;&XqQ>O_fbIPY)tBpvWwcssO+DRRq=HcCBBlNGN^q~dKqRkiww(9)fJHxs) z+~c!0!B+Ov{haiae-mm;INbms6OJ=jH~LrJ+5~I|VbIr)hpOQ3bFOq@B-0|Y^I^Nh zkG(QE9jmHMlAy*3^{g=u+E1OF3JRPWzJya*w5Upu8#v8*-Oq?FG`((1Ss1#Hm=b?V ztTYvQI6vygpIY#yro9B4#Qy-=7N#HdL%ApKS0AV}a=9k}gVw#8bR$9XBhgjiRi$l@ zFYzVMm3YyNG0$Vy-ndDpMR4Wt-&*@DB&6uX-cVDTnj(i%X<=eX*sMl>8iH$~G{l~L z{cE}yXBoBRc1N035__56LmA5gSQFD6b5{S$J{G$8(;i9+kt3aI1&pd!D9M7h5odx<>7pIujuk)pHuIU7Y23ucy8m{4i&?w!OcP&XvAo z1v(E}^YJZUXv$6eTOJF8tzI$v(=PMtQ4v3;B<3O63P^{u@>!nT%H$rMn42e(@M z?p3PuIJcu`(aw!G%PVUg4v^__$q){qumA%cDtmnC5UA9|mebchyMm&yBrEU0Y!thwx#NJ5~Y~kSMi@~%MWvrW6@C!FL8^yAH6mP{-L%a$cU898NdnDR|N+TqqvuED~$By?)}2uGe*WJe7s z)#j5rc(rm%DdPhp6gHPZKU{^*sX4-Ya{2V{JNnv?;f6C)&IjPNd$awHU^n zQnBaWC)B^uUKro^WPHR|ifT}!29zi#rhC_?grum`=5KQe$}^iyYK~g+#Tqh5$oH&E z-8@Sk@S$_Z1FcPYIa#kl;iiY4>l!w|&$os-AXWyKVKvW)Ey5ABKPMT;^sbyd+HE(o z6#oE;Zl~0q9JE2FDz6-Vb=_OWBj~s!hznTE|h@q*v1Lww{*Rx z9VM-fB>5{_xvy)d8;j+3k1wB;;<^^n{FN>SPAfT7bfwCIP<0GJ*Epu?t6hX?ayzc1iDF3Ij!#-c8I4%y zCb&JbX|BU``CmCaGcL@Yqk~dSalHo9jyl#-gN(iYro8RNwYksg+Jtav(y^Q)1j*cb zlj&bQc&EfkH13Tq?caYL4P!y7qe}9)CD&+9peQVZ~>CwWr_e=3SS*cF6Vz#;LR?x?6@FS^o;PO|(NZhfxg*V#Aqm+nS(&M+^5!hL z{^$p_aZ0{Z$lb^)=C*soHGx=*p=;vcfDB(^eSm!|W$ukm&?=0pgr$0w=g zyDCk>S6xpwn&(Z=ae>by4h2B>uZD?O@6G|mbVr_4thX1ml_eW37_q6429O@Tan`S; znJ3K7Ygs>J_1v#zO~&h~uWCeUNI5+-S`eq1I}+n&-s6&c*9_{XbGr>@xn@?DJ+9kx zjPiYIs+mNkz{t-v(FJOH?#EM>E&Db%cbjvtWq~~By=lW6d7C*bTR5jtdzLs;bte3c zIHDpJSq{_Pv&~n&RX7XHVw-i9j=B4^@7$8!*{8Mg^Szg?Ic!$iM#|$SJ!=V8aBeH9 z&eXYMQfoq``k7z%W8@q$u5x>S-l=>tj)OgFX~xa-ZgN#>QspWtB1l-aIj6k;03l%e zj(9b;@wv&!sH^oDlI~#O^NxM$+z~vboGu33wJ&6&zQ-(-s(Yz#seHiE+Zh7xIOhV3 zOUT9G5-G~^PB^S0rzz>Srqmn5%{jZKZ(LqkO>evSv&IcXw(D|IMq#vl(m&6=Wglru zJksdTPxlk3rB7y8OO}IBRaR91^))1n)88uz1EUUoMQdC5s&QJ_gyT|ErroSXu*V>9 z4sn3lsWB{*ZY)#+JJ(X2lx+2EJC_a0nK2-H2g7Rpt0V8yIx62Vl9wl1E8vpZzD=rgTSuYN-$>)T62sN?mJ;yc4uN-9tBnVQR>Ghr#-7WGUurK z9Qc<~oi$GSmujIMaJ-A11&6}{TK?RU%Lo@(4v zLSta>^K`E&wK;o4&vy*z$zG$gA8TvAVoB@YHLO61)feV%xhAl6J)%kWI;i26vwQR) zn^1dn4g5I9!7H5L@@lD5bZR+udmcwTs;fPbohm)V zn{DGIT>PYSirBL7<>kvGO&K`qabB%BFJT^ zU;hB4NtYXOoP$n|RFOo6PH~O3+f_9mbmr!b-!PA}bGu}d%8+_iP0NOxgTNh6T6Ej9 zeFawWen%7HSwGRjsQHgMtUU}FHRw^fAm=r`DK$r#txj3%Uj5H>wwg4z0f8VcD<4w1 zaKs=Sob;|55&h$5p^2)b(^@iy9!Lu_V3WbcKXNU(bvY)wCp6zF&&$<P>5QeIa=6b^ zqgmbdA2Td@;MT-bv4w+-obo+tEV`P;q?6OBW_gP)2^>~_>?su~ zd&srqv)h#fV4s-dwN^GoC0UwH%D;GHsKsR#l}FsEM`vOSh{n_8^dmW_?Y4=EIr*Et zQj2kY*_59$NV_PG6jBaH10>U8gimmb7$g?w71bE1$C&DxgOZ1SrN+}%Mvz2HFdXBh zc0LsNapJEO>$bMqE{St|BpaRMO~F9#fzCbpSA7_M;nb?^k20jDrR?Ia+4Lrz@Jmea zwx1RM0FQi6VPgJX;ip*-HgnHL!NT$Ce+t&0;xB|eCkt8l3&4x3UMwXI?et>xP`4N< zjBn3Q4nDlnp&V9gB}$jOPpdMiDmi?8r2Xl>os0H9ANc+8I&`_X)1%Tfpn^1Mn8H9K zfq*c$uVV1;?4zcbqkk4_7k(m@*<_LrG~f_<8@T?Wy{Oi}Wsvq*e|mk+AF5WyP1nUc zN2E`ud^_-)!@510gHF(Gtz$9=5*UL?$4{FT>UQ25I|rJ~-8!7~uLBW^sa|~59og&0 zmYg{$t0SO;MS%c20VAn3sU3`HrwTJ%Ey`Pomt%=Hfr{6*x`x(e4gqF36>*2WkrH-S zXHpL32h>o^0_2`6qU56y@<9lAaj9ty7c5 zHsBqrliQlUM$BDFGP8KN0mN!gy+GbBec1}2_u{Qnj^gI1#y5+kBb~YWQV$o&mL*pm zg_Jv71}d==y^SxrCE=}mMs4OIV+#WrP1sj(ra{RN37}cf6KsA{?Mx_eQP5S zE)e(0Y-X}_ri)e8_0Y5!GHy~BdmPf|)YeTkxzQQMTL^GL&o#^Hc7bOs2M3yoE2Bir z2Y?>Dob;-)*+n43C_hnLmTBCpvl{Ee_ID)tuq*urD~Q#;9O?Ip-ca)2_;(DC&b5tJ zpS)UjJX6IV18wh~>T8`M*7f$0=Bx@%-%R4Zch)`!Po>@~_;XRd(4`B4Vwr+xIRK3G z8Lyy*F7)|j??>`u^X<{vQYuNN!^DM2ZxQ0VZ~W zINC9v%DO#E#UHb`#o(5|6Fwgg0BY|D-K*(k79#DD^GA$hzZ;nP*NbVfj5PlM71+kR{?Bg96sIG0*Nl<@_T9Mp zSLYAJzk%Nnz8-7$mcAzN_0@=kjG|e{Uq1YBE9fv;h8I3cm37HpE7Ip(S~8(eo)4NI zm#O0SI()Fq5>Qpb?ke0KYcfPDDzp5!t_t`HxLWqBxytz~(^HEfx+Z1ah2y1CP(v06 z4hKr|ek;brMz1ulE`)4kVnCFr&US&psUMiswhwVr%XV)WN^0zDB%W^Is>nK=^HCNI zzbXvpf)BlE7UcO&n~smTz^@TyS?z# zB$JaE+P%hV6r7T=E^C!^DzkzC#z7*H)fIB2hXaKk^y3uXr9r|{y8_HDvQNxvSd_U8 zdvXb)Zc5Cir1c~}Jfu1GBNYorx=e=7IO4hg0C=U$wi>jq(FV{}esWm-;73Y+ixxmCK@#!Y?9%HHa53E*+>O6>0d&o7$VRWBPZhN(60ArwiM$IX$0 zQ^)2kSYlaokwn_%QbB3+^LG+QLhQ}XIto}q$d14Oaoeq7`^m#itW!vTl1z=sI5`z% z4kO5H8YZNgQP|EpB4sX2ZMy_@$?H~@_TgmCL1D&o!LI1aFJ8rUzhh3{R8p+FxzAkm zHPBdVH@49+Sq!kNe8G-KHO*ELsii{-HTfHH+|!lpbx1RD62+fRYoEOEt4(etw~-x~ zWGbATd)FJSQk2&|vFLg=AsX>cKI=J&H2bSE!bNP3{i-Ip48BvSaJc9&YpapTb3o#9 zQA$!Hmex5{q(vK#Ca8;Yg^48kWY$z?%O}mb*Y3(LQF|9`F4{SU^WOjyUsik#@k?0v z-^;kT^6lgx0y#J%1QFi4F%;@716|WM!^zRb!lP&1R&&QBg9i@05!lw0_H8n5M99Zs z(AVTn620fTKYzegNhZ3OmliT?aLb$=ippztRwRs^3YbDNrrb}fjFh5PkqlFi+0{t>bH`fJr@N!*C_ZJWY6%M55xBC0+r4as zc@aq%$?R))2rE9PMEWQc4#2w~yx8Q5^j$XYAsF)x20GU}wW9j!d9#a-=IzXB zJORJ83TO zBY<)1id5QzyXtRuB7Hi>Ww?+4q=EwH`q$Au6}1-n6m24bCO81*yKxQ9jjnjLIcHw) zba%Gkn{xdz)845{&hn5)dcvAdSGkOA<*B1$id3;vkTX`C{LPb)PfBi2o!sWDCwmH=iRL)Ut|caP+PGGOYLS)BGhB4ZvfbuvZar(yrz=G#)b;99itpt*s+YHxUJ7+{EJ*+@|Tm%<(J9)S8n$*TbG25L(9XhLCpysINt{k)vXy z91LKZ^JhP4E8Ow17J}vKZYlE{ug#3tKdZ+gH=EoHW}A{yJh;a4M=3PoL@P1pIL&ic zlX-Wg5d7Y_u4NXRiR@iQH|l3iGc>EX>!#K&tb6eJ$`5gMmT%XGiZ~*OAg|-3Q zaHM+FDxA=;;}_J5DNZKi%d}#@(%2Nbw=Ve zjIkWI(z)k1Qpxl+QA=|)z-4Up=CQ9WWH$`Jci;+i@6D-{-_4K<&j8S4l*dGE_ssv}lM!HhSDR9Ib~>rWYux8H1xR8+02_wRK8L>&V88T<-gwTy|zFe6i=Sq-e^J zdiv6gl(pFCsZP<*(6Lu9yBQg-l?gE}c;d2fPF8&mc}cDM7p*+P>TpgEHPFv0i(RF@ zY+e@iUh4Zf=~rf{~}TMPNO0?JRyzMiJKOIPSmC$=rlhTR+|rjbo!MoXvR%5GKG;6bf_OaRHOYQ!Bh*Wq zb3W?yM2vS}4tT7idnB#7ACC2;Dcw0p%1%jWWt+K8^9DR0;>~onGozqZIbd=!Yg)}h zEai+Fx{S18MV-fLxn7~->@@l32kf=AxL zteR;n9WKf@94?thT;zUrV%|w5oCeA7U2025Ba$vob~;FvL_}leG|8seo?bnF8c~~( zuiCRQE)Scy6IeGfv`%n-mFiQQQRODIQdcTV4AajVDwCEQkD&FgjujTLDz7*k)Ksa> zXr5eQB%24kVB3!z^s7+bjEtYCqESy&Z5diR?pbMb5kHk!hTz8-Im;fkoK%`^h55HF z2Hry+Nvl!B3YNxrt!FQHUBzUYDaxaMbIoMjT)MbI+nc>~CZeooHPxDNs1uJ?hAO#sczdIHekUmCLy}3NlY7ow#{z&I#{W^4eU+Qq+fd z$pyIvsa%#|PC>0E`B`yJ_A;LvTXS)m;ygii(b`BOanqsiPMo=?W72PyH(Q=bzDxZ~ zIXO7T2O~MI-pa(hDuaTg{mkKc>DX5lDxC93 zsln5Y?pIhPmG=Tb$0HqUPSyg_01i0sUF}9mvz{=!=9cGoq#=%2&s>gc(XIBhIq%ns z^CzsinVju?2sJ6zJ0=AD#8;W$Fp=2jlgX`VD5cEK$`QJ3#|^e-ZQLKb#X%v<@9Tlb zy>Uq?PVaNjYRc%WptFKTD#2acmdHF-)Av!xl%(1ft;;!VNf}zKq{!+|FIcQp2~UYQto<%Oe5ugX!1SzDF59tWCJjH^7?+s^KOymN(og>y?Y+PrTD7S z?#y{@wazjbvsN_?T^~+%ia^-=weXcNvV}!;)bwf9Q%U{@jO$vQ-*1)t;sD?Q+PK|o zSvPu1K;JXtsWti*7K@x=IOx&kM;BI5( zUf0m4D!7o6gn`XtNYbt5SqK5L4tS*|l-f-8Vw9+~^gTzzE@rYu-L-p+@=ZHmv^et= z^N-TLYP4NETd|M0=%*cyA!RY$DI*|z*Q04S@m$!5dddz7HQ9`W<%U!0jx0RVs@#^0 z(3;Xf#Yo_ewa(0h-MWm7HacT9$%3?xN{k~FZmi$aR(z4kI324>>I;~cETusi2Bxf_ z>ojdrrJ*E_gTpqqx7QA?j9d(W2c>#KczQVzNKM;$0N2Q3@p7SvaBSkj)q|yZZpJo* zRzoy#?2$%6Q^~H6Mb|I1d83YbWR@q8;YdF(`Ne4|(#6n~8EVfj5lT?2^{8|`mrmE> zzO_IH&IjjOjNWW*pS{+;CUpIj+#ct#3`8o@Qb@2%Pg7W0e!b;g6u6V*2OE!m zYVgrj;WsXanOdrgjrY0O$*fvMY|rMarZPKbydTB-t-QMB#liu~xM8u^XJ zaqC{iIJrwxwKYy$_t^SN;orj7)ig!A)PnA2!o`k2>yumlF8E|Ls1@Nt(Yo{U*Tdtp zCH2p%MfEu&gOzF$#7pAUuS3fl!dEk0qDO9A?+R2ceJkPbg|WAW)ox&N%%eMa10%l` z)tOhNPYV{eY*|ft%B0kEx;gDb;XT0B<%%fFrZNc_uQt^F7hXQJ@LNaaP5s0jdFxo^ zxcYOGQ~r_UV`*Y(!fslt=zGtA{t&&LrM&u(GCtfc;mJO=^!|ya$EVpOC<2A)iup|A z85~tt7(EY1FQHP6A8A$l()J^g zTNe8g-bQR^9qVNYJDhNv_P$4)PioiREuLu?AqZ5->s?KyrV1^3^<(>}!E_ftG^HoI zXHZcg(%6o;fga?^AO*?KBDE6AF$Ut9$0r@? zYC>1$>0+qOI*p$__^-oL>OL}du~4xy{NrYFGt)nvbb3d_t2MI?JZ&VLkauy~JxP)=ctUIbw0n{{RZyb7Hz-n>0%X<;7EM3StI~-;8Wwal+3I$NIZ{P`fq1Wj8*k^JC%1SS|;_5mea~W zEHc?7lf`-#m!L!=%Z<(4`qy8!l{jg+tZ=TSUU@w_o#l;)8*=U=C3=; zdm?Y&&N;3k?75MYJ3?(qYR#+3@~L&$`YS?G zwn$D(?FZVs6b48EP)i;$UKHs^+sa3v<;=_QL`d4hEt=3+kjSl$QF@BT6r3*=yE*!wJIx+wu5=N>^EP9Vf-5spwpB+x zAJ|tLk0n_ow7I`BsYyP^p6dIOEsc_;tEBLShuUnBhDPSdCcQd#r9xE?GNN;=k6^IV zM0gn8j`e2dBjmnCc$Hr@OZpw|GLNB$7U6m2xB#A&s_-ba45^03YgtAxX}7tIT%4Nh zSBFvyAq~zs&#g;6_VRGKJ$S9F(Q!#9xI+}GLB>l|IxEKx21qBd?NQ3iZZgaX_pId@ z#%leBr#VMmlPOCwMY!)79ZhqZr-@*;v}oE)dxKn)pSGzOzK2yfa(m42y>rIzD^3)z zmI1*$=ia=2_V3IE&)f%hKDF&opsB^ly;<8uy4Ht7pL>BN%aGaUoKq#+K(9Eh^ZgM`A zg{3gC)h?q(#$R^a;}zs#s=P&6!d*_v)FDokX7|0$$_uUc1*9XUbKKRJA*9@=a9-xA zMm+qsFpYUumZo*tW?*^7GsRVju)}G|%}YteE{M)t(yQiYYS(dy`50g@Yk`@aHnAG-0CK~F{x#>}RZeSkI(E1PK$3WFR0 zlb>2}EX*;&pGt@CPVCjD?2%UHSB-+k+-9^ar)gx4INYytPhWb^*}=zM(S+*FR#7yr zytvfAm|3yP_NrfKR#CA6obpF{nEv&tJuRW#UHc0tZp-#714=h=-MH&rENO0$G_km5 z2d{8z97NqaHhNe}ad($iU{81r%&JFh=hm|g+L>_7Mo$#gDaCU)spM34sVMX{ZMAi? zg`3JPk^#WYSG?9f(B5jPT#iAleyp6_*21ldQNi*vM^Cx8n@nKf9FB9ru47R0&A}s=YK%GeDh-_EaZZjuyY4ex(@{~o+UJEgCoV}2W)9&aV282w zu8!6hNOrLKSOCMZrBZyf7dGd0J1eERqcm<&lsLicE1r_uV>;x5-54Hgn+s8qaYvx0s=0k5ff{YL|-YaYmHsOWk@Pm6lu~ZOzoM`qiswnPDxG-NkJN z)GYTsnA%k|)UNYLE((*J@&!s~Y=$l0kSd&9pqUO%?)#dsUm0P?-p2zq(b)tRhEL)n z8E(~uT70lesoz3L)Q^!&1rES~#+@lgISsUJ>6*gTDYbn|rwGn$=I$)SlN`5J$j7I8 z+0yMw-8KONG6JzVKj)hEV>ipp_DJySN1jcy&~&?bm@|+WM{`;R7|iE#<(J#7c@n7^ zO3CVa6sF@s&1l%*vBp_~fLL;UD=u)Tat&W3=C32B>QPN@W<9LahG#r?1HET8gEk_@ z4tW0n>(^x-SV=`56FlK?{-RnMIIRbUH-LRd$bTUsK!nQy<91~`3Y2vHG856NiYW^ARLft zwD-7t2EbF&g$GhhPF%Fp>dc8XC*IqEWCyRUR`VW4R>=cCy=$TrxhHd)Q*~aXH(;X$ z5*E#A={Ay2V{tc_yQ9Wb@J?wr%SFp_ohwesnvHBtxmF~$GI3n(+HAcKBW_Z0iikC5 z7HKr@{C2;cJak#+UaVB-JfRFBEqhZL{1E0WIsm&1t8_ z4<7i}P#Q18uM8!Rha`<-x0g+}7V#84OE?>x=dR*w96l1ZVS4zFa*S_eVP6vP^*x0R zYCfl>ct7@8@fNptV{`EvS!jVCYbTn|xD$|982V!s^{0aV3;0*V60Dk5gKfKR9pr!? zF#iB}k6P)(W7MPUuGvhc_dpp=#X4hiFqmDF2k&_pt*KPvDq zZ-mjd^^vTW$ejgRSjO5Eda@p*n^*CpZ#8HMLWDx+wR3Y`<5csRxKqH*ZwGl?nOTBJRYd(EVIY8T7p2X7qj^i01=BJ$$qTb{F#Xd4YCV^o$xvBPp<(!{Up@VY*gsax!Z9l$NN=*>y(!pNfpLfpAAX z>!@=b_MXnCchbD-zT>*s=!15%If~MDhDZu(>zIO4)!8=V> zM{Q3^F31m)G)HL%)Dd2`9~CNcQjX|}#Z+9f)gB>l;ZGiXI@PDt{vLRS_6brp9VZ>29K)D43TJ;$RjV1enBD5+DCCir-e^?I6RMxRybKYJq!K;re7iJ`IlR9g?$%33-0GDo za-^!^z6ZKKTfNh6AY!BfbIuNb3d)gNs2E}GTsXWXTrEdU^f@KXCY*K}5wWC;HPI+@M#jnBnWP|AXyaD-%`)Q7SR`ni zg^^BA<5dYSv~v6tX>3*U!ya3o=TJHp1P)uZVJ9^=D`;y3qTIT%t_YmAK{(`Ry=YoU zOp&uPs046%CW>jh%3mUCK`C>~q3K#4gC4D@+%c3R$8Ka$SPjH>t_NPWc(qx%+sZH{F3iF6B;_K%l(Gn<-extQFfG4N)>k zfCgR4TPGr}QHZ57^$Ycc z$kGj=u~=;ltgaZgFgsVuLUW}BCjC#)Aw4uPu5{&=UE>?E$sI_lZ>L;FnOMWFd2F25 zY-_5N?9O`bR%TrGl0VGqK?5Y>v)a-^9~-$GU{^-9mAf3!s+4RbaZMViEtv=39XE0M zS66DP*7yXK>N0avT2|Y+-Ab&J^)K5g6PDnN_cgZ+r6DDW037t~SSvYQigD+a+0xkR zDIKvAeEjvRZ8TFyD)a}DS#s2K(_@d>K}gMxBlexc)|A<#!P{@mn%TK~TNf)Nmr_`C z)VM|;b=336S|rm9X9ER+7&zxOyqu%C!lb#Z%9l{QAo}jf;;F?h=@XsA91&Y`xx(h^ zdfl2r(WH@ChX<`gcWn0eYqY6GT;z4GXiM46M5w#&TCys$?KoqM{&l)h$QaH@uGvA| zKIa{2B)rOvdp)(&Lm(T7$Rnp;=Sq`FI=ErEsy?iu-A>_3wbh#(`N1jP-DGCGk)Z|5t2CfseH47eNHLsGlJEw z0;4nWlis}NRcP+wC>)F&@Osx>AB(+@K|;~xk%?(*_Ki(rQIM=TJ^gFdt*z5f(LO@kRn}o?nGO_sXRUHq_ww8-tU#3mCkDEy(ok`fj!Z@(@oGDp zx*I#$JCV+L_8(fkCER7sSTW6UPfF6U)k~H%(JiF$x=8(TkZU^n;7K70de-o5RZW{o zr2?hAL9PMEUYu8`ctc2O^+?WlDEW^Zaa|R!DsA>YYZl_`MJ*lAp>+Elmc!-kR^+!4 zsVBc$^C4))&vWOi%}%RjBX#9mb->3JpQ>E5+xBerp}R{{o(ZWVi@PdqT3y3&YdumAi~7`_g?4T!nXk54k?IoRylD#NzpjGhBI5gWQfQpPF`> z^OKR=G@zUtlPa}Ks}^E{NgsicnzbARPQ3vflUhlxRc*{u(Oj`JiJ~dfn#8z)zSL77 zt};$*3UYCZzUGxx+GKIrnPe@WrDzuNZAvft&Xu&BXC6}xv_)YnLvx32`TEw0pUub3 z$@H#u8&u|7F{Ik%WvgPT1dQEJtxIh(z2F4rCbg*TCedR)Ut#1 zs&Y*Q)OC86*$? z=u5RK2?r$gu47lZ31r2&VsTniN~BUMIxS9C+U2FW+Rc%gyKq$--xM{^JTgd&1rQ`7ci#%qxX)&8&4`9m;1GyBRa_Go<}`vmzwFbrcn1? zh@`(|i|-mLX$RUgN2*YM&dir8uZT z8j?0+Jo#I>-6g6;X<433lgDb0 zcvGF-sWzn_Legni&z;$%Dh@&BpfC`Jxo%EPI+02s;M;7X!Cl-p%G~o*CxhYHGFttnOie*V$ess%A)RqE~zH!$T*Em|5n%S9a1k>D(SyWA& zlH}mfx~Y#)+mnG*)Mk@sKeXkFxz)C}Y%HKs&E}EwWbs+&P-eJiFY@i+SCJ}CEuE3~ zx7^9QyI_hHv5cOzlMbOPUt<8q0m<)OwBgMMb2;-#w2rFUPdYu!+yPqFmr5ne@JCAI ziq+iKFt)FAeQzV+XRTJAV$317 zGHqv}D!Vd$?b)P}ip0!M;aV?>%+IMwWGuwzCp8tt+D4=~<&PDWcKNK1sA%;$YyC(p zvTa~}K(99O2B01%i_8pMbj?*ICsr*Lh?=EM$(Y()E4%_QN%?rMNU%ja8PCk4itWV8 zRVQlxq`^RzD+qvL8!CR zqZvh9!;;{cHfOKvQ^d+*1h!5xDkh^Crnfq2%UwqXK>nvSIV!R4&U@msl%(w0Qb|ha zg=fp;^gXK@{&q8k+zMdv-#w`Ie9TT#a5AG%)0WRq*0$~B5hy#d#0*w${?lVL`68sv zZ#c;x2PYjXGW8@X#Giaqi}re!)Sjm)cKb89@+%c?l*mar8SP!P;Q4v_ob#3U-2C;| zU@LhmZQGJ@?^%{FnP1LTQ`q&*bxxC~f=7v7jq!F{GX2Hm7WVFPq>fLht~XKf8i^P$ zDl^EgDi~KJr1~9GojMWsmZ;%xwdQM$q0ZyjS2K00PVz9`SJwxvdaOm>lf)6Bc*jhFel9F^rBJRRzuJa+Ad>&I1wU9;Y>SD56p3mIZx1c(1RoS{%2A_B@<7zgeZK zLfu|k$!YQdk~$jYuGTXUEOJ|x7_TCPX6JXk&#tRF72$e%G>iHsto9dYYMB+Vxb*j~ zuJcqk_T>WnLO&of%EZ;J*^{%+N zR-oedDNdal@o!{%JXTR$*@sXFBku!TW~HZyb(fPFUECV@>@??2w4o#DE7JE=qq}Ei zphIk749Yi?oZ`BhjW!FoeqSxT zx3zk%mvwH+k-7cmKI!jVnCL80=U);$N^~6=TK?-g&+N38*`z`;IXrc&tDPH#Vgr%w zUM(8F!MQi7)Ae^Ka<`#2k8bw&8@$HOM@?>&xA=T~n$m3*Fh8kMysce6Pu^3h5#M!Z@byG&$w6t}4r%%20;f5J}Jf)w)!%N?|- zVrNSHy-u3c<6f66pIe*KY0<$FF3fG{D#SL!d2liXaj3oeoOLH@sF#-HE?3Z0#^(w1 z*J50-ea>mg?mpUfYr(sbo-te3G6d3EL%_#c>rFvj^$KZ9=P_uCCNgy;v!7b)H2A#6 z-P~7CH#A#0>BmOR8^~F$%91hPHAXnmWgKC%Skg{fo6hN^&D(U?GQfRlmlpuAR^ulN ziW>dp(5-0QZb@o@jFFOgs@jp{0dg=a zd8XoLO+J2OoP$Y)WoI#s#j;L4YoN8X3UE|ns?nTv-5XKmhWoOPtD;-pOd43jY&jfN z711q{%&(TaNWnV>M>WA!RB+`-OnvH!^*%cI%cL3nUo??Lh~#DrLiA!rE66l|gxbcd zavkA29A^x>NFKHNjzvU^yJC*HQTJD9Ar z*NqCin{og((TT0f{gM?2&fMgAP1WCozD;*Q8g^`_{A4c# zWaHMeCU)G9$y{*2)Jj`Rt2VoZ+bPQrpB$1RmV9t3_lLYb=5Ib!8Do*_SvkG&NJ-?e7z>WoxebmKt0|3#-p^X`l}=>a-si6xZsp{%5&Ynn8RDF< z0IqpF)T)l|Pfmv?D^ijZY@tdf3kK?aDrEVj+85?H{A<^xQ8~7ZX4Io;bvoT89vFhL zI6X64jTw89gVghm^^H`WZe%B-aa$v=w6jsBDiA|;B=@ZA`*KqY$p@u!Mp9KSwHz#= zsdK}ZD3=B)7zaH@b6VQmAL!CL@^Qsgc}-ST9?Xh%lx1VfbrY6R)bzpcUXS4meYQ%+ zfKEkqPnqGQ-o^1zGJ&M^sgEcbn82x zNlJuk(p`?`Tfq*F#j}mQPdrzTX!nNW;!`ct=GZp>0F?4aVO>}nQFW?5$nrBfpSp!L zz0XZx3;BpW@mf%ome}O%C-ts1QORARR2*HGQVG;8w1;+1-sZ8a zis$1VMe1$AC$)9p>N&x-%yAH2MMpZY`0;a{9dE?JdUAMxP&^1>#~%fk}kakCtg-n0D3{FiV7O{_~hqJIU3F^**$*-XapM!0(!Lo#3O?=9NiPtIaJ_Iy)aG zX#CZ0m~t>`ON;k1z5&?1$3vRqtrc-6P{|k%ZNO{PVD6S zSEGAE&wJS6eAB5aoeKe)TXrgX3Sjx{5K2 zh-A;xw@TVhH6OfVPBl}NnHyW9+o=tco@$tmLaYNEe=76ZbDu9#YTh+DrPPffG0GS- z5*yPwuCfSjC9)4AWqJ`#ql#;rp)})H+c?8xQEV9^Sb$~+l1mb58`~!H7acn0xT94? z^E1%)GWKp=QJp*x$FK#OjN=7_!v^P23#NlN_P&pLBA&*dXPQp z%0-zMdTwld-GQ!n(ovg~mgk{Qo7u;m5=*9lo@%b)=~+_grdLhiugnfH*198K-M3<@ zQ{~ky%?Hvp+U^IoYOH!%JqURE2{X0xoMVc?md4;sxTfU~#w%#mjOtyUWoi{Ezj0|} zMi^Ue;5Qugs(QWh*y(c0$2b{b+}2Z+d95C%^w%vXDI>`nQhSS+xh%mLmXC0(%bU2o z*1NeRrg_I+E9hZ0PTg7a@Rv2;L&h9^SjhnpBtk*j`F`g_3!&7N}88e zc{OWPt6JRx-8}o3(accu61fDJ(25CaHkGlq{%9VVpM<|9QUmYc-hzxgo1jJ zTj;e5rK(piECuBu*9*@|pX{vA%jLvhoOI+Gige{IA5)#iDK~vlTH?}ISffZwF*x}~ zNcz&tqDr>N@&ofW)jLll^cD4y%ds@5bJSM3z^lTevU-`)S>0QZvOyv_$pc|I$6Cg@ zw02^4l3St1Ij=L=x@ojmwfA-CVO(0wiJTI9=AUj#Z4Nmjl53i6$ys$8zctH25^2|P z80+}f%EZ>8SRvT`G2Xefgi<=;P0BYXdA61Z=2KV~v4@o49!CpVL8;FD0-}1{^REzF zGtBZj9n04}s;+`I>I5()v0kJj%?6GcMm))$r2%(k$RG}tWZZ0WtaF}g%H?-TJ06d^ zmDy7ZGZs`oA*d&W6&t}ldK$MbSMO>?PkHIHGT1P>3RH#1E$dd01(S2P>(;lFo}8re z+MhCJtW6ZHlHCtVbD(Dkpe|21r57~yB{th*_s4H8B*~`>s8(-~B6t0bdZFu*OJUbTgu?VS@+Kwi#biPn-uz_X{{RoAbW(@A z$a1(v``%|tmsn-zp4G1%*5xWsIOjd<80xOgAoojhS+CwW7X*RS?&>QdY2;!V34OzY zO>{yk*G6+~>{_yhdyAx866`YG!o8Eg{{RR)P2+uL-EWgzE!vvd9&RHSQkVNa z8D4L%sqQ`j{gbUETMb*{2BNyIvl5wvX%iI^bRmJ@AAW1?FAVq}Ptk4d;n8&Hw8V-Z zFLXu z?#E-I`rYnbSjKZwZ1<{4#QKi_0qaIEde)0w$GGlKT97Y1(_m86t~|R!p!~+TxmIZ= zJQ8Z@t0vi>QR!hjbyJ$OnpBKAq13R_FUO;%FvR55sPw3me8WDqlc^?Ek!@^Y9E2a0 zN-g3GfTOKv?=kfQ0su}qq!5DH#!Ws(8j^V_-9a>YDo@@0DwQ@N-b()fbWmbY*(+7- z*z_a{xI9x@F}FCW_HMzs8$ylMMrtOtjhLOIKT3xgAnHQ;d=7K4XX#ZX(jjBO$E^xd ziynm;v`|i0H9}1yWh9Pyt>af+NNE*KrOa|?X(GCv8&)01kp0Q zYT%4=J!&l0sHE(0I^V<19{xt2J5{&1!5ftD-&*hw8+;>K?5-oe)1%aFe(?ezM&Ey0 z^eEyb%$@AbH%|JWE9>71d{^P=ZS_Bgek8fkWVZQ)B?HDe&e4;>^gXN5ydC>c_`k!N zUFU?pIe2>4#oid%g^N*)ypezi;mB@AeesSl*1cNzY&LO8weI30v+j6RDb>qrePWKZ z`l64FzhsYqKeQi&<=1`zYc|>zzao92Uk}QBwhz?pX7AG=mg|zkrG8laTm7BBB>X4w z&Gwn%uMXTKg5a!e3_l_!I+xBE9-xeao-16l9W2HVF30=0i0u2Goc)zbO1&3&Kfv${ zt0^ItMV2;KQ?-zeRQuLph@!b{fj9Qs~h}@aCAHlu{d>eo$#$WG)!; zFh(mlrx`gtP}7T!n-i>#vMC2F2YQlglJhoBcKoD~-xW<-@@5VajoV}pJS}^+S1LVM znn}EbVS>&wd8nM^thzHt6r*`Evyjm-8OABrkDHJi7z7Y8&3DF4FELM+bei1tzYAO` z)k3=fjT2|^8Lm@bh{>xQ;07eIKE11!m%CC^mr|+Cx_(D5Bq1j%4o6J-)p;WgF~R4d z6`Z9ijV|cu)kjf0sUnp_9r3r#jMaof(g0K(jEq&qHm8nqow2@5rv_ zOzZw-(tMXp=I;hgbN-9%Y5M6%H9x;g>;nQC1mElhZKb3Gk zBKT3`Uk+)1Xx8)#t6nk$aTx=9@Hih@_wd;*49=9LN?!6gD^zr=D9dBZ?<^#a>3qd# zq&)3$f<}*7iR1c0z|a^sN1ly>6BVc*{?`+--Fywv}$8Nmfp$Z>?od zVPkg+v@>D$@`QCcu3c%h%555+(Kx?|#ME@Vt6PFf9hv8fyQR$EXdsvKP;LQE4SKZX zrnKm0-y`K`+WrXE+VjE|VpH>?1yi1WmFqqk@g>EMqS3UBRLQt*ImLW-B8sf)LG(Vy z+qz1XNWG6#xtLr-9m2D2*~*W9TEP;sJN)OK0Atd=5_I`u;C|7BldnQET~P#@g!b|e zn{x%g{A*4PV|BX+0l`tp>L`sA;dF;8l8m`oqYcfJ?eic!cdIRHr@VhC1+&t)U7FbNhZw)vkPVC1;?#&_t87Zr1hnT zikp>5d6xb8XvMI$XOQkjMjUPT2i ziVhK1zN{RZSA7nLMTi2Ak(D?my>7xMWRJ`T0eG${Cn}CdEM?5yi}JFP7m`8gR;=MZ zZsIrxlS)d|(hZ}jX5vqnfH(Hd3Nl&;{tfN*@oC8cwvkYTsVa4;#KxE zpugGfx}Ghq+aI*EsX5Mgu4dl;PcB514h{hW72P@WyDo>5RVp=8eN80R7CS~&Cyu<+ zVbtV#Mjv*1(x$m8H!h~0*>h-hv0edS12;J2`qQF~u3K;eH4ucZ+39myHfKj=rtujejpKv)O^IoKB>eD!7CvsZ} zut{Q1&EBeCU+vTjgWj=FZlkeIN+~|3JerrCbR5aMCnVP7Gc<~H_S-%rmX$+K4&Rgu{73YA3S^F ztlE(P$Q^mEc|LTtHRa`z(ZO^c3mKJA>7^0Yqo>5<8m6kCn@ehVG$%VgS$KtU5%QRoE&_|t~=7LE6T?tBWSnO z+%dRN-K$32vthSpx!aE}hhnDrbv6~ijDUI1Q&i`Xw-zTS*06)TtP+0eMs&(HWsXm3 zM8s^z8EVo^rOLXK1#L%{c5X*Ks>=F~q~z9*Wn(Ex%0#|iTrfE!lTrxDlzR%sa*B6n zOm4R|t)mi2u<=y2n^%EJT<32}V( z5n2t;b4uB=fsY5!*GZ14%Ys4AA6(LllCnlL z{yVdb!#e|<^Ha!3h$%QClaIWvdKOLdl*HMT1IeVF@dGwJz^x>gLpba26m3|%?9v>Z z@rt(Y7DMUYl-hD>nnFoM->H^k-8o^%s}Z7ZIUTDBx5&|wO+IeLON))A$G;UH+VPK94@%*R_SG9_L}3*hBQoA>S>>FuBd@Js>KD^Rc&Qrz%y0=k>gmUt zt50GkrO9)=&|XxwSsl(u@7}tje6i)Xat9{7+P0}v-Ps<+6x}~~=d~?y0dc=@?lW2N z>xeP~fO?*5NYZYfDjKMvqTJ>+i|@5v4g(cEY5Ggc6t40dsqN`rx{6d34?0tn>+?O0 zH=KQ^c{Kzw3H8Ac!|}U0u6GMXx7gQ`Gl>qVde-xlJ-bt4)kL;ow_%SMHOVMmlw@^N zlx@n%R`1RmbDnydL6x69SJttMald9w?N6B-wwIzf!Zt}GIjOC$o=eC1aJ9Om-O-n} zZprR+meUy}1Z38WMkC5SyLc_U3+B_^WmUXM;L>R23(qczdTVj-~&x0CDdSk0-V zV(em00iE;44_d*yP8qtBU6A)x&7)+SD5NKMPyW4W+kl>@6%SO-B^$EjvZ#+G@qwD6 zkBPTuJBT&366Lvak2IOF60){PIVUx(84dG;&2m(CO2pYDh^{9t$2q_}XT4FB<}h=T zde*JlDI;oeXgl_QJ-a!zra*PAP@p{c&`SORhg?_QM%s9r}7F-a(2X3pD6(j=2)p*!>1~$NM%%!Vx!_kdEua>!E1z-iT-2qcpP9Vj%&i@fh_m8Dp1zgP z>5gQ&QN|82U2@k=jvL(`t*4^FWTf++Yd2H9+Z3uYIrZyY5O=9}(CLI+r2LK!YqDL- zx!evxtU2yj-8(b#PI<10B`0&PGn$Ht5>2{d{l`OAMaJdHIOFrEoE^OijGAmwa6IKx z&%I956A>B7&1X^FBUIee@+eJkM9qVq`ORWo-DW^Klh(RvF6K?RLEM5FU(CQc^{$fE z20y)#j&Z=LsU-$YB`T>WvMt9ammxX&(p}suLhrkg+Ps;$HhK}VTAU^PyWNI*)(^}a zjlKHUrxzszpHs@4a*}7l-YJdNS%^|hXOWJz=F;mT6OQ0=E9h|PVkjuJbI9hYO1qr& zIbBOzX#+O%pFnGupHnOw=HnSP(5bgh&05D5O46^XjWp^>lRq)&YNV2>QZflOq$34x zZihmr$e)=SOaw&jEOX9jtuflf)K#;SN$77)`!!;umuxUMaD8gC&wz1^k=)TMa`Q)X zmDEsM8SG?q<0O;89qA#kx|Tz@9Q`WlRrX0HdD5#E&Vt8Fx|4>BEE}NiE2z`7O-b(2 zSIme91RkH{SDP$NI42(F6R&A#di**bpme`7e4O$L?^$19(}9p*kQ`?t*1k2#x{_4h zhh`p>9Z0(W01G^y#PLFxq+6gt?aNgV z==+rOP_4_&8zwUO>s=9|?&a9RjMQgk)YY(vHPS2Ncd_eTot~bo;oCf%lbZ3dGWJ)K z+}1SX?O!)i?e>`zafc+aBcY~RT1OkBYMLTH~hrpjBrJHbZFG8ioCbE>eR*B5sKXww4HJ!xsErGAmS3e)6Ip{*s0l~Bh74Dc(TytdRWwOD7hxoDYRc0lSs{dMKx z>!nda?9NO?B&ns??{p6nPNi+GqTc1Q9QGLGAI7_{mE&pKE)UEA>6};3=2WAH#Jg=H zl7=bD4inuNQ_1#wk2nCMJ?mQA#1>`~x==C6uPRWS>GMaR=v9lT>CNtNzA*8mE2m76 z$lC*8an`UxAi$VwF|3@?=1-#KgCns zSzg4C=4TzneSJ<^a)Nua&7n%9?`?T?F-UU7h$DmEuUgDpge(~2J$bIV!PSFE_UJ{% z4an@Qd_R4E0+=n@Pw`5N`IFa;NvEJ*Us z;0I4y?&Okd%*K*cpv|o&P0Ecg2X7$utxaC_MvEdx$s@gGH!0Lfos=oYG~Lc`O1yb* z0v-l=C%CUmurY`MEHm8Kqg5zI%c+(Yl50}6{qn1o3^@I1EWdj&W;`B6XHB@mACJO9{^-qmo@3;npPchuex2dSpkI;&820O3xQtYk9XRwy zCLMCOId3L;*TjzwMXSXXoC%3`pD+Q!}8yP?gbUd?SL;jy^fNj1Y>N@MdI?=p-5>tCp0rtwgPMbzR` zsYcP8)S@mf=6ovTfx#8fX}V1J3bIVB9~m51(YUHNk*Bw*R<9ygM`a5OOL8`snrP3=G20#fwcApfRb93@ zAyRG^H#F-RZl+dpGCg}#n#P#XM$+Sj7{KUj=kZvm#;+puIz8tXDQr^FQ6|&lm5?l~ zaNO5*V`M|A+a$o;eF?zLU06lMsdqEwv^j1>7i@u9u*a?{)vATMRy>ULBD&~7 zN_SmQ?aIC5zPGoENH-zM;1Ev~k?xN93k(3?pK2*Zx|U{Dl2PVIsan~r+G-pUc2+Ir zqektOB-T{-v7gz{I6e)N~`7hPklr&qE11lHhI<27VHXj!FWj!5Rbo5b+RX{zEa z%*;0dkIuPhH|^ImH*&q%Ebfp+__GTN*TxD1`TOfWl zrEMPQg0k;?;MbFhcY{pzXeeDKW?w-izVPxPB>bQZR%}pRId_gTCrk|EHKhorNwcE0 zDav+=)a!Kk8aPme#tu*8Tb7ggSIQZFUEGsgbs(Op>U(r$JUtJ4bE?$kjOZ@FV=2?u z+P-!dQrURsSrn82{I#}KB&*F!Tcg0vT8_|tFve2%V1YsZ>T=poM#mn z$SQA@3Kg46o2i|DdS;bl$;dh2)`gk>07E64c1Jbm)Q_`+iuF3E)%La0>~Pw_^KK?m z<#UiQKU%GCsTh?aIU{dhrFyO|ttiK~r+Td?TbXP+?(ffwY;Uypte3}<2>G9>tRTIV zIagB(&~<8GxYW4V!OI*DnKcaX4Nf_wWGt!x>CJjjr|iAybR1)NdnT^g&tIa)WU3WG zPvg%gKDC0;{_$OoKtIm9Fwsu)>vPAi7^$eFXv9Qg0QKOHYTULUMph$$$0T;HnO#0{ z(@>1JCAkyH5poUzsMcIXhU?sl&1&qoHoT=-ITa?Dv+zIOJ?Vi9Mq8;TgGG{!hudQBWFFUy#dCn^-%29Xd#H6C6gj;goaknuYz3Gi=>3jpo zHi5_jxhhW5v(dD2R!frO;IGZ6XYTNCR;mwS{MDcWjD0@w}erQ*CTb zuxS?nXOb%`Q1ZUW6@G9}THvO+mc3c@Zp#mOEo^1WW9Di5)Mfb@tXG4|fUYo4JlAYv zCghRfQ=u4DQs~#>X4{rq;0osl)84x1WZd7pB|*R>S4DnlMPGB&gq0_Ft;?nnGNUd| z42a+pl-Yw&EcI%3XRD8boL#{0~W>|2|5!wh**WRHpN#+?C zWC6GVQre4m+{R9P+ARqpce#k2qyjU7I#Z3Sq;HSCiYchmtIEwF+~V5Y)P?^5;#-Go zraSkpV&cK2)xnM|qaL)PxhhS)5tVsg45KfJJqa~6OFam|HMx>zllN@A?fTa~!UlvP zLAZ>Z4l62Y`w33{OQ|@<(UR82Mc0>Rt+xe1>O0qq_|EEkljK1mP+xNpduOG3SUPH? z<5GKdK6f8c{ae|tr=Hy3CB2}CxLgdDC-ko|*L+2FHR~)Al(rlZ>+fGthiavE+RDn#T{K0u3ob>5lD{md6^4l;dN*)4VJ#X5T3d z+Y8t0UA$J&+rol1C*}07GNM)WhMJzdV+uR&jcaI2$+(O+VOom=wAf*cQoJJ@J;xP) zdR_gfwC6bcy-&NmJNp}a zCed^VQhhEfolFq#Ka>;#dV%=&uRQpL`#<<{!(6yJW|?CYNSIinQbsY{o=LAu9iP<4 ze(KgoE)ImS@0$9bHR^v0^u0C)^R$SA5Zm0Yde=?&nUC8No~xI3V=~ zx@py?iK6En8rPC6WZy><=bi2nd|jJ&RMnukGUd;b78C5Yy|3UBuft=Z29 zddV}?Vv&B#q;jn?;Na6gK;FwM5v)mmK1*tcq|@-pY;&p4?rZNVi=;ZH(6XsH|3 zzi~#+HZ$h8z{xwv=zVH7wA>Vfv}2xWMM+fU>?=7(lzcXfHv-3L9coAOAsYmt$X;9C zwv|gp@)~i9X_?n@$ipuC&N=s~ZDVOI%%tSwHBy{aE1cT7vqBbdInQ2d>M-4qdCm=H zwMzRM^H{eTLmMF*xa!?%o%NE+jNt7fy)JhN?V-KXhbfYL+gW+bjxY(U>!`Se2~J7p zC#7vT^DCn-g5}-sG(+az+29Uqvhd%5{72%e_+Zks>8_+;Hu-8;k=*0hS8XUpG~DIz z#OA3t70Df2KCaQe8hkwXcc90u_~P#0TGSmtlSGC>j5z5d;{bYr&1QI?;|GiWCWY|7 zfc!3W%__vLt-Y3)7>YCp{#rYAa(lB9O=*F`&p5>Udj9PgekYfV#X}1S(Sp5M@8o+= z!ynly*5dIs&xrR1{`3`TEE$W2X6GZ*j=8V8yf@&TD@W2|)AW5N9XiDT3mPCeIOOE> zn%gtRtW9-JlC?POci`}mz|y?6sV&b+vCw0W=5^d_ql(rz(*Re8CgjeR`m)eNP6~JP z>sG9Ui7|tY^bY;`s!Lr%)RBkhKwPn>eJ(Ln9GugMB#LyW^4>8GZMIu_pxi|#< zDrF|c)R|*YI%L$MJe=aCMfDz|%rZ0OMt=&OZ6!RAO>N4$foU}P4stuxtERDh^%<#i zj7hmS_E=(bPyWh}AhvQn4KHdSYa3|Xd6Fs<(|ZA$c(<|ypEfdo-xT@V=w{@)v3|{E zobOIgA2{ZuHW3lZbM>v1r1vA8cN6RpWA4%&J|a8P<~2;OCYFV=t%K?7Q8t!O0lyk| zOcb>%wwo%xM>SpSrvROXm6I=+g`tspsrKTabop{ut!C-mdJr-pbCsqwv}6_|n$0H$ zJ&^du(~R*``twdtP+)oQ%`lIfuQZdelMv+O6HFkEwCtXv&~7&qlSou#=BI557|2*0 z^Hk=uNfm^6|OgkJOis-!#omsk7Xm3R>8=@9D~k3D)m1G z{?m3oD)8y}cl$>8R!w_Jc?@ek&<}BHdpMgQlZ^f2lhZijy_{YeIjskYq3+^o>b%bZ zMy6F!R9^KtZoN+{_|5wXczea#701LM+1pfy#o9Ben)cA#1-Z8X9t!YVrbZMK&lu$X zP|joN3arB+3X%rwAIhRLv_0fi zI+2uYgz~@{FP?uoiI9{m0pMqv(KO?8c=qasmXO`HHl8{GNWrC_5pD#;gh$!iVR z?uUD0xcXF~w;%%q;)x{bw9I1$lSD%vdltX|WP6f%s}kXnPTt2gD^#v)7_|#X%VD|m zyXGUBxeIKBh6Lxa70*#QL4E`!%_iQ&b4#`?DuPdZbft_j22cazsbh-jQE^e`Wx8%B zZ=^OgJ2?@sco@x1;sic(N^*HQr77LTc@CP7vysMRxC~T`dei{!xF>E7bIoTcxV!cn zlD4F*vdS4yZR3(hO4rlvWR=he_j8Vw(@$2T)ts(eva|C($o-%G2Wp=Z{C91qMF4oF z&hpEEsygJ?>Mw_W0_c7d(qppItc^{(9G7woxkv0oCqHNjI=T&qp( zvKy%Q4pg^j;nVge;!f1b`u_l*TEx;k2PxHJTi8OvSaQlnNjUFbB`iLi*VOeZSDRMZ zBkGM0!QKY&=A~&PXv0~R0K?u%gx$tIQP&>ln)a!@De%+BI$*Td{3E6LrYwB02*Ct$ zL0o>dz8f2k!Zliyn({o_(WO^OADthym+U#mp1Nzn1cdCs{zQs zJ$<_7zaBmzd?MGpF)Q7RH*GYge9ebEclQ0syV6Naz!JRVqG zlX+!y&jo6X&_4XB8ON^`;8p$0(HJ*v#uY$!XCj>P%%Fw&LG9`*csB^E>SY_sH+z#o zeJPNKY-6CUYi(9DDk~f~J$-986;URU5sHg)eNMj9Sw@Tr(QYHpM(!&+P>S5nZtV$G z11yB{D;jB1sp@(Pag`oPt!{cZfqZ2)pCneYGc+6c+}%Cv=;hWH=S_;~Fsj@()7H7M zn0UgXmwnEPHRS0ybw{yyGsG)*r6s#FNLhlYCzFn~*xg$LJ8U@_?_Zo_sX8^;`%etw z)oM?d>1Sv{&HqQl;wefqZ@Je`P0KOQ9FnUr1-_NPZw;i| zM2NX09GdA-ohf^r3@c4Pb?kLeX*L@JzCQ2GRqqX`W<_<8RAhlw30A8#c~z@Z!@FN| zmy+2eyH{L{obg-sFv2AY_;HL7Yu2-t%Tt+RAt!dt_q7v7Njc-?CZe{JY;74oHh8R| zP1KJqwlemSi@$O6nB$d8o~JmgMA}SI4hhCd7{A z)x=6S78`qvZXkdM1oK-^+{te`GyIG?8miPGC!vIKGf7`!>~ldR%;q$Zo(N%Fwxw(p z8b`qZcJ;1038}K3Sj%A3?N@AT{7=c^y&lvQu~lRHz%Wm(cGi=MQD-G9N0@wT=1Ouh zbHS}R{{VGtNj-a1&M7Tkr%bjfy!kyru3ucdRkv(6QCLn%*##K2E@S2Y02gYK{{U|J zZc8CztiGQ0Et)j8&?+_w#eIb}7}0}1a(dRBo7ZF8{3oZiuZIQ9gK1)NGn`a9q~w_$ zxy5|#N%K~lN6}%Tp+Q{peM;kdG25S;^R7N+-p_%ywx<@OcJ@5l%}!dG>1@+aF-`lF zg&^=gqODp+(8|TzJ4SG8rZp3y;`e7Nr7mRN$3bm5nNvQQ80NdJ8r_UaTkjFb^sOZx zRmi%X7j5o($A@%*J=i5a?R!3rYN>9Z3@VIc6~j@=KJ2$V%)^#3vN~rWVLrI31-BO` znkO|FG<>q$;;4&_b9-=$iO z=V@$oH5SnLPRR?g=Q#s4R{HIvkT!T7Ya2_M-{d)8md0~jB2G#9n2rrsTaos#LC-wa z&{BG{ownVL!+KsU1CTk*XHR_IXhq4-2NiIqqEZOUau}m|B!572R~u|dNa_WYm z9!_S)22q@H2+d{O+Zju<6QAMZy+mp_YWHSRij~oTY>M0m0|ZvpyssMIo^jT@y{9!h zi;>fXj+;+`rA96|_4TS+qOH2@9D`nT>b`9bhfYzZoQ`l$<;$F&yjNLeej3?HKQ(JO z&7{squ2rGc*xznklh@GKQEhT0LC$?^8N-p?4_5UqmtBr?&#iM>g~1XLo_(sRu6Yfo zW?;#9cYN*jtm&>i>%8QW2d#9a%I-{~c8RTKQ6m-|1yQ=a7=CyIH4LL2cJsLDX1iG?LF2??%)zlS66p(TPz8tl2>OcPgciB z+la{Mc%~3Y^)z1AW|6usMwpBf*R42_#yDzx)_!3>cFegHXKv%(n8e2XpVqmmK6zWI zulJcPz440cE!gz+sygnu=7I?YvDUcfNy@5mHjLX^Zg`i8H6!PUV>x!gZ=tBXK76@P zu6q78^mo1<l-HC5d7_}ohZo!z}^MrJLweJjs}`BZxqQcV{v*@G^6n$wB%Il;|z z!6dago3+uS2xoF@q_IQg1|Wv&MQ2ytwTP0mLhkj`Je*bq&BNU71n1J4e6|#0p<*c2 zZQFVIvB$ktnoRIcPpv54Z7UN=`-{0r0M{r4m2W(civ()D0<+~~?gj0j_Qkfb0 z{M^=4zOSj4#Q8vk1BTBvPDxx6qny-JPEX!CDrnL~FKr`o^`Cbfi@+PPQyFtT3|wxk zQ;HUOFvBE|%C@aE)l?2Z9QCVp8jmS(SCaBAO9|cAf!ew4Lr(ihk|`H4k@@{=kxo#N z=u(1{Y{8n;#U8*pBduXeXa(Z4IAOayifX%zwb<2Axzj^-E$qsIG5|TvP<>8GB6i)! zT;`&bd7Er?CiX|0YZ~>)zuAmratm`)*md zQpIG8F+uPm*WBh#f- zdB#+29obGZQun$X?z|$Oi(V47~`?7Kk9oDe!xYda1&t|&feS@Z;-R1Dj}-O1hBs?EXx4tS%P^QO+VA9bTS ziCye^(;W#+^{$rHxyY*>EF@ndoVHJT(Y26?0nT~NN_?re)aAO1Hzr1w0K*^cR%X`T zK|JS*nEWoq(~^vayAX$rX0vYDS`ta*R}|BXZqB$n%R|n5O??HujETW^J3tl2Xtu^n zpzHw!zGGgk2Hp|MT}~`qxvNGGq3yaox(Fj(qo)F^X=k2;t$LKwj1~7WgL1k#p#k}cJGkrKx-AYi`+B+L54%piOS>Gf zrD?04qvq|?%VcmfTxO|q?j3>Xb6i+`UEfo_5aqi#+ld&-lgT4BnDPmEW6mpS$h6h< zA~Rud4I<9W0_0;gvYM4Uk!GY{3<`ss}+;VsJA;k2>aNT>krtFs6m%n|mCPb4*B!IQ7rxT@I#%sM_fGf5v|;?Bi)H?Tjd| zp0%XJ@;C%I?kniB^>|;o;Nsep9nKo|W)K{8Bl50!=aU36&V4KBBBOh~PZ|wFOBICD zWC72vY8BpPkjb15MR~sM+*;K1Q})s2WS(S-ySgrUs9s&)C~i9aYn8z$+~}RTTbDte zQ%@k-l1S-SBhc;)fuus=jzRRSrHh3n@18W}DarDk&X3`UE+&m8Wf>VIx(f6QUkh5k z(y^x_j1Ow~OlDzI+wZ32#t>5TI^8?MmXWA4LZqW)5TB1>GG}5C)6&c zeZ`owA6n-nkr)iN@J3Dzez8q84`_V+Dowpi*%C&|$G1PiF;K4iYqczL$FFMiAt*RY zUC&M_a(hc^bsAHNu0yizIl#fL($eZHWsu6>AROe^#^a!;QURBt#k1CVRgydmPrty(*4(|`^JPg>*0)B4pH2k{E5RVhZV-hBgQ zG#A=vZZdeyNi~FK5*P!=Q(u%+t12?LpX7QKVy8wjMqCz3m-~YQ&Hw|gcaWUf1qXmI zPrYZ0uNm^nN0ACjQ<2T<*N{P{xRz14f>fTyyjxP%-rC|r4EwjJ%IBf=uU9OfzwOo) zaQw4M`q=Z0d&F|wK*89VG04vqz%AlkUN-U5rGAx$!*bF}9Y0ga_vG52^<%y8#(*y` z{O0}Q3^4?Mp7q;!iqhF^nGqB+pyUjFYv-}mCH1IlqCTqwP7tEz`m@NcEm35Z75W}~ z{uR67KMl#L>(MZP`9b=XuUeipQ=sN~b*fZWgjTJeUHEUputx-F5CsE0I@hh}-XBOt z^@}PRzbD4x9OUA*Z1w2DQb}~!^qnro5xtI8fca}$8Oq%4k0b-v9c$-lu4;`vtW%e` z@7(I3y8i%2!8kofH6mYZI4({(>slt1ZedcRR_;A-1Gxc@KJ`3%%)Ir-S}4_VmWcD? z%$1~A4CAYwy!+L}QX*iy6WX_(WSi(pb9HXWl0DL~ez>O3xJJmlx1~*2%^e6(kH^%> z7P9%fy62o#(-7T~K4aFp6;|Mt^+uFjqjL4W>|h)d)QZ(GtdTI0g8(`cSx&z$i*wM1 z#$1ud6vV>S+`P=BHgU-3rB7!pWrG*XXPW2cv^3mxBMOsIM7pi`hR_5cl6lGP zSr&#_?nC1s^P23XE?9H3j=eielssHNV=ZE?hg$DrobJyznx@ukYYV6uApTY8ta`-JZ62-)jIi*%Pl)7oy;3WCTy6qFdv~ui zy0`w&S7XV~88uX#=||c~?5$P~4joPw{=!>XUvMDq>Frgmq%qqt$$Xxqb6(1=3bZt5 zlS*z9Qbqt)8a zjHB`a$^2{8tSwIHx3I$cSGUfsf95ct=NZX8mWN+&Zk}F2Bj(7feoCkrCnvp43eTI~ zN37$^3l{vC*4VLbPpx3xT?A%~0#x<%YTgm{^JhGlEjJ>v87?oCRR@>clg)1>qh*3I z3~|kRRNQG)OYb>hH&#vbJ53(iQ*PVN^+X>x@=y_}b-^cILcjKW8pivpeRJi|%tP7u$7JB%hG>@0#uGZIUR{J?q!1n!~6g z$&RnkexVVB&i*Lw70*0k+22JbZTdzz|~y&hhsw5ZDK$f2oQ{ib-`SZ6$+TIlR- zmOCXU4t9*1caG|V>?vT zBoHiZIbElf{`a+b-luUBc+p#s=bUG)d%0v&#B(mp{P!`El^brAzcbY|SmKvSiPs8t z@^OQj>6$WO$jbE69+>NPFMC0QblMjW{vJ@Zk; zX>`iLGFJq*Jo?sdP~~!Fmy{jKYCn4_u`9+`aLsfUnx(a!oRFasxfvkSttnT-*&R4( zDs}y=zov25%Coy5$yX;h=8J7H)-vrGYT9K5Hx03`%iWdMe=CF~sNb2K^@Ozr*r4<@-o7^kZ zP?nv=HrwN8LHD`AH5wrWm7gRWA8Jvl?HXw3oOx!PdX`c$*~!i`#VCw7&G&otten?9 z-puHo;}*ftf z_CA8XxMe=Jv3kxp(%gr}(mU5Dsq9e%C_0v^G6x5}dbkpg}kbaIjR#to@VwO=b9y6bvEi}I%!41T?vk2 zi*Nwv^sMO?Nu|%3jPeC^(RWvo$%&G5c^6Yk$^ZyyGFWy7y67yO?bX7bc?8zAW}?yM zQlZOHH1654YK%_CJo;BlZwnCk%V)2(a#xgYk~mp!}!SxtT3iI2DQKsjkX2lyK?y zJgi&xn2S9ujz3wvNbRO1orAxncn-a(6L&nP0zC0vt{w@lQ|GahQ`sIruImi3IxFuu z$@Z=WB)YtkT*l0~$RoXdjW|J5X!+Sq$)vRzZD`A?#?q^Rt->Cp``51Nd5Xd~#7d+L z?%U02il*m>iZ#PkN^M(IbPy}0nw1G+K> zF~wMl{a79Cf;)QFN-0A7u|}e5h!)^ZFa@6H0}t$h*j2#sBm{y9 zW>f85iYkPCq_^qjXBE#U2)z%`FM|I75A;v?N~~j&+2YZY9&Oi_Il<%)*1qV~H9J(& zt+f3bA#Gu9xJ6Nn*G+F~)FUpsvB|?*bkP&oYdWmayl(P3@yW?QonUx^-DkK8RfLQ( zLmZRuT6-v|rxSuI$+;e9toS%;R*no=axsuA$TdHO8itKf^+)3Y>~8Iw9%7C8^e$rB$}0D5}dnk80qg_)A%pcQiF{7TPeHa zaxmy|pIUUw8_0nh0F0b>tUct^q+C7Ow#sHf7Vuk~kSWGFT?;zo6Ommrj8svZa=W>m zJVsWKCRnKXfuw=mSIbaTj`-lzQ-#xV*ic%U*3SsGlguQ{PZbP=mr=X}o-0^O-(^nC zB$lRyy8;Pk`GDu%o@L*;T%3-6wJkl^IVA-94vx`gW)IZ!`c*@t&or!JLd~84uDl%= zR=uUMoTijHkET8p`~=oKLu)69{78S{9`N0|7ZA>XoJ*%P7mSu`qDh|}w#QT`evccirDofvb zMSi3{0{x!+dGT*hk6!V?I%kKx^=RX3k{aVA?hd#Z7{@|;=N0-Z;6H_)81P<-Ec`vA z#S4`R^RV3P2W{A{?9UZW5snK9q$9iTa9}W#h4GlJXDydw+I0N{DH2FGH@$U`S|nfq zqc!tx+auO@dcDiRanw`z>T1%l1BX1Gw0F%~Nshyh%yN46qoVWHsC`KR$T{Ybj~!|f z)LlU2bJmeTXC(EefOnM6{B<>HETm!2Us|metPAn!z0Ezvg{re$-9;Hu$Y&WJg+r*` zh>1xp0L4H$zgdrU;@=EdWJ!LG-F{F0zAKK@J~8-W#@bW0<+NuRB{}|e!)hP3517(5j2CxE7jQPn4ng$AeRU2OsQv2F zNghMY>(z(u;$uzwL3oDkT_Uu++CVv$KnJg_V$Jcd#narX#izK051pQ158++QE6M18 z5~ic%%_hc8@mIx@Muy&4VvzL{F<=IH>E4`vD0sWeCNl?{pZRGcZO4Aqn^_!mxuU^i zy2ypTDfq;V$@XByxgKi}2XoS`#qm?dUuYX+idedmw*(*5R+5fMqUJH43mx`lsigwqy^R=*y6RT)!zr(Y)EaplOeTaO8=dSB**!DOEx9q=Y?G{NRj_YDOf6rK6Kh)q?Eck!gE^1OmJa#V) zE?SX0oj2n@hBXD$sfiz{VV5d<#?JJwV~+H%_z@F zZf`|_Ob1i zoE8}1*UaA#z7cqTUR$Vjy(7ugS&Kt?Z~M20wm<{kyD3(yPHL?;sxg`c1Y?e!tKKEme`oL8KjFBG#IoA>C*mxdqHRec zA7{9J01uP$w_Z*Bz#Qx zGvb@C?Ts2w>}4hGZ=-)UIZ$)M4hhCP-8phkU-BwkM~FPkWq{_Y6PUY>{VTy~Mhg0rqLdk3#^B6J$31;%*-{8#cpRTv zrO1;=aeuvRjxY-s3|E>|NaeW3NG+ad*4)cBu6l zo0bVnea&F`oyR@97})GGC_jI%6}iGMG9WAfKBBv9 znoXWXpFzZf)be_J(?|*P4w3_fuQe`j+-#BIN?`!@XgMo!XMz z=dCpvClX6}9xJS=Az0**Uqg5sQkzlJTEN@|Wf)d-#z5kgcl*9~t%`&F>a*PTe+b;& zK{CfI+hkYDl;iyOuczUZ-)YfEfqc!QKc##=Z%!?$i>dlQ4Pu=vPb=7opnUmlo=-Tg zZ&S07+>*S774kG%_Kqn1!d$gz*%>O5EXlhnLFxr`ntaZ;A()qQfK7EeE-=@r#QBs? zx;w=3Lo;Wd)pZ#h1^|!8t#QWD_nFhkojzjZSQ05vK+hG@+CXK6NFxO2>&6l2nuF^{sn75Y1{Okmo(CwtSQ$qCO80-AqNh6mK;D03!WWc`eXY>wP8U z1>_GEd=M4Wp)9wY+M%2Oq6xK7*(RInLtQ$okf_B}$uaU2btymLV>5 zJZLx4gXae0_>D~lhjPY-5__b8`^V9@1g0^sR*uBxy+`V>$`E@bKaBevqb0wA@?^R*F~Vc)_NY&R3f>x zHe-}S6QkQ91uzQ?_3v2MF|ER}RQZ77x#_}6T=ym7;Wf)`S&GdhGcjz1UbQvSiOFvH4Ijg1>i7gbkf$6$SHr%=lX89Bvq)t9uJ?2k<(m#JpmThGRFNuyGn zL1(>=&<9glzur_uGY9P~ZJo&&^{+MY7OD|$B`0wmD{6GFS3`LFu+;glP`v)p@g$N5 zC1aF^&vRYZhHZt;sQ{IWDPS-SeQi|LB;Q1QOl3J@8(m$`p=V#P=_?5SA=0>gUgs9Y zOLZTeeAOowy-&21qi1u1o!Q779{H*gTae}0gWjgQl`A#W^W_+}jPr7;SVlv4BvnYI zSGbovk~3a}D9hQm)W&mHV@$26BAP{m&O2QAu2m=IaHQy<|(MG)l*I52>x4rxuyx!Y#<+ zFX!{+Vp|72jb&UYmJx%%_3v0Ut-BtdEMDeZKsCej^LiS!IZ!fA20uD{&CbHn85eV? zT&eojEYmNLLVy_a_|^N;^&ReDg{)+M}|rK^?F~ zS-5bCx7(V!iOy*iMcNmZ=0(J)7u?lwNC2FZTPV20)F&?IM+NIz>E(~j#%m7d_3rM& zkZ?PCR&b)5bC*L()gkzPbrvllE6Ks+itTL~ zl0I|Cdd{Oy-4rh=S?pYz>@C0E;0oq$uLGkJes0FFq`7X+q~o(WdG0r{2b^`OVjx>I zy;~ohT}eqrT*6znQERr`_%zg&WsHV7C-toyU6hfAvXK*&Yn1@=imN58k3QUI)YkEF z-I`UMrDJPPv{^b{*4chs4r<#9kPa(U*I{J${d z)~zetBGZ$(Bg#PQ+oeeu-otilmfOgQyR>Tw6=E11fms(5Z7zkzRi@T-HZlDw4la<0u#^dJNRDmUri_YkF&%H(^yp>W-UF ziy&_F{Oh3Ju_s>LYnoS0Gm2M|S1@j*SD2jV1M{j%>Krj%eW^6%9S*B_3lvP8w z9GcGiOElvrc0Fi>Tp-gAXw>v9wZJQt>JK$WV$(O?$gPt}`@uHk^dLDLvB@1xJtodV zo-CY`Z9JZWvX-9nGK`#M>Q}f-1J5F}*eP?7k>0tgrqR3`jGfMV zRET+nhe6V~TgE2jrg86CD7i}g5<4F^EtAv(Hr=K3#YZD7HclP##=Ge?Q{7vV;<;}l z&*!x_ded%g$-9AFjfR{IX~4ka>t5z2q?}Y1=ZNUPYTeHM$4iYCJ^%oER-c;`B%xq3 zF`DtKU9`N9RvfhB%*vMxjEj;v>F=7&y0&eH9-NO_$}PF8nb!C9Milm8AS~Qst(y_NYZI>5j$}*hy&pD(s`EV5{B>L8}kGsfAmB?az$WC)w zcE2$V)1H*)YoyLbl&7iG+vCYA)MBZaR9y4ap0&@aQXXQDcVO}d=Upy|5D}{5j@9h)^3&w(aNpX= z&i7}pX%V@Iu;*yabPqc>EZx0&*OSVfNhi?ngj{uICEN<~`I+Mxu72)t99ss?20GU8 zN$=2AQ-af}i0tVjgOTZ;_10+l5u-5Y*A!HWQRXsIe$g(+L3eybw$R!2_pC|3c@fKe z$C~qO>A^O7DlYn*z33{%j}?SB8ClP9fn93ct+7fePQzS)`R5*$2%Q!{GxHPq(o0Js z6x3CoiY_E;97 z%9--DqwQ|f>dqGK#RC?ZPC4LLGkpYUIXiN_E4vdX2AmA&LKP!vZ?Tf#DN@`Vcc_`O zob#IGmaH&seWJyFtW+8lpqGO^lF zjxpA{ma>RiD;68OiumkKDpe~s`W|+Qq?*uvn(H0*JC@?T4#MUzPU16;IO4oKey~Yy z&pVyJf3?k#ssa18%Qo&SMmv=t`K&&a=?;(Ywj{=xqI7LoVc1Zl<&RH8&HV(QnKXZ?+WB(keOR=di^U8dXbZ6aHgX6 z(5?2xOM**f$7-#2DVp(QIBxt_kfj#x_d6)mbAyGnG;FS=U%J>i;|97Vo>}4OS&7dl zt$DbL5%!mRmpXEB`z+u$aN8SYNQ>*Zbvoo8O9PZnynS1)blA- zl|E`yckSpl&0rO<{uL7PGSDRa##;T$3wWB=OU-5jm z+ku1fPHN;$sLXtyn;m^>#-HJx zQLp24g`J7X0ClgfqgIs^qa&Xa3bT*y)$i2zFAmwZpQde=B9oDvR9DvXUbKXQPH=1D zF|^d{%4z7{hr3PA7+BJl>vNHB4&BeG?O4t;&mC*uditqIJ7$(AbJlE$Ho#W;zhjpN)1 z#(RqMV>{GI7%R1@JolmtZR~KKq}LI7|(o69#d)kFO%Tu^3-vHx;IXqXk(xd9qoxi$pkSS9fqt zT8~wVMfn^Pj-c0(@6BDU5b9Fp)SK-p%aH#7E_pRxeOA`iCYo6R!sp(HQOWYhbDcv= zwQCaF-lfbbBzXDx2CXsu_{pxA$y1BI=2}iSL|2-%j+duNJn|}q>T~N^_Ikv(*AC^f zp!}eERZyi-%5#wF)KrqE_L;UbAUx)-+apCD2*A#3NXkkatUfJR+l6VL)9X^%Td=yz z^UiCg5>(>V`V-B0+3syj-4#wwDy%!we6hzFtf|#%X|s7Iq@Q8;ZXHQu(wnE>6rXM~ zGhK?So#WVUqjOE0*LOv%iALJwa7SvRrzf8(yRj{fa(dRZsz=$|%+|dpJ0x{7NVfKD zcXrKl=_5~c#C2oW*0rGdrtWfAgMzX;XcWh4H+2=4b#?p3=vZ_atz#!9k~#j(nI)S@ z${oKd+6NGTPhM-PPRyEa@?r*4E;`k1V(DPgBv3ayi~uT>dD=%@CZgMY4-vW0t?spE zo@ho(ae>ymJvYP9#{vNgfCn66z06H%Q>37tryUD@Vbpt^kHkAfYbCZ-4)HG0u<>3W zH-#^*U~-VNHV#N$wdmy)`EdNz8QY7ll~ok3&zd}QqF-q@k|op(vKKGHo@<@a#L`-; zPNQ~u3jGSLYIU$2>E8A}J~)cMT56`7ntIlhlW9*YDBx!%yqf72+VPQJcwUX`?_Ne* zTUQ6M_9~QW#Y?GCHIK30qn68O7$=JKZ6{S1Ad=qoo@YWX3QKb;*Myb2n--RlNw1mI zDU+*Xt$H?}2k!c-65NkU<)u<_r3>p~Xj5^MZ?30AVR+FG8*$K7rw+q+0~P5}wM(x0 zowsgAP4(u)C<}7f7#XCs)8v*kGdYu-l6bE|31Q*S-Iz_fljTg(j?c=R?Hzdrx=ToW z$x(0%cFF6_I7`}8=6e^(6$YYuot~2y_DVc?5)?au91~o=u?Y%ZL_a9teQO9xa>Plp z+K(c!z2LirxYH6n+c`fkdi05)Q4nnAx5e5upIe-?82 zgyH!9b(RY8PM>?8)GJ1dQf$nXVv^keP^<<^XOmbLmPtCZ5x9!ssm&QTE{y#n2{_fD zlY5+d*)rWrD#pv|q;;(O$7t2nkTQ|THL7Z9C%Ma0pAO~OnO09ElRHRG1AL%%uJ+86 z5`3frJBsJU!Nq8Lcp0j#veQkrHptt9*06OsS;+wN-xb3~T=Um+*{d3gEiR{>Y7@$m zv2ED{xz20Prk+W>TOJsLkaM23_Bd4qRVCQ`&lcqv$~HZhK%A|=?^_55e*X2`TTc%x z@0<$o@iP7FlRdm5<)>yraj4rM46GP2#&cM2bv(-8_0Mlg;)E8mku&8}<%Z`Wc0b}` z!gU86f;-lgmEF8>#}+Z`&3jd2I@EpMrr381RU3N`y_yM;e4LY-tY#~25H=2STQ$!{ zoaF@**}fkB>$%M8ckdSE-UA*mJJu{$6HAF$?HTEwYulwss%_fG%vY-?UB(8Lw8{3h zE^^&|YU$&+LO@fHN9SC1Y0Bu+4JRwdsIwfwk-^SR4OSDO%Z?lled*9iT1R5NDczK2 zpUk=1K|FO7kdVyWWahhFr3)j@Zkwp%xv#n}vnBy8-`cXL+Lr~ROcHni}zx9&^^K z+jB|Bs7nn}rR0$xlwh6Iu_#Xiu2s+My98t zrH76VF?zEKZz?GPQrtF3r@g>zg(RGGuU>HW)YmcdmD)wC3&U@Ec-AlwzoRy$>#}by@SbZAmZhAs8zl+201C zwRq%p2MYM$liIlkGuS1naoz4oA_O&Gr#*#6C2mtUpikRy1M;MF`o3X`n#+$1&+1XDJ@R3rs z#po7Gs5Y~5M?z~(+R<%Q{K7GgD{8GLZihT2QnOX0%w1OA-cm~7?)^Ts#OiAtafsE` zn2eGQZ9=5oliN|_IUKo`_B?~cjVl==I4hD*(!O``#P;cC(Za<^=rj3)UqOP0Gv)L? zTD2z{a;;O)@rEYy=tG}2Mr;vY+2PLwXTnm=E)sAz5)W$nin5LxjHI=>;o$Jjtxj0< z>Om%jY?JOVhQnt#sa`893p%kphlT&=j3hyJ$!i~7jbICO8bdqb0has`lQl|vH)u}Zixvr0^eg=FWZxQNn z_=fH#p4tWhRq_Lz09=j&aizlCh#Aj>OUW1JPmQ>)D;+T7-nmqVkD-Uwq097>=M zPHB&6Z!5D&3OPKIM>UPwEvC@V?E4^2Eo1)xzG?}yZ8CIWC8C0QmExCl6Q1;ID~|D$s-K ze08hN-)Nc@O{fk>J!=vyiB-?dgVQ~0Mg8cufVaY_r@DE3Ed2>Eln z<@NQgSe=^GZEw2Oii(=Njg(&K1=IPMCy;yhtB~E6f8Jy$=OVP5NayPAwh6uKJ8^6HCT zToc0BQ|7Vxm>$(udly)Yi2M%TwS_s!FMFnjip^P!~#iE-lraGa<7x=Q)JB@J1euQ(6qbVOIU^oA$eHvR1Qh)UtD-!;n#)! z7g@vNpNOy~u{njLwb7%!0zl+^hFoN*1cFCX(~91;N|<^ooIW||jz~_Nq~$+`JDkn; zjXZDhf5&!S9Pq`J-NbRsB2Kc_wGNUo-9%$O2$p47ZIQ&f-+JZC)9Gwarx zRzui+ep+n_3c}>%`qF?&^`a(_OR=6)vl-{JieO=<0(J%D`7%nL8!UY-vv#pC9bR)>v=%qdV!Em`0`ApNKp zP@euR4Q{W5OtH$g$+!kS)#dm902O?DuFG((YBaTUJ0)p@Fg>y{*S&q@a{RX_N?4h5 zOR?c{WAi7?A9gI{=e+S9`oP+ci05`tcPwXS;73D>$(u>h_pz2UB&2-BoSoVHYlj!a z>Js*NNOGoq79S?V(~s|c;8A059wW7kplp?7%}XWnDyWVq;v=#yE93DQo-(YjDYMjt z3UuRWEeKAiRIxe8IQBF?u`4Ff#2(e>P0pm0n>u3~B-sLL5_y9%bob`3MX1iwV|gIb zNjajW29?c&!MvX)xeFAZL@- zv*wbDY1mhkSk~4iIV?xssp8d)h)Z#rj&i z{{UgvxfsD!P;l1Um zI;dt1OOmRw)5dIX?aY?)CBpY8d8%{iO52JaYv$T(bLb;AC3Iy;XEZq_Ng4F2Y#V-9 zR&8r@bnXKrnlM|Ea%vuq<#~oMY0N!IslQQNjPkUE9P`Pm++!a&#yO~pl6j?V1!52VVdjGL7E8u;JG9|U8y@f4mW z@O&?(>d;2S+C?dj8QAhS0o3Q8QC{W?8t}EREnzJhGQ`l1CWC|cx*ZS0f7&ho0O14w z0EJ`wK=?{O66onFq_+1Hv6k12W;p=|ZaZXpWOH9V{?os)#h#tvJO2QQ-vsV0{8ivd zkD4Qa{K>3~bLGmTlsw=ZbH;E;6i`vgvmRMH;j8`(!wV;hr07rhl=kyS=02sT&1ZaJ zxryPM8S>poBi6E>AWJf-13V8}%N>TD8qLF9e*%@|9Y)?*PYfw6(G`uxP?1&Pv`KB) zw1G$+3FOz27Wo{RF@;FfchJvhLhstyP-rY-ExETIq+^=dJH1S$7YVsNhRH5IVaX$! zfw+8*ndc|1YMZg7-y}BFlqq6Z9COp_O=W1*@wJjCZVq zIIgo)FCT{)T0kB|4i8a^?5e4{P>-psZF@6=KPkz}cFkQ&b$b_-sb(F??rRCdm1y@l z`C{c~)FM)VbJMPS*Ky&u2U3Nb?rs?$Q(mS4IO1uwz0nwna?))5oc)M(xODFkSx4q9 zVrUu%2ZbPlFl+WoG>#}$Apv6pfVK79Q$yL}VNq<+;N>+rs#K>f(;b}kqP_(BkfqN# zrYj=@SRSkxjwHnes`^R7cbnH)$TFZFGR`k}%_(fNSW#2WqKv zU_&qjj_196)?rFhpu3~&aJAhU$;V5cm1%7i(Q-~m9X;wRjS-}B!7``sA46ZC$}&~n zmbv?`3ct0Yq-0N^smR#f%H8Wsz{k&VJlz~KT6Yp71}zQ z#icmd(YMHN+QQ5MZh7b{tkdED083o90*;=w)|-^C*zj>2%T#&{77^Ur#4=YMNbg-y zw@7UOQN}nmtecuipAlW!vyqE&rwggW9tc03XxZ2$y8=$`c;dHp6VVvSd#+EZ)7!%X ze8-Y|R+MRO(lFWxt~BQ4(>NtLEejIb#PP5PjN}8}smTOLdH_vy!dF&jDsE3wNd8#9 zUY-5wjmmG1MN@)$`_`%{YG)SIuFO$mg2lM!KUxtG;aNs=)YGXKH*|WAchHLNB#}Xk z1CL6jEufCf$+zdmdQ|HOD2@$Z%;qlDSaHcYs4cRN3F%byO&;|X6#0&p-A9-8=B;ke z0Q5Bq-Flkd@-N$_6`1pZ*14Y$UM^M^ahEs)*ENMZs^&GHEIiC>*~Pw@u(wgoc#n)V zAswuWt{AW<1Fd%8uR6TXxxH$tG%oudO>L*U+Pf&q7vb&*7u(F)+~dZAsQ!h6C?=o@>qZ*DD(y7_TC{dJ&8ukD;l1IUICF{GT#U zylOj^AqZZ6m98U}RTRz(zh!s1h!-~uPdPZisV!_>^+kQ#aM}9TRBJs>RT<7|==7}? z#TrF$xoY$~eIiNBYY_p7^y^ruwN+oC-(Ht3CgOVEh4k5NVA#Vb0IvQ=DQYp=xaQSL z-s$kzoh4%~cP{O?;DOII&1wwBJg#xv(u;AHqNk$sIhg@#oyVZ-Nif|H%6rx`ljb`) zWXz;R7i5!@oYXh0Tob%51!V8eQ;KTl1;Aqt6z4rnP%*P1<19^fQKu)G5avw0DA2+YP zbWG|Ort4Ova5(Fv9eCUO+=59?d;MdZc<9As2f zsHD_UQH|u;O5~782Q^25xryelRE;mpy$Y%tOW+Cj`qqWRZHX6d4l_iZ=N}^|_j`gm z7%|RqkTKSfoT)46%~Y znC@mI9CjYn=rP5J@zsE?>aW^WZu=O;FJ_skWIuVx5s+A|?d#L83QOcQL7U^g4(`A_l)=N!Z#293^o;RL*)sHQFla6p} z8B~;Hj+jPLZL>P=JRl?HCz``)2xh}=VtGE5-3J**Q%S*YTvk3=Imtb0KR86(<2cE# zX?06-U6Z*BNMv3Q9qFO*$v=%Krne?P%t7YvmunoF(u3tr+`L&3Dji%uGCe>ZDsEbM>sIv}~?r zE0{Wrfzh$a73G@LvM#bW65lQ`yb74bY;?`qnvp`^P#OcMN}SOtY4-C?tCuVpPb1pBLe2$Sa54$%YkW-7t8{TujGA(1P#C6+(w<5t zTLQS-jY>O-1_)(5@_Eg1(&v(GofTts5gPTL>L|_%b;&$~U46R5Z2ZX>5C?k3wD}To z>UH7ixzFBv9(UsXY8Wh?Vg$KtE(fi7m8{b?pt3U+22Oa+Yu%!~o*UlXo^5)UuVnN+ ze@fKEdTOX_*u3Q!lyGm7bQ5aBU;hbk#as_JJ(5Sic}NnoK}*P z6IvqLUHNlt&sx}u`}Yfs0yw~^l`dAKx{#WhY4kO%q{s|TbIn%1pMnYMD`l?6O82ul zc5v4lkF6}krH zxtlAMk(`|R)@8-m5`e_FBN!FwQ);Ze4CQqbUdIw6Ztq)AC(gO){OgWd&7+Mw$(yLb zanBVU^BCcdMayTd2TFx^Ek|U%=4agMzDF?1b{Y4$E|OMqN7&l zU%MJD%c9&6FXNkVo!+&nI{-1Ms!c%uV%`_${J zt%PKrdz$j#({1-XIM0?X%b}TZeoA9G7|mrfhhryJJc{XXa9SL*sTobV436GQi_|QI z>$ZZ_Lu0!ffz5Jaq@fg$=sU_%W-ZOw^Ib!4Bd++@^&_4uuBw$JjIVh%R=tmW7zBnrNU8}INGv(e<3whhZq9i@H|A?YW?f4j zM_NhkPSNenW~TkMuXCwVv`&8J-bHd-<{9G@wvacRcMwY1{yar-6BYny2p@`&5G z^{AzQGBcjOmCF>A?scf7wFsgc%jYAEj8=x_3cxS?3*NA*)0L5GF^Vd(mqt0s>&;b> z^6oRi9M$=;&Ppo%Pn3LJqa?TTF+h*s-n>sz(3$3NBf%#-aqC}8LR_gyv*e`&=jwTv zi8RA+DN?xOr`Ei)QG)=eUz<74t$VzS*s8bGl~Oe4D9fSF8*7QADkEm+(zR^#JBKLF z4m*nSaaf39;@<4?+jUpFy^hu`3N(l|&CiO3pb=fK7#Z(h6spd%=9b!BqXX{M3V|1rs$?INIgHG&fPB3e^U37`Oz~NgY=i0U{E#!g* z5{<3b1lEqatw-6*x#rWR{;|xu9VVSF*8ztle6`-``gHdZ2kYyK@iDUYQRY25u5yPW zTC=FM($*GD$2{jIy)Q_+fl@exz>qR>*sq4nD_5yaS?I2DItnwqh_y{#*h3;K{Ntg` zcyEYr80r$vyKo0M_pS0ua-}|LZqBN)jHxvqhZ!yV6(w7CYc5xkNk+!s>0hNNFKDFt z9IBG#PAfxWN1jMEG+7gPX8gVD?H_}_42Q%P7uvM9DFwBxWRmH-ap+Y?b6gp{Na66V ztaWWz^>T`GuaBpNeg6OiWq78>+6`t{t$5np5IXZ*qy#z{Ul^r2m~|Ju zk8e1qLXIkKCrfQ)f>_LpnLGQ}uy|)oNRefHg5%}lzIz(y3Ld9}8hp`C+N0Af;)*sc zkTKS@ms7KXQRYek^%d~-qgHQC&3P1-r!%hj?%vAYP?8TcbOE}G^AYhrWYxUJEMwh+ zlZyI0246bMogP**7wo0UO_6uRbKpb9mUCxFi)&*v3tK<{K)EDswZ?#%3_7 zP1B~VdxwTTAZasbP?>LlnLry@e_GMh{vujMX8uF0lIMfFgI_<0z*U`g((C%3o*JeX z*e0cWBY^(^gog9PJ|MTZ`#@NXqs+kFyV||qNP}gnl^wZ0wdvw%)5Ah4`|f!dXDaxK zRhGRD&dv~FEPDEyvxaX<@aj%7c6%e(t1m|E z$*yl*qrx{@mruE!Zg&RA^fl_k*~W`((bShdoeqlX@mkH6R>ntqew8)5I0eCPTADL_ zw~tf3`#GrJb9(yaVzVp{2Dz(PTIORm-NH;~-n(%A>v!DX#nZD%9V(!=hcD1~s?U50 zA$fk4+svvQQne+oQ$h}K=bu{7zm2XX1pL5s=C`G!lP9OCPAxrt(l;+XewDFyMYfeA zU~k)n6;&kKQtD|=%6!c7&#;TlLRn>2X&JJ?iLRE@NQhdK<$y}?NanvJDAXHeT}rYYzq0CT${+gnkR3aPZiyj$J*j;7qQic#MFg2-5y`8 zYEv+gqAVO|r&{m)C96E?12|~p#?pl6C)U1$6G8h9cieSrRH+ps-?UZ|NgJGUIUcp? zR;r5_#sNL+<{=qHTKY5Irx`u_8eyHz%;y7&f0A8SaLFA0HSSVs3f)R}lhDh!vo2II zA-4?H)vm>fVsba0N6>%z>gv^1B9rb#I!ZES!c-PEQ%97Z+X2X0#%sl1Z(MT?*xFJV3r{l!(Yb0&Ce! z>otJ@?j>ut8BNYHnnyhfk>--_ae9oISBQ*YcdtFw8Im_7WqBQII!e>H+9#8UrTA%(Z{7iOAnen_01WCuR6L#Gp#>sH5IYcM`9y69Yt7;n4@IyI#(|;o92eMQWtRe2Tl>nNVaN0SVpdRN8%G=L_zbThx_>*-!j7H&AF&9%Q%Y)mZ# z@6_|D?ir*w`9R|ou{%j_eRKKOJ}$K>Nu%mAtX1l$x1n3hX&s9UgT-?i)E_<64}r)aUKuWs_+;No<}v^Ia0jBxt9399LagDM@o|bYN6tqUcn(yq#Pz zU_)|u3dL+gd-=-9nVUvt*OZBQ+c;8<+is`?OYNozlh`710CNreGL|) zS54ABOCQTPu2rjNvFX@4dZQ>ilLXa?=9wZX%OM9CIK_ER5uHo-FA$T8adu@0qLrUy zhj`t<^sSZ55e(;^wbfQJ<#sWl8Oz@6aXOQi)!Dqm?zpJnkIa>xG;R3p+z;|=rkt%u zPQ@wSZZ^4a%G>rQ-pCx(a|w4aEJ+=4>rn`*X*BgaqfNp$>~p%37iGx>v(~dw9N~$; z2a4>ch?1pwZg{m|;aShCCobF_!*D(8QrhZ45q#t?Kr3a*D7n6Y8A;CZTAFQi?*i^_ z-Kw>_7o4wiT$JLHay?l|*>iO-NU@oL4aabI@Z~$dE+sGrMhMy*Wm&G4vQp(NtTW?5BBZB#GM`HI_N{weCVPP7E(SWUt#!(Ag*!fn zjTb7dt7>!_e}-ndx+>o~`US5-(|jxzHCYZh#yuVIcri zC#`W>YDx4x3YGnu_e{7n%(RkufUxX(n%joXNXiUkckf-wyc14ZT=F3q)U#~UaKC2A z8ROEpYt2t&?p=Jt(+0UYl&X8Xowa2gJX3m{R->p#Jne+o-`)eQV>3s+jFN67au0e= zuOw7&x$_vzOlnuWbVVkTfeE8BYfR zLH!MSeub?8W#vdgU8fm6>C}Ra2A`?)7#jD)MZUTkmioX;mLY)1{A+&IS4{ssJM#hR<4-{{UNMwm?WSG3ZZP z>y-%Blu_l-tm()8Sy3$ocHTtDGebwJ>})B;W9t#LpT!huxg; zezos5dg+GQZM?=)w~`M6y-Kk5jU&vVKZ+%==_+8&!yJb1Ow1Py>e~**-MH5$G@`jz zsp!TKP<>fM7*=fUR>!qISyEID<){F46_SgoE8kRTxg-0v)FX}~892)l2sP8_x;(d2 zpR%IKaQ^@*20RjdYtW$?DvO(`=PM~Q_BY^PghjW)9To<&@~u4G;&C7P(m?O+gI}N? z8a8(N4ZV$`;|aP($0Yhy%ie88-s~#PyEoYDdr@2LbA=QDQSMK@0&dFe@lT3AI@2_- z3|t|d9br~ttbSQr918q1_~GI;yzxEc@k_sahbn`veQWfrrwZuhRjSE+O2@<1ul1bG zTWFsrYErzCJAyZL13hYtQW;|^RBq2CSLRjYX*2W~O4RSvuQ_HafivBky+q8)yHQJ= zfBNf9NjT>?&syhoBASV`oxRcJ)zV2E9tP#bT(^~3^PVw-n%TIzZu<^8%H*>| zxhzIUY*kSb>^obMc{R@;hU4X@&25LUD&s6qJ!-7tPd^Kiea~9ygrg_Q_Z-w?8!dG& z#XH4r7%$96O0d@wJRLAQn&njOc{WrNPt>O?86v?$v_BJ}_sq}NO@7OrO1o~4W* zA@+dh9A>+p2KYZx@kfcREVSsd(>NQPVRCrno&fKf?x96S601{16Pk4-tre}=^97!{zr) zdm!7qXC#dNJeu_K%4&T1o+oASo+e@KCZm9$^^@22KT&=hd^ym5ANXQDKf~52mrn0Z&L=uE*`mo?$kty2|RRqAf`J?KIdDXK8p9o4>&>lnmm9dlQPnK8%< zjylkyx{0(rX|v$vb50s;=LD$Ferow*Pc?-)bio+oCaTG9(Vv^GXC{*^G)7k=Ii|43 ze42~hjp_gr4r##&KD^ajH7-SJ@(@6)a|;bVA2(3DirGNU8NfB1rLC6axg@U7Gx0CR zPYn2S2V|ZMMx?XcFvfdyJXg!UE&ZhRU0t?l5YKZAtjb7Y5PN}+MSZqYk*bU97`Mv= ze2z08TD1L!8C|}oi|RVhk33y#om*FzNwrc{;eqha&j)sLD;h5i=+WJ^?ekpUUXZF< zTc;rH^#t=?oG1{xO z!^u8LBRqr+W{7}Z{9zj*%u;opLFFAKqS;G1dTy|;v|%E z$)4gotU$@jbvU9MhVvLP;lS5dTspIX+ny}V1+lTX&# z)>!^vlgLU*>}%^VdBu87Q>*Vl^Xp-$R(F!r?=(M(J}1%wOLSUtADJO?G5-M8uYK^( z#<*``i|sO`=th2H^L=w(&MyUp#zWfS-mjtatLr#AoU>XU$EEnQMAje%JCupf@HycA zHLW#-GbZ%MBO!s{*Tht%Ix^*v^i*rYv~G-f?4*m3GCit+Mg-@rb2Vgk-sorq43m>i z=bFm>z;Y-ob64Q9^PeF0=AG=va^LnyB$C|HHjoZR@5dFs=u@u`e$o}#CtLI+~{6zSj`#Ahnw~J5-b)?c{y-TY9ga1 zydEb*(BXa_PCo?DW3FqJQ4D{+Z&s{R-fwu^SLJ6V7YU!PJd9$;+Xn zlzo++$LNRb@#6Q=Zd2^D2_&^5SrR@@3C}^_o|XG)@VnyHmEwO5+gjaSqh2E8a-N5} zu&>xNY810vmYrH(6h9;L*IsxG#x)<$z`rpH`w@E zA0S=_l(CGr&A0WdI_qAJw1`vJOVpbe6o!<Y^RTnB}xA=F(Q2zkJJc%>rc;9e2$s@SMeHq~mT^2QM=PW@S z*NIvc?$cUa>BH5hD5ZaR_bY!8C96fbw*};tJ!{eQ?P|jA-3*f|Z{w53YvOU#pFQG_ z*z!zdIXNcvMz`7Fl2M5jz!+c;8LaEAF-(k9Wc9^(uxZq6`%h@OuDX;PPGYC!!S$!b zr{S}VHhn9q3BpbEEzR>C1)ZtFfH1?ku7cLtgYM7GThdFJv&_WHspvXVpR{UVJ-gO4x6;cnQIbVzMwDE6j4YIOH?-3vmW$>B8yO(f zlaQHWdXd+?OKMspj#u`Ks`+;80PR&~wk$WV-s{CrG-=M#I^ec!qVXGa1cGvD&c1EA zCY?l^Qa4Rp-DVWxjp0Ps7}zc+~}54mWzXv+NXrGOM}m^ ztt;~`W2Ge1Y}=keZ>5$e2X8g!aXpl^8EQqf{38TX@`mPQjzMKYW*x0rG{&2HGh$8H8rYiPl_bKgQ@+Isap z14Xr!SyFY{dy0y@%@@k%kvsuEaX1KsTNvo`i(46yJRCH~# z^V-e2jhS=X239+;aopD#dm&U|!yihnZf4QZM*Fjvl)mBt>rl%fSjar{L$qC)*(=?( z)Qz_Nn|NRj2tKB{+2xhxV5Aita%&2D$@v-1@kw8DtCEoQ=9?63$r$_?f%?}?(pNz3 z876MQ8A7E-PZepDOCbb&-D(<=e9Y2wPkx}ff0*PbC9#@Su#s*7$2i9|3Q4w^&&y&~ zuo5}xoK#5(g^H3$9M+1bGj|iF;_q@NCGF1Rj%%L01A83R%3369(sz9fsF2A%bH}Z0 zM>{bv?W7OuT7?md*xizGdbFwpW*5X~WJRuZOYZsDtk(M>Btrg~R%bHaa zdn2Q;wGT5&;1QgTD`X5F20#_ZQu3YI(GPdtBHg)<6$Qjf%ebz4RiwF+HH@yj%xAHT z7iR7=S=Ux-VSEk=j|OL&~&i)7&x66e~lTU$u^EIA!(s!~yfjx~OJGk(GV zk+EVb@WV}k%Hyqhjr-2#+^ExqKR~Y!bFp1Li)pp8J8r zbv4su-mIH)qAlu=oaFVUw2dKFIU<`@ZcLXKCvsGibhzhsYJV^ZKgOGjV_eVOV`O~f z^`wGF5}cm2q?NS^%FTHieq$I$dgHBT+&g&>lbYh2jqJ{t`_AVds?1U+JF+oeNvh2y z&Z@A)+?N}(>0Pue?aXCYNZ+a0Xm%|Xzf6*Iit0_N5i=f19qG8ICef@?CALp5xy~?2 z?^|#vcjWWwQ*V2ii`|>na1sXNo_Vdq-!7t2I zf_)FIK+4TNNzF=n>S=d5S+R^rMqlFhtjXMh$lQWBBB{rnG>u#n(HQp(JefJ&UUREk zw3?KUj@(pHgjBUU98}}za;Cz6wHXsEpy2aMb7gQJ3`22T-kWmME4w~h z)Qkdar<0cl%(rAYb5y(7u?_c~cFJFC2I>#JUA*xuu|%+>hX(+A`qnEA?Ije=l~&c( z?VLufaV6#1d1Nilc&V*bU6FB|Vz$M;XBaMq9>Ok8-A>-o3fZFu&m0=lhDOOy%o6^Z$?$*!Kl`C0%=RLTx?@7R?sbsa6jdAZ%V)r%{F@)Nrwc7C-| zS6Z3fN`7Zi1?Ua|J*q3~pyh@^IO7$|7)krP9dnFVymO6oqU5OSoEo&uCXI3F&1)po zljw5W+AYZ-gqaJl+B;T{4IWP-rcKG;uqZofLnOg4*{cxU?~jr5x61YEYZ$9t5Sy%UTR5wc+zFsD zmd-~M>P*(AG^5!R!fON>5nM+Uj6!9(2?z3VQF zp(VL0SFT1yEtQiY7jvIU%I5TtD1c+{dsa-yRuaMT-iN($QcJd zutn6S^MPjvCyMg@Q%;gaEfip$gNpR!cS1Ai{{R5_=)Y%Lcio;a4v zbte_^a?E2S{i4yBwHkJedhSm)m=-KAA17MmF0}a{QC2K*({4Ifi$b+YSGBY`>rPAE zG!nsLu`W*L9ORDG$Z8h@&R|>Ru6k}#uKbTWaB!&=eOb=Qa*Zhsk;hR}!!oU?QpJzg zlV5KLLz3&MP>dULdyo51l)N^3)Dr4)9JnOsoL4e~l{cU^(s4P<`?hGA+D>!Qxk*?w z%_w3^9=^5om|Ai6Jlh^kRHD`QGOlKrfhkjmK9h42DRm)7Ao|sWaTMB9Xp-Pm8zJ_ zh4VS!ReQT4&SWu?N4HA&Dr!;1rnWofE<~J45UjC)#d7)Jel_ae7S$GOcDI!_$U2`| zoXt9v-HiUSp;|g$oA5fjg=rLsc?Z60ox7fUNdECvQ;xOs7-&6R8LG{L;SgVMe0z}H%}g|skQG>aZdY#d;k`P^O~ z{hh+L+m(mKLEIalMGD`$Bb>@=O?{zSHe)Og}Rm6I4IPw z3i5JVG-uv;zV_C6A|R`0sr0S~Q}KQAxRy~XD0T-Mk5OEBY^IiymZyhX7mBH0*;?GJ z^X*^7Qe8XB(g`GP{WH(Ki~>LKJb4{c8*U6HAzGFeTlRI-2Ofs#uve*2jZi2RL4$>7mtW-w~y?l%KVHtfM(S z&32am01?vUkMxtf9GuraCj_M{sGTsSPLf?Ndk@0z5W{)n6_0s&Ta`@mPpGfBv}vRJ zJY|W-(0SuE`IiuTwV}?fbdPT@!}3Mo1g~GMN-vfhc9qT*PbR)D(!VR+ zo|RbIcI;%__|DEG+_SDSM_NrQ#PDh@BBX)cc_Td6RA{uhnmq5U()OI4S$2JD)+APv zKsO!^de=L9;`>+|WOFH()6?r-bSYG;JIL*Pl;O=barZi_>$mF*zC>~c7&Yh?4#LS5 zi8vm$?M?eSain-lo~?IM`fO~*yPt7vfm(5}OcC|2YLA&K9*T>LDc#&lAte44YfKE6 z8`+L};<~xqA?}gQHqw2~EkjVk0l#|m!8M_xYLU9^kYMME^eIVHgPH0o@RdZQUe)h> z%Tp9(fMNH6sI=>8C4KM7t!YU@o4L(ijHgpWr31)^=0BZKHwtEK9o$z{H!704Ii$H` zZl;7NhYi=hX}W|aTW~RwKU(PPsVQ14#$`*7nznUVKF-H@Q;g=9x0l1*BMA37$MGer zU9z-;A-kGqYX;U}K^2?wTo*Q;7lbeA&h zd2~72X)Sd-eLmIWJDCd{{M=VtXyX}W>C(J<(Tt|u&dPI8e64C*xx7WU`Fi7;&KJ2r zRE|9>jxlbVX4NK}vopYX^+q|$V~?$N_IB8T0P06I-Bwbk2&QwSrrnHx5TpHt*F8mi zed8-<8rA2@e)lAf4RT?%mAyq;Gj#QP9z$@OE=#rmC#GskGrCp)?#RzQ>&ncb$rs%9 zGU}0z#o2An)!4r_IjrmbEcpy(&fqipSI<$eI6*l*bw2k6Qc{9f)t+ssmbTQgG6(RS zXPVhpGTEy!48eJ?p_1prMo9HAl`U1S=2hyDt;sxBBJDSt>_<4}y&Nnp9%g&>)M{Dv zMaLLJTL2Ajq=lXW^|(L-L+&&@=rM!0oSJ#%(5da zpn_XFy=q};D>JQg>g02`O}g#Epd)rgGsz(dZ@Zk=WRd!Bg%2G_M$c-wJLk|A+ zu8|~mjIoRp&MB{YDI<7t#(t!0499{`wOmLgh-Y>QT#^k}w2U7pqNP$-L=7VaEu7)G zuRzc)EgMT#-aNv7?|S3K^G^?GzNO)2<6T9YI-5kgb2N$wBcZP~yij*C^(XSK9JxGaBk`EFz9pUn~!&diklAW2Bd8k)iflC3$9nECt?O@!OQ(7^O7AiG2WgD*$BHQdh2?r&!+Pu$I*CH2AyT(sB z2DxzU%B`cmr*g;wV-WMWy} zNpY;kF}M;)ZuRJ2U^ekb$vflRNgP*AT8j?Smh8s~LUWXr^+T=Y3n4VV4t{QHKjTHkv)iXHWhHX|0QQjc<8=l=aB`--V?&YJ!Ao+aaqG=%QdWd!(dj~R zonC0Ot4Sqou>pbH`qh-u<#O`w&eO;vtt&^DpSkE-rF}aU?=1+4P$AE*E1tL>Ousm8 zpbQMxt40x(JKs|}(`lrLXI;!+smB1;HQn+oA+DEWCm{6{sZMQjr>Z>qf5cKbDYaF& zndIHZYns;eO_nkheeda>)$2i~to;bBQZB2Mc1O>CE7nzFx-3ax4;Ay)rFk{PahSqgN`lQ-10C>H9u-#%1_d zr|J5v?)vKISWVyqNLws{Q#sroNLb%PQjPr)>|D z%=0g27fzP4XXp3C&x&^%%&ug+7S=c|zD$Go3jFW*fvvsfyE595C@fnf_4?P==9tAo zn!?ifQrFasvjyxTollAD@@JG!D>h_y=emPcKG)^VCftmUwfQ|*&UZ=abL^uf@RXM7 zc^CuGx2%x*Egcvpm;UVo)#WpBnrhl zp_wVxlb^3#%cz;XL^c#I2L$XUN2znGi9#3{X>$^6u7s-L6 z@Kaj(vzIKQ>EZpoPmX_)==xTQK0?WpUXNpA9kK%IH-o?;yjZ(C9)z8dvD$)1delQn z9G}G1c`ohaA2f@aX*Oi%6lcq;MYV)WxrJp(J4{PA2BvVftZ-elbXFdSn0ODexY!%C>a3tG)eSZvLz)HDH(@b85zr55*4!W3bh z+-E1((!MkCKgT~9c+*#s%fo?XiK1dBlXFGakC<2JIc8Hs2Se+)-8!UvJ|`7lFs!Iy z)`u4#hA!^4H@xv4vvqjW0MfvdotYi6>7Lcl2DY^XNs0t747zCaq0~zO7@a8R#PeND45Sv%_MF6?1A~x?#vo` zib9>m$?9q4)o^we2i~Pc=xFYvp|7LcNq?(|kqK;!6Vo;8ayZg#Rw(5XN;zj07(q1`51I4f1k6rB9kEtK*^?)pDb-3*v2oSi?p1eVCmaxY6hzJE5>9eB zs*ALKK=o*rSvM%%*|2IR+z{uWrx(z!Rcn#SJdLLeAG_<;ph=o!jO6;9^%bs-JCnO+ zi(Ld8TjtLOi8UNDl{f(KJu6ts$q^{48y5QWMHu<_1K9m*YSUk`xK@&TF>83)Rgwn4 z0G@MQSbFua@>L@BIqE~6n^M&qw%#uBPK-SJE0w>sX>+xg<^znbbC1ToyTLymWm$gD zd%h+|+R)F+^Z3`@s9|$_Gm_Gx=zO($6>xJ^DeQeaqWI5A)}W1Kksy_qsc)2%{Hvm# z#yO(im>C%a9u0gQYEz>(86NEl>ZDV9n6q0vPI3-Dl~um=amiVo`;8>>b5Z@O;uhT$ zg-AU`5VO&e)zLIwD3vAIaT1jS?+yvAheSasNP!X zpog-)x16t+k%kWAqOc@;=LWr3;s?V&hrhNL!TbLJ7kEnE-$VG-VQACp`e=+IYT-dI zG#LIqtjW;ik?-qbs=8Gv=Cpj2{R}Yl{hO8!Z%J+Hen9xU!y2E3d}Tg|s@q9#cMB1* zl!9@=Cb>3^wv{X}IuT18sm8Z7J{f9^T{%MW>WG3mi8F}@@aCsgg`y%^RyjF4TRibz zETzcwTAazMZAFwAXD$&)1J{#Psdu}w-Y5dQt9<2xrtsl!jdu7vrs4k zA++u!=B|U~P904Wl8ugsNoMkyS%7BZwl2th2!c*j9P`$OoLhI?(w*Ec-*bg`WRckh za%e_&1m_K&ed)!g1txj)qovt#Wn$qOP6z8-c9WEs<~UsB8r~90SACAC{{RWyY<(B- zpT}1|7xAT~<&3e$!SgFP2XOj#{A=|mz#8?piaZ>3-vsLMX}%(fH(%*PYMG9I)<>Vc zp5Ssl$4}9)xcOiw8js$Dv}?%u+)fgPE>48B=J;Qk?p_G}rDV|cDJ*-N}uy~ixd+yP%Lh{49YyfkO&_)LEzk2bJpqgr2R z`i;7^wZc0$RR@*!HK;V8ml-3Vck(_iyuWyta`=y<_0B3rhjGtt zxvkS&dK#M(UC$=&c&ph!{81lQL&T=uNwv}dJNdQ$=xRwi*8;*1N){}&4Jx=IN zTT&S%6FASUD})g?PBUDtGK^AY@!sh3{chy{0BDj3+6D-!mJpepTbxzSn~WQJ-1exp z(oyPfM;`gUZmKvYw(Q^@aFahd878?~aE*^on9cDG;Yee*P|VKQ$UI`QtkcS~+(*oL ztGD|)zK1+*?XLGYj~AI=O_$1UoVU2InKdXU{@aj`nLmVMocFJy%b=87^EvZ0q>=0Y z01xbzN#iXa&R44r)$O;<2s zrorYg3IQKV?Sovc5zA{HrJ(7K&I91KeJj-T`&6?iRats^z#stgJ~K@k;V1nT5eMgrh0GV@XLj zp`9$-K5ngw$ZLmpIT*?0SEAHZ45~Qm+@*6cLP0;3b2oQj?kwH-rv#c;B2xDfA+owt z8}9Aiug5AK&b(yjBfTj>&QF(P7+H=i?Jz3GgI4X_i-Eju&0n%{Vsf>vb=qyZ%EjC7 zZOHeoqTUc9Zs*^sH|a zL|M5#>pGE^o@8w?l3aymJF*2-g7BN6^KxscQ*Ar$N|L)rLlc7@?B_KN+h77Pf4y9d z-bSmHtxSF6&Lp;K#Bv-Fj0)^+xN2n?ZF2N`RyJaC$C_QHPn*#GbmKRxHIuM;dy5v} zVy#<3ra}*Xl&0?%5sH=Ew=P^pR19(jW8Sci+>&wY?_O<9k<&^Z{f{u$Z_z}bH$hxR zjGt@NCAg3=ZP^?D0Hu1cgyDyjpL3F}-E@)ZdVk8RuwnAJ6ah&s36y_c4jonAR zIQ#C*(#lc{sC;Lf)}mxaLY#w6O{mzVE?6{)qZvOpL0SZ2+_xC(S* zk)6Brtelh=Gc=2PF(uPMwFD^j`qpL5ppF0^812PJJCuCRrqj`wmzeU3;9xf#R$tnP zlWLQ=`d6n)E~bYh+Dho7e{FLiVsP=Ex$9bbZKJK910?f`D$OcKwz8lbvRl^`$q7Y7>7O!|sM_V#S2#6x-Z`RyiDE}u>5P?}8Ob## zsczmWt{83Qz3a5KvWh4M7v}3(){=#yjpdlSANHNq?alJO#&j--yLEjqW-~pbL+j$8x2IP8HDqp+U*}YepLg=xP zfIQMb9Y-ghdfHVvXtZY-TB9sWHq^#)-D;Q|i4QqBHOCvqTJ<$rveb^E9Fxs+m#or0 zIppwbq7PSc>OE0JL{W=$KJ^pG>l<^)rx|n3%;uhmy{DON?nJD_=hwA%D|*dl8+~I{ z`_Y%k+Jm>c`Wg2cf~$^uQ!Vu!msw`{YoAvaf05SR ztWTYK(z^ZQlis~N6le8D&OA=Flsu0@uwxWl;j@A{uDefFkQo8z+o7&^Cj{A1q~`C~ z>n)deUZC-sy(gFCF78_#(!QyqrYRx?^3Gj|2hi2nCWtv1=R8tr%|9W&TU{L-GYIVW z6Q6Tfx08uyEKda2H8j-QL_^}ak0?ULk0z)|u_q;~Dw5Tss@B}ko@8WZ=nY~|Hu;at zPob?S>%T%KwO1p?NO>ol;s~iK!^{r^~ z#$NWqlpK|cTN+7n+0Sa%wgGmj>Nz#k`DH7hisgzlmR->tws3paMbw3*13cFxW64$a zG@P|F8g>V0{QWAW#oH1B=O?XoMlnk4=WfvE>d2QSH6-#)Y1*(+^B(!da?hDTwcM(5 ze2VDvzaFAPsrjQNnDzCqHcRVCEoEjSx}fjdvm zc_00H;_o$B40w`7h>n@>T+^W`Q(ez0t|l;>7mRH(x2c>v* zu$5y)&P#LW>f-6jUdo=VTZ^r*Cz*qV!60I?VpO=eXFw}h5q3ssuElQGYMXg2D zRo2Lq%DCf-^1V$QPU(VAQ^j{>bW?Mbw>7U8lv>>wCf4cakc1>-OH?xF!RXdIqGeX@2=%T$^T9W8 zvovtDi;VCqzYUG#sqbiIjmReb{64-%D|ulxpP3s+f;#%vdovj@$O%0SeMKg(&2!{n z>Onj7XR~}F)AWr;;*ObZtGdNz_X@L0-4RI{HTTZHYv5Iq-%PQyvz7r5mmIOgBV+Ez zx%aP&;#&B)VkxS7AEEH&JOxZGdbo()-6Oy}b>JIRv5B;_K3HAOxXuT)cm|`PUfbOd zDkfu`kfZgktg|wedU5uJjsn(l^B$lf~h`aFg_WGkQmUibSiqX?-&90y%0H|)G6~S6cq!L>i z`^mPJ%=8$LPY`I&1$g3{sd!fRQPP@ZfV@F>0#uA2TJo^?IN_^%T7#uhRjmld?VNS5 zf$pw+*#u_+ut&XBPluPcmx{Sn8@9Kpudbtwp$B;_QQu1^#koh7d(73e_)T*rvl0d$ zIm3Nx)I2@#GS1@pmhSZ}UNfAOCwI3Mo->H0N)9y9^bz68_1`6ZHad%sgw|S3%#mBa zoQEGVB<}p{uJF#Ar)X;ONXsGK4%ZpvcKTP!SIlZ-s9UQ&njAMz1B``R=vUOQtS0d) zxI|o>vBnQQtK0k;9+7baG_oL(Fi4TQsO?;s%2ietHtc#8DdFqmd1@^WW4^WU{ZN!x+ny?oXJb-kmdCVDvBE*hp8Rf5$XC$DO- ziB*}GBpy50o9cH_+(s0TIm(c0^gInXsPjIj#MFfsQlPb>B!yTV z!1O)qY*UR&P4!32;&9a|;#HRVec^GsX4s9#aqC>(r(*93aBvVFwHRALCigz7qf(&O z)><6xppkVzrHKc%ciMQ}89asyit5Z|%}<-q`1r%xRC4UiCfMK~?f{ew$!Q>XNCQy_wp$eRu=JO-_NRVzAIP|Mg%u0qm#dJdI z3!A8<{pOJARL>A6f^cc}P2@|@t!YlJp`pn>WjmJcZ?~`+Ij!9zRVyJ^KQ1`0LX;Iq z>Uy*)`}Z_84MfO*N1B$#30QfOwpjKR*+x#38(WIKK6;8tXlx0R6#3W;cP6X}M8GKL zJ?nZ>buQV$^BM$zV#c_Tz)XZ98 zx3?$FVU45stBz6jm6Tf0x-}(A5}D*yo)x&&Lfl-&5@#PU#ZmEJ!YJ>2B`wZDkq!ZVJ36Cx>My#n<$nQf@dw?L9xJes^bl&Li*sg5eNmXT(R+O+JT zvyegHW~xc7%jHO-R?ad(JXcjZk#zj-c{L?oPu-S`^Q}X~uLiDTX)sS-YSp&5ZlzGN zmUGw|`ua3(;Uq+rUT3N9eh8l8Z9qcKS;sg%!LNU{wSOQIHUoo`UY%)DQC8}EG?h)K z(C@r6H<6onm&|SC?#44+4yfA#zH!Gs_2kxsez6&^v~)%Z#kHl6Jk{A{Sv?Ojcb7`R(D9BwwUDyO=7dwYG3)7G<{q1kHkszv zm7V(?MwM(812`L)5IDF;AUap~Gw58~Z(qO4xDK9`%6? zDa=YUmBAJ6;j23IbbB7|4pF65NxfM4?8@8nGme$b&88VQ6hcYu_}6VbOHC)W&$wzf zPq~4qczS1sO`wg-(-q+w{+oBD_?yo=zVN`u1Dg7*1}ZfxDnHD8CVN7oqbia6C$so> zS2r320g2ty>0NYFXD;j*1I2lD>3cfUhf_>GHdXM^l|`v+H`*kLNbk#IrDAGLC9{GP z%o*oxbI|2p?2lPmr5upR4Y#&WX0r<+!O z$vbr$4>(rBo!R7dt@mhzc_eim4QSygNnPq^2`f2BlkE_y235;rlTgcau8P3qp5Sp@ z>NA^d@3Gqouu-yGnKJL>@5;APn!jatEK%YvfqR^DTYH?1GsTQ*Mys~woVu}9i^EFKV#D8VD#ko#oSL+@k9UBPZf?0X(*^8lHpNn;t4;efSc^p1 z;h!Mqn&@=v8+dLqrE}E!*A+}hJ(0E^gkdKt&c{T+Zd?wnl1F;gfw%`G5<1rtljOV9 z8AEYaKpak~XUt~#prjCQ%@s@;TbNfki#t4 zBxGWvhUldG7?Px5`__tsbG%-R#irevv1@+IC@GQ@cRj1M(sezT5y%H8l1Z+tJX)5b z=4*5B@7d4dg^h-m-W}Fw^Q_#LJHGNUJxAfk(!Wf;ANZ$GwMgzX+l18g=S|Fu^Bun9 zt$S4(jwz~}Ow5XzQE#Bf!;R-Mh<6bM{kBqjOW}heed^SqWv&rA{6X;L9dl(F+ zt!k^89!@tOQNq#Dv*W)Qe0P?4XM)k6dXt^UoZ~soe8=Knh}Ux3wZ^A+{*k!4#I8#9 z<0SOrzS|Xy!{u~6g*WfB&&%-cbvdUU7VV!p_`}Cj>eo9&xQ$23s@WCcx{dQp@|==D z>)yXI#a45B-1|CFZd~uFl>~BJyP|U@G6&&VSCL4Qm2yc3^REw`LD}wi=;NTpck*{_ ztUilOR?J(E8UkZh1D2gqqd$Jg)v<_?WqKle?{SI%tq-r)h629OFD1 z^`~!T9&U#OS2bM`xe5T`*klvaH6)Qp*EvNUIOnZ-T>kTH>xx{i`;Kc?SQxtFr^oH4vM0xh;jxO-xrkM*AHOGKR7wYoaF`L2hd7 zR|Z)W;C!Rz=AqgblQV_fi%D|r7Sn<`?NB_0%7EQZTIGs!e8Y0H(2YK6esWyriu4}> zco$dkkBeKW^D`b5K*=QZuV#vb6RRze&i(eFw|gGl;|~~VJ_qnr zo(=FM=@c>n7Nx0``S0Z2_fxo!Jr}9!dja$p?8W;qUHF4k{{V%h@e%EdUX6xQS1fDgWA3*nyVUn*B;K1NxkZCZvJ%V8qTrWZ1?2nOJ} z{Of2v=FVAr+64N{QIZEFR%H775<=j5S5#uRW>V&C$)8!cl#%8hy^TP!O*?$Voc^_L zYAZsOHGNGuQy+Nq?^6}|fvzVvDIExrV0f)1)6dA zwmv%>iJmUM)oASco_%ZK3#Oi3OU4?Q)up_Q87ztosg9kx*GewqwbP^1?Cs*Tw23ho zjRNOAaz`ezWyXFQL6eRC$TaTU&5t!Ry=ctEoy=sjh7r)XC1A zWqTe$aVs_J5rqxOA6jH&g;M99`0rXfEjy0d`HjgkyJNp!T0lvdeB9%u8VdahS@&cd zZqMgYw2k(5{w534*0UkEbrFab<4tvZka^(L0yS7vp&*XczPjAe#n}*(AS@q|oT<$* z!nL*l!;#chdZ%)ETXta)GRJ_$fH*%~)V_R+IRNvVkzJhH8Mw6*TF+6qj#MIM1P(FN zHP~9*T3lGDnj}k);+21jx~bQl2`STdXvM)jBzAgliM350HF)Kc?La%2H%xS|aQJ)i zzwLGq`O|JzQMx$~0Qaw~<)@k9oR`LrnZ#3`7NVS8(e&PzujyL#g1j>-xf$}^hELPh zpLeH~EX$VXIIoPHB~ETKJ=#@ONU0+ok(7{oR4kj0de!N5E#hAc`Jz?ZvSG&qy<+>Dt?#eR4A&%>T7{hvM~Sa_dAmf{T#JGCh^Y)e}D62qd7nLfC#jJBj@IbiC1 zGBw4+>ll7`{7^lE;x~i59s6K>3A^#1g)MA!FO3>ylTD~;R>&4Db~RkIu_*rlmVjlM zM!qxccJv`BbrR}+EueGD~IYl48 zIqytvWoA7ySxF|&da+jKDon|=0J+b6)p3THw*(HS-ms@B)04W~O{%l99_+t+Jf7m5 zSUf;61^R1i`!JG45XLcvQI2Z5?P&`ZG92;8<6Si5p!t#_D*pb&#$*by zx6aCQNUS;m^X8$qE3|Y)DPHFGjKj_S;K?0*>sDK4meyxHMmzSXo3%I8ifwZI*}>ei zCzx<}CxPCphjI&y^`%cp*ixKav?qo@&P;)U3&|bLYsV-ys^s&I=Bt~MdYtf5ifx?+ zm#96w=_0o5AD1=leh>JYtN3$Kj^j<#=Cr#E8Yu&xkdEV;`%JoUs|doY{{V(O+Vs>? zlGexQH-bNDUjq2M;otW+)-&U~#(@+dR!xkSbn8)!9^Y^+|)$fJ;IcMNW zd`s}p;&zd#2_X_oqh9JQZFw7XDY8x&4^(D6XBFvSb9}=htm7|wjGx?&TGX&Pl@3aZ z)fvLud};CafpQPqZY>-k62v4wI^%(!r<&J~_P_Dvjg_)a{z9<;E5x#u`kMV$513?m zjShLG%zTY*AFV=85O3spH;zAQZ-`zfPq9OCe#T1@?=vV<(BS~Dob|61c&hHs>T9iD z<^wX8eYXrp)DzOa2Z*yguAMbPg1?dVnMPNLr=#_`;5yEyH1m@+%iTH*Z+F~V>T8Ua zX-vPo8;^W(UzSd8Z<+1T`j_t9qqww<0Ifh$zrQ&LfN8g}A~G1{-f@%0Fdo3tB)(}t0KEJyN=*}D@ip8Cbhod3Q0Lhbtlu5NqB{UBE3jyMSLqH z@u73Galou`5R#lyGmI@RW^tCqhPeiEjIsg%IImFGEX@86nqetosvMFtpIVyLEo9O3 zS$#KFjZ~h>=bq^=C8ntxqXNqL108GW-78j9fgPKdP=1_NIF%_R(d1#O`#QF0@2oXF z*2PQhU^qSN4(e7K;!o!k!Rd|-d9-Y$CVLZ-oNZ$tQTT}_iKxdF(I!0n!~$|X>$lPV zBiUV%_G^`p9AO!Td8nQh#d}TB>0z@DT0X+2jcm_G(ENQAQ?A>kwYhl!VD0z6!oA|ZM0=N@PUZmeqvpxzFPc}mLThAaV~ppmb9Y*7 z-g$HZfp42VaYQAqr)@foJxZd*mR#c|vvpSTE!mG1l;*vnzeCocE^3xMvhHzltFi-} zw;8UpPlXl{oOpj`#?~Vdsd?Af&F?kwfQBH!eUmX6Dog&H&_bSk=0kM8VlM`k3-r0~wI; zKGjk(;tYjWF2xp=~ymCkcnI$$b2hL4ucee0oFSzH{{O+`-PZKQ`!F5#2ZRfr`%K_e%Q z0ih?zu2eQ;Zu?lfah_`~c}&L%_ld0`7WL>UOH_$1?A_SA4Dp;3OuB(YgRm4|ntBqT z_aomQlZF`es39<|!EEN0q?5U}nl@@Z$XjqnKJ`T1H<(KBGtD1l&D2*ZOL9POo19iu zw+!&30K6ogoPBFV({^N9E=Baq zmFE>R#>h#|N$0IkJB+zmEz5Fvk)%=S-mbwJNj`5{a*|qgG=jW&i6;#1PEG*h9qWqM zCXpbYdHDd!n#LA$Q9Gj<-0=(hnJ#q_fR2@x$XKpjidi7@1IZrYvxjyG< zr{N0>9M?x}mWUQPVO-C9o$zVIbEILyxdofIwONkorkJC5V0 zy+ik;k|rxg*;p$dnD?t287;#x=B>xxx-xv%<|tdVl4=KcTIp?({J6mymqU3;Xv(b<^<(rEkE&a{LUG7L&21Kz zqfSzbOyaH~VEA00T%6Lwrn!|Re2jH9tCXQ0W12CX=jdv+kd;+7h74;*P19UzD5H>i z{uRybG?n%{nsN7$t9@Xw$j(!qxySkUuRYZgH`EzpP(baTwWTFdzJ8W7o7AzU>GFqX zWg9w=Q(HpUbm$>`?L9zV^@T?i)wVln-LH6s zED5|U-MOt#EgB%7ofE3Gw?V3W+nU;Z2)Q6+=DGw-fKLXna^{uaQso{^5tVq@xZ939 z(+aPXmOO!xT~g8t+n8*OYoeZ9j93=NMOD&=nW&NvL(OkWQgr9caZRhMZguRLjO}mA zqX0&XdiSnXCYLKJ-AYmJn(*WtXRS#x?U!)vU3DI*8aVs6TadJD%oy@9P79Uipsr4D zeKM)Xm0guCA7~+t>{Sp6%at#a!1S!#oK@FQaCc0lcG*%hhR>yE5XFGbK{e4%@z=Q( z6LV$Aotab|k7L%gl5MaA2bxtTuW1z<*_l_%xx;Tc9N-$xz0?h@x=Hu3*P7DGaY-BN z7TM(*{;wvhcCj(cXm=c({uKtAn-11ecXZG5uW}37(NxbWtCFkjK1XM3xW*NE$9n7Z zxiIUza1ZBRZAd;>ea?zi9A7tcr;_?8V=uf0tg)y(?!>q8V4A|5Zw_WEvzxSI)VqCl zE%d2nEOHY(4AXo%^4?vvvliG!KqsfQbSpy-DvZODe%di?@25}rmF`1a#Md~N=WmpH z*PBP*kD2O6-PM$)yFv4A&2!h6&E`99;G>lInaQ%LNA~9qL%`nG|Kg za(VZzrwh|IQ*n;H4QOt}iMSlq^|&nCLCME8gO4olyfeDCFmcZn-G`;fwb`FV3?ixS&qFxFC!SIi+%eA;r*C5JgvzII?Ok(m zkG!6&`btz^DsEb3+)PgIt)9ilFq)%}?ahpcy~td zoc7TRn8CX$O96q;Z^FGd{t?{?AXrEVF5X5*74W&1D;T9`vuD;vEz0X9H>8gt@ppvn zSH$it+j1Y6vfzP^$Mdd1JRNyFn`4abCmF?kCSO@g2^m+8seUKL=2>LvR({J=dRBq( z`%lw;!zQyENdO!Cw3BH+jbHH&s}7&1%VDR6OIGK~4UzcQ6s1!gh`abs?6WUG@?p5T||bB-#f+wZM4Gc2-sNJkkR>+IGG4D?S{j!0thYNs@IHEq0G zaUI~9*pj^EI-h#(H2(mJ3vYG%)3B;@pQbCs#pQ}|({tMX*sD!0Zmhqkd_sHMc>KAB z(6~?!`Sq?A_r+3036xCicXS50XyIcSsN2ZT6P>F5>N&LWWbb^fxuk8_Tp#CN&*5JZ zU5JF9VH=bd1mxzvgByiVp=NlrF%qj?E1r{U@dEP2f=MeP4o(gflUyH+d|;ZBkDWuR z{q^o^sZX83rI2v>0C8v`#O?V__jUTQdo#aPwbW9yiYI! zdCyzv@3 zl}cBO)g83((NJn`?Af=pOIt#UrB^&=x~~uFmpXOv+RVyMKqrdx<2Y7QjP_==;|ZkX zz7yCiJVdhFqP*oKI6NBY;ntYQ7wrXr@4Kyh-C8oG7aMMQ%~Pwk=$)@xXKnAhsm(^$ z8zI~XB=r^L)15}SCEV+w8&$I_z=BJXTb%c!Skg_^kM7*>3&uFEzpToYSf{c*TC}5D z@$Pwj%;#M~SUzQI> zde4SFJTx}19ocB4P7#^7BD-6EjKA6%y}GT^g=PTyo-5@maP?Yvht(x>-lv?;+44zh z^gZ`T@dOvTY*Gn^cIAfdwbGq-(i>3iGL|FdT=(=f`TbfoFYN8q`Z!U1ywYa9uBev> zJpma5HF&u_I-Z8OoK*?hOy{zm!&_zxNZ2^57PIbP6S=O4Nw;}yh?3;g)RtKSaK}As zcS_VGDnz5{?_Qo7YEf;SP_K5PPb7^c=Iopv$E9xC;6@1?`qyiceNW-Ckl}o^w?Sja>8ULsfDua`kL9Ib>WJxCp1dYs;aup7&Fhd#5s&Y>bYB(!C5V zttm4MM7DzUXIW!niUIQfJXXhod`C0**1{ zINet|{ONnQvG*^-nL~JnIpUCX>5g+>P{D2**b)y+*O7_$6m>p{E^DsEKeQb?R7sfm ze1I7H*K#LaLM6inIL&t3nu@5F#~i20TiN$Hj}TgvvnD>fPu&&fcPS!Gy>}~)as_ta zs!7GvXC-JjZg!eBwdUEpb8)wTPeWNc>noDszFNYxc`;U9PP$X)quRpwS{H3zIY`_T z{J&cIJ50Qj?1KP<(u_o7D5l7xFJ$F@rlGuZ5iD>kB3(gPKRI9z6~d{mYs9x%DxUGn z+|2KAr>;(GZ%MaVrxG#973tLGr$_G^uMN&kJDt@c zp=%kl+z++86Ob#+Jb82ujU;69M+eflu@s$1F67FuE#{Aud_d916tXegbHK-1t048H92J`(CEU;l{X|!3bNc~avReX)7V@VoU4wddFRblPsN8)0C_1Y@OoS$$O(?4MKHr&0T_sxohHcg)F;V~V?D2bmhX zbmIiq(JFkjl|%37;~`nb+nSe}bZKH3g)UD|O8M*JU7|Qw3QI;hDEru@m$}0q2Yt;k z>NCR5>rSSBhFa8VQIRk2cMPEw-$nx+!N6bciuZF0(vB`l*KX&>;c3C)bY+#jNP!B$ zt0P&u659rii6wdFxhX>OO!eussq$Rn1cfCm;GAbQr)xB96fxxcSG_rY>zku8!pTji zC#fW*u$u@tZg}fW4t&f=-3}{;f|Zndv%alMO_H!ih>~+zGmkEEG8kj1uD)mOl9A6o zT9oek6@2_m+kn75YOI$si5T;r?$@B<88s$&^O9PoT!Q7wD3Frg-Rk%zNH9nZ*jFvx z+w6AHwA60F;bR`=;8U&2m{|2~*{q#d)w{8D)V-zIBkudz&T@Lxwz3%^7;l++=B9Jz zij9r_-I=D7ow#5(bt0`=Itj^dl;=4;>n>SBo3`giEhSnm`V&r32U1pUigCa~B4^C^36H+y4+8dp8SF^OviDMTrhQQB!cQnyxVU?VW zSBV!mElaNbtdzPYNVig3zIW18<&o3mRUeM#@8gsXg6n1<e53ML6Dhu(ni^4+GY)rA?^Z6?&6)YeEa1o3eAb zj^~QVyPhZ^ELdQUnWb6D=!B%DC(W_K>o=q9g^* zp|m$FRY(NqrFu9jl9WGqdD*5OIGQqc)oNo9w(*$x4x_oK+I1152gxIhcdn^Jnn}K= z=e1sHk{!_V-Kz?6NcR|^E2vsuI69bD^!wWDA)AzuBT~BUz~u8(Cx%9k&OdaVHa%<3 zokZuU(4ih?qE-S(lojJW`~EdjUGFCH3uO1MC1)nyz^@6DD_eO)mB*kQ=BqLDQU3sk z&>9`%E3;`-PF6>o>O{TVfzAOZ9r(?4I#k4IoSo`B4)xbpNOGJQc}ksEEADQihPWR$ z7|m$MB8Z4m9kcywj+|Gry^hX!^LyP#&oMTEeR(3VrC&2?><=KGywg*ZG(l2YSrW?f zY)-p7oaUTlb05p|0s7XFY7pizyxxTHO}RR&#h3IW{z^9x3^*1t`Ul~Vh$6EP4zl|3usr~A@Nn7mumww^S4zQ z#eD~_>vkUw{u-YJcwXRKUq}Jf?_xQUM?CpC&)pxX`~`GMF1{w73M=Aweu#Ub`S?^!72kgyt<6jcn{7d+O6tYRClUQF7eUYlI{-SwQJ4awEedTV5gq^S4=Omq-i7lFhmUraj z=Co|38y6t8W?)d#Y?ALkFvk>^F&P)Gc&MDOQ8OsrA{0Q9g5NO%BNUe; zJSU!e)``DpnQ_^sS6G;+$F6fy#17UB#NwlxcYb43*8Rzpg_<&cWeu8>GCjr=mK}H% z)6DlUl2VnKJW+`zDt`7d3I0?_jH|%F^{G#p*_zKpBYXGjP(~cwg4z1j(|R>7rZ>50 zpeoIb)GHD4ik?a7&1#bSjAGwC*!bfjHcpU4G*sg6K|=brryY0Ch-^Q5tvEiRdI7auF1LtVIROz^mcQY___ zH8smEj)TIV6tx`##Zc*blgS;Q{F_MO6g5*OD@57@l31_Am+UjM%Pk!)(e;Ux+@># zYop?cguU0ybvek+b6C2*n3tCCAQ_ks&bjy8-^}rk5a>Bs7)Cb^ymhY+@h^pRuMqfV z`$gC6lTp%cqA^Vrk%s^`2ZQWul1fo(qTVNE8S=|sr{`ykybD@=5#^ z{jws`^-FmO`z)LljhJ-CKpE$p9MzxN55RsD{i1#pTYOaTCA?Z+#2agT_>)7oi(*_A z88=Y?F^1%_kGgr}6JDk&v}anDI-bwnk;_IBqh45fZ7pJcR%%ukHn(jQ(6llkDpiIE zAo435{lX4;=~0SGl}=b{yPS0$?p}JyO9W6D*4=V zoRLl}eBxZ-=Op^n#?BT?P*Idy)ZNn#+mZLc$@Z?5P6;DvMk-FjL&{&~z~{ASMC`E)<8QrlUM<;mV&#pSWti>? zmIIMj;?x~V@%K;O?klRDR|zXU%+w>zW2Lm$o)a6ZW>h&=?_DH5IMg7Ydd^S`^x*T> zzPeb5N)9iv=1&T>eND@MiQ23v$}b*dCpmMt5mqk#CEnh`Ji!)63Kk%z@guE#)ul$G z<&oJ-6IzqKuj+F8hm5Ys1va5za&cVD{vev_(sa3*q+WKYYU8g>-`Y2Gww-FzyOx(Z zJBj?_cJ$BZS(D1{LLLop%2S-w7M2zHq^-A7w40+OvB*5oA`fg`*qn;p-Cj2Skx-4> zi`kL+OfA@z44LZH2_(W;fC2AXL8_G))y9wzsPpP|R_h zHCeiJX5SmL0Hk&6UJRu=aZ1~swKaDY-0+`>8i|@~c@|RBM&4YAy-&HWA{}z>&DD|L zp6g!hKZg{LGZQB2b4Np>weg;#=SIzT!)xax_4cn!(EclH7K*9%$!1O2DtQEY3hJkZ zr(4~YOqPJ3p(R@Pf<+Z3KDqm(iJ2FV{<`1+LV zVQ0%F?yje%oGT|NJxSI<2;ltL;}ucz*DE6rn0Kupqkd)7$CmQBX>#fpC#O?W2y<{b z&(gZ7IKdf8=-q$0EJ%Lv4BH z;1iRMYfVB+87H1Al|SBDn@fA67W-rovtuj{Ys~yncv)KwgN|!HM(cAP?g4X5^ZhwZ z)~6(eNDI*V*H)4dIz~C>vZ>7~>OGP5RPD*mx|^^AEy+`yW3^~sP4;a+An}fs$?;W4 zxjP)zmk5#MxNL&W(A8aL?c+%Tbpx#`-u-71DK{9VcqfSOp5s?YnYR#fMPNf4ORHi% z%rn5RsEsumag*qeKN&a3+h@6Wb`P=mcrhR|WQX2 zlW+uQgX%F#E;T(*UY(Rkl&cM@F_Tt;e(wj9-laZMPIT3T1tN^{iP!O~aZkT|Wj#ks)C%&fnP07M%^NG2H8$>B^Wrvdru!Gk;)0Vm;R|M9(l;aN4k=C?fWr^~`B=n^v%8HB~ zxtSp)nTR}AYs`Msz?|pas+~rssf&}n`-`{&Tb%n};4wDpe-)3-683YdX+}gv!5OTP#+LLOdQaPh2@*Bx( z<;WW#=Ct7lb~+4Zu~io3$$K<0n6$V(x*EN08S>eir}M4i(!VjoH+@d4O@V;iK*l(& zIo*&I&orE4DG5j3US&@|YJyHidCf}K#9K=oX}Q^k!=9eC$;r(>LwPP(Td7IxB{u$P z1otHKRHH!KfNVER*6GGtu7OSquH~a_B!lMVs-cBp1h+o*lxj+(8MI=dsey4Ki5c_s zta%A(K|JKu&hck7-OJF!x-9hr(x-UKTi`Ej)^U?>nBF$ApX3;&QU*QiN(mdy1e}h! zt=}Z%nKE|Kj-KJeZ0D~Y^$X4WurZhSr)PU3oz1smNMY8rJSH8s?i#4vxvxt#_{HRXTUw-er(2g=*QCmnsOyAM8G zHJ<06QZ*-DE+=!RX`os+m@sjX#X1``d)$$L4_fimoaH6Z^-@mB8?ji$9NWe+dYYDF z)Pax%al6Uc=xC*?iXcP##wV}VvhMX5?Hs9m6Z2-bifUF`no4OWbEDHQV|#Qe`}cF2 z)_dY4QJZN=08$sGEjEu2G&O6m<+(8Qxcr}cZzb|pAHuW%MxmT5! zB;%ebuQ^b5HgG*^WeKK}*uS&pVm$9G`7N5V2pBoZ#w)JPOUNRdS9_A9g#_m<)~AKs z$Q!?LT+&?9xp8eYg}P<(PVvdFH}OsK!(}XchDhLMy6~`dDrWUo1h#ZaY`Ch?G>@?0EE_H8p)sstrA%h;HxgTFYf5NszxWIUe=HIi}NR zLrJTmt=+ZJjdu(ZGlA6B#hsapO(I3hb@w$Ds*!Hsq%L>gn6Xo_ctZJKVtwMgROB__glVZKQTS4mXhU*Xy}xE*4c^n zsXCH(dJ|PASDGd{$vpu*YqQ;jMQ)-=^H`xWNVe=p1P@-c+g$BtlO$)Fdnf8=6qQ>E zJnOmf&m7hlo9Ewc1aN9$2}Uiw&0UmKOP2sg84NdZT&(wHZ*UF|YU-e+H12cOY83T1 zbm=FNg69PDT_h;VpyZSM>x!zhtV&Z!Nt%hs$5Wq5zEU-{%U}`Ban|Na-Oo~tDc!jo zrQ7eCPcM_61xAWo5>Gg;t3PCu+~oHfW6-Q1;fZo`b4`1%-49S=jzdK6_3WVyQ@7B-}))|t)R!X;L00LPsA)+NL! zBOrmEwelGHlIPI*ij$Mk9JZr(1(?f72|Ypet_uGEU01#G;~RNXZ@qelVV_j&3$zmeAKyDL+LP)cJ`89^A#kLf4;}%b4zQ!9z5dh`6-=0NzzN_Nl^neyneth>hG zJMrF~Z*O{%5K9am53O|lemuH87^BV2B=%=RY;Mb;3S`G$di3oa&*a3&<~LE)aadw8 zl;g{;f{Y~VzKX}DX&UyYXEL#zu-ncnwu{D>?Q6JB;!fa#ab9e&xNK#3sdYN1jKtyK z(|0{5!_RxJ%^4YFBnETPX1!)TF3(H?S6z$~9JWC{&3QS5V?t_;EzhRPtJKCtR;lou zH;TMMks~5WxJUPK+#2%h-x0)Z*`>sQ@(yX?FmsL-Uq;VE8H$XnH7PAZ45y8RcMGu=GB#!j&F{Rxu z}H`p+Ab+6KdMM zyV*&;aT}H62E30_*F={_4a`ss=QZbGWj5s+nkA{-n$nDtpHq$0bw~3yhb4*bdsYSI z*86>($?IO`8f~cgpDhT+4o&T1uAF2SOc*mJ?lE1_vNsk%!mwhz4&t@OzFM(wp?FHF z4pG06&fMuYAU@P4QQN&cOR~N(vpiCa9#xd*@}a7J&AD!m2NhjG+WP+h!8Ya6T%FAy z@Z$ z#yq=jWzQTI*PwM)Jm$4vp4HDJXEo$hr#h6Bj$6VNntSM2eY?gS70!Cn0J2ZVVZiKb zSSc%X(CKScByL*h{{U&W60U)k63kWe-;yFJgfZA%+YyS(}yZ0JfAd7`>%Zb2Q=+o?OVoSKwJdp*EJ zjf-t8Kpm=_Y2C}Q5UE)-?Ww6_DG-I9_ihI&eQSOuS5nyxo}AauVxrT!>U%D-l2#je zr(0@P?z2XcVKyE=D)L_vcmh!rmv&K-6zu_f`qyq%nAE{nikr}?v?Ge5uesrR(p_oO z%#K`@f8!lJs}j$|*Kyvdl362VkQ6H9A8P&M4=Q!(dr0*@Hxq-_>!I|IhQ2IoR+=h9 zJmkg?UtTM$vG}t!?z0RN+?E@``J0Zl@U`+fZ4hGN1)#`GLndt?gUl2AQVVO6G9kdN}=S@w)gL)5J8_}7%KZ>XE z3khInTXw-4$0zZxRMR7WvaVY#>sn%9sJ~{`rt5x%Q8u#Q` z>FyN#?7U;BuRe!MlJ8P8-AZNovH=~dd^Jd@%B8jFJWU5GYM)E$c6NGH5yGd-RZ-1( zkHp8f)GbDjXvR{i0rLLgbqitSvHyUfN3 zueQtiD?(RVnOB4+M}Wb(>9BCnWc;lgCnVsUB}L(V<(P zn#CP<+9~ZobrLG`$nR44dsFgv!u+rpP)<+Qx-e4a!^#H@XtiE5`_0>=`*aSilb&)o zu0H!sU5-!7gUw2Q%iZX0ReM;Reb1R|D?Du2Q-T2C`_wbt8NfnGuJ;@7-n-d*B1jCJ*_81l0|;>=0o zoYwejLYuy~IV(mgT9<7s9($q2K{eFcX@=Agpp2ZJeQ2v)DxAG6VH!@Naz?aKIcyX9 z(%inow>_)KlZ&ZjZ6_p*mn0TqdW_eQd_%s54F*SM0!Am2-7r7;^^IvtRg_IALK0s4 zJ~h?+L?^hF9k^abPkPF-*KOg6*vK~q?0QvZcv(0;MZJ$-4G(EeGpNyZ8%w$5XPXEV zupnn~u7=Hom+}?E$J8-AkMOV0r-qgma&2mLSEi}8E{60wmCKHER{p~cT(d_ZsrXOHfVYx26P6%jn&-$ij#bovy#eTJ>}b{Ylv0a6(+;5qs-$J= z`pAb&E4<{4goHi6Gw909Ys=Yk{g$;nzCB(|GU1Cp&^ZA5 z*P&?MA{TZ*mmXo~8LyzmQiW^IC&XcEsMhup>#?vMn6#U)4i5*dUkD_%R|j*R*{?m@ z+3C>t;@oHN8B*Citj+g+m7`^+2^l(OobeyHnl1~)t4k*E6 zZU>NlwK26{EghRKPAe$Xmnw_hoRsN0k-IF%Y^HpzD2xmp{c1SNqcP-UXBDKE+FP?4&AT*c zAuT3fIU=pc)P^L5J!&H>s~X1Ai+xJ+voxe578|Ql)day*(dc>@dNyuVI_zgoBiL0J1RkcVd1VQc zwt22v%MF1SAJ?mxl7^Z+_aB;~dwv>I_^*JfmNm@l{<%&mP zyby7Yc&m>DI6LtBhfMXWb!ASQNc3n>r&cmgVn}R59PY~Y95CYO1P`rnx$vZ6>ECir0FLvrNTg1xUqt z)~Tx`al(4t$g)5ZxYfzhIQdie9YpnZ#=;(NW(pAh`I9Rd0I>yo-5RaH5fbW zjs=NLE^enas_2Pv8_1+?ZsWah7rI5MLAadE}KX&l?8ZWhvCrBbd~@b>*bODSWtq`I|hN z@~vmbke6p`pEZHqhCbEwxEwrr`MFO!8DHAez3i6A@_l3CMDiIH5(ZnYPHW6{ZF=td za`H-dW0RiM^wg=wlzG$C`8-}GQE8=fPDhz8 zSOp-GPaOWW^Hl0QO*nRxk3zJaIHf(&@@}VbB)2k|TX1GMIIUj_S_Zp&fC(5qM}Mt- z-1#F3N67iiJh`ent6b{tREHq&*v(KkSbw}ZJRe%~@c#eq^scf^pfIDRR%4wGcDH(gJ-Bezl_&lQAbG;C#5O)U6*eUP<#lr0)a7rbh=D z>U&i=W0|G-a=?*{S5+xPnCPmcmc30&b!gDDZVWmDTNbygmPw>4#WJHkYe-jdpS!(` zYev%LW|gkBEKC8BgAck1>01zZhT%5L=e9uGjmMh$idnRjUoqvpJZ0~7MX7vQbW{U7 zXRblwv9A10Jd!Mq`F?|UCb?=?gy7|WLr-F$uiS_GVoBp%H}5<9)pIG9O{bH$HQ-dA zHSM|TN8MVP@)u^#F@w^a1DFdAK>2_sy#9OW5KErsNtQ;ra`^)p0M(Bvrh%B}EO_>< zoiA}T4W*>Il^)6AP*-tP!<-`2Wn%F5?06sJ31Q(^7n`#ZYw#Pjb=X;C3B{A<@0&gR-t?srNtjM`+vSmuow za!_JTm? zZ(mwzDzXC1GC8S)TxWR`_IZt4JDCV*{PM7}A6Yld;b8Nr~ESbM;+uUr^VWc^5X#i0LP>)(X-jxKY;f&>VLBj?Du!^bK-0sD)ACY zZQ+eRv}m zQLd@Aedi#Izr_(euB+^R7V}>^Q+-DqD8R2h-TRg3I#|a(oqWfiz)V|{x z##bl#*XdctCLBGKEF~BF$?kmSTZfi68TG2$Bhd9NLP@Y4@)dTfsKTi102~2W213qB z=e2%2O zmZQ}z2Mc^i9gbgb9MYKnaB-80=aj8>7nSwcc|xR~`J@b`h&&#D8l~@Oij!Q|D!K_6 z_I&je_|yP%^L=YhR`eQaw8oFVbJNnA{{V1}*vacjCgu&M?z$3rU@&!VNWtQvdwh(B z+)q(brESY`zs!%w0Zv;a(~L@qk(1oka;YaR0^E#GEsBQEzADN_Ln&N>MOFCH!2x@NoN{Ucqt28NH+2G`FM9oqw<0PsK^?l(MhHS3i`4Q5y<1NA zMWmkPF$gXF&iy*`O7I4hvK*1cK6#~KIIE6$Sij7F8e%J~gah*X_osH9#VF}=c-@3s?2R-pst#wU%!CI}P zw>J^pX`!$$BbNsqvOCw(WZ30~t?VbPW^v-Es?=X}eS7fB<04NKcDHUNw|3}TKZrH- z%x`I{>5F%1BFKz0k<=eUS!Vb}g~U0-;b)bCuI=olx-#X7<6;`B5Pr4utoLkEy0uwj zB=xRd>e-=lk?&I$_6rowcXL)?nbGnX*IZ?0X4TI}(Dk8l3R~Pa&Nx>;*1Del^hs)G z4XksT&Y2y=Eh;DsMp$CJQ(n;3BzaMAPu@@~8EEzDbSI(WKM;Hur})$1W~ftBXRBwp8p&Iet2c3S=9}M)pM$XgX4}xS{of7d0)L~dcJ*CkbnmwbU{{VFK zAojr(@a@I9g&eqLIq1uRJ!_tmm0UfZ>qc=_QI;c}Z7odc2@XgZz{W>Q<2UG6|zvay$ic*nQU)qiUy)rKY4bu4@%RHK)3V3oF1Th z*AtSGHd9VFM>D9hokCOy09MFj)YfA=rg}C`c<)<7ZCQm~8h5suj>|Ls+`c&kRM=%k zG6SDV#X-l^N-No|NfqN{*|e$7Y3{(IZDWp^^`XXm$$ZX+;!g`^+>lQ0#2TJSNKA(^ zDDHaJ)167ndmNFBp;J+xX=w7koq48xqH`~r2@E=ORZ6EUotc|!+F5Fu1d_=r09?Cg zBvoMSu5$bj)}3jl+D}8PNJUAG^NVB;myGo5Rb9sU42s#tR~5?`D9=sJDaI-ni@9D; zDpcxs^&HeDLJ)k!fyXt{=B)0v2X0&3iRE@~Ps)2{twppDLEO3I8ibN}OvT08$li!s ziQ_Qt!TF9)diSpZD7(_`^SDT{M$!$$Unw2ajbR>VbUiZ?CO- zJ-ytY*%q^*!>SAwK9v}VDLBu$?a+rLq~)V$n|PhdYK+N{SZ^ziYpU>#)P~hzW-W}c z%@emJ@2W6OEJ8=E*kW|a>N&=G)#tb|Te`B~6O)?oWjRh(n$aHAmn?4`&m{5In2yh= zTOba^7aa#m^4b3Y)gxyt1}oE{K6+|hR)>vNAH3&%NH(a1ZfsTP<=Gk(at?A%Yp#y1>==AidM&2( zN5A-Q$BQhN1fFY38325dS;4Eej#8L?2C-=Z*&_Kj$^`--&fq zI)P2$iTk-UskY^(L)yU0*{i+Dygva=G38_d-N_?4t;CBHGlRK}ar3!XlSkRnij6dx z(&_Pj>&0UX&$_ z@)pSoPfoN#QF3xNr{A&T7Z9xXQd}M+9S?fB;cX$VwfULbIAOv606z8Z)T=6Vr1#L{ ztw-B9F6{N|=#t$1o)-+Nqa}TD&2T;?zH4}Pqjl?EEkEK$FRAHOZj~uYClPCLxiSF@;@ZpdXCR*S)Wd9%ZeTD?aK> z3m%5DWb+zKlgQ~;6x8(;-QB_WJ`o0U`qa@YM*dp@Nf{@#R8yBR5sO!3(W&!s*S>1g zTg+k{WS;exGEU5HPEoqtsrF`NVBLKx7qfnG>rGcwUAo9Q8Eo@T zwvAN*C#4dbQPjRvz2R;qR#(BrbJJcdZzs*kKDAIz#uX!{Gbo$F(hbZ`YhKi|sbDkj zTTYu%=4S)ErDR%=2%9AJtf}tZK(Q#Dzfz^d%=aB~I_9mwK2ejN^)0rPM@?Q=8FM&DoVNjas%qYK zz|SWg`_;6Rd5W7&->ImiZCrQes!Uo|9Y__=6y2X;YV`~xP?8Q`Kb=)~%K~`Gq7vu$ zik#i-hRHEVaJ=Nz76h?;^NQBVBR2i(mZQ%EoQkm{ux20t0nRf{6z;VekGif}u_kxi zeQRzsUo+-Cs$1ooNY)TmzjAwt#4+F<)t4N`Neeq4#<^UaW6jjrCaSxbn%(Iz-QH~FvOR0Mjzp8$(fUr=ibHsv|UEnm4y~7$DQXBe}BN=I)>Z zFbLxnnITM~?F55WIdfU2YZ`HkZ1*(nqeF#1DJHGGxI{eXisnt&(bK-BT-?42@H^BH zm)_j;Ju9=_jBa_g6^pwS@?3LNq)^wMxT}Y~c`>%78;S!U1;N7}!!;prsv}(BVALh0 z#~6E;E<}t%qmPKCOcjmRyPOvT&pR-BM|u>+g~PI7Lqp`_1D8d42(Jaw4Og95u>~JbhK^XKjr8cQ0)T^kb*HY6u zq+3_6Dw?_T3CDgt=~IQ3nU6b9Li$b&B;@DbqD!S`B%JY@<#2q?M$nRkxtR^k(!mVU z?g|1E&3K&ptlFQ64EFBs7jmld6#Lh+mr(Yzl;^TM+;v$+D93isPVo7<2?v}>Be3cC z*H=7_&deD86_oisyELOYx*qoDKdaAiEx3+0Cq1hpOtqEn51dQBdyjhRO-B#Drynfp zR#({`k7a0r3>6N2>dZD^UbaV0bBgm}E>$M_p1-n#O60OgV{!q{H87uKWU%DawA^$w zaZ!GRZ#q1D92x|RvuMHRiiX@(nOaR2Lj{cF@_N=5q|ZBIHOL0Br~E}JY)wnwm2PtK zgADHHJCAB?^6aoy?)~egq~kV?>8ZtPSBXK7dl8&*RK?EwmI~R&>s3x%*L{s8WURMl z{h|pM_l!DHvxxNo0UbSS%yN^g@3FIkrxho;Q&GAJZp`FxE6DW*ZEskSFic>Nm>#w4 z;M$Db`XkQ9T2N41v%1iHG*9q_<9Ay0%`Zuc5Xwe<&3W~)4svABr0GWNyxLfKcafF$ zs{+vr42Twh0mW@Jr^@_{d1T|ROl-_s56?;d+A)xR*Q0bnOJ9tQ<KETj#ni6zq)VnWUGFed-nr(42xzUn+{!R=d>dynkyPcGEj9=f_`K z`7gwG@xyf}Z{hpChPkj5C0dP}JRISu*J*Ci=l7l`h+2T3GXvhZ+wT(3BLEHo$P4RE zu3psL&y9Ghb9|9noTT&3c*W;qv~osz)->-7EYFOvJXW;m@;*pxdl+mIlJ>QCG46Fu z(g@TadV=3GIr;hTn)TsB*u$NlK}H_e5Tdp;;E*gNmc|cSY?tfvWc=CUxoasY-S4ax$;Cmb zw9(rb_ThbN#`cP={Y#3SBtS(l(Z z)c*hxb>ju6*^)xOTNYE$5PH(BU)yFen(BSN0t*k3wJ(a_ne#5E;)mYiM=nV2b6kJ+ zlU!MP|aV?MD9 z&#AULPnIq2v?@;?$fR~X2YU1S^E8)F&m*P#1(08D|Q9nKgpbTu#j=A&JgS zaWxpzP43Ia;w0wo_0)Zhgtz*lM&O3e2D_HxPpy0Ao$&c(uvs1=*-w;XABe99G0asOaj6%3o8eQk=0{nk zd^WQ4;x~4QGOK5i$@LZ3-uyK1^66%EvyLov3f!Mgy{qBzS+*)OO*5{B28Cz)!^Hey z;k!LPorzenp%D3%G$#iB;fqTvU6L}+{wWWisZyorv>Ix=WSf<^j&Qujboc=3UG3I*Qn{T zt>2XBt0^Zdv{%LBFjA#cni}^u_R2ElZp|K_r+98@Yz*%i9RC1!ioD(&kwIe-+6P=$ zjn5S}rKQDMQ~N6SHnhJ8HSW>nZj0&Gy0PG-w3J9-Qc8f>9G_$P{Q6PQVloLR2O_-6O-B1nlnbS7oD2b8?hZ7uv{Jvk&z#IFRKeBuiCs2p z+4zDc06szQlh(GIS<~i;mT81)Mo8*SdDxt`wK|qZrGv&t5c!sf`MbvuiM3hgj~-he z&b))j2U-exZpbzImQ{#r44}72E3bLqRCe}&izZBy&l#?A{%uCnU5@1$LI(Lk{vpQ( zyYLnHu?fp}p^bbhl?Ils$G><>#`o~qK^o3HtO8DX{Oi(JTe;UJh5;)VkbtUAc|Ggp zvkW{bV%WN@b#>0No)egr#0ENB$gKBAJxZ>u+FKe;goR{g z!k#i}+!~}lPQ_r@@0#YNR!KQ6i=}ESnr_43)jYe<;BFc1&2~R-CeS*ZwmGj>4RS4Y zJ$O~8Ss4NeFK*eSSn&928Lm9(R5P*M#}zP}qTH73RUz$~gtlLq zTgCR;PM`4GQMS}A!^-x|Y=BXc=ZyUaHTi$zjT+|iY2-1o%Yl|pm>;EkTscZ_6*|vm z8HHL@aEZ08&z*cjr(Hs%Y+%_Tg?XL#n3A6{2px#_uiPS`>=v4yc3)N1jrtjvq8ptx z)Uguw8RoIPGowv+L$GDr2J zFO@hxUgs_$I&o*A==X_nZVJd8u;h;P{Z7#ZtgqLMnpNK=becD#9%^?-2YqgaH!N|_ ze)Y=vP5r6>IUx2FQZ;ix`e{mmTlX)uYVZ@HFwbWGN?&ZaeEp% z4~ZqSzWXsx-MuqrVU0tcb%U7399 zU8T{VV}h+1Q?&L+l53j0b4D^w(oWFaSDV~T0S>#%lh85FEAOF8*wS+9a^^DjyuF#i zYq5t8g+P%`TCi+yC)2Odx3Zyrho`-L77A*uHO1d7ISd#zFgc6o*0!#sEKb?L1<-STyNok9hf%b*#C)o7bVGI&+gy zj^zIUWq70;x{q3!Esey$1Hc^n))AVN8Rs^UA9d|L5EgeNkSw}6j=Yv+`RxItFSoF_RR|qKT zVy`<`=xp?9pUY&y2b0BgQE7i?w=%NwPfGLa;+mH#(X*-;X{*Se`%Qu>DFe`oKGPwP zyG!zul09pU(vP!o>d!WH>Q=NKmMlg@;qbW~^G#x{DMQ0|70Wc^FEno{Hyah2HdPpW zliSjp=M{@2Qf^jdW2q{q&5_T`kF8HWuW&7u<9y^|yJ%BWmFKb73iGE) z+3GV+@eRqJ=VQ4BIp7+#f8s#@04l%FjFZ~3o*FJmTSHjms!ogN>~fQMj(@bX1GoY> z^`c#RX-?wiGEM@HgYmC^mKHIjoR1cis!C4%3hR5Q+)V!fJ06(lgHk=5*B2@!CwE*E z*14*>G^$;0dKg*~tqxfuBT~_&3mnR<->5ZvPtargL{dtlugnPb?OgS0snO<%-Srq# zuV=Q8=6XJzYL?^>qZ@E5sI|CwumkNKtL5WUo_3#8(8M^xO+f4+)TC%od6*<%^H5&i zfSZevjAOaYcEX>sn&jNdT+Rr}n@~w1a9ifbHI&mSBhtKvB! z9%PcUBJc@n`fLswG~@4Xd`3RJtGh=;c}}(CS#D*K7DiR*SR4ahe|f9S&&1of`Lop5 z)zPIIO3B{n`1sA$o0Dc0-Q2Flv!4BGqR%9fw)fzkIj0(zNp%$IxKvI@SK(M$_0r#a z91&kdT0wPb;QMVt)nrKvkQfYO-#?vjV`?_yx@mLJhrrU&lSO-ZdeMuPk=*>b&QCR) zi?dPn|xRmu_~eE?X^(*EKm$G$_f(O7pPulpy2W_M<4%j=H7_Rb2DC z-mI!FL-hpY1Kx?Z%X{jKGEy`n#JMh?-vhib9sv~c-^kHFTPoXs$@TZ}i*K4jgK=|p!MAtBrEpU$~CedfBC z8jy;z-H~pJM|`j#9><*4qTR&NDzYeL;BD{qtm7JxsMFfy&T6EuVukI%+Hunyiso*k z0ymYI;I2+9vQfOQRYeI#&vTHsNhH-V<@IdmJ$bI$6ZUbjn5YAV`qq`NO(?BydGuij z&9~5WmyIseLNT62T15r`8|G#_@mQw$ZfiE9CnonV+gl)!T=D2C#K@?*7#Td&&TjEt z4ys(f$;dzpvxOPsy(2>7cF;Ew_o$n`hE2**WjUBe#XpbQvE`TN$j;%xtBkex(VnHN zQ8w~HBop~pwD=8li#zkGYl|bn1ZAU*a6HHD$?clyl9Pkw+}1ShH01O>58=mwJV){K zD(=vTJHMf~`Z; z88K3MCZ>ubBPa(Xo+x@DoTrZbccl0i!xPIr$_wEc$t*rkr@eku{8;$8;y)hvrK~iI zR=tW@e6)l~fZ(6JeY@A+aNZI$qbz-Gqp|YYl~1fzjut;NrtpV?Ec`2Eb$vzzx$!N^ zfavM++i}zb-2R>U>AQ1qcb(@sug)_ZbxhM8I`Vf(=zW$R3lB;(`z=iAeqssfOj~{A zw(dISxsPETA$>%r~ zChsq<3wNf~<#O~|+^o`m_~3ES3L+1&m9j8+$S-bTV;~PrrV|^B^ zw7W-<@DYaIx$9atD77WJFy(MKa&<2R>(SlWm!Cps#`GkZNjVwzudcold|sE%TX`oF zBH?8Rm2Ce2TKxu$;hE*`68MqxSiC%_S5;&EBkVYCEj6tXZ)~4>k;v|+(AH#%QbHJW zUkKBSahB-y>B&wPA|oh!nxS`WC5NCUuy0dM&RTnRNe)MPsxlin$*u3yY`<-A(YRp5 z8uXnbQx{gN9F3U(;QH4^?u;Ic-5@fM!*D%)>xS2KwIzrd2c=^rb#qm|r;O`bSC=#8 zenZWC+wsrf&6mYrhQcdI9uE{)FPmp|0QuM;&I$G7@f=nWtt>Vo6_(vjm`B>h(tS_P zZv*&-&qwiv_kw(A8e4m~p4U@|9$+j;5~w_7NDK$D9qZ+fi{B6KydmQ|t8m_ZnE9=w z9Eni!93JBay(+Z*mM(FR!!>kryGoZNz9=3R>|-Q=TPK<~jO_!GGtF?MrDrv%#GJX& z11kbc9p|a4#aUdk^gnwwqm|W;k7li@9%B+24mZ?_vKh0T!>OlF-i_zbAd|j?hEbdh z0y>&(gyRZ9IpF%x*DTZS38k^Oq;8V-B7W-}WqQ@g1gWm!hT;!7tf9-!;%cmwk%6kK zzON`)+dWPPTFHEY(DcZ~DXmPboTbbxU+Y8VkJhdV#AUTO6X6Or`&doR)uLX=DQs9;MH|@Hqv^xOpN!f`FXjz7)wue4RmIUc1O!o z#F<7ca(ycp>7l$-T z1K0|m!>%G!WNt~pKE}8&%}GU>xY}ylp0B1zQZV7NGlDzT#q9CDvBCz*;Qs(x@+zr2 z^JsdIlW?=#;QUTn=fbx+`9K|yIj;qpVqirD$zHpMKaF(YuIRX~==1AI-8*zC&2cQ! z{GW3j>eOt))rmbil55s+jlBAvbQGMqrJ%9h;czp!ag$w6m#N$d)qxnu>VG=vr6{Lo zu7-6Y<$p8kZwcQ={{RTIGDJ?>A-r)3lEh+*vvXkhE-Z^v!(rXYDFDA3;IJjAJ~iCitqG$=-n=)W$0A7z{jOw%NntC=6xJ0IaBu3{%H2U z4g6KMo(6+aRSXVPhxxYglZy4bPZ8N)+oYD)2`aG2Ao6SF@fd00YAbF3008vqRgNN` zGu+vR?O&2X!S$<4INXDFNj&phP6nagchxtx`&But8%w2Go3V#2+#s*&vPu zZ-#{F!lS5qv81KSp!%MJZ0e9CYmr-a$X;boGtNn`4lY+d#U`S3>Yhb`Jx()Ros2R~ zsm#m)8_78J&2`aMr#W?Jl`dydSkcs&rI7&q_2-(~@3LQ*=RYt#D>_%u^r`$VJ2kSz0XF` zSrG=z0bKQ)l+;$nmQ>fN5<}%NQn{%X*;-=%0Hs8)33`>%?9aLxkn@~z zfmqU8;aQG(=LWP>wT+W)^CLJ!e8~ytJt`NEc6*NWNxo~BZ+7IcKo2;_%~Q&XBp<|j z)y974le|Vob2wl+9M+7J?Lb9y+nwBSl8kO;Pj#@d2My_2&wsU)lelM^+7#1%q{^sR5u0@IQSB9`k?oTBcoV`>_UMGKwY`K}#xIqtPZ^3LePVfn8@ zjTGT2vx5;?#YQOT?L?k@c^j1ToYzqm%BTnzj8`<h`+m)Z-SQNcR^da zEP==}s6hK zjOQmf>s03$Jw%#Ovnp+4a>TYqD(oe~?l~f}a$k7q%Gwgm8r(n_76jnrb)jMi;CH0o zbD<|E%uMXapp(~%tnw9Xj^e7EUcO>am9$8z&I`5=sjAa5tb?Zpvbuz>D6U(!Lg895 z`kGCu$;T%dp;G3~ZDWA&y;M(4q%~)9rf(gm*T^DKJp?66;nl{h&c$5y@Vy2d9 z1Z-7^X7{Yp=Ba+-X}9i?8>t=RS2#ZX>Q;7GUl|RW!l%0{8p3i;%;NQ#WhpN5LG7C4 zEn{Z8X`~ylcqY2w(xm&7E@@nVQ&)w}!3@u8n?cFuu31{hu3fY8jGWg4lzABugOf&_J|eV= z!tyC)+af3^2;#p(~5a$`H7g3vgwULi3ITh#gsIFeE9V!l_ zo0rIk`$0n}FP?d*t~Es|<%Y}d9qXT4tD2~*-H9dY$q+_tvFIuUkLE0SB;;00+>P1X zp>=j%S1bPUsiKjkk%=b*)~*rvZ`|g5&d7pbdELpSw}dliu6ox)yN!-HMp2%m-)Ajy zKsoglV&6>3+}x7ctmj!%gHLkl(v+^=%(ro;AG5H>xW#0BiTuDx@A=kLC;Polg+}qR z=uINBZ0GBSk1Eoh)a{mvQ9OZ+6~eHhDEvy&3C4*0Hl_wHjB+bqj2;uTI9 z@+vlD5V0g@70D#|c~3)4&MQ>9Xtf5DA0mux^~vPc6u0u+%!=3upLAlq7*UTeH)366 z^cg(U7zjq>cBpjqklYq;txB?sNY9)1sOSvNuy9B|m7LR&J4>9F9Guq*(Hg#giJYdh ztURgYtL2F3O(uy7DBi#s3Co;gHR`nK(X#4sDJO_>eGgvKC5kxIjxx2<+1zMQndo1dI-6~G5Vs+5$gHWZ@gX2|uB<&Pd`C20#Z^{NTb%U= zy=+@xoN=1stA1-Eq75~4J83Tax>ilWDL&9nGtG5EJj%;+I+bM@+o=Ss17!2~RoEok z5INw{B>67RcG{6U%IxDL5NXP)<%#6xxuFL3=v-|ko7{>>f}i%jwN(7$uRZIb-Mc=9 z>ioqoEkP&0twkXMGsauny%vV^rafGcIeNO%kXM7 zo0jHAqp2c?NRCPCj@8P^JdzG1JRWN4(oyND_7#75Q9>IK<8;d8f_nXG{8OYu453YP z*KN~hzk;TyUQek`=Hy~PI1JqZtjD}B2#o=D9rMz$N!3X{hoM?_SMCcN9nT^CYSGs% zbnsQq;!nsx&2lt0Kna&jB`*ELKxG?lcmi_Da% zxSVFEsjkzK0}i6O_18S9erynU>(af5(e{gxZjS=4Ia8@~Np*yi1UixFTY7EEJ<0+C zl7Bk$rA}1Tuhi<6E}ZGvYL7v-fg00tD8q0-?@YSWV3`K=UE#L_jzxUUSyX=VdY*LQ z8Aadi7p+z_MhXZZ@O>(YwrRCuak-nRJ?l6rI*s=@{n$lDI-8%_zFaEgWcBG*ZCcRW zsF(&tIUpQny!lm}lX2;xb$!`cnl}>KMq}8+Bhc4<;N3nQR_!Knlu`=}^Ibf%cyDO8 zNaU+dHSv(7wr8Np+vuLAL(iX_!9W=+NSo=L9!vV)xcr1w6{A6k|k zhq7C{9ua#qvg(Zv?m*8<^gjf6b{#`fM!5x-a6NhJU!dmLiBiFHLwg?t=zV6YgtS*Z zdspyG6KL`zR_0a%G2{%_Rq*@6pV?MYM#vSU8(eK3xv#{rIh&pWac@?7m1rt>s5Z7e zTIa&n^4hh~jbw17V2-u($BeXyto11|9s-}6j)xWE<=DwQLW5@bnDbIoeNPA0x3S$H z`o5%B6%u~=novjwJoPpDy*e|gK{)Pw-ATz-=aSIIxYLd1qp~zPEOE|j(ew`wU0K*k zB#WGkZN+Vh#L9*n*iUwSE>lW1F-mmSh=Fu=lUnlRLPI}6-22z1+xQAQ%_=sDOmh*A zmEdEslA%g1JsHne4+_|sMtw?f_*t~QYBy|zjj-g7_4K!fv=o;~jza>z^}yV`9QLoC z&T%gngjFM*y@$#QB+-YH)hhjlrkqc88zmfB-j4{v*VRye~^qY#&Pto9*_G?UQXmzjaV*i zj|SJZ$h8Zn%dQl0lU{47&lrV@vgfGDuhO#YH0irrq2v8xGM6)YtqwJ!5`xE;&IT)$ z)ot1-UAB3O21gb2(46BxXV7xx_D{^qx3IXny9~z&6b+zbHPa0gExHEfma7qpbmXDf z;=|FLlZ)5}pBgb%IU#Z}+NKtc~o(=`Nzhd0V4Wk*boeZ@^f98ekM42mfx}E;;2TfExxuq2VL;J?w@fi zk$mxi#yZ!Z+}zy5aKdIJj@|3^Of717s$9=|A01MR@RG9Xa~Jb{sv@#vhWnwJ&ZKvQj@>*&HE(<6S+K`^fgyru`_9ILV|P72TI^oT`WvfJsMY9 zKE$3Kx>ylmoPYx1N3D96k*)ocShc!IcD!7Q2Ue-*8l zM_s{EY<$%F&xp^c+`x-^V$7pq2dVe3&t6jFUDbM{Y*t|&M5*a6r@84j@hzM!B&thB z9N_y_+xWLmv{AlvQl}>;t$cMz;wOpraaTI2Qgr?KqnB?QTC+8B(!TRhi69n!~SC2Vj%I;RHX&D5yM^{jbMiEXaDNvZj4&Q>=J zzb_pR_?phO_(!H)TdGTM5uRW`X*vRX`&Y5`*l!Q_hg=fs*|`HE+9oR5E6{X-_LJVg}S+=@6yfUhX0quBGCh~M2!6v3c^@pJ;ea_S)x8jl*P=1z4Qdy!anjdu>p{ z%mieB7@t#L7YcmXnv|ZGHmfwLslCzf;Qgl9Nsw|n`qw|G+r+zrfHE*ma>Lz~miHA{ zDwOWbohwoP&(#?nh=>7#PZ_TIJJh+h$TE3SuApz19Z$c5xA-wy(bt4i&;PIbY=D}t0qlkCwspwJ6 zr8x4n)bmYF`NUr{2W)(!HO0?yC)$LChVFh|#=fScVI9wHRQ8JZ*rMoV3|j{$oSMzM zw96?Yb`E*0=t@cZn*`~pMJKVTqw2Hi*XqFj?>vuc_YE7wcG6o347`#uxy?>vPukN> zEo^sXm0^aIp;hV7=%mzRxd23YCzcf?R*}2ynUU}}oSONn5tbg&mglWf*oCIWmKh_+ z0PX8gTkwE0VAGkf;|4w%;;4Tvg&e| zkOYt*gtkfN(y`?sA!TEe+P;bte$BnwGQ@JFtJM@fW+qH-0Q9X3X=9RPR|S_mitML3 z&E896%I8*1ZqG`yxr!@bSL>Y8-0G4t1W>G}l6%+7;wj3lerxKFLcTAS*4)UGF6)3m z$7--6k)z=Jpk}*N)i~N)o;>ddLoH3ys*%zrANtl9P;|Q0A0U z<~5;?OPezykbMB_Raz-QK4;8HIpUI(5|nzO`x=f4Z>h>^F2?9GoCPFf)}3n7xmC~2 zp65BQM-Q$U%c;RDyRN9#O*ZC6XXxKbtu}>l<=xm|0fZ;5V~4~jw5EDg=+010tr>Yd zIFGk+=-I*a#ZNDWkVdSdAXG~oC|>(q`Y7epTpWw`I&w!D-k^{=ky^3Z!sm7YAo^FA zR<}I4yB!qmO(abvydFy<;Hf+eR&>^$T!U!&3CSb9MJc$a%wdXZOGl}rY%)RX&o!#C zhjK~ebfThDN$haO^Ow9@Tb2iD?N(l4A{H%^j+L(~=F#p{?wOixWS4Vtf2}8%1*#b) za_&Y#4_fqT%1!8S!iT-g_C_7{tABSNmmb?#*yjt@xeNJH*&EFsYm=W|Yt&Tf(WlCu zuc^n2s_NcSc1xk=J|NbnSsWk$1j!=2FI?8HX1i?2cAknqoqZM_lCtLCbL4S&iB?H1 zEO9rI?v+b64mqlg<~(dj`EihO&3em~MY|q;kSSKL9)?0sq|<8`+U%MxkAH;*}7 z-qJB_@B9!7>t}b~Bb@VJY1~5$p8@oxk~9GIV7M$nJ!`_v?@yL-?vBcLYU|A5w7Ynu z@g15*#hZTfwXk@s9}p2Y_N4OQo_2=hwoNHUQj~AKjGr=vE3EIB11kv!7RW6KT7thUZx!<)&57HLNTj0%uDl&F_i^}L)_OHBQco1?48^S z<)>*ywscK9D+0b-3Nm}$Q)D2*xU1-ao4R(D)YWpON=C}`U)L2)fO5n0q0@3|`x|rnIbJ)Wl#}mG_zHbRHP}mTyIXcfL8+a0B>7Q{=I18gQkp9#olN-~qamL-$*y{_bEvgC zp`>kL4AaPQCJOc=y;Z*R7fz8zNyl2=>K^HjKfiWz_P4%G@mUyhc+dIwuG(u&(FRuB zSwRGSDbJhQDM_4^<0)Mff&{<3GjiTgDzOYX}xr zc{zds&hfj@8tZ-@cnaIV)^FlHRv4x6R-qV_pgV=PA1T4;-rc&MdVS{-Vq=!&u)xvX zqr}Q^zS9u#H9bzc>hf8cnVgqnlFiRGlW`#`2^+Crlv1RrE>r6i(!KW~k+T5FJBLbD zW)`3VNv$ku`J9Uw%7OR2O+@izW2yI|GHXKY)GR$A#Cb1{^sWl2U%W``M>VuF)=4p; z*$D@cjPX&slg4s8iq1O8wrZle(`81HK+5MLp)O3>Z(P>Ayz;s#PfHWOJGP8>s8l?W zBFGNo$zW?m6twDM^t)q{IaQTNX36X6R^AfhAC73coy?PMYDUnx+jpP8=}c(ZRHzsSuN~_}Cn+IG za=Ws@k2r3p6pa%jXBerQX(+Q8`^~ZzXHYV5M?CkaXLnKvJ$u%%ioKbucVxorHtMH? zoaYpROk9`7GCKFH9!C|2v*o&GoXIT)EbAs5WE0w*Ea(>sdB-&>F7{>0TQa*#xNbD}n=QZ@ zJmVFmNGBVu$&8$@CRg)SCk2jKjxkyhpE6uFF^Wn&uTorxff}9%&5zEmr2haWK^3>W zo~6mft1`f3xVN4OaU@cv)B9R z#ZvaL2WDqdEoK*QNu%PuS4^7ARGQh& z=0@igks<{l$Y4i6E0(vtE3MItmn@yP1zpVLoDM3a*z*~;WK>3+pzg@`lr`0r*oKq> zpee^Wsmqjw!u{49`kK~B$|}WkrnM@(ZlwWZ%H**1sNGqn11FBvjHe~I*0SYCMWGVf zoCxG#FeBc&jb=E#-1$_EPSd%In3g^}U4cc@ruD&jb(gu5`*a zm3H6`wWO*hlQc~~i>Vl3(fr4F&JJo}A_&`J?HSH1s+;z5=85S4M&w9#jr1^I`T3fNR0s@=@ zag2J>#~#^30uN#R69PfAps>EE$agN0>xy|q1eM%rQ-kVpvYjO7l9@?zydY&NEa2^h=SrV{T71;J5OJ)T9w*P#kC0x^TSHl$>-(=dY|3h}S6& z@4PdBaqm`OwUXf&0rHQ$J!`sBlrJmjaY5?SBDh9I+aM^zfJI%?Co3weo!h!*oE&4X zR%14ysq`m;^=Vs0XjF$Ilw9yD)GcnBS&%WuIW_0vm8v;Msp!*gRBU$EI%EDFpi2XO|q^q<~Ovj=ZdYqeA5r>|2fN->g0uXu9X%9zMV zE3*M{-`2aEMKaweUU84cxGyed&np)zMD%SsAswjCTGMviG3i>tu13#y-i0}wbjE90 zT{R)|DOBa`Un3E>IL}JXnTo$BIii|QDH+I-lp{FMZRV>>g+6JZrmH5 zwS{x3z?SzLrd4#0BPXqPQd63;HI!8s%+497xx3W&ZQK{Q99M6qThHWgAmgTM*2Ghd zBzX#?s>!#xuHnbb-r1_{D>L=L73RgKuVZ^%6RToAx%JI4*tDY@jM7n3mDsKCBu@kk zNn^?FRwPLlAaFNlrDrZ%m1{=ik+@YGhIpw6Oz+Nn)WQwybwXdeu?sMjl}X~5=tJ_k z$Ln2kY7dvGoa1Dq$Ah&Fd-fHbJ{gbJvgB9PmeYY*_rD4J=toF{gXM`N|XJxy=h#^ruecD2hNuO^vMx6P$31ahOr+rxMnAxV_naOwIU@9Uk#o`cGr!l zzQ>PF^QrG1yDI7BaGHwzpX*$sER;X4#vJ(l9fvLeGhhC?InHAP4zOisWV70 z{Np^<4c@j)!xCZ1;8$c<-i{e_Sy;JetH~|IL7$B9+3Q}5Z*r4Hn@Bu&JdP`q7Mx`p z9n|W|qH4vZMrPpltJaV*$a@ONQdPCJwFzp4#OhEZ)ZVkT8(U%q?bmE;Zxun6*rB%AdvB2#v58IXqV4i6PJWbK8MAa>=eQL7>axE)V&yeOdCT zmZ^R|BZ?}Mq+enmc3Kh-a(V4Ke%JV(W8}*zZXr{hZD%y$YY7Rrk8wJ08Q1Z(~L2_|J{f zwz}2DObQWWE|OSV3M1>5-O7QUSs$=~)AN^cqC1e~D|{_Fk(XnQYr%zPEU_soWi>0h zdcGnJeo@&2Lzaq`=KzvJnYpXb`cmn_GR0gLdBd35gIawE=&+Az#$5c%ntQI*$gHwZVS6~dG z$^}$p(uZ{FJ};D$sj%30aVFsjtKDQRo+wPoYky)1bimBZf4D9ggVj#a^Mz)6S+>lR zL9)dqQ5QaP>=1J3;F7}gLdL(uR~*zt=Wl(Pzqj4L+5~Gp?2z>Uz*$A;1D^H`NZ{F(ff&j%mJQ z^Q?na!GzHuocQNdDgG{ocX9X!84#{Yq+3(mN?P%KIMPrrz!a;gm4_!8ljCFuW`k6H z|8=4xHLuEflWx0roxIU2N|BlV5o zX1>Ahk|y<-=oK{`chr0H;3?|Jx_U$3%V}&fUFOk z1VDWoFxT=E_*t9ua=uFE7s0|=>^oA1XJa1qKMIY_ZbF1+VQw0o59bS?5Akm%YHMAj z7vI7Vj*apz5!i2nmtRS(N-aVwI~tmXfnR$K*Z7ByErhG<_F|lbe{A(pto3 z1!YyP-t-06CMQ$|n}?l(lv`-7Y$RIU{x+w204aC3Qn~#m^71;6peO>=fO`dx0D!y& zS7{>AOAFK~8LVyLY!{!Xzj||W#`fZ%-1DgQ5Y$Ci>hmV9zdR4!?e}@4IlY) zTu`@UeM(>{+|uYElpp#89=sQ-_2?+a=)#;xkgV7*Y4ILkuJAT{ic8JB-|%;38+jT} z+3t4u52{Xu@*VLdHEbB%_;4^LN2iUcDEK^nE=%L(#MbZUDXHb&TWO)ZDX?&$@{!NT zT>Gz1zMIyZMdrC2R%RopeM0uui->^FaX;#_g^0l&&_kP96i8f)|xR2Fl)cMuZ zQy9&}AM)>#N}vLG;EPb2jx~Q!-u2`7P5>*$f1nq75MMYbFfhi{C`00G;Z`SN&&1OS#jxF*0WZa&!IfDswV&CrA{n zW>dgd_PsJXe9YB^5mgxGX~mkQjx{lQylqCVUW&dN@FD8J&E~S3@}Y@oCx-o$+V=yT zv&>T;J*`m`6!!Y8P)8QT0?q0aX%nOC#>sWIfPlvGB%0y{j zkbjz#vKOzt_$|~Y<~jhaw3UKMjl*ERa7XW4&WoM%1WVq~w_N1Ooxe`>pBEkGX#R#Ip$5IM;0td&yDX++CT1y zl+v{v<0%F&yaTcq%W`k>9x}MLn%z=DTwvrg>?F$1XtxQNt zXcxv|S9ax~u6O>k@}YHv94yOzcH1NZqz`|C2yPCSF85cYLd#ulHZ(>~a+H}3)xW(q z!Dtm55$yeCQlMbb#Xe<+f;V5VPh<_UPe%~{M5SJ3J0uS_ut@B420Ob9N>wdX*Ton~ zXKn>?9x+2&jbyFZH_xm_tb3K=`D$OIln$W2sctM4tU@OZMzo9xUwAk2IO8)GhM zeI@IjKWag?ec~Z`JpAn&$X?8Zi;aymX6jJPFZO)>%!b@uJQXy_GuHTUzGl5GoSCEi z`{pW%okh9QUcpWguqDa{o&3j|IB28f8nZds9OP=GU|ZC9-~+>-e>^X`^6NtO&7Foz z{S^4X!omdCjnUvF2ylWc_%+iRM#lGJutiX8_hO%TqUC#rQ3+$|1?YGHJge|~g`+T2 zF)Ujio@XUn0(|bSY*8u&TZ@y!^Jh4_1EH+is;cxDFPq@GSgw?XRa8@shQGzD5buV5 z_G9e(U@gA~TSwoY7AVqix{P*Drxc7Ly>sn{#!X9-|C3tG5pB%ZYB&~xn=@O)_E;Ej zoBjFWo7D$2SDdnRcXz2m1)K$I-yPvE&f;vTim-g{?p%;x%JGJb#-v^1Gt4l|N4>KT zV2(LRQ)E5vPCH;{I>~MrfA{8SQ1-?EYi~e>(>>Rs0Xo&b=Nj<1h&;{ca%xE3+Ce+;k@!*@fBx`?gCxF%wCU;c8MN-|3M&_sB z%&Lh<{f)060hV%E<0>edEm(9saWeixo>`N(L|BZo*_qQfXS~~^ZixY&DGZFUU77Md ze2lV@=%BAKLA(lL4|ftg1w>Ht$F>@~`{@sTFiZJNbV&ndQ9*fTk?~dfDiwR%<rz*X zTZFTEWDN8w(v(war*SLcpBK-jlMK+zudDHM2rlgM7@bzRm34a*mu{=g?X?fL2)~MI zweHvifLRSfC9FAi2h)UJ%g=Icurw|;g9c9hBvG_6Czf^C_nn)t{|Z@vOJrxrzJ#k# zr)NrHf2Qp9%hxmuS0)gr!or#Qhq7Uz^oTQOlc+*_?+Nt2ez|gM;@7CuDU& zAFr(42r;{_))Q`!DkRV(-x8f?2HEje2}^jesTjPKZC@W#9@rktXq4YG{aex6x{uQc%FAdo^#VoZt34+2J< zGfCAucDH{l$to8>*j`3(#HVA)$9a^@7mpiN;4#FB3#|A4nMBSZ0L=U&N+9;zn(rrC z!>vl@1gblqUjqh;Na*1+MI(*OD)8=nz|Cxl>{sRP(n25OrK22on6aEAh|`UcM*+X* zBnzdp`;2T56FiSWx{8SD`R`0P1#Fah%A;PxXrRA#{XeP!#jo;Xl1P5p{S}JqlaEbbhv4kjqWY09 zV>2uRlU!P9I*xxxFmaej&xUy+>>FsD-^9r=EMncPkDgAsPtZACmzlxCEIOr%?f*xS zALPql$FuvlG8HtdM)|>!JQUTxaJLi~pmz-B$Aj&LPI*sFwg?y+y9v{u$IVh$rJ5cz&Rg znodBU=$53dMX{)lzk4G>ol*xAbHeHgU+qENtoX76 zgtc7zg99DM30Zx5-&1vm)`&-X{>#>? z2=1qtuH^ZO3v2T12WIBCpeL#`OG~yukshd|a4tFozNhuP=ETowUV&iO7!m8iEWrE5 zoeLaQB$9_)pH6EydAfiS-#2SeWiWWAVd7dr;vBw?*5!jf{R0yW&l5b^1EGa1bw_zk zTwzpPH4i5*GdSr7gH@nlRUr-14m!JA-n93z>gKNMtX;(GdeQmG%7V!VJc&lJ+X>3y z@RMd2sasTql2xP`0n(X)#R@8uP2NJj$0?)i?f8ooZv1493kHCevQHep7R#jdM3_BR z8CYy_R@7=+HIa%*v!?sd-7_o6VH@y=Vx){)f=(8WJj=*dYg7*XPc;_?+P0dWPX)c= zNXd*M3HQfMO1-%1<+vW7vlY$B7Pw0c`V79pix=M&ZL;39chfsjFB)&`mTBWXdldDA zWWp&*;H2L>L zm56QzF!#1vLotFTy`vXCB7M{R%bv7yU;t%mo=(x?gJ)mt4?y~eW0&Kp^UuGRyjJO% z`V*}8tJFT^b=lA>0`?l5?v~naSX;dMC@@BXp;Dk~F6=m@iVdB> zt&H7kpN-7Z|NceO`FjF@F`I{!=*rSXERJMBlS$blU_65%j zYd@#dfv4ZrwI_-Odw?;hx7uX8-s!)cG(#;H3DV%AKM0 zK#dIi4o43sM1|@s?Zb?|w(}bB`C6pis0w5t8e`ywxRF--m&elX%;dK5jZCiuCxsJ@ zk)03!IMwoGI%)d%gomCiL=N;h%Z2mhz2V`uy+K5*PfrsWKWeLJ8GR_kF}Lta?F*0w zI&QB?|1NNh=Diq!@ivo`u=dq1V0PlXVEPh)WS z4y>@eAR4>5`0N+DFuIwc^tbgDe~R1p&zW~iz_MlNQ=!;Le z<}M!%J-fi0wJPEsKuSp}4ijEWZ0dl%N2&xX3lANHtEES^tnwCiKoJ&5cwHThoq!sA zmO!JM`bv1CW+_OGqGlPj5h+8xzdY%!g+PKh>qsxX4c{}#KdR<|6-rWgpf)Pz?gpQ# zp;&kF6!3vwl1}jikVZa6{o*^U+vwz`6P&}V9aFG)&gf3YfPGVCvFDgFP1~v+oi|Qc z$ND^T6r=9r3DFV$r!U0f>crDxS)x*FBLE|$8BGvGs4wFJ4T5@%&FC~L^mffvPU`wx zFshk7FkecF>>EGUTzXB#sR+Oky;=a{eHm5nDH^I~UR!oAK04icM>gGz z{4rZ5l>es5OE)#OhlyuaQAum-8}j1+((Y);w!QxJ#rS-8^-N52^eEJ?T;3QT8TOB% z$WL%KhSua}$_C=n3I(e5WVQMSP+ zMVug}E@M%hj59eXq(M|hMzr?k5L?r+8d=LEx8r?Hh?7aRxI>l)vephy$|w0c`Pq~; zpI4?1CU`E%niG-)4J=6E0t`QnzI%qRC(K#x@Xmh|zqIu0 zL!7;!_y2Ls%8kVPipYiaSExEOL3gVa*(OuW-#H63L%E)&tv)iN<8@dF4JhxF@3W`X zh7XJc;l3Bu_{bSK&_S8q4m*kQnIy$(&C(_6y?ae-8{{uC!L9V{u29Y4__4)qM00AE zX@g_$tJ6|ri2!@?_03Qh$bz*%3!O`T9I21b=!s|>2BDP9qG<#m+U;6fSzH5o#>*xP zVp)|Ox;U?K`l#MQu|qmw{##&wDJRni6ZAuPQv~?@g1B z!&EN2z>afvbeyj-pE_94<>xedX4pie1T^Bgs$U%SQ56K5%M2b9AdsYZ${`0{R|G!y zyQxO>A!F_|YKFs4OjdvVOw=f`}UAEDqQZx1kvGY|*b~`S) z6PTHIR6Ofc2l1;{)Ab0q{z=c~lqRmWf^bb0ij_>(@=diE)}+@6j%&8#lpOxT=y-QY z`I(sj9!@P4FBrEzgoLtAI|zz4NgQ%EkK9%=7~piS&8qZ1VR1roC?ZJ*K7d}nJ?e4P ziF$ma32Xl?@QD4!V5WWkesP4CY=)=0>uS*uVC9QdpSzcZ1_Y2-W?*!X z(fsp!0u`bdHuy2}&)3(JJ9;sjBBp8oduY; zR;3^jKC(e0GoL-p{*tXoFPe56$l4X&^6nIDCSTmN1|{zm8A9~z!L69Mf+`ryt-3^d zZwj22kiW;0W=nRWMoRFyg?h!&V+54mw=W}wc1$V!%!$Yp{ zOO`bYbw5Rbik7{g3XN}E{wk1YD4 zeJCqLotJ(w7Bcix+gW^L$9ZlpElBn)9O<*s5FaNIgUrVjtcgZwKdedyFF-cf-u%<+ z3h5|+s5$!w|E*Gzu8_a+gML`^pJ8XPwr2XziDD})udej%j(v4eG52zrhs)|q0VaGd ztqc)DGM?HP=+NTKVbF_}9+?V}-N8_8EpLX-${v9yg8SBYER`$FA$y3^6>0;WQYn&6 z+N}g|nf}Z-QaN+=SAz`|*zw_|WS^oGz8CbFg$XRz6c-!GVT)?t0y&Fk(-F2PT&64skhQgv`^ ztGBY#Velw+nC_9hx7*4W}O#4zWw+PnkIke@;`}e*R?Cm8&lvu^DQ4bt>aGQ|xu~tuCw$ z|1HgwR{4D#S+kUeDmwx6z`w}`5_F%u;1nJNNa&$BOzez(CE}Z*qK%JO!2(DOu-sN5 z4uR*ID9zG~U3CycCF#VhpN%k@-VigS3lZr#$nyfJzz5~8^n@*#-__~*5>@cQ0q9gAX zR>8Hf?Q%~5hi9k>$XDhZr&wRVD8@TLmD4t(diAF3T+pdsJV+ zuiZgBvdzUBo80F~{%w-_drCKamOV zvsMU?8i^o^0|&lIF5FanwQI^OVl|UYT&>IWMP!1&?zY78vk?vdsq`F#S8}6AZg`T3 zCM-cM;1ONGI&w0K*)FabZXE#u2(hC1Ggb3t{>mo!my)K{7eYn?jx(pd<)9scr3bnV z)yAW$>2YRk$heiS)2c1SoFqEp*7au|wG zy!sE?Blz6ECaqpjy~oUtj;4p3M&UqP^*}K~*5!nO$!DSj}QRqyQ)9BS^CeXqhgtugr`pW{#I?xE$Kk*@0g-4lj^iVBl((S;|n zDv&`^;7Hw)@16uORq>d%ax)HF!G?wyl{!r+?>?;IcGUb>A@=Y0@-3YxGl5iQM{Od3 z&p3}=bkJvks5b?z`)E#?_!3UUkBqD{nBJjf&HP!B*kj~VBGV{^hsP>NwZ<$11N;W( zl}P@Z;BvZU2}eg(vJ_**ffdcwqBG`YaGumk4%tchZniZno<`D04p`8me$pr;;da5Wk)eUvYYm&cNBI&i5MHRQw zVDPZoRp1WfkZ3a6Ct4bvnQZX{LfaW3$ADUxEwsaEp64t`QOGkQ=f265JW_9}w$P;C z%SS7|yW{{$R2HH1C-&T+i%eAzZpYXlBJA(K)aky$OTBOkx6^W3EeB)m=XR~(R)W~> zl^~N9c7CM%wdsPuEqFP_{juY+ec@?RqmkgyPnh~@W1bPAvu7Ykjw?%)y`+YuC_Fg% zqH4LQ{l!;Isp-ngfGv2~J9%qKmjxNPw)v?v?fEu~$ZK*7Z?uI_R<;Ud(`}-Jj5tt3 z0>cXMRZb`u@@k&R@^6xL*v5MV;j@2qpGneCvXUBXCR-_<#lR7C+*?JtKd3R={j!MfPL2zSNs2pV z7m2U@zJgc=fF0)AlFi1SG1|WhP^ly8z-XCg`ntm|MnJ(Bu;lZ%H-iBr=gCYzm*F!( zjac>TLWc4MnzOQYPl*$^v$9j@D7(n=xj@wU_M|rQEvZKpXnzSw9+h%@=`~p=vX(%6 z`RHdx+;krdahGtPI?$!{^C)CcnosDH`gPw5UGn*J`j=CxZ<}t&V|h`It=UzvX3RXd zFdvn(a4FTS$9wU)?LEqOSbDNJ=zbPmhQLiePH}jqJ5i7o>C0GHS4Ng)oBcp~?_+VE zXBmDKEe<1V*AD5o)7%!C>Y4eKl_w$c2N#6JEES(&Hd-uygz2}&+8o- zrFy}nl4qXnpfKnai{>WKt8e*w$&P zkg7sahAwwNOw*X20dM~fkFPMza@_QUzD^dz{p}AFePt`>pO=$vK{s4zf02B&3aoyM z1glq={JQvxCIpe0%rcd|cmK?e>b%%oY~vddk4xi6o0R;0TWHLXU)<*#DB{QPt@q+q zW$8`-j9xsgd?2BBV9*E%63|R6mf&xECQ1HOVh(AN_c-iwOY`$s`Nx#V>I|$_EdPP} z^ydu1Vm*c@YW0^?-Kq|7uO$2W!`X)p0(yww#~|Og(ft<)&~a9FPqRp?UDz)Po?Y9* zI;fv+V;J+HW=?LxGtn%AohoJ%NRr!}J6m|$#dR8@E%)~jjR0vtR}D97d=&N!k%fcx ziAovEfxNy+rd{e@4fO~Gi-HeqPXD>%O-u{KhK%XgEDlm?{Au@m_Pmmny@Bc4*y^kI&lFs%0QO|2 z%$9hk&x~;bhU1(K4E7i)(`7cK=#XVt!EF4 zwsGcLS{l%Tj`ole~BD<-%cG@TD?QC`NCOf?YDee(ov02!+R9z4 z{FqSS7&-v>(5)7C2r1fe0-4BQg(!4iUrZsb;8k7Rml#8KTR8>wP@YC#epzRNPu2i>#KXbvw0_#Y$tJ#VaRAs!mXO*HBoritEiPfzW9#-x-jg|4L_y4o1CiZ zGC%ENGdTV!O)s1OkK*fITfKn(+U;zb@_V_oy<=KD z4;hBMes#*!Usvc5D3zKb9Zps`JI3CcH7xo~b!-*ICsqzhj9+%fJ8P zH-3H->{#Y7QItE{^m6(rj4Zv!liu7QlXhTwG!xZsg53G_*loSuI<%$a5pGFd$+nF7 zIX7|7?R3cIq5MxMML*^PQqaNVmb^=-(T2Wpyz(bI)s#G5Z%<2+^B=Cu4C9m10N_f3 z7!7Bz3Vc?-QEl8Xy*4VvI7wun?vbj|`Wcv1*1IqL(Ha6KRR>LNxb7On$__Rr4Y|(W zAcGh5J`j9K0-lGKBao3gZ(K}zHyIq=KmUy(o4Vw<)t>cmifM653pmX|2OZp+syvbE zds_#eYbUvO<2nu#I#m_dBzI)?0ClY z?9R_>acta%y|%y2$=#zPpJ#HuNwXEhJ5^DQe%Jvh^{?3_%Y>5Q5PPqsRzT*FJZJ)E z_beW)KzN;EXOW?}=QOy%E*1A{5_=R|{ViIJRm{`tH{0n@aq6F0Y8J(iZL8lk2Te1E zCe^VSVT^ON$H8p@^`h5f&)M5(@l1akPGsiS)v{$dkS72Q%c05z{^S!$zBvCi_6}uY z1tOOAC_m{rEqj8R#&)h?Lla7}Sa8Tz@)*Kyx8ocLox7JXNwG{9ep;yYN~OkuMVdHI ztQMWJ)EJ&^@14WdVm(B^g28={o`>qCktXKWk3*W3RB1LB%jVxyz3qhDESE}N#IC$> z(OPng&7)D2PjzR_Gk)1zxjbbO)!#<zN{<3t;3{`YulmUj(V3g&Ltk`>m4MH zXdEz8+O{tr$QRou*bVVY{Nn?TG12g5%pqee02!~ndMPO>R#C4cDeony@z=+SnOg07 zshVg>ekgkg)jmwg*4DCmFPb~2PCvg`iORH$P!(1C_I-@R7}tQY5PX|R>${1Didjd$ zx>j@aYh@l6`}1l|UQ}jo;s9?puJOQrpVxhD8~HEtAJcEPv6Z&HzLg5v+4*Rf-Ff?F z+&OAfp*wrVfQ-N2mQbjHeNa&(-_&jgG&bAiXmX`HQJzzk1MkJEB z!kecFQge+^ipXg@>(2V58oP&fnAx;TNxd4>q#N@%5;UN6_C3n?tn7+9(0k`TD2TX8 z-a7hz8H;}b^@vth8_)l>kM5^__fXoc6XmT`&?f(fX=R>#_~)>Y0Y3+JF5W~=X;AU(yYS#MQfguogD5?b%{X#^gs{p6ay z*>L;|ahJ_q^k!=6w_ht3ij{aIuao2cwsCPjHpc*fiIh)|lB9ptsmzN=X z0L;%{)}=lV?A&L^s6S=9EaZisCtRF@cZ}-#3_O07nzud?(Jq6jt6$JMHd24Q>kN}j zQ={UfxqBa>TNsg#!4B_gtJiw{GSGK%eE0lz94iOopWVkN%dJ&6#8tSDChQh;l4*c8 zs+cziUUTtXS&k!5MnX`6Ta2{9E|D!0<@@gDLVKjx&;t>>wUcu58S2rj?WQclqr3l( zGWnA71vdHxUXYKtX>%F6Z;HrPcfFLyO<8{NLTY;-l*Q%0vQidl7H*h?HD`m$&_b_d zgnR*z_isYtUyVJQZ}OXG=iVd|tXM02-;U}c=HZebco#oI-2ELQrk#UzcyW~~L^2YS%H3b12kLx&f<-0??BiW`0YR53M) z{;jtLmEKpCZXombd;^?k9l+Oxi>;-+-Lk5>>4l2{pdGIirZL>uZI_|d7dKSPRyDuq z`Y5FKxXY~^#igE{ZC?u?f6nl>M{7xB+@R%w zS?};&){|el&m&}I=bl6=$^8B}#GI(%R;&IjnbNJBhBxS9Yx%qjLD0UNmlqekbw` zK-Ej$t8;oAI@7U>M^8Vc8{EqDr-<3CHLpDb{n!w816Ib3S4W7^wD0!;HGKRxZUxx7 zuxd}4TQUQjg9nr&qe-`uB#ed~R*lZwwHUMvNv&D24nX#I#b^iadl5G@lE9exb_^^c zWQGD`(L80ZypVY+SzGqiCb-YW()HF^IYMRW;eXoHqdH!er5P$(-dGK-7_H(|cmFk@ zO-^7~b{K^>Wo;@%`>qQNiX%1diNAM${}ME0i!8g{@yiQ^LXL9mpGeLp6TY_z<#;`H zsufy1pdPa^5mcKy5nK8)Wh_b=Jpbwv0XK?r^SzzKLMoR7gryY~+yj8Gf4d8VtyM)2 zTt0L@Oil(E8jI|-yR&foJS}9lrZ+H5PC+^;@Gi)=3~5lM4hUqYa(uaQ+w)^Ho(3zs z?%fMWyTJX|z-aeE@T}N`j#wuiu!@~?_xpl1tQaJ^+37UMTh2E)tcqn26TZnscHC_2*u9v8ejcIKb7)cs|E-_|DS<+>x5=g@qfg#dXazhAulkp&_! zd0Sn{o0W(lk0&N`zm6w1&^`c+c57Vu%KbWz;1lAYE6Zs_t*3VM0tS5q6Rh4WbM}#c zDCj}g4mWJ=xUAjFh*Rq7hKbll+L*HnonIB7|3^_{p9Ez>GR82plUnT2Y_Q_-WBbef z#}-Fw5ozq2U-v0x>KA$;7Zne1wi1*c&FiN6?`u#)Kl1Don<`GqU0(<7_+eQB(B7kw3vc>whQ3o^Yr9WOlNI71n_qbF4cPBH z0>lI8@uHRXyiW51g+x77vXxO>!NkD{^YHB>OUBS*F)O5;kj~8Yu0j1&t&2sU#L_&C z(SOv2%khX)`nyoP%!MSq?3g|*JjVcKLdospIbM4ZpWk6CG+lsw$h3X= zfuua4*rI&MD{S1hs??8(5phj@%#q~6{cl}_K4c8@eri+QaPq^-^Fo6*0p3%lO_QI| zEv`yZwG9>e5!%*{*IcO|igh;>*&*U)TZ5Fe-9bd3vS8~CYs&XTdc+A7D?@CIO4`V8 zPTZ)kYOc?J4rszx@oSrICiXGyDI?ii=-wPY?v4X~kZeEXX)#mBv%KUH2^ir6Xb%;q z*e2@>L?9t7J}*X_FruNo;c>zAh{<}%*aW%QS9J*EbnN0&RZX_j7P-gjRNpIPJUy#C z3`i3C@QABSC_oh}(Bfc4WM%o&SAmh4OpSlc&{X+Vm}ITJK^`C1V-4#ZcDIoOBe

0X!klmfnXjlvp(CfWpol%X@LJhJ35j!)ðCdfU)0GP7A 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 ~#Nw*dsOmO)@q}Qk`WaVx9-3wj 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 Hx#YxE$G2MauA>z;^*tw2PAW*w`wXZ= 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

1o#l5UeY5w9$1q~5}A#%oKd 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 z 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%0Aw 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 z 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

  • uf09CIceb3wC@pV@@WC)xJ#50#s>_9{Mjd<$2Ipahwh-f z@a2mpR#k`zeG7WmZEH&j7uNp(fizn7vefiDID)_k+`eGdkm3?LxatH z`SGj9w^}cTB+;y-k~_Q1E4*uxndzVBUHB?$wk|Q2+x^B>C+y(gQ|1jgd2tQSUB}*L zJh!>6lRgds!Ru9us_J4JF-gbXWKVI10G#KVr8LeIpS|9>8fsU#(v?Wu%X^*2EC>U& zF{Rv3IVP2?Z3{AlvTX+knvZuGXXhTYIaz9G(vena7`PzRJNIV|oK)R%YC_SFnTtu1 zNk3YKVhn#c47sbfV)T}zZp!?CH;zSAoPOx4_3mlP*JMp~L<=F$Baxidpihzf?^a13Ae( zX-HHY{NFc2Sw3ewl`A4Q-OF*Fw9v;a4_deGpk2zclfMDD&oly}A>ZDD@2L=d(r1(P z6!s)8;5g4(!duvw#kTG-PUI&%icQ^eNy+u6cA0jw9<0j~WaE#{nykz~$oE zXqC4I-N@s$M6J68&RBYPp`J}w+*c*vCyr_sVYKc! zTFFYtdjucdf;ZWO8XSvhCSz%a{&y4Amp|y%KS;7 zMz+(*v**}IAaX@=){iRXi7=hr(c)KeJXbqg(>cXr+_6$oTLbustmKuh&vKNS^*qzW zR{|&`%Xy5;^5pPqme5u?HT5L0d0a6W&ot=1dM&LFKNrfRyY(gbk#XjHLKekYgjVQ5 zr^f* z3^K5B^Pbh%r4726RbI|~ub~mQXeF?Z%O z;gTkei8&*sO4IokQnIe>jt_cCq}}!hqF3r;wfyE_>+@vyrp-L^D~H-aUz-BDpCyy( zWjS{0Q*?6#drsUp<4;u{b8i_vN4-SbgLW~KeCWMyzHwd1au+xiTT;|6e#&7ovA0k8 zXPl0D(NU>8bVo!j@%1P0+KDd#P;gH^)#_2BM>HfbAPf;)6T7Q*q1!<|M$Qaab6W!xhuzW z(xuGxYpLV@B9ceGlOP7k!OsS`tH%uj!o&=Ya%<9(X-BS~q0x$-w|x=A-Fb1y>dZb? z;QH1@ab{?avPS38V%H~y6@fPwM6Bao;vESaTBW}G&@qwI={{UTdzjmTac8?NC-6Oox z<33Ue0LFcKS4B6Kx&sm4kw=n6t!Jf<>M?HW_B%Z;Y$RlyFdX~WC*upxJ5~zc zI0Nrzn&yu$wQX*FJX%;c&8s-r2I=u5b?NV3g{8t41Yp~NT;nx0eWX>-FAeWa9j1eB zUs+cfVq4`E>FcLMG4p0p@-X>{HQ-|_RdVJ>)8SXLp(fs~o^RsDhSGUdMgYeESCu@A zBzewwuS*YihgWwzimgVyiY!6g$CLc(BImz)stw-lYH&{Xx+RWb<>X@>#Y1r-nEqzK zJ?Yg@r&r%GzbfV+bXF)bNcz>=Rc9n0muSd7wN(|;oPjuVb9FTa_l!5ETvV~jMlgl4 za7}Yv#Y)>3O}Ndq)TuJY(`W9Uq|)2QTHx$rSo2-9X5~pXXDW7XPkWxH;mB0Ph58R( z_3HKuf%4$wU{{5hK6(4QA6=B*P+Z&og}b?jNw5m2;AgF8fs2gp z&sQ*ul^G;?>a#Kvvjet0>KPFELAQ14GhURV8CB5uI8Dl(+SH^lU5;_hLo4NoExEm` z)r~HBJw++TFO~Hvv`DU7C(Z58=UX;y@&k-9?_G7dXGYT8<8h5SwcP0JBx7;r6T2M+ zdY6Y~d0&p1;Mbp8JeYKu--MHlmAamvXk9VE+DA3rY46*}YNg*eWPipfkLel0MlXF)&%ey$`a`@fPHN|Q=JaSIOQ#m=UX;$TzG`bj8 zqN?hSR_jY;oZuba!m9n7YY;Pm*NXRDRZ`aKeEOjpRb0BVw9#yU?p`sHYn-@@vNWMe zjCblQTs$4+cd5^cikvSa9w#Yr`^>pu04Ke4F)S>bS$7h-uR^PoCYs#&nsoJU<$IfG z{K2;z{*|5fU8J^h-uzU?e)XQmH?qA&E`ue*Osl(<)|sXDcJzGjI_pPR^%-ei5C@y8(dtwRF5TpZ+a zUVT?8P20KeVVr8yGVW|2%^R45)R1cqV9RlWL0)t2Yqpb(c=9uY5lP2#KQj{t89w;y zT6WW&;Dfm5?)q1BsWk^}k@FSjDpgbH&WXSM^n|NuU6^k%Pg{@f&g$1NHjdH_Hcqtj!r?w zaa>g48B0^p=5c90rQ1$rE*Pme!LF9t@!^>ZHcm6odg8=VjHl*$bf+p%Yo*HCt?0O% zF*zfgisu=T?}6Qex8|Ib3jPX-dC344>pmN-kR#W$D98OH6=b!PYZtKnK^E~;} zgk(uIyEI2)f_CRU#bD0l9if>{d)C->7aKE@wI-sUb5aLBSdouzO>8X7uw-S3>si&- zr=c;5lywH2vlWbGRD8$MrMH{+p^>>9FruR7ioWI(smnDOoeh-W&Z>T8>TzAop2vYm z8*n?evf>DO|Vk_z-Lnavp8Ut;p0^(LD-O@%S2W5#poUbP7)AAI?lVdc6; zbc)Igmd4&l0;@En#CLLY$*!t!a+TKShgLFzZ4??-60jdT^cn9~B6lmeob%GVs#A)E z`y4cRoV`e-nHu1uCnSCB_w=Ce5CqR;mEci z5->Y8E7wHGJo->CY3?@N>m*)TQj=@6_pyR~cKQIsHi*;zv@W%g5gLuRPSP z2)bYa!RLzUr7Jsm1x07>GXO^MPFa9uJ&&yt6b@LB9F9$TN?evv*w*P%^JD?e3Bl)# z8a#r;ob&5gN}nQaoNt+3q$}+5@%M3@VyObcA~__E38f`yqP^D^>`fd*#uuyd4~9BKQW)2SJqlbTGHx7TlXgbjE?<9RgK4)oyBs0I<0k+W>&t;p?f+t=tN?}JxHWj z&NnjWit3Eyp>vW^brhny8rF9E?VRwv#ZsF&Ar3(6Nz_#)(mPc-Mw(s7g1Wo08D5}z z)DMq0l|4T?>!Aj%aB_lzOlq^EoK=w9l{*V_3B=xUG(e5QutIr1@*PDrxNiOHT zhFr1Jc6xoSz*|Lfa>Q3%q+FSx!nnx$)$Y0Z=oc9VrUETBPT+I3`%I%e6n~n(>?_ChD7-(ZWJLKoJ$J*&^Brv(-83gik zS7fw}ScxMU9r4<+t5R~Qba&E>RXZ}2;v^vL<2>MUE0(^u-2=2^aq0)HYZo|GO^ULL z_)bdT0IRt2Mln*`KxVmBIp?Rndam)lz0VSJr%@=U)ajQ(GQ!2!6%~y>gDg(YxGSGd zwar5ol&$sj=p$b@d$?l5EP)rC@ zz`^IOU1SnlESrYlKRSs;sVOk0CvIEsvEe$8i{QBul_eDRuRGMdK^E3^ZQ zl?IjdXU?YywASYVsp~I1y9Z9cTIKF8w>V-;VMxIG*R#tA$C_P0=h+U)__m zu|D;aa6w?>^zB@da)nhSX5ytAb|6NTm9X6BoYs|$hwUMEo!*t`IYOi_ZBCjpjs4@Z zv`^fVl1V&@>om|#@ZA)CwdGAX#!c=krz@Qt6SBro*2EX?hXMX!$Re@A!98Wv;jMJ_ zI*U&eUd1007AU`WJ!`tq{6Qp=t2~D-&I##WgQH3ia_%QmqiOU#Ceu}EV+>n(`uf*X zXK*Bm3FjQwfl{O+29D;rw>l-%RKz3R0~7gIhI~%d<4C25xR4G&>6-JfQIf_+`@Me> zu`-Inx7hg4#8-E z5C|FmwSH(u-h#YZQf}8iqOJK=#Isyn5YNqQ$ivAhTOf`rqO^J1?s?ITqs()6q!^zB zl6qI0>lzWg4%?ZTv(7mgtp5OoQ&e)*e%d^&@%?i|p2mJbE*l|=*Eq7W%kyA+n(UH| zS~{OGE6~I^5lJG*;qo}-k6OPIM&srSu|mB>m2UT`-nBlg@M2xvSe{kP=5d&#iGmI8?FHt;rkpIs4dz zCv<%lsX=(I(nd~5<%gzg(r~F+6V2?Oy0m3U;}R<~9x!^>DRxA2Hp7e_1$I$s#iVaj z_u1wc6Q9y2Iv8 zt&a7g3>WtwUzHH{aO=)j6l#(zT)p58CSI+vxNSc(4K6O8I4wc`RsV&*hi}+LS zV6D4M&4v9da?8WhOO}y#jt@??>(@%1JDk+1&aJt&He17s9$2YmJu)hU)*>Rs2hCn) z9}?;-HM!aB{hs?3hL>|C%P5VB&py>MXfqwmz~pd26;iED#lalj&ZSw{yJ@EwTWqj{ zliYjPSe6jTjKy}IxB{@Rt)&)qLGnwHBRc0!!7aCO^&a(~2APSBj0<79de*+xMw^S= ztWPx4MZt|&s<9ekeZcih32;41Fi0V4$Ws)j~s&@LnZ z<$144jU@EwbI+4YJxvduS&Fn{9AH+DkR*#Ga>_bWs+y-BUZvEREw9vX+16MA1A;o$ zDeZ>R2PeI4B$7+0Y_`9suZvywKN`6Xt+ zEx`4naE2R5o*hWK)f}FwYTbfqZa!Dv85>HC&;Iu`zP|Ne4Nv-EQ#UlzTTC;Z6 z-C`L${c77th^4mx0rjZnNuAJ(QPj`4)}V+V-U8kEtb30U+lJxu{cEBadXrZntn*JBX*zzRq)d}rDRR6rAjlZ6&d-T{ z4~`kGRvT=gZdG{aITh2C!gQ*0H@S{wUf65JYux##Thh#O$sWQ0UP

    kia{_aLPnqqF)M||XFi{C^hnrVoe#lacQMM}ta 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

    )0Z-?81=K^?h|Zq^@4^i3xI-Za=i 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


    x6x2^+3GP$8yB{C;z@WUGj1XAlSBL6Y4I`)l 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�qi_Ig~>63Wu*Q;}=9N2C8ro|MhVJ!*gv zoroL5FRPpog6ILDC<-f(^!{n(OTyVA{9j!p<(Ew0{ZJQFZz&E=&{=Gn-H%10V-Sjv z0Id=o!=O?7zUJ0ONXR?0r+HTuvo}tiw0IQKY7~bWkBj<hih!LNpYE5_a%S!J#howd1;t^Ki zhNY$ViuU>vy~|3agHt=uooCj~iQBdrCf%2N+}_cFte)SUDEFN2*KB+*`QQR_O<8~$ z0KkS;Wd%nG8&0_oEU$Z({xsjq7tqig6X@@ONr5Pkl}rwWsem*b09U`lA~? z%OhT?bI94Q+3=~%SK^JvEcB4V)`@ZFb(BwHdEwSCJoDMaoHCU_hU)LET0x{Z2l-LK z*|jqiwh}_xlcILrIAn@_{I?Mx{08!T22$>MuGXBQAC7ciPZ6)PWifDMgMT(2GTvOw zAJu@F-5tr^<^SpWl;b817usD6fRyU^D|^-lGxYE%w$p2!RSdq}b2((wV^%znV~>U| zA<^Ke;%fMc#9dX()HsVF*t&zLnI^w$ZF;~RIQMC^{$sV?rG7l%m&|A?c3^^Ep5Ln# zjv3x~$`|Hj#v1-G=$_38m3C6T%+y`Qlxn6qPW$C%?UqI*5$;_xF9|ez8HpDNZ3ZE%EfJ|!U!#$U^l?@=TRyiIGOZJ^ z+i*)aAhf+XR5Pa=WFm8bn~aUjp81)2U+1<*{eisw#D_m3IhvByNnKlE2ZJiswy{R5 zr0fQMHuixwBmQi1n1z--(}*ce8Jm&8-bU4&5*r+>mC4UJn;Jfx0C`!Jmc0ws@^b~E z0U?$n5n9Qx`RW#vdM`=RM9Ze$bZHnoG|j@_4<7S9xvsi8DEc+DiFRxMpIZh+Eg>h>(tOHAcEbPl%_;<#2M z!{X>HrcnIpRBcn%Q|OI!*AWAybZFv0v9~C61oW*bde=aluNT(cvMyIhZS}WZGZ`kO zW>Z@-{$v@;T2$@NU)FrV)!^B`Xu_X&B{U5Fo({_hzzZxm?2W#VG%w(*j(OS=mfWWq zj%OoMZ-z^V9Fwy{;F<5Xd_bn4b-z`-%DYA~D`rMfjv7mCP~N?eaBv$e<=~3iddo8# zYv%kNq=<$^F~)AUMCy(o;3yPHl>G!sHopRt3ndNg^#k!cKbI>;nQvp%wbM;M@Lwmnekk! zp~R`Oylef+6!jf{?#AcjDiIR@^}~(H^eOZ*)yXTWIa1IdY;~kdo|~p)F`V0ii(`o2 zu00SJZ_-virY@z+8cT)r37A^GFcNadFrSwB|4}nK)r_q2g_<<3U~coEB1y{r_qt5P zvsJx{LY?J5)YiY|g+?{oMzo(fh^vVpkR_l2{ryT+%WNO^sc9?>^!@9VcUu3kzZs?t zRp^4V5ojZ)JwNJDGWXMjYbVF01*xPFePHB24r*Z$7uQ6u6?CGi$U~S}c5zSZeCA7+ z6<Os0GO^HLrsl}X%iH*Nm(2^l2WK< znLJ1O7P&(~#%y3X(~AP<@vLsI9*=VP&MOCvFzxRHgU~4o8-7I9&e?^>Rf?QeUIZL% zIy9fMFKows%t+&(46f8f<>7dN8SbP06A#@5EpE0$qeAiKb%OqHKJGW7C~dG>Vbi66 z;A3g_Ni4+?p-9P7(1;p8>=lOk6DmFt(ko|=;R_l4vz6WD`Y)hV#E;{@ysF41q}P~D zgm)Q-n^c~PhbgghK+A#xjx=IZ8BY+$Ny&Zp->XlTHi!?>UTzyPddSD@o=1*WO()7JGVwl#$oYM9!8#0_cot3p@UWwgg4a}NQo}H zq00vD-v9Vf1_>3|(%B?uIX_KXQ6_o~a8VfX;G{3J} z@-pWOPf9MGDpT`kMsy@m|9!&a1;GrGYk+aVyOWRV78$ahU4cCc*QpE2aj;jWXgMaV zY3qGW<8?$^k1|);{Rl$6qyc z*J;GSP0J+gP>{|Sgwf8xhGD?Ri{U<=($)7@X&=Ugc4FgaF#_Q&@Bpl|;59d$lc|Y3 zElDI}>a{@tx(OsQoD_7%(SJevH+$5_y@sJbd8vOiTW1b(C zm9$O|1X;qU>Lr3k^u|dagb$Tr8rus|L5Kb%R3wo%gQva6pumDyxJVkyT(DCB4oj_~ z8aYhB0qQU19u06kvb67rO}51)%v5YW=PUokz5|U{`2jOYohiz_*l2S}>;+Vo^+-aO zZV4vaMQQ8a9A^U=UU?&AZ4tsy*+@bG%GN2(J5SvnG&c}fTOYoie(f4~6WrWjC+r!m zl=~*w(OQ@nM5(Ws$XEymB)!FCKKrr9RKfR=X+W~%ElW(WlceuO1yp8azchbcHJ9S{ z`g}T!SsVlmgyZV0OInpR-CL<_|EA^k7%5^kvL@x9^d9D6wU4ce|CT+S0b_wneN*eN z)E1N5dmxW*%Zc>&0q%dPiTBlZ8rsk|25)E#4)Eu;6UdYGA^v238xSQ$YAccnhVtxs zzBkA^as~LB*4-Wzv3VC|2LEd9x@8OImIOvl!KBUxE|^gn>3~mDVDt2sVK`%in=YXq z?>G}{Okc&qBj0HmLXw!v)}NUw(CAxDy>|@=y!ixWvW{{%2jvm~Y|~jVm7LiqICR2m zpQXj}egbOe<@u&g+6h!93z)WUi!Sayr4}>BiX)@YvTBsdXRscWu^idnP#8N^83~|$a!|{=`9hVv{**_-4>9I{jpN~ zmsRpPs^MMko599A=&nNt34gxw8o9n5$Y|vdj%XEPZj!o`A+9$larTO*+k!PfzkVFJUoEHNyR)8fN2%pRhQZj}=vF+W(wz8^7GMu8LU z;P;>U^R({|2a<&Ex`okdxu#x&H>IOQlh1phDj0cz7)WK+wC)q(FlrV4LxKd1a5t3c zV9Ic#0!nvTVQw)dLTO1)AeHD1*mSh!3*D7TDefFrS8-x7J{XOb=6`;ohJ%{WD>;}P zFy5~Vb@N27o8^ks`cd~aH7EGX*{sN}g!0x)w;Miw3SX-$Kzz_>&>f6WpBda-wEoeQeZ zz;YaG95Q&rFrNl~Eyz0AH3=T|`x*DPnh}(WEYaW6luF;6yr-t<=Cz@`2kBtyM-`1w zaR&^}>>1T5sC*cB(xf@+A*wnMnyH?sBGp9xyF+};LCtN<3;IrJ>1CK6Ei0Zjl%@8o z-c}eqKq8|Tts`6?y@Z;zzDO8K=SZOvB-Gz-R|>uDiT@n-T?^vjH~tyGKnJ^384+5h z?H_8mH1E90pGkhsQg|e=4P^ITW4x;Zz$H8wU<#EF1CgJ=aO)%g4a?+xgyQ3$vzbNC zD+U#bY7L|rshnzA>iqmPf1}j)XW)NSs8#PHu;hpVdlj%)zbY% zU)+2VXufMh3tv@l*)OMm5UxLwG^ga!{xf-=*CxzmSy;go`zuWLS%qv^RTMXTOF*F^ zA5uAf$rs|MD9ex>Y&xgsa_}MlOvulE_5gX;FWM$HjYHOIgL8$!pduT~P%-!j7Vbyf z8(77hXhC?eChzJQN3?Dk_YXKv9N61-_yC;gO|xu=vSiY-acdU$&fYOR4|WoqxU=Lt zqMlANX8BVUJ%iF_k{P46KH9D5k{AizwgzDwotk*c@m%408*#Oz2~+nh#mG8`#E1Zu<7#_>px$`v#QVOUEaJN6?`*Z&cUt zcO1O4nG1$&ay)g?p0Pv_dk>wRYjYORFfA$k{f>b;FN@C<omtj63_N{N=Tds{J?2eSnrsTE6pI)Q{vn#PyQdB^#J3bp&vTi$*rCA2QODHb$dCs**6D2Q4kv7tv%kO5mj2k+n=+ph8MK!# zt+ho@X~HF%!r>-(!uGQwmy!;(a3&eB<$8c*U3&4}kkmImBc*`EcHz&;eU86zAwuu+ zxi_0y)~^TVD~1y`N2~!M00^FKRMRcGV$Xrj>r(||i>K>)k_w#C&=lW-{EJDWq)BS- z-*X#zl&h{b^y+xj($3hoA}7GIn8mSdz58|NVP1^y-|DADLvbM<=gL8cD!J$Mzj3I% zVTL!6$UC!OC#(a!#8t%oIm$;<1DqqPEaQ$s5uc*%eqIuS$*B`vAfJsy42uPR=8{YDN(`n-~V&c|V z^Rp22szGYBSP?Vx?Lw+jY|}WMt<-T>QmU`irci8=^X>UH^G;(HWu??{pOssc{{GYU z_nM*bqsoOx%yafm9+d@9IaOH$npTonZu7!jZLC1=!I9EJhkEpCzRV>}%=O`%ALJ{{ zsoklY2y){6VnP0tFmXwa+m-+VwwY+Cyvb?^200j2q zMiVhl9liTiYQ1i~{Q1pfx;oANN!M460WuPt^?P*H<2WIU5W6ta;D)y3u|OSdQ0{cN zS_5`Q9+vg8GFbs>&L;KV*EkuRC|h^DCYq}#D14b4Egt&7fSXw_=CsZ-JgIdw=eHMb zV;y%S_V!VKOC0TzcyyOxu-*pUrcF$R^)ZpV0dl9pB-jJq2Ng78!C zBHz_kh^|8C0|hqhqlXjqU8awfx{Y&l@ukhU?Ux?o2qiM1ozEfF*0p}`qG>JQy|hBkXJ_f(rB^B?(^ycnAm z+SRTbbm9Q|aHsat+ILX^|5iBCEsY^joJ-n{z6(}srD^CIhs+r0UVrLzH%``2dr;jxI{unt! zJRfWDg@Rc06-=$)Sh9_-?=yH+I%!xXK|=hcCZ>g}$Eb#~-y&C;nN@vHl5V)8r$x<0 zppD1)yK-Tuoa}J~krLMQTppP7&zgid*3xqE*7+Y@O+QYowNe{e(t`~5Yn!oPa}4d) zzGlyp`kK~13U}FV;4@q{dIZmfrk24if1GpnDsR}RV`vMk{yi+FkatDHH)Ovc(P66h z2@Nanmzt&>Dvf8Z`cK@%5|q~m?!=?_Lb}5M+jx%6pqt5|yj7coCSuCP^naA;Um`IeO6+?`mS`?(xY0^XULvzO=poNQ?Rc`D>bljX_@uuMI*PO z{7l!!PJA1#t9rS7+8p9|M)@BdxKoh2-0%?WQO|P_G!;n{RJX`=c&M{!i4oe;#?qJR zNvCO$UflG2Vpaa+yJt1>nH18wq+KMtTxQ_lP2z@9bP28TV4D0tx@^q`012@hvg9k# zy61c5KqdI@_2;PsV^Dgo3%f}+owR{;6j7PS+8QI+dIQ526hN4lUf8)zM?=N%|9;Fz z%Ij$MXmWDUin3Fk<~xttYq;AYy_`Q%TM>GR>m#lkb>ZH?pM41FoIey6aMYT(X&jnb zO@fOfiCS8V<_o*x(gwP=<5IUS}wmY+P~fe>pybA}u5`499$^ntk! z#eurnKJ}>jo{o^XA(ZPMhxI{s#Kx7L&zG}qXR%{~oMWEa2m3cJ}pIQA;wf#(BV|c^M{awkyj%;#hf=}&6+g2afmGtMlM;vM+FBQT2N-3BNk6Y(a z3H|SJavF!v9zCl{v2Z(-N)-BajQ?C9enXqWhOidMcP+akl6-IUZl#_gG@lRUa{yZd z;2@(9Iu5kJKWa*TX<8V*_;pt$W_wdWr(0O`29ug5UWk~R5 z*?wy_8v0X(=YJtML6*jONF&wq2T%d7a2{Yw5nO*_Oz*UQ@{6%hTIJu7}|4Mom=!&bgG zFGm^zNVBg<;rzsC?4Zc|MZwdmA;RC2)s?@#xi8GS8UQ1{lKqVkGAlTFuEur!1R2Vo zy+jixxwf%zzl?0z0mVE0$+f6KcuCxkYe{R+8rHifbB%|@jrY`8)_?DN%i=4+z}#$! zOltLBVim1`dC3|mlSbG=?|5Z_zN7`lFt4?LB(p_Y8eO_X&4Wxg2T>f7J98zNmjyLZ z_L!oNDBxB+Iy{Dvdyb1!M?dTjJt8Ma@i{$4u&!fmOWV`K@T~eEVe-K=P-b%{}^?=|Htot@FrxdxS_sLIiYbz?3go~g)Xv0cz&D89TN)YDj zmdfmETKbo)XphC*&ImHbO4VZU)eik-!a4DSK2$<PkItL}-=0k-;b^wy-=ptgK za>Lx|J8tF2KNwiQQ)-h!InJ|G2#(Km++TfRE6)yj&_hQ5W<+{ct+!I^l75FPXU~29 zx;!BT5Le?zP(3sC(=*kMii}}CBlE&h_A~51gctXi<5w?7PML;@TrtL3t=4&Y4KH?t zftp2yjQl=5a2thYTym{_Zw5#yuiA9_ZQIn4bS$bz z@EP0P(Nql#ee!NHB)Lx@W_u%r{9lTF6)1ZXEI|Y01=PuW26Zz$? zr1;)HqG_wzo42|?kqJcv9m;XruNMX1BHJ^M$*`gS02Mp95Fw&r$2c0nUP_6Jvw_=LJ*;G_0&H^03wyZ_~UDe*&NisDPw z5p~OdQ#>@)CRgNi?`gO`4Dsate>-Gc$1NVMm@OV!yttF-s&-Ub_rA!?Ay!dJ?ZvI1 zYiSXz&9~C2joW(XicbWgo9ug%>?a!$Se}E*{+szDZ(>rp%*?s&ec&s*r}S|hfredC zs%vIy7;r>wTEAY(qtwmV7Sbui^;$01L=WgD7YP_!Zhl?7>?Wq#D=n4RGPx&%TVWhd z;#rP~k%Am}pQnjR823@|{UL4_|G5=KyiD2mte?aoWGS-JPjN#%yE1QaOfF$Dz+24z|mn(#r%~rROw{v>X-m3Q(LJrNS(!Tp-R^|~j) zjX`4}%F_|Fu6Lm}<;?h%A;)qW_I34EbWyIOYlDM8!Xj`U&B1`QL6;Z)cZdX|3$d!? zn7bmMRzT+KZfZQyFyGd8Q6_ODOp;748mQ+@GVI8VAc~M)o|+xv6rBQ34T2A>1Y04o z5(7|aO1F{8t-b~|jq(g5;IiRq$q$Sn?1D_nJ}H}o8B-H(_<7quyN0*g^X`YrFE`&= zQ%20lIZ&ZowBWb>k6v(Df|-|U3{q<4_7Hp7dk3vid+Of9z2audQwc^j<*5k})q$nb z=TIj6!H{kF8bJ?>5x|2m1Q0f|LKS z)Lyae8*B+7)dkpMmU^pf(ZPthZk5>rZR>)?b3UUK&s6^B7!C$%n_kFy6#nDY7rsBI zc0tYtbv(*IiJdry485weHosu!oA{^2zh57+_5Q*|a#~}?mz;18vt-;L1H)?KhQ^Fk z=}Owd^ccl zMyNO=4}~_-i*Al*Q4juJA(XBX?o|aEmY7AIygYhN@ACFvMu!s=LJ`8yXGer&nAGI+ zfX3F}O?m%txB3qo_^0c1IFim%@T1{{l+gqwx-#W@zDy;7Vn5t5_)~Rl@QWre_ zF%o!^T(>Wntb{eS?P+x-mT`SO-nM3g)#P@HYl1l<4hQz9dU=4dbwpizVPWLzPo~Y8 zO8Z!1*`7Kx;+GJ0*PZBw@P!&LnKtglE9S-p(b89IsMsOQq0)m#t$$11M`cnTdfx>) z#7Db3@)RGOUXDBna_-?R$gs(36U?C===r!K^$qu?l?&gDF5aSVjbR6CiREo9EosOA zn>u{BagK4Azj~308L+C^GO7kanPfu^f48%G<})20nR_iCcG+wQj4c@s)Rt~t2#{ce zGAfT6DzB!~3oMVq4n&DTuNqL#b0qBgHI*&UNvL zLVCq=DvIzWf#X2NaW-g%UQqz@qJp{BWXD`?A7*}KP{zf4bK}&8O(FjV4 zE-r`SQ!}p=)h|-5&(QE$t9(K8{XICXsV(Ie4@@ur=7T?#)fM66(jp2Nnn1~8Fv2s>`SFZf(DQgu!o4gaply7aYWvjt{2ygYHYjbBgLaw#9A3SXsD#!*; zP<6=h>9|KBDT0@Onn91*I@(WFrKKM9ml{7TZAO<~ffm;legWw2-Fr>S-r5zjGkBz` zNlZXcPcRc3G1}LG^6N_WqUrl)%?-4Xr`SOshrro3;*f-Jp6G1`p)1Xn74q8Ox>{vZ z0{q@(RI99l%S~9z%-krytUM&Ovw3cM4#tTY(KoQqh5M^HA8&dW5_Q`{&cI-1HXJw{8* zF6)93CK_IYAX!@!J~jS7x)u>#bzu^DWM+}Ymu-jOA*?)G_?gA#4wY&%8xnjLFZERf z6H-Dsg9ct|-$s;ooAq^+2b+H82yDlYOLn5Hvjp$Z(OoRSsg)3rkI49-C^Vblv7xn^ z_OT!C>LW?WpDsWTaN}J&Gt7j4lJn6=0th0BUU%MP^>5a$$QYxKRghG3m7o>V^Kyqx zl>^|(g=r1Ck9q390>o!37W|e7J){K=2SJ;zF>2yaia z7y);pUII`%U1kL2EG>%5UVm2W%{%9gw0HlAZ+dc9(NF}g4{56o}V6}|wz z+1IO_;9XYbbeeaT84_0QXfq zKVmRu$VzUrza4LbBuchzROpaf-tX?{17Ww6eLUF|kh#l8#e^TjQ`FB*9vY=TdjU|u zQQ2+arF*Xz`LrUGYlUS^LKUd%<)!WkQRpQFK(|xP>$1jTz*Zffk>n* z()9q5$UG|$Wp$p=b{i0o{_FL8%R7Q)Ie9c7)i`5(GzQZRc+VWSZE1R6tDX-<^N-e& zCo?zBnyS zn8>I+vV4VYU=SGzHZjRla0pdjB?>?7w9}kT@>?L%P3t2wZxZu-rt+mp9tE2AHHcF8 zr`mgu_^15XKZl;>XwGa^I8JvI$QekX$mdg~oIL|+c^}0qy|@6w4K?h-0{eu} zs|)_UKSzBlo&~G9y*~b|9q!SjlpT~2muYTA-rEOHt+FwRukz-v;sG!ogD>E35yO-8l7!Ev8Om*ItkCd4XfWx!oXf+xN@)bpP^V_ zSb_y9BtTnbt-Q;poNWt&#lvb0@iPQ!k68|4!4kE{=Td-a*E!m-9%733R^Aq__ zpIGxv6)T^_LmHSl`T#$WQExESX03z^)3HV^iQeqUgI6w?q_;F^#(s}H#%VrrpDc;` z2(ZUKjCuMOG#yV!0*$S+Noaa45k$;*q?xzh>_Y3{g z#cyVBSWOlAaNAfSTApOCizQ?vM$y}XzO+Bw`z`QNySCKI3V-!>x|<*z8qa0k7$SqD ziAMYuoZ-@OFJLjWS1=G=*Pu>ve(3!6SJcOWCx0dZ8xRFiU0O!z?%GDlAh_pDU0eqF zW2ZJNT$b1}78y&qD}S#Aaqs=Nx$P`=-(+4Xb-r{yx-V+s4l9`9C8vP}kTp~16aVq~ z^kfpIqW+#Z?}r#8mnt~rMl3Ao2yZ%eWauh6+kfMgsix(6Y?8;^Kv?~o!ug6I-P+XN zNP@u8?O3NCMi_)D0Ejk%j_N3wqy0+ZxH<75Q5&tVkevMP2Lfo;#8JV2$J;Jnr+r1m zKMy0iI?yf39#>nZ@Q&03wNBb2$mz|~z#g!T-#=wyQrCFrBss-$w1{a2mI0(3nZI>A zdnL}%^Sk<3y7naf>%x6Dz!5(6S!<72UAR`sfU!)Nw%xSy{_h;kRHOKnJQf3INb$Hb z;NkVXyAdb&NqL@V>>E%fT01h?Y9YC9@hHdk>3imf>~lx$BCk&Zp3BMaL8w0%ui^=< zhKH854flEP^nHA?-xITy=41B0`8ughW9HWhD93+mRMu*dOYvWY&Nz4CGLV*&GE@Lpj7>Nq)L(WLv|y!mgdBT;pm*~&eC%pSTxgHwCtE#Gzq8wA&lo`xT2 zL|x0*yz1#TMzr)OHocE5)zLDuCr>1KX~N4yxpVa@3&Sol`1;8+UhnD#V-%mj0V(Th z!Q;d5=>nUg2psa*M_(>3hV^GkR{-yDsiPC^ZpmJ??tra}KGhofV7aSMgFL2@NQiRs z*u;W?f(cq%cP%=l7A4HNF6{Mm^2NA<+#o;cYOCVYad(AY!J)K~|L}JNWPMAIwG)h$ z*5-EG1b!B@SoBL?v~^}5{V}~ivSd+cPG8bXrJSQ zYrd_+7In#i6%rmROzxT0d>(#26$9d3${J;rn$v4eQ~p;V9XG^qSuP0d;=>L{s|sv8 z>K0t*M6GvZ*r%N~D1;723Md+)*H_5=Y?0vhmz*!e{^Fg{^MI4s;e$_SW+dyh@zS?l z!F692w}&CROs_*ozkt2H&i8+*HMhVHxwd<;Bu9anitCAs*jeHV5tg7~P?%vmHJeaxDk{>~fppzq}Rx?O4qc%nwwF4Uy@Io(fEy)m+zN;C&Qa!onX6t){ zWh_=_Ud*kB$z|A=rcI(t(p1AB`0#S)krwZVi5UH1d1hW@oa8sE6Ruw}Tx%Yr7k z^)l@>WHwav!GoH?l)94?-5E{! zpZ~VD4irWFgoRjBk>EC;Wx5)Ks7*ZdZkJ6<3s6$7e4xQ#VpT$4*4kGpw=zGW!tKVN zs)ornNLlT~y$4mAzB(~0A4<+o_no6B%g*vPPV&U~TgqL#doXVwTl4d?NJW`Wx*X6e zM0bUi1z}1KwMMnE4{HgN^P7Pt{pZ2U#ovBzwKjZ={|Qq;NexEids%4knCe)d_h9>1 zx-?-)8>7^yjJZV-qd%MhYx!|AU`5R;U9zFD$io0fu#WQbE=bsSbXOH)%5OPLMAkc=-+v>7H6xu1waAeM@o+LyQYBm3!50Gp0bnCgL9G3S> zsZyD7KSU+Oq~9&oC@}Z}fOoASX08D381h>dXt?p;{W$N|VQ;a;vcV@XUg|r0$_@n> z6FgCSB&w<^C3L-)*cvi{{1H!as6jv$X8cZKL@ye@II0a1Z_Q8mp7;taLHM;kxU>Rb3?F(d(>p~RBU_OKqoNIlJ*&%=ug+xW zYi`Aw)f&Ch=VRm;9{4EB?NOD1|J2=-mYhjx)bna`{oW7Rb?gZtG-xKT^ZZe4qn*f1}7_91hW??JmG z_=;nPQkCQfhg(+?x@@rO2Q~Ys%iPe1j58SeUN< z`a2&UELd6$`Q>cC*SB8HM^v7(^<}LP`PGOa_F8uUX>Y30plQkyUjgXs8i+fCQeC9r z$p3)h&$J~p4U}S;T~~axxLj3-)=*lcJ1xNlQIMoqn4T9fs1yL15@x(^6ZNsFsH5;^ z#;u;~d5JAws1{9e7M}H&Y*hztJ$A0YR7fVjt)TAgoDw#c`F|<&uN#B}sqw#3Q`^#u zQpq7XKnyQMWnAN4rO`A>OfGw)#% z#X{D}uopnmBxdNu6^S#+m`|oiqPN0)*0zNZ&Og8yFRg9Q73WwF*XpZu=QF9Djo2Z8 z@k5g>$h@zd>Aka#8Wt|)h;0dP9A!0L02pZvIw|upa&8Aonhm)-t52fClk1+)(I3|Q zat|AyL4$qc2MGTJG8(imYEMF+28Aqs@J+cLy`LXfbLQ{ z9-t+aOQ^M;3XW?Ga(0C!+iB#o)gbCO8vG>;X^^Ynnc4-J0LtBuM7NTuskK@y!{O|Lwq&F+P?!BfT%xcD(kiK|J41iv`>%e@x#rDmXA&Z+BQ?d7alUx)XAvvk1m1|r9pGny8^QCbcSmL zjlpA!0@~qx9RoC2lP2Pz?9fyaO`{KSTL*fE?o=7>>5mNsvZ&!0ZQMCwoG#zVGpW|k z36q2+qo|FayPmuD>-EvSd5d5k;WYVP5mfLq*U$cTH9;8$3Z>sibqbF^3&(7+?A5iZ z;C=X{fXklQ_htcuZmGbIta@bPP7EY7Y<3Q`9zC3W?LYG@0f~NS^v^D`pb^JlsK_jN z+OWKGF39b{*4z~{;pKe(r#PoG*Wg}XnxpEv)aRyFwK+fIJ3&{P?sPj^S!?EhM4}*B ze+<2k#hj1o_>s{Qk@b4v6IKF^XC#8Q5gK#|b_%xg2PW>uY>xvw@#&9`e8#!%S(mk6s z_yHF7e-xdEBNYDs$19Z-iXt+S%^};FB{`1VWu2|EIs2@$Dury0GtME~;ZC-*LiXOW z*V&v+sL%IzzyIR>em$Sh#{>NMuF5&Cgj>!a;kcE3O2j4)V*}PtYU~rY?|s|rd;R!s zRT-PfVBN*fa2fPmJ|FWd2t@ZsxADLEUWuW}s!5&bMjK9gc=&^S{wZrQ@9vp-MxMXX zgUI==Ci7Q@t@=IxoNyg&U_wzbB=B$lY-Jt#+6;vYF5h9UeN~+VZu&Na|DeYZ^Uh*O zOL9aiyJCECPZumNn)#>fWmQv6L%D$f?$-^#aG_#{2F~ClBQ3OKD}494@UoGT%>n## zB*#HT`JHJ2c^sBhMtU=0^lrh__*fYlK%Aa)XY0k#OE?D0SjaqRCLo}@TSZ;}S-R&zG&u8qzV*M{hc%jS zK?W4^fT4^G`BXehdXI1T36gU)}GpDQqhq9;g{MA)nN`LngH;FgfaChw>uW|V2Q`t z-ER(pJj{vVeLlf?UZwM-Jkm+?SLg!R_g?zZ+D>54 zq|A@9nTt99EEq^s+O>k`s>Zr~L^{e1-Ee(l2`1-_WC=DrhW>9K%T zKzNeVr9ESk7WGYs)H5B~tk^dQfU!pTgDc%}G4!*rmo|!qXD9N6OSE!|RHT$QACp}i zPD%8jjZW-lz~1>of*i6K$WvZsTzPPT(p)_{dtHX*rhv=M?e>4*jt3AjxOo#t=9*&K zXg8$Pzkv;#5vLAzDq+4;=WJIm zqd5wzu8$GfcmL(fb-1se>r9D5*%9E`q@?-1-@0PdsYtFRT0Lz+Nqfc5%E|!dYTKX4 zyWwkGM~Jt5-0ZX``$n9UV`Y*{xi;eBdzowI>HB7oocBo~u&Tel`q?)L_x7i$vCwKK zb?NYZxnK{IamNmof|A$o%&O=OR5bT6=t6KJ{1akKCQD>aKmHnerRMk9_}gW` z!CT||zxp!8p1=Oa`=N0@!~k!;`_KW z&CbK0YUPd3r-=zUtC+>RLq`9Q=uas{^*(y=Q#_*B*F`xdBmdsB^l!S@Xe`x95$9UO zzu$C&G$({GV#eYt`NX*}$4uaG!YNn4qzq{c>Z*q2+F*)ix2fKA6zpj~c5y+U-nlsA zZn%FB#B9Rx^zLuoCnv?y2Qg9`@AHZaACK=PzZ5e_Or}nNDGl4SlKskrA-%hoQ})!n zpfT=pDwZw*87=Y=U+w#TYU(DB2`s64B(-YxNU1@$+0k1vyN}Z&jKVS5NwN2&Y>RoP z%=Dn@lus^Bi!re|Tv3Rz5^-#gmtgrNYlddplGg&8uSdJ>KO5~HHD97-7{jDdX3)W4 zYM?*?JZ=1|6Q7H21{m0Yj?P6|CvOl3v_?bU_JhEsq_w_mJw4BLH>;=0GcZ2N3*gmN zI{abc5JWfwD>`0q!PJ1Bp_>bvLyYDo3;9uvR)0-&U4IZ>*OL<+@`)2_3C|nj(7Tj% z)jU}*$E5JUJsCq!htErBJPJGecQ2^+>HUqMh5PgsE~`pLiL8Pq zy}4XT>y1>fM4#_IiP%#DRx-+MU%FGwSkzm7c1yP0b6znL*U09xFgI0o;j->`*C_E# z8Q_EJO_ZMuuSk1&k8Z-)j>#+Cj4`#Qn1)wl=DVUtr>hI~vtEA7Y_Uu5C?=@cxmfx- z&VD%CvtQr6!u=1s+}I`KYQ7&ho-7lf>q1jt2pW^?~z+ zJiOjAof%p#?-28jWB$9gPPDY{*HxEm$Rld=YG+QZqedjbEX^nc%vZ_QnE0bw8M5nwC7|~*=x8qo~ zonL*gbwSX$Ly0#r%^DFWw$86>@T?E{pU_Ee1Tz^V-=k3SetrA8EWjJ!h1D+FOZJl@;O-TyOPdhTrs+l9cW?GDHE{pEehA2(u+Xu4*s!yo-j1+NP7_H=Enp zW@Aq?WU}cV*ebe1*$1+nK+Q~2*2-&IrqEN&UhK4O$2 zELNfTgACvH zU(PcdIHz;EOPnL;PzpxGKd-#Jjz}*g*n{A0?PZR)ubhI@LU1;@!~3+Z{g9XD2U3&i z?!{;QQGM4tkZ+yxkc(8yg}83=*48fn+r~j zWN3K(I&-Bfv>ac?}!tS2Kx z!(2ajd(9fvoKKR#*C@#8?-+Kpy9o6t#%YmqkrU2Ur0|PkGp@kzBv?jGcE#$o2g-1z zSB*YRLt4rFZ&CJ8m!juMH=4&UrneAP}fn`a!a1U3Fg%3NO?%-WuXFf};`wN8@ zVu*4&))VSqPj57ZFs)iiNt8G19`Du)F~Dwc061T^E$y-UGfXyPq9C#fhkw2W2=_xp zBf49tGm|#Hc-Iq__M^*nV-Y%i)A_+69yQTLEfK2hhohzKzIAgxnW^W5h;h=FAgF9Q zS^=AB<117pHikWYG$AISpZWV~jO`uVQLpBv?-?$UeDf0syn~5Z>DRbs04{SF869;~ zQ_!?E>cz4j>Qf!<#fP-mV79@a(1i^qp!8gxD%bnw#v>-q&toOz_5$2Wks9Lr1 zd_Hnw)O&ECJH4k9E0+jucs!Kd00g1wrtpdY@i}$zt6Z_Fw-cq>Jt<2TX^4CJJC6y0 zI|UK#>EmDe5~idF`pYSHEB0tTgPdGDd;Yv}Setr;XFq89_j$hhUD9gyAY4rS<`e>= zy=mgeboUd@X|axw?=%*>Uaix^?~vQ)qJ4*#(N$@++To&~o9fyj_MG4pZ^&4_S=8a6 zAp4vbdEv`h_}3vJ-UHPhIhbTGoNS+&n0~}4x5)1iN_AXvzp6EyRWuqg+vK&l5UgP+ z(A3Qd`qth5NB8&re9PJ9xwZe?{EzL{1abM5a!KgOVm4&7xU(-)LHTu?_V+aarzw(f z##&i|YBuVXH3Zruang0^6Wcfu3q{e9L)Sh?syA{H@Od9#ja+qzP1VPxG` z^e?iUu5;^7cMAoz4VNFIX(eH&Y*cQ08veORv*PIYCwK8)PG*#g?1Xmn+NGyRD-Gbl zn&guo31&+Bp}?N?@68hn zv&M)49FIK5KR`UO^BphwKkp=Stn{|G*56J|URRM8c6-k1hv5Q#Px%$6)IK(lG>_nF zu-`m^(fJ^c0dTEs3;8BzivdJP`YJ7N0mbv|lWv2DK!Kp}08o-64-xmyX+#z0I9zxS zr1DztjT)GZm20e0^D;&Mmj0upZ!T0if1mqhB;U`eah$fKgFNKphx z=#-D|#_{pfH)DpW)Gz&y+6WS;l!Osh;dFGS2rhvFE|F)7`UF{cp%4nk@!H$>!qDZP z*zsoHz7W3+d6;Rr_JVqy^lGh4tm#3E%@Am{WsQg(h>L04Nq~9Tcf8GQdb|n}CeHh` z0VrKCW5V#sCF?ooX^cX|ymt09i}o_qGskRbeQ)PCrirOib5&UF`o+}i9q?j#d$mrk z7U1#Gc`XaczRBok%s@HYD=eY|F@`#;4Wf?)3vT6>_b4X4|JhFWCV6ey9*~HgDgpEa z=n#+uy<)7c`K+XtiCLT)EH@q?Tt2wq1VBJ^@Ckk3UW{Ewu4@!6l)p?%!at#`-y_~= zl$bOn1w~9oS`KAG^?infBaH(Wnycp>^{T69z;zW_%X6q?DT}5+YYlbwf6Yr3XN5Ym`Sky|FfsI&2-fG zhLSZ~luN?VC2c`*X7@~CU)RReYFui4K38T+D(|4ioqylxRWUzm3PrlRW;IM_nZd-~ zuG`-$F@B19eckxEl6RTnxXN(o)XnJC9m@sQ;>e@9gYrjB(dMi8K|Qj(rL6UAG^RhI zz-Y~%^K=H2!JMT=%6Nh*>Hp7O-vyD{d^X9^ik}r1SPhv6bd+$K)FQSV1`jkFd#GMr#BXo#I$Qa61XEzJ(+-K^zx{?y=OKaweI4N z4J>|pD!wm0jh{o>3sS3`W`<~%sVPcWW3P2_0GgS2Oe{4%1IM$y8-M|QiPg2VnQcF& z5a#wiiyrR`p9q0#hPsM-G=c`F!1mVVsgl-V96N*>!-o%Rk*7mi2OiHC>~m=l8flMh zjB818>Fg7ZkCN{;21IWC!i`NtXs7KA&r~qH@@)wDr#ax-MNp@!dr*EK;~Ld&;A*Mn z{XqvlZv7{OjP%K6)SwWSd%OcY1nHhpv0hHSF?@0lO^#D2g-@m=_$*AWc+u1){@b38 z(h!OC`TM68xZYR_lGF|Sq4+@+#Ob5Rq0%O}+8;HR8DQ8@lCBN6^IQUFp#z>=Oinl@ zCl`8&vdm}tu0UC4wra+jO-LLm*r}ml{zHrPx=~QG)k}?Tf1^oCtOzTSS@&bv^>-W% zi`m~qo)Qv@oE}R4q6(pDLoZz&TDC5Kya|8hfHCG2?Un2z|HpLBGN;a>SC!WK_1B7r zH~Z$+dVpa{=)QI6^;=2w5P%*B-%`@wXf|S5cyZDixe1zGqNUaQW?V;JqT1@I#7S|j zDT73oq}ZLM&zF;rejG(Lo<9s%(6tvuEdS{=`yfIO<$!0_AGGhY+Pu;{D^p88s;&j{ zfkdl0y1n-4&Dp9WR^C6_SZ5vZ501*_uGzThwRHE_V^;7Cf310P!seL|Z23kk&8EkI z7n^k?b@x+!OLiQrzIlCojiqyh(m{UUmplup<;$WiLSQZwyB3rhCf<~{0=@;?>J`S} zgM!V_1|=`xV&S)?7+3FG(@h`8T$)=X#+zL4Q3jvms)p`^J^a4uuTk@*8qL7Igeog? zLYOnMZK{devh}oYO*^gQXx$N!Cok?haw~>r20Bx)l?*WRUcG?IExVj`Tz>ZU!J<0d zcLQ=G6O+#^l!lmjyoT1rqU{sux%~0sQx0U2s0iY69gkotog9A8^L!xD((eFCl;rr$ zZj=vl&xIV$=iaSa({p-!Zsq7W`6Gf#{`w zjoTu*Q%x2EsH%zN|H6BNWJfHQ@QsS?(h)$`N#sJK_P#zS1rITen{Mf{**s^KRDf;Q z@}+-ZQ9TxNb)Ip&Tlu~qh|Zh&jNt-~W@SIrA_yCD&kx`PkEXLRQR;B!-B6zFGPy%& zOsSU+L!RV)MI2w}olCtoy^_cZvl?&tSLp~h>*fDli^yUvlc6E3L|P@U#WJvce#hw- z)jno1q?Cz}F3hR)pV|cqdsX}ukf|kJj30U*{>EwL%vui+$a%@2ArS~v8P4bkIlDi^ zZj>dwjn^g={-onhGl2B=U+-cPv~zxcvNeDhhh*Qa-b<23Gl$>oF*2H$P#zb4*rUXou%T<$z3bkRF%QRwah(BO zjW~8T;4(e?q8h9!z9hu?q@UnQ&xaeC{FE(UK*1xhN8%K7pY;Ui*K-Aj*yF+8O0`JYTSfA{z)~D|wReduK`=wV~CL)$f_cdg)arJ|%ro zwbN!3-QHpor!|=@EZMFQz)>w&G`s;hlb?1|nw5=pZBj;iCH$7bq_!5uxK zu{1b?Nbr1Renn%d_$=z5x=&BZHxbpeo#^ObGin4ZpP;Pl>Qs=2wGw;nPPh_)KD3@4WH`a0j}60I{P>L zAFagQYpfON|86gk7}=Ysj?Skmk30VXAUo-wN!3qar8jzX+Bd7>?&2RecQME3Dqeb%VZ#|K$1e%8zXC4P5| z$KxB_UL>nnKbVWzd#Ci@aPkvRuv8Z#Z>WI_)hxBjMOpU`RJ+x&-=G_8Xj~YUuOWiF zRRMbe4AgPWSvQ{qA8#6!rll+{rjtE4g_cLLRl3_b8RwL7Piv<`k*fZdfuN+Hk5; zHtE}*qcBrh+dV$vI32nMxO!;p1l4$?T^W2`ty%W{P9N<7oW-aFQf0aKWSrz<(GQ>t zFdilgSV-w*4&*u4MGPAI-e@vw^$%1|>H8QN5ruTFfySxS8Q zLTXNdn^8dreX=cW>hBKAT1}}w)=(erx%^grUkNzMVo!rMAZReyY<%PoE+4z z_MtNsn)`VRC)N?!0<2tY+gpCqt0n(Ag|3-^_M{*q2?=2mp9UsP;7$Jt;j*{?h_3d-FVnG zK*VwItl`olk%GSKSmCpvoOlmTl{29BBj}mmBJU(flh(Lc5X^bC0N#O#0h%;HLFS3( z-Q{lXOG}*K4u6fXy*6$rzxG3l)i5H_z-6wDG3L$d4`Yb>x~5tNNuG!3ee*uM?M-fR zx3?Ni$lqG7Z(Yqej63$cqRJ;`r+NLIsz%&^o4_*hL)v|NAM%3=38hPzSMF)F5syEU zj;Ee(Kx*<-!W`|FG&Ve3gAsh&&*wyD>{~U>4i5Y1U8C&1^b(8Ll8C3zD%{~^u?9`w zDm7`Cdd$v~as|n7ruqbs@oWE(-iim0JQdj|b0AM<-emkHqyl>v%raxBy?b?Bmj#Y* zt9das(ESEUYW@NK-E8lf{JmL7qcNY{|7*PZtqaNE{d70y#9C$k=wf3Lv8S8&9PiLI z-P&mZF?UXMRNsvK0wD&*rQh_NJ1x@~rI5l~6_2q~Opa~(6+j%YzF@aQ3}hp3M=DpE zkOsH-;qTBRH?Wse39NY;Dq+VVo(WVN z`AJg22D6^ATZWH88knZJqp1Fks&)g{3trntA+AYvx0DL>NvF?^8et6rl5;=1)4YdB z>2tG_TLqK>)Xaqg!*vT%F@1N8NqgP6+*l2Ef8TwR&OuQQl&>R_-q^;rOP&_Vp9y>E z`76PKpbJH(7J2qJJd%`jzkU;88FxTl?KxyG+FuuJoz84L))Bk{zq6oMdKCgso6dR( z_4#1PM$dwXoilpwf#fk6tT;}L_cw~ocnmq7JCwM89!LC~J>T;$(VMECSu)wGu-S=n z_PW8W&m9tc*rPO6htYRIGSLXBJ0agi=R%d&20=iT>f?oKHntwh{Ka=!xo>_R3)97C z$K0(=QVrH{GaXEfil84=RUYs;@|5GLfXTAe;KJqWQK)SpZM5XSH10RivD@&Rx%Juc(4j4J z#w=d+6^EBS#IsUfK30GyW*(uQL2qP*tDTYOGe1YVR{xUS%Z^l@8M=oU42t7I$38-fX-y7_Hr@&h)Z7kSFLSIEY>YHidp4(dJY;&d_`F;@AQdi5_y;wB-oeku z6Jr^NxO&M;56v?RbD&nyHrFA$R9luhcPqW+?Q7Lc^bN{f^nugy+EM_y!(eaVkC@mE z=TLT|O4wl`c@s$%BkOENa!-f0ih$WFE#sEU7&5rGSr-_DzZ{EQU;X*6vtg@KG9<)T z7^CM4*WWJt_JZZ_^_8;eUu~wasO6zbzhBS@{3(YjFPoV44hvv93<5naOQKEekvP6h z%mzJRHeQ|@ml);ku&`AjF9?}fJG zX}>V+L)pFE4G$;*7)~bgz_s40klKSgqQr1bbY}A9hr3rj7u_pWyWf#^cUnIwx8QVU zT?XGF75i{wLFuk(Ym6P0-KY2gfnR&bfE&Utc5Oxfod)>%BfdTiaMe-g^h!I4`y9+P zxA3k@X7s|nc&#?twX8_GjCRHmqgqo{tFG4?B^lFxX+PRn$iMhp4M>3rB*i8x0)G_1 zX1A5Wc-aiD+UcjPEzVvqO!eXnyc!UWMAb5>i7>dV8ET5}4`q>t=gym$u5uko7ui4@ zM<44xyBRYyWLZ@Mdx^$yXIhZ|cWtm};Hs1Dod`%`$Hby_j*w5cglb`2tp@g_=&i2( zb6WIK&p730B&--Lah_yaEs?M0RdeKsC1mwvM^+8xW4*X!F*ELPo81qr2-#`f|3JLh z#Ic3!PETWNQnN+OO1 zspgGvyB*&v@7~lgkF__>TAu@Cg0*z$tZ(ML#I zz`5wXvISSstj@foE`(#mtAyD&(~Om7XIqA?=0rkj`e4Av%op zQR6i;dDeYPZ*AN>X9%p&dmMf}R0#!@FX#=n=tU|!@yLUiLFhUCFCm-anp$Mhsj2E$ zB*l!}pQa;<%`jWtUNdKyy^s`w7$a#G4KhddL*I-W7-98<+O%N)4C!BpDpq&)cHT(J zCrnpNpYE9ncC_-byL$vi3)OvMf;6~u%;U@Bo@h5u<;IY{3&OJzdK1+sCGj3Hesv^S-S0!A>0u6)PhNLO;C~fA@tp zk9hFrp&r?9nWP-q!EC8--awW_n-%R3AKG2aI(Og7_~Ysr%NlhmQ0;|qv{vw3AI9+g zZkQD#1=h(pnP{tBb@Xkpc6fq8eqZ~}VJIP#&)Q=FUxCS7w3&zKV1SXfZtPX)MZ{wo z7G*Og_PB=3i}eZ*eHit{D zwgUbtuDK_`^4H%eYWpUKCZYiaFQf(*%&JCXksO1r|03q{{^nOWW$~%iTYkMNF*dV0k)2x`ZF>=`V5F5qA|M%EUDV0`DxaNSduT3- zQ4b`TKB>x^sew$~>%t=$J-pu~EV9%A_>mn`Z2cKS8zy6#_@^(sfa^^cZNiwemGP== z&s_PGUaRF+k-4I6VLx6IZpspIR2K~+`e-PF&?#%&~I+#L6IgBcHq7M)3y?HRfP0=^+;C(WZ|h?|$gX zQm{Q5oWru86<>XRue!v3_pqE1B4?JVV+_IOKJwVbED0NHqaj-4=H5psu6s5z5u zt~qM~xeM#y`4j0qn|=zyXrW2!*EV@WSj`$cB?iDqTb$eD!ab8N(oYn7()-Gty#cLd zcMo~X_)EA%Bx$HQb_QCBR{|g}@Z26pQI&6B4Z*w~PIvHq!QSvW2m*W= z&&W>wL_drisz!`CdDz?f0afgW*9t!Hq`8aV_Mem{9&6Lj{e#aG5QvstgFRPZ=~^Bb z)%wTo^<7KXp#_}MK9$JeH~Yy@eMxx@-+WgqXoQalJIgDuQle<@s)Y9S(X4ySmvP=c}Z_ntBIz= zXaUBgt``KxTOVAqz;d5RuE*{+JQ1{*p7X#|Bnqo2+zpI{B3RTC#9UG@#0KYnu<{fY zmq&2wM(+-S`H4JFZGGyaGKQ?W-J^ckV9)a%(~KD*FMC$-ATYrt%2&@w#+l4&er^8J z9`7Stt6O&m%Cg=_39FY>YN-sh=%kGH*s>La6e5S}p$g1%?$;Ye2^q*(t&slNxNo^$H$t$Q)m7HJ_Dkt#4?H{m~s!%^Qp z5McF;zcCW=V7HE1$*af+nQ9vgUa5}M*E}jw@o(Jx@vGm3sMvr>=|=bHDQ}jL$7w9ZN6*~-n;5GqHz}c=+05$D6NJ5%<-e~DI*}Zn(2rW(eXdr<_A=n(u?m{5 z>7j&e<@|XD`)i1yrdO3KVh?$bq~?qa^pi}3{tRt{`JBe|4=SGXaGnNPX@6T4_(4EwFCgA@x_jyAaVIa*q5O*JZReZV zJb&yhM6%78Nku+z)oJ>cqw>1AP~NVmtIU5hnf$!MPGbF<$1yEJ>t_{Mpwd1U%Kg6-Vin)tV;R3B;cEnDnya09k4j9}i@6urWgC=gnwNi3K7t+XwsUjxw0A ztJoU_ zH;60s8BC9TPQ{bvc#|Oe+I7bwHQ-}8=Sf$*(-ynSlMBZ>l(NSEt`Qm`_O#k@pa2>B zJ@I@vASLEY$lWET4ZJ^H;}7kElKAU9@-lwCI$(q5LVkJ=EiDbjV$t#!_3~E1&K_@S zGZihQ91vsiT{2Z4ghqA!Ymf-^3#Sc%Y?y|LZay^@#!l|@!pCbAHn|`{flaa!iR*Ea zfQu5|-7W$4l^k_`JHOUdf|JuwvYvLi$AqiM*Pe&hep7^`$&IxxsG7O>VDt0BaMyto zX~g-%0PH|_{C6OiebLTKZ@0!p0Z72q8z;|&jSRT~{)Jyu*M&pqsb82Px+?TMAs|1M zYLC$D!S;!zyjpdH1T{6+M)X7yU+QBjd+W@g?E>QS{?mX5*nQWpMxw_h2SMtpVQ`VU;!u2k|XV>Y~tDav= z2I|LS^=34{*0~H`NePZi!#_9f{J3KkbZKxro|*TtZ%99{{LaV^p7l^U&UV8Yly!K}Dg}d>S(U;$@#>1vNr6vpX&fh)PXYuU3t3NjaW_;P6 z&_bE%UTXFmzrFuL)=3Z{9JyhJXI1a<0?u~7nwJtB^2aQ^1r37~BhT_*cnfjz3JCU4 zhNu`N&B5C*H}J3{i+4OYd47z?*_$?xz_s6Ne%*sC38oKFV*pl#lkstHVJ$ z+Vk7)hEX*Q>=tXW_sk&Qlh?}$A~%Jv;<5BOO~szNflc?B1c?nSE*@)xvdy=V=Xf~X z+h6V#kK2)?F&s#8#CcG_XnN%dRBd>5a<^>vhecpZ6Ai)YKVW`Z7|?nU&{B9e3GfuG zaL}$FouV&21BxMH-yaC;!=1|3J5}SwXvpwkLt)e1HesyQ#ObD{=%j;B-Qe;Sp{o)^4UMSHiIiA%#o)+ncF$9}0s!VG zih^>Klwj4(GTm)mHjtY;#ui$dIzF=1I5^loSFy{kJ4V0lx|c~jEs+f58l60S+AH~? zLRNz6h1Pkd%3D++RSt`YaIWx#3QzM$Gso}gYlkKx&Jf>(M9c~P#V-a>H=f0%Fgo(! z&@aw~cb4p>kKaXw%GkKcrn@=2CjjhODZ5H|%r$eBSN1<|8lW0c~e60`3ADp{rk>|o?VGE)h;J6`|ek4lMPMj`ozSqHoH-D`P%HgsxqRT=?K0C zfIR#A*wZTP6FtphV-q3I8f0xmAoJ7@tvvv`zhf9tMGX zygjeJgi*Y?y2%>HnkTOmA~9ro%)y2*-`YU@WjumQ)Lv+Nf>ce>~3tJ9=I#^|xK{zy0bUOEqAx zYoFTC!1rZU`2JJC_GN>PRK{8uc@~#C-v;BnUpfFpZ&7SU|!C<%8GVzHHKEg zcJ&9f^BB`Eb|LM@7OF1U`wN_Z6s>7r&d0~J@Rq$m`!`1{!$sL&mD64Mlf28GcsotS zC7i);g|!+)uk7rQ%82ghHQphq z@!iO|${W_LS8W7GPHu-$AZ>v<`)%vVrtRlD(nvmh9An_gcED?YS2Tj7U9pF@x!Uzi zaGrkfBR+7zq1sf}jAuL_FAqMI7uD;RDWSCn%={>I;~f1bYNNlFd0n}rmdS2&X z^einbHT6*!Kn^KO7h0uf`q)jpaHK+J{!#`5>G#xKFpogiXmjkSS5@SsM5f0eJmskw zCV%Yr*u8LF^M57{KHRlcb7pYs&pYNlSm|_6t+P4Ad z{XtXz-4 zo$og|A3&azho{m*gKq_A!90s1TDnk?iSx-kWBe&Lktzp+9s>?$TZsLI{%++U_%B4X z-FU+GI3(9sAwWC5MAKMZk;i^2!E6{_`%S9uCl3z=lB8b(HN-`;C&?SV(#G3u2u~}f zdQm)$sP%vxlhl(fOt16`Dsf!+SRrZ%0R`74?%kTdcl{G`6+=efZ7Zo=zcjEym7dJ) zx{8PPuv!Y9U(=*8;Y?EWnG?oQV0OF8aOuMS6txV4m@-d}hZ<%-AMm&c&^53uO^yG@ zd_WR)V@I^GpsC%r%rCNDOpHG&?T%3d_dbUOOvdG_-THp#yZ>sFk9z{Q0g}4fxG!ZPk0-&1u7Sm{*Q^Z4NPRWTdPh<-Tj*Cn_`SEn zD|V+1HdXwDJg(^x&G|FqgB-or*4Bqk8nuPVu9QFFOQY{*EzPGp^hwdcl5ht8*og_jU$d{5yy;{TuHQRRsUBD~`SI!JVf0j!{&bI} z=Gyle*P9A&KrY~$QG=Ac*_qdDtHI!Nr#g}~sv%B5ZTNdG%Q4v5z%0$Cj+B^akrjS& zn*4#cn1+`D)0^Yver{@>*F@;@pBxEFeb!2OXdiui;`lB3RuTzIvTE!Vqr9c7?e*P_ znl}$M9?n=^99CY>)F`WVH1R|6h{tLi#qKf&OijRkfhu+Ot$VX&=qAWsi_Rftp1+=z zgWaSL!AXcdud<91vO_(`DblGbd2?DvOUR|ITN?;eCQ_PYn)xqFjraPln~X*`AJ=3l z*+rEvv_GTdJdq(+dXWH0x%I%m-!VIDx~Q*1rg(@kj=j6t=%<%`&o;Qk0mpy+Sp~v$ z3e1OStw)pL(_4qqU#{6?%9p(zQ&Rd^G2OV##x!UaZ8Tslti=dXm^+tjyxU<^Kg|vy z7WL%Y2QCVqpAwAzW2W_iHre&pDc4Vxd}-6~PzB#(xbwD*Pxq4DK0?XwGVkS&>z6j( zDyJJ#i_)XEsY|h7(o{oOtNt&ZKAfDT`I^I`;3rauf99zqlO)4mo}YL(KH2(}3xg~~Z$5c$btKi+TlAB@>1;(3> zV}P^%VTvG0h{D8)A&F|7^iW@3q1@y5ë=S1IL7)0glqeAeUrfgP{Cp=895YQC& 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

    ^Lp zydDAGtNaq0A(b4@UO#)pvOA{B@f~r^PI0}(bDXOx+Oie(&epPjLXl-U4#Odnlq-lv zK++|!P?fPV6C<=?Id`AnrDo6&w*4Y_4thjrh|>3zsblplpJ_3D{Zjon_aF|z@i0K9 zO{LF~eOMHftyhX486=op&XI|z_6qe{ukt^0%9ll4XNr|2Vv^l{HZLA+a1#n&3vC*V zDw&1Fo&dS*cXXC3zTLaY-pO%fbx)^E@mEOP=DBa6O_G{hqnur`vX14;+C4oFQECpQ z8Z98JH-bK6a7ru-8$boJ6Z}WUl@GB<5@>$c6Y6ucIG{yEc#*=A_c9)G!py8(sYKHW z{3IGpB(n~U(8?BikCOT9eWpZ`lb6ahBvWFY?7EJ+E6OxM&;k!1pHD^0%?#y&Sw9+5 zrW(?3Vwj6QdM#A!SPeD$I~GBY%X3x2%s=(P7(U#}OxTg?rh?DKcb4R`TjecUW|Zh$ zG2j%l{2pR|WtBH--CW@aoRW=@60U$R?+e^tc?mSyyx`Rys`@>%S){KUD$`d^i|H_Ou-49|;J=6ooZKgNAv^e0F(F#TLLe%hkB=i=o6L~D?h3}Fec_`H1S z-QIJneHfD7s4*)uQ94y}M-o(^T)V5^@i2J*(6&)I(QixlVOHyUt8c>MT@u(sogOscZlB5i*0%7Gvl!T2{;=+kxd;tpJHRmj0wnK1h) z+tF@|BjQ_SfV{|nnG3clXN&{x`WgtPEVAXK>9qJj$*3(jQnA5rTJ+gl8JH>v$Y1e& z@+*j=M@i1-ro(n$)6bcqnRuI#3uxuw@*Z$^08CH-x4i12d>8$6@qy`59HAdh&0Nkv z%*_V;psd2F#({sqzGKdMY<2w1<;}cxjyuljOBOS?q{e(N81vn^8CdoW?$U53F0n}_ zq((kK26=VPihr>-kUkhRhCdA1E=7CZZ+JIU^nmDi88gh6Xh6UYg1(#}F=9cMaw#Kp znCX{UUE^kguon*1$w4Ywm2O{CL2yY_IIUDWH*9%=%Y`IKVmVn*VOyeeBd~Sa97h-m( z)c6=YW!E&5O^_l`?2%UxJXNfikp$hQ$4OyC);OKn~=5ccmY)#!^Y`8}lW=Hi#=ByGT+jVt8M8h?{l zM;V2kZ-p`@{Jf43apsasRD{_^dD}a?d(o}c2>TA)s%@{#D-q58-oT^si)ycn>h!E4 zyYkJ$lx(*Hn8u7#K{&oJ)!0RL5h3dwMdpq|_2ioV+i3~In4J8XP9uD2niGkEh2xL- z#3_vYj%nWsv=Oqw>w;gT(o!2d(yBM!hOTDs!oKcHMl4^Da62z2nl3~@vZR>cwl^oa zR^_trd)&u&=$<0}=^8=I%ug0FuU`)61SLlgdZp2J#09A5qco|M>^{zzrnPV>l6S3y z-7WA>Goi~5GMhFqjUh@+aB9-^`J!LNv5B9ISDf4T$-q*Lx$N{C6hv-n!#n;{Z!9Wn01l^r@t3AX(b!H{||m%)Es$#?G|sNI{77hZ)`vTi)CLJJ9F`y6Px|A-w~^P z9cCfTTNUQuvhpwmhy| z=9y5FX#}T>xBpd+iZ#fGfu~0m6xY;z$Tn7ITH|e(<6nALhz0)PzEa zi+UspCNdmZDU?a+hUTOp>yTTTgZu2jZT%MvnPRx4_f~|tx+RzsI#=o8Q>Mrl_~1S{ zc6c+jH~S+*=rri%^VlKby_E%=wD1CzDNqG+-@2|v^oN}2PX*b{Z!W*&y6v*aQqh- zOr9rJ4hLtJzP8>f0bqaU`PFf*!%=weCw3Av4V~E{n^J8yKOm9{W87jt*lMri2sNaw zaZ^S2lU|U3x!v9m`3OuBEC5jP2U2w3`!Cpn9#(pf`=H5yao0{DO$2Y zJm^l>MYSd}z9>M$4K~{l@})&GFtdRFZ{B%bwR-*+bkKO$_Q`n*JX!w0c9K5MT zy=#Fd>dh&2gqm01>OkyGj@T&32j)$?zqyQ)W7P0>iw=l>vv338BkzH(ybz5{0#xP+ z>ZqmEf8G;Q-5f==9;nyAP{6{f_PB~NMLo&N@V>0gz9tGgw4VR5E+V);gwrBWun<*? zt{h|U#ejn~f>m~A>tk7sZyJPMR4FzBv)ub7zH1C|OG)7_)woFo?&{aeWReUC?H0xv zwj|%&`hZtVH{==cZCVB)aTa{;bdlOLiIBM>!JL8#!n5Ku(ixLD9na3F-1)fGP-|n0 z(h)uM7QhWiZF!X5sTdc_OKv>hcjM|10x z892b7JpBkUQT8Xu{c_E*Ib^zdYND?Vu~H72(|_{w6ARMY zcv4xBwE-j{j28bI7RCM-GS)cA$>ZY8$c`}J>HHQQY#}5XG$dTR>i{md<1-A;a7;@s zZRznpEB7g#uTZ?!7ao1-wuBvzO3hzxOBYDV#uOL6nx}&!g2$}g8~$Xki}aN)*V5hl zCga@tFa)ISaN9WT&`@D$d?-%u3AFa!e%LV$_CJ5y&F1oJyD91s<7wR0R%W3o-)+{7 zuGGdgR6K&YdpMSp+4133gnTf;#GW$=uMQ|*Tdibbe)%l$dC>#kTyDmeDy> zK#6S|)im+wHwPm$L(590rtTUI_a91VgpYgtI;lm_j7Q8Kgc!c9d-5n}nbc{`=4=S6 zD%s_*uJaDf4nF=7-0jTmQU}OYwPw3rc!Zuq9`x%Ng&TZLeIKwFlwR#EI=ngJEl}ck z2wu#y%tj1wtam1&(GGjf&sBOgOPZiNdUS2WA2S|dg3Id{UYR=Grr+Q=d{q`I8n+SG zF2OUHCfJnhh)fjIq$k9^mLD}xoo#$oawu6m2`$oVN|>+aOM7-#0AUb;mj|u}B-%NGMmN)YMN>*WfxqbijG8q$DXT{Hx$qPe{h0g4PG|Ih#GEu&u<1@(@ z94}n#^tE_#m0#9fJbSPE4pq4ihc#=_O)0~d^c2F=oHQ^0#gNTa`Gurc zeJ+7SmsNpW*6XXIO+`+sKKltNGU@FN%gZw@3$$zi4AS~<+i9^HW=MR+4=>kTWEhP~ zcKRwsc&%MvxuwuKEvHxmR8`0APq=--CJz2*i)v(`>X|r92^<4EaimVXsqkcY|5Sx* zRd=+r?qS0v{AJA=C&GnUm3W0CwZ|Bwg9pk%!feE0=&j?(CX)-^G|-~TUO{@le#jgY zT+>NbaR-R$I!bF>40G}gm;oI4cORV%u&&TzyM=KlM^?ufU>#$aoR)oDsn+Pi;dlph zb$HcfN0PR=s;Ja;vEaG9&Xgvz*k``X^Ye6WVLOi#5h3g-Z*VhExw@qiqMInyB{I#~||c z^4Ft6-8KUXT~%ocAmQcXB}Ci_@2%|%?!0~q(RnVp^2BGXnd1OL17LNY7?#~MpZRpl zVwjw|efaY71DqRkW|YxV-R2?{t=*G`1iri1b*wm}qAPMUyHsJ{N<)7~*P%@QF4Vv* zZjh&n8}nk%Lo4gkcrul0&dq>64gEt{Y^MoQDA9;=EANf-o;k^F_uS;BS_^U57KY?uk*?nlCDL8f`xsbCWCSGYUt(1wbzFvdo zibJjrXz(~J$s8i_ny*H9a2t)m|MntmX5uLG4L}t~X(48B6B`V846A?S3UsKv{9NY5 zd}W|KTeza@i5)T3hh1oIipz_hY>5`IZR%3N;G|~1%_o2vqL&e7i9vjHQ=VryBCA;Y zDsimqTSUm*>-#3&Gd`)vu$9}%>GsXayc!llfAgZccf=H0@cHoof4^BbONLeR(QYI= zx9QeG>OC3(cGbo)0Q-2>9zISEl3nw<)5Ny(ykmtSXc;oVeA1l6cv}l5i?%2I} z%n{5Q`ms-1Z;@VL7(M|if&n5E=oC~D-jk2{mWr+>G&tF9*K}1Z#kD;u;&o)+7w9HwXtxo zG;NyMLL+CiZ%O)mgYn3iEyUVQl6Oqz3+W!@#zH32R~2Y%iU;JXz@@2DjL5v*&pC)V|AWy6ck~FKFEkiRDAR~1bjBJRYioV)lK5>)W*JssV zOCCDk4^I8jFs0e?Ir)TrM3b__%}c=uZf!HXcrxO8IhSEufYs9oRMGJ>!LHgce*U2+ z+LPQ1_1(4MeiZy1crC^lJUiugIKN$B1Y*(Tm`M&~mN~1uvbN+=SUdYO_X?57D;+Yw zh~_SSr{4j<XRxhz3&EDJc_1`t+9TiM{AL=U2wox4wqFb=K)~V4*jZhUw=U7 zriJ7Ocj}+e_RteBsVbWou+qJ4D!1+61$VzXO*P#7lPx_wTvR86_5*BM74>e5@YUmi zfF(T6v5SsmKNjZ=laKKpG?SL&%2X?+s? z+3ko5>8iUER|M-KS9*?O%3*0Or458XY;2&GSc(+_w8nc@?imd86wss>F(x#Xcwps% zBvZG>)2%EI{L)wXTATUc(V6~LsOf&#fQJdrRTv)E_^IRpkx*g4YLvRUf~xsV+UA*8 z{gJVG**1IlTmK*~S{nISksJwevwyNWLNTX2&i1^JHAwR3xc9`q`M35V_-?%FBM;K@ zSDaMgC!!csr4RN!NAi7W-pq>ol$W9yuSDt2g?ux!u6V`hfKdI(LysbsB;^M}nTh{) zI~#Db1^H418g854j02_!>*vtg0?{*N|0=TXM0;hY9Rr9A*f6WYY9TnA0)K7~7rk{m z*9?q3{I9!2_x>xvn2#7KTb|M#BLf-dKdvdOtv>hJ>e4i?c-YJE#wPoRt>G0bDezYWN2c`r8WQ&>+dfatW2B(+hJ|P;ogCV9$-EGV-3lBEsvWd{OHr| zaazjew*(#(J(!-~@iF|S+Q0TIx=X_$S5EcaiJ8-{!aQ})<%KSKThY-&qcIjv37w-o z)7&1C;G@stK%$w-7;@mTnRF0vy+f2WEhNq+E7}sOGiHNAF-%$P5H4mEtpz^p z6s)N-&Uy*Qgq)j#@f{D;c?+z02Qti5`atkitVZF1{T4H8jTga&ss}JstloU(y&9P`+Ni zqDlHmZgG{C3w$tCJ+t}p^WEQ}_1y+cU*Iau>e5^bHni{3RM@8_4?r>E26KS*u~~G* zczJPw{%t%wJu8Vk<~{FTXEXR!Oq(ptVGCG1Ut@1XY5y7*Ul5tYh|U_k$AlK7ml;L9k#%g0 z-wc*63SQfgMGRWj^U7c#pCw^wKQx6NU`tD|HlD=LKE6)-sIdS=z1|vID5J?K&+b%$ z#SFZFKUeCY^I?0SNd%E0YO3S9NYT}vrVKLbt&|Y^9Ne)f&rqjOJkW}_?1#hc0kn^v zpO|pA;sLe7uCY~4xm@s${u^RwtS_B2x>*3V6ZRCV&fTs1OaJzE+^!BRM%aOKvy$Un zC4`CLR~5Vb$m?f!;8K{gO_0LslhY#ob5}sQvaZXp_8>>qbA#C%ii2>uwUEjX4u8%x z_aW_{mBt8C;{L(Vzl^b;*^>j&24sbKQCpR+ohUuv9yg7i(9p-NpTtC>fUJycnXVOD{pE=fD6P1<&m@Hlc@qmk~W}{ z`(=XX0^gpEcy1!UQPR9f)n{ZbQr_RTXyx)ZD|`xnaC(F&E$7!lKh;fs`QYoQ@| z{-YhNq6?10!!Y4uyXBH0u06&^2)%R(BJ)z+!Hqwh?eTc7o3P(=Bg4pOvk-kLbf7F^ zf*oYsO(f2`HroBBi}-3XRXVf$crWBWnd`XY3tXC(^#lIeu38`!n{7#ohjqVzm>mq2P323bU5Q<36PH`HP^Q0d<{5^w3TyCv5m|AU;0H#m5{Gaw8c#cM^ z3BZ|*CN zT1e@fQ0)2{cQCPZh&G2QMy6cW!Q23=Bb3M7NLQt~%= z^xUlTC3>zer$miko>kzAT-eaAPPV%5S22NTqS5?diy!MnxH&2I$1(8oaT0!E(6>c^GQgxSkg4dao zeKdlXYmUfowlfDa{Kf54ARB3%dfGqqlrY9ewnN!HDa&=d^p3}@$MkxnpgJJ!<;O*u zjkm4{lhm4n+*jXZHe@gs1fwPrsg_x*%yPN6M=)xf>YtdkwJGfWm%KNC8UyPG!41WMtbn+wC9CBCyJ3Vzqcn{Nc#)yjfSp7akke|{Q{xm1m;!UB+T)rcRmxO4b0$8! zZe}=TM4RQLGX946NBO_2|910rQ*78cPR4o(*&fyoul=eb*54#0%ky#EFU84SHp#a; zj<7to3{Cs%QHNs_?V>btn`kvoBukXu7;VPZ%7`uA=`a9TP@~K5!N9+~jC?bU^ZFDP z4)l?&%hw|ucOVVZ)$&W3BYTJAA?wwwis13Q4mq@+r2bU!JI1>(%-Pt=2Ll}UdTmd0 zMYZo%fr}B%ouPgjb&%vww~@rgT`cygOhz_JUW!PE6Z|`Cu`fXNe+-?6JDYDChIP_` z)~{M>REa%m6RV{)LQx5^LQ9Mig2Y~J%~oT@stAf0L1K>>ZM8PBw@^E_+ST=aIgb1X zIiB}@-uu3;^W5EnZKfHftjQH~F`Ounm%S8VPf;cROW;z|*jO4FJZ{Hv{);k$e{om& zAi;EgjYwEZS{uPRNm2+B1V$IkBL>|5z~0?1E%n3qq!bTd7a>*7+k0~hyu72)qTo>K z`qT0q5djY-gR|29091YwGg{ZkesD>A&{j~zUp|{UOA_V{YmczJ*u_)1UrS`^?ic96TjsINbq zKcjyY+;yR6NuId$q1Q5W&albn-gy--om z9AmWs@Ta?Rj;x;=G!Y*0a(qqAKhd+ukme*85B<_=xHGi`6*O*Sa;YztgplWO~&n4m*i>Oj9&k8|g^^u}aIfB_5E8uJ-qs)T%LY8L!cX>bWnSJ(B za82V9h!p7DvpH$yX>+?K`s?9` z*@4&$%R^rm3LcVG-`*7b`)iMXGH~_{)p6ck*!KFg>LBMZKYY{-1pCrBRs+CL-%LR{ zCqC}oaQud&2cVwzKL1Z1(Ar04H|x1vO{civYnU$Y=9566xrheoX>Ga`eT`;8xi!(q znv;2+7h6?cPCM*A#h3h^Ux9>oQ9Urxyz^!*(Xm^OBB)IB4 z)x)>#lV#r+VbR{PI=N8=5Kz+F*}eXlLw$mOz)ppuH7ot2na0P~!yLC5VcvTm9y@75~I*qR-)-8|sSb*F@Xby(&PQyOTq z*eC~M(I!FCDksV^Iywg;5c z%(Lvw{8K!Axlf<_Y=*?8&2c^gIx^cBiW9zTe`UL#7`QB|u|)6}97{NNT>cjqRsJj4 z&7?v>ysM?#06w^3tCtKmtsUU^i> zu4TBs^gx*V%-($i^-2kzQ1aianCFsdeXrHK%h9;j6Tg8|?&U+WTD6I~JKTSb{8;fH zEc#B#1{Lf!m$kOC9JgLnz#=j{LNeJo7D~7>@F4JxQl8TGpTkHc_LG)*gXev zQ?Cr8nm<^rw*-53+M@JfNZac3~Cp}ggNrHF0+jBLw2wB7lr-zxX!{%rMD1Q`w% z$OT|1(DmY~NM3LDV3N?S%(OOtp-5ZEGvia`V&&x>7c=$S`W_6P3cwk~v*+YXp1jjN zJD2TmsL^n(=PGL+u)Al^nvkxZ`N(~e)tL>!$Px_uPqj2kltq||#%*{Cy^;b7-0bEY zbPdV=8CaUOGc<}7QCRKn47Yb%jM3J(`S&GZ^6RPQ6^Qx5iowYF!kV0K^M$W7R`3CB z70UVUo}~C?QOV~nwwcocSFgC!k1wC4HV9yFd-=G4q^he2tF{$mYb{?7S7e^$AcDU> zN$AxZ(B{*WWSGn^$VH^Ox=EX$4lIIf*7<;5O=Wb7Rx*(OdNYsVgp*^w-W`;-JCDsL-~b`Nsu@4+r<+?;6@554bwi;HtBOxlKg*YJ6+f+-sJyk3PgF-jdcsD7+s zf7G4)^?yvE%XJ|#i0Oi>W*G{*Zn|ELKNrI7 z?OoM-ay<;kmjUSugpvr!sarP3Q+CGaMax{%=~BzGc3uNZjD?)_%wOEu<(PA^@p>0^tWREiaCTuTIL8!Z9SzmzFN1K8d3hts`MPY3xn;o=rh7_sJb-5+RnL{eZ+7szEGb zHJd{JNC>TQlKrA_Xr`_wk#FhI16hUbIXuzR_xLP@o*+vZ#ez+90);jquB(F~b0KHkaOepb;|3xAIYE zSKd@c z;jxtL0j_gh)Cod>&eUA2Vt(NuqrTv0UeG5KJqt~(?7RZ~vqiiClK!-f2@XSG%W1Cu z0T6ee8sO}lY=@-0lgtiv5H_hGv(or-R#dBQXOwt1^@w&>?zus=wY>}dQQJcHCZI9& zi8?s^RwUM(7k4OXcBt5IH@54g8!iZLkND7Yx!!~R-;Slj)&vFk(64`>$wEltosp9h zBE3qQM&&nupvu|V+k4MPgRV+0mqZn=yV}S?swKPgK3q~|K+-=@?`Kx4@m}3x2!(ej zQ5lM_TgrIY2niDSx1l2j3~4#UY>l@-rujy3U#oTHTy^khlvg?}#9P4-XFj?%)%HE( zKr)l%1tCYDZdkI{SkDTqE>-1{>d>FWyv4qG6uAB#UlT(gx4G@kN-adJkP_R$&B^a1W5Ah3Pj+f5meYdogOKxNg_4UxtM^>f zxSotO1!?G$w#+AE9d8&q8^k%?obXsfuQxgc z+}(Sl`gCj0!o&n5$=TnUo25{Q8f7YrU`#yMhz&CfvRy(G%@kqg-UQt{d8jMnNf`_N zWkUc{G2_)r^dO}|zAQr_%=oC}%yx)!;=@}QWBsXi!}>|chw}!@IcV61aiK#ee@}CO z(4kophmqr33y_Owq#e@aX4v$sN$Bv}jmt9Eloui=DhOq(uW#WeIsMeIE&iIkim6VM zJ|+N2m*!^HeYZ?)CVGzAq^{Blx5eV`x^O~_K&7W2BVj^_+fhH_0`fv{c+J?g$^;%e z^nf+vnLf5Nv`>GwBtqX~9riIrK4@ZCESS@z3`PZ)#kCko5FBkgUjjx#AyN6*IIqGkR56^_)2Cyd@{iSbQ z?At3Cz!dSGo{N@wqI}kU++u~uXg6(sm!Z%Oj~8*Jxi1f29~wC7J=)tw_-4he0TDo; zCq*ue;%MYrqL^G`u>I{L@1*Xn(SWHX>}*!!;e{K|{n-mGvC4Zkb}KR2yZQ`mPeTg4~Po` zjul5nfN`mB&A?58v;1Y9CX* z&G6ZJ3`#uKvOZR9LGt{R$FG3WH37Jk2^;EC@Bl}XYoduKwIL5w&&_5E9B}70v;O4J zvx^99P(2haDF#v9#-iiu_5L(G^09z&0Fq;+*xkoNS(Cokx%qS6+Ldl*pY$RbzOJ0R zzmoHaEc5DBCNjb+Q^~R2EhU2XUxz#4yz8Z@3}%7d4sj6U$EkNkg-jR`>=GTAT@i{f zwJEM;?XWE=c@GlzRVH$^4s-W*vZ%kME8WZV4uA0oc(i574HB2Zti>--TnySHo6G!& z;KzaydOX|!b4aYh%Xy=eCz1=dzYGMA>e(;?zZX($+ca~!aoD)%_uk4qIxF->t>e!K zg||&BuDEaiaW%<+*1KX-OFE{UH#xez&kT0vE5ENahJ8E>`DC%nOd)IVQWhm!*?LfD zyIpHtyKGYu(9!MkV>HIGX~uUX3+PPhlCGbCIs^1B<}_1kf}7pxa?Y7Z-mqD&(ywfdVc!wk z{C-2MP;x|wxvd?nI_Dh8j_%u_J`-2WO|aomJ`Oj((8pFgv_p5Qzl_Gk-N1&QwSi&3 z&hDn$fx!F(#C1mxaB;nx-SZqiPX?p$2BeG*+XN52auZ&Lj489j zFs|u9f|JAa!y7Wh|6n>i%9UgtGrzX$9a>E|f=$R3Z9H&$@Hj{7w;PZ0FZT|P<^bee zSza{U;>_FBeV~Az9Z%||T79$-(+3=QOYG`&TgluRI<&W}p~tLk78q{FECmYLeOd7p z;@gr(&^mpF_;vjp)+_u`bG+D`m>^2>s`C?v1i}&VQIPOOvcZaF7_kc{7_HX@LRRZ= z7WB#f>3Ctc?tgIO`jZ8Rz(G39t&fd#hceoaA5;GjoEW{mQgvU5`+`8_p1lG&(BrPw;gmAeUU(6yL)Poe*Wp(K)x;U!t^UWeA*k&Elu2?oe(!e{~8*C zy@>t~Zatqifa^P7Lb1OhxlR2nc-GPyU)%`CvTKB2ZZO|yLYCLMI(Ax|xMv05(+PAr z0d1$2IeTAOYlU_~E#f2p$8@E;BAH}i=;^1m$3}s32k7fy^@a0ml4gU>C32G=L*fBB zkMWU%%x@quS!*>%no{OAAMyS`o|u;+SJ_s1SN1l zhS!H{N!VBRh^Y<>-&)0QBVc0xd~DuS$3+Q4wrr|Qak;LWqk({d{`nR|Ustu3LHJlx z^c^wM&Bd9M3gMm67VLk6*X)B(t401tM-`+*fItCXVlL`*&azozJB_g7bUYxwUx4MD z1uAt|=$h;+!Ags3Gt5TxWgnG%IovW@Gc1d_h+kNkv~A7sceQ!`Y1Fa&fUo(VqrQ8r zZ!|OYyGRY%y(gUpe;Dxb`+PGKTS$(?wsLj%$0!$3{5V=iagSEg(MXY=9-0dDUkX(( znpaOi)H1Yi&%_h)D4+RHul{>)Vj{K|tvVWsZ%}g@d8B*xXt}cNhE6hHr{=5)Q-zi^ zNXhfMoLX&RRZEKAJ|~O3+R8EMrEYEV`Kq)Rw8IYX-uD>ud+?V72cuP-1KHQH3aQ;1 zYm}|;Y>%ak0iIQH`#Hy4HiPVY@~NB#>UiH7*bmS_SMKBI#-W#5ZU=X?mv{L*ro28{ zzLy==+^$m(fiMD7@rQRoUg&M5eF>$c!{RTzDLIJ#aDhI(#{r%CpM2%5veK&AZ@?Nm{9^YWVOs8UMfJ;u6yC_Ah_bP?X=s3y`%&Uuq zww#~ZMzmLOLrPQY^mBDGq*j5qI~F~A30FrV{=BIQ6phgC)b&|flcJbZ@vShKjr1H#05(r@9*y-D28mT9z!1s?*#b? z|EJ5_wRZ8%NcqgXN6Wk(h{4L?72;NsDY6h1>+C~MXaLJDzcX*3cA6l@?~g4WJYr8t zh+1p;V=UIxD|e`7lPctoT>sT=2fla^pl5siaqwihZHv5ZEVOUAFetEZ6gvq;I~;>O z3PS?wKCoH+(A?w`0YQKE$Se?+nI`k1(pv_J^d&EqqOPHTyvZ`#Z~^R>7r8c@E^pw8 z-a!7kWyhcb>#qJ|B4B|K^!y#~yTW)>K-^(nf~}{nFpb6rswizUhD3aZd~N?dP8wF2 z`~xHwuHv3-t1v2vL+-Z)4X#zFGQ6f$x8`{DQ#4EM|4Ih{-)}ieWeF_!2{!V9NB(0B ze{PV(>Tw5-Q1|{rVo}a4*nvlddG&ux599rC0dJ8cP8+b*&7Zj6Dm^w=jL#*i{b(X8t)G~u9HSQVlj@xqe znE0)Zo4;7XaQm=T`+`n~J{7kn9JJ7=Z*PVI9aRvDC5_VFiPg@~C~QT}`rLhNtU<-? zT#k)Dwh4LK5vVTwue*!wpW$YPqJEbPLByckTz&NZLuZzvS9Kv*~GUDCfEB(WVym;gTb2T1Y9sI^%ij zVM5eoCRn*-R(-^Tw;PED3M@yMPLvt=lTC%o#Addtno@k4fxn4XCjKv&Ua948&Nk2i zlX(|YrE=(OU#6#XAtupT$=%Nwun*esq=V?5Ak7JnMS->~9f3(8Y>2m8vl10vo%Q`g zZRyjpp0{)zU=?DuEaoZWR5LD%yR_i%po`Au3*?~YRy75pb1Z@GXkJ^97 zXReWn^#7{>y^kqCN_TJRjzDKt7z?E8rMEc8E(XUsHc4=SpVUKs=x?&~(u-SI+^A9H zDwd*kTyVo_z3bjUEdxgTv{85bG}-^WEnq)#Y`k&IV1ePTTFTa^UL$S$w%L2tJkaAb zXA2lF$@P7$mYYFVx6~N3lW{}(5_Qsym2~1~t!}VLXLps5SnLiyv~jfo$q4NZm7yMW zYW>TvcHC8m#Fc$J&N6nTt2z2lEj2@oYX@!O4SMEweJ9qP&go!%u=+>@n8!H)mJ?Y) zBwwk`Z93IUF>U}LXJ^O@rqqTPWUxFv$-Q=n0UnL* zXFXW>p=*e1GMJs#Emqy^KKkvWP>E#O$T=<+&adQ&ZQxW|SymkW7MV7Swlhf98Wf+A z2a?_cX=J%cApn$Zys*NoLj}A??Ej-(bw`Vd;>~sD9`N5N?kE42ADMEBo_sFg7x1>ybj;3<9 zrMR0f>TZ(ttq9dYr4F^5;dB1P;|g2$dvK)y%JKoib%H(|&ffp&YAk@W?ZO1b)3Ntv zN%x}OJ2KlvVl#-q^q7;so~9R4xVvK})7 z8vO=n!lO;91~d)!tQ+L7xTq%tZdsY7u0k@obj%R*n|h2km(*&tDG3$a{%vPR^c;6p z+-_7@c`Di29uEu3cfG_DsUmTQ^NoL%V!1vTAz{B`vL-nfkqZ&jy$r`#Y&}rmesFkU zrj_4Wtf&d6D^~lf2Kvl~CMUe#DapTeDPcEEQbN9##*#gTU3cm(9d_kf#*YI+wS2yR z4&Kd*%5zdxEi=@M$~=gCgJ*9x>uhiA);f-h3)zL8rBd>3yZr&YHze~$rVgz3kElV7 zJ*uNsle!3BBux3mr7XZ3D*AAN0&vX{cX0fh<+j;PV%|QIs14~6CGw7KpSP|O!UD;J zNx{gu50LyLWBhnuEPN`_J^Id?D4%B21hFr@UA3b=F0s)7^w(W*t7R9sOqQT<_{)0g z^sZ!mF>BB;uaNA`v#yrw;=JaYIaSF0?M1Y|akB;(1c*3Wlt*%+c{&*S_!~LNHOMg#Tn1%_4vEOWo3sZ(nnT!Aa)eze!70U4Bus#hc4PswFYCWSXa z-KWDDD3R$*)vZ0tG*6&Ln=Q=Ln9pUpkeM#}X+>s_;Pi+I=V#($#Wi{vBx}_UgHoDTM$>@YXzbuFB z@BFx~jMeu)>GScaT{Uzi1z7k;Ip!MSu_-4Bv;4CKflofCJ7FY}PkroTUGryVo|3+C z@)`R~&-}F}xK$*(fC>_nC3G6xyD6I5#jggPwMt~BpjSVgdUY}m?2c1s zy2T*4eOa-4YVpkqU9oPp+0lq1;i7_?mg>Vtc1W3&-OZ20xTffw5}sP@p7%Vc&3aA8 zUuE=BdyrSk&md#L#_ph`GvG3RZRfR~jr(5)M~M2i$I5QDX3=i}F|^hWb648Pg;TjN znj1S6j^;-%-7+nDG!oJ{U_sc*o*8!fW6)-Yr@`F&hxYodnj%+wSuSX5Zt*$B-!*ee zHa?&@G}2ce#@iZ2=p@8j_Me8Gw^4E&ff=wsceX5{R`Z|>VlVWc8-52V!d1~_+>fiF!LW7RvBT~VsVgKZ~)L{wg0-jtcj+0 zUf#27tnIj-3G8VG#EM#mW^A^yL@x}vk}Soz*?_rq(X7CtR@hRw!^#&5C8l(INkf~*|!GwjVx$Yh8iYI>?w;2d_Whv`Evk~0O|x~ z8XC&3?b;amB_$d*CS4K^l0M2CGo=|p49t-@&x{)0o6gmHlL_O7wscguPAU7-=F? zt|2_H5pSK)`qPo}#oniTW-%^8fQ4U{AD5j!8d@3)R~1|;Fp`M>$xIZi)#~0z2)KLr zuWHX4fB61qrknHyS(!)2Wm?8f#?5=lLvafv@b1R1)Rk1PvHHo|OWpZzdKMT%&Qtk2 zQw4Y*lN%XAs7+562m<%-kn6yZw@gJe&Qb=Z;46d~57DyRR70)2kFS6$Wt}d5SaJPW zW?VC%^KrXN;O-3C-5|YaZsuA`lS0IIx!s`B`=5L|O-Wul5@xCKjuiMy+(g!0UG_0X z$F*or`l*M)uG*w}Gd7If217g$m;RMvDnywvpcgCtO!0Nq_&q@^L}ZhZp7)(tId;3d zMsjb>F5Q#8ZdpO{>CMTo<-4(l@sx{k?2Dh~Kh6y9Kk$$~yt)-d#){_R3Ue@RD9&E` z8pAW~(f2pwAuM^oeT&f$J#iHxKJauwAKch(aTVoMl&sD58Oa8<>59Pa2ba3|4av|G zK!b|wHzY1Juk9T(^f((0B7tcFX_msY@mi1P;+_9v>MHd62{jW%N9al7O6@1QXRc;b{C!}!LlyQZ_1;nN7`>;n?VjQQszegZ$yFDHG|!QspBKRWLJH9V`OlSlC<7e|f5{o9|y8>wr~u zELKz9@~Oih)cEL%wkrB)UEh8E;LIejtI)H{CDFq+StJ~?We)|Sde@iZkXb3~&af|A z_q+FA>j&d5VT`a$s(&_N%W9Hivus6lmzR1ar~L2*CN+zE_#s;dk3KjENVXZX%hKdl z>OOlr@0TFzwAr$(F{(8x^#&x$hv-W664mOW_Ik}c&sSV->Mamgufj9hEW|RqKn8sv zgZEXuuIlf7FW>($LDo?{67fX8r~A##dUvE&-${gwzx<%r&Ja9Q4B=bLrEdq7vKkYP z6n9+zZtgcXDA6_?xX!&EF!o;ZVhJh!91}VU+C}zxe)w^#vXh}ndEMdt+~H~`<;THl zqSCQusDv=qgJq{PVtPs9hGuTtQU+5AkId_VoNk%p zS2R0KZ<#!E-(HV!zoH42(C9x0{AJ#}e>Eu}W%8cQ0QK9ib?>nN?A^z%60;y6FyG~( zD3ucXOwv#VpQ7gWvRvf%_q)V^5jjYsl8b0|CmC26P~|Z$fj~$OzKkYc-9y= z;dl)Rm^4D*S$A9~nu#sJy4rw+FLMl?od$ zgI@Laf=`bR?{JQPtKt&)HI_~;6pBy+nz(;>#?%v5#7mE<&dF7COs0_La!m2KgCJM@#p zO|bFR_Y##n)mr$moF~x}#>Ihq8)iE~L8?gaaq#%#yfL@ojwtyEO;eH|f2iD7SxZ$0 zpJ2)I1nXAo3odha)9gm_&upHrXqbFxxKejbF&(PmW!BZ|=TIm%t&nk337lnTZ8HGB za4SXf=0G4_=|$h&_}RmpI?_w~Vl|B!OKgoWCTQ0{=)y;lVr$np3)U~p@uWRQsAYm9 zjIHUNb`jzeGT-;v?8!>i28?==?Op9P)lc~Xuw=a&m*SnYHPQkcl>mqsp@Q_G->!#P zI3Q60pw=Q*^ejkvqrsY=j{ES*gSS>i3j8Rw50r$5`kSJS zht<8OSC&cVUiljZEa7c2Kzn-jtvS87PLUi{4hfsDu9hgA)OpU<|DH$)?Zf@k8y7=? z~IvQe;wjHQ=)_L2F0@OGU-OqA*oop1eJ><1&(-rz_GAWdCiB+krJ zQ{R9~n%FK89U4T`f8b0#widNU>?*28gQ=)B~ z_cd*8l(+PW42UV^O+tRTP5!&@_+M+aL=_3IZmN!4c`{M)&qeP>=7@sa&JX^4Q#BAG^jX|?yt6AZ_L4!!M(bOC!4yfS%C2ChI2{V? zzX4suU92}IXWK;FYb?!^R<;mnbXzb<7G+D!_dQ#6f_F2ZRCgU03oqOY;l+=hWS(PA z$!RR#n7LV_v=&MV0AM@Kt}4Fr%_&Oi>@DSsy#8yFS>FFFA=QPDBADh+QLkpb+55Xb z@-Sq)qu0nj_A^VTJjGpf3U*m0_yXkeJvr5ReVdNvNl%_JY{_KO_ZBVmXtC1miLmWh z1b^CRDUXr$phld@Gk==LC--RZG!xqT@OHp_h?!Bc`Z4f+9~a}Dy^@@i2B^|VF-h>Z zW>{I>mBbHgdWgc@Q&VrEs$MH#-Dydsd{gv_2?`#Ymbo!)5r=cQ^!1}|(ka#V#&i8u z&Ih$`4h|=AhgCOEs%KwBf+J%g!QU<8jQrx?dhn0iT13oSg>Jvof+R`CDX!}HRPBtk z!X%>_RIgNB8hu->kRZ|VAq|h@t?I6D^ncben29tjtQc!8c_i&@DyN*jLT`1geLHzo zCuSMvomF-TaHJ2%LQtf(~*hN&3Ne<&dkP6Q>FA>15u!WWwTgG$CDoj2ofpw z&hWoO8GX2goyihNdc)8x!sZT@0a-D#gP&vk<9=-)%e-i$Lq7rEveX?z<6k$q45jD1 zN}^eGrZ0U?)6y{f0>>O5S4fC=xQmv#cjiCIx>og1M&gHQh8%`Yr21MS&Bn$<(lgBE z;cLg6YUXlz^3fN4=}Lp3Vv|1Kr_KZN3$kLbW4Zw6CO(FJ6=2q$XcFt_5tb<+_0FX) zoByGRO6JtPbT;_9l6*EaQ)os*EKx4DXW=WD%#-sp4nSKF@vka+5VI5)j9G?wN-Xn3 zoB5h|Gf0COJ>wvYLNhb>nLEaXX8L)bwQ{*@S(^cV43eO%XQMZpftN{LTgF79LL$2Q z*~E%j`%}_jza*F?NqM1#j-RAR8fLA@Mc9va=lJ!zzPLz#Evag-|H)twNEOrLC29^d zk$nP0+^kmX-wYZO$A1Ek*Gg|2pKua@vX3%1}*3hLYw(D3>`^J{Ic4;Ih`QasXjSm&pFoe zTkKotXX()S7kS&Ww)ZSv6Z>o=^L|pU|0sWQBvSl4{6yjolM46VbL2)ZAt>dc^!UJB zpBwQ>l$=BJXCMh-dP7z~H%a@866U43&uId*HO=0cl<-bzE2BYz?lX(Qm0lZ^!#-jj zp*V2rLG4WK%d)M=Xq&n7ub*+WPaLPRUErW}8TOi;+B(wXY=jEp3Y?>>25UBOy=+nynC_5@5ee`lNlNQSza znD69M4i+YKm(7qZ7&M^#X7rQ0gwpmAZ2*5Z8WwlQo9mSCqq1Bh)cUYUeD#T~kU$R2 z(p=nHR5OamnIn9X4+Dhilm#y? z_%27akxx8Byi9@8R@MDOF-1_Q3=2TuQU5-Scm^N7Bz2 zceZ7lwFu9ss24K-WPw}HjUp=~GTv_nO~o0SHTi2yY>Mgwk&ll{?l<1Fub_^6`lL}O zUUH%pZiyH={vXq|K#G)ijn<=WL*D;^75JbliBzTmHF*BzE^hk#R9V!_X-aZ4Rq|W5+V}teC74*u5o_8Yu_4 zml_9E$!|?(zzt9zi^wR81PH9jwC1uao%i}tMNZvTjquo_iODW-%XV>LrFK1Nx;(!` zSGYj+#6^L_R`j8Ny;O!2Avddnb386P#YZDl8nD{;-_Q{v#u_4Huq`>Qc;)a0PfbEh zi-s=egLx(5)&Q$^uO|1VjbA&WF7h%BNRAdw&=-vvbU!OiYISw;IXvhZ160+eS!ZfX zkNKB82Q~Qmy-(xYpLo|x_-`B4sK0$IkMz)yJr@r1>#|u^dMpK2W*g@mj>Hs78WFq9 zKtjDreecM^5&%bSRXWN0RMrc{Lk_AaFX%BeI4t-*u__Z2a+bc$qH$rv?sDdmMZ;@C zq^O2#9UP1=>!I-ZmZ6N*?e6SqI9^Lee6`>M4TPHvLRm zHYvKHqQWZKa?%Z$<+vKR#ozCmh_F-5t$Yh{aC6o=O0t&}U-Cy<$UrXuPS&@n`X3WZ zGPieGu8!JT3v*mtOGq{{w$2S!=(FgyEO~ID(REc*;(ef_OVR^T%t`>cF21%_m99f5 z^lcEE4|HFfVov6Y;bjcll+)B2uHa8Pe09ntK+_+_iopuwo1n{SQW<}`7?Ic7zpR|6 zstXT_IjM1_%LEn877Yj0`kXGqq^`R}d%{xP;*@1_!{>=l;bv==>5E|d!?0^TQbAo8 zgbH;WukT*C%-Y?-YN#ZI?)eRxA_3G<6j8noSi*8oESH8Ke_c~b8M0khPp&D1M{bU} zTK$|f=D__50sSU{*&Y!=QUxA-f04S9N9E72&*VIQXMV|+yPI^6_2=uKS|<=8&h9n` z8h_oEgG<@7>?!tBv^Z+~JP+xsu%(HyXwnEPeY=T&)B&AHyCPc~#% zy%vh&iJJIAS*HX9s;4v!jN_2jkN9#uN=ql{v!6=WR6 z8n5L@=A_|a=P<8BEJ=DJrzvVdXF~qI4C;jc!>jA*KYqlm)T`Y+l*9hrnJ*w}S-rGM zuxz`hAjiuKT}|=S4+?i*Y**Eu(IRxEjf2A6sR_m-l*bt%zm#P?2 z?EqwCkJ3Be;J6%n7YS5|%%PmKX7Gd|ew!BWs!VsT=1t1TIwfUy*1d>SaBjZ46*Z5w zi%O4$xNtprp!;t;~u_atch7~Q!6tba9M}Vc)fh?@g=mGK>^#hpw@kr9{%?5ab$wzRN({9+YM@G zVfbm9@zVQ{c;FrC`Bx_p|vdNlN<@kdZH zrLCwUf70Mxb^hYk6h9^7B24OAo6QvX&tLm}mg%98?9s=X5eAEq4A5(hPT1I{-C{(TkE6Uq@zVc?Xzx!sCv$KmnD2SzTIUV2nx@z#^ z%U{WMB%A+(93!;jjwX^&X|wCaqTHPHrOLf!Q}l4Lu$SPkO$oh@q#LGY#<+Dr zB%K)(IYDu_oH;~uCD?beQhQuN198@^>p6l40ikBK+)|QgiohQPWjN=JE^KG2~ojNyjvQ8 z_b>r5KvYph;ToH&tA(w4Xg)bUI7i8t8Si-p5viE#v%j7^Qk)#Uo^s0dd;ZwxPO5Ms zSpjxH1k5qajL3}UpWaKab3PlwVbFU|*u++2H3rPr_X+9Qo zG*}N63}s_&R+z@c*1nG$+T7l~`cU&%$i!S3HwbkZJ<_uIKKXmq#7KS7PFDSzG36Y( zskY5EL#t&Uj0YU6iI;(^mG0NOTuM}LHV?SnC-|nZjGslQFzCRL)Ay2D$p*#nnrnTN z>!#Yx#0f(7_r7j!X52dQE~+N^Ybv&8$}4pR3BWV*X-1NIDgrhCCBJU{ROi+ynVCK0 zW-ZUoZQK2w-H)Zx#9`%C2=33p{zYMp=iWxEkAF07*wfj1#mB-16PK>(Pk-uMIcUkb zY2kM%Mw#ANcJmwkr#ts+^<0Q#h)94!b(5Zpqsh5lf}3NY%D6otN<~ivJz*{6J(jLTalqE3Sw6_>q7R zJjt%igK;GLJLP>Q3P)!ihjzSqWWpfojh$NOCn`Pp{+RGB3{%DPdaX*tSzveYY1}df z=&l@B*5~K%NR?UcGKCzK4vV{PUZMJmy4ihj0|I{Cp>>m*6Vwh(ps3l#Eu3+$*1-fF zHu}?A$k0ZI?E=5)vZV)^&*dtcwpN|eEq6#udJ#tpAam4Uge!Jm{CU@WH35B6EgvS? zUl7mN#Pamshu4P|1aDCKxdfD+bZW?rmj+vZ|4o=-dA0*gbJWcgLOd6q7O}u2{H?t z(oY3i=MgDh>xT54C7e|ikeTbKT!^Q@xz8(v$aDUNQwmO7l*i}iq^0nNZ}XF`Alfu|C-l4!W{bN5#UPlw&Hpfi*5`kToF%QJS$Ps-eI<>h;ET(^eSeJt~8Zhf5%FqU9I*loBjwiZlN^_cY)# z@QSF$T?%qlZ#kWzd|9D^FZq}E9N0e=hgB3_M?YZZh2Cq4TiZeFgJyA3cI0g)uR?cy z7J~qM`l+THrE|WxI68kzABS*&vMaC4?+^BCBF01iTkP>O))6cSE?a!fK;3riK^?*4)+_6 zPnDkaT3r7?18p#d>`>qDb7OB-lM}R0%WiKE6#LN6CaOV?diRJPD!XZqdIo_6zy9L2 zPDwzn((fp~-4E|;t{eGnnb00B?B25}+MyK0+1%g1xxnuqPd!>5g zy3T<(W4uJLaN~Myu!SFgZf5{Z^*ELMbOL6d-@=u`&OD6HMQ&MyBW{WVl^n{K-9O8) zEL40B_SYMl^BJ8XcJx7tEbD%A=ouyak0}=dU66uE$u6K2tnC127>B*W`<*TdmqZ27 zP35}YMfyELnv70YImFX`t=eFZiOyBh|N0~Q>*z{pO4kBN%K-p6Sww$ zWfOMynQ7yyw9q-sa&93=#PGiypHao)KJkNH`vZ!N?6chgTe8H+`NIoBq2rUvdFtFH zhsv4B!A>gr4!x0I{1Y_nV6!%2+nZ7d5&za)Gt;Rc%1L2U;FicYQ)9rzl$f%W&xYjko=acAwLfZHx83 zsB801DybnoDZZS-JwXo}2Xi2p$P^l`H+gz$_2)mosX|sbjla6_7(C4MNORNdz<`I$ zOuDrR5+S>9=lREH*+!U$GHOenPs;nt=Op{u-T3`l2ZDNeiE<)YeJhploDZcpTM~sD z$Os#A2S)$ zF6G*zjdSsH=Q_n9sI1z0rNq{Iiu#;AK(`H9&_I}~$4=gWQ{-J3-tVdWigAFvl!L1H#hd?Hz-!=j-I;}OOda<&r)dF4i zXsz(b;75x+%k$0m8wGe(yHq)Q?DJ3XM0aPyKU8wmP`Zl{*ICsFq4kxh2|Nkd8HPyr z4Z<}*W-$1Shl~L5BNzDV0RB4nQIx%2_zzLs(dy-j+rN0_(sG&=hRaj_vWKf)I3z}% z=h{B^;rOWHj_)MolUa*kF8B{P<)x*j8q_cAa`uc47jmsgYiH>zXlH>->Ti46w(Qe@wz^fgHTnwNxJgA+*5l2!a9#^^vQk5x6_rdu? zUeTE^5icNT_-RY`1D~Q?&Gc)*^_3)8ix?x7 zQ40o)z@)Wt>j6F;?~<~4m)kOrK|A2On>VU|fQNLaP928!6ZW!-(rszIR;B~_So8|% z=~g(7l6V#nL*;HJi;dUVlul5M+$X2SjFLr@`M0{PKWQ=}ZE`>SIPdYPvSLcNuFNE_j^z=iZk93z!yd7!2uyZOf=9GPlyAN3$8eQuWs-$l=0fijC2uUt}q@`CnK8tWmWw|@?tuc zpi3e=SlNmM`$5Z!L%Hr3%5dp-h;17@c_mxZ38EN#iA}Kw>dcaw293eN#rwZl7q|0| zjJ$EhODKMBz4)i%H=N+R#DuDqR{XExFhY$>1DiS6bd$TAk>!3a zA8uNeZ3|7sMY-|)tp8M{QmX@2zP-mT7X@CocVhA6yleP&)bqB_P6z6d^C~g!!1q4I z={hxT?HaHYx#-%|qm@3&$b!u+TQIc{HD6)vm&sNbpnELgb$_CL-Y`ijaPfk!Y$$4G z(`)yipNP(B(cQs=zKF(cRipH>^SRJ8j+8+05k`G;Q)gG`_ZWgD+Rt=Xf#uP2>A?Xr zkm%sftH0ZA&Q4=^zu|NRvZ816vt`lvdwOgsJj}HJS+*RP7&B|r%Coc=?qAXG$Or?D zw<$ktWH{(zqW9rw%d82D5ESVZQkS~qDH;pad^JML)sHtpEK)e}-E(-G1qIg)Xb$#U z?y~Fgm&ZO!RuX!@%G^}QV-~z*sdyic43#Oq_ou*tF=VyWwRa;@2`KXLtx%9OsTn#+ znfMa=ZrAt-eWf3eW9^4YZ_PTj-ak#*)Ob@gB761S(m_N_xgIN|sq{Z8o(emLl;@dp zO`0zN2%Y<7aK+6eBzDUN5;E0R8|Xh=>BO6G(BI)qDzoYP+N=x{(in=cU(G)XlJdDX zaLsT5RPllhmurr(EfUKUQ17kQAue{jh7a=_%l(haw$Y_M-DN(6H{i&~7Q3l`7+1`j zmSW_|4ydcW9U^dU3_tH=exXfC(}vh@l}omJO)j>*M)KT@?WSbmwgY55U1Kh`WV%f= zWIws#qX}fKXUN_|uIbNW)25t*_y3R%=Va!mV5+^j5WbdKPoisR79mIPgq>Yp4>!q@ zjbKK^ktB?_%LpYvtho2#FlXdE)rc-CxNNF9r>1sb9WXQgZar*??liI5{fa@5or7&M z!kkfRxw?$u&LM5m3j4VxHwZ}0*looAVtWkUV;s-+(vTAQ8f^g654 z%#381Ask5cf^tyzm@#&#F@hc}BmuR6?@|wk>e^!!oi}c+To_SHK^8cbjN(sI3?(MkW%X*lqP_MA4wireh49itB2~CZUldV(1ED@_adT zNk5ocI?g=TSHedB<1t2(J_&YQq0_?W&9tk^e;$vvtpp1426YnP;YooT)^)Ra(UGNw zLwz!(e9reYmB@-MN;9#}$4DGzpclz_(8itWpx>*QbvP0JF->5Y<2aYPGvBn3ERo^ewln7fs0FH zVHu`;(BBo{&hQgC+Q(BV+LukWq`SQ1YwT)ctNg`V&-|z2%#3pS<7y>NoNi{K6=pmT z7N?5B`mH*rLOBbN7a*@BYtzFlF)Gu`Hvxn>4daptiSA-(1#!XrNQ9Eko#;^Sp2esl z*hREHju{|-mEHnp0KZ*u2v3Ves0_+35)eDD*h{?xd9Q#+lL=1MM#tpv3+$=s*yCZe zZ#b~Hp(a^uCG$+C)3%xDv-MJRFpxk(&5wV)u71L;-3!xVT{UB)ZDH9k3d+_aDt_BO z5KT!Ix7D)4dvyYOn2l&bUyf`nA%nlAy)`*RA=!|xgd+l4-bpb@KxT2_j|^BKcP(U> z7B*2_FcBTIU;5#6D!f=D`_O`H!OyiVHty zH!8{YdmCYQ`!5PIy(liOIK$Wf;X1b#Xp3u41}cf6RsF5$b#WauKVXiTseh#D8T@Z^ z)e3O86<9p8nM5g(=`MRh%c55EaN)w+#6-7lIhKB-?_b%<_T0wJT5e}!HWPko%a~gA z#N2N~1Jmh9-fUcw5@kKb_- z;=W6DtT^$>l$EEn7*SHeJI8F@y7)9Gg(9cD+Ou624_YVhVB<308*xc*9Z7yq#5w zukjC5+mwAJ!#zndqkKO0DPXr;9WG&CG9N9wR7nGmXONP*%{T`;F`lkX@dNUNa@5jS z_Zed^{z~IYL(lV`EBF-(8HHP9i|&6NY*^?17-{N%1>2pm--O<7its_$b{o41@f%^c z+D-c_|NOUlt?8B+jwm3E_`5%k;&2fN=j*h#8F4vk;9ZjU9 zRrN#5r8090fl!_yx1h$S(R>K)eDm!f`;Ki8PYIEaxI3u!xr5yXz)vLf)oAPbAjUDa z5@j}7u6&UF=IRclv4dwr*gyLtHVv4@4Tnt+-jz$^&+g*ZY~279Sx2Ff!_|Mayz5Fo zp37C+jdo;!ro&3(m$XE|r+)^o48Z;OS7QK5QIOk|VB!JDUohfjTO2%M$vQnGX&xG3f_D@#1aE1`m@*C+B4bD_wC`M2_ ztM@%dJ)WWU?~M6$EC4x+V{h0aV7)HsFTSyPIcQfG6{LPVZ*U!=>)U+)sxB3A67;mH zeZofn!5vNsfwCRjupbANeIEM?=u_B&Y!FuNL*c#XEb0spnK11i9MN~LqSBdJyPCPt zeX44~l0U#GslFt&*~#*&y(8nqa$$bOB>47?FMG3q8RPAWX+YDyU88k zO~Hz+1*rj3BUa4ya5|rZ}YQ< z=#A3_uw^9HrtUiE`0IJz7y)Hs{9jn# zp0U41@_BAr*kohke&mnR|Ccp6vdrvRQkwH8^hMiDBW5F7f^~3A)lTn^?iZ|bVoiws ziI_ZJEXlJ?ZUm;O(g(DHxuw3MRAfD{U)_`R(@7*Yb2caa?vJk|%<&9uOWN1zthoFJ zdc#y$b2KzQm6pepl|pC7x2pXI4y}`(`EE6alyv++bJ)LOR`Eiuc3eP&v^rw{Y%ZpM zK*8qyli9D`0Ic7iCxRY3X99ej>|RF|Bf(bzN_2=5`3^6;rls1NBJtlWgp^v!)3-p& zo~?;?wb$lAx%{zBz0VCNAKLsinS2heKcZ+Y2c56_wl?~yKU~|MF7jn~UON$5S#9<{ zEOLI5?ew3*YPnWQ(doB|^oo%b^LsjBC%GN4)uo>IZ=-oWjv`3dRJ09aBFmvwTtLeI zr~nwtoq&6pf9EcOiXpi_wG_kJcEaQB=4r%DB+aWM$fCsu!z1sLmKpC{>kTseP;2%Y z%D;5rnOjviTc=e}DU+8jl8!FCU~IJ66_8X$ky zzB>Kp_TUsGq|?>hG1Z7)&>U|Vl6taFYk9(;(ZsrxGSedHsV`PGc@LeQ0}(b$sSXm_ zMx@wA{osPF%CXjK-;O+Hr3lD=PbR>AfRIHYem*Q1tkrPrc9Q(nBhmO zGRMB?gp@;PtzD^kx$d=$t!jT4(UnoJ8Qk6CcO> zFXf2rU$}y+m8L|C)z)rWji2Ic8ZC2L3#WTjAt#?UEvzcdP$qCV{0k$Ij1PUz^fvP_ zh=v4QDx20f95y(E+PV%9QNeS`>-SCg5}73r;r$)(?@qJt3{2sz(aZd_o9ejL_W1t5 z30MSYrV#x)AacHBMEEoAa~eOS-Rq@l-B zqNf`L`3ddjJ!27==Xg199zBK}%d&GSmTuxz?dTN6w#$m#P?2-PJ3+L?QsmwWwEeM|m%j#|{V^cg2M)g-rg%1si{zh+jD z>TLg`qf&k>{Z1CgWZF6bCa7bu>_w%3#SBBQr!D1@JLy_<7AL^U47%De@x>N*qHRX} za2ICMyDFaNIS+kqn~5>|9g|5B4dj>>Qqt{g%2w8LSu_va~%cNC(i^K5}W zvNU?)6qhoJ!EY#xFmPCOc*Ph!)wf&J$Cc2=fwm1+M~D=H_OA}{O=m@zP<$TFTER)zSIPmpV#qXJ=2t*#oXs*i82dW zEkxSsFOXncRD9a4aq7tm+hb2HyVTAD^$&~gGda%v*5bHjBY22 zR^_mJuqbPF?t6;VbQoKo!CjVr409K5%h?ruKX(sP$^(5g4XClgd{D&sptc9_00Uf z+G0)V)(j(QkF>XVRIRvqrLDz{xXanxYyV3G$>eC0fLTn2WjfyjonRU~*PKBD1vB&$ zVIMZXu%rPmffVMr{3z^HA`{~qh=xdw8o0@21P7IgE~s4XO&f+~gyxu?VYKvt_Z{BA zZ|zwhd=(BnJg@C_i2j4KXw=r6aW(15wAEJrQ{f?K!AaZ&Rv0fW$j^7E>yC=#C#`!7 z{EOs~!T3P7e}{ZLW9r*-MCMKh4(cuuz7i|={IPC;kfMnbh12k4A*yt0wko&VV$D(j zGC@QJ=R7xUGNgcy&A1l5D8HxOe;!)Ag@zyOGv0hwz}!(uaryKf{H=V_#5j z;8ZC)^fY!ZOY}Z`yjr@F=N^cMAbj(MGjI70&SWw^Z9Rcf(Iay`9-~@&(0AkS@E}+C z-m}#JzD~$Qig5Gchs>4pHr4F69Ybxz=N=Ml@g7!?4x}hL~S0PS}vKg=_RKbG&GB^(ej;vh$AOYo{FUx0< z;H5XRsGCW?*9x93J9FQ9{+3cVGsq}U^LXx<^*pUnmuCG~xl)ZTQkbWCL`x!)GS5F4+}V+}~~FAU1W{gfK)70$4ENs+aj ziG5R3B9HO@enaS;#NM8%o#CSSar^I4H&&vdp_wKh zsc1b_a|<`awOmrLNVV|2TE?57EYsXU{2((a{tWkM%c72S#LwP}9aJ1F)P>h2Oo*Sy z4stiD7JGNon`1C}c$0=8skZO6^yo4k5jo7HGOVhe>Q3!E)jFov83S8=*HQFxy$KTH zkSi>!ej1=yr@F5&nSl0LFGna^8D^U&8{Z!_fAwPNXgLZvY$${PYS&O%+>73fxNhJt`0WPK}fz9|3vi|^=H>(+5Y^4JZ%yZuJc*q za`%)23_ONEN-?Zwg)Y=By{!s3&DeiwnXqU9(Xntfd}q-jV{6)jXSbD@`VGRLA6h#W z^jPy|kzO2Ve;ebGfmcjwwApSgV71Ahw$U!gNF#vxF=+jM3PeuRL@k~qh4z3GL;IxXDIwfTLrt6hK(phbthL<5 zN-C{l*Hv6d6wR(pAmyQ|2gyuPjBCD;rBDb?s^k5u_czg68dOc1z#IWkrN3ODH-88{ zi92X<0r^iRTWARgIM#QwtPH@oDd0eTAvZss#17EX#a`IVOEPL`mP~CZTHdbezJBij%L>lPDsk`8u$E%fO~zco0$c z_+ctYnb89+F*bB}%LY6+e?{+=qi-7}N97XqD7&`o5yPYJgTJeOC>rbMSWivViW0-W zfhfF`*yd)MD0X$Sb!6Ndc*CN(@CZXY4=T$>Jod+{S%P^9%E{1~EG78io9obpWcn>`HlIIIO_5{P*XVJGIVqybJUkCbh zNOwoE+wA|G(%D{HcC!e9@kw^{n6mjNPr}9xcs_Snzf~908fq*BX0)Fwa_N%3a?jne zQbdK$K8J4|s9JP0OYIr5S$dCr9kW`1w>wzECFMc9QzuSTm0NN1Rcj+v&Icr?Mb=B* z`vZOQZm7x`>ehmH z)n-LX2?`VWyiP}t@Sf~^29VMeQy-((l`YFeMaPyE8DP595_sAMbvK7Zg30`V}bks`L&s8Q`RiIFr! z?ei~e)jBdJvLTpMBW0RpDTY)(AN#vXXXU6H&c6q%pK=UJ;rWKLLs`GQuL}gwJVKUx z4o%E0NBT>6B#z$P_iR7t(sX=XxHq+T7q2XcO}Mv(Et@IhvD>Ercjvs8>_ zXo>$5g@8QI`=jzH;NLzy5dkK+br+Okp5dsMp=)q16hCa#H6xc-j_vw=J}(T}sHUzuh1ixhOboLdPsb9v})A!>2l z^8Pe@AkrR93DU?{(BJZEe)V4t(h#>6z*pXF`FA$-sXOA0btJ|JoFLUqosfsz#9%Ak zYCcY-wWiKxIj-AZaF_~iOBx8^1Hp{jYw;Ty_0IpJa#Mfwox~VY@r=7`M4a)kbg~1m zd%$Ho^c8K8&z9|&?lkz=70=u6yXY6URVo$&)^$>lTyK_ecR}fF0UlXqP?fC-5KAGf zk(h@9yu|AK8y~hD+7etpo&>G9!=R+hYm-V} zReS;myoJQp=5qB(4?gaGoVxB|j2_L)=8^dd278V)g8KFiKuz^OwO`vd-XC&yaRuF= zgUK8^Fa*qH)xKH#MGJg^}E7#r^ltFs9h%J*!%_TRKxBB^+{J9Vgu<{vl9pTF6$1Q%66txIIgL?Nz@ zOKFS0*59wW_gj8+fSRlL_TvHw+oiWCS+gOZ0G6T2{#vy!K{e}nmX7ry#pYpOoF{c! zibc;9wukU?!TXkR--Ae!;lULdm9=-OZOIAz8`7AGEzkEI*%^pj*9enIc4ZVS*qko4 zcGwM%G}7;|ST(|6To)xJ2UNW-Ok#@}8tZ~kv@%=0LW+gkX`1Cl7Y|&Af7G|6U>#rd zDUW_jX4xJUW_#iQ!k{yv5 zrn#`d zLya-mozfzlVUA`2G3L`;Lm7w%uv+v|DnBfTk`ma&LCc!?WkBdd-3OsA^K7{YiqS{Y zg%d&>Ha+Dr$}cZ_II|AdZ&IQr){0ujs|)rYB-l)Po}crI!xWdtTz(qj~P5g z3P<|?gRSGZs!$_32%?*(WK0GReT_~d&@LCMK-VIla1(?-<0v%bu|cPAB-C zIB0GO6OuDsX8_LB?3+Sg>i)+XQkXNmDq$UGYnAT(Yg1E_z3XpV5`W|SQRc*h4)Zru z1Pfzm8Y-r@#f~Vk{QVi+mndH`l2C~uDO^q)dBB>ze0*e^HvaH1zr5q151HBJ74RK( z5TN`CAw0`Nm-H%YOx2JnZ~jxLdSdk0`A4mdVPi+3yxnKnb*orjlw^<(^+b+hy=D07 zt>-z81x1G!ISu6RPSnuYqJ$Q90Rk|Rm=H2H8@LaMJL+!O!I{Spbq7Y%vO^y#|Bnj) zES>$^;V`%ML0rK7NP}>QLI5Y`&@A|^$Vd=9T$tshrgF>5#dK+-yof5baXDXO=N62Pw z4C&Q>1-SlM7J*&HIWI_hT632vd~IP~ z|69tX3_HtfeQNHEoCR7>H$Fye&7JI1cBzLD# ztW*_7U8C6a8M%NmyKWM39rdYkeL9tBGKOF{5{QWMaAV`WpNFjE59=6G@%lSGv(tQ2 z>;nLu+Ockt5V1`?`0os_`^4c3XsZ~Z$w1WJ_VebC8%Z4dc%;q#ZoPR383*+}#SO9- z3#zzEdP(89!Q|f+d=VOp>dpTlw+oF@zSnHcWHGI|^IV9a;yWjPpHHk~x^17ehxGB-E>-kvMM+6_23>i@GR zp;#>?#k$c>p-*TSwzi z_ZG)mr>TZSGUeB>ogVX!>P;bk_mKX~=&WJ>EivdH?Kjp;{V>c}jF>vZbd-s3<3ovA zF>~n*C*jQ%HeOfuFKa9$YhHvpF!x_$lzW-c>yeGmM-MEv6b=dusLNlO|K@L}?Fqy) zOnzj88mKfLIS32foY)eR2-PBmG>#;EL}`DRWMc>Z)X%k|McYb`Oo_sNK}N=pL{>ySs^y)Gz%Nq*rp zg*qb}R0T_gVXFax=EywvgfA0Ew*K{MUUO2R?Kj0PtTS0!{Q{i>i@O?)4b;qJV+UX< z$`d}+O1}~Z?z!?|Yff-8hoPQ%iK`###iJab`R@&W(U(2{(zZt{DU?tcG`-ZKOedNUlQOHTLYFTIt>6EWVvN^4ZS2&)`P<#g?quzfWlG;{3-!!o z{2!I{d-*}$fYa)verSAUFj>*9Dx@ttxeMKQo14L4ouTUX@m<=Pc7cZnBA0-_*zftH zd$Akyx-nthH8`f;u+OWRyx3n$Mx3eudN=Ha5;pE)tifmC#IKPTXKXfdvLiiM++ymL zGMh`D@Mr}vaGYQHE#Si=p0??f9X@z6$h)h|U^lju^H z%E#H=&92@@cm8$+Q!?d^xC^^f%|9n(LVTBTsv}umupHXpHdXes;FW0lH`FX~Rg=|B}#Cq z2RK<@ZM@aIo0lP94NiK-h%EjZ#PHCL}lOJs@!>lm}3%NAV(mt_DTfSAYa3t85CpVfW~ z`juJyUKd}Zi*_j-{D!~^0(jUNnL{Y|dHl}VM>erLz(4S!=%L}8Bx1Du?`qIEwrqXW zP9!a5`kOV?E`G9lrcF_IPPEjjYy*CMrGoO{=fnpoX)QqvJtQmNh0H!_YYr}clKpnr zpJ3I)I`q%0R$>pwNFF-hb~I_tLD){--9$;=QhiT6PeW~h%BK?>N8r4Lvgk+4Z&OtxTgpketRo5zu727yn>8j>? zmnyfh+7F+dIYl42?>Xa_fX05?D_V5$_$|0-o#oBW2nh$KwKSx=^TlE!{;oViuJ>5Y zH7@Q%mV-3D{h3`g#fmnD1feHbl`hEDxB&Ta5N|YZZrb4wZ{gcZ25CKAcGjM?gJ9zg zUrkuKCi6YX5CUv*9OCI`g59WFWO3HC*J0Z%de#5i1*6Y7NM)Ms zMv^tQR{&HJu%xl%W0~ONbw4t9I!uEoZso4hXoQ8%Z>XPPt&G7B0goIRgsX41Zgseb zxp4j#3ay=LiWJrX{f~+~lK^IDp^BC+TEgFV?~_7fwm*CX^3Xky;7Ks~bB|{E!5ZLl zI#jyBHBQ)Xs`>sy-tayO#Le`kBcqmH0KxL#X!p_*gK9~^sQgs<<=oau`NrE+x)-7c z*7prDT8<_2A{7k7?c9o+4ftvLYy%#4ZgQ0Sago0f?4gbBN?7)-QDLo`XwZ#GxQ=wQ z3&{FY%zF62kO50YazegqyEarq*~XVna>8XIq5#gy+@P-8VYDukqav znBJ!BS^F>y=C(7Zn#2~;xB`Kg1p?4k;Ksq>XZ(Fk(#P+ub0V`YqTl3ch{M@$x-{8V z5U57K(!s!1tV!Bxm9x}gR#wtuCzkTpVYRJgMmRV5)%+!b(L2cvZ!G4!waN!+cjH(m z!8yRn?ABS&E!PiyK{sQlNsqm`Iv7GNSn^Tm?XgGl7=5!g|?h9IX2Fc}0QsT$O z?7US)sE|E73;7ms;rc!7fgbb^>qh;amC+`;*-1OJVnTtp<1Qmeo_)`vSzsj3Z!4Gl{)wPz zy_FvrJ_S$sg`8TKYw{t^G=J4b?5d6m&3wmmC! zj(6(h0jWhtHG?VObP`=j5pL!Gg*|e@eqwjf!fVq(HK4Hv=cyw0ZwI#a%r$QtO&@~W zzstRRK?2v`qw2?-a(nRp)Y%1^aJ^>DRpV_-LS2y-qOy;bi8o~7(+vMFyo$OTwlX2z+PO@ubpt4t+ z;44~gA6>Ec8B9W)v5HAN*RyYLsu4juWJ2@M+BUesPD+kh+>u(b4Pz)fS`~M9x#|hq zDqm%tUH<21Qf<=S#*a0fl~9eY!P?=MpB#~|I_56bzec4=uLs&P)L@{$qHs^dS6>A^ z0$+ab%GFO#qIVZpi)=~Y#?1y;3>7&s><8D^<0H1ho@F}F-C#P!aGi* zr9CrVI*uYgsq)neyrM0y0{O7V@?Ie<5hWd~JQ2FdeBI3OIqK!YkTDT$a!Km|_%f^7 zucPiS&crqOLo#^`457T~6fc$?N2Xm;jNsg>bM$Q;ss+&PL|OGQiV5Z&XR+|-A<4xc zmNC!D%ptK|8(n5^i7@6 z#arv2&<5LnJS)j*0(c7q5$}NWb7F@>Z{wxkRQz|}7dZoC+}G!y<-f7A{)_(O%4? zegf8OE-X6N0qCw#>ZjzQhnfP52VdCtCig7WZ1-Y^`F|AdD%qYBR2&A@xOOL&-sEdN z>*Sr~Nk}g)<}=EC=ZXF*B@bu}KI-uXJ(K2)Z*+l3-g{<;?828fK9efh!QV|gGAwKf z*o&NHF&gD;dO&+s5%9E#*owo$2Nmi0uxcNFXjhI~eTWRoeDL;r2b{98J}QSO6s3r` zsD=M%3xf1Or7Nt7HvMdP0H|ZDjZZdD0A7SAl6v|=D(|hlR3+{I1fq-eW!pqY`)q$g z-n=m*fVk80#&D9~K$X#zMvUgfZHcwlaw0)UV`|62cC>+>V?$WQ?Sa-5Lrdm9Iqe?j z+?Mi^PR)U>+EJUE&W9el=8KM>*_5?+1#@N1&(b+zupw~7(W?X=*UJY>Z;eo)zfAu2 zGy95bAqV@QXuU3#30YKE7T?knM?~&TPYX>~s4F62J;jn3D&tZsCVZOS`=!(QR-E=O zUD^Da-{P8>{AxjE!lSIZGoiA&>s#!g!Cm2U)03?Fv@uJ=ddSkNDO|bDJtbSOY!uy? zx>0c%n~1Lt#e2yoKdFCs59)Kw#VcGIMY}llvx{+p=9Ct9dw3qvsn5KWUTLJ4Cp@S2 zPErL%ELpfdCUu{P^7SO8cHjW5^*X)ByvxxGF=_A!+YlMGO_RsB7C=t9Kr9QcASb~A zBDT0huiMcXBnR5Vl5CcJjwP2q;E_}F8?MJ0BJn3wF7kkDXjnW$QkoJH+r==I0n`{Q zGLMEfD>lz8RrV?WNvgO1$2-y3!O{rPwVzT+)?^tor zp{F+Q_T15U$;$L))(Ki?*q&PFzVO0xIB2yw@d~p&HwXphNWbC>>l1iVKPwZ+Q2e|@ zlLsr_wArxXUishallxIe2+(?H^L_ni#K6Z`iU4OoEho>#Ot;zYqhDt%Zi1%|hV83Z_Ui0Ituh^If^5@!-YLGc9U@Z z%?C^A3CYQ|50pu&RpsieJm?@dy#I-u0KYFp40ffJHve(!^8=a5l!SCA3t>``wdFJu zr;(3dm9zKyC&=NnBOe>+xflXtC;-jq5Fn;WSD0-%qt?ZGL3Wme-nqNbaDDd`G_lxp zjsGjRj!ofFBqqg3>;8tS_uQ_2fbD}HE>jyp<dp_2m+1*@wlLIa#5la)P#d%I?z7@3}BS!}rB!de~&@Rv4157`dx9GURB zH;>0$PWw-d;{=kO1J5t*$yFKt$p9{VLK4#WNl?D|pykXWp5tK#+AsH08vIqv+t|%E zSjqkxv0ML>)iC^;lvK(W>U`zh4dT)V-g^v;|GvtSYYqq{Bi^k>DaRC^*8!u8GZpIq z;NsOR-*c(S&PHME;aJ2^mCAK(Mql%jT=H*7QiUoUOuZ@I=`hJ&9Y4B4JTIKOauUfl z2HEc9fK1YvmrL4b`;fe5Nb4aT{q6+6(XcC_ONH3_?Fy~=&fYv}Sm5UJi92BH21jQe z!1tO!ZS`026A0j_{Jcb17DAuGQgh3@5+$`N3D?n2h+p=q5xq7P9wJKSaugfJ~BvC{ValPYq%u86~ zN?~JT5Bz)cRf&fDPrnWs8%`MU8l*WKf@!Dia6Uc~Om< zy)A7)3X8?EMW;?mr2(e2*R)_Sp%Y9kX|&kPF0l;h)*3vw!H2RcaVcD$(JLun*AKJM zfU!@&5EYlE1EvGe0quC$i}TyvM=1j`4qOTHt}B7P9)f)`)@__8p$f>S?s|y=!>D$Q zQ52L;wB?clTH7>>9R#1~4j5P+w2$ zGG##)DZ;5kia2W_2p!`oud-!CEZR}B#ik9l+*dI)5p#m$E~1F-N)>`^OYbKX2IJ#> z2a3mQ78Q~R!hb)@d^-4oGgH_!!6+*{zm_J%FB@=qC0xT-XBCMv3sS(0$Hfjrt+~RB z>kJSk>^6KrOv=TK|Hc8Q!OLKiav4RumnCYwXMj_&#@Em6=9)g6V*S|Tv#L_{blb9{ zO-yOIr5WG4_4OiTKv}xifE+wMM_z||l70vx@99+LLYhvN zbHNrhwbJBxy1?eaRBq!`(Uf&=sZ^tmog;9hE^@j<*;7_ACXKX@`DR)H82=gzp5C9? zz`$8w_T7HeF)FVO5O-PpNUkcvT1u50o4MTS5xsB!_Z#UZ{9)5&Y`W^7xQRrqTg{8Y z8Ye(+r|fibH_@Dt;9kXBbBj{Hs|~Qf+O)FofCPCpo;oQ;KdhelC^+^svHcoumAEGR z$(7{?M^Mwc-uvTF0K!PKdLvq%?W`PsII#T=fsWhdty}e__Cp!qU!7zw;*OAr&Vbr3Cf zW3$|CWK8vIJXn7ZKIJyd^C@H$(#*)KXfBB%!Q3Z}^oRY3aA1Lsu68Nv1K!|HY4X=x z-Jq&n5`;I2`6(FklVZdZjS%axAyE?lX871EZIY2GsdQxezfZ39mJDG({-X;E@P z`t6|m12S-|zQ%9m+d7wubuDP?m47r4fkNmlB2F-_kf(Z;q_sf@;vUjh}eVE}3;O;N}^B=@w zBWkXu-N&chjPPyP!-+{_e!b@E2b+Ag+!jV|Fvy)%L0$#tY6v|34}@ zoX!%OZh%lZxuyU6skA3p)=8Z-r~U-si!kBSF;6_SYN=X!SqsR(LDLZ~fPhZ?a*>=;F;-5T{l+wU*G|L-~XoO|xM_x&2r$HOc+ z+m^GRsLS)#KLsUtWD(e$w(~C4?&h&t!fK3|LqQ?kJg?OM`de%$8rG_ZCs}x%ouzy^ z$HX4G*7}cREQRFFT(^|@th}Jg@wtf~`|+K83IYMzGS0IJuaYXf<)RX*pU2@L{S6na zglD@9$hH2B3sjF`=-&NRcKaCMsaZTD=BJZJ^x>pvr}PZG_HX86qf5~1AdtAJ`?xuIYi_THLA1*Idl zd?qjR@hQ~aBcsk|;KrNOe-nPtWL57YKjntE@vR)1~F?m04sGz*n z$4UPQrK;uX8vxTP{B(+92}$&Ud$OE(50Km@qy=zyKJPdJL*8`4;G?fC>h>nv(Rpg% zM^AbO#Kd*P4MVv4x_o5vbv)H_SoMHrrPwh+cc?lsbz3xDP2H zkPJRq;RhSge4kipMJMGsJgb5Yy$&0-a}w+Ya>L&pzIK~d+siKI3`?4oUY$eUnBEK5 zFAzgM(czc7ptE}TdCMM?WMmc==$hRPntDw7=ev2K6T;U$;Zgns z;Jh5~)r`!LzLk%w*f6aCc5~Nbu8a}}LDY>1GXkS?O~@(f)SdYRv?r3lcJie>$!f;7 zFr(bq2wx-l#IKGE+S`Mw91QssCbMB-a}#IYl4&e&8jQMM-jZV&`XTOLV0s{G@TwGk zthw|8XhBRzH63k})db=zr;{`2YKN?%Ik(@b*TS8Gj)W49S5)G_nmy_SuSmRa@kZSJ zLd=L%b;9R|BF15pTVaFM#k&*~@5I6F`f|3iD+U7N$M|H4XjR2$kGf1c}W z*?+`)0&CtJGDYY2lwMK16;T9ry}raJlF}z+v<-URHuZ?~pX$8gaZtRcFz&C^DBhm3 zZ`cv%DdDhX86rw9B{fh}-k{lBq1OuP>~00E^1F8=1hkh#>}-c`pX8b6&R{PqA`BAF zfi}9l0gu1o(JN_cQ;ecwg8l=gxI2}@Ys;V$wQw>}8u|frxpXuGF0)Z}B0U-}O~$4Q zjb_r%@M_JUE95;9*WcfMUd*6vlZBy+Qv}IGcz<)hr^BS#r*-djfkF5jOwLI0)>6)TwX-xudvvscg1;_1RG{HpmLXw4d}K!5WbUyRl@MqMI;p;Zy_+Q z+IvI=-^jVh+8*49`djDuq4=VZ+iRt@WeM}&p5F|xX7H!aw-8tHX*@x#0moG}N{8e+ z{W3rPujE!$QZRlVOL0f9>amGM6N%Ku}^6~lgwjvVd(xNg+l`Jpvy z=xpZ(NT!aPHToaY{%`hMj!lZC6Ni2Ci~NQk&Jx7K-KHnSrS?G}p9qdMvo}392O7E; zVrm>N?QKEh%2&WoH><(6?Fp-QgB`>WPE3BmCjDZ*8%eclhAZ5ip9khxv*Szj-1F_*a`MlE>xa=%z(LpzObwG>#s76j9!WydabeUkP8a7Ld_G`q~UzF8G~U$VL} zI&Rs!X86>h=?#w6dsnICo}>yUbixjipzZ$4$?$1NeP9z-Y} z>r%~v*I3v@?UFvDj!F8*hTW>{QH516ckM(%TW_Numjk)G{cUbz{oOh-PBY%3n&26;ehH zKC|BrIGB~mvbQdMyyPM@{(D)QICDC6zkGR|v43uuJ+p9@)z)Y=|Mm9oi`CuE`_rli zRLiurObcK;CJ5J|Qu|;|{|50x4`>UTB`SZ>oxv=XGn_pLRxAI~YMEcOFlB)PSWA1EJ=)yQdB|XiB?Qbi!gFFQINIftKPB!8RYu^@He-N&3>Zf z?g5A!G8u^2GM)j1D+MMxkG%(nF;efVlB6Me|NFQ`sI)d`wn(;2@qy0n->#b{G? zX%y-3Vt9NyPH*-FCx|2$9OBv?>8_33vryOI<}KZpJ`>^byS#aM!_mwD5$Gjx_oj)( z#mVlf<_`C~^+2bGh%o4T$8t__;5-@)br+O_&7-$8VZVP2C4V{nSl^N+0x|q)ELAzN zD-@7~O9_s~5`QA92T%cIx44K=3x1stzetDH*HvR z!l0My#ALJepp{M9Jr*jiat{Ceh28p8kG7TnP=ps-bt(jbypP{y`MV+@%8TAx5$ZAN^QDa-*dRtoX4$ zn}~ZwTip*!STkR(JmWr?RepNC*4Pi3Je2u7yE}BxRx!P=Y~~ZC{|h; zenOoXZ8J~bv`t)lHsP8iUYvT0OrVPW0g(=0|7mHfK+;eW)1@7aE4 z2gqngN6$M30lm2ZSEPMIfT{k$coJ@AG@>$g{*(VP@xb0US?#Arg@jRkYAtNa-Mq>{ z`^nGi4o6QroF(^~*UQTd^EN&11Ss|?M@0v7E3u@>3G?srqbD(zqiN|$Gx_$JJq?PK zwu0|MlfiAHo=x|d;Z3x*^v{|NR#{2YA1OV+P1tv@)?E_?q-WN>oHT99>!q8+iaT5B zse?~^&GcJ0zX2b~qK+u|Kebw!KBR)7#L{w+Jv&&Pk9RU|Ut@!B?d|Q8o@cyS2{t;@ zZ~u%17d<`E;$b)Wo&X@1RJy0rKXzr`5p-PKHG!oMIJF%dk=pZ<(v83x2K(R+=MP*f zQP&>3%6(mO?N}(Q_3T+QI~M*>tIsK`8PpwFFLBOdNM6_KF5SGeIHJpaH9hP`efdGk zb>^|$n}J~C`Dvj)-HlNU&D6jg)bz)*v7d9Vg#{#4g6(6uxqDCIq-5c18zpa>sqnIhd=~Ej2V*UF6%zgBqtibWQi!J^h{icTfHmz;%NpE(>k_t~m|;DmdUHdPn6J(sPDEz8A@k;y*rG;aquL2lu&L+L#x&Y;+c0CZm2y z$&0_nt!u~`Sy>fxs3L8s4YcBB^BG6~t8n!{tBkM{_oxro`xI0vcDedaA2pa4KeTtx z{Xl((GTxvgKt5or3K6SrmxcDO9?KS+*=#sBtR|%8Bf{?5R8?AM+z2|VF!gf0XGq*u ze`*-L37cmD%epcrdzEojN=3&~gdqK*9W+{B|(8~2*{uDjr zmbETi_H*%BfAlr<(XekOBXXI^yT#1r7}ok zU#lG7?LHH^!>&i3@=RFJBH~4eeypf*jhi%Fhr*+ zN}nnJ&ssz&XFdu;j^OYr_*B3f$o;!fx?Xv0Zd#enx7g>mviuPFxq{Krzu^#6rq8@< zlBKqmOaaMA{AvH)h4Y|cSQ%+o56NpF$-d?~EyusYT2ppQ*o1?FN#h}Ea&)bs%Fi5& zmy)rSh+dbv)(l#!wk8rl6g)KlkwQ^yZcKicZPBwH^|X*<{2clt3)=%N>>hr&4ke8F zBwZsZz3>sz#540+7oj#~a$c(2J}zX#A<&krLX((**7Eng#XJm#4UL+$J8lsl;IZCh7Qd*DSjn%{(V9%JyQ~Arl9ElGVy!Xz z+|Qjia0SW9@w5!#(D!)PI?fhN>YwBehae ze~r%lK24|F4bD&H=-JX?yh9Zeh{GmE<>RU9AKu0D5Bvqq?~>wKzB@qV%y0L~H#1oV zMU>#$Cx~tt`-9|FU(m*MLfl3?&iEnIa@*p|leq}?W-x_u61~YjUSqbGY%_YMJEwD? zdx=}{sH9qa9_~Me7dOm7hu(f{5It-HD|5ej9?WvMHCA;Md(E)0eRbB?FcNTC_AE`$ zaot94SOTCj&=K8$bP+e+5hGAQ;Qkz#mrdGt?2`izI-{58nSPw`{QS&e^-Yk({-Io; zm=f}piN6eba{t`8F!sO)GX11NKUUuvTy1s{S0kVFXBb9=eAYHY;a%AEUqj|Za`uk~%r&JSOygZOClC8a*3uq+pz>*s9dpWJ93 zw#Qsadp?qsD+1;-1|5HhYKC*4F4q+;D%cO{cMZyZja^_VaY{WImEe}_z*%AjAHDSC zLl_t$#8;icj2WFITp-k^m}k(=IhWA_UJHcg*uP1d-eoX80Eipk(jF__<;pM)+8$K zMdqf-hu)2qQcSz&GNlfED)O=sS+=dU=5Cq-Ch6a~`I<3v{*fudlDlaR$w$)~-I5v$ zaxq8ao=w--uM5d7lSRZN;rd&pvQ{NoJ=GyDW_P{bH9g1*z1R^o(jX+9@VqD8QN^-A z&2w|?k;!KZG{G7k#uZcWvJPW3V`q8yZFUfLvlC<&cUYaWnz6NCx9h3-5_wndKkTT{ z)(uT3B=+F!ZEtIT6Vp$ry@$V7!39|N5gcHhV>!l4i`?08?n&QuxXYp>3!1j zu1^KCmdJ&deU4zSlxd3CK54}d@X;}Y)pV8^ zu-LLkz=>9PuG%!cSIXH2FTJw)LE7OtTsr%enqm|Zl4Foqw>hv;GXDqTVLC4igglX2 zT4{HRbJ`xp9iDH81!UKbtd%p4#;{ngHsf2$pdr|w;A_(1jmD2uO%qIO=eZaNm#!lr z+YRB=47n8mZw9(uHx_SI}Et>y0k_`Y!%j00TS=*lR?!AH~AP$ zZ+UEZR}MUN*Pc601epxWm%3{EI@X+n6-I{zY>@M#aFVjtf#RF0{t2Tc7QGtRQLFA~ z#YLbLM$Z1dO`i=;NxZ!NA0>!~U*F=o7|#)L7RS-ItRp5$*e4R|#!P=_IHnF)BH*)n zQq@dNW#!g2~_Ar(!4AM7sLTl1KwFT)QwKTiHoUYHV zzk-#sro{(EzDVtYHkiiWYc1O&IGA&Qo0V_p-n2-UmX9Yr^#D~_dhkBCu%~F#_pb|R z;V+HY?pj|TnAu2ul2J04-8TE+iAYQLj7zf^Us$@iORmcG)J#_Ns3Dde;-O?=WK(JF zvcuOYces8&wdZ|di8FF~(w9agwLYx4pc09;n62sfmD0)G12aw}wQr^6MP`2~Ww2;TTa)VqgA#2OOSG zqB+0v1a}Nw9v)+Kx(Wyzkj$d=2V9~T5y5Cz|4BlONA3kJ?|>@(t}h0EulgZ#Yvhvq zb$d_ZpIv$S=$@rF4mD{^%v5V1JUQW&G&bOD!kq>apVz!-c@{scjk2VsV{LX{yv?K! zG>V3&aJx>}Ce7Ks>D|-`>dpw1Ps?zfo5^I^tP!9!nVKXq;!z(Xq(ZgYpOtC`ItQob zbzheZRkDQ4#o1*IA-uTtGN%b(U8z>V!8O|p-W=_lm0s`8obnk1RTXE)wyeCQmveaL zYS{awD)!(AuYB6r8hQLxplqqTPimSTGd9Wff?7&wRTmF%o}1D*F{;LR+l^H%-j?2* zvBll(tBd|Igi6l%5pe8z^F){n?wJSmm6hvf{#-5Fpf;T0AGs+<@zv;8)`+pG4;#OPU-omf4zqnOfjn_xkbIv&n{< zS9LcQ<$7$^yQFk~m=~R7=Lk!--s$#dI4-&g-hzw&ePn;kicPr7v8G|IyHPs5;t}7M zP2Wf$a`j(%g^i!DE^8jtljoN<< z#ALYn3}&$&ln?QWnp&NWXVRN>4%7m51G=pBySb6cHbmz0-~N6d44T8r7$Rltjp_kD z{oF!0EV@kh=c0`|!!RgV6XCrb-aeK<1_?SueM|(CWpo zFwcF`<(vA`ZNV#(*tE>bXD@bVlF<({oPL@BCg1rta|9Fkq0*%i#(xbHI}$%A2oy6% zvMNe3HP7`lAjuSyj16e8G|ywPtrIFGMFnG9PK?#t0r8IB{3P{2d%!^*M_>hMNCw+i zR&RBQ?|0iZlBrWlYL4bs2lg%t*G;i{DeC7AYk9!=yu;%D>L-j~(7>C-8~&3miLc~LE&fwl?JKeUgq-U%g{^-<%arn2 zy@=3SwM?_NKJhwWd$Tp!QG@(jOrKzr32BnyDdj4WjA0%E5ynKURHIIIHmtx+YKB41 z1aZSmZ;NzM#N%!?vtkT{bwG|fRme-4@t#?N;>A_^0w!;gLpmikCfgtBB;7}=$)%6D zlmh1cF&eSxT*PQ*=mq^a{{4Je-!#TH#ioDn&B?nhyMqc|QZiZSZ+oobbYl+QNl{zkO$Li z!>H0|g@#apjWdf0+>u+~+^(MD;H~iAJeo&?o2WP$?$kKSCJHk#XezQNvk;fDyMP~# z1pc}bHMu1kDkk(Vt|MR~@G=1Rr|T^M>1Y&F#GqVyhrZ7sTAE@={F&eAt4>B9&%V4r z7;7?cR1Q?T&wtR*zg+e7>@CYu*n~mea-~jjSyXE@l^)Sb zX7%d=I$nMDKL36j1FIxDU|9}v|AhcYBUBXB$#x%|f;qR$N^_WgwVrQq(5~K+ zTNs~dEf^{9S3V&|-k3E`_rh;z%}EMvd#5ztP2GdJoQnj2+y^)b3}{C) zYU^$Y-9xHfw=MBEO7Wk*I|SccA?3b-ICmkNr<%9HiVA7caVaz3GAj&h70JBRC?#~t zX?MG|B%(~ho{5G`lfuL*T`Uz`N8pH~^-Ye2U5(Kpqnu5W48;C5p}&Rb4>*3;py~>X zs*_yMgl5QBh_nftpY3S@=yeZ1}jVdN79f zB(2`7W#)V>Mah#S)@>(g)?FH-zxugSbkFVY3jgorh9;Z$ewRFs@eUcA0Aeshp8klq`>#?SUIll!H~%tBbvlt>!}_BTz`ojV1IhN?({1Euup(MQ6h zAjG~DX-54QnuOFIH-4IpEaN_CJ%K{KN@cq6@86P54_uGdYQ7=WjAeI)%V?9WMcY`j zp6krCRFg*VeIPP*Ys;3HP~t1QZdgL48e^_bx8aeZUR)_2$}Wfm?{7SskxmC*hobfx%H2C)?<|+Dknyj(60h@V2Phll4jY!ys`rEg3qN4Bi4iC5y&+U#^*U!EZ*=1_SWI}bZTa_I z#TsGOY7MWAvEy3>PgXsarvBp4hv^6uH^sgS@`xJwn;Fvri9ag;&z7 zRLW4zJX|B5OAnI=`k6w{H?JEF+8-(rBwBF&E|raqQHtmyx*lQJrXlc_muuwXbM)lW z5R8lkc}hUZL%pAyv0k>vR&!j|@4{}SvZ(Hdg4z*{6 zVvtNFNI5g&NTkTf!H!n3*I;S9hLK0<*q4Ay-W(BLElDs;?nCoz<qxm`SxGs zyr0d-$lV}qOtppMk%;RKFVnJ>O56$aC&dQysn(7uoyjEM&Rb?rXPoTVlEbIc6Dt2! zS5uT>$xVaxe6wzwL^Qzi3{b4w4TP<@;2j~P7 zV-=+ZUDYmV8`J|aVXWg|FEhF;=Q`|;2H9+*;%&1$E|F;>gTk~2ec31G2#&LCPy z+k(uHa>QjP(|QHBk0^IicWYfeayH(0KPafCa;%;5E)#bV*<(&dYMwj7=}S}69R8-4noJv$rk~vY;&Wz<2%EC- zW@=&saj!MkC_z=npQ7qLxT>8;TQ0q3pRnBhZWYyYPLDx6ObZl29IYXCooL3pR`)2v z_j6YJ0s3}6-uvf$(RbXi^CE@y>D3$JTdID{#bo((|zy zvn~|}muqAE|LiNa^FV*y{gchZbwDbY7G2?+LMHGP^>edrJ(h3Zpz|+Eg)2-1gKFfC z!w2ShHw}&8qSyL9N}Ei!FqWwu@AD7f*D0jUg;M?IV^vRc`iEV+gPHpOR76C4mvF4crlgtw^rSzuMKHGSd-7nuWXMdq07b*!9`U?=)E_>T^<%Sg!DPNVCn0c! z)9+4Ws1m&=mFlzc7ZyzEQ~W)O-v1&Ijf-rMx-Al__PEF9M+Gm8f4DHlWl!-p$Vey0 zeLE61NE`U}(-<`9W$>?Wn_fayzDcRumGGL{`CGY3@s+u+kA{`_iM-F&KMXrG_)r>LfE2Z3 zSK}`!K0HTCf|nga1-wGaX32=O3~v)g-Pd$=)5}uj0rU1b45*R_?t%^8;{ldVV8-9e zoatVYWfdAl#qT^_r+2@^u9fF{s1y2AYunNyx12UXqJ$h1ER$n*9yXEOq?DbCnn6Bv zMy4M)w*YUfz6PrcN?|jI2VLJX(xOesWVX<^9-iDATb5%?P7VbI+jN7SbLiK$ zQSl&A(%dwt0e<;#8RI&u#<0I!ymz# zchk3LqdYLWD+#9$bSH#wQ{qm-T-WbcO@cAclPv?UhVUy?xTc!^#fRO@Hxb1ZD97Rl z5pCm<2j@=2aOOI8=fl4u#36J{5yP#v^!6j`fa(NDP$ydq_^1?+i^>$Axh&kFH%$ID zhC_!P3p_3j)BXF5?08>vKHe(BcNla?+^@{{y2%i`%i9h8k~M8}MBEb;36}nHu+=5p z_JJ_dny;@Rxx%MbqdZyZFMaX1`XRnX2d$FRGnqCDOXz6iW2^F;nLjF(?b%xqOO3Ya zlQMO*y%&7Jsq51@qXPx0^E8)){J;p6s|Lr~M?%RaL+{7$*2ebsk!jcQRbEd^MP3kW zY%-HRzwD0{!eR6b!2A!d;yyW&oW{YL#X;@8`{DCBy&8YT(?yriDV2{T31A+r`neY| zma`vL*^T72cf=*cXI0ALf__En$6`b{bL~Q@hawstx~JkB?|bv!n4ovo))m= z+tr()SCy|;izzYh3YPkSFxBUF`dfJ~>8UH=m`p>+X+_(0wzDfs>utZ>S zDI}%=nbz0XR4qMi?5Yt0Bt%A`ih@F{4|yyuGd2Y}Y*z2x-e6i8|FOF=Qv;#OxQAh^8z55rHD)yBi^BRSwQWMZsE$J$yt?8i^ zO<^j6MalJ-xtYM;&dqKtdH5RscUnleFo=^qhaWe-VDYjS_-L}eKmjcxz~~iV@AdY6 z=}}UIocP3h=NHwE$$c`D3?Cy5hOyuAPnA->fiZ$wTDu3qp*&B(y7(?(SgNma(UQ0a zP~8s}Q~Hist;P~p3R!)1`B8Jt<$$*}Jf{<0$x4~D8|T!+CO!obeF+9dHqSnkInRNI zSD@J_T~n(+^PzZCd(RO|GapQXGP_|g>Fhbl9RV_1YDLn|JPH({;pw?ibcaOMwLOQe~}s5%?xOq30>!(!qPHz&Jl@TS!!9* z$6!7<5b!VX+Be%-9llyMY?rk;F39_x3D)wd+{_7wgiF@eQN@?|_tO^)^5s>bhPagg z_}}8p74oh9H04I_V{dbg-VU2gp7RY!^J*G>kjCUdvL)Rj^U^BD$Zde^Pw5U7tk1}P z&_0qMC}AIXIau2MiIc_qDwgLTK@`n~lA?9vFTk_5`MAHO^NAM)fXgY3Tc1mk=6}(s z5SzJj!gvxD)A3E-M&iZr3!6=03cYLg50v)$xx4-K3Z2A z4ZJuveMI*x75T80aZ&yDp9n8pTk_?sdlcr@s9`9Nne2x%S@**KJK0<|{uJ?lq9!K{4` z2e?p!>4|YPWe(qkWR+vcp2!(9x%8fP88|Zj#OH6-0oqFn=2iDO@Z3rk0a5XU0 zzvR8X*dBnrFOIkbVps%G!AUX>cpMov0iE6v>J?h@U@SUU+ori5t>dORd>V&nkK}W0 z6A9nerm{{FJ-EntZ9t9j#SvhYXP-llSyi=E<3Hnm(vsG-uw7`qb7}1hG9eSB?pNN;E1t>mYBJPU|2r^jUr9sz0ObI-mYvDGgl;p#Cf=ZRj8UkkBSE~ zl5##?{-ZQ`g3(MQ(xx%JqPwz(P1n!JA6im&NZWU&x+fWFy8fGqxpM*hr{Y0Z)|$q1 z3Z|m_f+{E4U#?@%WkcMi>Y{(du3t=@ozJGi2K4(J-~&PvKJlAf#vcD^E#&!H2H95Q z!PD5tZaE6~)!oaTz?yv069+vf$i58v42qvr?he zEE`=`CpltA@9v8}A_p@g&-IXr1KaJ~9ztuafN|Ko3Xu4O2HpIIqrVyQpPPJN2@%p7 z9$d_q;zJCor7JSRk@3Cw&;ai!#H%Y6Yq!%oA~Uu(havnY_xcRZNwaU4Z+b3O(60}a zh7zM{UB~H3YR5u$#czk_1vED8SNd1K*Y#GqC}V4eDMK@y4?)uUf?vy;ez;!4&@dDA zWGph<47kXk66-%5;#Z-fs5-n7=OQDv#IS`@BIBhfEi9Wv0JT;l-X?5eyoBVon zI<%D|yRI#3)e)3&XRRnp6oBLSu!`MGpo8&+G1Zi+m0;lyv;J{k%6A3j{XqU3wpuE? zb(dPfG-B}pLhpJjo@9@1wR1!GQ#tKZbJyzoFv--#*9vyxLhwzgLf!q>=Z+cF-&N0W zDMACVL9|sME;W4SE#&}7gO2>;q88;Ezg6k`@-ehp_$HV5aQ3p^EM3)juV!b~xTpeu zsdJTjjE{UD>=vil@GC(ceKcQC{GF&Kjt>ZdCOE&Pk-630s0VVxE_Eew&U6hs0edFan;!>&4TEG6CV&-^vwipS(y9P?b;{0z=ZSG# zA{GoJT^Z9t%dzmI0`VoeE|>U3TYQXVR}FX_o|--6h~;k#EsaxAVM?!$o|+`P?SV!8 zh8{RLtkE-D`@@131bx+A_Sedq z+P!ofrPx=I`M4<-ewv$c8N*f&zY<{-f>(K6QFAJoseJ%m6mAjsMvgT*{f*Tpys}T$ z&bYOF(j*`G_3S;m*rQ6)HWAFm6iszHn=0Bd#YZHR;Z^{My3dde3V*T<>6Z6#IAa|U zHJZNGmYiR~V@9m>?qp`y>K$H|?37@$wyy15<5`-@6D<{6Ln(@zWZAszJ7#N5S#Q5L zBh6IR*q=AsksI;ZyoFcIg$mFyQWM0o`!ZG~4MFa{;<+-sK!^ z@%jB`e$wMH{v~DT-JmKQU%cWeC*QbFZHobiZ*KnTc)l(hk1c)6zK?&Tb^73TA7HXc z4R9_)P5$RKm~zkSl*bxd1zAJehZ4q|(TTLm@L{Ek%gyRal6qw0gSPa%?#7Jt`sDkS zb7@TokWX%ZcW5`tBBK0LXf4wg_6J@>CKlLjypg>ep5H9k@Zp%-Bmh#!={8|EK4nd zpb<x$RBQKsnkA`TsQ zOCT%OS^W8B#v>-ZP@a=3P>*!oeG`?UyW1|o0{5U@RG?@iJ$28j?5@bjtMr+rh-FkT zQ1+fhaCF?W{C`JXptIRyMF%>cMjxWHfxU|vbHU=JRoPz0bnoYiB)tc{iuvew+BHL< zVS}ufSyrk+LrCb3TZ!99Sq2>4og|#15O7?PV$8@>=4Z~1F)%rCm-{$dY;LP?lw@4# zD5|aM)ZDJ}Q=7a|JF?N*xGo$BclEfM_xabJwVJiy)AYFEC$?a5(M3jlFu9(Zi;}

    2+w?m%*Y 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,t;eg+;_|r*_ql( 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 z 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

    D7GkE5%(ElKO7FX-e0;@4Q*j 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 a6=HGLi-m}CLFSa2ViX+GgM-BYkN?>=9VgxZ literal 0 HcmV?d00001 From 4afa934251aa0fb1bb56ef66ab87a1ce327ac6b4 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 18 Aug 2018 13:12:54 +0200 Subject: [PATCH 014/277] #431: Clean-up + added test --- .../plugins/pict/PICTImageReaderSpi.java | 7 +++---- .../plugins/pict/PICTImageReaderTest.java | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java index c19d1d8b..2846a9ad 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java @@ -70,9 +70,8 @@ public final class PICTImageReaderSpi extends ImageReaderSpiBase { // Skip header 512 bytes for file-based streams stream.reset(); - // If we don't mark again here, the reset call in the finally block will: - // A) do nothing - // B) eat marks created in the stream previously + // We need to set mark again, to make sure the reset call in + // the finally block will not consume existing marks stream.mark(); skipNullHeader(stream); @@ -118,7 +117,7 @@ public final class PICTImageReaderSpi extends ImageReaderSpiBase { return (magic & 0xffff0000) == PICT.MAGIC_V1 || magic == PICT.MAGIC_V2; } - public ImageReader createReaderInstance(final Object pExtension) throws IOException { + public ImageReader createReaderInstance(final Object pExtension) { return new PICTImageReader(this); } diff --git a/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderTest.java b/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderTest.java index 15078df2..b565d6d8 100644 --- a/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderTest.java +++ b/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderTest.java @@ -8,6 +8,7 @@ import org.junit.Test; import javax.imageio.spi.IIORegistry; import javax.imageio.spi.ImageReaderSpi; +import javax.imageio.stream.ImageInputStream; import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; @@ -15,6 +16,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; /** @@ -91,6 +93,21 @@ public class PICTImageReaderTest extends ImageReaderAbstractTest Date: Sat, 18 Aug 2018 13:17:43 +0200 Subject: [PATCH 015/277] #433: Test case for offset issue. --- .../plugins/jpeg/JPEGImageReaderTest.java | 38 +++++++++++++++++-- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java index 8bbb2d4f..08e7fe9f 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java @@ -53,8 +53,7 @@ import java.awt.color.ColorSpace; import java.awt.color.ICC_Profile; import java.awt.image.BufferedImage; import java.awt.image.DataBufferByte; -import java.io.EOFException; -import java.io.IOException; +import java.io.*; import java.util.*; import java.util.List; @@ -100,7 +99,6 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTest Date: Sat, 18 Aug 2018 13:27:38 +0200 Subject: [PATCH 016/277] #432: Alternate fix + more tests + better alpha handling for TIFF --- .../plugins/tiff/ExtraSamplesColorModel.java | 34 ++- .../imageio/plugins/tiff/TIFFImageReader.java | 262 +++++++++--------- .../tiff/ExtraSamplesColorModelTest.java | 107 +++++++ 3 files changed, 263 insertions(+), 140 deletions(-) create mode 100644 imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModelTest.java diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java index 552ddf91..4a17a327 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java @@ -9,6 +9,8 @@ import java.awt.image.ComponentSampleModel; import java.awt.image.SampleModel; import java.awt.image.WritableRaster; +import static java.awt.image.DataBuffer.getDataTypeSize; + /** * ExtraSamplesColorModel. * @@ -22,10 +24,22 @@ final class ExtraSamplesColorModel extends ComponentColorModel { // still thinks it has numComponents == cs.getNumComponents() + 1 for most operations private final int numComponents; - ExtraSamplesColorModel(ColorSpace cs, boolean isAlphaPremultiplied, int dataType, int extraComponents) { - super(cs, true, isAlphaPremultiplied, Transparency.TRANSLUCENT, dataType); + ExtraSamplesColorModel(ColorSpace cs, boolean hasAlpha, boolean isAlphaPremultiplied, int dataType, int extraComponents) { + super(cs, bitsArrayHelper(cs, dataType, extraComponents + (hasAlpha ? 1 : 0)), hasAlpha, isAlphaPremultiplied, Transparency.TRANSLUCENT, dataType); Validate.isTrue(extraComponents > 0, "Extra components must be > 0"); - this.numComponents = super.getNumComponents() + extraComponents; + this.numComponents = cs.getNumComponents() + (hasAlpha ? 1 : 0) + extraComponents; + } + + private static int[] bitsArrayHelper(ColorSpace cs, int dataType, int extraComponents) { + int numBits = getDataTypeSize(dataType); + int numComponents = cs.getNumComponents() + extraComponents; + int[] bits = new int[numComponents]; + + for (int i = 0; i < numComponents; i++) { + bits[i] = numBits; + } + + return bits; } @Override @@ -45,16 +59,18 @@ final class ExtraSamplesColorModel extends ComponentColorModel { @Override public WritableRaster getAlphaRaster(WritableRaster raster) { - if (hasAlpha() == false) { + if (!hasAlpha()) { return null; } int x = raster.getMinX(); int y = raster.getMinY(); - int[] band = new int[1]; - band[0] = super.getNumComponents() - 1; - return raster.createWritableChild(x, y, raster.getWidth(), - raster.getHeight(), x, y, - band); + int[] band = new int[] {getAlphaComponent()}; + + return raster.createWritableChild(x, y, raster.getWidth(), raster.getHeight(), x, y, band); + } + + private int getAlphaComponent() { + return super.getNumComponents() - 1; } } diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java index a5a2b53f..f9ebff9f 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java @@ -438,18 +438,20 @@ public final class TIFFImageReader extends ImageReaderBase { int opaqueSamplesPerPixel = getOpaqueSamplesPerPixel(interpretation); - // Spec says ExtraSamples are mandatory of extra samples, however known encoders + // Spec says ExtraSamples are mandatory for extra samples, however known encoders // (ie. SeaShore) writes ARGB TIFFs without ExtraSamples. long[] extraSamples = getValueAsLongArray(TIFF.TAG_EXTRA_SAMPLES, "ExtraSamples", false); if (extraSamples == null && samplesPerPixel > opaqueSamplesPerPixel) { // TODO: Log warning! - // First extra is alpha, rest is "unspecified" + // First extra is alpha, rest is "unspecified" (0) extraSamples = new long[samplesPerPixel - opaqueSamplesPerPixel]; extraSamples[0] = TIFFBaseline.EXTRASAMPLE_UNASSOCIATED_ALPHA; } // Determine alpha - boolean hasAlpha = extraSamples != null; + boolean hasAlpha = extraSamples != null + && (extraSamples[0] == TIFFBaseline.EXTRASAMPLE_ASSOCIATED_ALPHA + || extraSamples[0] == TIFFBaseline.EXTRASAMPLE_UNASSOCIATED_ALPHA); boolean isAlphaPremultiplied = hasAlpha && extraSamples[0] == TIFFBaseline.EXTRASAMPLE_ASSOCIATED_ALPHA; int significantSamples = opaqueSamplesPerPixel + (hasAlpha ? 1 : 0); @@ -577,12 +579,12 @@ public final class TIFFImageReader extends ImageReaderBase { switch (planarConfiguration) { case TIFFBaseline.PLANARCONFIG_CHUNKY: // "TYPE_4BYTE_RGBA" if cs.isCS_sRGB() - if (extraSamples != null && extraSamples.length == 1) { + if (hasAlpha && extraSamples.length == 1) { return ImageTypeSpecifiers.createInterleaved(cs, new int[] {0, 1, 2, 3}, dataType, true, isAlphaPremultiplied); } else { return new ImageTypeSpecifier( - new ExtraSamplesColorModel(cs, isAlphaPremultiplied, dataType, samplesPerPixel - significantSamples), + new ExtraSamplesColorModel(cs, hasAlpha, isAlphaPremultiplied, dataType, samplesPerPixel - significantSamples), new PixelInterleavedSampleModel(dataType, 1, 1, samplesPerPixel, samplesPerPixel, createOffsets(samplesPerPixel)) ); } @@ -614,9 +616,7 @@ public final class TIFFImageReader extends ImageReaderBase { IndexColorModel icm = createIndexColorModel(bitsPerSample, dataType, (int[]) colorMap.getValue()); - if (extraSamples != null && extraSamples.length > 0 - && (extraSamples[0] == TIFFBaseline.EXTRASAMPLE_ASSOCIATED_ALPHA - || extraSamples[0] == TIFFBaseline.EXTRASAMPLE_UNASSOCIATED_ALPHA)) { + if (hasAlpha) { return ImageTypeSpecifiers.createDiscreteAlphaIndexedFromIndexColorModel(icm); } @@ -1843,158 +1843,158 @@ public final class TIFFImageReader extends ImageReaderBase { case DataBuffer.TYPE_BYTE: /*for (int band = 0; band < bands; band++)*/ { - int bank = banded ? ((BandedSampleModel) tileRowRaster.getSampleModel()).getBankIndices()[band] : band; + int bank = banded ? ((BandedSampleModel) tileRowRaster.getSampleModel()).getBankIndices()[band] : band; - byte[] rowDataByte = ((DataBufferByte) dataBuffer).getData(bank); - WritableRaster destChannel = banded - ? raster.createWritableChild(raster.getMinX(), raster.getMinY(), raster.getWidth(), raster.getHeight(), 0, 0, new int[] {band}) - : raster; - Raster srcChannel = banded - ? tileRowRaster.createChild(tileRowRaster.getMinX(), 0, tileRowRaster.getWidth(), 1, 0, 0, new int[] {band}) - : tileRowRaster; + byte[] rowDataByte = ((DataBufferByte) dataBuffer).getData(bank); + WritableRaster destChannel = banded + ? raster.createWritableChild(raster.getMinX(), raster.getMinY(), raster.getWidth(), raster.getHeight(), 0, 0, new int[] {band}) + : raster; + Raster srcChannel = banded + ? tileRowRaster.createChild(tileRowRaster.getMinX(), 0, tileRowRaster.getWidth(), 1, 0, 0, new int[] {band}) + : tileRowRaster; - for (int row = startRow; row < startRow + rowsInTile; row++) { - if (row >= srcRegion.y + srcRegion.height) { - break; // We're done with this tile - } - - input.readFully(rowDataByte); - - if (row % ySub == 0 && row >= srcRegion.y) { - if (!banded) { - normalizeColor(interpretation, rowDataByte); - } - - // Subsample horizontal - if (xSub != 1) { - for (int x = srcRegion.x / xSub * numBands; x < ((srcRegion.x + colsInTile) / xSub) * numBands; x += numBands) { - System.arraycopy(rowDataByte, x * xSub, rowDataByte, x, numBands); - } - } - - destChannel.setDataElements(startCol / xSub, (row - srcRegion.y) / ySub, srcChannel); - } - // Else skip data + for (int row = startRow; row < startRow + rowsInTile; row++) { + if (row >= srcRegion.y + srcRegion.height) { + break; // We're done with this tile } + + input.readFully(rowDataByte); + + if (row % ySub == 0 && row >= srcRegion.y) { + if (!banded) { + normalizeColor(interpretation, rowDataByte); + } + + // Subsample horizontal + if (xSub != 1) { + for (int x = srcRegion.x / xSub * numBands; x < ((srcRegion.x + colsInTile) / xSub) * numBands; x += numBands) { + System.arraycopy(rowDataByte, x * xSub, rowDataByte, x, numBands); + } + } + + destChannel.setDataElements(startCol / xSub, (row - srcRegion.y) / ySub, srcChannel); + } + // Else skip data } + } // if (banded) { // // TODO: Normalize colors for tile (need to know tile region and sample model) // // Unfortunately, this will disable acceleration... // } - break; + break; case DataBuffer.TYPE_USHORT: case DataBuffer.TYPE_SHORT: /*for (int band = 0; band < bands; band++)*/ { - short[] rowDataShort = dataBuffer.getDataType() == DataBuffer.TYPE_USHORT - ? ((DataBufferUShort) dataBuffer).getData(band) - : ((DataBufferShort) dataBuffer).getData(band); + short[] rowDataShort = dataBuffer.getDataType() == DataBuffer.TYPE_USHORT + ? ((DataBufferUShort) dataBuffer).getData(band) + : ((DataBufferShort) dataBuffer).getData(band); - WritableRaster destChannel = banded - ? raster.createWritableChild(raster.getMinX(), raster.getMinY(), raster.getWidth(), raster.getHeight(), 0, 0, new int[] {band}) - : raster; - Raster srcChannel = banded - ? tileRowRaster.createChild(tileRowRaster.getMinX(), 0, tileRowRaster.getWidth(), 1, 0, 0, new int[] {band}) - : tileRowRaster; + WritableRaster destChannel = banded + ? raster.createWritableChild(raster.getMinX(), raster.getMinY(), raster.getWidth(), raster.getHeight(), 0, 0, new int[] {band}) + : raster; + Raster srcChannel = banded + ? tileRowRaster.createChild(tileRowRaster.getMinX(), 0, tileRowRaster.getWidth(), 1, 0, 0, new int[] {band}) + : tileRowRaster; - for (int row = startRow; row < startRow + rowsInTile; row++) { - if (row >= srcRegion.y + srcRegion.height) { - break; // We're done with this tile - } - - readFully(input, rowDataShort); - - if (row >= srcRegion.y) { - normalizeColor(interpretation, rowDataShort); - - // Subsample horizontal - if (xSub != 1) { - for (int x = srcRegion.x / xSub * numBands; x < ((srcRegion.x + colsInTile) / xSub) * numBands; x += numBands) { - System.arraycopy(rowDataShort, x * xSub, rowDataShort, x, numBands); - } - } - - destChannel.setDataElements(startCol / xSub, (row - srcRegion.y) / ySub, srcChannel); - // TODO: Possible speedup ~30%!: -// raster.setDataElements(startCol, row - srcRegion.y, colsInTile, 1, rowDataShort); - } - // Else skip data + for (int row = startRow; row < startRow + rowsInTile; row++) { + if (row >= srcRegion.y + srcRegion.height) { + break; // We're done with this tile } - } - break; + readFully(input, rowDataShort); + + if (row >= srcRegion.y) { + normalizeColor(interpretation, rowDataShort); + + // Subsample horizontal + if (xSub != 1) { + for (int x = srcRegion.x / xSub * numBands; x < ((srcRegion.x + colsInTile) / xSub) * numBands; x += numBands) { + System.arraycopy(rowDataShort, x * xSub, rowDataShort, x, numBands); + } + } + + destChannel.setDataElements(startCol / xSub, (row - srcRegion.y) / ySub, srcChannel); + // TODO: Possible speedup ~30%!: +// raster.setDataElements(startCol, row - srcRegion.y, colsInTile, 1, rowDataShort); + } + // Else skip data + } + } + + break; case DataBuffer.TYPE_INT: /*for (int band = 0; band < bands; band++)*/ { - int[] rowDataInt = ((DataBufferInt) dataBuffer).getData(band); + int[] rowDataInt = ((DataBufferInt) dataBuffer).getData(band); - WritableRaster destChannel = banded - ? raster.createWritableChild(raster.getMinX(), raster.getMinY(), raster.getWidth(), raster.getHeight(), 0, 0, new int[] {band}) - : raster; - Raster srcChannel = banded - ? tileRowRaster.createChild(tileRowRaster.getMinX(), 0, tileRowRaster.getWidth(), 1, 0, 0, new int[] {band}) - : tileRowRaster; + WritableRaster destChannel = banded + ? raster.createWritableChild(raster.getMinX(), raster.getMinY(), raster.getWidth(), raster.getHeight(), 0, 0, new int[] {band}) + : raster; + Raster srcChannel = banded + ? tileRowRaster.createChild(tileRowRaster.getMinX(), 0, tileRowRaster.getWidth(), 1, 0, 0, new int[] {band}) + : tileRowRaster; - for (int row = startRow; row < startRow + rowsInTile; row++) { - if (row >= srcRegion.y + srcRegion.height) { - break; // We're done with this tile - } - - readFully(input, rowDataInt); - - if (row >= srcRegion.y) { - normalizeColor(interpretation, rowDataInt); - - // Subsample horizontal - if (xSub != 1) { - for (int x = srcRegion.x / xSub * numBands; x < ((srcRegion.x + colsInTile) / xSub) * numBands; x += numBands) { - System.arraycopy(rowDataInt, x * xSub, rowDataInt, x, numBands); - } - } - - destChannel.setDataElements(startCol / xSub, (row - srcRegion.y) / ySub, srcChannel); - } - // Else skip data + for (int row = startRow; row < startRow + rowsInTile; row++) { + if (row >= srcRegion.y + srcRegion.height) { + break; // We're done with this tile } - } - break; + readFully(input, rowDataInt); + + if (row >= srcRegion.y) { + normalizeColor(interpretation, rowDataInt); + + // Subsample horizontal + if (xSub != 1) { + for (int x = srcRegion.x / xSub * numBands; x < ((srcRegion.x + colsInTile) / xSub) * numBands; x += numBands) { + System.arraycopy(rowDataInt, x * xSub, rowDataInt, x, numBands); + } + } + + destChannel.setDataElements(startCol / xSub, (row - srcRegion.y) / ySub, srcChannel); + } + // Else skip data + } + } + + break; case DataBuffer.TYPE_FLOAT: /*for (int band = 0; band < bands; band++)*/ { - float[] rowDataFloat = ((DataBufferFloat) tileRowRaster.getDataBuffer()).getData(band); + float[] rowDataFloat = ((DataBufferFloat) tileRowRaster.getDataBuffer()).getData(band); - WritableRaster destChannel = banded - ? raster.createWritableChild(raster.getMinX(), raster.getMinY(), raster.getWidth(), raster.getHeight(), 0, 0, new int[] {band}) - : raster; - Raster srcChannel = banded - ? tileRowRaster.createChild(tileRowRaster.getMinX(), 0, tileRowRaster.getWidth(), 1, 0, 0, new int[] {band}) - : tileRowRaster; + WritableRaster destChannel = banded + ? raster.createWritableChild(raster.getMinX(), raster.getMinY(), raster.getWidth(), raster.getHeight(), 0, 0, new int[] {band}) + : raster; + Raster srcChannel = banded + ? tileRowRaster.createChild(tileRowRaster.getMinX(), 0, tileRowRaster.getWidth(), 1, 0, 0, new int[] {band}) + : tileRowRaster; - for (int row = startRow; row < startRow + rowsInTile; row++) { - if (row >= srcRegion.y + srcRegion.height) { - break; // We're done with this tile - } - - readFully(input, rowDataFloat); - - if (row >= srcRegion.y) { - normalizeColor(interpretation, rowDataFloat); - - // Subsample horizontal - if (xSub != 1) { - for (int x = srcRegion.x / xSub * numBands; x < ((srcRegion.x + srcRegion.width) / xSub) * numBands; x += numBands) { - System.arraycopy(rowDataFloat, x * xSub, rowDataFloat, x, numBands); - } - } - - destChannel.setDataElements(startCol, row - srcRegion.y, srcChannel); - } - // Else skip data + for (int row = startRow; row < startRow + rowsInTile; row++) { + if (row >= srcRegion.y + srcRegion.height) { + break; // We're done with this tile } - } - break; + readFully(input, rowDataFloat); + + if (row >= srcRegion.y) { + normalizeColor(interpretation, rowDataFloat); + + // Subsample horizontal + if (xSub != 1) { + for (int x = srcRegion.x / xSub * numBands; x < ((srcRegion.x + srcRegion.width) / xSub) * numBands; x += numBands) { + System.arraycopy(rowDataFloat, x * xSub, rowDataFloat, x, numBands); + } + } + + destChannel.setDataElements(startCol, row - srcRegion.y, srcChannel); + } + // Else skip data + } + } + + break; } } @@ -2287,7 +2287,7 @@ public final class TIFFImageReader extends ImageReaderBase { private InputStream createDecompressorStream(final int compression, final int width, final int bands, final InputStream stream) throws IOException { int fillOrder = getValueAsIntWithDefault(TIFF.TAG_FILL_ORDER, 1); - switch (compression) { + switch (compression) { case TIFFBaseline.COMPRESSION_NONE: return stream; case TIFFBaseline.COMPRESSION_PACKBITS: diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModelTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModelTest.java new file mode 100644 index 00000000..d69875e2 --- /dev/null +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModelTest.java @@ -0,0 +1,107 @@ +package com.twelvemonkeys.imageio.plugins.tiff; + +import com.twelvemonkeys.image.ResampleOp; +import com.twelvemonkeys.imageio.color.ColorSpaces; +import org.junit.Test; + +import java.awt.*; +import java.awt.color.ColorSpace; +import java.awt.image.*; +import java.util.Hashtable; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class ExtraSamplesColorModelTest { + + private BufferedImage createExtraSamplesImage(int w, int h, ColorSpace cs, boolean hasAlpha, int extraComponents) { + int samplesPerPixel = cs.getNumComponents() + (hasAlpha ? 1 : 0) + extraComponents; + + ExtraSamplesColorModel colorModel = new ExtraSamplesColorModel(cs, hasAlpha, true, DataBuffer.TYPE_BYTE, extraComponents); + SampleModel sampleModel = new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE, w, h, samplesPerPixel, samplesPerPixel * w, createOffsets(samplesPerPixel)); + + WritableRaster raster = Raster.createWritableRaster(sampleModel, new Point(0, 0)); + + return new BufferedImage(colorModel, raster, colorModel.isAlphaPremultiplied(), new Hashtable()); + } + + private static int[] createOffsets(int samplesPerPixel) { + int[] offsets = new int[samplesPerPixel]; + for (int i = 0; i < samplesPerPixel; i++) { + offsets[i] = i; + } + return offsets; + } + + @Test + public void testImageWithExtraSamplesCanBeResampledGray() { + for (int i = 1; i < 8; i++) { + BufferedImage bufferedImage = createExtraSamplesImage(10, 10, ColorSpaces.getColorSpace(ColorSpace.CS_GRAY), false, i); + BufferedImage resampled = new ResampleOp(5, 5, ResampleOp.FILTER_LANCZOS).filter(bufferedImage, null); + + assertNotNull(resampled); + assertEquals(5, resampled.getWidth()); + assertEquals(5, resampled.getHeight()); + } + } + + @Test + public void testImageWithExtraSamplesCanBeResampledGrayAlpha() { + for (int i = 1; i < 8; i++) { + BufferedImage bufferedImage = createExtraSamplesImage(10, 10, ColorSpaces.getColorSpace(ColorSpace.CS_GRAY), true, i); + BufferedImage resampled = new ResampleOp(5, 5, ResampleOp.FILTER_LANCZOS).filter(bufferedImage, null); + + assertNotNull(resampled); + assertEquals(5, resampled.getWidth()); + assertEquals(5, resampled.getHeight()); + } + } + + @Test + public void testImageWithExtraSamplesCanBeResampledRGB() { + for (int i = 1; i < 8; i++) { + BufferedImage bufferedImage = createExtraSamplesImage(10, 10, ColorSpaces.getColorSpace(ColorSpace.CS_sRGB), false, i); + BufferedImage resampled = new ResampleOp(5, 5, ResampleOp.FILTER_LANCZOS).filter(bufferedImage, null); + + assertNotNull(resampled); + assertEquals(5, resampled.getWidth()); + assertEquals(5, resampled.getHeight()); + } + } + + @Test + public void testImageWithExtraSamplesCanBeResampledRGBAlpha() { + for (int i = 1; i < 8; i++) { + BufferedImage bufferedImage = createExtraSamplesImage(10, 10, ColorSpaces.getColorSpace(ColorSpace.CS_sRGB), true, i); + BufferedImage resampled = new ResampleOp(5, 5, ResampleOp.FILTER_LANCZOS).filter(bufferedImage, null); + + assertNotNull(resampled); + assertEquals(5, resampled.getWidth()); + assertEquals(5, resampled.getHeight()); + } + } + + @Test + public void testImageWithExtraSamplesCanBeResampledCMYK() { + for (int i = 1; i < 8; i++) { + BufferedImage bufferedImage = createExtraSamplesImage(10, 10, ColorSpaces.getColorSpace(ColorSpaces.CS_GENERIC_CMYK), false, i); + BufferedImage resampled = new ResampleOp(5, 5, ResampleOp.FILTER_LANCZOS).filter(bufferedImage, null); + + assertNotNull(resampled); + assertEquals(5, resampled.getWidth()); + assertEquals(5, resampled.getHeight()); + } + } + + @Test + public void testImageWithExtraSamplesCanBeResampledCMYKAlpha() { + for (int i = 1; i < 8; i++) { + BufferedImage bufferedImage = createExtraSamplesImage(10, 10, ColorSpaces.getColorSpace(ColorSpaces.CS_GENERIC_CMYK), true, i); + BufferedImage resampled = new ResampleOp(5, 5, ResampleOp.FILTER_LANCZOS).filter(bufferedImage, null); + + assertNotNull(resampled); + assertEquals(5, resampled.getWidth()); + assertEquals(5, resampled.getHeight()); + } + } +} \ No newline at end of file From 24c6682236e5a02151359486aa4075ddc5ab1534 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 18 Aug 2018 19:22:52 +0200 Subject: [PATCH 017/277] #311 Updated license headers to be the same as in the LICENSE.txt --- .../image/AbstractImageSource.java | 44 +- .../image/AffineTransformOp.java | 40 +- .../twelvemonkeys/image/AreaAverageOp.java | 40 +- .../image/BrightnessContrastFilter.java | 40 +- .../image/BufferedImageFactory.java | 40 +- .../image/BufferedImageIcon.java | 44 +- .../image/ConvolveWithEdgeOp.java | 44 +- .../com/twelvemonkeys/image/CopyDither.java | 48 +- .../twelvemonkeys/image/DiffusionDither.java | 39 +- .../com/twelvemonkeys/image/GraphicsUtil.java | 40 +- .../twelvemonkeys/image/GrayColorModel.java | 42 +- .../com/twelvemonkeys/image/GrayFilter.java | 42 +- .../image/ImageConversionException.java | 40 +- .../image/ImageFilterException.java | 40 +- .../com/twelvemonkeys/image/ImageUtil.java | 40 +- .../com/twelvemonkeys/image/IndexImage.java | 40 +- .../twelvemonkeys/image/InverseColorMap.java | 40 +- .../image/InverseColorMapIndexColorModel.java | 40 +- .../java/com/twelvemonkeys/image/Magick.java | 31 + .../image/MagickAccelerator.java | 49 +- .../com/twelvemonkeys/image/MagickUtil.java | 45 +- .../image/MonochromeColorModel.java | 43 +- .../com/twelvemonkeys/image/PixelizeOp.java | 40 +- .../com/twelvemonkeys/image/ResampleOp.java | 40 +- .../image/SubsamplingFilter.java | 40 +- .../com/twelvemonkeys/image/package-info.java | 30 + .../image/AffineTransformOpTest.java | 34 +- ...ase.java => BufferedImageFactoryTest.java} | 33 +- ...geUtilTestCase.java => ImageUtilTest.java} | 1039 ++--- ...pleOpTestCase.java => ResampleOpTest.java} | 32 +- .../io/AbstractCachedSeekableStream.java | 30 + .../com/twelvemonkeys/io/CompoundReader.java | 42 +- .../com/twelvemonkeys/io/EmptyReader.java | 40 +- .../io/FastByteArrayOutputStream.java | 42 +- .../io/FileCacheSeekableStream.java | 40 +- .../twelvemonkeys/io/FileSeekableStream.java | 45 +- .../java/com/twelvemonkeys/io/FileSystem.java | 40 +- .../java/com/twelvemonkeys/io/FileUtil.java | 46 +- .../twelvemonkeys/io/FilenameMaskFilter.java | 40 +- .../io/LittleEndianDataInputStream.java | 40 +- .../io/LittleEndianDataOutputStream.java | 40 +- .../io/LittleEndianRandomAccessFile.java | 40 +- .../io/MemoryCacheSeekableStream.java | 40 +- .../com/twelvemonkeys/io/NullInputStream.java | 40 +- .../twelvemonkeys/io/NullOutputStream.java | 40 +- .../twelvemonkeys/io/RandomAccessStream.java | 42 +- .../java/com/twelvemonkeys/io/Seekable.java | 40 +- .../twelvemonkeys/io/SeekableInputStream.java | 40 +- .../io/SeekableOutputStream.java | 42 +- .../twelvemonkeys/io/StringArrayReader.java | 42 +- .../java/com/twelvemonkeys/io/SubStream.java | 40 +- .../com/twelvemonkeys/io/UnixFileSystem.java | 42 +- .../java/com/twelvemonkeys/io/Win32File.java | 45 +- .../com/twelvemonkeys/io/Win32FileSystem.java | 42 +- .../java/com/twelvemonkeys/io/Win32Lnk.java | 40 +- .../twelvemonkeys/io/WriterOutputStream.java | 42 +- .../twelvemonkeys/io/enc/Base64Decoder.java | 40 +- .../twelvemonkeys/io/enc/Base64Encoder.java | 42 +- .../twelvemonkeys/io/enc/DecodeException.java | 40 +- .../com/twelvemonkeys/io/enc/Decoder.java | 40 +- .../twelvemonkeys/io/enc/DecoderStream.java | 40 +- .../com/twelvemonkeys/io/enc/Encoder.java | 40 +- .../twelvemonkeys/io/enc/EncoderStream.java | 40 +- .../twelvemonkeys/io/enc/PackBitsDecoder.java | 40 +- .../twelvemonkeys/io/enc/PackBitsEncoder.java | 42 +- .../twelvemonkeys/io/enc/package-info.java | 30 + .../io/ole2/CompoundDocument.java | 40 +- .../io/ole2/CorruptDocumentException.java | 40 +- .../java/com/twelvemonkeys/io/ole2/Entry.java | 40 +- .../com/twelvemonkeys/io/ole2/SIdChain.java | 40 +- .../twelvemonkeys/io/ole2/package-info.java | 30 + .../com/twelvemonkeys/io/package_info.java | 29 + .../java/com/twelvemonkeys/net/HTTPUtil.java | 40 +- .../java/com/twelvemonkeys/net/MIMEUtil.java | 40 +- .../com/twelvemonkeys/net/package_info.java | 30 + .../com/twelvemonkeys/xml/DOMSerializer.java | 45 +- .../com/twelvemonkeys/xml/XMLSerializer.java | 40 +- .../com/twelvemonkeys/xml/package_info.java | 31 +- ...rTestCase.java => CompoundReaderTest.java} | 166 +- .../io/FastByteArrayOutputStreamTest.java | 66 + .../io/FastByteArrayOutputStreamTestCase.java | 36 - .../io/FileCacheSeekableStreamTest.java | 52 + .../io/FileCacheSeekableStreamTestCase.java | 22 - ...tCase.java => FileSeekableStreamTest.java} | 178 +- ...Case.java => InputStreamAbstractTest.java} | 867 +++-- .../io/LittleEndianDataInputStreamTest.java | 40 +- .../io/MemoryCacheSeekableStreamTest.java | 46 + .../io/MemoryCacheSeekableStreamTestCase.java | 16 - ...ase.java => OutputStreamAbstractTest.java} | 539 +-- ...tTestCase.java => ReaderAbstractTest.java} | 478 +-- .../io/SeekableAbstractTest.java | 58 + .../io/SeekableAbstractTestCase.java | 27 - ...a => SeekableInputStreamAbstractTest.java} | 1006 ++--- .../io/SeekableInterfaceTest.java | 30 + .../io/StringArrayReaderTest.java | 86 + .../io/StringArrayReaderTestCase.java | 56 - ...erTestCase.java => Base64DecoderTest.java} | 172 +- ...erTestCase.java => Base64EncoderTest.java} | 166 +- ...TestCase.java => DecoderAbstractTest.java} | 260 +- ...TestCase.java => EncoderAbstractTest.java} | 309 +- .../io/enc/PackBitsDecoderTest.java | 48 + .../io/enc/PackBitsDecoderTestCase.java | 18 - .../io/enc/PackBitsEncoderTest.java | 48 + .../io/enc/PackBitsEncoderTestCase.java | 18 - ...estCase.java => CompoundDocumentTest.java} | 32 +- ...ekableLittleEndianDataInputStreamTest.java | 62 + ...leLittleEndianDataInputStreamTestCase.java | 60 - ....java => CompoundDocument_StreamTest.java} | 44 +- .../com/twelvemonkeys/net/HTTPUtilTest.java | 42 +- .../java/com/twelvemonkeys/lang/BeanUtil.java | 42 +- .../java/com/twelvemonkeys/lang/DateUtil.java | 40 +- .../java/com/twelvemonkeys/lang/Platform.java | 40 +- .../com/twelvemonkeys/lang/ReflectUtil.java | 40 +- .../com/twelvemonkeys/lang/StringUtil.java | 48 +- .../com/twelvemonkeys/lang/SystemUtil.java | 42 +- .../java/com/twelvemonkeys/lang/Validate.java | 30 + .../com/twelvemonkeys/lang/package_info.java | 30 + .../util/AbstractDecoratedMap.java | 42 +- .../util/AbstractTokenIterator.java | 40 +- .../java/com/twelvemonkeys/util/BeanMap.java | 42 +- .../twelvemonkeys/util/CollectionUtil.java | 40 +- .../twelvemonkeys/util/DuplicateHandler.java | 40 +- .../com/twelvemonkeys/util/ExpiringMap.java | 40 +- .../twelvemonkeys/util/FilterIterator.java | 40 +- .../com/twelvemonkeys/util/IgnoreCaseMap.java | 42 +- .../com/twelvemonkeys/util/LRUHashMap.java | 44 +- .../java/com/twelvemonkeys/util/LRUMap.java | 40 +- .../com/twelvemonkeys/util/LinkedMap.java | 42 +- .../com/twelvemonkeys/util/LinkedSet.java | 42 +- .../java/com/twelvemonkeys/util/NullMap.java | 45 +- .../util/StringTokenIterator.java | 40 +- .../java/com/twelvemonkeys/util/Time.java | 40 +- .../com/twelvemonkeys/util/TimeFormat.java | 41 +- .../com/twelvemonkeys/util/TimeoutMap.java | 40 +- .../com/twelvemonkeys/util/TokenIterator.java | 42 +- .../java/com/twelvemonkeys/util/Visitor.java | 30 + .../com/twelvemonkeys/util/WeakWeakMap.java | 42 +- .../util/convert/ConversionException.java | 40 +- .../twelvemonkeys/util/convert/Converter.java | 40 +- .../util/convert/ConverterImpl.java | 40 +- .../util/convert/DateConverter.java | 49 +- .../util/convert/DefaultConverter.java | 40 +- .../util/convert/MissingTypeException.java | 40 +- .../NoAvailableConverterException.java | 40 +- .../util/convert/NumberConverter.java | 50 +- .../util/convert/PropertyConverter.java | 40 +- .../util/convert/TimeConverter.java | 42 +- .../util/convert/TypeMismathException.java | 40 +- .../util/convert/pacakge_info.java | 30 + .../com/twelvemonkeys/util/package_info.java | 30 + .../util/regex/RegExTokenIterator.java | 40 +- .../util/regex/WildcardStringParser.java | 40 +- .../util/regex/package_info.java | 30 + .../util/service/RegisterableService.java | 40 +- .../service/ServiceConfigurationError.java | 40 +- .../util/service/ServiceRegistry.java | 40 +- .../util/service/package_info.java | 30 + ...eanUtilTestCase.java => BeanUtilTest.java} | 509 +-- .../com/twelvemonkeys/lang/DateUtilTest.java | 40 +- ...tTestCase.java => ObjectAbstractTest.java} | 648 ++-- .../com/twelvemonkeys/lang/PlatformTest.java | 43 +- ...gUtilTestCase.java => StringUtilTest.java} | 1805 ++++----- .../twelvemonkeys/lang/SystemUtilTest.java | 40 +- .../com/twelvemonkeys/lang/ValidateTest.java | 40 +- ...{BeanMapTestCase.java => BeanMapTest.java} | 322 +- ...tCase.java => CollectionAbstractTest.java} | 2667 ++++++------- .../util/CollectionUtilTest.java | 41 +- .../{LRUMapTestCase.java => LRUMapTest.java} | 402 +- ...kedMapTestCase.java => LinkedMapTest.java} | 389 +- ...ractTestCase.java => MapAbstractTest.java} | 3362 +++++++++-------- ...{NullMapTestCase.java => NullMapTest.java} | 447 ++- ...tTestCase.java => ObjectAbstractTest.java} | 654 ++-- ...ractTestCase.java => SetAbstractTest.java} | 398 +- ...Case.java => StringTokenIteratorTest.java} | 254 +- ...utMapTestCase.java => TimeoutMapTest.java} | 1287 +++---- .../util/TokenIteratorAbstractTest.java | 86 + .../util/TokenIteratorAbstractTestCase.java | 52 - .../util/convert/ConverterTest.java | 51 + .../util/convert/ConverterTestCase.java | 18 - ...erTestCase.java => DateConverterTest.java} | 152 +- ...estCase.java => DefaultConverterTest.java} | 330 +- ...TestCase.java => NumberConverterTest.java} | 114 +- ...ava => PropertyConverterAbstractTest.java} | 338 +- .../util/convert/TimeConverterTest.java | 49 + .../util/convert/TimeConverterTestCase.java | 19 - ...tCase.java => RegExTokenIteratorTest.java} | 275 +- .../twelvemonkeys/util/service/DummySPI.java | 40 +- .../util/service/DummySPIImpl.java | 40 +- .../util/service/DummySPIToo.java | 40 +- .../util/service/ServiceRegistryTest.java | 40 +- .../contrib/tiff/TIFFUtilities.java | 48 +- .../contrib/tiff/TIFFUtilitiesTest.java | 42 +- imageio/imageio-batik/license.txt | 38 +- .../imageio/plugins/svg/SVGImageReader.java | 40 +- .../plugins/svg/SVGImageReaderSpi.java | 40 +- .../imageio/plugins/svg/SVGProviderInfo.java | 40 +- .../imageio/plugins/svg/SVGReadParam.java | 40 +- .../imageio/plugins/wmf/WMF.java | 43 +- .../imageio/plugins/wmf/WMFImageReader.java | 40 +- .../plugins/wmf/WMFImageReaderSpi.java | 40 +- .../imageio/plugins/wmf/WMFProviderInfo.java | 41 +- .../plugins/svg/SVGImageReaderSpiTest.java | 30 + .../plugins/svg/SVGImageReaderTest.java | 40 +- .../plugins/svg/SVGProviderInfoTest.java | 30 + .../plugins/wmf/WMFImageReaderTest.java | 40 +- .../plugins/wmf/WMFProviderInfoTest.java | 30 + imageio/imageio-bmp/license.txt | 38 +- imageio/imageio-clippath/license.txt | 38 +- .../imageio/path/AdobePathBuilder.java | 40 +- .../imageio/path/AdobePathSegment.java | 40 +- .../com/twelvemonkeys/imageio/path/Paths.java | 40 +- .../imageio/path/AdobePathBuilderTest.java | 30 + .../imageio/path/AdobePathSegmentTest.java | 30 + .../twelvemonkeys/imageio/path/PathsTest.java | 30 + imageio/imageio-core/license.txt | 39 +- .../imageio/AbstractMetadata.java | 40 +- .../imageio/ImageReaderBase.java | 40 +- .../imageio/ImageWriterBase.java | 40 +- .../imageio/color/CIELabColorConverter.java | 30 + .../imageio/color/CMYKColorSpace.java | 40 +- .../imageio/color/ColorSpaces.java | 40 +- .../color/DiscreteAlphaIndexColorModel.java | 30 + .../imageio/color/ICCProfileSanitizer.java | 30 + .../color/Int16ComponentColorModel.java | 40 +- .../imageio/color/KCMSSanitizerStrategy.java | 30 + .../imageio/color/LCMSSanitizerStrategy.java | 30 + .../imageio/color/UInt32ColorModel.java | 40 +- .../imageio/color/YCbCrConverter.java | 30 + .../imageio/spi/ImageReaderSpiBase.java | 30 + .../imageio/spi/ImageWriterSpiBase.java | 30 + .../imageio/spi/ProviderInfo.java | 41 +- .../imageio/spi/ReaderWriterProviderInfo.java | 40 +- .../imageio/spi/package-info.java | 30 + .../stream/BufferedImageInputStream.java | 30 + .../stream/ByteArrayImageInputStream.java | 30 + .../stream/ByteArrayImageInputStreamSpi.java | 30 + .../imageio/stream/SubImageInputStream.java | 30 + .../imageio/stream/SubImageOutputStream.java | 30 + .../stream/URLImageInputStreamSpi.java | 30 + .../imageio/stream/package-info.java | 30 + .../imageio/util/IIOInputStreamAdapter.java | 40 +- .../imageio/util/IIOOutputStreamAdapter.java | 40 +- .../twelvemonkeys/imageio/util/IIOUtil.java | 41 +- .../imageio/util/ImageTypeSpecifiers.java | 40 +- .../util/IndexedImageTypeSpecifier.java | 30 + .../imageio/util/Int16ImageTypeSpecifier.java | 42 +- .../imageio/util/ProgressListenerBase.java | 40 +- .../imageio/util/ReaderFileSuffixFilter.java | 40 +- .../util/UInt32ImageTypeSpecifier.java | 40 +- .../imageio/util/WriterFileSuffixFilter.java | 40 +- .../imageio/util/package-info.java | 30 + .../imageio/color/icc_profiles_lnx.properties | 40 +- .../imageio/color/icc_profiles_osx.properties | 40 +- .../imageio/color/icc_profiles_win.properties | 40 +- .../imageio/ImageReaderBaseTest.java | 40 +- .../color/CIELabColorConverterTest.java | 30 + .../imageio/color/ColorSpacesTest.java | 40 +- .../DiscreteAlphaIndexColorModelTest.java | 30 + .../color/KCMSSanitizerStrategyTest.java | 30 + .../color/LCMSSanitizerStrategyTest.java | 30 + .../imageio/color/UInt32ColorModelTest.java | 30 + ...nfoTestCase.java => ProviderInfoTest.java} | 45 +- .../spi/ReaderWriterProviderInfoTest.java | 30 + .../stream/BufferedImageInputStreamTest.java | 30 + .../stream/ByteArrayImageInputStreamTest.java | 30 + .../stream/SubImageInputStreamTest.java | 30 + ...se.java => IIOInputStreamAdapterTest.java} | 7 +- ...e.java => IIOOutputStreamAdapterTest.java} | 6 +- ...Case.java => ImageWriterAbstractTest.java} | 726 ++-- imageio/imageio-hdr/license.txt | 27 + .../imageio/plugins/hdr/HDR.java | 40 +- .../imageio/plugins/hdr/HDRHeader.java | 40 +- .../plugins/hdr/HDRImageReadParam.java | 40 +- .../imageio/plugins/hdr/HDRImageReader.java | 40 +- .../plugins/hdr/HDRImageReaderSpi.java | 40 +- .../imageio/plugins/hdr/HDRMetadata.java | 40 +- .../imageio/plugins/hdr/HDRProviderInfo.java | 42 +- .../hdr/tonemap/DefaultToneMapper.java | 40 +- .../plugins/hdr/tonemap/GammaToneMapper.java | 40 +- .../plugins/hdr/tonemap/NullToneMapper.java | 40 +- .../plugins/hdr/tonemap/ToneMapper.java | 40 +- .../plugins/hdr/HDRImageReaderTest.java | 40 +- .../plugins/hdr/HDRProviderInfoTest.java | 30 + imageio/imageio-icns/license.txt | 27 + .../imageio/plugins/icns/ICNS.java | 40 +- .../plugins/icns/ICNS1BitColorModel.java | 40 +- .../plugins/icns/ICNS4BitColorModel.java | 40 +- .../plugins/icns/ICNS8BitColorModel.java | 40 +- .../imageio/plugins/icns/ICNSImageReader.java | 40 +- .../plugins/icns/ICNSImageReaderSpi.java | 40 +- .../plugins/icns/ICNSProviderInfo.java | 40 +- .../imageio/plugins/icns/ICNSUtil.java | 40 +- .../imageio/plugins/icns/IconResource.java | 40 +- .../imageio/plugins/icns/SipsJP2Reader.java | 40 +- .../services/javax.imageio.spi.ImageReaderSpi | 27 - .../plugins/icns/ICNSImageReaderTest.java | 40 +- .../plugins/icns/ICNSProviderInfoTest.java | 30 + imageio/imageio-iff/license.txt | 38 +- ...nk.java => AbstractMultiPaletteChunk.java} | 40 +- .../imageio/plugins/iff/BMHDChunk.java | 40 +- .../imageio/plugins/iff/BODYChunk.java | 42 +- .../imageio/plugins/iff/CAMGChunk.java | 40 +- .../imageio/plugins/iff/CMAPChunk.java | 40 +- .../imageio/plugins/iff/CTBLChunk.java | 40 +- .../imageio/plugins/iff/GRABChunk.java | 40 +- .../imageio/plugins/iff/GenericChunk.java | 42 +- .../imageio/plugins/iff/IFF.java | 40 +- .../imageio/plugins/iff/IFFChunk.java | 42 +- .../imageio/plugins/iff/IFFImageReader.java | 40 +- .../plugins/iff/IFFImageReaderSpi.java | 40 +- .../imageio/plugins/iff/IFFImageWriter.java | 40 +- .../plugins/iff/IFFImageWriterSpi.java | 40 +- .../imageio/plugins/iff/IFFProviderInfo.java | 40 +- .../imageio/plugins/iff/IFFUtil.java | 40 +- .../imageio/plugins/iff/MultiPalette.java | 45 + .../imageio/plugins/iff/Multipalette.java | 43 - .../plugins/iff/MutableIndexColorModel.java | 40 +- .../imageio/plugins/iff/PCHGChunk.java | 40 +- .../imageio/plugins/iff/SHAMChunk.java | 40 +- .../plugins/iff/IFFImageReaderTest.java | 40 +- .../plugins/iff/IFFImageWriterTest.java | 44 +- .../plugins/iff/IFFProviderInfoTest.java | 30 + imageio/imageio-jpeg/license.txt | 38 +- .../imageio/plugins/jpeg/AdobeDCT.java | 40 +- .../imageio/plugins/jpeg/Application.java | 40 +- .../imageio/plugins/jpeg/Comment.java | 40 +- .../plugins/jpeg/EXIFThumbnailReader.java | 40 +- .../imageio/plugins/jpeg/FastCMYKToRGB.java | 40 +- .../imageio/plugins/jpeg/Frame.java | 40 +- .../imageio/plugins/jpeg/HuffmanTable.java | 40 +- .../imageio/plugins/jpeg/ICCProfile.java | 40 +- .../imageio/plugins/jpeg/JFIF.java | 40 +- .../plugins/jpeg/JFIFThumbnailReader.java | 40 +- .../imageio/plugins/jpeg/JFXX.java | 40 +- .../plugins/jpeg/JFXXThumbnailReader.java | 40 +- .../imageio/plugins/jpeg/JPEGColorSpace.java | 40 +- .../plugins/jpeg/JPEGImage10Metadata.java | 29 + .../jpeg/JPEGImage10MetadataCleaner.java | 30 + .../imageio/plugins/jpeg/JPEGImageReader.java | 40 +- .../plugins/jpeg/JPEGImageReaderSpi.java | 40 +- .../imageio/plugins/jpeg/JPEGImageWriter.java | 40 +- .../plugins/jpeg/JPEGImageWriterSpi.java | 40 +- .../plugins/jpeg/JPEGLosslessDecoder.java | 40 +- .../jpeg/JPEGLosslessDecoderWrapper.java | 40 +- .../plugins/jpeg/JPEGProviderInfo.java | 40 +- .../jpeg/JPEGSegmentImageInputStream.java | 40 +- .../JPEGSegmentStreamWarningListener.java | 30 + .../plugins/jpeg/QuantizationTable.java | 40 +- .../imageio/plugins/jpeg/RestartInterval.java | 40 +- .../imageio/plugins/jpeg/Scan.java | 40 +- .../imageio/plugins/jpeg/Segment.java | 40 +- .../jpeg/ThumbnailReadProgressListener.java | 40 +- .../imageio/plugins/jpeg/ThumbnailReader.java | 40 +- .../imageio/plugins/jpeg/Unknown.java | 42 +- .../jpeg/AbstractThumbnailReaderTest.java | 40 +- .../plugins/jpeg/EXIFThumbnailReaderTest.java | 40 +- .../plugins/jpeg/FastCMYKToRGBTest.java | 40 +- .../plugins/jpeg/JFIFThumbnailReaderTest.java | 40 +- .../plugins/jpeg/JFXXThumbnailReaderTest.java | 40 +- .../jpeg/JPEGImage10MetadataCleanerTest.java | 30 + .../plugins/jpeg/JPEGImageReaderTest.java | 40 +- .../plugins/jpeg/JPEGImageWriterTest.java | 44 +- .../plugins/jpeg/JPEGProviderInfoTest.java | 30 + .../jpeg/JPEGSegmentImageInputStreamTest.java | 40 +- imageio/imageio-metadata/license.txt | 38 +- .../metadata/AbstractCompoundDirectory.java | 40 +- .../imageio/metadata/AbstractDirectory.java | 40 +- .../imageio/metadata/AbstractEntry.java | 40 +- .../imageio/metadata/CompoundDirectory.java | 40 +- .../imageio/metadata/Directory.java | 40 +- .../twelvemonkeys/imageio/metadata/Entry.java | 40 +- .../imageio/metadata/MetadataReader.java | 40 +- .../imageio/metadata/MetadataWriter.java | 30 + .../imageio/metadata/exif/EXIF.java | 40 +- .../imageio/metadata/exif/EXIFReader.java | 40 +- .../imageio/metadata/exif/EXIFWriter.java | 40 +- .../imageio/metadata/exif/Rational.java | 46 +- .../imageio/metadata/exif/TIFF.java | 40 +- .../imageio/metadata/iptc/IPTC.java | 40 +- .../imageio/metadata/iptc/IPTCDirectory.java | 40 +- .../imageio/metadata/iptc/IPTCEntry.java | 40 +- .../imageio/metadata/iptc/IPTCReader.java | 40 +- .../imageio/metadata/iptc/IPTCWriter.java | 30 + .../imageio/metadata/jpeg/JPEG.java | 40 +- .../imageio/metadata/jpeg/JPEGQuality.java | 40 +- .../imageio/metadata/jpeg/JPEGSegment.java | 40 +- .../metadata/jpeg/JPEGSegmentUtil.java | 40 +- .../imageio/metadata/psd/PSD.java | 40 +- .../imageio/metadata/psd/PSDDirectory.java | 40 +- .../imageio/metadata/psd/PSDEntry.java | 40 +- .../imageio/metadata/psd/PSDReader.java | 40 +- .../imageio/metadata/tiff/IFD.java | 40 +- .../imageio/metadata/tiff/Rational.java | 40 +- .../imageio/metadata/tiff/TIFF.java | 40 +- .../imageio/metadata/tiff/TIFFDirectory.java | 42 +- .../imageio/metadata/tiff/TIFFEntry.java | 40 +- .../imageio/metadata/tiff/TIFFReader.java | 40 +- .../imageio/metadata/tiff/TIFFWriter.java | 40 +- .../imageio/metadata/tiff/Unknown.java | 30 + .../AbstractCompoundDirectoryTest.java | 40 +- .../metadata/AbstractDirectoryTest.java | 40 +- .../imageio/metadata/AbstractEntryTest.java | 40 +- .../CompoundDirectoryAbstractTest.java | 42 +- .../metadata/DirectoryAbstractTest.java | 44 +- .../imageio/metadata/EntryAbstractTest.java | 44 +- .../metadata/MetadataReaderAbstractTest.java | 40 +- .../metadata/MetadataWriterAbstractTest.java | 40 +- .../imageio/metadata/exif/EXIFReaderTest.java | 40 +- .../imageio/metadata/exif/EXIFWriterTest.java | 40 +- .../imageio/metadata/exif/RationalTest.java | 30 + .../metadata/iptc/IPTCDirectoryTest.java | 40 +- .../imageio/metadata/iptc/IPTCEntryTest.java | 40 +- .../imageio/metadata/iptc/IPTCReaderTest.java | 43 +- .../imageio/metadata/iptc/IPTCWriterTest.java | 30 + .../metadata/jpeg/JPEGQualityTest.java | 43 +- .../metadata/jpeg/JPEGSegmentTest.java | 44 +- .../metadata/jpeg/JPEGSegmentUtilTest.java | 43 +- .../metadata/psd/PSDDirectoryTest.java | 40 +- .../imageio/metadata/psd/PSDEntryTest.java | 40 +- .../imageio/metadata/psd/PSDReaderTest.java | 40 +- .../imageio/metadata/tiff/IFDTest.java | 40 +- .../imageio/metadata/tiff/RationalTest.java | 30 + .../metadata/tiff/TIFFDirectoryTest.java | 40 +- .../imageio/metadata/tiff/TIFFEntryTest.java | 40 +- .../imageio/metadata/tiff/TIFFReaderTest.java | 40 +- .../imageio/metadata/tiff/TIFFWriterTest.java | 40 +- .../imageio/metadata/tiff/UnknownTest.java | 44 +- .../metadata/xmp/RDFDescriptionTest.java | 40 +- .../metadata/xmp/XMPDirectoryTest.java | 40 +- .../imageio/metadata/xmp/XMPEntryTest.java | 40 +- .../imageio/metadata/xmp/XMPReaderTest.java | 40 +- ...annerTestCase.java => XMPScannerTest.java} | 34 +- imageio/imageio-pcx/license.txt | 38 +- .../imageio/plugins/dcx/DCX.java | 40 +- .../imageio/plugins/dcx/DCXHeader.java | 40 +- .../imageio/plugins/dcx/DCXImageReader.java | 40 +- .../plugins/dcx/DCXImageReaderSpi.java | 40 +- .../imageio/plugins/dcx/DCXProviderInfo.java | 40 +- .../imageio/plugins/pcx/BitRotator.java | 40 +- .../imageio/plugins/pcx/CGAColorModel.java | 40 +- .../imageio/plugins/pcx/PCX.java | 40 +- .../imageio/plugins/pcx/PCXHeader.java | 40 +- .../imageio/plugins/pcx/PCXImageReader.java | 40 +- .../plugins/pcx/PCXImageReaderSpi.java | 40 +- .../imageio/plugins/pcx/PCXMetadata.java | 40 +- .../imageio/plugins/pcx/PCXProviderInfo.java | 40 +- .../imageio/plugins/pcx/RLEDecoder.java | 40 +- .../plugins/dcx/DCXImageReaderTest.java | 40 +- .../plugins/dcx/DCXProviderInfoTest.java | 30 + .../plugins/pcx/PCXImageReaderTest.java | 40 +- .../plugins/pcx/PCXProviderInfoTest.java | 30 + imageio/imageio-pdf/license.txt | 40 +- imageio/imageio-pict/license.txt | 40 +- .../imageio/plugins/pict/BitMap.java | 30 + .../imageio/plugins/pict/BitMapPattern.java | 40 +- .../imageio/plugins/pict/PICT.java | 40 +- .../imageio/plugins/pict/PICTImageReader.java | 55 +- .../plugins/pict/PICTImageReaderSpi.java | 40 +- .../imageio/plugins/pict/PICTImageWriter.java | 54 +- .../plugins/pict/PICTImageWriterSpi.java | 40 +- .../plugins/pict/PICTProviderInfo.java | 40 +- .../imageio/plugins/pict/PICTUtil.java | 40 +- .../imageio/plugins/pict/Pattern.java | 40 +- .../imageio/plugins/pict/PenState.java | 40 +- .../imageio/plugins/pict/PixMap.java | 30 + .../imageio/plugins/pict/PixMapPattern.java | 40 +- .../imageio/plugins/pict/QDTest.java | 42 +- .../plugins/pict/QTBMPDecompressor.java | 40 +- .../imageio/plugins/pict/QTDecompressor.java | 40 +- .../plugins/pict/QTGenericDecompressor.java | 40 +- .../plugins/pict/QTRAWDecompressor.java | 40 +- .../imageio/plugins/pict/QuickDraw.java | 40 +- .../plugins/pict/QuickDrawComposite.java | 30 + .../plugins/pict/QuickDrawContext.java | 40 +- .../imageio/plugins/pict/QuickTime.java | 42 +- .../imageio/plugins/pict/RGBColor.java | 40 +- .../plugins/pict/TestPICTClippingApp.java | 224 -- .../plugins/pict/TestPICTEagerDetect.java | 26 - .../plugins/pict/PICTImageReaderTest.java | 30 + .../plugins/pict/PICTImageWriterTest.java | 44 +- .../plugins/pict/PICTProviderInfoTest.java | 30 + imageio/imageio-pnm/license.txt | 38 +- .../imageio/plugins/pnm/HeaderParser.java | 40 +- .../imageio/plugins/pnm/HeaderWriter.java | 40 +- .../imageio/plugins/pnm/PAMHeaderParser.java | 43 +- .../imageio/plugins/pnm/PAMHeaderWriter.java | 43 +- .../plugins/pnm/PAMImageWriterSpi.java | 40 +- .../imageio/plugins/pnm/PFMHeaderParser.java | 52 +- .../imageio/plugins/pnm/PNM.java | 40 +- .../imageio/plugins/pnm/PNMHeader.java | 43 +- .../imageio/plugins/pnm/PNMHeaderParser.java | 52 +- .../imageio/plugins/pnm/PNMHeaderWriter.java | 43 +- .../imageio/plugins/pnm/PNMImageReader.java | 81 +- .../plugins/pnm/PNMImageReaderSpi.java | 40 +- .../imageio/plugins/pnm/PNMImageWriter.java | 40 +- .../plugins/pnm/PNMImageWriterSpi.java | 40 +- .../imageio/plugins/pnm/PNMMetadata.java | 40 +- .../imageio/plugins/pnm/PNMProviderInfo.java | 30 + .../plugins/pnm/Plain16BitDecoder.java | 46 +- .../imageio/plugins/pnm/Plain1BitDecoder.java | 46 +- .../imageio/plugins/pnm/Plain8BitDecoder.java | 46 +- .../imageio/plugins/pnm/TupleType.java | 42 +- .../plugins/pnm/PAMImageWriterSpiTest.java | 30 + .../plugins/pnm/PNMImageReaderSpiTest.java | 30 + .../plugins/pnm/PNMImageReaderTest.java | 40 +- .../plugins/pnm/PNMImageWriterSpiTest.java | 30 + .../plugins/pnm/PNMProviderInfoTest.java | 30 + imageio/imageio-psd/license.txt | 38 +- .../imageio/plugins/psd/ICCProfile.java | 40 +- .../imageio/plugins/psd/PSD.java | 40 +- .../plugins/psd/PSDAlphaChannelInfo.java | 40 +- .../imageio/plugins/psd/PSDChannelInfo.java | 40 +- .../psd/PSDChannelSourceDestinationRange.java | 40 +- .../imageio/plugins/psd/PSDColorData.java | 40 +- .../plugins/psd/PSDDirectoryResource.java | 40 +- .../imageio/plugins/psd/PSDDisplayInfo.java | 42 +- .../imageio/plugins/psd/PSDEXIF1Data.java | 40 +- .../plugins/psd/PSDGlobalLayerMask.java | 40 +- .../plugins/psd/PSDGridAndGuideInfo.java | 40 +- .../imageio/plugins/psd/PSDHeader.java | 40 +- .../imageio/plugins/psd/PSDIPTCData.java | 40 +- .../imageio/plugins/psd/PSDImageReader.java | 40 +- .../plugins/psd/PSDImageReaderSpi.java | 40 +- .../imageio/plugins/psd/PSDImageResource.java | 40 +- .../plugins/psd/PSDLayerBlendMode.java | 40 +- .../imageio/plugins/psd/PSDLayerInfo.java | 40 +- .../imageio/plugins/psd/PSDLayerMaskData.java | 40 +- .../imageio/plugins/psd/PSDMetadata.java | 40 +- .../plugins/psd/PSDMetadataFormat.java | 40 +- .../imageio/plugins/psd/PSDPathResource.java | 40 +- .../plugins/psd/PSDPixelAspectRatio.java | 40 +- .../imageio/plugins/psd/PSDPrintFlags.java | 40 +- .../plugins/psd/PSDPrintFlagsInformation.java | 40 +- .../imageio/plugins/psd/PSDPrintScale.java | 40 +- .../imageio/plugins/psd/PSDProviderInfo.java | 40 +- .../plugins/psd/PSDResolutionInfo.java | 42 +- .../imageio/plugins/psd/PSDThumbnail.java | 40 +- .../plugins/psd/PSDUnicodeAlphaNames.java | 40 +- .../imageio/plugins/psd/PSDUtil.java | 40 +- .../imageio/plugins/psd/PSDVersionInfo.java | 40 +- .../imageio/plugins/psd/PSDXMPData.java | 40 +- .../plugins/psd/PSDImageReaderTest.java | 40 +- .../plugins/psd/PSDProviderInfoTest.java | 30 + imageio/imageio-reference/license.txt | 38 +- .../reference/JPEGImageReaderTest.java | 30 + .../imageio/reference/PNGImageReaderTest.java | 30 + imageio/imageio-sgi/license.txt | 42 +- .../imageio/plugins/sgi/RLEDecoder.java | 40 +- .../imageio/plugins/sgi/SGI.java | 40 +- .../imageio/plugins/sgi/SGIHeader.java | 43 +- .../imageio/plugins/sgi/SGIImageReader.java | 40 +- .../plugins/sgi/SGIImageReaderSpi.java | 49 +- .../imageio/plugins/sgi/SGIMetadata.java | 40 +- .../imageio/plugins/sgi/SGIProviderInfo.java | 40 +- .../plugins/sgi/SGIImageReaderTest.java | 40 +- .../plugins/sgi/SGIProviderInfoTest.java | 30 + imageio/imageio-tga/license.txt | 38 +- .../imageio/plugins/tga/RLEDecoder.java | 40 +- .../imageio/plugins/tga/TGA.java | 40 +- .../imageio/plugins/tga/TGAExtensions.java | 30 + .../imageio/plugins/tga/TGAHeader.java | 40 +- .../imageio/plugins/tga/TGAImageReader.java | 40 +- .../plugins/tga/TGAImageReaderSpi.java | 40 +- .../imageio/plugins/tga/TGAMetadata.java | 40 +- .../imageio/plugins/tga/TGAProviderInfo.java | 40 +- .../plugins/tga/TGAImageReaderTest.java | 40 +- .../plugins/tga/TGAProviderInfoTest.java | 30 + imageio/imageio-thumbsdb/license.txt | 38 +- .../imageio/plugins/thumbsdb/Catalog.java | 46 +- .../plugins/thumbsdb/ThumbsDBImageReader.java | 40 +- .../thumbsdb/ThumbsDBImageReaderSpi.java | 40 +- .../thumbsdb/ThumbsDBProviderInfo.java | 40 +- .../thumbsdb/ThumbsDBImageReaderTest.java | 40 +- .../thumbsdb/ThumbsDBProviderInfoTest.java | 30 + imageio/imageio-tiff/license.txt | 38 +- .../plugins/tiff/BigTIFFImageReaderSpi.java | 40 +- .../plugins/tiff/BigTIFFProviderInfo.java | 30 + .../plugins/tiff/BitPaddingStream.java | 40 +- .../plugins/tiff/CCITTFaxDecoderStream.java | 40 +- .../plugins/tiff/CCITTFaxEncoderStream.java | 40 +- .../plugins/tiff/ExtraSamplesColorModel.java | 30 + .../tiff/HorizontalDeDifferencingStream.java | 40 +- .../tiff/HorizontalDifferencingStream.java | 40 +- .../imageio/plugins/tiff/JPEGTables.java | 40 +- .../imageio/plugins/tiff/LZWDecoder.java | 40 +- .../imageio/plugins/tiff/LZWEncoder.java | 40 +- .../plugins/tiff/ReverseInputStream.java | 30 + .../imageio/plugins/tiff/TIFFBaseline.java | 40 +- .../imageio/plugins/tiff/TIFFCustom.java | 40 +- .../imageio/plugins/tiff/TIFFExtension.java | 40 +- .../plugins/tiff/TIFFImageMetadata.java | 40 +- .../imageio/plugins/tiff/TIFFImageReader.java | 40 +- .../plugins/tiff/TIFFImageReaderSpi.java | 40 +- .../plugins/tiff/TIFFImageWriteParam.java | 40 +- .../imageio/plugins/tiff/TIFFImageWriter.java | 40 +- .../plugins/tiff/TIFFImageWriterSpi.java | 40 +- .../plugins/tiff/TIFFMedataFormat.java | 40 +- .../plugins/tiff/TIFFProviderInfo.java | 40 +- .../plugins/tiff/TIFFStreamMetadata.java | 40 +- .../tiff/TIFFStreamMetadataFormat.java | 40 +- .../plugins/tiff/YCbCr16UpsamplerStream.java | 40 +- .../plugins/tiff/YCbCrUpsamplerStream.java | 40 +- .../plugins/tiff/BigTIFFImageReaderTest.java | 30 + .../plugins/tiff/BitPaddingStreamTest.java | 33 +- .../tiff/CCITTFaxDecoderStreamTest.java | 40 +- .../tiff/CCITTFaxEncoderStreamTest.java | 40 +- .../tiff/ExtraSamplesColorModelTest.java | 30 + .../HorizontalDeDifferencingStreamTest.java | 43 +- .../HorizontalDifferencingStreamTest.java | 40 +- .../imageio/plugins/tiff/LZWDecoderTest.java | 48 +- .../imageio/plugins/tiff/LZWEncoderTest.java | 40 +- .../plugins/tiff/TIFFImageMetadataTest.java | 29 + .../plugins/tiff/TIFFImageReaderTest.java | 44 +- .../plugins/tiff/TIFFImageWriterTest.java | 44 +- .../plugins/tiff/TIFFProviderInfoTest.java | 30 + .../plugins/tiff/TIFFStreamMetadataTest.java | 30 + .../tiff/YCbCr16UpsamplerStreamTest.java | 40 +- .../tiff/YCbCrUpsamplerStreamTest.java | 40 +- servlet/license.txt | 27 + .../servlet/AbstractServletMapAdapter.java | 35 +- .../servlet/BrowserHelperFilter.java | 40 +- .../twelvemonkeys/servlet/DebugServlet.java | 44 +- .../twelvemonkeys/servlet/GenericFilter.java | 40 +- .../twelvemonkeys/servlet/GenericServlet.java | 40 +- .../twelvemonkeys/servlet/HttpServlet.java | 40 +- .../com/twelvemonkeys/servlet/InitParam.java | 40 +- .../servlet/OutputStreamAdapter.java | 40 +- .../twelvemonkeys/servlet/ProxyServlet.java | 40 +- .../servlet/ServletAttributesMapAdapter.java | 40 +- .../servlet/ServletConfigException.java | 40 +- .../servlet/ServletConfigMapAdapter.java | 40 +- .../servlet/ServletConfigurator.java | 30 + .../servlet/ServletHeadersMapAdapter.java | 30 + .../servlet/ServletParametersMapAdapter.java | 30 + .../ServletResponseStreamDelegate.java | 40 +- .../twelvemonkeys/servlet/ServletUtil.java | 40 +- .../servlet/StaticContentServlet.java | 40 +- .../twelvemonkeys/servlet/ThrottleFilter.java | 40 +- .../twelvemonkeys/servlet/TimingFilter.java | 40 +- .../servlet/TrimWhiteSpaceFilter.java | 53 +- .../servlet/cache/AbstractCacheRequest.java | 30 + .../servlet/cache/AbstractCacheResponse.java | 30 + .../servlet/cache/CacheException.java | 30 + .../servlet/cache/CacheFilter.java | 40 +- .../servlet/cache/CacheRequest.java | 30 + .../servlet/cache/CacheResponse.java | 32 +- .../servlet/cache/CacheResponseWrapper.java | 40 +- .../servlet/cache/CachedEntity.java | 40 +- .../servlet/cache/CachedEntityImpl.java | 40 +- .../servlet/cache/CachedResponse.java | 40 +- .../servlet/cache/CachedResponseImpl.java | 40 +- .../servlet/cache/ClientCacheRequest.java | 30 + .../servlet/cache/ClientCacheResponse.java | 30 + .../servlet/cache/HTTPCache.java | 42 +- .../servlet/cache/ResponseResolver.java | 30 + .../cache/SerlvetCacheResponseWrapper.java | 42 +- .../servlet/cache/ServletCacheRequest.java | 30 + .../servlet/cache/ServletCacheResponse.java | 30 + .../cache/ServletResponseResolver.java | 30 + .../servlet/cache/WritableCachedResponse.java | 40 +- .../cache/WritableCachedResponseImpl.java | 40 +- .../fileupload/FileSizeExceededException.java | 40 +- .../fileupload/FileUploadException.java | 40 +- .../servlet/fileupload/FileUploadFilter.java | 48 +- .../fileupload/HttpFileUploadRequest.java | 40 +- .../HttpFileUploadRequestWrapper.java | 50 +- .../servlet/fileupload/UploadedFile.java | 42 +- .../servlet/fileupload/UploadedFileImpl.java | 44 +- .../servlet/gzip/GZIPFilter.java | 40 +- .../servlet/gzip/GZIPResponseWrapper.java | 40 +- .../servlet/image/AWTImageFilterAdapter.java | 40 +- .../servlet/image/BufferedImageOpAdapter.java | 40 +- .../servlet/image/ColorServlet.java | 40 +- .../servlet/image/ComposeFilter.java | 42 +- .../image/ContentNegotiationFilter.java | 49 +- .../servlet/image/CropFilter.java | 40 +- .../image/IIOProviderContextListener.java | 40 +- .../servlet/image/ImageFilter.java | 40 +- .../servlet/image/ImageServletException.java | 42 +- .../servlet/image/ImageServletResponse.java | 44 +- .../image/ImageServletResponseImpl.java | 40 +- .../servlet/image/NullImageFilter.java | 40 +- .../servlet/image/RotateFilter.java | 40 +- .../servlet/image/ScaleFilter.java | 40 +- .../servlet/image/SourceRenderFilter.java | 38 +- .../servlet/image/aoi/AreaOfInterest.java | 30 + .../image/aoi/AreaOfInterestFactory.java | 30 + .../image/aoi/AreaOfInterestWrapper.java | 30 + .../image/aoi/DefaultAreaOfInterest.java | 30 + .../image/aoi/PercentAreaOfInterest.java | 30 + .../image/aoi/UniformAreaOfInterest.java | 30 + .../servlet/image/package_info.java | 30 + .../servlet/jsp/droplet/taglib/package.html | 0 .../servlet/jsp/package_info.java | 0 .../servlet/jsp/taglib/LastModifiedTag.java | 0 .../twelvemonkeys/servlet/package_info.java | 30 + ...tTestCase.java => FilterAbstractTest.java} | 907 ++--- ...erTestCase.java => GenericFilterTest.java} | 344 +- ...ervletAttributesMapAdapterContextTest.java | 48 +- ...ervletAttributesMapAdapterRequestTest.java | 48 +- ...e.java => ServletConfigExceptionTest.java} | 35 +- .../servlet/ServletConfigMapAdapterTest.java | 34 +- ...Case.java => ServletConfiguratorTest.java} | 34 +- .../servlet/ServletHeadersMapAdapterTest.java | 38 +- .../ServletParametersMapAdapterTest.java | 38 +- .../servlet/ServletResponseAbsrtactTest.java | 53 + .../ServletResponseAbsrtactTestCase.java | 23 - ...ase.java => StaticContentServletTest.java} | 48 +- ...ase.java => TrimWhiteSpaceFilterTest.java} | 230 +- ...PCacheTestCase.java => HTTPCacheTest.java} | 34 +- .../image/IIOProviderContextListenerTest.java | 43 +- ...lterTestCase.java => ImageFilterTest.java} | 46 +- ...java => ImageServletResponseImplTest.java} | 36 +- ...tTestCase.java => AreaOfInterestTest.java} | 32 +- 714 files changed, 27275 insertions(+), 21016 deletions(-) rename common/common-image/src/test/java/com/twelvemonkeys/image/{BufferedImageFactoryTestCase.java => BufferedImageFactoryTest.java} (89%) rename common/common-image/src/test/java/com/twelvemonkeys/image/{ImageUtilTestCase.java => ImageUtilTest.java} (92%) rename common/common-image/src/test/java/com/twelvemonkeys/image/{ResampleOpTestCase.java => ResampleOpTest.java} (87%) rename common/common-io/src/test/java/com/twelvemonkeys/io/{CompoundReaderTestCase.java => CompoundReaderTest.java} (54%) create mode 100755 common/common-io/src/test/java/com/twelvemonkeys/io/FastByteArrayOutputStreamTest.java delete mode 100755 common/common-io/src/test/java/com/twelvemonkeys/io/FastByteArrayOutputStreamTestCase.java create mode 100755 common/common-io/src/test/java/com/twelvemonkeys/io/FileCacheSeekableStreamTest.java delete mode 100755 common/common-io/src/test/java/com/twelvemonkeys/io/FileCacheSeekableStreamTestCase.java rename common/common-io/src/test/java/com/twelvemonkeys/io/{FileSeekableStreamTestCase.java => FileSeekableStreamTest.java} (55%) rename common/common-io/src/test/java/com/twelvemonkeys/io/{InputStreamAbstractTestCase.java => InputStreamAbstractTest.java} (89%) create mode 100755 common/common-io/src/test/java/com/twelvemonkeys/io/MemoryCacheSeekableStreamTest.java delete mode 100755 common/common-io/src/test/java/com/twelvemonkeys/io/MemoryCacheSeekableStreamTestCase.java rename common/common-io/src/test/java/com/twelvemonkeys/io/{OutputStreamAbstractTestCase.java => OutputStreamAbstractTest.java} (79%) rename common/common-io/src/test/java/com/twelvemonkeys/io/{ReaderAbstractTestCase.java => ReaderAbstractTest.java} (79%) create mode 100755 common/common-io/src/test/java/com/twelvemonkeys/io/SeekableAbstractTest.java delete mode 100755 common/common-io/src/test/java/com/twelvemonkeys/io/SeekableAbstractTestCase.java rename common/common-io/src/test/java/com/twelvemonkeys/io/{SeekableInputStreamAbstractTestCase.java => SeekableInputStreamAbstractTest.java} (90%) create mode 100755 common/common-io/src/test/java/com/twelvemonkeys/io/StringArrayReaderTest.java delete mode 100755 common/common-io/src/test/java/com/twelvemonkeys/io/StringArrayReaderTestCase.java rename common/common-io/src/test/java/com/twelvemonkeys/io/enc/{Base64DecoderTestCase.java => Base64DecoderTest.java} (56%) rename common/common-io/src/test/java/com/twelvemonkeys/io/enc/{Base64EncoderTestCase.java => Base64EncoderTest.java} (58%) rename common/common-io/src/test/java/com/twelvemonkeys/io/enc/{DecoderAbstractTestCase.java => DecoderAbstractTest.java} (65%) rename common/common-io/src/test/java/com/twelvemonkeys/io/enc/{EncoderAbstractTestCase.java => EncoderAbstractTest.java} (69%) create mode 100755 common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsDecoderTest.java delete mode 100755 common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsDecoderTestCase.java create mode 100755 common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsEncoderTest.java delete mode 100755 common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsEncoderTestCase.java rename common/common-io/src/test/java/com/twelvemonkeys/io/ole2/{CompoundDocumentTestCase.java => CompoundDocumentTest.java} (76%) create mode 100644 common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_SeekableLittleEndianDataInputStreamTest.java delete mode 100644 common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_SeekableLittleEndianDataInputStreamTestCase.java rename common/common-io/src/test/java/com/twelvemonkeys/io/ole2/{CompoundDocument_StreamTestCase.java => CompoundDocument_StreamTest.java} (85%) rename common/common-lang/src/test/java/com/twelvemonkeys/lang/{BeanUtilTestCase.java => BeanUtilTest.java} (77%) rename common/common-lang/src/test/java/com/twelvemonkeys/lang/{ObjectAbstractTestCase.java => ObjectAbstractTest.java} (86%) rename common/common-lang/src/test/java/com/twelvemonkeys/lang/{StringUtilTestCase.java => StringUtilTest.java} (95%) rename common/common-lang/src/test/java/com/twelvemonkeys/util/{BeanMapTestCase.java => BeanMapTest.java} (66%) rename common/common-lang/src/test/java/com/twelvemonkeys/util/{CollectionAbstractTestCase.java => CollectionAbstractTest.java} (96%) rename common/common-lang/src/test/java/com/twelvemonkeys/util/{LRUMapTestCase.java => LRUMapTest.java} (76%) rename common/common-lang/src/test/java/com/twelvemonkeys/util/{LinkedMapTestCase.java => LinkedMapTest.java} (77%) rename common/common-lang/src/test/java/com/twelvemonkeys/util/{MapAbstractTestCase.java => MapAbstractTest.java} (91%) rename common/common-lang/src/test/java/com/twelvemonkeys/util/{NullMapTestCase.java => NullMapTest.java} (63%) rename common/common-lang/src/test/java/com/twelvemonkeys/util/{ObjectAbstractTestCase.java => ObjectAbstractTest.java} (86%) rename common/common-lang/src/test/java/com/twelvemonkeys/util/{SetAbstractTestCase.java => SetAbstractTest.java} (71%) rename common/common-lang/src/test/java/com/twelvemonkeys/util/{StringTokenIteratorTestCase.java => StringTokenIteratorTest.java} (71%) rename common/common-lang/src/test/java/com/twelvemonkeys/util/{TimeoutMapTestCase.java => TimeoutMapTest.java} (90%) create mode 100755 common/common-lang/src/test/java/com/twelvemonkeys/util/TokenIteratorAbstractTest.java delete mode 100755 common/common-lang/src/test/java/com/twelvemonkeys/util/TokenIteratorAbstractTestCase.java create mode 100755 common/common-lang/src/test/java/com/twelvemonkeys/util/convert/ConverterTest.java delete mode 100755 common/common-lang/src/test/java/com/twelvemonkeys/util/convert/ConverterTestCase.java rename common/common-lang/src/test/java/com/twelvemonkeys/util/convert/{DateConverterTestCase.java => DateConverterTest.java} (54%) rename common/common-lang/src/test/java/com/twelvemonkeys/util/convert/{DefaultConverterTestCase.java => DefaultConverterTest.java} (77%) rename common/common-lang/src/test/java/com/twelvemonkeys/util/convert/{NumberConverterTestCase.java => NumberConverterTest.java} (50%) rename common/common-lang/src/test/java/com/twelvemonkeys/util/convert/{PropertyConverterAbstractTestCase.java => PropertyConverterAbstractTest.java} (75%) create mode 100755 common/common-lang/src/test/java/com/twelvemonkeys/util/convert/TimeConverterTest.java delete mode 100755 common/common-lang/src/test/java/com/twelvemonkeys/util/convert/TimeConverterTestCase.java rename common/common-lang/src/test/java/com/twelvemonkeys/util/regex/{RegExTokenIteratorTestCase.java => RegExTokenIteratorTest.java} (71%) rename imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/{ProviderInfoTestCase.java => ProviderInfoTest.java} (62%) rename imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/{IIOInputStreamAdapterTestCase.java => IIOInputStreamAdapterTest.java} (96%) rename imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/{IIOOutputStreamAdapterTestCase.java => IIOOutputStreamAdapterTest.java} (95%) rename imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/{ImageWriterAbstractTestCase.java => ImageWriterAbstractTest.java} (96%) create mode 100755 imageio/imageio-hdr/license.txt create mode 100755 imageio/imageio-icns/license.txt rename imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/{AbstractMultipaletteChunk.java => AbstractMultiPaletteChunk.java} (76%) create mode 100644 imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/MultiPalette.java delete mode 100644 imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/Multipalette.java rename imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/{XMPScannerTestCase.java => XMPScannerTest.java} (74%) delete mode 100644 imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/TestPICTClippingApp.java delete mode 100755 imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/TestPICTEagerDetect.java create mode 100644 servlet/license.txt delete mode 100755 servlet/src/main/java/com/twelvemonkeys/servlet/jsp/droplet/taglib/package.html delete mode 100755 servlet/src/main/java/com/twelvemonkeys/servlet/jsp/package_info.java delete mode 100755 servlet/src/main/java/com/twelvemonkeys/servlet/jsp/taglib/LastModifiedTag.java rename servlet/src/test/java/com/twelvemonkeys/servlet/{FilterAbstractTestCase.java => FilterAbstractTest.java} (87%) rename servlet/src/test/java/com/twelvemonkeys/servlet/{GenericFilterTestCase.java => GenericFilterTest.java} (72%) rename servlet/src/test/java/com/twelvemonkeys/servlet/{ServletConfigExceptionTestCase.java => ServletConfigExceptionTest.java} (64%) rename servlet/src/test/java/com/twelvemonkeys/servlet/{ServletConfiguratorTestCase.java => ServletConfiguratorTest.java} (88%) create mode 100755 servlet/src/test/java/com/twelvemonkeys/servlet/ServletResponseAbsrtactTest.java delete mode 100755 servlet/src/test/java/com/twelvemonkeys/servlet/ServletResponseAbsrtactTestCase.java rename servlet/src/test/java/com/twelvemonkeys/servlet/{StaticContentServletTestCase.java => StaticContentServletTest.java} (87%) rename servlet/src/test/java/com/twelvemonkeys/servlet/{TrimWhiteSpaceFilterTestCase.java => TrimWhiteSpaceFilterTest.java} (91%) rename servlet/src/test/java/com/twelvemonkeys/servlet/cache/{HTTPCacheTestCase.java => HTTPCacheTest.java} (96%) rename servlet/src/test/java/com/twelvemonkeys/servlet/image/{ImageFilterTestCase.java => ImageFilterTest.java} (93%) rename servlet/src/test/java/com/twelvemonkeys/servlet/image/{ImageServletResponseImplTestCase.java => ImageServletResponseImplTest.java} (97%) rename servlet/src/test/java/com/twelvemonkeys/servlet/image/aoi/{AreaOfInterestTestCase.java => AreaOfInterestTest.java} (88%) diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/AbstractImageSource.java b/common/common-image/src/main/java/com/twelvemonkeys/image/AbstractImageSource.java index ae3b8e9e..1a24085e 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/AbstractImageSource.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/AbstractImageSource.java @@ -4,34 +4,36 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; -import java.awt.image.ImageProducer; import java.awt.image.ImageConsumer; -import java.util.List; +import java.awt.image.ImageProducer; import java.util.ArrayList; +import java.util.List; /** * AbstractImageSource diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/AffineTransformOp.java b/common/common-image/src/main/java/com/twelvemonkeys/image/AffineTransformOp.java index f362c0d4..c9621c51 100644 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/AffineTransformOp.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/AffineTransformOp.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/AreaAverageOp.java b/common/common-image/src/main/java/com/twelvemonkeys/image/AreaAverageOp.java index 73e52172..96635d2d 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/AreaAverageOp.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/AreaAverageOp.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/BrightnessContrastFilter.java b/common/common-image/src/main/java/com/twelvemonkeys/image/BrightnessContrastFilter.java index 0dbb7598..271c7e09 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/BrightnessContrastFilter.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/BrightnessContrastFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/BufferedImageFactory.java b/common/common-image/src/main/java/com/twelvemonkeys/image/BufferedImageFactory.java index d6b097ff..22d9d565 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/BufferedImageFactory.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/BufferedImageFactory.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/BufferedImageIcon.java b/common/common-image/src/main/java/com/twelvemonkeys/image/BufferedImageIcon.java index 649666ba..d23b236a 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/BufferedImageIcon.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/BufferedImageIcon.java @@ -4,36 +4,38 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; import com.twelvemonkeys.lang.Validate; -import javax.swing.Icon; -import java.awt.image.BufferedImage; +import javax.swing.*; import java.awt.*; import java.awt.geom.AffineTransform; +import java.awt.image.BufferedImage; /** * An {@code Icon} implementation backed by a {@code BufferedImage}. diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/ConvolveWithEdgeOp.java b/common/common-image/src/main/java/com/twelvemonkeys/image/ConvolveWithEdgeOp.java index 8a6ac22c..9b34249d 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/ConvolveWithEdgeOp.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/ConvolveWithEdgeOp.java @@ -4,34 +4,36 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; -import java.awt.image.*; import java.awt.*; -import java.awt.geom.Rectangle2D; import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; +import java.awt.image.*; /** * This class implements a convolution from the source diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/CopyDither.java b/common/common-image/src/main/java/com/twelvemonkeys/image/CopyDither.java index 041bb8a6..768fcaba 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/CopyDither.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/CopyDither.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; @@ -31,13 +33,7 @@ package com.twelvemonkeys.image; import java.awt.*; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; -import java.awt.image.BufferedImage; -import java.awt.image.BufferedImageOp; -import java.awt.image.ColorModel; -import java.awt.image.IndexColorModel; -import java.awt.image.Raster; -import java.awt.image.RasterOp; -import java.awt.image.WritableRaster; +import java.awt.image.*; /** * This BufferedImageOp simply copies pixels, converting to a diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/DiffusionDither.java b/common/common-image/src/main/java/com/twelvemonkeys/image/DiffusionDither.java index d530d077..aa43d527 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/DiffusionDither.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/DiffusionDither.java @@ -1,16 +1,39 @@ -package com.twelvemonkeys.image; +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.twelvemonkeys.image; import java.awt.*; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; -import java.awt.image.BufferedImage; -import java.awt.image.BufferedImageOp; -import java.awt.image.ColorModel; -import java.awt.image.IndexColorModel; -import java.awt.image.Raster; -import java.awt.image.RasterOp; -import java.awt.image.WritableRaster; +import java.awt.image.*; import java.util.Random; /** diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/GraphicsUtil.java b/common/common-image/src/main/java/com/twelvemonkeys/image/GraphicsUtil.java index f221bdb5..2ff7c85d 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/GraphicsUtil.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/GraphicsUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/GrayColorModel.java b/common/common-image/src/main/java/com/twelvemonkeys/image/GrayColorModel.java index c636e9fc..9f02beaa 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/GrayColorModel.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/GrayColorModel.java @@ -4,31 +4,33 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; -import java.awt.image.*; +import java.awt.image.IndexColorModel; /** * This class represents a 256 color fixed grayscale IndexColorModel. diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/GrayFilter.java b/common/common-image/src/main/java/com/twelvemonkeys/image/GrayFilter.java index 03e2dee1..6eedf33e 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/GrayFilter.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/GrayFilter.java @@ -4,31 +4,33 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; -import java.awt.image.*; +import java.awt.image.RGBImageFilter; /** * This class can convert a color image to grayscale. diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/ImageConversionException.java b/common/common-image/src/main/java/com/twelvemonkeys/image/ImageConversionException.java index aefa2f2c..6e0a6c2e 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/ImageConversionException.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/ImageConversionException.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/ImageFilterException.java b/common/common-image/src/main/java/com/twelvemonkeys/image/ImageFilterException.java index d05cb5c4..c10e84c9 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/ImageFilterException.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/ImageFilterException.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/ImageUtil.java b/common/common-image/src/main/java/com/twelvemonkeys/image/ImageUtil.java index 88fd7f1d..0ddc9be3 100644 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/ImageUtil.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/ImageUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/IndexImage.java b/common/common-image/src/main/java/com/twelvemonkeys/image/IndexImage.java index f7419204..3838c9e3 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/IndexImage.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/IndexImage.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* ****************************************************************************** diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/InverseColorMap.java b/common/common-image/src/main/java/com/twelvemonkeys/image/InverseColorMap.java index 838275b6..6b5b1d28 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/InverseColorMap.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/InverseColorMap.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/InverseColorMapIndexColorModel.java b/common/common-image/src/main/java/com/twelvemonkeys/image/InverseColorMapIndexColorModel.java index 640fa002..46b976f5 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/InverseColorMapIndexColorModel.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/InverseColorMapIndexColorModel.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/Magick.java b/common/common-image/src/main/java/com/twelvemonkeys/image/Magick.java index 48165b7e..b348e22e 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/Magick.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/Magick.java @@ -1,3 +1,34 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + package com.twelvemonkeys.image; /** diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/MagickAccelerator.java b/common/common-image/src/main/java/com/twelvemonkeys/image/MagickAccelerator.java index 681f2854..786fc7fd 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/MagickAccelerator.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/MagickAccelerator.java @@ -1,38 +1,41 @@ -package com.twelvemonkeys.image; - /* * Copyright (c) 2008, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import com.twelvemonkeys.lang.SystemUtil; +package com.twelvemonkeys.image; + +import com.twelvemonkeys.lang.SystemUtil; import magick.MagickImage; -import java.awt.image.*; +import java.awt.image.BufferedImage; +import java.awt.image.BufferedImageOp; /** * This class accelerates certain graphics operations, using diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/MagickUtil.java b/common/common-image/src/main/java/com/twelvemonkeys/image/MagickUtil.java index 8f648ded..154e1e0a 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/MagickUtil.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/MagickUtil.java @@ -4,31 +4,36 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; -import magick.*; +import magick.ImageType; +import magick.MagickException; +import magick.MagickImage; +import magick.PixelPacket; import java.awt.*; import java.awt.color.ColorSpace; diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/MonochromeColorModel.java b/common/common-image/src/main/java/com/twelvemonkeys/image/MonochromeColorModel.java index 5e92dd86..275f9b9c 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/MonochromeColorModel.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/MonochromeColorModel.java @@ -4,31 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; -import java.awt.image.*; +import java.awt.image.DataBuffer; +import java.awt.image.IndexColorModel; /** * Monochrome B/W color model. diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/PixelizeOp.java b/common/common-image/src/main/java/com/twelvemonkeys/image/PixelizeOp.java index f71dc330..8d850ab8 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/PixelizeOp.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/PixelizeOp.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/ResampleOp.java b/common/common-image/src/main/java/com/twelvemonkeys/image/ResampleOp.java index 73cc9ccb..155f0728 100644 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/ResampleOp.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/ResampleOp.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* ******************************************************************************* diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/SubsamplingFilter.java b/common/common-image/src/main/java/com/twelvemonkeys/image/SubsamplingFilter.java index 839a5b5d..c553013c 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/SubsamplingFilter.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/SubsamplingFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.image; diff --git a/common/common-image/src/main/java/com/twelvemonkeys/image/package-info.java b/common/common-image/src/main/java/com/twelvemonkeys/image/package-info.java index 9ee76555..4d688a6b 100755 --- a/common/common-image/src/main/java/com/twelvemonkeys/image/package-info.java +++ b/common/common-image/src/main/java/com/twelvemonkeys/image/package-info.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** * Classes for image manipulation. *

    diff --git a/common/common-image/src/test/java/com/twelvemonkeys/image/AffineTransformOpTest.java b/common/common-image/src/test/java/com/twelvemonkeys/image/AffineTransformOpTest.java index edbd6218..c1c53f67 100644 --- a/common/common-image/src/test/java/com/twelvemonkeys/image/AffineTransformOpTest.java +++ b/common/common-image/src/test/java/com/twelvemonkeys/image/AffineTransformOpTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.image; import org.junit.Test; @@ -10,9 +40,7 @@ import java.awt.image.*; import java.util.Arrays; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.fail; +import static org.junit.Assert.*; /** * AffineTransformOpTest. diff --git a/common/common-image/src/test/java/com/twelvemonkeys/image/BufferedImageFactoryTestCase.java b/common/common-image/src/test/java/com/twelvemonkeys/image/BufferedImageFactoryTest.java similarity index 89% rename from common/common-image/src/test/java/com/twelvemonkeys/image/BufferedImageFactoryTestCase.java rename to common/common-image/src/test/java/com/twelvemonkeys/image/BufferedImageFactoryTest.java index fa6cb48a..dbde4c0e 100644 --- a/common/common-image/src/test/java/com/twelvemonkeys/image/BufferedImageFactoryTestCase.java +++ b/common/common-image/src/test/java/com/twelvemonkeys/image/BufferedImageFactoryTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.image; import org.junit.Ignore; @@ -12,7 +42,6 @@ import java.awt.image.IndexColorModel; import java.net.URL; import static org.junit.Assert.*; -import static org.junit.Assert.assertEquals; /** * BufferedImageFactoryTestCase @@ -21,7 +50,7 @@ import static org.junit.Assert.assertEquals; * @author last modified by $Author: haraldk$ * @version $Id: BufferedImageFactoryTestCase.java,v 1.0 May 7, 2010 12:40:08 PM haraldk Exp$ */ -public class BufferedImageFactoryTestCase { +public class BufferedImageFactoryTest { @Test(expected = IllegalArgumentException.class) public void testCreateNullImage() { new BufferedImageFactory((Image) null); diff --git a/common/common-image/src/test/java/com/twelvemonkeys/image/ImageUtilTestCase.java b/common/common-image/src/test/java/com/twelvemonkeys/image/ImageUtilTest.java similarity index 92% rename from common/common-image/src/test/java/com/twelvemonkeys/image/ImageUtilTestCase.java rename to common/common-image/src/test/java/com/twelvemonkeys/image/ImageUtilTest.java index 4f8cd92d..7c14be3a 100755 --- a/common/common-image/src/test/java/com/twelvemonkeys/image/ImageUtilTestCase.java +++ b/common/common-image/src/test/java/com/twelvemonkeys/image/ImageUtilTest.java @@ -1,505 +1,534 @@ - -package com.twelvemonkeys.image; - -import org.junit.Test; - -import javax.imageio.ImageIO; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.awt.image.IndexColorModel; -import java.awt.image.RenderedImage; -import java.io.InputStream; - -import static org.junit.Assert.*; - -public class ImageUtilTestCase { - - private final static String IMAGE_NAME = "/sunflower.jpg"; - private BufferedImage original; - private BufferedImage image; - private Image scaled; - - public ImageUtilTestCase() throws Exception { - image = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB); - scaled = image.getScaledInstance(5, 5, Image.SCALE_FAST); - - // Read image from class path - InputStream is = getClass().getResourceAsStream(IMAGE_NAME); - original = ImageIO.read(is); - - assertNotNull(original); - } - - /* - public void setUp() throws Exception { - image = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB); - scaled = image.getScaledInstance(5, 5, Image.SCALE_FAST); - - // Read image from class path - InputStream is = ClassLoader.getSystemResourceAsStream(IMAGE_NAME); - original = ImageIO.read(is); - - assertNotNull(original); - } - - protected void tearDown() throws Exception { - original = null; - } - */ - - @Test - public void testToBufferedImageNull() { - BufferedImage img = null; - boolean threwRuntimeException = false; - - try { - img = ImageUtil.toBuffered((Image) null); - } - catch (RuntimeException ne) { - threwRuntimeException = true; - } - // No input should return null - assertNull(img); - - // Should have thrown an exception - assertTrue(threwRuntimeException); - } - - @Test - public void testToBufferedImageTypeNull() { - BufferedImage img = null; - boolean threwRuntimeException = false; - - try { - img = ImageUtil.toBuffered(null, BufferedImage.TYPE_INT_ARGB); - } - catch (RuntimeException ne) { - threwRuntimeException = true; - } - // No input should return null - assertNull(img); - - // Should have thrown an exception - assertTrue(threwRuntimeException); - } - - @Test - public void testImageIsNotBufferedImage() { - // Should not be a buffered image - assertFalse( - "FOR SOME IMPLEMENTATIONS THIS MIGHT FAIL!\nIn that case, testToBufferedImage() will fail too.", - scaled instanceof BufferedImage - ); - } - - @Test - public void testToBufferedImage() { - BufferedImage sameAsImage = ImageUtil.toBuffered((RenderedImage) image); - BufferedImage bufferedScaled = ImageUtil.toBuffered(scaled); - - // Should be no need to convert - assertSame(image, sameAsImage); - - // Should have same dimensions - assertEquals(scaled.getWidth(null), bufferedScaled.getWidth()); - assertEquals(scaled.getHeight(null), bufferedScaled.getHeight()); - } - - @Test - public void testToBufferedImageType() { - // Assumes image is TYPE_INT_ARGB - BufferedImage converted = ImageUtil.toBuffered(image, BufferedImage.TYPE_BYTE_INDEXED); - BufferedImage convertedToo = ImageUtil.toBuffered(image, BufferedImage.TYPE_BYTE_BINARY); - - // Should not be the same - assertNotSame(image, converted); - assertNotSame(image, convertedToo); - - // Correct type - assertTrue(converted.getType() == BufferedImage.TYPE_BYTE_INDEXED); - assertTrue(convertedToo.getType() == BufferedImage.TYPE_BYTE_BINARY); - - // Should have same dimensions - assertEquals(image.getWidth(), converted.getWidth()); - assertEquals(image.getHeight(), converted.getHeight()); - - assertEquals(image.getWidth(), convertedToo.getWidth()); - assertEquals(image.getHeight(), convertedToo.getHeight()); - } - - @Test - public void testBrightness() { - final BufferedImage original = this.original; - assertNotNull(original); - - final BufferedImage notBrightened = ImageUtil.toBuffered(ImageUtil.brightness(original, 0f)); - // Assumed: Images should be equal - if (original != notBrightened) { // Don't care to test if images are same - for (int y = 0; y < original.getHeight(); y++) { - for (int x = 0; x < original.getWidth(); x++) { - assertEquals(original.getRGB(x, y), notBrightened.getRGB(x, y)); - } - } - } - - // Assumed: All pixels should be brighter or equal to original - final BufferedImage brightened = ImageUtil.toBuffered(ImageUtil.brightness(original, 0.4f)); - final BufferedImage brightenedMore = ImageUtil.toBuffered(ImageUtil.brightness(original, 0.9f)); - for (int y = 0; y < original.getHeight(); y++) { - for (int x = 0; x < original.getWidth(); x++) { - assertTrue(original.getRGB(x, y) <= brightened.getRGB(x, y)); - assertTrue(brightened.getRGB(x, y) <= brightenedMore.getRGB(x, y)); - } - } - - // Assumed: Image should be all white - final BufferedImage brightenedMax = ImageUtil.toBuffered(ImageUtil.brightness(original, 2f)); - for (int y = 0; y < brightenedMax.getHeight(); y++) { - for (int x = 0; x < brightenedMax.getWidth(); x++) { - assertEquals(0x00FFFFFF, brightenedMax.getRGB(x, y) & 0x00FFFFFF); - } - } - - // Assumed: All pixels should be darker or equal to originial - final BufferedImage brightenedNegative = ImageUtil.toBuffered(ImageUtil.brightness(original, -0.4f)); - final BufferedImage brightenedNegativeMore = ImageUtil.toBuffered(ImageUtil.brightness(original, -0.9f)); - for (int y = 0; y < original.getHeight(); y++) { - for (int x = 0; x < original.getWidth(); x++) { - assertTrue(original.getRGB(x, y) >= brightenedNegative.getRGB(x, y)); - assertTrue(brightenedNegative.getRGB(x, y) >= brightenedNegativeMore.getRGB(x, y)); - } - } - // Assumed: Image should be all black - final BufferedImage brightenedMaxNegative = ImageUtil.toBuffered(ImageUtil.brightness(original, -2f)); - for (int y = 0; y < brightenedMaxNegative.getHeight(); y++) { - for (int x = 0; x < brightenedMaxNegative.getWidth(); x++) { - assertEquals(0x0, brightenedMaxNegative.getRGB(x, y) & 0x00FFFFFF); - } - } - - /* - JFrame frame = new JFrame("Sunflower - brightness"); - frame.setSize(sunflower.getWidth() * 4, sunflower.getHeight() * 2); - - Canvas canvas = new Canvas() { - public void paint(Graphics g) { - // Draw original for comparison - g.drawImage(original, 0, 0, null); - - // This should look like original - g.drawImage(notBrightened, 0, original.getHeight(), null); - - // Different versions - g.drawImage(brightened, original.getWidth(), 0, null); - g.drawImage(brightenedMore, original.getWidth() * 2, 0, null); - g.drawImage(brightenedMax, original.getWidth() * 3, 0, null); - - g.drawImage(brightenedNegative, original.getWidth(), original.getHeight(), null); - g.drawImage(brightenedNegativeMore, original.getWidth() * 2, original.getHeight(), null); - g.drawImage(brightenedMaxNegative, original.getWidth() * 3, original.getHeight(), null); - } - }; - - frame.getContentPane().add(canvas); - frame.setVisible(true); - - assertTrue(true); - */ - } - - @Test - public void testContrast() { - final BufferedImage original = this.original; - - assertNotNull(original); - - final BufferedImage notContrasted = ImageUtil.toBuffered(ImageUtil.contrast(original, 0f)); - // Assumed: Images should be equal - if (original != notContrasted) { // Don't care to test if images are same - for (int y = 0; y < original.getHeight(); y++) { - for (int x = 0; x < original.getWidth(); x++) { - assertEquals("0 constrast should not change image", original.getRGB(x, y), notContrasted.getRGB(x, y)); - } - } - } - - // Assumed: Contrast should be greater or equal to original - final BufferedImage contrasted = ImageUtil.toBuffered(ImageUtil.contrast(original)); - final BufferedImage contrastedDefault = ImageUtil.toBuffered(ImageUtil.contrast(original, 0.5f)); - for (int y = 0; y < original.getHeight(); y++) { - for (int x = 0; x < original.getWidth(); x++) { - int oRGB = original.getRGB(x, y); - int cRGB = contrasted.getRGB(x, y); - int dRGB = contrastedDefault.getRGB(x, y); - - int oR = oRGB >> 16 & 0xFF; - int oG = oRGB >> 8 & 0xFF; - int oB = oRGB & 0xFF; - - int cR = cRGB >> 16 & 0xFF; - int cG = cRGB >> 8 & 0xFF; - int cB = cRGB & 0xFF; - - int dR = dRGB >> 16 & 0xFF; - int dG = dRGB >> 8 & 0xFF; - int dB = dRGB & 0xFF; - - // RED - if (oR < 127) { - assertTrue("Contrast should be decreased or same", oR >= cR && cR >= dR); - } - else { - assertTrue("Contrast should be increased or same", oR <= cR && cR <= dR); - } - // GREEN - if (oG < 127) { - assertTrue("Contrast should be decreased or same", oG >= cG && cG >= dG); - } - else { - assertTrue("Contrast should be increased or same", oG <= cG && cG <= dG); - } - // BLUE - if (oB < 127) { - assertTrue("Contrast should be decreased or same", oB >= cB && cB >= dB); - } - else { - assertTrue("Contrast should be increased or same", oB <= cB && cB <= dB); - } - } - } - // Assumed: Only primary colors (w/b/r/g/b/c/y/m) - final BufferedImage contrastedMax = ImageUtil.toBuffered(ImageUtil.contrast(original, 1f)); - for (int y = 0; y < contrastedMax.getHeight(); y++) { - for (int x = 0; x < contrastedMax.getWidth(); x++) { - int rgb = contrastedMax.getRGB(x, y); - int r = rgb >> 16 & 0xFF; - int g = rgb >> 8 & 0xFF; - int b = rgb & 0xFF; - assertTrue("Max contrast should only produce primary colors", r == 0 || r == 255); - assertTrue("Max contrast should only produce primary colors", g == 0 || g == 255); - assertTrue("Max contrast should only produce primary colors", b == 0 || b == 255); - } - } - - // Assumed: Contrasts should be less than or equal to original - final BufferedImage contrastedNegative = ImageUtil.toBuffered(ImageUtil.contrast(original, -0.5f)); - for (int y = 0; y < original.getHeight(); y++) { - for (int x = 0; x < original.getWidth(); x++) { - int oRGB = original.getRGB(x, y); - int cRGB = contrastedNegative.getRGB(x, y); - - int oR = oRGB >> 16 & 0xFF; - int oG = oRGB >> 8 & 0xFF; - int oB = oRGB & 0xFF; - - int cR = cRGB >> 16 & 0xFF; - int cG = cRGB >> 8 & 0xFF; - int cB = cRGB & 0xFF; - - // RED - if (oR >= 127) { - assertTrue("Contrast should be decreased or same", oR >= cR); - } - else { - assertTrue("Contrast should be increased or same", oR <= cR); - } - // GREEN - if (oG >= 127) { - assertTrue("Contrast should be decreased or same", oG >= cG); - } - else { - assertTrue("Contrast should be increased or same", oG <= cG); - } - // BLUE - if (oB >= 127) { - assertTrue("Contrast should be decreased or same", oB >= cB); - } - else { - assertTrue("Contrast should be increased or same", oB <= cB); - } - } - } - - // Assumed: All gray (127)! - final BufferedImage contrastedMoreNegative = ImageUtil.toBuffered(ImageUtil.contrast(original, -1.0f)); - for (int y = 0; y < contrastedMoreNegative.getHeight(); y++) { - for (int x = 0; x < contrastedMoreNegative.getWidth(); x++) { - int rgb = contrastedMoreNegative.getRGB(x, y); - int r = rgb >> 16 & 0xFF; - int g = rgb >> 8 & 0xFF; - int b = rgb & 0xFF; - assertTrue("Minimum contrast should be all gray", r == 127 && g == 127 && b == 127); - } - } - - /* - JFrame frame = new JFrame("Sunflower - contrast"); - frame.setSize(sunflower.getWidth() * 4, sunflower.getHeight() * 2); - - Canvas canvas = new Canvas() { - public void paint(Graphics g) { - // Draw original for comparison - g.drawImage(original, 0, 0, null); - - // This should look like original - g.drawImage(notContrasted, 0, original.getHeight(), null); - - // Different versions - g.drawImage(contrasted, original.getWidth(), 0, null); - g.drawImage(contrastedDefault, original.getWidth() * 2, 0, null); - g.drawImage(contrastedMax, original.getWidth() * 3, 0, null); - g.drawImage(contrastedNegative, original.getWidth() * 2, original.getHeight(), null); - g.drawImage(contrastedMoreNegative, original.getWidth() * 3, original.getHeight(), null); - } - }; - - frame.getContentPane().add(canvas); - frame.setVisible(true); - - assertTrue(true); - */ - } - - @Test - public void testSharpen() { - final BufferedImage original = this.original; - - assertNotNull(original); - - final BufferedImage notSharpened = ImageUtil.sharpen(original, 0f); - // Assumed: Images should be equal - if (original != notSharpened) { // Don't care to test if images are same - for (int y = 0; y < original.getHeight(); y++) { - for (int x = 0; x < original.getWidth(); x++) { - assertEquals("0 sharpen should not change image", original.getRGB(x, y), notSharpened.getRGB(x, y)); - } - } - } - - // Assumed: Difference between neighbouring pixels should increase for higher sharpen values - // Assumed: Dynamics of entire image should not change - final BufferedImage sharpened = ImageUtil.sharpen(original); - final BufferedImage sharpenedDefault = ImageUtil.sharpen(original, 0.3f); - final BufferedImage sharpenedMore = ImageUtil.sharpen(original, 1.3f); - -// long diffOriginal = 0; -// long diffSharpened = 0; -// long diffDefault = 0; -// long diffMore = 0; - - long absDiffOriginal = 0; - long absDiffSharpened = 0; - long absDiffDefault = 0; - long absDiffMore = 0; - - for (int y = 0; y < original.getHeight(); y++) { - for (int x = 1; x < original.getWidth(); x++) { - int oRGB = 0x00FFFFFF & original.getRGB(x, y); - int sRGB = 0x00FFFFFF & sharpened.getRGB(x, y); - int dRGB = 0x00FFFFFF & sharpenedDefault.getRGB(x, y); - int mRGB = 0x00FFFFFF & sharpenedMore.getRGB(x, y); - - int poRGB = 0x00FFFFFF & original.getRGB(x - 1, y); - int psRGB = 0x00FFFFFF & sharpened.getRGB(x - 1, y); - int pdRGB = 0x00FFFFFF & sharpenedDefault.getRGB(x - 1, y); - int pmRGB = 0x00FFFFFF & sharpenedMore.getRGB(x - 1, y); - -// diffOriginal += poRGB - oRGB; -// diffSharpened += psRGB - sRGB; -// diffDefault += pdRGB - dRGB; -// diffMore += pmRGB - mRGB; - - absDiffOriginal += Math.abs(poRGB - oRGB); - absDiffSharpened += Math.abs(psRGB - sRGB); - absDiffDefault += Math.abs(pdRGB - dRGB); - absDiffMore += Math.abs(pmRGB - mRGB); - } - } - -// assertEquals("Difference should not change", diffOriginal, diffSharpened); - assertTrue("Abs difference should increase", absDiffOriginal < absDiffSharpened); -// assertEquals("Difference should not change", diffOriginal, diffDefault); - assertTrue("Abs difference should increase", absDiffOriginal < absDiffDefault); -// assertEquals("Difference should not change", diffOriginal, diffMore); - assertTrue("Abs difference should increase", absDiffOriginal < absDiffMore); -// assertEquals("Difference should not change", diffSharpened, diffMore); - assertTrue("Abs difference should increase", absDiffSharpened < absDiffMore); - } - - @Test - public void testBlur() { - final BufferedImage original = this.original; - - assertNotNull(original); - - final BufferedImage notBlurred = ImageUtil.blur(original, 0f); - // Assumed: Images should be equal - if (original != notBlurred) { // Don't care to test if images are same - for (int y = 0; y < original.getHeight(); y++) { - for (int x = 0; x < original.getWidth(); x++) { - assertEquals("0 blur should not change image", original.getRGB(x, y), notBlurred.getRGB(x, y)); - } - } - } - - // Assumed: Difference between neighbouring pixels should decrease for higher blur values - // Assumed: Dynamics of entire image should not change - final BufferedImage blurred = ImageUtil.blur(original); - final BufferedImage blurredDefault = ImageUtil.blur(original, 1.5f); - final BufferedImage blurredMore = ImageUtil.blur(original, 3f); - -// long diffOriginal = 0; -// long diffBlurred = 0; -// long diffDefault = 0; -// long diffMore = 0; - - long absDiffOriginal = 0; - long absDiffBlurred = 0; - long absDiffDefault = 0; - long absDiffMore = 0; - - for (int y = 0; y < original.getHeight(); y++) { - for (int x = 1; x < original.getWidth(); x++) { - int oRGB = 0x00FFFFFF & original.getRGB(x, y); - int bRGB = 0x00FFFFFF & blurred.getRGB(x, y); - int dRGB = 0x00FFFFFF & blurredDefault.getRGB(x, y); - int mRGB = 0x00FFFFFF & blurredMore.getRGB(x, y); - - int poRGB = 0x00FFFFFF & original.getRGB(x - 1, y); - int pbRGB = 0x00FFFFFF & blurred.getRGB(x - 1, y); - int pdRGB = 0x00FFFFFF & blurredDefault.getRGB(x - 1, y); - int pmRGB = 0x00FFFFFF & blurredMore.getRGB(x - 1, y); - -// diffOriginal += poRGB - oRGB; -// diffBlurred += pbRGB - bRGB; -// diffDefault += pdRGB - dRGB; -// diffMore += pmRGB - mRGB; - - absDiffOriginal += Math.abs(poRGB - oRGB); - absDiffBlurred += Math.abs(pbRGB - bRGB); - absDiffDefault += Math.abs(pdRGB - dRGB); - absDiffMore += Math.abs(pmRGB - mRGB); - } - } - -// assertEquals("Difference should not change", diffOriginal, diffBlurred); - assertTrue(String.format("Abs difference should decrease: %s <= %s", absDiffOriginal, absDiffBlurred), absDiffOriginal > absDiffBlurred); -// assertEquals("Difference should not change", diffOriginal, diffDefault); - assertTrue("Abs difference should decrease", absDiffOriginal > absDiffDefault); -// assertEquals("Difference should not change", diffOriginal, diffMore); - assertTrue("Abs difference should decrease", absDiffOriginal > absDiffMore); -// assertEquals("Difference should not change", diffBlurred, diffMore); - assertTrue("Abs difference should decrease", absDiffBlurred > absDiffMore); - } - - @Test - public void testIndexImage() { - BufferedImage sunflower = original; - - assertNotNull(sunflower); - - BufferedImage image = ImageUtil.createIndexed(sunflower); - assertNotNull("Image was null", image); - assertTrue(image.getColorModel() instanceof IndexColorModel); - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.image; + +import org.junit.Test; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.awt.image.IndexColorModel; +import java.awt.image.RenderedImage; +import java.io.InputStream; + +import static org.junit.Assert.*; + +public class ImageUtilTest { + + private final static String IMAGE_NAME = "/sunflower.jpg"; + private BufferedImage original; + private BufferedImage image; + private Image scaled; + + public ImageUtilTest() throws Exception { + image = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB); + scaled = image.getScaledInstance(5, 5, Image.SCALE_FAST); + + // Read image from class path + InputStream is = getClass().getResourceAsStream(IMAGE_NAME); + original = ImageIO.read(is); + + assertNotNull(original); + } + + /* + public void setUp() throws Exception { + image = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB); + scaled = image.getScaledInstance(5, 5, Image.SCALE_FAST); + + // Read image from class path + InputStream is = ClassLoader.getSystemResourceAsStream(IMAGE_NAME); + original = ImageIO.read(is); + + assertNotNull(original); + } + + protected void tearDown() throws Exception { + original = null; + } + */ + + @Test + public void testToBufferedImageNull() { + BufferedImage img = null; + boolean threwRuntimeException = false; + + try { + img = ImageUtil.toBuffered((Image) null); + } + catch (RuntimeException ne) { + threwRuntimeException = true; + } + // No input should return null + assertNull(img); + + // Should have thrown an exception + assertTrue(threwRuntimeException); + } + + @Test + public void testToBufferedImageTypeNull() { + BufferedImage img = null; + boolean threwRuntimeException = false; + + try { + img = ImageUtil.toBuffered(null, BufferedImage.TYPE_INT_ARGB); + } + catch (RuntimeException ne) { + threwRuntimeException = true; + } + // No input should return null + assertNull(img); + + // Should have thrown an exception + assertTrue(threwRuntimeException); + } + + @Test + public void testImageIsNotBufferedImage() { + // Should not be a buffered image + assertFalse( + "FOR SOME IMPLEMENTATIONS THIS MIGHT FAIL!\nIn that case, testToBufferedImage() will fail too.", + scaled instanceof BufferedImage + ); + } + + @Test + public void testToBufferedImage() { + BufferedImage sameAsImage = ImageUtil.toBuffered((RenderedImage) image); + BufferedImage bufferedScaled = ImageUtil.toBuffered(scaled); + + // Should be no need to convert + assertSame(image, sameAsImage); + + // Should have same dimensions + assertEquals(scaled.getWidth(null), bufferedScaled.getWidth()); + assertEquals(scaled.getHeight(null), bufferedScaled.getHeight()); + } + + @Test + public void testToBufferedImageType() { + // Assumes image is TYPE_INT_ARGB + BufferedImage converted = ImageUtil.toBuffered(image, BufferedImage.TYPE_BYTE_INDEXED); + BufferedImage convertedToo = ImageUtil.toBuffered(image, BufferedImage.TYPE_BYTE_BINARY); + + // Should not be the same + assertNotSame(image, converted); + assertNotSame(image, convertedToo); + + // Correct type + assertTrue(converted.getType() == BufferedImage.TYPE_BYTE_INDEXED); + assertTrue(convertedToo.getType() == BufferedImage.TYPE_BYTE_BINARY); + + // Should have same dimensions + assertEquals(image.getWidth(), converted.getWidth()); + assertEquals(image.getHeight(), converted.getHeight()); + + assertEquals(image.getWidth(), convertedToo.getWidth()); + assertEquals(image.getHeight(), convertedToo.getHeight()); + } + + @Test + public void testBrightness() { + final BufferedImage original = this.original; + assertNotNull(original); + + final BufferedImage notBrightened = ImageUtil.toBuffered(ImageUtil.brightness(original, 0f)); + // Assumed: Images should be equal + if (original != notBrightened) { // Don't care to test if images are same + for (int y = 0; y < original.getHeight(); y++) { + for (int x = 0; x < original.getWidth(); x++) { + assertEquals(original.getRGB(x, y), notBrightened.getRGB(x, y)); + } + } + } + + // Assumed: All pixels should be brighter or equal to original + final BufferedImage brightened = ImageUtil.toBuffered(ImageUtil.brightness(original, 0.4f)); + final BufferedImage brightenedMore = ImageUtil.toBuffered(ImageUtil.brightness(original, 0.9f)); + for (int y = 0; y < original.getHeight(); y++) { + for (int x = 0; x < original.getWidth(); x++) { + assertTrue(original.getRGB(x, y) <= brightened.getRGB(x, y)); + assertTrue(brightened.getRGB(x, y) <= brightenedMore.getRGB(x, y)); + } + } + + // Assumed: Image should be all white + final BufferedImage brightenedMax = ImageUtil.toBuffered(ImageUtil.brightness(original, 2f)); + for (int y = 0; y < brightenedMax.getHeight(); y++) { + for (int x = 0; x < brightenedMax.getWidth(); x++) { + assertEquals(0x00FFFFFF, brightenedMax.getRGB(x, y) & 0x00FFFFFF); + } + } + + // Assumed: All pixels should be darker or equal to originial + final BufferedImage brightenedNegative = ImageUtil.toBuffered(ImageUtil.brightness(original, -0.4f)); + final BufferedImage brightenedNegativeMore = ImageUtil.toBuffered(ImageUtil.brightness(original, -0.9f)); + for (int y = 0; y < original.getHeight(); y++) { + for (int x = 0; x < original.getWidth(); x++) { + assertTrue(original.getRGB(x, y) >= brightenedNegative.getRGB(x, y)); + assertTrue(brightenedNegative.getRGB(x, y) >= brightenedNegativeMore.getRGB(x, y)); + } + } + // Assumed: Image should be all black + final BufferedImage brightenedMaxNegative = ImageUtil.toBuffered(ImageUtil.brightness(original, -2f)); + for (int y = 0; y < brightenedMaxNegative.getHeight(); y++) { + for (int x = 0; x < brightenedMaxNegative.getWidth(); x++) { + assertEquals(0x0, brightenedMaxNegative.getRGB(x, y) & 0x00FFFFFF); + } + } + + /* + JFrame frame = new JFrame("Sunflower - brightness"); + frame.setSize(sunflower.getWidth() * 4, sunflower.getHeight() * 2); + + Canvas canvas = new Canvas() { + public void paint(Graphics g) { + // Draw original for comparison + g.drawImage(original, 0, 0, null); + + // This should look like original + g.drawImage(notBrightened, 0, original.getHeight(), null); + + // Different versions + g.drawImage(brightened, original.getWidth(), 0, null); + g.drawImage(brightenedMore, original.getWidth() * 2, 0, null); + g.drawImage(brightenedMax, original.getWidth() * 3, 0, null); + + g.drawImage(brightenedNegative, original.getWidth(), original.getHeight(), null); + g.drawImage(brightenedNegativeMore, original.getWidth() * 2, original.getHeight(), null); + g.drawImage(brightenedMaxNegative, original.getWidth() * 3, original.getHeight(), null); + } + }; + + frame.getContentPane().add(canvas); + frame.setVisible(true); + + assertTrue(true); + */ + } + + @Test + public void testContrast() { + final BufferedImage original = this.original; + + assertNotNull(original); + + final BufferedImage notContrasted = ImageUtil.toBuffered(ImageUtil.contrast(original, 0f)); + // Assumed: Images should be equal + if (original != notContrasted) { // Don't care to test if images are same + for (int y = 0; y < original.getHeight(); y++) { + for (int x = 0; x < original.getWidth(); x++) { + assertEquals("0 constrast should not change image", original.getRGB(x, y), notContrasted.getRGB(x, y)); + } + } + } + + // Assumed: Contrast should be greater or equal to original + final BufferedImage contrasted = ImageUtil.toBuffered(ImageUtil.contrast(original)); + final BufferedImage contrastedDefault = ImageUtil.toBuffered(ImageUtil.contrast(original, 0.5f)); + for (int y = 0; y < original.getHeight(); y++) { + for (int x = 0; x < original.getWidth(); x++) { + int oRGB = original.getRGB(x, y); + int cRGB = contrasted.getRGB(x, y); + int dRGB = contrastedDefault.getRGB(x, y); + + int oR = oRGB >> 16 & 0xFF; + int oG = oRGB >> 8 & 0xFF; + int oB = oRGB & 0xFF; + + int cR = cRGB >> 16 & 0xFF; + int cG = cRGB >> 8 & 0xFF; + int cB = cRGB & 0xFF; + + int dR = dRGB >> 16 & 0xFF; + int dG = dRGB >> 8 & 0xFF; + int dB = dRGB & 0xFF; + + // RED + if (oR < 127) { + assertTrue("Contrast should be decreased or same", oR >= cR && cR >= dR); + } + else { + assertTrue("Contrast should be increased or same", oR <= cR && cR <= dR); + } + // GREEN + if (oG < 127) { + assertTrue("Contrast should be decreased or same", oG >= cG && cG >= dG); + } + else { + assertTrue("Contrast should be increased or same", oG <= cG && cG <= dG); + } + // BLUE + if (oB < 127) { + assertTrue("Contrast should be decreased or same", oB >= cB && cB >= dB); + } + else { + assertTrue("Contrast should be increased or same", oB <= cB && cB <= dB); + } + } + } + // Assumed: Only primary colors (w/b/r/g/b/c/y/m) + final BufferedImage contrastedMax = ImageUtil.toBuffered(ImageUtil.contrast(original, 1f)); + for (int y = 0; y < contrastedMax.getHeight(); y++) { + for (int x = 0; x < contrastedMax.getWidth(); x++) { + int rgb = contrastedMax.getRGB(x, y); + int r = rgb >> 16 & 0xFF; + int g = rgb >> 8 & 0xFF; + int b = rgb & 0xFF; + assertTrue("Max contrast should only produce primary colors", r == 0 || r == 255); + assertTrue("Max contrast should only produce primary colors", g == 0 || g == 255); + assertTrue("Max contrast should only produce primary colors", b == 0 || b == 255); + } + } + + // Assumed: Contrasts should be less than or equal to original + final BufferedImage contrastedNegative = ImageUtil.toBuffered(ImageUtil.contrast(original, -0.5f)); + for (int y = 0; y < original.getHeight(); y++) { + for (int x = 0; x < original.getWidth(); x++) { + int oRGB = original.getRGB(x, y); + int cRGB = contrastedNegative.getRGB(x, y); + + int oR = oRGB >> 16 & 0xFF; + int oG = oRGB >> 8 & 0xFF; + int oB = oRGB & 0xFF; + + int cR = cRGB >> 16 & 0xFF; + int cG = cRGB >> 8 & 0xFF; + int cB = cRGB & 0xFF; + + // RED + if (oR >= 127) { + assertTrue("Contrast should be decreased or same", oR >= cR); + } + else { + assertTrue("Contrast should be increased or same", oR <= cR); + } + // GREEN + if (oG >= 127) { + assertTrue("Contrast should be decreased or same", oG >= cG); + } + else { + assertTrue("Contrast should be increased or same", oG <= cG); + } + // BLUE + if (oB >= 127) { + assertTrue("Contrast should be decreased or same", oB >= cB); + } + else { + assertTrue("Contrast should be increased or same", oB <= cB); + } + } + } + + // Assumed: All gray (127)! + final BufferedImage contrastedMoreNegative = ImageUtil.toBuffered(ImageUtil.contrast(original, -1.0f)); + for (int y = 0; y < contrastedMoreNegative.getHeight(); y++) { + for (int x = 0; x < contrastedMoreNegative.getWidth(); x++) { + int rgb = contrastedMoreNegative.getRGB(x, y); + int r = rgb >> 16 & 0xFF; + int g = rgb >> 8 & 0xFF; + int b = rgb & 0xFF; + assertTrue("Minimum contrast should be all gray", r == 127 && g == 127 && b == 127); + } + } + + /* + JFrame frame = new JFrame("Sunflower - contrast"); + frame.setSize(sunflower.getWidth() * 4, sunflower.getHeight() * 2); + + Canvas canvas = new Canvas() { + public void paint(Graphics g) { + // Draw original for comparison + g.drawImage(original, 0, 0, null); + + // This should look like original + g.drawImage(notContrasted, 0, original.getHeight(), null); + + // Different versions + g.drawImage(contrasted, original.getWidth(), 0, null); + g.drawImage(contrastedDefault, original.getWidth() * 2, 0, null); + g.drawImage(contrastedMax, original.getWidth() * 3, 0, null); + g.drawImage(contrastedNegative, original.getWidth() * 2, original.getHeight(), null); + g.drawImage(contrastedMoreNegative, original.getWidth() * 3, original.getHeight(), null); + } + }; + + frame.getContentPane().add(canvas); + frame.setVisible(true); + + assertTrue(true); + */ + } + + @Test + public void testSharpen() { + final BufferedImage original = this.original; + + assertNotNull(original); + + final BufferedImage notSharpened = ImageUtil.sharpen(original, 0f); + // Assumed: Images should be equal + if (original != notSharpened) { // Don't care to test if images are same + for (int y = 0; y < original.getHeight(); y++) { + for (int x = 0; x < original.getWidth(); x++) { + assertEquals("0 sharpen should not change image", original.getRGB(x, y), notSharpened.getRGB(x, y)); + } + } + } + + // Assumed: Difference between neighbouring pixels should increase for higher sharpen values + // Assumed: Dynamics of entire image should not change + final BufferedImage sharpened = ImageUtil.sharpen(original); + final BufferedImage sharpenedDefault = ImageUtil.sharpen(original, 0.3f); + final BufferedImage sharpenedMore = ImageUtil.sharpen(original, 1.3f); + +// long diffOriginal = 0; +// long diffSharpened = 0; +// long diffDefault = 0; +// long diffMore = 0; + + long absDiffOriginal = 0; + long absDiffSharpened = 0; + long absDiffDefault = 0; + long absDiffMore = 0; + + for (int y = 0; y < original.getHeight(); y++) { + for (int x = 1; x < original.getWidth(); x++) { + int oRGB = 0x00FFFFFF & original.getRGB(x, y); + int sRGB = 0x00FFFFFF & sharpened.getRGB(x, y); + int dRGB = 0x00FFFFFF & sharpenedDefault.getRGB(x, y); + int mRGB = 0x00FFFFFF & sharpenedMore.getRGB(x, y); + + int poRGB = 0x00FFFFFF & original.getRGB(x - 1, y); + int psRGB = 0x00FFFFFF & sharpened.getRGB(x - 1, y); + int pdRGB = 0x00FFFFFF & sharpenedDefault.getRGB(x - 1, y); + int pmRGB = 0x00FFFFFF & sharpenedMore.getRGB(x - 1, y); + +// diffOriginal += poRGB - oRGB; +// diffSharpened += psRGB - sRGB; +// diffDefault += pdRGB - dRGB; +// diffMore += pmRGB - mRGB; + + absDiffOriginal += Math.abs(poRGB - oRGB); + absDiffSharpened += Math.abs(psRGB - sRGB); + absDiffDefault += Math.abs(pdRGB - dRGB); + absDiffMore += Math.abs(pmRGB - mRGB); + } + } + +// assertEquals("Difference should not change", diffOriginal, diffSharpened); + assertTrue("Abs difference should increase", absDiffOriginal < absDiffSharpened); +// assertEquals("Difference should not change", diffOriginal, diffDefault); + assertTrue("Abs difference should increase", absDiffOriginal < absDiffDefault); +// assertEquals("Difference should not change", diffOriginal, diffMore); + assertTrue("Abs difference should increase", absDiffOriginal < absDiffMore); +// assertEquals("Difference should not change", diffSharpened, diffMore); + assertTrue("Abs difference should increase", absDiffSharpened < absDiffMore); + } + + @Test + public void testBlur() { + final BufferedImage original = this.original; + + assertNotNull(original); + + final BufferedImage notBlurred = ImageUtil.blur(original, 0f); + // Assumed: Images should be equal + if (original != notBlurred) { // Don't care to test if images are same + for (int y = 0; y < original.getHeight(); y++) { + for (int x = 0; x < original.getWidth(); x++) { + assertEquals("0 blur should not change image", original.getRGB(x, y), notBlurred.getRGB(x, y)); + } + } + } + + // Assumed: Difference between neighbouring pixels should decrease for higher blur values + // Assumed: Dynamics of entire image should not change + final BufferedImage blurred = ImageUtil.blur(original); + final BufferedImage blurredDefault = ImageUtil.blur(original, 1.5f); + final BufferedImage blurredMore = ImageUtil.blur(original, 3f); + +// long diffOriginal = 0; +// long diffBlurred = 0; +// long diffDefault = 0; +// long diffMore = 0; + + long absDiffOriginal = 0; + long absDiffBlurred = 0; + long absDiffDefault = 0; + long absDiffMore = 0; + + for (int y = 0; y < original.getHeight(); y++) { + for (int x = 1; x < original.getWidth(); x++) { + int oRGB = 0x00FFFFFF & original.getRGB(x, y); + int bRGB = 0x00FFFFFF & blurred.getRGB(x, y); + int dRGB = 0x00FFFFFF & blurredDefault.getRGB(x, y); + int mRGB = 0x00FFFFFF & blurredMore.getRGB(x, y); + + int poRGB = 0x00FFFFFF & original.getRGB(x - 1, y); + int pbRGB = 0x00FFFFFF & blurred.getRGB(x - 1, y); + int pdRGB = 0x00FFFFFF & blurredDefault.getRGB(x - 1, y); + int pmRGB = 0x00FFFFFF & blurredMore.getRGB(x - 1, y); + +// diffOriginal += poRGB - oRGB; +// diffBlurred += pbRGB - bRGB; +// diffDefault += pdRGB - dRGB; +// diffMore += pmRGB - mRGB; + + absDiffOriginal += Math.abs(poRGB - oRGB); + absDiffBlurred += Math.abs(pbRGB - bRGB); + absDiffDefault += Math.abs(pdRGB - dRGB); + absDiffMore += Math.abs(pmRGB - mRGB); + } + } + +// assertEquals("Difference should not change", diffOriginal, diffBlurred); + assertTrue(String.format("Abs difference should decrease: %s <= %s", absDiffOriginal, absDiffBlurred), absDiffOriginal > absDiffBlurred); +// assertEquals("Difference should not change", diffOriginal, diffDefault); + assertTrue("Abs difference should decrease", absDiffOriginal > absDiffDefault); +// assertEquals("Difference should not change", diffOriginal, diffMore); + assertTrue("Abs difference should decrease", absDiffOriginal > absDiffMore); +// assertEquals("Difference should not change", diffBlurred, diffMore); + assertTrue("Abs difference should decrease", absDiffBlurred > absDiffMore); + } + + @Test + public void testIndexImage() { + BufferedImage sunflower = original; + + assertNotNull(sunflower); + + BufferedImage image = ImageUtil.createIndexed(sunflower); + assertNotNull("Image was null", image); + assertTrue(image.getColorModel() instanceof IndexColorModel); + } +} diff --git a/common/common-image/src/test/java/com/twelvemonkeys/image/ResampleOpTestCase.java b/common/common-image/src/test/java/com/twelvemonkeys/image/ResampleOpTest.java similarity index 87% rename from common/common-image/src/test/java/com/twelvemonkeys/image/ResampleOpTestCase.java rename to common/common-image/src/test/java/com/twelvemonkeys/image/ResampleOpTest.java index 316fac6e..c6b43bf3 100644 --- a/common/common-image/src/test/java/com/twelvemonkeys/image/ResampleOpTestCase.java +++ b/common/common-image/src/test/java/com/twelvemonkeys/image/ResampleOpTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.image; import org.junit.Ignore; @@ -19,7 +49,7 @@ import static org.junit.Assert.*; * @author last modified by $Author: haku $ * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/image/ResampleOpTestCase.java#1 $ */ -public class ResampleOpTestCase { +public class ResampleOpTest { protected BufferedImage createImage(final int pWidth, final int pHeigth) { return createImage(pWidth, pHeigth, BufferedImage.TYPE_INT_ARGB); diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/AbstractCachedSeekableStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/AbstractCachedSeekableStream.java index 69f07bba..17d9038f 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/AbstractCachedSeekableStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/AbstractCachedSeekableStream.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.io; import com.twelvemonkeys.lang.Validate; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/CompoundReader.java b/common/common-io/src/main/java/com/twelvemonkeys/io/CompoundReader.java index e41562f1..77911567 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/CompoundReader.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/CompoundReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; @@ -32,8 +34,8 @@ import com.twelvemonkeys.lang.Validate; import java.io.IOException; import java.io.Reader; -import java.util.Iterator; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; /** diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/EmptyReader.java b/common/common-io/src/main/java/com/twelvemonkeys/io/EmptyReader.java index d83c9053..ea1a1abf 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/EmptyReader.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/EmptyReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/FastByteArrayOutputStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/FastByteArrayOutputStream.java index bf6c5b5f..4bac2b82 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/FastByteArrayOutputStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/FastByteArrayOutputStream.java @@ -4,34 +4,36 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; -import java.io.ByteArrayInputStream; /** * An unsynchronized {@code ByteArrayOutputStream} implementation. This version diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/FileCacheSeekableStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/FileCacheSeekableStream.java index e514c3c8..bfdbaed8 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/FileCacheSeekableStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/FileCacheSeekableStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/FileSeekableStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/FileSeekableStream.java index e86ad5f0..86c92e39 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/FileSeekableStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/FileSeekableStream.java @@ -4,31 +4,36 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; -import java.io.*; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.RandomAccessFile; /** * A {@code SeekableInputStream} implementation that uses random access directly to a {@code File}. diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/FileSystem.java b/common/common-io/src/main/java/com/twelvemonkeys/io/FileSystem.java index 9b18f789..b275e5bf 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/FileSystem.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/FileSystem.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/FileUtil.java b/common/common-io/src/main/java/com/twelvemonkeys/io/FileUtil.java index 8cad4665..58ee8f7f 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/FileUtil.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/FileUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; @@ -33,11 +35,11 @@ import com.twelvemonkeys.lang.Validate; import com.twelvemonkeys.util.Visitor; import java.io.*; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.UndeclaredThrowableException; import java.net.URL; import java.text.NumberFormat; -import java.lang.reflect.Method; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.UndeclaredThrowableException; /** * A utility class with some useful file and i/o related methods. diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/FilenameMaskFilter.java b/common/common-io/src/main/java/com/twelvemonkeys/io/FilenameMaskFilter.java index 6a541621..26f5e477 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/FilenameMaskFilter.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/FilenameMaskFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataInputStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataInputStream.java index 7eb31923..401b92dd 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataInputStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataInputStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * From http://www.cafeaulait.org/books/javaio/ioexamples/index.html: diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataOutputStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataOutputStream.java index 78699d73..84d6469f 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataOutputStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataOutputStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * From http://www.cafeaulait.org/books/javaio/ioexamples/index.html: diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianRandomAccessFile.java b/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianRandomAccessFile.java index 6cb701dc..73b222f5 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianRandomAccessFile.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianRandomAccessFile.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/MemoryCacheSeekableStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/MemoryCacheSeekableStream.java index 70bf86ff..a60bc8a4 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/MemoryCacheSeekableStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/MemoryCacheSeekableStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/NullInputStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/NullInputStream.java index aa27ac30..9e7af300 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/NullInputStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/NullInputStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/NullOutputStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/NullOutputStream.java index ad99120b..2b274a37 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/NullOutputStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/NullOutputStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/RandomAccessStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/RandomAccessStream.java index 196da6e9..79e09afe 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/RandomAccessStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/RandomAccessStream.java @@ -4,34 +4,36 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; import java.io.DataInput; import java.io.DataOutput; -import java.io.IOException; import java.io.EOFException; +import java.io.IOException; /** * A data stream that is both readable and writable, much like a diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/Seekable.java b/common/common-io/src/main/java/com/twelvemonkeys/io/Seekable.java index b84d5d3e..40b00ed9 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/Seekable.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/Seekable.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/SeekableInputStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/SeekableInputStream.java index 0a605174..6935bcc3 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/SeekableInputStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/SeekableInputStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/SeekableOutputStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/SeekableOutputStream.java index 133597ec..cc99cf73 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/SeekableOutputStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/SeekableOutputStream.java @@ -4,32 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; -import java.io.OutputStream; import java.io.IOException; +import java.io.OutputStream; import java.util.Stack; /** diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/StringArrayReader.java b/common/common-io/src/main/java/com/twelvemonkeys/io/StringArrayReader.java index d90b3e1b..0270ef0a 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/StringArrayReader.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/StringArrayReader.java @@ -4,35 +4,37 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; import com.twelvemonkeys.lang.Validate; -import java.io.StringReader; import java.io.IOException; import java.io.Reader; +import java.io.StringReader; /** * StringArrayReader diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/SubStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/SubStream.java index d45d6b78..023d0a1f 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/SubStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/SubStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/UnixFileSystem.java b/common/common-io/src/main/java/com/twelvemonkeys/io/UnixFileSystem.java index 3675fee5..761a2ab8 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/UnixFileSystem.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/UnixFileSystem.java @@ -4,35 +4,37 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; import com.twelvemonkeys.util.StringTokenIterator; +import java.io.BufferedReader; import java.io.File; import java.io.IOException; -import java.io.BufferedReader; /** * UnixFileSystem diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/Win32File.java b/common/common-io/src/main/java/com/twelvemonkeys/io/Win32File.java index 872ad480..ee3e3e1b 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/Win32File.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/Win32File.java @@ -4,31 +4,36 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; -import java.io.*; +import java.io.File; +import java.io.FileFilter; +import java.io.FilenameFilter; +import java.io.IOException; /** * Win32File diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/Win32FileSystem.java b/common/common-io/src/main/java/com/twelvemonkeys/io/Win32FileSystem.java index 8e8ff5a9..400164d1 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/Win32FileSystem.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/Win32FileSystem.java @@ -4,32 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; -import java.io.File; import java.io.BufferedReader; +import java.io.File; import java.io.IOException; /** diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/Win32Lnk.java b/common/common-io/src/main/java/com/twelvemonkeys/io/Win32Lnk.java index 738243e1..7833c0fa 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/Win32Lnk.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/Win32Lnk.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/WriterOutputStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/WriterOutputStream.java index d3c0a1a7..b9f9f39e 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/WriterOutputStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/WriterOutputStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; @@ -31,9 +33,9 @@ package com.twelvemonkeys.io; import com.twelvemonkeys.lang.DateUtil; import java.io.*; -import java.nio.charset.Charset; import java.nio.ByteBuffer; import java.nio.CharBuffer; +import java.nio.charset.Charset; /** * Wraps a {@code Writer} in an {@code OutputStream}. diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Base64Decoder.java b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Base64Decoder.java index 7e385c3a..d433e387 100644 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Base64Decoder.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Base64Decoder.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io.enc; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Base64Encoder.java b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Base64Encoder.java index d8336498..a9317969 100644 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Base64Encoder.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Base64Encoder.java @@ -4,32 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io.enc; -import java.io.OutputStream; import java.io.IOException; +import java.io.OutputStream; import java.nio.ByteBuffer; /** diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/DecodeException.java b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/DecodeException.java index 7acf88af..c54e8d09 100644 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/DecodeException.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/DecodeException.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io.enc; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Decoder.java b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Decoder.java index aa7576d0..75372bad 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Decoder.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Decoder.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io.enc; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/DecoderStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/DecoderStream.java index 07826694..188f8f0f 100644 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/DecoderStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/DecoderStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io.enc; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Encoder.java b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Encoder.java index 1864e4dc..42e235e4 100644 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Encoder.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/Encoder.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io.enc; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/EncoderStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/EncoderStream.java index f1ba67ef..a22ad5f0 100644 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/EncoderStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/EncoderStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io.enc; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/PackBitsDecoder.java b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/PackBitsDecoder.java index 86c32a1f..82b71ebc 100644 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/PackBitsDecoder.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/PackBitsDecoder.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io.enc; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/PackBitsEncoder.java b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/PackBitsEncoder.java index e51a94e8..501e7c57 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/PackBitsEncoder.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/PackBitsEncoder.java @@ -4,32 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io.enc; -import java.io.OutputStream; import java.io.IOException; +import java.io.OutputStream; import java.nio.ByteBuffer; /** diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/package-info.java b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/package-info.java index 72d47b16..d7ff80c0 100644 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/enc/package-info.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/enc/package-info.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** * Contains customized stream classes, that can read or write compressed data on the fly, * along with encoders and decoders for popular stream formats, such as Base64, ZIP (deflate), LZW, PackBits etc.. diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/CompoundDocument.java b/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/CompoundDocument.java index 8dcffcc9..91cab4a5 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/CompoundDocument.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/CompoundDocument.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io.ole2; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/CorruptDocumentException.java b/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/CorruptDocumentException.java index e7340407..9a6f020c 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/CorruptDocumentException.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/CorruptDocumentException.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io.ole2; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/Entry.java b/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/Entry.java index d4ac6b60..c7951ff7 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/Entry.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/Entry.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io.ole2; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/SIdChain.java b/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/SIdChain.java index b1bb7b73..ac48c99b 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/SIdChain.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/SIdChain.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io.ole2; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/package-info.java b/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/package-info.java index 0220f950..35412b61 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/package-info.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/package-info.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** * Contains classes for reading the contents of the * Microsoft OLE 2 compound document format. diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/package_info.java b/common/common-io/src/main/java/com/twelvemonkeys/io/package_info.java index 87a4749e..07897ee8 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/package_info.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/package_info.java @@ -1,3 +1,32 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /** * Provides for system input and output through data streams, serialization and the file system. */ diff --git a/common/common-io/src/main/java/com/twelvemonkeys/net/HTTPUtil.java b/common/common-io/src/main/java/com/twelvemonkeys/net/HTTPUtil.java index 399adf29..d50e203e 100644 --- a/common/common-io/src/main/java/com/twelvemonkeys/net/HTTPUtil.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/net/HTTPUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.net; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/net/MIMEUtil.java b/common/common-io/src/main/java/com/twelvemonkeys/net/MIMEUtil.java index a576a5e4..a8196395 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/net/MIMEUtil.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/net/MIMEUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.net; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/net/package_info.java b/common/common-io/src/main/java/com/twelvemonkeys/net/package_info.java index 0a0322ca..8fae1caa 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/net/package_info.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/net/package_info.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** * Provides classes for net access. */ diff --git a/common/common-io/src/main/java/com/twelvemonkeys/xml/DOMSerializer.java b/common/common-io/src/main/java/com/twelvemonkeys/xml/DOMSerializer.java index 4dd47830..30f716e9 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/xml/DOMSerializer.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/xml/DOMSerializer.java @@ -4,34 +4,35 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.xml; -import org.w3c.dom.Document; -import org.w3c.dom.Node; import org.w3c.dom.DOMConfiguration; import org.w3c.dom.DOMImplementationList; +import org.w3c.dom.Document; +import org.w3c.dom.Node; import org.w3c.dom.bootstrap.DOMImplementationRegistry; import org.w3c.dom.ls.DOMImplementationLS; import org.w3c.dom.ls.LSOutput; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/xml/XMLSerializer.java b/common/common-io/src/main/java/com/twelvemonkeys/xml/XMLSerializer.java index c1945f11..67f124be 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/xml/XMLSerializer.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/xml/XMLSerializer.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.xml; diff --git a/common/common-io/src/main/java/com/twelvemonkeys/xml/package_info.java b/common/common-io/src/main/java/com/twelvemonkeys/xml/package_info.java index 5aa03c91..ee8b3793 100644 --- a/common/common-io/src/main/java/com/twelvemonkeys/xml/package_info.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/xml/package_info.java @@ -1,4 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /** * Provides XML support classes. */ - package com.twelvemonkeys.xml; \ No newline at end of file +package com.twelvemonkeys.xml; \ No newline at end of file diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/CompoundReaderTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/CompoundReaderTest.java similarity index 54% rename from common/common-io/src/test/java/com/twelvemonkeys/io/CompoundReaderTestCase.java rename to common/common-io/src/test/java/com/twelvemonkeys/io/CompoundReaderTest.java index a3a4ed2f..6e1fb796 100755 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/CompoundReaderTestCase.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/CompoundReaderTest.java @@ -1,68 +1,98 @@ -package com.twelvemonkeys.io; - -import com.twelvemonkeys.lang.StringUtil; -import com.twelvemonkeys.util.CollectionUtil; -import org.junit.Test; - -import java.io.Reader; -import java.io.IOException; -import java.io.StringReader; -import java.util.List; -import java.util.ArrayList; - -import static org.junit.Assert.*; - -/** - * CompoundReaderTestCase - *

    - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/CompoundReaderTestCase.java#2 $ - */ -public class CompoundReaderTestCase extends ReaderAbstractTestCase { - protected Reader makeReader(String pInput) { - // Split - String[] input = StringUtil.toStringArray(pInput, " "); - List readers = new ArrayList(input.length); - - // Reappend spaces... - // TODO: Add other readers - for (int i = 0; i < input.length; i++) { - if (i != 0) { - input[i] = " " + input[i]; - } - readers.add(new StringReader(input[i])); - } - - return new CompoundReader(readers.iterator()); - } - - @Test - public void testNullConstructor() { - try { - new CompoundReader(null); - fail("Should not allow null argument"); - } - catch (RuntimeException e) { - assertNotNull(e.getMessage()); - } - } - - @Test - public void testEmptyIteratorConstructor() throws IOException { - Reader reader = new CompoundReader(CollectionUtil.iterator(new Reader[0])); - assertEquals(-1, reader.read()); - } - - @Test - public void testIteratorWithNullConstructor() throws IOException { - try { - new CompoundReader(CollectionUtil.iterator(new Reader[] {null})); - fail("Should not allow null in iterator argument"); - } - catch (RuntimeException e) { - assertNotNull(e.getMessage()); - } - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io; + +import com.twelvemonkeys.lang.StringUtil; +import com.twelvemonkeys.util.CollectionUtil; +import org.junit.Test; + +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.*; + +/** + * CompoundReaderTestCase + *

    + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/CompoundReaderTestCase.java#2 $ + */ +public class CompoundReaderTest extends ReaderAbstractTest { + protected Reader makeReader(String pInput) { + // Split + String[] input = StringUtil.toStringArray(pInput, " "); + List readers = new ArrayList(input.length); + + // Reappend spaces... + // TODO: Add other readers + for (int i = 0; i < input.length; i++) { + if (i != 0) { + input[i] = " " + input[i]; + } + readers.add(new StringReader(input[i])); + } + + return new CompoundReader(readers.iterator()); + } + + @Test + public void testNullConstructor() { + try { + new CompoundReader(null); + fail("Should not allow null argument"); + } + catch (RuntimeException e) { + assertNotNull(e.getMessage()); + } + } + + @Test + public void testEmptyIteratorConstructor() throws IOException { + Reader reader = new CompoundReader(CollectionUtil.iterator(new Reader[0])); + assertEquals(-1, reader.read()); + } + + @Test + public void testIteratorWithNullConstructor() throws IOException { + try { + new CompoundReader(CollectionUtil.iterator(new Reader[] {null})); + fail("Should not allow null in iterator argument"); + } + catch (RuntimeException e) { + assertNotNull(e.getMessage()); + } + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/FastByteArrayOutputStreamTest.java b/common/common-io/src/test/java/com/twelvemonkeys/io/FastByteArrayOutputStreamTest.java new file mode 100755 index 00000000..c3537431 --- /dev/null +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/FastByteArrayOutputStreamTest.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io; + +import org.junit.Test; + +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.Assert.assertEquals; + +/** + * FastByteArrayOutputStreamTestCase + *

    + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/FastByteArrayOutputStreamTestCase.java#1 $ + */ +public class FastByteArrayOutputStreamTest extends OutputStreamAbstractTest { + protected FastByteArrayOutputStream makeObject() { + return new FastByteArrayOutputStream(256); + } + + @Test + public void testCreateInputStream() throws IOException { + FastByteArrayOutputStream out = makeObject(); + + String hello = "Hello World"; + out.write(hello.getBytes("UTF-8")); + + InputStream in = out.createInputStream(); + + byte[] read = FileUtil.read(in); + + assertEquals(hello, new String(read, "UTF-8")); + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/FastByteArrayOutputStreamTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/FastByteArrayOutputStreamTestCase.java deleted file mode 100755 index 95f09ccf..00000000 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/FastByteArrayOutputStreamTestCase.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.twelvemonkeys.io; - -import org.junit.Test; - -import java.io.IOException; -import java.io.InputStream; - -import static org.junit.Assert.assertEquals; - -/** - * FastByteArrayOutputStreamTestCase - *

    - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/FastByteArrayOutputStreamTestCase.java#1 $ - */ -public class FastByteArrayOutputStreamTestCase extends OutputStreamAbstractTestCase { - protected FastByteArrayOutputStream makeObject() { - return new FastByteArrayOutputStream(256); - } - - @Test - public void testCreateInputStream() throws IOException { - FastByteArrayOutputStream out = makeObject(); - - String hello = "Hello World"; - out.write(hello.getBytes("UTF-8")); - - InputStream in = out.createInputStream(); - - byte[] read = FileUtil.read(in); - - assertEquals(hello, new String(read, "UTF-8")); - } -} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/FileCacheSeekableStreamTest.java b/common/common-io/src/test/java/com/twelvemonkeys/io/FileCacheSeekableStreamTest.java new file mode 100755 index 00000000..01d139b1 --- /dev/null +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/FileCacheSeekableStreamTest.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io; + +import java.io.IOException; +import java.io.InputStream; + +/** + * FileCacheSeekableStreamTestCase + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/FileCacheSeekableStreamTestCase.java#3 $ + */ +public class FileCacheSeekableStreamTest extends SeekableInputStreamAbstractTest { + protected SeekableInputStream makeInputStream(final InputStream pStream) { + try { + return new FileCacheSeekableStream(pStream); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/FileCacheSeekableStreamTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/FileCacheSeekableStreamTestCase.java deleted file mode 100755 index d12e9ca5..00000000 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/FileCacheSeekableStreamTestCase.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.twelvemonkeys.io; - -import java.io.IOException; -import java.io.InputStream; - -/** - * FileCacheSeekableStreamTestCase - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/FileCacheSeekableStreamTestCase.java#3 $ - */ -public class FileCacheSeekableStreamTestCase extends SeekableInputStreamAbstractTestCase { - protected SeekableInputStream makeInputStream(final InputStream pStream) { - try { - return new FileCacheSeekableStream(pStream); - } - catch (IOException e) { - throw new RuntimeException(e); - } - } -} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/FileSeekableStreamTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/FileSeekableStreamTest.java similarity index 55% rename from common/common-io/src/test/java/com/twelvemonkeys/io/FileSeekableStreamTestCase.java rename to common/common-io/src/test/java/com/twelvemonkeys/io/FileSeekableStreamTest.java index 65f3c989..d4325af9 100755 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/FileSeekableStreamTestCase.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/FileSeekableStreamTest.java @@ -1,74 +1,104 @@ -package com.twelvemonkeys.io; - -import org.junit.Test; - -import java.io.*; - -import static org.junit.Assert.*; - -/** - * MemoryCacheSeekableStreamTestCase - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/FileSeekableStreamTestCase.java#3 $ - */ -public class FileSeekableStreamTestCase extends SeekableInputStreamAbstractTestCase { - protected SeekableInputStream makeInputStream(final InputStream pStream) { - try { - return new FileSeekableStream(createFileWithContent(pStream)); - } - catch (IOException e) { - throw new RuntimeException(e); - } - } - - private File createFileWithContent(final InputStream pStream) throws IOException { - File temp = File.createTempFile("tm-io-junit", null); - temp.deleteOnExit(); - OutputStream os = new FileOutputStream(temp); - try { - FileUtil.copy(pStream, os); - } - finally { - os.close(); - pStream.close(); - } - return temp; - } - - @Test - @Override - public void testCloseUnderlyingStream() throws IOException { - // There is no underlying stream here... - } - - @Test - public void testCloseUnderlyingFile() throws IOException { - final boolean[] closed = new boolean[1]; - - File file = createFileWithContent(new ByteArrayInputStream(makeRandomArray(256))); - - RandomAccessFile raf = new RandomAccessFile(file, "r") { - @Override - public void close() throws IOException { - closed[0] = true; - super.close(); - } - }; - - FileSeekableStream stream = new FileSeekableStream(raf); - - try { - FileUtil.read(stream); // Read until EOF - - assertEquals("EOF not reached (test case broken)", -1, stream.read()); - assertFalse("Underlying stream closed before close", closed[0]); - } - finally { - stream.close(); - } - - assertTrue("Underlying stream not closed", closed[0]); - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io; + +import org.junit.Test; + +import java.io.*; + +import static org.junit.Assert.*; + +/** + * MemoryCacheSeekableStreamTestCase + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/FileSeekableStreamTestCase.java#3 $ + */ +public class FileSeekableStreamTest extends SeekableInputStreamAbstractTest { + protected SeekableInputStream makeInputStream(final InputStream pStream) { + try { + return new FileSeekableStream(createFileWithContent(pStream)); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } + + private File createFileWithContent(final InputStream pStream) throws IOException { + File temp = File.createTempFile("tm-io-junit", null); + temp.deleteOnExit(); + OutputStream os = new FileOutputStream(temp); + try { + FileUtil.copy(pStream, os); + } + finally { + os.close(); + pStream.close(); + } + return temp; + } + + @Test + @Override + public void testCloseUnderlyingStream() throws IOException { + // There is no underlying stream here... + } + + @Test + public void testCloseUnderlyingFile() throws IOException { + final boolean[] closed = new boolean[1]; + + File file = createFileWithContent(new ByteArrayInputStream(makeRandomArray(256))); + + RandomAccessFile raf = new RandomAccessFile(file, "r") { + @Override + public void close() throws IOException { + closed[0] = true; + super.close(); + } + }; + + FileSeekableStream stream = new FileSeekableStream(raf); + + try { + FileUtil.read(stream); // Read until EOF + + assertEquals("EOF not reached (test case broken)", -1, stream.read()); + assertFalse("Underlying stream closed before close", closed[0]); + } + finally { + stream.close(); + } + + assertTrue("Underlying stream not closed", closed[0]); + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/InputStreamAbstractTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/InputStreamAbstractTest.java similarity index 89% rename from common/common-io/src/test/java/com/twelvemonkeys/io/InputStreamAbstractTestCase.java rename to common/common-io/src/test/java/com/twelvemonkeys/io/InputStreamAbstractTest.java index 9f21a06d..59e1ac38 100755 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/InputStreamAbstractTestCase.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/InputStreamAbstractTest.java @@ -1,419 +1,448 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.twelvemonkeys.io; - -import com.twelvemonkeys.lang.ObjectAbstractTestCase; -import org.junit.Test; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Random; - -import static org.junit.Assert.*; - -/** - * InputStreamAbstractTestCase - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/InputStreamAbstractTestCase.java#1 $ - */ -public abstract class InputStreamAbstractTestCase extends ObjectAbstractTestCase { - // TODO: FixMe! THIS TEST IS (WAS) COMPLETELY BROKEN... - // It relies on the contents of the stream being a certain order byte0 == 0, byte1 == 1 etc.. - // But the subclasses don't implement this.. Need to fix. - - final static private long SEED = 29487982745l; - final static Random sRandom = new Random(SEED); - - protected final Object makeObject() { - return makeInputStream(); - } - - protected InputStream makeInputStream() { - return makeInputStream(16); - } - - protected InputStream makeInputStream(int pSize) { - byte[] bytes = makeRandomArray(pSize); - return makeInputStream(bytes); - } - - protected abstract InputStream makeInputStream(byte[] pBytes); - - protected final byte[] makeRandomArray(final int pSize) { - byte[] bytes = new byte[pSize]; - sRandom.nextBytes(bytes); - return bytes; - } - - protected final byte[] makeOrderedArray(final int pSize) { - byte[] bytes = new byte[pSize]; - for (int i = 0; i < bytes.length; i++) { - bytes[i] = (byte) i; - } - return bytes; - } - - @Test - public void testRead() throws Exception { - int size = 5; - InputStream input = makeInputStream(makeOrderedArray(size)); - for (int i = 0; i < size; i++) { - assertTrue("Check Size [" + i + "]", (size - i) >= input.available()); - assertEquals("Check Value [" + i + "]", i, input.read()); - } - assertEquals("Available after contents all read", 0, input.available()); - - // Test reading after the end of file - try { - int result = input.read(); - assertEquals("Wrong value read after end of file", -1, result); - } - catch (IOException e) { - fail("Should not have thrown an IOException: " + e.getMessage()); - } - } - - @Test - public void testAvailable() throws Exception { - InputStream input = makeInputStream(1); - assertFalse("Unexpected EOF", input.read() < 0); - assertEquals("Available after contents all read", 0, input.available()); - - // Check availbale is zero after End of file - assertEquals("End of File", -1, input.read()); - assertEquals("Available after End of File", 0, input.available()); - } - - @Test - public void testReadByteArray() throws Exception { - byte[] bytes = new byte[10]; - byte[] data = makeOrderedArray(15); - InputStream input = makeInputStream(data); - - // Read into array - int count1 = input.read(bytes); - assertEquals("Read 1", bytes.length, count1); - for (int i = 0; i < count1; i++) { - assertEquals("Check Bytes 1", i, bytes[i]); - } - - // Read into array - int count2 = input.read(bytes); - assertEquals("Read 2", 5, count2); - for (int i = 0; i < count2; i++) { - assertEquals("Check Bytes 2", count1 + i, bytes[i]); - } - - // End of File - int count3 = input.read(bytes); - assertEquals("Read 3 (EOF)", -1, count3); - - // Test reading after the end of file - try { - int result = input.read(bytes); - assertEquals("Wrong value read after end of file", -1, result); - } - catch (IOException e) { - fail("Should not have thrown an IOException: " + e.getMessage()); - } - - // Reset - input = makeInputStream(data); - - // Read into array using offset & length - int offset = 2; - int lth = 4; - int count5 = input.read(bytes, offset, lth); - assertEquals("Read 5", lth, count5); - for (int i = offset; i < lth; i++) { - assertEquals("Check Bytes 2", i - offset, bytes[i]); - } - } - - @Test - public void testEOF() throws Exception { - InputStream input = makeInputStream(makeOrderedArray(2)); - assertEquals("Read 1", 0, input.read()); - assertEquals("Read 2", 1, input.read()); - assertEquals("Read 3", -1, input.read()); - assertEquals("Read 4", -1, input.read()); - assertEquals("Read 5", -1, input.read()); - } - - @Test - public void testMarkResetUnsupported() throws IOException { - InputStream input = makeInputStream(10); - if (input.markSupported()) { - return; - } - - input.mark(100); // Should be a no-op - - int read = input.read(); - assertTrue(read >= 0); - - // TODO: According to InputStream#reset, it is allowed to do some - // implementation specific reset, and still be correct... - try { - input.reset(); - fail("Should throw IOException"); - } - catch (IOException e) { - assertTrue("Wrong messge: " + e.getMessage(), e.getMessage().contains("reset")); - } - } - - @Test - public void testResetNoMark() throws Exception { - InputStream input = makeInputStream(makeOrderedArray(10)); - - if (!input.markSupported()) { - return; // Not supported, skip test - } - - int read = input.read(); - assertEquals(0, read); - - // No mark may either throw exception, or reset to beginning of stream. - try { - input.reset(); - assertEquals("Re-read of reset data should be same", 0, input.read()); - } - catch (Exception e) { - assertTrue("Wrong no mark IOException message", e.getMessage().contains("mark")); - } - } - - @Test - public void testMarkReset() throws Exception { - InputStream input = makeInputStream(makeOrderedArray(25)); - - if (!input.markSupported()) { - return; // Not supported, skip test - } - - int read = input.read(); - assertEquals(0, read); - - int position = 1; - int readlimit = 10; - - // Mark - input.mark(readlimit); - - // Read further - for (int i = 0; i < 3; i++) { - assertEquals("Read After Mark [" + i + "]", (position + i), input.read()); - } - - // Reset - input.reset(); - - // Read from marked position - for (int i = 0; i < readlimit + 1; i++) { - assertEquals("Read After Reset [" + i + "]", (position + i), input.read()); - } - } - - @Test - public void testResetAfterReadLimit() throws Exception { - InputStream input = makeInputStream(makeOrderedArray(25)); - - if (!input.markSupported()) { - return; // Not supported, skip test - } - - int read = input.read(); - assertEquals(0, read); - - int position = 1; - int readlimit = 5; - - // Mark - input.mark(readlimit); - - // Read past marked position - for (int i = 0; i < readlimit + 1; i++) { - assertEquals("Read After Reset [" + i + "]", (position + i), input.read()); - } - - // Reset after read limit passed, may either throw exception, or reset to last mark - try { - input.reset(); - assertEquals("Re-read of reset data should be same", 1, input.read()); - } - catch (Exception e) { - assertTrue("Wrong read-limit IOException message", e.getMessage().contains("mark")); - } - } - - @Test - public void testResetAfterReset() throws Exception { - InputStream input = makeInputStream(makeOrderedArray(25)); - - if (!input.markSupported()) { - return; // Not supported, skip test - } - - int first = input.read(); - assertTrue("Expected to read positive value", first >= 0); - - int readlimit = 5; - - // Mark - input.mark(readlimit); - int read = input.read(); - assertTrue("Expected to read positive value", read >= 0); - - assertTrue(input.read() >= 0); - assertTrue(input.read() >= 0); - - input.reset(); - assertEquals("Expected value read differs from actual", read, input.read()); - - // Reset after read limit passed, may either throw exception, or reset to last good mark - try { - input.reset(); - int reRead = input.read(); - assertTrue("Re-read of reset data should be same as initially marked or first", reRead == read || reRead == first); - } - catch (Exception e) { - assertTrue("Wrong read-limit IOException message", e.getMessage().contains("mark")); - } - } - - @Test - public void testSkip() throws Exception { - InputStream input = makeInputStream(makeOrderedArray(10)); - - assertEquals("Unexpected value read", 0, input.read()); - assertEquals("Unexpected value read", 1, input.read()); - assertEquals("Unexpected number of bytes skipped", 5, input.skip(5)); - assertEquals("Unexpected value read", 7, input.read()); - - assertEquals("Unexpected number of bytes skipped", 2, input.skip(5)); // only 2 left to skip - assertEquals("Unexpected value read after EOF", -1, input.read()); - - // Spec says skip might return 0 or negative after EOF... - assertTrue("Positive value skipped after EOF", input.skip(5) <= 0); // End of file - assertEquals("Unexpected value read after EOF", -1, input.read()); - } - - @Test - public void testSanityOrdered() throws IOException { - // This is to sanity check that the test itself is correct... - byte[] bytes = makeOrderedArray(25); - InputStream expected = new ByteArrayInputStream(bytes); - InputStream actual = makeInputStream(bytes); - - for (byte b : bytes) { - assertEquals((int) b, expected.read()); - assertEquals((int) b, actual.read()); - } - } - - @Test - public void testSanityOrdered2() throws IOException { - // This is to sanity check that the test itself is correct... - byte[] bytes = makeOrderedArray(25); - InputStream expected = new ByteArrayInputStream(bytes); - InputStream actual = makeInputStream(bytes); - - byte[] e = new byte[bytes.length]; - byte[] a = new byte[bytes.length]; - - assertEquals(e.length, expected.read(e, 0, e.length)); - assertEquals(a.length, actual.read(a, 0, a.length)); - - for (int i = 0; i < bytes.length; i++) { - assertEquals(bytes[i], e[i]); - assertEquals(bytes[i], a[i]); - } - } - - @Test - public void testSanityNegative() throws IOException { - // This is to sanity check that the test itself is correct... - byte[] bytes = new byte[25]; - for (int i = 0; i < bytes.length; i++) { - bytes[i] = (byte) (255 - i); - } - InputStream expected = new ByteArrayInputStream(bytes); - InputStream actual = makeInputStream(bytes); - - for (byte b : bytes) { - assertEquals(b & 0xff, expected.read()); - assertEquals(b & 0xff, actual.read()); - } - } - - @Test - public void testSanityNegative2() throws IOException { - // This is to sanity check that the test itself is correct... - byte[] bytes = new byte[25]; - for (int i = 0; i < bytes.length; i++) { - bytes[i] = (byte) (255 - i); - } - InputStream expected = new ByteArrayInputStream(bytes); - InputStream actual = makeInputStream(bytes); - - byte[] e = new byte[bytes.length]; - byte[] a = new byte[bytes.length]; - - assertEquals(e.length, expected.read(e, 0, e.length)); - assertEquals(a.length, actual.read(a, 0, a.length)); - - for (int i = 0; i < bytes.length; i++) { - assertEquals(bytes[i], e[i]); - assertEquals(bytes[i], a[i]); - } - } - - @Test - public void testSanityRandom() throws IOException { - // This is to sanity check that the test itself is correct... - byte[] bytes = makeRandomArray(25); - InputStream expected = new ByteArrayInputStream(bytes); - InputStream actual = makeInputStream(bytes); - - for (byte b : bytes) { - assertEquals(b & 0xff, expected.read()); - assertEquals(b & 0xff, actual.read()); - } - } - - @Test - public void testSanityRandom2() throws IOException { - // This is to sanity check that the test itself is correct... - byte[] bytes = makeRandomArray(25); - InputStream expected = new ByteArrayInputStream(bytes); - InputStream actual = makeInputStream(bytes); - - byte[] e = new byte[bytes.length]; - byte[] a = new byte[bytes.length]; - - assertEquals(e.length, expected.read(e, 0, e.length)); - assertEquals(a.length, actual.read(a, 0, a.length)); - - for (int i = 0; i < bytes.length; i++) { - assertEquals(bytes[i], e[i]); - assertEquals(bytes[i], a[i]); - } - }} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.twelvemonkeys.io; + +import com.twelvemonkeys.lang.ObjectAbstractTest; +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Random; + +import static org.junit.Assert.*; + +/** + * InputStreamAbstractTestCase + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/InputStreamAbstractTestCase.java#1 $ + */ +public abstract class InputStreamAbstractTest extends ObjectAbstractTest { + // TODO: FixMe! THIS TEST IS (WAS) COMPLETELY BROKEN... + // It relies on the contents of the stream being a certain order byte0 == 0, byte1 == 1 etc.. + // But the subclasses don't implement this.. Need to fix. + + final static private long SEED = 29487982745l; + final static Random sRandom = new Random(SEED); + + protected final Object makeObject() { + return makeInputStream(); + } + + protected InputStream makeInputStream() { + return makeInputStream(16); + } + + protected InputStream makeInputStream(int pSize) { + byte[] bytes = makeRandomArray(pSize); + return makeInputStream(bytes); + } + + protected abstract InputStream makeInputStream(byte[] pBytes); + + protected final byte[] makeRandomArray(final int pSize) { + byte[] bytes = new byte[pSize]; + sRandom.nextBytes(bytes); + return bytes; + } + + protected final byte[] makeOrderedArray(final int pSize) { + byte[] bytes = new byte[pSize]; + for (int i = 0; i < bytes.length; i++) { + bytes[i] = (byte) i; + } + return bytes; + } + + @Test + public void testRead() throws Exception { + int size = 5; + InputStream input = makeInputStream(makeOrderedArray(size)); + for (int i = 0; i < size; i++) { + assertTrue("Check Size [" + i + "]", (size - i) >= input.available()); + assertEquals("Check Value [" + i + "]", i, input.read()); + } + assertEquals("Available after contents all read", 0, input.available()); + + // Test reading after the end of file + try { + int result = input.read(); + assertEquals("Wrong value read after end of file", -1, result); + } + catch (IOException e) { + fail("Should not have thrown an IOException: " + e.getMessage()); + } + } + + @Test + public void testAvailable() throws Exception { + InputStream input = makeInputStream(1); + assertFalse("Unexpected EOF", input.read() < 0); + assertEquals("Available after contents all read", 0, input.available()); + + // Check availbale is zero after End of file + assertEquals("End of File", -1, input.read()); + assertEquals("Available after End of File", 0, input.available()); + } + + @Test + public void testReadByteArray() throws Exception { + byte[] bytes = new byte[10]; + byte[] data = makeOrderedArray(15); + InputStream input = makeInputStream(data); + + // Read into array + int count1 = input.read(bytes); + assertEquals("Read 1", bytes.length, count1); + for (int i = 0; i < count1; i++) { + assertEquals("Check Bytes 1", i, bytes[i]); + } + + // Read into array + int count2 = input.read(bytes); + assertEquals("Read 2", 5, count2); + for (int i = 0; i < count2; i++) { + assertEquals("Check Bytes 2", count1 + i, bytes[i]); + } + + // End of File + int count3 = input.read(bytes); + assertEquals("Read 3 (EOF)", -1, count3); + + // Test reading after the end of file + try { + int result = input.read(bytes); + assertEquals("Wrong value read after end of file", -1, result); + } + catch (IOException e) { + fail("Should not have thrown an IOException: " + e.getMessage()); + } + + // Reset + input = makeInputStream(data); + + // Read into array using offset & length + int offset = 2; + int lth = 4; + int count5 = input.read(bytes, offset, lth); + assertEquals("Read 5", lth, count5); + for (int i = offset; i < lth; i++) { + assertEquals("Check Bytes 2", i - offset, bytes[i]); + } + } + + @Test + public void testEOF() throws Exception { + InputStream input = makeInputStream(makeOrderedArray(2)); + assertEquals("Read 1", 0, input.read()); + assertEquals("Read 2", 1, input.read()); + assertEquals("Read 3", -1, input.read()); + assertEquals("Read 4", -1, input.read()); + assertEquals("Read 5", -1, input.read()); + } + + @Test + public void testMarkResetUnsupported() throws IOException { + InputStream input = makeInputStream(10); + if (input.markSupported()) { + return; + } + + input.mark(100); // Should be a no-op + + int read = input.read(); + assertTrue(read >= 0); + + // TODO: According to InputStream#reset, it is allowed to do some + // implementation specific reset, and still be correct... + try { + input.reset(); + fail("Should throw IOException"); + } + catch (IOException e) { + assertTrue("Wrong messge: " + e.getMessage(), e.getMessage().contains("reset")); + } + } + + @Test + public void testResetNoMark() throws Exception { + InputStream input = makeInputStream(makeOrderedArray(10)); + + if (!input.markSupported()) { + return; // Not supported, skip test + } + + int read = input.read(); + assertEquals(0, read); + + // No mark may either throw exception, or reset to beginning of stream. + try { + input.reset(); + assertEquals("Re-read of reset data should be same", 0, input.read()); + } + catch (Exception e) { + assertTrue("Wrong no mark IOException message", e.getMessage().contains("mark")); + } + } + + @Test + public void testMarkReset() throws Exception { + InputStream input = makeInputStream(makeOrderedArray(25)); + + if (!input.markSupported()) { + return; // Not supported, skip test + } + + int read = input.read(); + assertEquals(0, read); + + int position = 1; + int readlimit = 10; + + // Mark + input.mark(readlimit); + + // Read further + for (int i = 0; i < 3; i++) { + assertEquals("Read After Mark [" + i + "]", (position + i), input.read()); + } + + // Reset + input.reset(); + + // Read from marked position + for (int i = 0; i < readlimit + 1; i++) { + assertEquals("Read After Reset [" + i + "]", (position + i), input.read()); + } + } + + @Test + public void testResetAfterReadLimit() throws Exception { + InputStream input = makeInputStream(makeOrderedArray(25)); + + if (!input.markSupported()) { + return; // Not supported, skip test + } + + int read = input.read(); + assertEquals(0, read); + + int position = 1; + int readlimit = 5; + + // Mark + input.mark(readlimit); + + // Read past marked position + for (int i = 0; i < readlimit + 1; i++) { + assertEquals("Read After Reset [" + i + "]", (position + i), input.read()); + } + + // Reset after read limit passed, may either throw exception, or reset to last mark + try { + input.reset(); + assertEquals("Re-read of reset data should be same", 1, input.read()); + } + catch (Exception e) { + assertTrue("Wrong read-limit IOException message", e.getMessage().contains("mark")); + } + } + + @Test + public void testResetAfterReset() throws Exception { + InputStream input = makeInputStream(makeOrderedArray(25)); + + if (!input.markSupported()) { + return; // Not supported, skip test + } + + int first = input.read(); + assertTrue("Expected to read positive value", first >= 0); + + int readlimit = 5; + + // Mark + input.mark(readlimit); + int read = input.read(); + assertTrue("Expected to read positive value", read >= 0); + + assertTrue(input.read() >= 0); + assertTrue(input.read() >= 0); + + input.reset(); + assertEquals("Expected value read differs from actual", read, input.read()); + + // Reset after read limit passed, may either throw exception, or reset to last good mark + try { + input.reset(); + int reRead = input.read(); + assertTrue("Re-read of reset data should be same as initially marked or first", reRead == read || reRead == first); + } + catch (Exception e) { + assertTrue("Wrong read-limit IOException message", e.getMessage().contains("mark")); + } + } + + @Test + public void testSkip() throws Exception { + InputStream input = makeInputStream(makeOrderedArray(10)); + + assertEquals("Unexpected value read", 0, input.read()); + assertEquals("Unexpected value read", 1, input.read()); + assertEquals("Unexpected number of bytes skipped", 5, input.skip(5)); + assertEquals("Unexpected value read", 7, input.read()); + + assertEquals("Unexpected number of bytes skipped", 2, input.skip(5)); // only 2 left to skip + assertEquals("Unexpected value read after EOF", -1, input.read()); + + // Spec says skip might return 0 or negative after EOF... + assertTrue("Positive value skipped after EOF", input.skip(5) <= 0); // End of file + assertEquals("Unexpected value read after EOF", -1, input.read()); + } + + @Test + public void testSanityOrdered() throws IOException { + // This is to sanity check that the test itself is correct... + byte[] bytes = makeOrderedArray(25); + InputStream expected = new ByteArrayInputStream(bytes); + InputStream actual = makeInputStream(bytes); + + for (byte b : bytes) { + assertEquals((int) b, expected.read()); + assertEquals((int) b, actual.read()); + } + } + + @Test + public void testSanityOrdered2() throws IOException { + // This is to sanity check that the test itself is correct... + byte[] bytes = makeOrderedArray(25); + InputStream expected = new ByteArrayInputStream(bytes); + InputStream actual = makeInputStream(bytes); + + byte[] e = new byte[bytes.length]; + byte[] a = new byte[bytes.length]; + + assertEquals(e.length, expected.read(e, 0, e.length)); + assertEquals(a.length, actual.read(a, 0, a.length)); + + for (int i = 0; i < bytes.length; i++) { + assertEquals(bytes[i], e[i]); + assertEquals(bytes[i], a[i]); + } + } + + @Test + public void testSanityNegative() throws IOException { + // This is to sanity check that the test itself is correct... + byte[] bytes = new byte[25]; + for (int i = 0; i < bytes.length; i++) { + bytes[i] = (byte) (255 - i); + } + InputStream expected = new ByteArrayInputStream(bytes); + InputStream actual = makeInputStream(bytes); + + for (byte b : bytes) { + assertEquals(b & 0xff, expected.read()); + assertEquals(b & 0xff, actual.read()); + } + } + + @Test + public void testSanityNegative2() throws IOException { + // This is to sanity check that the test itself is correct... + byte[] bytes = new byte[25]; + for (int i = 0; i < bytes.length; i++) { + bytes[i] = (byte) (255 - i); + } + InputStream expected = new ByteArrayInputStream(bytes); + InputStream actual = makeInputStream(bytes); + + byte[] e = new byte[bytes.length]; + byte[] a = new byte[bytes.length]; + + assertEquals(e.length, expected.read(e, 0, e.length)); + assertEquals(a.length, actual.read(a, 0, a.length)); + + for (int i = 0; i < bytes.length; i++) { + assertEquals(bytes[i], e[i]); + assertEquals(bytes[i], a[i]); + } + } + + @Test + public void testSanityRandom() throws IOException { + // This is to sanity check that the test itself is correct... + byte[] bytes = makeRandomArray(25); + InputStream expected = new ByteArrayInputStream(bytes); + InputStream actual = makeInputStream(bytes); + + for (byte b : bytes) { + assertEquals(b & 0xff, expected.read()); + assertEquals(b & 0xff, actual.read()); + } + } + + @Test + public void testSanityRandom2() throws IOException { + // This is to sanity check that the test itself is correct... + byte[] bytes = makeRandomArray(25); + InputStream expected = new ByteArrayInputStream(bytes); + InputStream actual = makeInputStream(bytes); + + byte[] e = new byte[bytes.length]; + byte[] a = new byte[bytes.length]; + + assertEquals(e.length, expected.read(e, 0, e.length)); + assertEquals(a.length, actual.read(a, 0, a.length)); + + for (int i = 0; i < bytes.length; i++) { + assertEquals(bytes[i], e[i]); + assertEquals(bytes[i], a[i]); + } + }} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/LittleEndianDataInputStreamTest.java b/common/common-io/src/test/java/com/twelvemonkeys/io/LittleEndianDataInputStreamTest.java index 1f7c551b..9527c85c 100644 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/LittleEndianDataInputStreamTest.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/LittleEndianDataInputStreamTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io; diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/MemoryCacheSeekableStreamTest.java b/common/common-io/src/test/java/com/twelvemonkeys/io/MemoryCacheSeekableStreamTest.java new file mode 100755 index 00000000..f8e5d028 --- /dev/null +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/MemoryCacheSeekableStreamTest.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io; + +import java.io.InputStream; + +/** + * MemoryCacheSeekableStreamTestCase + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/MemoryCacheSeekableStreamTestCase.java#2 $ + */ +public class MemoryCacheSeekableStreamTest extends SeekableInputStreamAbstractTest { + protected SeekableInputStream makeInputStream(final InputStream pStream) { + return new MemoryCacheSeekableStream(pStream); + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/MemoryCacheSeekableStreamTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/MemoryCacheSeekableStreamTestCase.java deleted file mode 100755 index 53387cb5..00000000 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/MemoryCacheSeekableStreamTestCase.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.twelvemonkeys.io; - -import java.io.InputStream; - -/** - * MemoryCacheSeekableStreamTestCase - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/MemoryCacheSeekableStreamTestCase.java#2 $ - */ -public class MemoryCacheSeekableStreamTestCase extends SeekableInputStreamAbstractTestCase { - protected SeekableInputStream makeInputStream(final InputStream pStream) { - return new MemoryCacheSeekableStream(pStream); - } -} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/OutputStreamAbstractTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/OutputStreamAbstractTest.java similarity index 79% rename from common/common-io/src/test/java/com/twelvemonkeys/io/OutputStreamAbstractTestCase.java rename to common/common-io/src/test/java/com/twelvemonkeys/io/OutputStreamAbstractTest.java index d3405dae..c5f5a412 100755 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/OutputStreamAbstractTestCase.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/OutputStreamAbstractTest.java @@ -1,254 +1,285 @@ -package com.twelvemonkeys.io; - -import com.twelvemonkeys.lang.ObjectAbstractTestCase; -import org.junit.Test; - -import java.io.OutputStream; -import java.io.IOException; - -import static org.junit.Assert.*; - -/** - * InputStreamAbstractTestCase - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/OutputStreamAbstractTestCase.java#1 $ - */ -public abstract class OutputStreamAbstractTestCase extends ObjectAbstractTestCase { - protected abstract OutputStream makeObject(); - - @Test - public void testWrite() throws IOException { - OutputStream os = makeObject(); - - for (int i = 0; i < 256; i++) { - os.write((byte) i); - } - } - - @Test - public void testWriteByteArray() throws IOException { - OutputStream os = makeObject(); - - os.write(new byte[256]); - } - - @Test - public void testWriteByteArrayNull() { - OutputStream os = makeObject(); - try { - os.write(null); - fail("Should not accept null-argument"); - } - catch (IOException e) { - fail("Should not throw IOException of null-arguemnt: " + e.getMessage()); - } - catch (NullPointerException e) { - assertNotNull(e); - } - catch (RuntimeException e) { - fail("Should only throw NullPointerException: " + e.getClass() + ": " + e.getMessage()); - } - } - - @Test - public void testWriteByteArrayOffsetLength() throws IOException { - byte[] input = new byte[256]; - - OutputStream os = makeObject(); - - // TODO: How to test that data is actually written!? - for (int i = 0; i < 256; i++) { - input[i] = (byte) i; - } - - for (int i = 0; i < 256; i++) { - os.write(input, i, 256 - i); - } - - for (int i = 0; i < 4; i++) { - os.write(input, i * 64, 64); - } - } - - @Test - public void testWriteByteArrayZeroLength() { - OutputStream os = makeObject(); - try { - os.write(new byte[1], 0, 0); - } - catch (Exception e) { - fail("Should not throw Exception: " + e.getMessage()); - } - } - - @Test - public void testWriteByteArrayOffsetLengthNull() { - OutputStream os = makeObject(); - try { - os.write(null, 5, 10); - fail("Should not accept null-argument"); - } - catch (IOException e) { - fail("Should not throw IOException of null-arguemnt: " + e.getMessage()); - } - catch (NullPointerException e) { - assertNotNull(e); - } - catch (RuntimeException e) { - fail("Should only throw NullPointerException: " + e.getClass() + ": " + e.getMessage()); - } - } - - @Test - public void testWriteByteArrayNegativeOffset() { - OutputStream os = makeObject(); - try { - os.write(new byte[5], -3, 5); - fail("Should not accept negative offset"); - } - catch (IOException e) { - fail("Should not throw IOException negative offset: " + e.getMessage()); - } - catch (IndexOutOfBoundsException e) { - assertNotNull(e); - } - catch (RuntimeException e) { - fail("Should only throw IndexOutOfBoundsException: " + e.getClass() + ": " + e.getMessage()); - } - } - - @Test - public void testWriteByteArrayNegativeLength() { - OutputStream os = makeObject(); - try { - os.write(new byte[5], 2, -5); - fail("Should not accept negative length"); - } - catch (IOException e) { - fail("Should not throw IOException negative length: " + e.getMessage()); - } - catch (IndexOutOfBoundsException e) { - assertNotNull(e); - } - catch (RuntimeException e) { - fail("Should only throw IndexOutOfBoundsException: " + e.getClass() + ": " + e.getMessage()); - } - } - - @Test - public void testWriteByteArrayOffsetOutOfBounds() { - OutputStream os = makeObject(); - try { - os.write(new byte[5], 5, 1); - fail("Should not accept offset out of bounds"); - } - catch (IOException e) { - fail("Should not throw IOException offset out of bounds: " + e.getMessage()); - } - catch (IndexOutOfBoundsException e) { - assertNotNull(e); - } - catch (RuntimeException e) { - fail("Should only throw IndexOutOfBoundsException: " + e.getClass() + ": " + e.getMessage()); - } - } - - @Test - public void testWriteByteArrayLengthOutOfBounds() { - OutputStream os = makeObject(); - try { - os.write(new byte[5], 1, 5); - fail("Should not accept length out of bounds"); - } - catch (IOException e) { - fail("Should not throw IOException length out of bounds: " + e.getMessage()); - } - catch (IndexOutOfBoundsException e) { - assertNotNull(e); - } - catch (RuntimeException e) { - fail("Should only throw IndexOutOfBoundsException: " + e.getClass() + ": " + e.getMessage()); - } - } - - @Test - public void testFlush() { - // TODO: Implement - } - - @Test - public void testClose() { - // TODO: Implement - } - - @Test - public void testWriteAfterClose() throws IOException { - OutputStream os = makeObject(); - - os.close(); - - boolean success = false; - try { - os.write(0); - success = true; - // TODO: Not all streams throw exception! (ByteArrayOutputStream) - //fail("Write after close"); - } - catch (IOException e) { - assertNotNull(e.getMessage()); - } - - try { - os.write(new byte[16]); - // TODO: Not all streams throw exception! (ByteArrayOutputStream) - //fail("Write after close"); - if (!success) { - fail("Inconsistent write(int)/write(byte[]) after close"); - } - } - catch (IOException e) { - assertNotNull(e.getMessage()); - if (success) { - fail("Inconsistent write(int)/write(byte[]) after close"); - } - } - } - - @Test - public void testFlushAfterClose() throws IOException { - OutputStream os = makeObject(); - - os.close(); - - try { - os.flush(); - // TODO: Not all streams throw exception! (ByteArrayOutputStream) - //fail("Flush after close"); - try { - os.write(0); - } - catch (IOException e) { - fail("Inconsistent write/flush after close"); - } - } - catch (IOException e) { - assertNotNull(e.getMessage()); - } - } - - @Test - public void testCloseAfterClose() throws IOException { - OutputStream os = makeObject(); - - os.close(); - - try { - os.close(); - } - catch (IOException e) { - fail("Close after close, failed: " + e.getMessage()); - } - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io; + +import com.twelvemonkeys.lang.ObjectAbstractTest; +import org.junit.Test; + +import java.io.IOException; +import java.io.OutputStream; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; + +/** + * InputStreamAbstractTestCase + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/OutputStreamAbstractTestCase.java#1 $ + */ +public abstract class OutputStreamAbstractTest extends ObjectAbstractTest { + protected abstract OutputStream makeObject(); + + @Test + public void testWrite() throws IOException { + OutputStream os = makeObject(); + + for (int i = 0; i < 256; i++) { + os.write((byte) i); + } + } + + @Test + public void testWriteByteArray() throws IOException { + OutputStream os = makeObject(); + + os.write(new byte[256]); + } + + @Test + public void testWriteByteArrayNull() { + OutputStream os = makeObject(); + try { + os.write(null); + fail("Should not accept null-argument"); + } + catch (IOException e) { + fail("Should not throw IOException of null-arguemnt: " + e.getMessage()); + } + catch (NullPointerException e) { + assertNotNull(e); + } + catch (RuntimeException e) { + fail("Should only throw NullPointerException: " + e.getClass() + ": " + e.getMessage()); + } + } + + @Test + public void testWriteByteArrayOffsetLength() throws IOException { + byte[] input = new byte[256]; + + OutputStream os = makeObject(); + + // TODO: How to test that data is actually written!? + for (int i = 0; i < 256; i++) { + input[i] = (byte) i; + } + + for (int i = 0; i < 256; i++) { + os.write(input, i, 256 - i); + } + + for (int i = 0; i < 4; i++) { + os.write(input, i * 64, 64); + } + } + + @Test + public void testWriteByteArrayZeroLength() { + OutputStream os = makeObject(); + try { + os.write(new byte[1], 0, 0); + } + catch (Exception e) { + fail("Should not throw Exception: " + e.getMessage()); + } + } + + @Test + public void testWriteByteArrayOffsetLengthNull() { + OutputStream os = makeObject(); + try { + os.write(null, 5, 10); + fail("Should not accept null-argument"); + } + catch (IOException e) { + fail("Should not throw IOException of null-arguemnt: " + e.getMessage()); + } + catch (NullPointerException e) { + assertNotNull(e); + } + catch (RuntimeException e) { + fail("Should only throw NullPointerException: " + e.getClass() + ": " + e.getMessage()); + } + } + + @Test + public void testWriteByteArrayNegativeOffset() { + OutputStream os = makeObject(); + try { + os.write(new byte[5], -3, 5); + fail("Should not accept negative offset"); + } + catch (IOException e) { + fail("Should not throw IOException negative offset: " + e.getMessage()); + } + catch (IndexOutOfBoundsException e) { + assertNotNull(e); + } + catch (RuntimeException e) { + fail("Should only throw IndexOutOfBoundsException: " + e.getClass() + ": " + e.getMessage()); + } + } + + @Test + public void testWriteByteArrayNegativeLength() { + OutputStream os = makeObject(); + try { + os.write(new byte[5], 2, -5); + fail("Should not accept negative length"); + } + catch (IOException e) { + fail("Should not throw IOException negative length: " + e.getMessage()); + } + catch (IndexOutOfBoundsException e) { + assertNotNull(e); + } + catch (RuntimeException e) { + fail("Should only throw IndexOutOfBoundsException: " + e.getClass() + ": " + e.getMessage()); + } + } + + @Test + public void testWriteByteArrayOffsetOutOfBounds() { + OutputStream os = makeObject(); + try { + os.write(new byte[5], 5, 1); + fail("Should not accept offset out of bounds"); + } + catch (IOException e) { + fail("Should not throw IOException offset out of bounds: " + e.getMessage()); + } + catch (IndexOutOfBoundsException e) { + assertNotNull(e); + } + catch (RuntimeException e) { + fail("Should only throw IndexOutOfBoundsException: " + e.getClass() + ": " + e.getMessage()); + } + } + + @Test + public void testWriteByteArrayLengthOutOfBounds() { + OutputStream os = makeObject(); + try { + os.write(new byte[5], 1, 5); + fail("Should not accept length out of bounds"); + } + catch (IOException e) { + fail("Should not throw IOException length out of bounds: " + e.getMessage()); + } + catch (IndexOutOfBoundsException e) { + assertNotNull(e); + } + catch (RuntimeException e) { + fail("Should only throw IndexOutOfBoundsException: " + e.getClass() + ": " + e.getMessage()); + } + } + + @Test + public void testFlush() { + // TODO: Implement + } + + @Test + public void testClose() { + // TODO: Implement + } + + @Test + public void testWriteAfterClose() throws IOException { + OutputStream os = makeObject(); + + os.close(); + + boolean success = false; + try { + os.write(0); + success = true; + // TODO: Not all streams throw exception! (ByteArrayOutputStream) + //fail("Write after close"); + } + catch (IOException e) { + assertNotNull(e.getMessage()); + } + + try { + os.write(new byte[16]); + // TODO: Not all streams throw exception! (ByteArrayOutputStream) + //fail("Write after close"); + if (!success) { + fail("Inconsistent write(int)/write(byte[]) after close"); + } + } + catch (IOException e) { + assertNotNull(e.getMessage()); + if (success) { + fail("Inconsistent write(int)/write(byte[]) after close"); + } + } + } + + @Test + public void testFlushAfterClose() throws IOException { + OutputStream os = makeObject(); + + os.close(); + + try { + os.flush(); + // TODO: Not all streams throw exception! (ByteArrayOutputStream) + //fail("Flush after close"); + try { + os.write(0); + } + catch (IOException e) { + fail("Inconsistent write/flush after close"); + } + } + catch (IOException e) { + assertNotNull(e.getMessage()); + } + } + + @Test + public void testCloseAfterClose() throws IOException { + OutputStream os = makeObject(); + + os.close(); + + try { + os.close(); + } + catch (IOException e) { + fail("Close after close, failed: " + e.getMessage()); + } + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/ReaderAbstractTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/ReaderAbstractTest.java similarity index 79% rename from common/common-io/src/test/java/com/twelvemonkeys/io/ReaderAbstractTestCase.java rename to common/common-io/src/test/java/com/twelvemonkeys/io/ReaderAbstractTest.java index cf9e63d5..8fc72aa6 100755 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/ReaderAbstractTestCase.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/ReaderAbstractTest.java @@ -1,224 +1,254 @@ -package com.twelvemonkeys.io; - -import com.twelvemonkeys.lang.ObjectAbstractTestCase; -import org.junit.Test; - -import java.io.Reader; -import java.io.IOException; - -import static org.junit.Assert.*; - -/** - * ReaderAbstractTestCase - *

    - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/ReaderAbstractTestCase.java#1 $ - */ -public abstract class ReaderAbstractTestCase extends ObjectAbstractTestCase { - - // Kindly provided by lipsum.org :-) - protected final String mInput = - "Cras tincidunt euismod tellus. Aenean a odio. " + - "Aenean metus. Sed tristique est non purus. Class aptent " + - "taciti sociosqu ad litora torquent per conubia nostra, per " + - "inceptos hymenaeos. Fusce vulputate dolor non mauris. " + - "Nullam nunc massa, pretium quis, ultricies a, varius quis, " + - "neque. Nam id nulla eu ante malesuada fermentum. Sed " + - "vulputate purus eget magna. Sed mollis. Curabitur enim " + - "diam, faucibus ac, hendrerit eu, consequat nec, augue."; - - protected final Object makeObject() { - return makeReader(); - } - - protected Reader makeReader() { - return makeReader(mInput); - } - - protected abstract Reader makeReader(String pInput); - - @Test - public void testRead() throws IOException { - Reader reader = makeReader(); - - int count = 0; - int ch; - StringBuilder buffer = new StringBuilder(mInput.length()); - while ((ch = reader.read()) > 0) { - count++; - buffer.append((char) ch); - } - - assertEquals(mInput.length(), count); - assertEquals(mInput, buffer.toString()); - } - - @Test - public void testReadBuffer() throws IOException { - Reader reader = makeReader(); - - char[] chars = new char[mInput.length()]; - StringBuilder buffer = new StringBuilder(mInput.length()); - - int count; - int offset = 0; - int lenght = chars.length; - while ((count = reader.read(chars, offset, lenght)) > 0) { - buffer.append(chars, offset, count); - offset += count; - lenght -= count; - } - - assertEquals(mInput, buffer.toString()); - assertEquals(mInput, new String(chars)); - } - - @Test - public void testSkipToEnd() throws IOException { - Reader reader = makeReader(); - - int toSkip = mInput.length(); - while (toSkip > 0) { - long skipped = reader.skip(toSkip); - assertFalse("Skipped < 0", skipped < 0); - toSkip -= skipped; - } - - assertEquals(0, toSkip); - } - - @Test - public void testSkipToEndAndRead() throws IOException { - Reader reader = makeReader(); - - int toSkip = mInput.length(); - while (toSkip > 0) { - toSkip -= reader.skip(toSkip); - } - - assertEquals(reader.read(), -1); - } - - // TODO: It's possible to support reset and not mark (resets to beginning of stream, for example) - @Test - public void testResetMarkSupported() throws IOException { - Reader reader = makeReader(); - - if (reader.markSupported()) { - // Mark at 0 - reader.mark(mInput.length() / 4); - - // Read one char - char ch = (char) reader.read(); - reader.reset(); - assertEquals(ch, (char) reader.read()); - reader.reset(); - - // Read from start - StringBuilder first = new StringBuilder(mInput.length() / 4); - for (int i = 0; i < mInput.length() / 4; i++) { - first.append((char) reader.read()); - } - - reader.reset(); // 0 - - StringBuilder second = new StringBuilder(mInput.length() / 4); - for (int i = 0; i < mInput.length() / 4; i++) { - second.append((char) reader.read()); - } - - assertEquals(first.toString(), second.toString()); - - // Mark at 1/4 - reader.mark(mInput.length() / 4); - - // Read from 1/4 - first = new StringBuilder(mInput.length() / 4); - for (int i = 0; i < mInput.length() / 4; i++) { - first.append((char) reader.read()); - } - - reader.reset(); // 1/4 - - second = new StringBuilder(mInput.length() / 4); - for (int i = 0; i < mInput.length() / 4; i++) { - second.append((char) reader.read()); - } - - assertEquals(first.toString(), second.toString()); - - // Read past limit - reader.read(); - - // This may or may not fail, depending on the stream - try { - reader.reset(); - } - catch (IOException ioe) { - assertNotNull(ioe.getMessage()); - } - } - } - - @Test - public void testResetMarkNotSupported() throws IOException { - Reader reader = makeReader(); - - if (!reader.markSupported()) { - try { - reader.mark(mInput.length()); - fail("Mark set, while markSupprted is false"); - } - catch (IOException e) { - assertNotNull(e.getMessage()); - } - - // Read one char - char ch = (char) reader.read(); - try { - reader.reset(); - assertEquals(ch, (char) reader.read()); - } - catch (IOException ioe) { - assertNotNull(ioe.getMessage()); - } - - // Read from start - StringBuilder first = new StringBuilder(mInput.length() / 4); - for (int i = 0; i < mInput.length() / 4; i++) { - first.append((char) reader.read()); - } - - try { - reader.reset(); // 0 - - StringBuilder second = new StringBuilder(mInput.length() / 4); - for (int i = 0; i < mInput.length() / 4; i++) { - second.append((char) reader.read()); - } - - assertEquals(first.toString(), second.toString()); - } - catch (IOException ioe) { - assertNotNull(ioe.getMessage()); - } - } - } - - @Test - public void testReadAfterClose() throws IOException { - Reader reader = makeReader("foo bar"); - - reader.close(); - - try { - reader.read(); - fail("Should not allow read after close"); - } - catch (IOException ioe) { - assertNotNull(ioe.getMessage()); - } - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io; + +import com.twelvemonkeys.lang.ObjectAbstractTest; +import org.junit.Test; + +import java.io.IOException; +import java.io.Reader; + +import static org.junit.Assert.*; + +/** + * ReaderAbstractTestCase + *

    + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/ReaderAbstractTestCase.java#1 $ + */ +public abstract class ReaderAbstractTest extends ObjectAbstractTest { + + // Kindly provided by lipsum.org :-) + protected final String mInput = + "Cras tincidunt euismod tellus. Aenean a odio. " + + "Aenean metus. Sed tristique est non purus. Class aptent " + + "taciti sociosqu ad litora torquent per conubia nostra, per " + + "inceptos hymenaeos. Fusce vulputate dolor non mauris. " + + "Nullam nunc massa, pretium quis, ultricies a, varius quis, " + + "neque. Nam id nulla eu ante malesuada fermentum. Sed " + + "vulputate purus eget magna. Sed mollis. Curabitur enim " + + "diam, faucibus ac, hendrerit eu, consequat nec, augue."; + + protected final Object makeObject() { + return makeReader(); + } + + protected Reader makeReader() { + return makeReader(mInput); + } + + protected abstract Reader makeReader(String pInput); + + @Test + public void testRead() throws IOException { + Reader reader = makeReader(); + + int count = 0; + int ch; + StringBuilder buffer = new StringBuilder(mInput.length()); + while ((ch = reader.read()) > 0) { + count++; + buffer.append((char) ch); + } + + assertEquals(mInput.length(), count); + assertEquals(mInput, buffer.toString()); + } + + @Test + public void testReadBuffer() throws IOException { + Reader reader = makeReader(); + + char[] chars = new char[mInput.length()]; + StringBuilder buffer = new StringBuilder(mInput.length()); + + int count; + int offset = 0; + int lenght = chars.length; + while ((count = reader.read(chars, offset, lenght)) > 0) { + buffer.append(chars, offset, count); + offset += count; + lenght -= count; + } + + assertEquals(mInput, buffer.toString()); + assertEquals(mInput, new String(chars)); + } + + @Test + public void testSkipToEnd() throws IOException { + Reader reader = makeReader(); + + int toSkip = mInput.length(); + while (toSkip > 0) { + long skipped = reader.skip(toSkip); + assertFalse("Skipped < 0", skipped < 0); + toSkip -= skipped; + } + + assertEquals(0, toSkip); + } + + @Test + public void testSkipToEndAndRead() throws IOException { + Reader reader = makeReader(); + + int toSkip = mInput.length(); + while (toSkip > 0) { + toSkip -= reader.skip(toSkip); + } + + assertEquals(reader.read(), -1); + } + + // TODO: It's possible to support reset and not mark (resets to beginning of stream, for example) + @Test + public void testResetMarkSupported() throws IOException { + Reader reader = makeReader(); + + if (reader.markSupported()) { + // Mark at 0 + reader.mark(mInput.length() / 4); + + // Read one char + char ch = (char) reader.read(); + reader.reset(); + assertEquals(ch, (char) reader.read()); + reader.reset(); + + // Read from start + StringBuilder first = new StringBuilder(mInput.length() / 4); + for (int i = 0; i < mInput.length() / 4; i++) { + first.append((char) reader.read()); + } + + reader.reset(); // 0 + + StringBuilder second = new StringBuilder(mInput.length() / 4); + for (int i = 0; i < mInput.length() / 4; i++) { + second.append((char) reader.read()); + } + + assertEquals(first.toString(), second.toString()); + + // Mark at 1/4 + reader.mark(mInput.length() / 4); + + // Read from 1/4 + first = new StringBuilder(mInput.length() / 4); + for (int i = 0; i < mInput.length() / 4; i++) { + first.append((char) reader.read()); + } + + reader.reset(); // 1/4 + + second = new StringBuilder(mInput.length() / 4); + for (int i = 0; i < mInput.length() / 4; i++) { + second.append((char) reader.read()); + } + + assertEquals(first.toString(), second.toString()); + + // Read past limit + reader.read(); + + // This may or may not fail, depending on the stream + try { + reader.reset(); + } + catch (IOException ioe) { + assertNotNull(ioe.getMessage()); + } + } + } + + @Test + public void testResetMarkNotSupported() throws IOException { + Reader reader = makeReader(); + + if (!reader.markSupported()) { + try { + reader.mark(mInput.length()); + fail("Mark set, while markSupprted is false"); + } + catch (IOException e) { + assertNotNull(e.getMessage()); + } + + // Read one char + char ch = (char) reader.read(); + try { + reader.reset(); + assertEquals(ch, (char) reader.read()); + } + catch (IOException ioe) { + assertNotNull(ioe.getMessage()); + } + + // Read from start + StringBuilder first = new StringBuilder(mInput.length() / 4); + for (int i = 0; i < mInput.length() / 4; i++) { + first.append((char) reader.read()); + } + + try { + reader.reset(); // 0 + + StringBuilder second = new StringBuilder(mInput.length() / 4); + for (int i = 0; i < mInput.length() / 4; i++) { + second.append((char) reader.read()); + } + + assertEquals(first.toString(), second.toString()); + } + catch (IOException ioe) { + assertNotNull(ioe.getMessage()); + } + } + } + + @Test + public void testReadAfterClose() throws IOException { + Reader reader = makeReader("foo bar"); + + reader.close(); + + try { + reader.read(); + fail("Should not allow read after close"); + } + catch (IOException ioe) { + assertNotNull(ioe.getMessage()); + } + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/SeekableAbstractTest.java b/common/common-io/src/test/java/com/twelvemonkeys/io/SeekableAbstractTest.java new file mode 100755 index 00000000..2ae256ec --- /dev/null +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/SeekableAbstractTest.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io; + +import org.junit.Test; + +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +/** + * SeekableAbstractTestCase + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/SeekableAbstractTestCase.java#1 $ + */ +public abstract class SeekableAbstractTest implements SeekableInterfaceTest { + + protected abstract Seekable createSeekable(); + + @Test + public void testFail() { + fail("Do not create stand-alone test classes based on this class. Instead, create an inner class and delegate to it."); + } + + @Test + public void testSeekable() { + assertTrue(createSeekable() instanceof Seekable); + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/SeekableAbstractTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/SeekableAbstractTestCase.java deleted file mode 100755 index 28dfb036..00000000 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/SeekableAbstractTestCase.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.twelvemonkeys.io; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * SeekableAbstractTestCase - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/SeekableAbstractTestCase.java#1 $ - */ -public abstract class SeekableAbstractTestCase implements SeekableInterfaceTest { - - protected abstract Seekable createSeekable(); - - @Test - public void testFail() { - fail("Do not create stand-alone test classes based on this class. Instead, create an inner class and delegate to it."); - } - - @Test - public void testSeekable() { - assertTrue(createSeekable() instanceof Seekable); - } -} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/SeekableInputStreamAbstractTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/SeekableInputStreamAbstractTest.java similarity index 90% rename from common/common-io/src/test/java/com/twelvemonkeys/io/SeekableInputStreamAbstractTestCase.java rename to common/common-io/src/test/java/com/twelvemonkeys/io/SeekableInputStreamAbstractTest.java index 7a995e49..4a4b2d25 100755 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/SeekableInputStreamAbstractTestCase.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/SeekableInputStreamAbstractTest.java @@ -1,488 +1,518 @@ -package com.twelvemonkeys.io; - -import org.junit.Test; - -import java.io.ByteArrayInputStream; -import java.io.EOFException; -import java.io.IOException; -import java.io.InputStream; - -import static org.junit.Assert.*; - -/** - * SeekableInputStreamAbstractTestCase - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/SeekableInputStreamAbstractTestCase.java#4 $ - */ -public abstract class SeekableInputStreamAbstractTestCase extends InputStreamAbstractTestCase implements SeekableInterfaceTest { - //// TODO: Figure out a better way of creating interface tests without duplicating code - final SeekableAbstractTestCase seekableTestCase = new SeekableAbstractTestCase() { - protected Seekable createSeekable() { - return makeInputStream(); - } - }; - - @Override - protected SeekableInputStream makeInputStream() { - return (SeekableInputStream) super.makeInputStream(); - } - - @Override - protected SeekableInputStream makeInputStream(final int pSize) { - return (SeekableInputStream) super.makeInputStream(pSize); - } - - protected SeekableInputStream makeInputStream(byte[] pBytes) { - return makeInputStream(new ByteArrayInputStream(pBytes)); - } - - protected abstract SeekableInputStream makeInputStream(InputStream pStream); - - @Test - @Override - public void testResetAfterReset() throws Exception { - InputStream input = makeInputStream(makeOrderedArray(25)); - - if (!input.markSupported()) { - return; // Not supported, skip test - } - - assertTrue("Expected to read positive value", input.read() >= 0); - - int readlimit = 5; - - // Mark - input.mark(readlimit); - int read = input.read(); - assertTrue("Expected to read positive value", read >= 0); - - input.reset(); - assertEquals("Expected value read differs from actual", read, input.read()); - - // Reset after read limit passed, may either throw exception, or reset to last good mark - try { - input.reset(); - assertEquals("Re-read of reset data should be first", 0, input.read()); - } - catch (Exception e) { - assertTrue("Wrong read-limit IOException message", e.getMessage().contains("mark")); - } - } - - @Test - public void testSeekable() { - seekableTestCase.testSeekable(); - } - - @Test - public void testFlushBeyondCurrentPos() throws Exception { - SeekableInputStream seekable = makeInputStream(20); - - int pos = 10; - try { - seekable.flushBefore(pos); - fail("Flush beyond current position should throw IndexOutOfBoundsException"); - } - catch (IndexOutOfBoundsException e) { - // Ignore - } - } - - @Test - public void testSeek() throws Exception { - SeekableInputStream seekable = makeInputStream(55); - int pos = 37; - - seekable.seek(pos); - long streamPos = seekable.getStreamPosition(); - assertEquals("Stream positon should match seeked position", pos, streamPos); - } - - @Test - public void testSeekFlush() throws Exception { - SeekableInputStream seekable = makeInputStream(133); - int pos = 45; - seekable.seek(pos); - seekable.flushBefore(pos); - long flushedPos = seekable.getFlushedPosition(); - assertEquals("Flushed positon should match position", pos, flushedPos); - - try { - seekable.seek(pos - 1); - fail("Read before flushed position succeeded"); - } - catch (IndexOutOfBoundsException e) { - // Ignore - } - } - - @Test - public void testMarkFlushReset() throws Exception { - SeekableInputStream seekable = makeInputStream(77); - - seekable.mark(); - - int position = 55; - seekable.seek(position); - seekable.flushBefore(position); - - try { - seekable.reset(); - fail("Reset before flushed position succeeded"); - } - catch (IOException e) { - // Ignore - } - - assertEquals(position, seekable.getStreamPosition()); - } - - @Test - public void testSeekSkipRead() throws Exception { - SeekableInputStream seekable = makeInputStream(133); - int pos = 45; - for (int i = 0; i < 10; i++) { - seekable.seek(pos); - //noinspection ResultOfMethodCallIgnored - seekable.skip(i); - byte[] bytes = FileUtil.read(seekable); - assertEquals(133, seekable.getStreamPosition()); - assertEquals(133 - 45- i, bytes.length); - } - } - - protected void testSeekSkip(SeekableInputStream pSeekable, String pStr) throws IOException { - System.out.println(); - pSeekable.seek(pStr.length()); - FileUtil.read(pSeekable); - for (int i = 0; i < 10; i++) { - byte[] bytes = FileUtil.read(pSeekable); - int len = bytes.length; - if (len != 0) { - System.err.println("Error in buffer length after full read..."); - System.err.println("len: " + len); - System.err.println("bytes: \"" + new String(bytes) + "\""); - break; - } - } - - System.out.println(); - - for (int i = 0; i < 10; i++) { - pSeekable.seek(0); - int skip = i * 3; - //noinspection ResultOfMethodCallIgnored - pSeekable.skip(skip); - String str = new String(FileUtil.read(pSeekable)); - System.out.println(str); - if (str.length() != pStr.length() - skip) { - throw new Error("Error in buffer length after skip"); - } - } - - System.out.println(); - System.out.println("seek/skip ok!"); - System.out.println(); - } - - protected static void markReset(SeekableInputStream pSeekable) throws IOException { - for (int i = 0; i < 10; i++) { - pSeekable.mark(); - System.out.println(new String(FileUtil.read(pSeekable))); - pSeekable.reset(); - } - - System.out.println(); - System.out.println("mark/reset ok!"); - } - - protected static void timeRead(SeekableInputStream pSeekable) throws IOException { - for (int i = 0; i < 5000; i++) { - pSeekable.mark(); - FileUtil.read(pSeekable); - pSeekable.reset(); - } - - long start = System.currentTimeMillis(); - final int times = 200000; - for (int i = 0; i < times; i++) { - pSeekable.mark(); - FileUtil.read(pSeekable); - pSeekable.reset(); - } - long time = System.currentTimeMillis() - start; - - System.out.println("Time; " + time + "ms (" + (time / (float) times) + "ms/inv)"); - } - - /* - - // Test code below... - protected final static String STR = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce massa orci, adipiscing vel, dapibus et, vulputate tristique, tortor. Quisque sodales. Mauris varius turpis et pede. Nam ac dolor vel diam condimentum elementum. Pellentesque eget tellus. Praesent magna. Sed fringilla. Proin ullamcorper tincidunt ante. Fusce dapibus nibh nec dolor. Etiam erat. Nullam dignissim laoreet nibh. Maecenas scelerisque. Pellentesque in quam. Maecenas sollicitudin, magna nec imperdiet facilisis, metus quam tristique ipsum, vitae consequat massa purus eget leo. Nulla ipsum. Proin non purus eget tellus lobortis iaculis. In lorem justo, posuere id, vulputate at, adipiscing ut, nisl. Nunc dui erat, tincidunt ac, interdum quis, rutrum et, libero. Etiam lectus dui, viverra sit amet, elementum ut, malesuada sed, massa. Vestibulum mi nulla, sodales vel, vestibulum sed, congue blandit, velit."; - - protected static void flushSeek(SeekableInputStream pSeekable, String pStr) throws IOException { - pSeekable.seek(0); - pSeekable.mark(); - int pos = pStr.length() / 2; - try { - pSeekable.flushBefore(pos); - System.err.println("Error in flush/seek"); - } - catch (IndexOutOfBoundsException e) { - // Ignore - } - pSeekable.seek(pos); - long streamPos = pSeekable.getStreamPosition(); - if (streamPos != pos) { - System.err.println("Streampos not equal seeked pos"); - } - - pSeekable.flushBefore(pos); - long flushedPos = pSeekable.getFlushedPosition(); - if (flushedPos != pos) { - System.err.println("flushedpos not equal set flushed pos"); - } - - for (int i = 0; i < 10; i++) { - pSeekable.seek(pos); - //noinspection ResultOfMethodCallIgnored - pSeekable.skip(i); - System.out.println(new String(FileUtil.read(pSeekable))); - } - - try { - pSeekable.seek(pos - 1); - System.err.println("Error in flush/seek"); - } - catch (IndexOutOfBoundsException e) { - // Ignore - } - try { - pSeekable.reset(); - System.err.println("Error in flush/seek"); - } - catch (IOException e) { - // Ignore - } - - System.out.println(); - System.out.println("flush/seek ok!"); - } - - protected static void seekSkip(SeekableInputStream pSeekable, String pStr) throws IOException { - System.out.println(); - pSeekable.seek(pStr.length()); - FileUtil.read(pSeekable); - for (int i = 0; i < 10; i++) { - byte[] bytes = FileUtil.read(pSeekable); - int len = bytes.length; - if (len != 0) { - System.err.println("Error in buffer length after full read..."); - System.err.println("len: " + len); - System.err.println("bytes: \"" + new String(bytes) + "\""); - break; - } - } - - System.out.println(); - - for (int i = 0; i < 10; i++) { - pSeekable.seek(0); - int skip = i * 3; - //noinspection ResultOfMethodCallIgnored - pSeekable.skip(skip); - String str = new String(FileUtil.read(pSeekable)); - System.out.println(str); - if (str.length() != pStr.length() - skip) { - throw new Error("Error in buffer length after skip"); - } - } - - System.out.println(); - System.out.println("seek/skip ok!"); - System.out.println(); - } - - protected static void markReset(SeekableInputStream pSeekable) throws IOException { - for (int i = 0; i < 10; i++) { - pSeekable.mark(); - System.out.println(new String(FileUtil.read(pSeekable))); - pSeekable.reset(); - } - - System.out.println(); - System.out.println("mark/reset ok!"); - } - - protected static void timeRead(SeekableInputStream pSeekable) throws IOException { - for (int i = 0; i < 5000; i++) { - pSeekable.mark(); - FileUtil.read(pSeekable); - pSeekable.reset(); - } - - long start = System.currentTimeMillis(); - final int times = 200000; - for (int i = 0; i < times; i++) { - pSeekable.mark(); - FileUtil.read(pSeekable); - pSeekable.reset(); - } - long time = System.currentTimeMillis() - start; - - System.out.println("Time; " + time + "ms (" + (time / (float) times) + "ms/inv)"); - } - */ - - @Test - public void testReadResetReadDirectBufferBug() throws IOException { - // Make sure we use the exact size of the buffer - final int size = 1024; - - // Fill bytes - byte[] bytes = new byte[size * 2]; - sRandom.nextBytes(bytes); - - // Create wrapper stream - SeekableInputStream stream = makeInputStream(bytes); - - // Read to fill the buffer, then reset - int val; - - val = stream.read(); - assertFalse("Unexepected EOF", val == -1); - val = stream.read(); - assertFalse("Unexepected EOF", val == -1); - val = stream.read(); - assertFalse("Unexepected EOF", val == -1); - val = stream.read(); - assertFalse("Unexepected EOF", val == -1); - - stream.seek(0); - - // Read fully and compare - byte[] result = new byte[size]; - - readFully(stream, result); - assertTrue(rangeEquals(bytes, 0, result, 0, size)); - - readFully(stream, result); - assertTrue(rangeEquals(bytes, size, result, 0, size)); - } - - @Test - public void testReadAllByteValuesRegression() throws IOException { - final int size = 128; - - // Fill bytes - byte[] bytes = new byte[256]; - for (int i = 0; i < bytes.length; i++) { - bytes[i] = (byte) i; - } - - // Create wrapper stream - SeekableInputStream stream = makeInputStream(bytes); - - // Fill buffer - byte[] buffer = new byte[size]; - while (stream.read(buffer) >= 0) { - } - - stream.seek(0); - for (int i = 0; i < bytes.length; i += 2) { - assertEquals("Wrong stream position", i, stream.getStreamPosition()); - int count = stream.read(buffer, 0, 2); - assertEquals(2, count); - assertEquals(String.format("Wrong value read at pos %d", stream.getStreamPosition()), bytes[i], buffer[0]); - assertEquals(String.format("Wrong value read at pos %d", stream.getStreamPosition()), bytes[i + 1], buffer[1]); - } - - stream.seek(0); - for (int i = 0; i < bytes.length; i++) { - assertEquals("Wrong stream position", i, stream.getStreamPosition()); - int actual = stream.read(); - assertEquals(String.format("Wrong value read at pos %d", stream.getStreamPosition()), bytes[i] & 0xff, actual); - assertEquals(String.format("Wrong value read at pos %d", stream.getStreamPosition()), bytes[i], (byte) actual); - } - - } - - @Test - public void testCloseUnderlyingStream() throws IOException { - final boolean[] closed = new boolean[1]; - - ByteArrayInputStream input = new ByteArrayInputStream(makeRandomArray(256)) { - @Override - public void close() throws IOException { - closed[0] = true; - super.close(); - } - }; - - SeekableInputStream stream = makeInputStream(input); - - try { - FileUtil.read(stream); // Read until EOF - - assertEquals("EOF not reached (test case broken)", -1, stream.read()); - assertFalse("Underlying stream closed before close", closed[0]); - } - finally { - stream.close(); - } - - assertTrue("Underlying stream not closed", closed[0]); - - } - - private void readFully(InputStream pStream, byte[] pResult) throws IOException { - int pos = 0; - while (pos < pResult.length) { - int read = pStream.read(pResult, pos, pResult.length - pos); - if (read == -1) { - throw new EOFException(); - } - pos += read; - } - } - - /** - * Test two arrays for range equality. That is, they contain the same elements for some specified range. - * - * @param pFirst one array to test for equality - * @param pFirstOffset the offset into the first array to start testing for equality - * @param pSecond the other array to test for equality - * @param pSecondOffset the offset into the second array to start testing for equality - * @param pLength the length of the range to check for equality - * - * @return {@code true} if both arrays are non-{@code null} - * and have at least {@code offset + pLength} elements - * and all elements in the range from the first array is equal to the elements from the second array, - * or if {@code pFirst == pSecond} (including both arrays being {@code null}) - * and {@code pFirstOffset == pSecondOffset}. - * Otherwise {@code false}. - */ - static boolean rangeEquals(byte[] pFirst, int pFirstOffset, byte[] pSecond, int pSecondOffset, int pLength) { - if (pFirst == pSecond && pFirstOffset == pSecondOffset) { - return true; - } - - if (pFirst == null || pSecond == null) { - return false; - } - - if (pFirst.length < pFirstOffset + pLength || pSecond.length < pSecondOffset + pLength) { - return false; - } - - for (int i = 0; i < pLength; i++) { - if (pFirst[pFirstOffset + i] != pSecond[pSecondOffset + i]) { - return false; - } - } - - return true; - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io; + +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.EOFException; +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.Assert.*; + +/** + * SeekableInputStreamAbstractTest + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/SeekableInputStreamAbstractTestCase.java#4 $ + */ +public abstract class SeekableInputStreamAbstractTest extends InputStreamAbstractTest implements SeekableInterfaceTest { + //// TODO: Figure out a better way of creating interface tests without duplicating code + final SeekableAbstractTest seekableTestCase = new SeekableAbstractTest() { + protected Seekable createSeekable() { + return makeInputStream(); + } + }; + + @Override + protected SeekableInputStream makeInputStream() { + return (SeekableInputStream) super.makeInputStream(); + } + + @Override + protected SeekableInputStream makeInputStream(final int pSize) { + return (SeekableInputStream) super.makeInputStream(pSize); + } + + protected SeekableInputStream makeInputStream(byte[] pBytes) { + return makeInputStream(new ByteArrayInputStream(pBytes)); + } + + protected abstract SeekableInputStream makeInputStream(InputStream pStream); + + @Test + @Override + public void testResetAfterReset() throws Exception { + InputStream input = makeInputStream(makeOrderedArray(25)); + + if (!input.markSupported()) { + return; // Not supported, skip test + } + + assertTrue("Expected to read positive value", input.read() >= 0); + + int readlimit = 5; + + // Mark + input.mark(readlimit); + int read = input.read(); + assertTrue("Expected to read positive value", read >= 0); + + input.reset(); + assertEquals("Expected value read differs from actual", read, input.read()); + + // Reset after read limit passed, may either throw exception, or reset to last good mark + try { + input.reset(); + assertEquals("Re-read of reset data should be first", 0, input.read()); + } + catch (Exception e) { + assertTrue("Wrong read-limit IOException message", e.getMessage().contains("mark")); + } + } + + @Test + public void testSeekable() { + seekableTestCase.testSeekable(); + } + + @Test + public void testFlushBeyondCurrentPos() throws Exception { + SeekableInputStream seekable = makeInputStream(20); + + int pos = 10; + try { + seekable.flushBefore(pos); + fail("Flush beyond current position should throw IndexOutOfBoundsException"); + } + catch (IndexOutOfBoundsException e) { + // Ignore + } + } + + @Test + public void testSeek() throws Exception { + SeekableInputStream seekable = makeInputStream(55); + int pos = 37; + + seekable.seek(pos); + long streamPos = seekable.getStreamPosition(); + assertEquals("Stream positon should match seeked position", pos, streamPos); + } + + @Test + public void testSeekFlush() throws Exception { + SeekableInputStream seekable = makeInputStream(133); + int pos = 45; + seekable.seek(pos); + seekable.flushBefore(pos); + long flushedPos = seekable.getFlushedPosition(); + assertEquals("Flushed positon should match position", pos, flushedPos); + + try { + seekable.seek(pos - 1); + fail("Read before flushed position succeeded"); + } + catch (IndexOutOfBoundsException e) { + // Ignore + } + } + + @Test + public void testMarkFlushReset() throws Exception { + SeekableInputStream seekable = makeInputStream(77); + + seekable.mark(); + + int position = 55; + seekable.seek(position); + seekable.flushBefore(position); + + try { + seekable.reset(); + fail("Reset before flushed position succeeded"); + } + catch (IOException e) { + // Ignore + } + + assertEquals(position, seekable.getStreamPosition()); + } + + @Test + public void testSeekSkipRead() throws Exception { + SeekableInputStream seekable = makeInputStream(133); + int pos = 45; + for (int i = 0; i < 10; i++) { + seekable.seek(pos); + //noinspection ResultOfMethodCallIgnored + seekable.skip(i); + byte[] bytes = FileUtil.read(seekable); + assertEquals(133, seekable.getStreamPosition()); + assertEquals(133 - 45- i, bytes.length); + } + } + + protected void testSeekSkip(SeekableInputStream pSeekable, String pStr) throws IOException { + System.out.println(); + pSeekable.seek(pStr.length()); + FileUtil.read(pSeekable); + for (int i = 0; i < 10; i++) { + byte[] bytes = FileUtil.read(pSeekable); + int len = bytes.length; + if (len != 0) { + System.err.println("Error in buffer length after full read..."); + System.err.println("len: " + len); + System.err.println("bytes: \"" + new String(bytes) + "\""); + break; + } + } + + System.out.println(); + + for (int i = 0; i < 10; i++) { + pSeekable.seek(0); + int skip = i * 3; + //noinspection ResultOfMethodCallIgnored + pSeekable.skip(skip); + String str = new String(FileUtil.read(pSeekable)); + System.out.println(str); + if (str.length() != pStr.length() - skip) { + throw new Error("Error in buffer length after skip"); + } + } + + System.out.println(); + System.out.println("seek/skip ok!"); + System.out.println(); + } + + protected static void markReset(SeekableInputStream pSeekable) throws IOException { + for (int i = 0; i < 10; i++) { + pSeekable.mark(); + System.out.println(new String(FileUtil.read(pSeekable))); + pSeekable.reset(); + } + + System.out.println(); + System.out.println("mark/reset ok!"); + } + + protected static void timeRead(SeekableInputStream pSeekable) throws IOException { + for (int i = 0; i < 5000; i++) { + pSeekable.mark(); + FileUtil.read(pSeekable); + pSeekable.reset(); + } + + long start = System.currentTimeMillis(); + final int times = 200000; + for (int i = 0; i < times; i++) { + pSeekable.mark(); + FileUtil.read(pSeekable); + pSeekable.reset(); + } + long time = System.currentTimeMillis() - start; + + System.out.println("Time; " + time + "ms (" + (time / (float) times) + "ms/inv)"); + } + + /* + + // Test code below... + protected final static String STR = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce massa orci, adipiscing vel, dapibus et, vulputate tristique, tortor. Quisque sodales. Mauris varius turpis et pede. Nam ac dolor vel diam condimentum elementum. Pellentesque eget tellus. Praesent magna. Sed fringilla. Proin ullamcorper tincidunt ante. Fusce dapibus nibh nec dolor. Etiam erat. Nullam dignissim laoreet nibh. Maecenas scelerisque. Pellentesque in quam. Maecenas sollicitudin, magna nec imperdiet facilisis, metus quam tristique ipsum, vitae consequat massa purus eget leo. Nulla ipsum. Proin non purus eget tellus lobortis iaculis. In lorem justo, posuere id, vulputate at, adipiscing ut, nisl. Nunc dui erat, tincidunt ac, interdum quis, rutrum et, libero. Etiam lectus dui, viverra sit amet, elementum ut, malesuada sed, massa. Vestibulum mi nulla, sodales vel, vestibulum sed, congue blandit, velit."; + + protected static void flushSeek(SeekableInputStream pSeekable, String pStr) throws IOException { + pSeekable.seek(0); + pSeekable.mark(); + int pos = pStr.length() / 2; + try { + pSeekable.flushBefore(pos); + System.err.println("Error in flush/seek"); + } + catch (IndexOutOfBoundsException e) { + // Ignore + } + pSeekable.seek(pos); + long streamPos = pSeekable.getStreamPosition(); + if (streamPos != pos) { + System.err.println("Streampos not equal seeked pos"); + } + + pSeekable.flushBefore(pos); + long flushedPos = pSeekable.getFlushedPosition(); + if (flushedPos != pos) { + System.err.println("flushedpos not equal set flushed pos"); + } + + for (int i = 0; i < 10; i++) { + pSeekable.seek(pos); + //noinspection ResultOfMethodCallIgnored + pSeekable.skip(i); + System.out.println(new String(FileUtil.read(pSeekable))); + } + + try { + pSeekable.seek(pos - 1); + System.err.println("Error in flush/seek"); + } + catch (IndexOutOfBoundsException e) { + // Ignore + } + try { + pSeekable.reset(); + System.err.println("Error in flush/seek"); + } + catch (IOException e) { + // Ignore + } + + System.out.println(); + System.out.println("flush/seek ok!"); + } + + protected static void seekSkip(SeekableInputStream pSeekable, String pStr) throws IOException { + System.out.println(); + pSeekable.seek(pStr.length()); + FileUtil.read(pSeekable); + for (int i = 0; i < 10; i++) { + byte[] bytes = FileUtil.read(pSeekable); + int len = bytes.length; + if (len != 0) { + System.err.println("Error in buffer length after full read..."); + System.err.println("len: " + len); + System.err.println("bytes: \"" + new String(bytes) + "\""); + break; + } + } + + System.out.println(); + + for (int i = 0; i < 10; i++) { + pSeekable.seek(0); + int skip = i * 3; + //noinspection ResultOfMethodCallIgnored + pSeekable.skip(skip); + String str = new String(FileUtil.read(pSeekable)); + System.out.println(str); + if (str.length() != pStr.length() - skip) { + throw new Error("Error in buffer length after skip"); + } + } + + System.out.println(); + System.out.println("seek/skip ok!"); + System.out.println(); + } + + protected static void markReset(SeekableInputStream pSeekable) throws IOException { + for (int i = 0; i < 10; i++) { + pSeekable.mark(); + System.out.println(new String(FileUtil.read(pSeekable))); + pSeekable.reset(); + } + + System.out.println(); + System.out.println("mark/reset ok!"); + } + + protected static void timeRead(SeekableInputStream pSeekable) throws IOException { + for (int i = 0; i < 5000; i++) { + pSeekable.mark(); + FileUtil.read(pSeekable); + pSeekable.reset(); + } + + long start = System.currentTimeMillis(); + final int times = 200000; + for (int i = 0; i < times; i++) { + pSeekable.mark(); + FileUtil.read(pSeekable); + pSeekable.reset(); + } + long time = System.currentTimeMillis() - start; + + System.out.println("Time; " + time + "ms (" + (time / (float) times) + "ms/inv)"); + } + */ + + @Test + public void testReadResetReadDirectBufferBug() throws IOException { + // Make sure we use the exact size of the buffer + final int size = 1024; + + // Fill bytes + byte[] bytes = new byte[size * 2]; + sRandom.nextBytes(bytes); + + // Create wrapper stream + SeekableInputStream stream = makeInputStream(bytes); + + // Read to fill the buffer, then reset + int val; + + val = stream.read(); + assertFalse("Unexepected EOF", val == -1); + val = stream.read(); + assertFalse("Unexepected EOF", val == -1); + val = stream.read(); + assertFalse("Unexepected EOF", val == -1); + val = stream.read(); + assertFalse("Unexepected EOF", val == -1); + + stream.seek(0); + + // Read fully and compare + byte[] result = new byte[size]; + + readFully(stream, result); + assertTrue(rangeEquals(bytes, 0, result, 0, size)); + + readFully(stream, result); + assertTrue(rangeEquals(bytes, size, result, 0, size)); + } + + @Test + public void testReadAllByteValuesRegression() throws IOException { + final int size = 128; + + // Fill bytes + byte[] bytes = new byte[256]; + for (int i = 0; i < bytes.length; i++) { + bytes[i] = (byte) i; + } + + // Create wrapper stream + SeekableInputStream stream = makeInputStream(bytes); + + // Fill buffer + byte[] buffer = new byte[size]; + while (stream.read(buffer) >= 0) { + } + + stream.seek(0); + for (int i = 0; i < bytes.length; i += 2) { + assertEquals("Wrong stream position", i, stream.getStreamPosition()); + int count = stream.read(buffer, 0, 2); + assertEquals(2, count); + assertEquals(String.format("Wrong value read at pos %d", stream.getStreamPosition()), bytes[i], buffer[0]); + assertEquals(String.format("Wrong value read at pos %d", stream.getStreamPosition()), bytes[i + 1], buffer[1]); + } + + stream.seek(0); + for (int i = 0; i < bytes.length; i++) { + assertEquals("Wrong stream position", i, stream.getStreamPosition()); + int actual = stream.read(); + assertEquals(String.format("Wrong value read at pos %d", stream.getStreamPosition()), bytes[i] & 0xff, actual); + assertEquals(String.format("Wrong value read at pos %d", stream.getStreamPosition()), bytes[i], (byte) actual); + } + + } + + @Test + public void testCloseUnderlyingStream() throws IOException { + final boolean[] closed = new boolean[1]; + + ByteArrayInputStream input = new ByteArrayInputStream(makeRandomArray(256)) { + @Override + public void close() throws IOException { + closed[0] = true; + super.close(); + } + }; + + SeekableInputStream stream = makeInputStream(input); + + try { + FileUtil.read(stream); // Read until EOF + + assertEquals("EOF not reached (test case broken)", -1, stream.read()); + assertFalse("Underlying stream closed before close", closed[0]); + } + finally { + stream.close(); + } + + assertTrue("Underlying stream not closed", closed[0]); + + } + + private void readFully(InputStream pStream, byte[] pResult) throws IOException { + int pos = 0; + while (pos < pResult.length) { + int read = pStream.read(pResult, pos, pResult.length - pos); + if (read == -1) { + throw new EOFException(); + } + pos += read; + } + } + + /** + * Test two arrays for range equality. That is, they contain the same elements for some specified range. + * + * @param pFirst one array to test for equality + * @param pFirstOffset the offset into the first array to start testing for equality + * @param pSecond the other array to test for equality + * @param pSecondOffset the offset into the second array to start testing for equality + * @param pLength the length of the range to check for equality + * + * @return {@code true} if both arrays are non-{@code null} + * and have at least {@code offset + pLength} elements + * and all elements in the range from the first array is equal to the elements from the second array, + * or if {@code pFirst == pSecond} (including both arrays being {@code null}) + * and {@code pFirstOffset == pSecondOffset}. + * Otherwise {@code false}. + */ + static boolean rangeEquals(byte[] pFirst, int pFirstOffset, byte[] pSecond, int pSecondOffset, int pLength) { + if (pFirst == pSecond && pFirstOffset == pSecondOffset) { + return true; + } + + if (pFirst == null || pSecond == null) { + return false; + } + + if (pFirst.length < pFirstOffset + pLength || pSecond.length < pSecondOffset + pLength) { + return false; + } + + for (int i = 0; i < pLength; i++) { + if (pFirst[pFirstOffset + i] != pSecond[pSecondOffset + i]) { + return false; + } + } + + return true; + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/SeekableInterfaceTest.java b/common/common-io/src/test/java/com/twelvemonkeys/io/SeekableInterfaceTest.java index 1c59b52c..2a5e92bc 100755 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/SeekableInterfaceTest.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/SeekableInterfaceTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.io; /** diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/StringArrayReaderTest.java b/common/common-io/src/test/java/com/twelvemonkeys/io/StringArrayReaderTest.java new file mode 100755 index 00000000..53af2336 --- /dev/null +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/StringArrayReaderTest.java @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io; + +import com.twelvemonkeys.lang.StringUtil; +import org.junit.Test; + +import java.io.IOException; +import java.io.Reader; + +import static org.junit.Assert.*; + +/** + * StringArrayReaderTestCase + *

    + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/StringArrayReaderTestCase.java#1 $ + */ +public class StringArrayReaderTest extends ReaderAbstractTest { + + protected Reader makeReader(String pInput) { + // Split + String[] input = StringUtil.toStringArray(pInput, " "); + // Reappend spaces... + for (int i = 0; i < input.length; i++) { + if (i != 0) { + input[i] = " " + input[i]; + } + } + + return new StringArrayReader(input); + } + + @Test + public void testNullConstructor() { + try { + new StringArrayReader(null); + fail("Should not allow null argument"); + } + catch (RuntimeException e) { + assertNotNull(e.getMessage()); + } + } + + @Test + public void testEmptyArrayConstructor() throws IOException { + Reader reader = new StringArrayReader(new String[0]); + assertEquals(-1, reader.read()); + } + + @Test + public void testEmptyStringConstructor() throws IOException { + Reader reader = new StringArrayReader(new String[] {""}); + assertEquals(-1, reader.read()); + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/StringArrayReaderTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/StringArrayReaderTestCase.java deleted file mode 100755 index cf1594c9..00000000 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/StringArrayReaderTestCase.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.twelvemonkeys.io; - -import com.twelvemonkeys.lang.StringUtil; -import org.junit.Test; - -import java.io.Reader; -import java.io.IOException; - -import static org.junit.Assert.*; - -/** - * StringArrayReaderTestCase - *

    - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/StringArrayReaderTestCase.java#1 $ - */ -public class StringArrayReaderTestCase extends ReaderAbstractTestCase { - - protected Reader makeReader(String pInput) { - // Split - String[] input = StringUtil.toStringArray(pInput, " "); - // Reappend spaces... - for (int i = 0; i < input.length; i++) { - if (i != 0) { - input[i] = " " + input[i]; - } - } - - return new StringArrayReader(input); - } - - @Test - public void testNullConstructor() { - try { - new StringArrayReader(null); - fail("Should not allow null argument"); - } - catch (RuntimeException e) { - assertNotNull(e.getMessage()); - } - } - - @Test - public void testEmptyArrayConstructor() throws IOException { - Reader reader = new StringArrayReader(new String[0]); - assertEquals(-1, reader.read()); - } - - @Test - public void testEmptyStringConstructor() throws IOException { - Reader reader = new StringArrayReader(new String[] {""}); - assertEquals(-1, reader.read()); - } -} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/enc/Base64DecoderTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/enc/Base64DecoderTest.java similarity index 56% rename from common/common-io/src/test/java/com/twelvemonkeys/io/enc/Base64DecoderTestCase.java rename to common/common-io/src/test/java/com/twelvemonkeys/io/enc/Base64DecoderTest.java index 922bf5b5..457fb901 100755 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/enc/Base64DecoderTestCase.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/enc/Base64DecoderTest.java @@ -1,71 +1,103 @@ -package com.twelvemonkeys.io.enc; - - -import com.twelvemonkeys.io.FileUtil; -import org.junit.Test; - -import java.io.*; - -import static org.junit.Assert.*; - -/** - * Base64DecoderTest - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/enc/Base64DecoderTestCase.java#1 $ - */ -public class Base64DecoderTestCase extends DecoderAbstractTestCase { - - public Decoder createDecoder() { - return new Base64Decoder(); - } - - public Encoder createCompatibleEncoder() { - return new Base64Encoder(); - } - - @Test - public void testEmptyDecode2() throws IOException { - String data = ""; - - InputStream in = new DecoderStream(new ByteArrayInputStream(data.getBytes()), createDecoder()); - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - - FileUtil.copy(in, bytes); - - assertEquals("Strings does not match", "", new String(bytes.toByteArray())); - } - - @Test - public void testShortDecode() throws IOException { - String data = "dGVzdA=="; - - InputStream in = new DecoderStream(new ByteArrayInputStream(data.getBytes()), createDecoder()); - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - - FileUtil.copy(in, bytes); - - assertEquals("Strings does not match", "test", new String(bytes.toByteArray())); - } - - @Test - public void testLongDecode() throws IOException { - String data = "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVlciBhZGlwaXNjaW5nIGVsaXQuIEZ1" + - "c2NlIGVzdC4gTW9yYmkgbHVjdHVzIGNvbnNlY3RldHVlciBqdXN0by4gVml2YW11cyBkYXBpYnVzIGxh" + - "b3JlZXQgcHVydXMuIE51bmMgdml2ZXJyYSBkaWN0dW0gbmlzbC4gSW50ZWdlciB1bGxhbWNvcnBlciwg" + - "bmlzaSBpbiBkaWN0dW0gYW1ldC4="; - - InputStream in = new DecoderStream(new ByteArrayInputStream(data.getBytes()), createDecoder()); - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - - FileUtil.copy(in, bytes); - - assertEquals("Strings does not match", - "Lorem ipsum dolor sit amet, consectetuer adipiscing " + - "elit. Fusce est. Morbi luctus consectetuer justo. Vivamus " + - "dapibus laoreet purus. Nunc viverra dictum nisl. Integer " + - "ullamcorper, nisi in dictum amet.", - new String(bytes.toByteArray())); - } +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io.enc; + +import com.twelvemonkeys.io.FileUtil; +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.Assert.assertEquals; + +/** + * Base64DecoderTest + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/enc/Base64DecoderTestCase.java#1 $ + */ +public class Base64DecoderTest extends DecoderAbstractTest { + + public Decoder createDecoder() { + return new Base64Decoder(); + } + + public Encoder createCompatibleEncoder() { + return new Base64Encoder(); + } + + @Test + public void testEmptyDecode2() throws IOException { + String data = ""; + + InputStream in = new DecoderStream(new ByteArrayInputStream(data.getBytes()), createDecoder()); + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + + FileUtil.copy(in, bytes); + + assertEquals("Strings does not match", "", new String(bytes.toByteArray())); + } + + @Test + public void testShortDecode() throws IOException { + String data = "dGVzdA=="; + + InputStream in = new DecoderStream(new ByteArrayInputStream(data.getBytes()), createDecoder()); + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + + FileUtil.copy(in, bytes); + + assertEquals("Strings does not match", "test", new String(bytes.toByteArray())); + } + + @Test + public void testLongDecode() throws IOException { + String data = "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVlciBhZGlwaXNjaW5nIGVsaXQuIEZ1" + + "c2NlIGVzdC4gTW9yYmkgbHVjdHVzIGNvbnNlY3RldHVlciBqdXN0by4gVml2YW11cyBkYXBpYnVzIGxh" + + "b3JlZXQgcHVydXMuIE51bmMgdml2ZXJyYSBkaWN0dW0gbmlzbC4gSW50ZWdlciB1bGxhbWNvcnBlciwg" + + "bmlzaSBpbiBkaWN0dW0gYW1ldC4="; + + InputStream in = new DecoderStream(new ByteArrayInputStream(data.getBytes()), createDecoder()); + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + + FileUtil.copy(in, bytes); + + assertEquals("Strings does not match", + "Lorem ipsum dolor sit amet, consectetuer adipiscing " + + "elit. Fusce est. Morbi luctus consectetuer justo. Vivamus " + + "dapibus laoreet purus. Nunc viverra dictum nisl. Integer " + + "ullamcorper, nisi in dictum amet.", + new String(bytes.toByteArray())); + } } \ No newline at end of file diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/enc/Base64EncoderTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/enc/Base64EncoderTest.java similarity index 58% rename from common/common-io/src/test/java/com/twelvemonkeys/io/enc/Base64EncoderTestCase.java rename to common/common-io/src/test/java/com/twelvemonkeys/io/enc/Base64EncoderTest.java index 0c3e7720..7e77196a 100644 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/enc/Base64EncoderTestCase.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/enc/Base64EncoderTest.java @@ -1,68 +1,98 @@ -package com.twelvemonkeys.io.enc; - -import org.junit.Test; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; - -import static org.junit.Assert.*; - -/** - * Base64EncoderTest - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/enc/Base64EncoderTestCase.java#1 $ - */ -public class Base64EncoderTestCase extends EncoderAbstractTestCase { - - protected Encoder createEncoder() { - return new Base64Encoder(); - } - - protected Decoder createCompatibleDecoder() { - return new Base64Decoder(); - } - - @Test - public void testEmptyEncode() throws IOException { - String data = ""; - - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - OutputStream out = new EncoderStream(bytes, createEncoder(), true); - out.write(data.getBytes()); - - assertEquals("Strings does not match", "", new String(bytes.toByteArray())); - } - - @Test - public void testShortEncode() throws IOException { - String data = "test"; - - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - OutputStream out = new EncoderStream(bytes, createEncoder(), true); - out.write(data.getBytes()); - - assertEquals("Strings does not match", "dGVzdA==", new String(bytes.toByteArray())); - } - - @Test - public void testLongEncode() throws IOException { - String data = "Lorem ipsum dolor sit amet, consectetuer adipiscing " + - "elit. Fusce est. Morbi luctus consectetuer justo. Vivamus " + - "dapibus laoreet purus. Nunc viverra dictum nisl. Integer " + - "ullamcorper, nisi in dictum amet."; - - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - OutputStream out = new EncoderStream(bytes, createEncoder(), true); - out.write(data.getBytes()); - - assertEquals("Strings does not match", - "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVlciBhZGlwaXNjaW5nIGVsaXQuIEZ1" + - "c2NlIGVzdC4gTW9yYmkgbHVjdHVzIGNvbnNlY3RldHVlciBqdXN0by4gVml2YW11cyBkYXBpYnVzIGxh" + - "b3JlZXQgcHVydXMuIE51bmMgdml2ZXJyYSBkaWN0dW0gbmlzbC4gSW50ZWdlciB1bGxhbWNvcnBlciwg" + - "bmlzaSBpbiBkaWN0dW0gYW1ldC4=", - new String(bytes.toByteArray())); - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io.enc; + +import org.junit.Test; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +import static org.junit.Assert.assertEquals; + +/** + * Base64EncoderTest + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/enc/Base64EncoderTestCase.java#1 $ + */ +public class Base64EncoderTest extends EncoderAbstractTest { + + protected Encoder createEncoder() { + return new Base64Encoder(); + } + + protected Decoder createCompatibleDecoder() { + return new Base64Decoder(); + } + + @Test + public void testEmptyEncode() throws IOException { + String data = ""; + + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + OutputStream out = new EncoderStream(bytes, createEncoder(), true); + out.write(data.getBytes()); + + assertEquals("Strings does not match", "", new String(bytes.toByteArray())); + } + + @Test + public void testShortEncode() throws IOException { + String data = "test"; + + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + OutputStream out = new EncoderStream(bytes, createEncoder(), true); + out.write(data.getBytes()); + + assertEquals("Strings does not match", "dGVzdA==", new String(bytes.toByteArray())); + } + + @Test + public void testLongEncode() throws IOException { + String data = "Lorem ipsum dolor sit amet, consectetuer adipiscing " + + "elit. Fusce est. Morbi luctus consectetuer justo. Vivamus " + + "dapibus laoreet purus. Nunc viverra dictum nisl. Integer " + + "ullamcorper, nisi in dictum amet."; + + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + OutputStream out = new EncoderStream(bytes, createEncoder(), true); + out.write(data.getBytes()); + + assertEquals("Strings does not match", + "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVlciBhZGlwaXNjaW5nIGVsaXQuIEZ1" + + "c2NlIGVzdC4gTW9yYmkgbHVjdHVzIGNvbnNlY3RldHVlciBqdXN0by4gVml2YW11cyBkYXBpYnVzIGxh" + + "b3JlZXQgcHVydXMuIE51bmMgdml2ZXJyYSBkaWN0dW0gbmlzbC4gSW50ZWdlciB1bGxhbWNvcnBlciwg" + + "bmlzaSBpbiBkaWN0dW0gYW1ldC4=", + new String(bytes.toByteArray())); + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/enc/DecoderAbstractTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/enc/DecoderAbstractTest.java similarity index 65% rename from common/common-io/src/test/java/com/twelvemonkeys/io/enc/DecoderAbstractTestCase.java rename to common/common-io/src/test/java/com/twelvemonkeys/io/enc/DecoderAbstractTest.java index 51788010..6f1e8948 100644 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/enc/DecoderAbstractTestCase.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/enc/DecoderAbstractTest.java @@ -1,115 +1,145 @@ -package com.twelvemonkeys.io.enc; - -import com.twelvemonkeys.io.FileUtil; -import com.twelvemonkeys.lang.ObjectAbstractTestCase; -import org.junit.Test; - -import java.io.*; -import java.nio.ByteBuffer; - -import static org.junit.Assert.*; - -/** - * AbstractDecoderTest - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/enc/DecoderAbstractTestCase.java#1 $ - */ -public abstract class DecoderAbstractTestCase extends ObjectAbstractTestCase { - - public abstract Decoder createDecoder(); - public abstract Encoder createCompatibleEncoder(); - - protected Object makeObject() { - return createDecoder(); - } - - @Test(expected = NullPointerException.class) - public final void testNullDecode() throws IOException { - Decoder decoder = createDecoder(); - ByteArrayInputStream bytes = new ByteArrayInputStream(new byte[20]); - - decoder.decode(bytes, null); - fail("null should throw NullPointerException"); - } - - @Test - public final void testEmptyDecode() throws IOException { - Decoder decoder = createDecoder(); - ByteArrayInputStream bytes = new ByteArrayInputStream(new byte[0]); - - try { - int count = decoder.decode(bytes, ByteBuffer.allocate(128)); - assertEquals("Should not be able to read any bytes", 0, count); - } - catch (EOFException allowed) { - // Okay - } - } - - private byte[] createData(int pLength) throws Exception { - byte[] bytes = new byte[pLength]; - EncoderAbstractTestCase.RANDOM.nextBytes(bytes); - return bytes; - } - - private void runStreamTest(int pLength) throws Exception { - byte[] data = createData(pLength); - - ByteArrayOutputStream outBytes = new ByteArrayOutputStream(); - OutputStream out = new EncoderStream(outBytes, createCompatibleEncoder(), true); - out.write(data); - out.close(); - byte[] encoded = outBytes.toByteArray(); - - byte[] decoded = FileUtil.read(new DecoderStream(new ByteArrayInputStream(encoded), createDecoder())); - assertArrayEquals(String.format("Data %d", pLength), data, decoded); - - InputStream in = new DecoderStream(new ByteArrayInputStream(encoded), createDecoder()); - outBytes = new ByteArrayOutputStream(); - FileUtil.copy(in, outBytes); - outBytes.close(); - in.close(); - - decoded = outBytes.toByteArray(); - assertArrayEquals(String.format("Data %d", pLength), data, decoded); - } - - @Test - public final void testStreams() throws Exception { - if (createCompatibleEncoder() == null) { - return; - } - - for (int i = 1; i < 100; i++) { - try { - runStreamTest(i); - } - catch (IOException e) { - e.printStackTrace(); - fail(e.getMessage() + ": " + i); - } - } - - for (int i = 100; i < 2000; i += 250) { - try { - runStreamTest(i); - } - catch (IOException e) { - e.printStackTrace(); - fail(e.getMessage() + ": " + i); - } - } - - for (int i = 2000; i < 80000; i += 1000) { - try { - runStreamTest(i); - } - catch (IOException e) { - e.printStackTrace(); - fail(e.getMessage() + ": " + i); - } - } - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io.enc; + +import com.twelvemonkeys.io.FileUtil; +import com.twelvemonkeys.lang.ObjectAbstractTest; +import org.junit.Test; + +import java.io.*; +import java.nio.ByteBuffer; + +import static org.junit.Assert.*; + +/** + * AbstractDecoderTest + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/enc/DecoderAbstractTestCase.java#1 $ + */ +public abstract class DecoderAbstractTest extends ObjectAbstractTest { + + public abstract Decoder createDecoder(); + public abstract Encoder createCompatibleEncoder(); + + protected Object makeObject() { + return createDecoder(); + } + + @Test(expected = NullPointerException.class) + public final void testNullDecode() throws IOException { + Decoder decoder = createDecoder(); + ByteArrayInputStream bytes = new ByteArrayInputStream(new byte[20]); + + decoder.decode(bytes, null); + fail("null should throw NullPointerException"); + } + + @Test + public final void testEmptyDecode() throws IOException { + Decoder decoder = createDecoder(); + ByteArrayInputStream bytes = new ByteArrayInputStream(new byte[0]); + + try { + int count = decoder.decode(bytes, ByteBuffer.allocate(128)); + assertEquals("Should not be able to read any bytes", 0, count); + } + catch (EOFException allowed) { + // Okay + } + } + + private byte[] createData(int pLength) throws Exception { + byte[] bytes = new byte[pLength]; + EncoderAbstractTest.RANDOM.nextBytes(bytes); + return bytes; + } + + private void runStreamTest(int pLength) throws Exception { + byte[] data = createData(pLength); + + ByteArrayOutputStream outBytes = new ByteArrayOutputStream(); + OutputStream out = new EncoderStream(outBytes, createCompatibleEncoder(), true); + out.write(data); + out.close(); + byte[] encoded = outBytes.toByteArray(); + + byte[] decoded = FileUtil.read(new DecoderStream(new ByteArrayInputStream(encoded), createDecoder())); + assertArrayEquals(String.format("Data %d", pLength), data, decoded); + + InputStream in = new DecoderStream(new ByteArrayInputStream(encoded), createDecoder()); + outBytes = new ByteArrayOutputStream(); + FileUtil.copy(in, outBytes); + outBytes.close(); + in.close(); + + decoded = outBytes.toByteArray(); + assertArrayEquals(String.format("Data %d", pLength), data, decoded); + } + + @Test + public final void testStreams() throws Exception { + if (createCompatibleEncoder() == null) { + return; + } + + for (int i = 1; i < 100; i++) { + try { + runStreamTest(i); + } + catch (IOException e) { + e.printStackTrace(); + fail(e.getMessage() + ": " + i); + } + } + + for (int i = 100; i < 2000; i += 250) { + try { + runStreamTest(i); + } + catch (IOException e) { + e.printStackTrace(); + fail(e.getMessage() + ": " + i); + } + } + + for (int i = 2000; i < 80000; i += 1000) { + try { + runStreamTest(i); + } + catch (IOException e) { + e.printStackTrace(); + fail(e.getMessage() + ": " + i); + } + } + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/enc/EncoderAbstractTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/enc/EncoderAbstractTest.java similarity index 69% rename from common/common-io/src/test/java/com/twelvemonkeys/io/enc/EncoderAbstractTestCase.java rename to common/common-io/src/test/java/com/twelvemonkeys/io/enc/EncoderAbstractTest.java index 6376a73d..23b4e057 100644 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/enc/EncoderAbstractTestCase.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/enc/EncoderAbstractTest.java @@ -1,139 +1,170 @@ -package com.twelvemonkeys.io.enc; - -import com.twelvemonkeys.io.FileUtil; -import com.twelvemonkeys.lang.ObjectAbstractTestCase; -import org.junit.Test; - -import java.io.*; -import java.util.Arrays; -import java.util.Random; - -import static org.junit.Assert.*; - -/** - * AbstractEncoderTest - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/enc/EncoderAbstractTestCase.java#1 $ - */ -public abstract class EncoderAbstractTestCase extends ObjectAbstractTestCase { - // Use seed to make sure we create same number all the time - static final long SEED = 12345678; - static final Random RANDOM = new Random(SEED); - - protected abstract Encoder createEncoder(); - protected abstract Decoder createCompatibleDecoder(); - - protected Object makeObject() { - return createEncoder(); - } - - @Test - public final void testNullEncode() throws IOException { - Encoder encoder = createEncoder(); - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - - try { - encoder.encode(bytes, null); - fail("null should throw NullPointerException"); - } - catch (NullPointerException expected) { - } - } - - private byte[] createData(final int pLength) throws Exception { - byte[] bytes = new byte[pLength]; - RANDOM.nextBytes(bytes); - return bytes; - } - - private void runStreamTest(final int pLength) throws Exception { - byte[] data = createData(pLength); - ByteArrayOutputStream outBytes = new ByteArrayOutputStream(); - OutputStream out = new EncoderStream(outBytes, createEncoder(), true); - - try { - // Provoke failure for encoders that doesn't take array offset properly into account - int off = (data.length + 1) / 2; - out.write(data, 0, off); - if (data.length > off) { - out.write(data, off, data.length - off); - } - } - finally { - out.close(); - } - - byte[] encoded = outBytes.toByteArray(); - -// System.err.println("encoded.length: " + encoded.length); -// System.err.println("encoded: " + Arrays.toString(encoded)); - - byte[] decoded = FileUtil.read(new DecoderStream(new ByteArrayInputStream(encoded), createCompatibleDecoder())); - assertTrue(Arrays.equals(data, decoded)); - - InputStream in = new DecoderStream(new ByteArrayInputStream(encoded), createCompatibleDecoder()); - outBytes = new ByteArrayOutputStream(); - - try { - FileUtil.copy(in, outBytes); - } - finally { - outBytes.close(); - in.close(); - } - - decoded = outBytes.toByteArray(); - assertTrue(Arrays.equals(data, decoded)); - } - - @Test - public final void testStreams() throws Exception { - for (int i = 0; i < 100; i++) { - try { - runStreamTest(i); - } - catch (IOException e) { - e.printStackTrace(); - fail(e.getMessage() + ": " + i); - } - catch (Exception e) { - e.printStackTrace(); - fail(e.getMessage() + ": " + i); - } - } - - for (int i = 100; i < 2000; i += 250) { - try { - runStreamTest(i); - } - catch (IOException e) { - e.printStackTrace(); - fail(e.getMessage() + ": " + i); - } - catch (Exception e) { - e.printStackTrace(); - fail(e.getMessage() + ": " + i); - } - } - - for (int i = 2000; i < 80000; i += 1000) { - try { - runStreamTest(i); - } - catch (IOException e) { - e.printStackTrace(); - fail(e.getMessage() + ": " + i); - } - catch (Exception e) { - e.printStackTrace(); - fail(e.getMessage() + ": " + i); - } - } - } - - // TODO: Test that the transition from byte[] to ByteBuffer didn't introduce bugs when writing to a wrapped array with offset. - - -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io.enc; + +import com.twelvemonkeys.io.FileUtil; +import com.twelvemonkeys.lang.ObjectAbstractTest; +import org.junit.Test; + +import java.io.*; +import java.util.Arrays; +import java.util.Random; + +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +/** + * AbstractEncoderTest + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/enc/EncoderAbstractTestCase.java#1 $ + */ +public abstract class EncoderAbstractTest extends ObjectAbstractTest { + // Use seed to make sure we create same number all the time + static final long SEED = 12345678; + static final Random RANDOM = new Random(SEED); + + protected abstract Encoder createEncoder(); + protected abstract Decoder createCompatibleDecoder(); + + protected Object makeObject() { + return createEncoder(); + } + + @Test + public final void testNullEncode() throws IOException { + Encoder encoder = createEncoder(); + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + + try { + encoder.encode(bytes, null); + fail("null should throw NullPointerException"); + } + catch (NullPointerException expected) { + } + } + + private byte[] createData(final int pLength) throws Exception { + byte[] bytes = new byte[pLength]; + RANDOM.nextBytes(bytes); + return bytes; + } + + private void runStreamTest(final int pLength) throws Exception { + byte[] data = createData(pLength); + ByteArrayOutputStream outBytes = new ByteArrayOutputStream(); + OutputStream out = new EncoderStream(outBytes, createEncoder(), true); + + try { + // Provoke failure for encoders that doesn't take array offset properly into account + int off = (data.length + 1) / 2; + out.write(data, 0, off); + if (data.length > off) { + out.write(data, off, data.length - off); + } + } + finally { + out.close(); + } + + byte[] encoded = outBytes.toByteArray(); + +// System.err.println("encoded.length: " + encoded.length); +// System.err.println("encoded: " + Arrays.toString(encoded)); + + byte[] decoded = FileUtil.read(new DecoderStream(new ByteArrayInputStream(encoded), createCompatibleDecoder())); + assertTrue(Arrays.equals(data, decoded)); + + InputStream in = new DecoderStream(new ByteArrayInputStream(encoded), createCompatibleDecoder()); + outBytes = new ByteArrayOutputStream(); + + try { + FileUtil.copy(in, outBytes); + } + finally { + outBytes.close(); + in.close(); + } + + decoded = outBytes.toByteArray(); + assertTrue(Arrays.equals(data, decoded)); + } + + @Test + public final void testStreams() throws Exception { + for (int i = 0; i < 100; i++) { + try { + runStreamTest(i); + } + catch (IOException e) { + e.printStackTrace(); + fail(e.getMessage() + ": " + i); + } + catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage() + ": " + i); + } + } + + for (int i = 100; i < 2000; i += 250) { + try { + runStreamTest(i); + } + catch (IOException e) { + e.printStackTrace(); + fail(e.getMessage() + ": " + i); + } + catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage() + ": " + i); + } + } + + for (int i = 2000; i < 80000; i += 1000) { + try { + runStreamTest(i); + } + catch (IOException e) { + e.printStackTrace(); + fail(e.getMessage() + ": " + i); + } + catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage() + ": " + i); + } + } + } + + // TODO: Test that the transition from byte[] to ByteBuffer didn't introduce bugs when writing to a wrapped array with offset. + + +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsDecoderTest.java b/common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsDecoderTest.java new file mode 100755 index 00000000..6f974936 --- /dev/null +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsDecoderTest.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io.enc; + +/** + * PackBitsDecoderTest + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/enc/PackBitsDecoderTestCase.java#1 $ + */ +public class PackBitsDecoderTest extends DecoderAbstractTest { + public Decoder createDecoder() { + return new PackBitsDecoder(); + } + + public Encoder createCompatibleEncoder() { + return new PackBitsEncoder(); + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsDecoderTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsDecoderTestCase.java deleted file mode 100755 index 584be832..00000000 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsDecoderTestCase.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.twelvemonkeys.io.enc; - -/** - * PackBitsDecoderTest - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/enc/PackBitsDecoderTestCase.java#1 $ - */ -public class PackBitsDecoderTestCase extends DecoderAbstractTestCase { - public Decoder createDecoder() { - return new PackBitsDecoder(); - } - - public Encoder createCompatibleEncoder() { - return new PackBitsEncoder(); - } -} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsEncoderTest.java b/common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsEncoderTest.java new file mode 100755 index 00000000..b1a13755 --- /dev/null +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsEncoderTest.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io.enc; + +/** + * PackBitsEncoderTest + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/enc/PackBitsEncoderTestCase.java#1 $ + */ +public class PackBitsEncoderTest extends EncoderAbstractTest { + protected Encoder createEncoder() { + return new PackBitsEncoder(); + } + + protected Decoder createCompatibleDecoder() { + return new PackBitsDecoder(); + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsEncoderTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsEncoderTestCase.java deleted file mode 100755 index d214fd3f..00000000 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/enc/PackBitsEncoderTestCase.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.twelvemonkeys.io.enc; - -/** - * PackBitsEncoderTest - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/enc/PackBitsEncoderTestCase.java#1 $ - */ -public class PackBitsEncoderTestCase extends EncoderAbstractTestCase { - protected Encoder createEncoder() { - return new PackBitsEncoder(); - } - - protected Decoder createCompatibleDecoder() { - return new PackBitsDecoder(); - } -} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocumentTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocumentTest.java similarity index 76% rename from common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocumentTestCase.java rename to common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocumentTest.java index ccbf18da..cef8106f 100755 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocumentTestCase.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocumentTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2011, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.io.ole2; import com.twelvemonkeys.io.MemoryCacheSeekableStream; @@ -22,7 +52,7 @@ import static org.junit.Assert.*; * @author last modified by $Author: haku $ * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocumentTestCase.java#1 $ */ -public class CompoundDocumentTestCase { +public class CompoundDocumentTest { private static final String SAMPLE_DATA = "/Thumbs-camera.db"; diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_SeekableLittleEndianDataInputStreamTest.java b/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_SeekableLittleEndianDataInputStreamTest.java new file mode 100644 index 00000000..c0b80b76 --- /dev/null +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_SeekableLittleEndianDataInputStreamTest.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2011, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.io.ole2; + +import com.twelvemonkeys.io.*; +import org.junit.Test; + +import java.io.ByteArrayInputStream; + +/** + * CompoundDocument_SeekableLittleEndianDataInputStreamTestCase + * + * @author Harald Kuhr + * @author last modified by $Author: haraldk$ + * @version $Id: CompoundDocument_SeekableLittleEndianDataInputStreamTestCase.java,v 1.0 18.10.11 16:35 haraldk Exp$ + */ +public class CompoundDocument_SeekableLittleEndianDataInputStreamTest extends InputStreamAbstractTest implements SeekableInterfaceTest { + private final SeekableInterfaceTest seekableTest = new SeekableAbstractTest() { + @Override + protected Seekable createSeekable() { + return (Seekable) makeInputStream(); + } + }; + + @Override + protected CompoundDocument.SeekableLittleEndianDataInputStream makeInputStream(byte[] pBytes) { + return new CompoundDocument.SeekableLittleEndianDataInputStream(new MemoryCacheSeekableStream(new ByteArrayInputStream(pBytes))); + } + + @Test + public void testSeekable() { + seekableTest.testSeekable(); + } +} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_SeekableLittleEndianDataInputStreamTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_SeekableLittleEndianDataInputStreamTestCase.java deleted file mode 100644 index d4e426d6..00000000 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_SeekableLittleEndianDataInputStreamTestCase.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2011, Harald Kuhr - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package com.twelvemonkeys.io.ole2; - -import com.twelvemonkeys.io.*; -import org.junit.Test; - -import java.io.ByteArrayInputStream; - -/** - * CompoundDocument_SeekableLittleEndianDataInputStreamTestCase - * - * @author Harald Kuhr - * @author last modified by $Author: haraldk$ - * @version $Id: CompoundDocument_SeekableLittleEndianDataInputStreamTestCase.java,v 1.0 18.10.11 16:35 haraldk Exp$ - */ -public class CompoundDocument_SeekableLittleEndianDataInputStreamTestCase extends InputStreamAbstractTestCase implements SeekableInterfaceTest { - private final SeekableInterfaceTest seekableTest = new SeekableAbstractTestCase() { - @Override - protected Seekable createSeekable() { - return (Seekable) makeInputStream(); - } - }; - - @Override - protected CompoundDocument.SeekableLittleEndianDataInputStream makeInputStream(byte[] pBytes) { - return new CompoundDocument.SeekableLittleEndianDataInputStream(new MemoryCacheSeekableStream(new ByteArrayInputStream(pBytes))); - } - - @Test - public void testSeekable() { - seekableTest.testSeekable(); - } -} diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_StreamTestCase.java b/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_StreamTest.java similarity index 85% rename from common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_StreamTestCase.java rename to common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_StreamTest.java index 14039eae..be188623 100644 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_StreamTestCase.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_StreamTest.java @@ -4,31 +4,33 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.io.ole2; -import com.twelvemonkeys.io.InputStreamAbstractTestCase; +import com.twelvemonkeys.io.InputStreamAbstractTest; import com.twelvemonkeys.io.LittleEndianDataOutputStream; import com.twelvemonkeys.io.MemoryCacheSeekableStream; import com.twelvemonkeys.io.SeekableInputStream; @@ -50,7 +52,7 @@ import static org.junit.Assert.*; * @version $Id: CompoundDocument_StreamTestCase.java,v 1.0 13.10.11 12:01 haraldk Exp$ */ //@Ignore("Need proper in-memory creation of CompoundDocuments") -public class CompoundDocument_StreamTestCase extends InputStreamAbstractTestCase { +public class CompoundDocument_StreamTest extends InputStreamAbstractTest { private static final String SAMPLE_DATA = "/Thumbs-camera.db"; protected final CompoundDocument createTestDocument() throws IOException { diff --git a/common/common-io/src/test/java/com/twelvemonkeys/net/HTTPUtilTest.java b/common/common-io/src/test/java/com/twelvemonkeys/net/HTTPUtilTest.java index 9bb83f53..f3912e92 100644 --- a/common/common-io/src/test/java/com/twelvemonkeys/net/HTTPUtilTest.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/net/HTTPUtilTest.java @@ -4,33 +4,35 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.net; import org.junit.Test; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; /** * HTTPUtilTest diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/lang/BeanUtil.java b/common/common-lang/src/main/java/com/twelvemonkeys/lang/BeanUtil.java index 7eae35dd..dffd0bb3 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/lang/BeanUtil.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/lang/BeanUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.lang; @@ -35,8 +37,8 @@ import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.util.Map; import java.util.Arrays; +import java.util.Map; /** * A utility class with some useful bean-related functions. diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/lang/DateUtil.java b/common/common-lang/src/main/java/com/twelvemonkeys/lang/DateUtil.java index 1234eb3c..780a68dd 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/lang/DateUtil.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/lang/DateUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.lang; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/lang/Platform.java b/common/common-lang/src/main/java/com/twelvemonkeys/lang/Platform.java index d69f37c3..f0ab7e1a 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/lang/Platform.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/lang/Platform.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.lang; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/lang/ReflectUtil.java b/common/common-lang/src/main/java/com/twelvemonkeys/lang/ReflectUtil.java index 349be257..615672ab 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/lang/ReflectUtil.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/lang/ReflectUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.lang; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/lang/StringUtil.java b/common/common-lang/src/main/java/com/twelvemonkeys/lang/StringUtil.java index 1d244b72..5b546646 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/lang/StringUtil.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/lang/StringUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.lang; @@ -31,21 +33,21 @@ package com.twelvemonkeys.lang; import com.twelvemonkeys.util.StringTokenIterator; import java.awt.*; +import java.io.UnsupportedEncodingException; import java.lang.reflect.Array; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.nio.charset.UnsupportedCharsetException; import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.ArrayList; -import java.util.regex.PatternSyntaxException; import java.util.regex.Pattern; -import java.io.UnsupportedEncodingException; -import java.nio.charset.UnsupportedCharsetException; +import java.util.regex.PatternSyntaxException; /** * A utility class with some useful string manipulation methods. diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/lang/SystemUtil.java b/common/common-lang/src/main/java/com/twelvemonkeys/lang/SystemUtil.java index 9e79347e..6a6069a0 100644 --- a/common/common-lang/src/main/java/com/twelvemonkeys/lang/SystemUtil.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/lang/SystemUtil.java @@ -4,32 +4,32 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.lang; -//import com.twelvemonkeys.util.XMLProperties; - import java.io.*; import java.lang.reflect.Array; import java.lang.reflect.Field; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/lang/Validate.java b/common/common-lang/src/main/java/com/twelvemonkeys/lang/Validate.java index 16897f31..450081d4 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/lang/Validate.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/lang/Validate.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.lang; import java.util.Arrays; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/lang/package_info.java b/common/common-lang/src/main/java/com/twelvemonkeys/lang/package_info.java index ced3971b..92c3c925 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/lang/package_info.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/lang/package_info.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** *Contains utils/helpers for classes in {@code java.lang}. */ diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/AbstractDecoratedMap.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/AbstractDecoratedMap.java index ab4e4fb7..4d551e1f 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/AbstractDecoratedMap.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/AbstractDecoratedMap.java @@ -4,32 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; -import java.util.*; import java.io.Serializable; +import java.util.*; /** * AbstractDecoratedMap diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/AbstractTokenIterator.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/AbstractTokenIterator.java index 90e56161..aaebbe4e 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/AbstractTokenIterator.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/AbstractTokenIterator.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/BeanMap.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/BeanMap.java index 8f830c00..906c3391 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/BeanMap.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/BeanMap.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; @@ -32,10 +34,10 @@ import java.beans.IndexedPropertyDescriptor; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; +import java.io.Serializable; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.*; -import java.io.Serializable; /** * A {@code Map} adapter for a Java Bean. diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/CollectionUtil.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/CollectionUtil.java index 63e205ba..3b492a61 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/CollectionUtil.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/CollectionUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/DuplicateHandler.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/DuplicateHandler.java index 626eefb4..f3f56d28 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/DuplicateHandler.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/DuplicateHandler.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/ExpiringMap.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/ExpiringMap.java index 5e2f7490..affa1a23 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/ExpiringMap.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/ExpiringMap.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/FilterIterator.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/FilterIterator.java index 0e5e8586..7ca3df1a 100644 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/FilterIterator.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/FilterIterator.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/IgnoreCaseMap.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/IgnoreCaseMap.java index 4258d723..b81d36fa 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/IgnoreCaseMap.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/IgnoreCaseMap.java @@ -4,33 +4,35 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; +import java.io.Serializable; import java.util.Iterator; import java.util.Map; -import java.io.Serializable; /** * A {@code Map} decorator that makes the mappings in the backing map diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/LRUHashMap.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/LRUHashMap.java index eee68eeb..53bf7610 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/LRUHashMap.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/LRUHashMap.java @@ -4,33 +4,35 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; -import java.util.Map; -import java.util.LinkedHashMap; import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; /** * Map implementation with size limit, that keeps its entries in LRU diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/LRUMap.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/LRUMap.java index 040ed014..28a01d30 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/LRUMap.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/LRUMap.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/LinkedMap.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/LinkedMap.java index e9a071a0..2cb7df05 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/LinkedMap.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/LinkedMap.java @@ -4,32 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; -import java.util.*; import java.io.Serializable; +import java.util.*; /** * Generic map and linked list implementation of the {@code Map} interface, diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/LinkedSet.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/LinkedSet.java index 8a56b367..18d6385f 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/LinkedSet.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/LinkedSet.java @@ -4,32 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; -import java.util.*; import java.io.Serializable; +import java.util.*; /** * Generic map and linked list implementation of the {@code Set} interface, diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/NullMap.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/NullMap.java index eb538915..8eaec564 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/NullMap.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/NullMap.java @@ -4,32 +4,37 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; -import java.util.*; import java.io.Serializable; +import java.util.Collection; +import java.util.Collections; +import java.util.Map; +import java.util.Set; /** * An (immutable) empty {@link Map}, that supports all {@code Map} operations diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/StringTokenIterator.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/StringTokenIterator.java index dc95c5d6..9ee89556 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/StringTokenIterator.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/StringTokenIterator.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/Time.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/Time.java index c7be02a7..9c01fb18 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/Time.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/Time.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/TimeFormat.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/TimeFormat.java index 68fb1d33..ac725c31 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/TimeFormat.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/TimeFormat.java @@ -4,29 +4,30 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - package com.twelvemonkeys.util; import com.twelvemonkeys.lang.StringUtil; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/TimeoutMap.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/TimeoutMap.java index 800ce922..2b259dde 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/TimeoutMap.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/TimeoutMap.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/TokenIterator.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/TokenIterator.java index 7fa70b7a..45f2f7af 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/TokenIterator.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/TokenIterator.java @@ -4,32 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; -import java.util.Iterator; import java.util.Enumeration; +import java.util.Iterator; /** * TokenIterator, Iterator-based replacement for StringTokenizer. diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/Visitor.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/Visitor.java index e62026c6..cb3311e8 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/Visitor.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/Visitor.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.util; /** diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/WeakWeakMap.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/WeakWeakMap.java index d9737e92..9a1cc517 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/WeakWeakMap.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/WeakWeakMap.java @@ -4,32 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; -import java.util.*; import java.lang.ref.WeakReference; +import java.util.*; /** * Special-purpose map implementation with weak keys and weak values. This is diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/ConversionException.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/ConversionException.java index 06bf09ab..675a6e67 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/ConversionException.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/ConversionException.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.convert; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/Converter.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/Converter.java index 106b6164..4da27644 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/Converter.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/Converter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.convert; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/ConverterImpl.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/ConverterImpl.java index 321c6ee1..58a0eb6b 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/ConverterImpl.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/ConverterImpl.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.convert; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/DateConverter.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/DateConverter.java index 9183fbb7..71e7ff77 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/DateConverter.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/DateConverter.java @@ -4,35 +4,40 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.convert; -import com.twelvemonkeys.lang.*; +import com.twelvemonkeys.lang.BeanUtil; +import com.twelvemonkeys.lang.StringUtil; -import java.util.*; -import java.text.*; import java.lang.reflect.InvocationTargetException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; /** * Converts strings to dates and back. diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/DefaultConverter.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/DefaultConverter.java index 59236d7c..6ae3544b 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/DefaultConverter.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/DefaultConverter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.convert; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/MissingTypeException.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/MissingTypeException.java index e9b2da3f..cdd10c4c 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/MissingTypeException.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/MissingTypeException.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.convert; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/NoAvailableConverterException.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/NoAvailableConverterException.java index 42631321..ebe2e73e 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/NoAvailableConverterException.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/NoAvailableConverterException.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.convert; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/NumberConverter.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/NumberConverter.java index 13c7e322..2d9ae304 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/NumberConverter.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/NumberConverter.java @@ -4,36 +4,42 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.convert; -import com.twelvemonkeys.lang.*; +import com.twelvemonkeys.lang.BeanUtil; +import com.twelvemonkeys.lang.StringUtil; import com.twelvemonkeys.util.LRUHashMap; -import java.util.*; -import java.math.*; +import java.math.BigDecimal; +import java.math.BigInteger; import java.text.*; +import java.util.Arrays; +import java.util.Locale; +import java.util.Map; /** * Converts strings to numbers and back. diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/PropertyConverter.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/PropertyConverter.java index ae1bf51b..1822368b 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/PropertyConverter.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/PropertyConverter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.convert; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/TimeConverter.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/TimeConverter.java index 0a6fd5a6..d1f7234e 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/TimeConverter.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/TimeConverter.java @@ -4,31 +4,33 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.convert; -import com.twelvemonkeys.lang.*; +import com.twelvemonkeys.lang.StringUtil; import com.twelvemonkeys.util.Time; import com.twelvemonkeys.util.TimeFormat; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/TypeMismathException.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/TypeMismathException.java index acc8c0f6..9164a2f5 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/TypeMismathException.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/TypeMismathException.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.convert; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/pacakge_info.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/pacakge_info.java index faed2215..26dcb8b8 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/pacakge_info.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/convert/pacakge_info.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** * Provides a general purpose conversion framework, for conversion of values * between string representations and objects. diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/package_info.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/package_info.java index 9cc218ca..4ede179d 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/package_info.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/package_info.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** * Provides miscellaneous utility classes. */ diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/regex/RegExTokenIterator.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/regex/RegExTokenIterator.java index ce1219f9..17534e67 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/regex/RegExTokenIterator.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/regex/RegExTokenIterator.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.regex; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/regex/WildcardStringParser.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/regex/WildcardStringParser.java index 5a40f96e..aa7f2e0c 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/regex/WildcardStringParser.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/regex/WildcardStringParser.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.regex; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/regex/package_info.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/regex/package_info.java index 10302814..ca928070 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/regex/package_info.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/regex/package_info.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** * Provides functionality for regular expressions. */ diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/service/RegisterableService.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/service/RegisterableService.java index 1c666ef2..e3c05e7d 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/service/RegisterableService.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/service/RegisterableService.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.service; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/service/ServiceConfigurationError.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/service/ServiceConfigurationError.java index 0aa281f0..2e75c310 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/service/ServiceConfigurationError.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/service/ServiceConfigurationError.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.service; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/service/ServiceRegistry.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/service/ServiceRegistry.java index c375d955..5aa059c1 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/service/ServiceRegistry.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/service/ServiceRegistry.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.service; diff --git a/common/common-lang/src/main/java/com/twelvemonkeys/util/service/package_info.java b/common/common-lang/src/main/java/com/twelvemonkeys/util/service/package_info.java index ca790a2c..c35bc12b 100755 --- a/common/common-lang/src/main/java/com/twelvemonkeys/util/service/package_info.java +++ b/common/common-lang/src/main/java/com/twelvemonkeys/util/service/package_info.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** * Provides a service provider registry. *

    diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/lang/BeanUtilTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/lang/BeanUtilTest.java similarity index 77% rename from common/common-lang/src/test/java/com/twelvemonkeys/lang/BeanUtilTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/lang/BeanUtilTest.java index 59e69b97..b256a68d 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/lang/BeanUtilTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/lang/BeanUtilTest.java @@ -1,235 +1,274 @@ -package com.twelvemonkeys.lang; - -import junit.framework.TestCase; - -import java.io.Serializable; -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Map; - -/** - * BeanUtilTestCase - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/lang/BeanUtilTestCase.java#1 $ - */ -public class BeanUtilTestCase extends TestCase { - - public void testConfigureNoMehtod() { - TestBean bean = new TestBean(); - - Map map = new HashMap(); - - map.put("noSuchMethod", "jaffa"); - - try { - BeanUtil.configure(bean, map); - } - catch (InvocationTargetException e) { - fail(e.getMessage()); - } - } - - public void testConfigureNoMethodArgs() { - TestBean bean = new TestBean(); - - Map map = new HashMap(); - - map.put("doubleValue", new Object()); // Should not be able to convert this - - try { - BeanUtil.configure(bean, map); - } - catch (InvocationTargetException e) { - fail(e.getMessage()); - } - - assertNull(bean.getDoubleValue()); - - } - - public void testConfigureNullValue() { - TestBean bean = new TestBean(); - - Map map = new HashMap(); - - map.put("stringValue", null); - - try { - BeanUtil.configure(bean, map); - } - catch (InvocationTargetException e) { - fail(e.getMessage()); - } - - assertNull(bean.getStringValue()); - } - - public void testConfigureSimple() { - TestBean bean = new TestBean(); - - Map map = new HashMap(); - - map.put("stringValue", "one"); - map.put("intValue", 2); - map.put("doubleValue", .3); - - try { - BeanUtil.configure(bean, map); - } - catch (InvocationTargetException e) { - fail(e.getMessage()); - } - - assertEquals("one", bean.getStringValue()); - assertEquals(2, bean.getIntValue()); - assertEquals(.3, bean.getDoubleValue()); - } - - public void testConfigureConvert() { - TestBean bean = new TestBean(); - - Map map = new HashMap(); - - map.put("stringValue", 1); - map.put("intValue", "2"); - map.put("doubleValue", ".3"); - - try { - BeanUtil.configure(bean, map); - } - catch (InvocationTargetException e) { - fail(e.getMessage()); - } - - assertEquals("1", bean.getStringValue()); - assertEquals(2, bean.getIntValue()); - assertEquals(0.3, bean.getDoubleValue()); - } - - public void testConfigureAmbiguous1() { - TestBean bean = new TestBean(); - - Map map = new HashMap(); - - String value = "one"; - map.put("ambiguous", value); - - try { - BeanUtil.configure(bean, map); - } - catch (InvocationTargetException e) { - fail(e.getMessage()); - } - - assertNotNull(bean.getAmbiguous()); - assertEquals("String converted rather than invoking setAmbiguous(String), ordering not predictable", - "one", bean.getAmbiguous()); - assertSame("String converted rather than invoking setAmbiguous(String), ordering not predictable", - value, bean.getAmbiguous()); - } - - public void testConfigureAmbiguous2() { - TestBean bean = new TestBean(); - - Map map = new HashMap(); - - Integer value = 2; - map.put("ambiguous", value); - - try { - BeanUtil.configure(bean, map); - } - catch (InvocationTargetException e) { - fail(e.getMessage()); - } - - assertNotNull(bean.getAmbiguous()); - assertEquals("Integer converted rather than invoking setAmbiguous(Integer), ordering not predictable", - 2, bean.getAmbiguous()); - assertSame("Integer converted rather than invoking setAmbiguous(Integer), ordering not predictable", - value, bean.getAmbiguous()); - } - - public void testConfigureAmbiguous3() { - TestBean bean = new TestBean(); - - Map map = new HashMap(); - - Double value = .3; - map.put("ambiguous", value); - - try { - BeanUtil.configure(bean, map); - } - catch (InvocationTargetException e) { - fail(e.getMessage()); - } - - assertNotNull(bean.getAmbiguous()); - assertEquals("Object converted rather than invoking setAmbiguous(Object), ordering not predictable", - value.getClass(), bean.getAmbiguous().getClass()); - assertSame("Object converted rather than invoking setAmbiguous(Object), ordering not predictable", - value, bean.getAmbiguous()); - } - - static class TestBean { - private String stringVal; - private int intVal; - private Double doubleVal; - - private Object ambiguous; - - public Double getDoubleValue() { - return doubleVal; - } - - public int getIntValue() { - return intVal; - } - - public String getStringValue() { - return stringVal; - } - - @SuppressWarnings("UnusedDeclaration") - public void setStringValue(String pString) { - stringVal = pString; - } - - @SuppressWarnings("UnusedDeclaration") - public void setIntValue(int pInt) { - intVal = pInt; - } - - @SuppressWarnings("UnusedDeclaration") - public void setDoubleValue(Double pDouble) { - doubleVal = pDouble; - } - - @SuppressWarnings("UnusedDeclaration") - public void setAmbiguous(String pString) { - ambiguous = pString; - } - - @SuppressWarnings("UnusedDeclaration") - public void setAmbiguous(Object pObject) { - ambiguous = pObject; - } - - @SuppressWarnings("UnusedDeclaration") - public void setAmbiguous(Integer pInteger) { - ambiguous = pInteger; - } - - @SuppressWarnings("UnusedDeclaration") - public void setAmbiguous(int pInt) { - ambiguous = (long) pInt; // Just to differentiate... - } - - public Object getAmbiguous() { - return ambiguous; - } - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.lang; + +import org.junit.Test; + +import java.io.Serializable; +import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.Assert.*; + +/** + * BeanUtilTestCase + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/lang/BeanUtilTestCase.java#1 $ + */ +public class BeanUtilTest { + + @Test + public void testConfigureNoMehtod() { + TestBean bean = new TestBean(); + + Map map = new HashMap(); + + map.put("noSuchMethod", "jaffa"); + + try { + BeanUtil.configure(bean, map); + } + catch (InvocationTargetException e) { + fail(e.getMessage()); + } + } + + @Test + public void testConfigureNoMethodArgs() { + TestBean bean = new TestBean(); + + Map map = new HashMap(); + + map.put("doubleValue", new Object()); // Should not be able to convert this + + try { + BeanUtil.configure(bean, map); + } + catch (InvocationTargetException e) { + fail(e.getMessage()); + } + + assertNull(bean.getDoubleValue()); + + } + + @Test + public void testConfigureNullValue() { + TestBean bean = new TestBean(); + + Map map = new HashMap(); + + map.put("stringValue", null); + + try { + BeanUtil.configure(bean, map); + } + catch (InvocationTargetException e) { + fail(e.getMessage()); + } + + assertNull(bean.getStringValue()); + } + + public void testConfigureSimple() { + TestBean bean = new TestBean(); + + Map map = new HashMap(); + + map.put("stringValue", "one"); + map.put("intValue", 2); + map.put("doubleValue", .3); + + try { + BeanUtil.configure(bean, map); + } + catch (InvocationTargetException e) { + fail(e.getMessage()); + } + + assertEquals("one", bean.getStringValue()); + assertEquals(2, bean.getIntValue()); + assertEquals(.3, bean.getDoubleValue(), 0); + } + + @Test + public void testConfigureConvert() { + TestBean bean = new TestBean(); + + Map map = new HashMap(); + + map.put("stringValue", 1); + map.put("intValue", "2"); + map.put("doubleValue", ".3"); + + try { + BeanUtil.configure(bean, map); + } + catch (InvocationTargetException e) { + fail(e.getMessage()); + } + + assertEquals("1", bean.getStringValue()); + assertEquals(2, bean.getIntValue()); + assertEquals(0.3, bean.getDoubleValue(), 0); + } + + @Test + public void testConfigureAmbiguous1() { + TestBean bean = new TestBean(); + + Map map = new HashMap(); + + String value = "one"; + map.put("ambiguous", value); + + try { + BeanUtil.configure(bean, map); + } + catch (InvocationTargetException e) { + fail(e.getMessage()); + } + + assertNotNull(bean.getAmbiguous()); + assertEquals("String converted rather than invoking setAmbiguous(String), ordering not predictable", + "one", bean.getAmbiguous()); + assertSame("String converted rather than invoking setAmbiguous(String), ordering not predictable", + value, bean.getAmbiguous()); + } + + @Test + public void testConfigureAmbiguous2() { + TestBean bean = new TestBean(); + + Map map = new HashMap(); + + Integer value = 2; + map.put("ambiguous", value); + + try { + BeanUtil.configure(bean, map); + } + catch (InvocationTargetException e) { + fail(e.getMessage()); + } + + assertNotNull(bean.getAmbiguous()); + assertEquals("Integer converted rather than invoking setAmbiguous(Integer), ordering not predictable", + 2, bean.getAmbiguous()); + assertSame("Integer converted rather than invoking setAmbiguous(Integer), ordering not predictable", + value, bean.getAmbiguous()); + } + + @Test + public void testConfigureAmbiguous3() { + TestBean bean = new TestBean(); + + Map map = new HashMap(); + + Double value = .3; + map.put("ambiguous", value); + + try { + BeanUtil.configure(bean, map); + } + catch (InvocationTargetException e) { + fail(e.getMessage()); + } + + assertNotNull(bean.getAmbiguous()); + assertEquals("Object converted rather than invoking setAmbiguous(Object), ordering not predictable", + value.getClass(), bean.getAmbiguous().getClass()); + assertSame("Object converted rather than invoking setAmbiguous(Object), ordering not predictable", + value, bean.getAmbiguous()); + } + + static class TestBean { + private String stringVal; + private int intVal; + private Double doubleVal; + + private Object ambiguous; + + public Double getDoubleValue() { + return doubleVal; + } + + public int getIntValue() { + return intVal; + } + + public String getStringValue() { + return stringVal; + } + + @SuppressWarnings("UnusedDeclaration") + public void setStringValue(String pString) { + stringVal = pString; + } + + @SuppressWarnings("UnusedDeclaration") + public void setIntValue(int pInt) { + intVal = pInt; + } + + @SuppressWarnings("UnusedDeclaration") + public void setDoubleValue(Double pDouble) { + doubleVal = pDouble; + } + + @SuppressWarnings("UnusedDeclaration") + public void setAmbiguous(String pString) { + ambiguous = pString; + } + + @SuppressWarnings("UnusedDeclaration") + public void setAmbiguous(Object pObject) { + ambiguous = pObject; + } + + @SuppressWarnings("UnusedDeclaration") + public void setAmbiguous(Integer pInteger) { + ambiguous = pInteger; + } + + @SuppressWarnings("UnusedDeclaration") + public void setAmbiguous(int pInt) { + ambiguous = (long) pInt; // Just to differentiate... + } + + public Object getAmbiguous() { + return ambiguous; + } + } +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/lang/DateUtilTest.java b/common/common-lang/src/test/java/com/twelvemonkeys/lang/DateUtilTest.java index 6f4959e1..0dde4b48 100644 --- a/common/common-lang/src/test/java/com/twelvemonkeys/lang/DateUtilTest.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/lang/DateUtilTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.lang; diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/lang/ObjectAbstractTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/lang/ObjectAbstractTest.java similarity index 86% rename from common/common-lang/src/test/java/com/twelvemonkeys/lang/ObjectAbstractTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/lang/ObjectAbstractTest.java index 6ed3f622..4b5397c7 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/lang/ObjectAbstractTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/lang/ObjectAbstractTest.java @@ -1,309 +1,339 @@ -package com.twelvemonkeys.lang; - -import org.junit.Test; - -import java.io.*; -import java.lang.reflect.Method; - -import static org.junit.Assert.*; - -/** - * AbstractObjectTestCase - *

    - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/lang/ObjectAbstractTestCase.java#1 $ - */ -public abstract class ObjectAbstractTestCase { - // TODO: See com.tm.util.ObjectAbstractTestCase - // TODO: The idea is that this should be some generic base-class that - // implements the basic object tests - - // TODO: Create Serializable test similar way - // TODO: Create Comparable test similar way - - /** - * Returns an instance of the class we are testing. - * Implement this method to return the object to test. - * - * @return the object to test - */ - protected abstract Object makeObject(); - - // TODO: Can we really do serious testing with just one object? - // TODO: How can we make sure we create equal or different objects?! - //protected abstract Object makeDifferentObject(Object pObject); - //protected abstract Object makeEqualObject(Object pObject); - - - @Test - public void testToString() { - assertNotNull(makeObject().toString()); - // TODO: What more can we test? - } - - // TODO: assert that either BOTH or NONE of equals/hashcode is overridden - @Test - public void testEqualsHashCode(){ - Object obj = makeObject(); - - Class cl = obj.getClass(); - if (isEqualsOverriden(cl)) { - assertTrue("Class " + cl.getName() + " implements equals but not hashCode", isHashCodeOverriden(cl)); - } - else if (isHashCodeOverriden(cl)) { - assertTrue("Class " + cl.getName() + " implements hashCode but not equals", isEqualsOverriden(cl)); - } - - } - - protected static boolean isEqualsOverriden(Class pClass) { - return getDeclaredMethod(pClass, "equals", new Class[]{Object.class}) != null; - } - - protected static boolean isHashCodeOverriden(Class pClass) { - return getDeclaredMethod(pClass, "hashCode", null) != null; - } - - private static Method getDeclaredMethod(Class pClass, String pName, Class[] pArameters) { - try { - return pClass.getDeclaredMethod(pName, pArameters); - } - catch (NoSuchMethodException ignore) { - return null; - } - } - - @Test - public void testObjectEqualsSelf() { - Object obj = makeObject(); - assertEquals("An Object should equal itself", obj, obj); - } - - @Test - public void testEqualsNull() { - Object obj = makeObject(); - // NOTE: Makes sure this doesn't throw NPE either - //noinspection ObjectEqualsNull - assertFalse("An object should never equal null", obj.equals(null)); - } - - @Test - public void testObjectHashCodeEqualsSelfHashCode() { - Object obj = makeObject(); - assertEquals("hashCode should be repeatable", obj.hashCode(), obj.hashCode()); - } - - @Test - public void testObjectHashCodeEqualsContract() { - Object obj1 = makeObject(); - if (obj1.equals(obj1)) { - assertEquals( - "[1] When two objects are equal, their hashCodes should be also.", - obj1.hashCode(), obj1.hashCode()); - } - // TODO: Make sure we create at least one equal object, and one different object - Object obj2 = makeObject(); - if (obj1.equals(obj2)) { - assertEquals( - "[2] When two objects are equal, their hashCodes should be also.", - obj1.hashCode(), obj2.hashCode()); - assertTrue( - "When obj1.equals(obj2) is true, then obj2.equals(obj1) should also be true", - obj2.equals(obj1)); - } - } - - /* - public void testFinalize() { - // TODO: Implement - } - */ - - //////////////////////////////////////////////////////////////////////////// - // Cloneable interface - @Test - public void testClone() throws Exception { - Object obj = makeObject(); - if (obj instanceof Cloneable) { - Class cl = obj.getClass(); - - Method clone = findMethod(cl, "clone"); - - // Disregard protected modifier - // NOTE: This will throw a SecurityException if a SecurityManager - // disallows access, but should not happen in a test context - if (!clone.isAccessible()) { - clone.setAccessible(true); - } - - Object cloned = clone.invoke(obj); - - assertNotNull("Cloned object should never be null", cloned); - - // TODO: This can only be asserted if equals() test is based on - // value equality, not reference (identity) equality - // Maybe it's possible to do a reflective introspection of - // the objects fields? - if (isHashCodeOverriden(cl)) { - assertEquals("Cloned object not equal", obj, cloned); - } - } - } - - private static Method findMethod(Class pClass, String pName) throws NoSuchMethodException { - if (pClass == null) { - throw new IllegalArgumentException("class == null"); - } - if (pName == null) { - throw new IllegalArgumentException("name == null"); - } - - Class cl = pClass; - - while (cl != null) { - try { - return cl.getDeclaredMethod(pName, new Class[0]); - } - catch (NoSuchMethodException e) { - } - catch (SecurityException e) { - } - - cl = cl.getSuperclass(); - } - - throw new NoSuchMethodException(pName + " in class " + pClass.getName()); - } - - /////////////////////////////////////////////////////////////////////////// - // Serializable interface - @Test - public void testSerializeDeserializeThenCompare() throws Exception { - Object obj = makeObject(); - if (obj instanceof Serializable) { - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - ObjectOutputStream out = new ObjectOutputStream(buffer); - try { - out.writeObject(obj); - } - finally { - out.close(); - } - - Object dest; - ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray())); - try { - dest = in.readObject(); - } - finally { - in.close(); - } - - // TODO: This can only be asserted if equals() test is based on - // value equality, not reference (identity) equality - // Maybe it's possible to do a reflective introspection of - // the objects fields? - if (isEqualsOverriden(obj.getClass())) { - assertEquals("obj != deserialize(serialize(obj))", obj, dest); - } - } - } - - /** - * Sanity check method, makes sure that any {@code Serializable} - * class can be serialized and de-serialized in memory, - * using the handy makeObject() method - * - * @throws java.io.IOException - * @throws ClassNotFoundException - */ - @Test - public void testSimpleSerialization() throws Exception { - Object o = makeObject(); - if (o instanceof Serializable) { - byte[] object = writeExternalFormToBytes((Serializable) o); - readExternalFormFromBytes(object); - } - } - - /** - * Write a Serializable or Externalizable object as - * a file at the given path. - * NOT USEFUL as part - * of a unit test; this is just a utility method - * for creating disk-based objects in CVS that can become - * the basis for compatibility tests using - * readExternalFormFromDisk(String path) - * - * @param o Object to serialize - * @param path path to write the serialized Object - * @exception java.io.IOException - */ - protected void writeExternalFormToDisk(Serializable o, String path) throws IOException { - FileOutputStream fileStream = new FileOutputStream(path); - writeExternalFormToStream(o, fileStream); - } - - /** - * Converts a Serializable or Externalizable object to - * bytes. Useful for in-memory tests of serialization - * - * @param o Object to convert to bytes - * @return serialized form of the Object - * @exception java.io.IOException - */ - protected byte[] writeExternalFormToBytes(Serializable o) throws IOException { - ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); - writeExternalFormToStream(o, byteStream); - return byteStream.toByteArray(); - } - - /** - * Reads a Serialized or Externalized Object from disk. - * Useful for creating compatibility tests between - * different CVS versions of the same class - * - * @param path path to the serialized Object - * @return the Object at the given path - * @exception java.io.IOException - * @exception ClassNotFoundException - */ - protected Object readExternalFormFromDisk(String path) throws IOException, ClassNotFoundException { - FileInputStream stream = new FileInputStream(path); - return readExternalFormFromStream(stream); - } - - /** - * Read a Serialized or Externalized Object from bytes. - * Useful for verifying serialization in memory. - * - * @param b byte array containing a serialized Object - * @return Object contained in the bytes - * @exception java.io.IOException - * @exception ClassNotFoundException - */ - protected Object readExternalFormFromBytes(byte[] b) throws IOException, ClassNotFoundException { - ByteArrayInputStream stream = new ByteArrayInputStream(b); - return readExternalFormFromStream(stream); - } - - // private implementation - //----------------------------------------------------------------------- - private Object readExternalFormFromStream(InputStream stream) throws IOException, ClassNotFoundException { - ObjectInputStream oStream = new ObjectInputStream(stream); - return oStream.readObject(); - } - - private void writeExternalFormToStream(Serializable o, OutputStream stream) throws IOException { - ObjectOutputStream oStream = new ObjectOutputStream(stream); - oStream.writeObject(o); - } - - public static final class SanityTestTestCase extends ObjectAbstractTestCase { - protected Object makeObject() { - return new Cloneable() {}; - } - } - -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.lang; + +import org.junit.Test; + +import java.io.*; +import java.lang.reflect.Method; + +import static org.junit.Assert.*; + +/** + * AbstractObjectTestCase + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/lang/ObjectAbstractTestCase.java#1 $ + */ +public abstract class ObjectAbstractTest { + // TODO: See com.tm.util.ObjectAbstractTestCase + // TODO: The idea is that this should be some generic base-class that + // implements the basic object tests + + // TODO: Create Serializable test similar way + // TODO: Create Comparable test similar way + + /** + * Returns an instance of the class we are testing. + * Implement this method to return the object to test. + * + * @return the object to test + */ + protected abstract Object makeObject(); + + // TODO: Can we really do serious testing with just one object? + // TODO: How can we make sure we create equal or different objects?! + //protected abstract Object makeDifferentObject(Object pObject); + //protected abstract Object makeEqualObject(Object pObject); + + + @Test + public void testToString() { + assertNotNull(makeObject().toString()); + // TODO: What more can we test? + } + + // TODO: assert that either BOTH or NONE of equals/hashcode is overridden + @Test + public void testEqualsHashCode(){ + Object obj = makeObject(); + + Class cl = obj.getClass(); + if (isEqualsOverriden(cl)) { + assertTrue("Class " + cl.getName() + " implements equals but not hashCode", isHashCodeOverriden(cl)); + } + else if (isHashCodeOverriden(cl)) { + assertTrue("Class " + cl.getName() + " implements hashCode but not equals", isEqualsOverriden(cl)); + } + + } + + protected static boolean isEqualsOverriden(Class pClass) { + return getDeclaredMethod(pClass, "equals", new Class[]{Object.class}) != null; + } + + protected static boolean isHashCodeOverriden(Class pClass) { + return getDeclaredMethod(pClass, "hashCode", null) != null; + } + + private static Method getDeclaredMethod(Class pClass, String pName, Class[] pArameters) { + try { + return pClass.getDeclaredMethod(pName, pArameters); + } + catch (NoSuchMethodException ignore) { + return null; + } + } + + @Test + public void testObjectEqualsSelf() { + Object obj = makeObject(); + assertEquals("An Object should equal itself", obj, obj); + } + + @Test + public void testEqualsNull() { + Object obj = makeObject(); + // NOTE: Makes sure this doesn't throw NPE either + //noinspection ObjectEqualsNull + assertFalse("An object should never equal null", obj.equals(null)); + } + + @Test + public void testObjectHashCodeEqualsSelfHashCode() { + Object obj = makeObject(); + assertEquals("hashCode should be repeatable", obj.hashCode(), obj.hashCode()); + } + + @Test + public void testObjectHashCodeEqualsContract() { + Object obj1 = makeObject(); + if (obj1.equals(obj1)) { + assertEquals( + "[1] When two objects are equal, their hashCodes should be also.", + obj1.hashCode(), obj1.hashCode()); + } + // TODO: Make sure we create at least one equal object, and one different object + Object obj2 = makeObject(); + if (obj1.equals(obj2)) { + assertEquals( + "[2] When two objects are equal, their hashCodes should be also.", + obj1.hashCode(), obj2.hashCode()); + assertTrue( + "When obj1.equals(obj2) is true, then obj2.equals(obj1) should also be true", + obj2.equals(obj1)); + } + } + + /* + public void testFinalize() { + // TODO: Implement + } + */ + + //////////////////////////////////////////////////////////////////////////// + // Cloneable interface + @Test + public void testClone() throws Exception { + Object obj = makeObject(); + if (obj instanceof Cloneable) { + Class cl = obj.getClass(); + + Method clone = findMethod(cl, "clone"); + + // Disregard protected modifier + // NOTE: This will throw a SecurityException if a SecurityManager + // disallows access, but should not happen in a test context + if (!clone.isAccessible()) { + clone.setAccessible(true); + } + + Object cloned = clone.invoke(obj); + + assertNotNull("Cloned object should never be null", cloned); + + // TODO: This can only be asserted if equals() test is based on + // value equality, not reference (identity) equality + // Maybe it's possible to do a reflective introspection of + // the objects fields? + if (isHashCodeOverriden(cl)) { + assertEquals("Cloned object not equal", obj, cloned); + } + } + } + + private static Method findMethod(Class pClass, String pName) throws NoSuchMethodException { + if (pClass == null) { + throw new IllegalArgumentException("class == null"); + } + if (pName == null) { + throw new IllegalArgumentException("name == null"); + } + + Class cl = pClass; + + while (cl != null) { + try { + return cl.getDeclaredMethod(pName, new Class[0]); + } + catch (NoSuchMethodException e) { + } + catch (SecurityException e) { + } + + cl = cl.getSuperclass(); + } + + throw new NoSuchMethodException(pName + " in class " + pClass.getName()); + } + + /////////////////////////////////////////////////////////////////////////// + // Serializable interface + @Test + public void testSerializeDeserializeThenCompare() throws Exception { + Object obj = makeObject(); + if (obj instanceof Serializable) { + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + ObjectOutputStream out = new ObjectOutputStream(buffer); + try { + out.writeObject(obj); + } + finally { + out.close(); + } + + Object dest; + ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray())); + try { + dest = in.readObject(); + } + finally { + in.close(); + } + + // TODO: This can only be asserted if equals() test is based on + // value equality, not reference (identity) equality + // Maybe it's possible to do a reflective introspection of + // the objects fields? + if (isEqualsOverriden(obj.getClass())) { + assertEquals("obj != deserialize(serialize(obj))", obj, dest); + } + } + } + + /** + * Sanity check method, makes sure that any {@code Serializable} + * class can be serialized and de-serialized in memory, + * using the handy makeObject() method + * + * @throws java.io.IOException + * @throws ClassNotFoundException + */ + @Test + public void testSimpleSerialization() throws Exception { + Object o = makeObject(); + if (o instanceof Serializable) { + byte[] object = writeExternalFormToBytes((Serializable) o); + readExternalFormFromBytes(object); + } + } + + /** + * Write a Serializable or Externalizable object as + * a file at the given path. + * NOT USEFUL as part + * of a unit test; this is just a utility method + * for creating disk-based objects in CVS that can become + * the basis for compatibility tests using + * readExternalFormFromDisk(String path) + * + * @param o Object to serialize + * @param path path to write the serialized Object + * @exception java.io.IOException + */ + protected void writeExternalFormToDisk(Serializable o, String path) throws IOException { + FileOutputStream fileStream = new FileOutputStream(path); + writeExternalFormToStream(o, fileStream); + } + + /** + * Converts a Serializable or Externalizable object to + * bytes. Useful for in-memory tests of serialization + * + * @param o Object to convert to bytes + * @return serialized form of the Object + * @exception java.io.IOException + */ + protected byte[] writeExternalFormToBytes(Serializable o) throws IOException { + ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); + writeExternalFormToStream(o, byteStream); + return byteStream.toByteArray(); + } + + /** + * Reads a Serialized or Externalized Object from disk. + * Useful for creating compatibility tests between + * different CVS versions of the same class + * + * @param path path to the serialized Object + * @return the Object at the given path + * @exception java.io.IOException + * @exception ClassNotFoundException + */ + protected Object readExternalFormFromDisk(String path) throws IOException, ClassNotFoundException { + FileInputStream stream = new FileInputStream(path); + return readExternalFormFromStream(stream); + } + + /** + * Read a Serialized or Externalized Object from bytes. + * Useful for verifying serialization in memory. + * + * @param b byte array containing a serialized Object + * @return Object contained in the bytes + * @exception java.io.IOException + * @exception ClassNotFoundException + */ + protected Object readExternalFormFromBytes(byte[] b) throws IOException, ClassNotFoundException { + ByteArrayInputStream stream = new ByteArrayInputStream(b); + return readExternalFormFromStream(stream); + } + + // private implementation + //----------------------------------------------------------------------- + private Object readExternalFormFromStream(InputStream stream) throws IOException, ClassNotFoundException { + ObjectInputStream oStream = new ObjectInputStream(stream); + return oStream.readObject(); + } + + private void writeExternalFormToStream(Serializable o, OutputStream stream) throws IOException { + ObjectOutputStream oStream = new ObjectOutputStream(stream); + oStream.writeObject(o); + } + + public static final class SanityTestTest extends ObjectAbstractTest { + protected Object makeObject() { + return new Cloneable() {}; + } + } + +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/lang/PlatformTest.java b/common/common-lang/src/test/java/com/twelvemonkeys/lang/PlatformTest.java index ed1aa5e7..724cef40 100644 --- a/common/common-lang/src/test/java/com/twelvemonkeys/lang/PlatformTest.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/lang/PlatformTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.lang; @@ -33,7 +35,8 @@ import org.junit.Test; import java.util.Properties; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; /** * PlatformTest diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/lang/StringUtilTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/lang/StringUtilTest.java similarity index 95% rename from common/common-lang/src/test/java/com/twelvemonkeys/lang/StringUtilTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/lang/StringUtilTest.java index c889f559..5837ebd8 100644 --- a/common/common-lang/src/test/java/com/twelvemonkeys/lang/StringUtilTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/lang/StringUtilTest.java @@ -1,858 +1,947 @@ - -package com.twelvemonkeys.lang; - -import junit.framework.TestCase; - -import java.awt.*; -import java.util.Date; -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.Locale; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.sql.Timestamp; - -/** - * StringUtilTestCase - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/lang/StringUtilTestCase.java#1 $ - * - */ -public class StringUtilTestCase extends TestCase { - final static Object TEST_OBJECT = new Object(); - final static Integer TEST_INTEGER = 42; - final static String TEST_STRING = "TheQuickBrownFox"; // No WS! - final static String TEST_SUB_STRING = TEST_STRING.substring(2, 5); - final static String TEST_DELIM_STRING = "one,two, three\n four\tfive six"; - final static String[] STRING_ARRAY = {"one", "two", "three", "four", "five", "six"}; - final static String TEST_INT_DELIM_STRING = "1,2, 3\n 4\t5 6"; - final static int[] INT_ARRAY = {1, 2, 3, 4, 5, 6}; - final static String TEST_DOUBLE_DELIM_STRING = "1.4,2.1, 3\n .4\t-5 6e5"; - final static double[] DOUBLE_ARRAY = {1.4, 2.1, 3, .4, -5, 6e5}; - final static String EMPTY_STRING = ""; - final static String WHITESPACE_STRING = " \t \r \n "; - - public void testValueOfObject() { - - assertNotNull(StringUtil.valueOf(TEST_OBJECT)); - assertEquals(StringUtil.valueOf(TEST_OBJECT), TEST_OBJECT.toString()); - assertEquals(StringUtil.valueOf(TEST_INTEGER), TEST_INTEGER.toString()); - assertEquals(StringUtil.valueOf(TEST_STRING), TEST_STRING); - assertSame(StringUtil.valueOf(TEST_STRING), TEST_STRING); - - assertNull(StringUtil.valueOf(null)); - } - - public void testToUpperCase() { - String str = StringUtil.toUpperCase(TEST_STRING); - assertNotNull(str); - assertEquals(TEST_STRING.toUpperCase(), str); - - str = StringUtil.toUpperCase(null); - assertNull(str); - } - - public void testToLowerCase() { - String str = StringUtil.toLowerCase(TEST_STRING); - assertNotNull(str); - assertEquals(TEST_STRING.toLowerCase(), str); - - str = StringUtil.toLowerCase(null); - assertNull(str); - } - - public void testIsEmpty() { - assertTrue(StringUtil.isEmpty((String) null)); - assertTrue(StringUtil.isEmpty(EMPTY_STRING)); - assertTrue(StringUtil.isEmpty(WHITESPACE_STRING)); - assertFalse(StringUtil.isEmpty(TEST_STRING)); - } - - public void testIsEmptyArray() { - assertTrue(StringUtil.isEmpty((String[]) null)); - assertTrue(StringUtil.isEmpty(new String[]{EMPTY_STRING})); - assertTrue(StringUtil.isEmpty(new String[]{EMPTY_STRING, WHITESPACE_STRING})); - assertFalse(StringUtil.isEmpty(new String[]{EMPTY_STRING, TEST_STRING})); - assertFalse(StringUtil.isEmpty(new String[]{WHITESPACE_STRING, TEST_STRING})); - } - - public void testContains() { - assertTrue(StringUtil.contains(TEST_STRING, TEST_STRING)); - assertTrue(StringUtil.contains(TEST_STRING, TEST_SUB_STRING)); - assertTrue(StringUtil.contains(TEST_STRING, EMPTY_STRING)); - assertFalse(StringUtil.contains(TEST_STRING, WHITESPACE_STRING)); - assertFalse(StringUtil.contains(TEST_SUB_STRING, TEST_STRING)); - assertFalse(StringUtil.contains(EMPTY_STRING, TEST_STRING)); - assertFalse(StringUtil.contains(WHITESPACE_STRING, TEST_STRING)); - assertFalse(StringUtil.contains(null, TEST_STRING)); - assertFalse(StringUtil.contains(null, null)); - } - - public void testContainsIgnoreCase() { - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, TEST_STRING)); - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING)); - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING)); - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase())); - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, TEST_SUB_STRING)); - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING)); - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING)); - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase())); - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, EMPTY_STRING)); - assertFalse(StringUtil.containsIgnoreCase(TEST_STRING, WHITESPACE_STRING)); - assertFalse(StringUtil.containsIgnoreCase(TEST_SUB_STRING, TEST_STRING)); - assertFalse(StringUtil.containsIgnoreCase(EMPTY_STRING, TEST_STRING)); - assertFalse(StringUtil.containsIgnoreCase(WHITESPACE_STRING, TEST_STRING)); - assertFalse(StringUtil.containsIgnoreCase(null, TEST_STRING)); - assertFalse(StringUtil.containsIgnoreCase(null, null)); - } - - public void testContainsChar() { - for (int i = 0; i < TEST_STRING.length(); i++) { - assertTrue(StringUtil.contains(TEST_STRING, TEST_STRING.charAt(i))); - assertFalse(StringUtil.contains(EMPTY_STRING, TEST_STRING.charAt(i))); - assertFalse(StringUtil.contains(WHITESPACE_STRING, TEST_STRING.charAt(i))); - assertFalse(StringUtil.contains(null, TEST_STRING.charAt(i))); - } - for (int i = 0; i < TEST_SUB_STRING.length(); i++) { - assertTrue(StringUtil.contains(TEST_STRING, TEST_SUB_STRING.charAt(i))); - } - for (int i = 0; i < WHITESPACE_STRING.length(); i++) { - assertFalse(StringUtil.contains(TEST_STRING, WHITESPACE_STRING.charAt(i))); - } - - // Test all alpha-chars - for (int i = 'a'; i < 'z'; i++) { - if (TEST_STRING.indexOf(i) < 0) { - assertFalse(TEST_STRING + " seems to contain '" + (char) i + "', at index " + TEST_STRING.indexOf(i), StringUtil.contains(TEST_STRING, i)); - } - else { - assertTrue(TEST_STRING + " seems to not contain '" + (char) i + "', at index " + TEST_STRING.indexOf(i), StringUtil.contains(TEST_STRING, i)); - } - } - } - - public void testContainsIgnoreCaseChar() { - // Must contain all chars in string - for (int i = 0; i < TEST_STRING.length(); i++) { - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, TEST_STRING.charAt(i))); - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.charAt(i))); - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.charAt(i))); - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, Character.toUpperCase(TEST_STRING.charAt(i)))); - assertFalse(StringUtil.containsIgnoreCase(EMPTY_STRING, TEST_STRING.charAt(i))); - assertFalse(StringUtil.containsIgnoreCase(WHITESPACE_STRING, TEST_STRING.charAt(i))); - assertFalse(StringUtil.containsIgnoreCase(null, TEST_STRING.charAt(i))); - } - for (int i = 0; i < TEST_SUB_STRING.length(); i++) { - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, TEST_SUB_STRING.charAt(i))); - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING.charAt(i))); - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING.charAt(i))); - assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase().charAt(i))); - } - - for (int i = 0; i < WHITESPACE_STRING.length(); i++) { - assertFalse(StringUtil.containsIgnoreCase(TEST_STRING, WHITESPACE_STRING.charAt(i))); - } - - // Test all alpha-chars - for (int i = 'a'; i < 'z'; i++) { - if ((TEST_STRING.indexOf(i) < 0) && (TEST_STRING.indexOf(Character.toUpperCase((char) i)) < 0)) { - assertFalse(TEST_STRING + " seems to contain '" + (char) i + "', at index " + Math.max(TEST_STRING.indexOf(i), TEST_STRING.indexOf(Character.toUpperCase((char) i))), StringUtil.containsIgnoreCase(TEST_STRING, i)); - } - else { - assertTrue(TEST_STRING + " seems to not contain '" + (char) i + "', at index " + TEST_STRING.indexOf(i), StringUtil.containsIgnoreCase(TEST_STRING, i)); - } - } - } - - public void testIndexOfIgnoreCase() { - assertEquals(0, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING)); - assertEquals(0, StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING)); - assertEquals(0, StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING)); - assertEquals(0, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase())); - assertEquals(0, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase())); - - for (int i = 1; i < TEST_STRING.length(); i++) { - assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.substring(i))); - assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.substring(i))); - assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.substring(i))); - assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase().substring(i))); - assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase().substring(i))); - } - - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING)); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING)); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING)); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase())); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toLowerCase())); - - for (int i = 1; i < TEST_STRING.length(); i++) { - assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING.substring(i), TEST_STRING)); - assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING.substring(i), TEST_STRING)); - } - - assertEquals(-1, StringUtil.indexOfIgnoreCase(null, TEST_STRING)); - assertEquals(-1, StringUtil.indexOfIgnoreCase(null, null)); - } - - public void testIndexOfIgnoreCasePos() { - assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING, 1)); - assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING, 2)); - assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING, 3)); - assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase(), 4)); - assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase(), 5)); - - for (int i = 1; i < TEST_STRING.length(); i++) { - assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.substring(i), i - 1)); - assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.substring(i), i - 1)); - assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.substring(i), i - 1)); - assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase().substring(i), i - 1)); - assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase().substring(i), i - 1)); - } - - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING, 1)); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING, 1)); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING, 2)); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase(), 1)); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toLowerCase(), 2)); - - assertEquals(-1, StringUtil.indexOfIgnoreCase(null, TEST_STRING, 234)); - assertEquals(-1, StringUtil.indexOfIgnoreCase(null, null, -45)); - } - - public void testLastIndexOfIgnoreCase() { - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING)); - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING)); - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING)); - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase())); - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase())); - - for (int i = 1; i < TEST_STRING.length(); i++) { - assertEquals(i, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.substring(i))); - assertEquals(i, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.substring(i))); - assertEquals(i, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.substring(i))); - assertEquals(i, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase().substring(i))); - assertEquals(i, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase().substring(i))); - } - - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING)); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING)); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING)); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase())); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toLowerCase())); - - for (int i = 1; i < TEST_STRING.length(); i++) { - assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.substring(i), TEST_STRING)); - assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.substring(i), TEST_STRING)); - } - - assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(null, TEST_STRING)); - assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(null, null)); - - } - - public void testLastIndexOfIgnoreCasePos() { - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING, 1)); - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING, 2)); - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING, 3)); - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase(), 4)); - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase(), 5)); - - for (int i = 1; i < TEST_STRING.length(); i++) { - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.substring(0, i), i - 1)); - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.substring(0, i), i - 1)); - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.substring(0, i), i - 1)); - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase().substring(0, i), i - 1)); - assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase().substring(0, i), i - 1)); - } - - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING, TEST_SUB_STRING.length() + 3)); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING, TEST_SUB_STRING.length() + 3)); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING, TEST_SUB_STRING.length() + 4)); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase(), TEST_SUB_STRING.length() + 3)); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toLowerCase(), TEST_SUB_STRING.length() + 4)); - - assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(null, TEST_STRING, 234)); - assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(null, null, -45)); - - } - - public void testIndexOfIgnoreCaseChar() { - // Must contain all chars in string - for (int i = 0; i < TEST_STRING.length(); i++) { - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.charAt(i))); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.charAt(i))); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.charAt(i))); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, Character.toUpperCase(TEST_STRING.charAt(i)))); - assertEquals(-1, StringUtil.indexOfIgnoreCase(EMPTY_STRING, TEST_STRING.charAt(i))); - assertEquals(-1, StringUtil.indexOfIgnoreCase(WHITESPACE_STRING, TEST_STRING.charAt(i))); - assertEquals(-1, StringUtil.indexOfIgnoreCase(null, TEST_STRING.charAt(i))); - } - - for (int i = 0; i < TEST_SUB_STRING.length(); i++) { - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.charAt(i))); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING.charAt(i))); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING.charAt(i))); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase().charAt(i))); - } - - for (int i = 0; i < WHITESPACE_STRING.length(); i++) { - assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING, WHITESPACE_STRING.charAt(i))); - } - - // Test all alpha-chars - for (int i = 'a'; i < 'z'; i++) { - if ((TEST_STRING.indexOf(i) < 0) && (TEST_STRING.indexOf(Character.toUpperCase((char) i)) < 0)) { - assertEquals(TEST_STRING + " seems to contain '" + (char) i + "', at index " + Math.max(TEST_STRING.indexOf(i), TEST_STRING.indexOf(Character.toUpperCase((char) i))), -1, StringUtil.indexOfIgnoreCase(TEST_STRING, i)); - } - else { - assertTrue(TEST_STRING + " seems to not contain '" + (char) i + "', at index " + TEST_STRING.indexOf(i), 0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, i)); - } - } - } - - public void testIndexOfIgnoreCaseCharPos() { - // Must contain all chars in string - for (int i = 0; i < TEST_STRING.length(); i++) { - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.charAt(i), i)); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.charAt(i), i)); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.charAt(i), i)); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, Character.toUpperCase(TEST_STRING.charAt(i)), i)); - assertEquals(-1, StringUtil.indexOfIgnoreCase(EMPTY_STRING, TEST_STRING.charAt(i), i)); - assertEquals(-1, StringUtil.indexOfIgnoreCase(WHITESPACE_STRING, TEST_STRING.charAt(i), i)); - assertEquals(-1, StringUtil.indexOfIgnoreCase(null, TEST_STRING.charAt(i), i)); - } - - for (int i = 0; i < TEST_SUB_STRING.length(); i++) { - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.charAt(i), i)); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING.charAt(i), i)); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING.charAt(i), i)); - assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase().charAt(i), i)); - } - - for (int i = 0; i < WHITESPACE_STRING.length(); i++) { - assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING, WHITESPACE_STRING.charAt(i), i)); - } - - // Test all alpha-chars - for (int i = 'a'; i < 'z'; i++) { - if ((TEST_STRING.indexOf(i) < 0) && (TEST_STRING.indexOf(Character.toUpperCase((char) i)) < 0)) { - assertEquals(TEST_STRING + " seems to contain '" + (char) i + "', at index " + Math.max(TEST_STRING.indexOf(i), TEST_STRING.indexOf(Character.toUpperCase((char) i))), -1, StringUtil.indexOfIgnoreCase(TEST_STRING, i, 0)); - } - else { - assertTrue(TEST_STRING + " seems to not contain '" + (char) i + "', at index " + TEST_STRING.indexOf(i), 0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, i, 0)); - } - } - } - - public void testLastIndexOfIgnoreCaseChar() { - // Must contain all chars in string - for (int i = 0; i < TEST_STRING.length(); i++) { - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.charAt(i))); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.charAt(i))); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.charAt(i))); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, Character.toUpperCase(TEST_STRING.charAt(i)))); - assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(EMPTY_STRING, TEST_STRING.charAt(i))); - assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(WHITESPACE_STRING, TEST_STRING.charAt(i))); - assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(null, TEST_STRING.charAt(i))); - } - - for (int i = 0; i < TEST_SUB_STRING.length(); i++) { - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.charAt(i))); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING.charAt(i))); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING.charAt(i))); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase().charAt(i))); - } - - for (int i = 0; i < WHITESPACE_STRING.length(); i++) { - assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, WHITESPACE_STRING.charAt(i))); - } - - // Test all alpha-chars - for (int i = 'a'; i < 'z'; i++) { - if ((TEST_STRING.indexOf(i) < 0) && (TEST_STRING.indexOf(Character.toUpperCase((char) i)) < 0)) { - assertEquals(TEST_STRING + " seems to contain '" + (char) i + "', at index " + Math.max(TEST_STRING.indexOf(i), TEST_STRING.indexOf(Character.toUpperCase((char) i))), -1, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, i)); - } - else { - assertTrue(TEST_STRING + " seems to not contain '" + (char) i + "', at index " + TEST_STRING.indexOf(i), 0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, i)); - } - } - } - - public void testLastIndexOfIgnoreCaseCharPos() { - // Must contain all chars in string - for (int i = 0; i < TEST_STRING.length(); i++) { - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.charAt(i), i)); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.charAt(i), i)); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.charAt(i), i)); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, Character.toUpperCase(TEST_STRING.charAt(i)), i)); - assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(EMPTY_STRING, TEST_STRING.charAt(i), i)); - assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(WHITESPACE_STRING, TEST_STRING.charAt(i), i)); - assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(null, TEST_STRING.charAt(i), i)); - } - - for (int i = 0; i < TEST_SUB_STRING.length(); i++) { - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.charAt(i), TEST_STRING.length())); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING.charAt(i), TEST_STRING.length())); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING.charAt(i), TEST_STRING.length())); - assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase().charAt(i), TEST_STRING.length())); - } - - for (int i = 0; i < WHITESPACE_STRING.length(); i++) { - assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, WHITESPACE_STRING.charAt(i), TEST_STRING.length())); - } - - // Test all alpha-chars - for (int i = 'a'; i < 'z'; i++) { - if ((TEST_STRING.indexOf(i) < 0) && (TEST_STRING.indexOf(Character.toUpperCase((char) i)) < 0)) { - assertEquals(TEST_STRING + " seems to contain '" + (char) i + "', at index " + Math.max(TEST_STRING.indexOf(i), TEST_STRING.indexOf(Character.toUpperCase((char) i))), -1, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, i, TEST_STRING.length())); - } - else { - assertTrue(TEST_STRING + " seems to not contain '" + (char) i + "', at index " + TEST_STRING.indexOf(i), 0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, i, TEST_STRING.length())); - } - } - } - - public void testLtrim() { - assertEquals(TEST_STRING, StringUtil.ltrim(TEST_STRING)); - assertEquals(TEST_STRING, StringUtil.ltrim(" " + TEST_STRING)); - assertEquals(TEST_STRING, StringUtil.ltrim(WHITESPACE_STRING + TEST_STRING)); - assertFalse(TEST_STRING.equals(StringUtil.ltrim(TEST_STRING + WHITESPACE_STRING))); - // TODO: Test is not complete - } - - public void testRtrim() { - assertEquals(TEST_STRING, StringUtil.rtrim(TEST_STRING)); - assertEquals(TEST_STRING, StringUtil.rtrim(TEST_STRING + " ")); - assertEquals(TEST_STRING, StringUtil.rtrim(TEST_STRING + WHITESPACE_STRING)); - assertFalse(TEST_STRING.equals(StringUtil.rtrim(WHITESPACE_STRING + TEST_STRING))); - // TODO: Test is not complete - } - - public void testReplace() { - assertEquals("", StringUtil.replace(TEST_STRING, TEST_STRING, "")); - assertEquals("", StringUtil.replace("", "", "")); - assertEquals("", StringUtil.replace("", "xyzzy", "xyzzy")); - assertEquals(TEST_STRING, StringUtil.replace(TEST_STRING, "", "xyzzy")); - assertEquals("aabbdd", StringUtil.replace("aabbccdd", "c", "")); - assertEquals("aabbccdd", StringUtil.replace("aabbdd", "bd", "bccd")); - // TODO: Test is not complete - } - - public void testReplaceIgnoreCase() { - assertEquals("", StringUtil.replaceIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase(), "")); - assertEquals("", StringUtil.replaceIgnoreCase("", "", "")); - assertEquals("", StringUtil.replaceIgnoreCase("", "xyzzy", "xyzzy")); - assertEquals(TEST_STRING, StringUtil.replaceIgnoreCase(TEST_STRING, "", "xyzzy")); - assertEquals("aabbdd", StringUtil.replaceIgnoreCase("aabbCCdd", "c", "")); - assertEquals("aabbdd", StringUtil.replaceIgnoreCase("aabbccdd", "C", "")); - assertEquals("aabbccdd", StringUtil.replaceIgnoreCase("aabbdd", "BD", "bccd")); - assertEquals("aabbccdd", StringUtil.replaceIgnoreCase("aabBDd", "bd", "bccd")); - // TODO: Test is not complete - } - - public void testCut() { - assertEquals(TEST_STRING, StringUtil.cut(TEST_STRING, TEST_STRING.length(), "..")); - assertEquals("This is a test..", StringUtil.cut("This is a test of how this works", 16, "..")); - assertEquals("This is a test", StringUtil.cut("This is a test of how this works", 16, null)); - assertEquals("This is a test", StringUtil.cut("This is a test of how this works", 16, "")); - // TODO: Test is not complete - } - - public void testCaptialize() { - assertNull(StringUtil.capitalize(null)); - assertEquals(TEST_STRING.toUpperCase(), StringUtil.capitalize(TEST_STRING.toUpperCase())); - assertTrue(StringUtil.capitalize("abc").charAt(0) == 'A'); - } - - public void testCaptializePos() { - assertNull(StringUtil.capitalize(null, 45)); - - // TODO: Should this throw IllegalArgument or StringIndexOutOfBonds? - assertEquals(TEST_STRING, StringUtil.capitalize(TEST_STRING, TEST_STRING.length() + 45)); - - for (int i = 0; i < TEST_STRING.length(); i++) { - assertTrue(Character.isUpperCase(StringUtil.capitalize(TEST_STRING, i).charAt(i))); - } - } - - public void testPad() { - assertEquals(TEST_STRING + "...", StringUtil.pad(TEST_STRING, TEST_STRING.length() + 3, "..", false)); - assertEquals(TEST_STRING, StringUtil.pad(TEST_STRING, 4, ".", false)); - assertEquals(TEST_STRING, StringUtil.pad(TEST_STRING, 4, ".", true)); - assertEquals("..." + TEST_STRING, StringUtil.pad(TEST_STRING, TEST_STRING.length() + 3, "..", true)); - } - - public void testToDate() { - long time = System.currentTimeMillis(); - Date now = new Date(time - time % 60000); // Default format seems to have no seconds.. - Date date = StringUtil.toDate(DateFormat.getInstance().format(now)); - assertNotNull(date); - assertEquals(now, date); - } - - public void testToDateWithFormatString() { - Calendar cal = new GregorianCalendar(); - cal.clear(); - cal.set(1976, 2, 16); // Month is 0-based - Date date = StringUtil.toDate("16.03.1976", "dd.MM.yyyy"); - assertNotNull(date); - assertEquals(cal.getTime(), date); - - cal.clear(); - cal.set(2004, 4, 13, 23, 51, 3); - date = StringUtil.toDate("2004-5-13 23:51 (03)", "yyyy-MM-dd hh:mm (ss)"); - assertNotNull(date); - assertEquals(cal.getTime(), date); - - cal.clear(); - cal.set(Calendar.HOUR, 1); - cal.set(Calendar.MINUTE, 2); - cal.set(Calendar.SECOND, 3); - date = StringUtil.toDate("123", "hms"); - assertNotNull(date); - assertEquals(cal.getTime(), date); - } - - public void testToDateWithFormat() { - Calendar cal = new GregorianCalendar(); - cal.clear(); - cal.set(1976, 2, 16); // Month is 0-based - Date date = StringUtil.toDate("16.03.1976", new SimpleDateFormat("dd.MM.yyyy")); - assertNotNull(date); - assertEquals(cal.getTime(), date); - - cal.clear(); - cal.set(2004, 4, 13, 23, 51); - date = StringUtil.toDate("13.5.04 23:51", - DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, new Locale("no", "NO"))); - assertNotNull(date); - assertEquals(cal.getTime(), date); - - cal.clear(); - cal.set(Calendar.HOUR, 1); - cal.set(Calendar.MINUTE, 2); - date = StringUtil.toDate("1:02 am", - DateFormat.getTimeInstance(DateFormat.SHORT, Locale.US)); - assertNotNull(date); - assertEquals(cal.getTime(), date); - } - - public void testToTimestamp() { - Calendar cal = new GregorianCalendar(); - cal.clear(); - cal.set(1976, 2, 16, 21, 28, 4); // Month is 0-based - Date date = StringUtil.toTimestamp("1976-03-16 21:28:04"); - assertNotNull(date); - assertTrue(date instanceof Timestamp); - assertEquals(cal.getTime(), date); - } - - public void testToStringArray() { - String[] arr = StringUtil.toStringArray(TEST_DELIM_STRING); - assertNotNull(arr); - assertEquals(STRING_ARRAY.length, arr.length); - for (int i = 0; i < arr.length; i++) { - assertEquals(STRING_ARRAY[i], arr[i]); - } - } - - public void testToStringArrayDelim() { - String[] arr = StringUtil.toStringArray("-1---2-3--4-5", "---"); - String[] arr2 = {"1", "2", "3", "4", "5"}; - assertNotNull(arr); - assertEquals(arr2.length, arr.length); - for (int i = 0; i < arr.length; i++) { - assertEquals(arr2[i], arr[i]); - } - - arr = StringUtil.toStringArray("1, 2, 3; 4 5", ",; "); - assertNotNull(arr); - assertEquals(arr2.length, arr.length); - for (int i = 0; i < arr.length; i++) { - assertEquals(arr2[i], arr[i]); - } - } - - public void testToIntArray() { - int[] arr = StringUtil.toIntArray(TEST_INT_DELIM_STRING); - assertNotNull(arr); - assertEquals(INT_ARRAY.length, arr.length); - for (int i = 0; i < arr.length; i++) { - assertEquals(INT_ARRAY[i], arr[i]); - } - } - - public void testToIntArrayDelim() { - int[] arr = StringUtil.toIntArray("-1---2-3--4-5", "---"); - int[] arr2 = {1, 2, 3, 4, 5}; - assertNotNull(arr); - assertEquals(arr2.length, arr.length); - for (int i = 0; i < arr.length; i++) { - assertEquals(arr2[i], arr[i]); - } - - arr = StringUtil.toIntArray("1, 2, 3; 4 5", ",; "); - assertNotNull(arr); - assertEquals(arr2.length, arr.length); - for (int i = 0; i < arr.length; i++) { - assertEquals(arr2[i], arr[i]); - } - } - - public void testToIntArrayDelimBase() { - int[] arr = StringUtil.toIntArray("-1___2_3__F_a", "___", 16); - int[] arr2 = {-1, 2, 3, 0xf, 0xa}; - assertNotNull(arr); - assertEquals(arr2.length, arr.length); - for (int i = 0; i < arr.length; i++) { - assertEquals(arr2[i], arr[i]); - } - - arr = StringUtil.toIntArray("-1, 2, 3; 17 12", ",; ", 8); - assertNotNull(arr); - assertEquals(arr2.length, arr.length); - for (int i = 0; i < arr.length; i++) { - assertEquals(arr2[i], arr[i]); - } - } - - public void testToLongArray() { - long[] arr = StringUtil.toLongArray(TEST_INT_DELIM_STRING); - assertNotNull(arr); - assertEquals(INT_ARRAY.length, arr.length); - for (int i = 0; i < arr.length; i++) { - assertEquals(INT_ARRAY[i], arr[i]); - } - } - - public void testToLongArrayDelim() { - long[] arr = StringUtil.toLongArray("-12854928752983___2_3__4_5", "___"); - long[] arr2 = {-12854928752983L, 2, 3, 4, 5}; - assertNotNull(arr); - assertEquals(arr2.length, arr.length); - for (int i = 0; i < arr.length; i++) { - assertEquals(arr2[i], arr[i]); - } - - arr = StringUtil.toLongArray("-12854928752983, 2, 3; 4 5", ",; "); - assertNotNull(arr); - assertEquals(arr2.length, arr.length); - for (int i = 0; i < arr.length; i++) { - assertEquals(arr2[i], arr[i]); - } - } - - public void testToDoubleArray() { - double[] arr = StringUtil.toDoubleArray(TEST_DOUBLE_DELIM_STRING); - assertNotNull(arr); - assertEquals(DOUBLE_ARRAY.length, arr.length); - for (int i = 0; i < arr.length; i++) { - assertEquals(DOUBLE_ARRAY[i], arr[i], 0d); - } - } - - public void testToDoubleArrayDelim() { - double[] arr = StringUtil.toDoubleArray("-12854928752983___.2_3__4_5e4", "___"); - double[] arr2 = {-12854928752983L, .2, 3, 4, 5e4}; - assertNotNull(arr); - assertEquals(arr2.length, arr.length); - for (int i = 0; i < arr.length; i++) { - assertEquals(arr2[i], arr[i], 0d); - } - - arr = StringUtil.toDoubleArray("-12854928752983, .2, 3; 4 5E4", ",; "); - assertNotNull(arr); - assertEquals(arr2.length, arr.length); - for (int i = 0; i < arr.length; i++) { - assertEquals(arr2[i], arr[i], 0d); - } - } - - public void testTestToColor() { - // Test all constants - assertEquals(Color.black, StringUtil.toColor("black")); - assertEquals(Color.black, StringUtil.toColor("BLACK")); - assertEquals(Color.blue, StringUtil.toColor("blue")); - assertEquals(Color.blue, StringUtil.toColor("BLUE")); - assertEquals(Color.cyan, StringUtil.toColor("cyan")); - assertEquals(Color.cyan, StringUtil.toColor("CYAN")); - assertEquals(Color.darkGray, StringUtil.toColor("darkGray")); - assertEquals(Color.darkGray, StringUtil.toColor("DARK_GRAY")); - assertEquals(Color.gray, StringUtil.toColor("gray")); - assertEquals(Color.gray, StringUtil.toColor("GRAY")); - assertEquals(Color.green, StringUtil.toColor("green")); - assertEquals(Color.green, StringUtil.toColor("GREEN")); - assertEquals(Color.lightGray, StringUtil.toColor("lightGray")); - assertEquals(Color.lightGray, StringUtil.toColor("LIGHT_GRAY")); - assertEquals(Color.magenta, StringUtil.toColor("magenta")); - assertEquals(Color.magenta, StringUtil.toColor("MAGENTA")); - assertEquals(Color.orange, StringUtil.toColor("orange")); - assertEquals(Color.orange, StringUtil.toColor("ORANGE")); - assertEquals(Color.pink, StringUtil.toColor("pink")); - assertEquals(Color.pink, StringUtil.toColor("PINK")); - assertEquals(Color.red, StringUtil.toColor("red")); - assertEquals(Color.red, StringUtil.toColor("RED")); - assertEquals(Color.white, StringUtil.toColor("white")); - assertEquals(Color.white, StringUtil.toColor("WHITE")); - assertEquals(Color.yellow, StringUtil.toColor("yellow")); - assertEquals(Color.yellow, StringUtil.toColor("YELLOW")); - -// System.out.println(StringUtil.deepToString(Color.yellow)); -// System.out.println(StringUtil.deepToString(Color.pink, true, -1)); - - // Test HTML/CSS style color - for (int i = 0; i < 256; i++) { - int c = i; - if (i < 0x10) { - c = i * 16; - } - String colorStr = "#" + Integer.toHexString(i) + Integer.toHexString(i) + Integer.toHexString(i); - String colorStrAlpha = "#" + Integer.toHexString(i) + Integer.toHexString(i) + Integer.toHexString(i) + Integer.toHexString(i); - assertEquals(new Color(c, c, c), StringUtil.toColor(colorStr)); - assertEquals(new Color(c, c, c, c), StringUtil.toColor(colorStrAlpha)); - - } - - // Test null - // TODO: Hmmm.. Maybe reconsider this.. - assertNull(StringUtil.toColor(null)); - - // Test - try { - StringUtil.toColor("illegal-color-value"); - fail("toColor with illegal color value should throw IllegalArgumentException."); - } - catch (IllegalArgumentException e) { - assertNotNull(e.getMessage()); - } - } - - public void testToColorString() { - assertEquals("#ff0000", StringUtil.toColorString(Color.red)); - assertEquals("#00ff00", StringUtil.toColorString(Color.green)); - assertEquals("#0000ff", StringUtil.toColorString(Color.blue)); - assertEquals("#101010", StringUtil.toColorString(new Color(0x10, 0x10, 0x10))); - - for (int i = 0; i < 256; i++) { - String str = (i < 0x10 ? "0" : "") + Integer.toHexString(i); - assertEquals("#" + str + str + str, StringUtil.toColorString(new Color(i, i, i))); - } - - // Test null - // TODO: Hmmm.. Maybe reconsider this.. - assertNull(StringUtil.toColorString(null)); - } - - public void testIsNumber() { - assertTrue(StringUtil.isNumber("0")); - assertTrue(StringUtil.isNumber("12345")); - assertTrue(StringUtil.isNumber(TEST_INTEGER.toString())); - assertTrue(StringUtil.isNumber("1234567890123456789012345678901234567890")); - assertTrue(StringUtil.isNumber(String.valueOf(Long.MAX_VALUE) + String.valueOf(Long.MAX_VALUE))); - assertFalse(StringUtil.isNumber("abc")); - assertFalse(StringUtil.isNumber(TEST_STRING)); - } - - public void testIsNumberNegative() { - assertTrue(StringUtil.isNumber("-12345")); - assertTrue(StringUtil.isNumber('-' + TEST_INTEGER.toString())); - assertTrue(StringUtil.isNumber("-1234567890123456789012345678901234567890")); - assertTrue(StringUtil.isNumber('-' + String.valueOf(Long.MAX_VALUE) + String.valueOf(Long.MAX_VALUE))); - assertFalse(StringUtil.isNumber("-abc")); - assertFalse(StringUtil.isNumber('-' + TEST_STRING)); - } - - public void testCamelToLispNull() { - try { - StringUtil.camelToLisp(null); - fail("should not accept null"); - } - catch (IllegalArgumentException iae) { - assertNotNull(iae.getMessage()); - } - } - public void testCamelToLispNoConversion() { - assertEquals("", StringUtil.camelToLisp("")); - assertEquals("equal", StringUtil.camelToLisp("equal")); - assertEquals("allready-lisp", StringUtil.camelToLisp("allready-lisp")); - } - - public void testCamelToLispSimple() { - // Simple tests - assertEquals("foo-bar", StringUtil.camelToLisp("fooBar")); - } - - public void testCamelToLispCase() { - // Casing - assertEquals("my-url", StringUtil.camelToLisp("myURL")); - assertEquals("another-url", StringUtil.camelToLisp("AnotherURL")); - } - - public void testCamelToLispMulti() { - // Several words - assertEquals("http-request-wrapper", StringUtil.camelToLisp("HttpRequestWrapper")); - String s = StringUtil.camelToLisp("HttpURLConnection"); - assertEquals("http-url-connection", s); - // Long and short abbre in upper case - assertEquals("welcome-to-my-world", StringUtil.camelToLisp("WELCOMEToMYWorld")); - } - - public void testCamelToLispLeaveUntouched() { - // Leave others untouched - assertEquals("a-slightly-longer-and-more-bumpy-string?.,[]()", StringUtil.camelToLisp("ASlightlyLongerANDMoreBumpyString?.,[]()")); - } - public void testCamelToLispNumbers() { - // Numbers - // TODO: FixMe - String s = StringUtil.camelToLisp("my45Caliber"); - assertEquals("my-45-caliber", s); - assertEquals("hello-12345-world-67890", StringUtil.camelToLisp("Hello12345world67890")); - assertEquals("hello-12345-my-world-67890-this-time", StringUtil.camelToLisp("HELLO12345MyWorld67890thisTime")); - assertEquals("hello-12345-world-67890-too", StringUtil.camelToLisp("Hello12345WORLD67890too")); - } - - public void testLispToCamelNull() { - try { - StringUtil.lispToCamel(null); - fail("should not accept null"); - } - catch (IllegalArgumentException iae) { - assertNotNull(iae.getMessage()); - } - } - public void testLispToCamelNoConversion() { - assertEquals("", StringUtil.lispToCamel("")); - assertEquals("equal", StringUtil.lispToCamel("equal")); - assertEquals("allreadyCamel", StringUtil.lispToCamel("allreadyCamel")); - } - - public void testLispToCamelSimple() { - // Simple tests - assertEquals("fooBar", StringUtil.lispToCamel("foo-bar")); - assertEquals("myUrl", StringUtil.lispToCamel("my-URL")); - assertEquals("anotherUrl", StringUtil.lispToCamel("ANOTHER-URL")); - } - - public void testLispToCamelCase() { - // Casing - assertEquals("Object", StringUtil.lispToCamel("object", true)); - assertEquals("object", StringUtil.lispToCamel("Object", false)); - } - - public void testLispToCamelMulti() { - // Several words - assertEquals("HttpRequestWrapper", StringUtil.lispToCamel("http-request-wrapper", true)); - } - - public void testLispToCamelLeaveUntouched() { - // Leave others untouched - assertEquals("ASlightlyLongerAndMoreBumpyString?.,[]()", StringUtil.lispToCamel("a-slightly-longer-and-more-bumpy-string?.,[]()", true)); - } - - public void testLispToCamelNumber() { - // Numbers - assertEquals("my45Caliber", StringUtil.lispToCamel("my-45-caliber")); - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.lang; + +import org.junit.Test; + +import java.awt.*; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.Locale; + +import static org.junit.Assert.*; + +/** + * StringUtilTestCase + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/lang/StringUtilTestCase.java#1 $ + * + */ +public class StringUtilTest { + final static Object TEST_OBJECT = new Object(); + final static Integer TEST_INTEGER = 42; + final static String TEST_STRING = "TheQuickBrownFox"; // No WS! + final static String TEST_SUB_STRING = TEST_STRING.substring(2, 5); + final static String TEST_DELIM_STRING = "one,two, three\n four\tfive six"; + final static String[] STRING_ARRAY = {"one", "two", "three", "four", "five", "six"}; + final static String TEST_INT_DELIM_STRING = "1,2, 3\n 4\t5 6"; + final static int[] INT_ARRAY = {1, 2, 3, 4, 5, 6}; + final static String TEST_DOUBLE_DELIM_STRING = "1.4,2.1, 3\n .4\t-5 6e5"; + final static double[] DOUBLE_ARRAY = {1.4, 2.1, 3, .4, -5, 6e5}; + final static String EMPTY_STRING = ""; + final static String WHITESPACE_STRING = " \t \r \n "; + + @Test + public void testValueOfObject() { + assertNotNull(StringUtil.valueOf(TEST_OBJECT)); + assertEquals(StringUtil.valueOf(TEST_OBJECT), TEST_OBJECT.toString()); + assertEquals(StringUtil.valueOf(TEST_INTEGER), TEST_INTEGER.toString()); + assertEquals(StringUtil.valueOf(TEST_STRING), TEST_STRING); + assertSame(StringUtil.valueOf(TEST_STRING), TEST_STRING); + + assertNull(StringUtil.valueOf(null)); + } + + @Test + public void testToUpperCase() { + String str = StringUtil.toUpperCase(TEST_STRING); + assertNotNull(str); + assertEquals(TEST_STRING.toUpperCase(), str); + + str = StringUtil.toUpperCase(null); + assertNull(str); + } + + @Test + public void testToLowerCase() { + String str = StringUtil.toLowerCase(TEST_STRING); + assertNotNull(str); + assertEquals(TEST_STRING.toLowerCase(), str); + + str = StringUtil.toLowerCase(null); + assertNull(str); + } + + @Test + public void testIsEmpty() { + assertTrue(StringUtil.isEmpty((String) null)); + assertTrue(StringUtil.isEmpty(EMPTY_STRING)); + assertTrue(StringUtil.isEmpty(WHITESPACE_STRING)); + assertFalse(StringUtil.isEmpty(TEST_STRING)); + } + + @Test + public void testIsEmptyArray() { + assertTrue(StringUtil.isEmpty((String[]) null)); + assertTrue(StringUtil.isEmpty(new String[]{EMPTY_STRING})); + assertTrue(StringUtil.isEmpty(new String[]{EMPTY_STRING, WHITESPACE_STRING})); + assertFalse(StringUtil.isEmpty(new String[]{EMPTY_STRING, TEST_STRING})); + assertFalse(StringUtil.isEmpty(new String[]{WHITESPACE_STRING, TEST_STRING})); + } + + @Test + public void testContains() { + assertTrue(StringUtil.contains(TEST_STRING, TEST_STRING)); + assertTrue(StringUtil.contains(TEST_STRING, TEST_SUB_STRING)); + assertTrue(StringUtil.contains(TEST_STRING, EMPTY_STRING)); + assertFalse(StringUtil.contains(TEST_STRING, WHITESPACE_STRING)); + assertFalse(StringUtil.contains(TEST_SUB_STRING, TEST_STRING)); + assertFalse(StringUtil.contains(EMPTY_STRING, TEST_STRING)); + assertFalse(StringUtil.contains(WHITESPACE_STRING, TEST_STRING)); + assertFalse(StringUtil.contains(null, TEST_STRING)); + assertFalse(StringUtil.contains(null, null)); + } + + @Test + public void testContainsIgnoreCase() { + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, TEST_STRING)); + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING)); + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING)); + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase())); + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, TEST_SUB_STRING)); + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING)); + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING)); + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase())); + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, EMPTY_STRING)); + assertFalse(StringUtil.containsIgnoreCase(TEST_STRING, WHITESPACE_STRING)); + assertFalse(StringUtil.containsIgnoreCase(TEST_SUB_STRING, TEST_STRING)); + assertFalse(StringUtil.containsIgnoreCase(EMPTY_STRING, TEST_STRING)); + assertFalse(StringUtil.containsIgnoreCase(WHITESPACE_STRING, TEST_STRING)); + assertFalse(StringUtil.containsIgnoreCase(null, TEST_STRING)); + assertFalse(StringUtil.containsIgnoreCase(null, null)); + } + + @Test + public void testContainsChar() { + for (int i = 0; i < TEST_STRING.length(); i++) { + assertTrue(StringUtil.contains(TEST_STRING, TEST_STRING.charAt(i))); + assertFalse(StringUtil.contains(EMPTY_STRING, TEST_STRING.charAt(i))); + assertFalse(StringUtil.contains(WHITESPACE_STRING, TEST_STRING.charAt(i))); + assertFalse(StringUtil.contains(null, TEST_STRING.charAt(i))); + } + for (int i = 0; i < TEST_SUB_STRING.length(); i++) { + assertTrue(StringUtil.contains(TEST_STRING, TEST_SUB_STRING.charAt(i))); + } + for (int i = 0; i < WHITESPACE_STRING.length(); i++) { + assertFalse(StringUtil.contains(TEST_STRING, WHITESPACE_STRING.charAt(i))); + } + + // Test all alpha-chars + for (int i = 'a'; i < 'z'; i++) { + if (TEST_STRING.indexOf(i) < 0) { + assertFalse(TEST_STRING + " seems to contain '" + (char) i + "', at index " + TEST_STRING.indexOf(i), StringUtil.contains(TEST_STRING, i)); + } + else { + assertTrue(TEST_STRING + " seems to not contain '" + (char) i + "', at index " + TEST_STRING.indexOf(i), StringUtil.contains(TEST_STRING, i)); + } + } + } + + @Test + public void testContainsIgnoreCaseChar() { + // Must contain all chars in string + for (int i = 0; i < TEST_STRING.length(); i++) { + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, TEST_STRING.charAt(i))); + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.charAt(i))); + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.charAt(i))); + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, Character.toUpperCase(TEST_STRING.charAt(i)))); + assertFalse(StringUtil.containsIgnoreCase(EMPTY_STRING, TEST_STRING.charAt(i))); + assertFalse(StringUtil.containsIgnoreCase(WHITESPACE_STRING, TEST_STRING.charAt(i))); + assertFalse(StringUtil.containsIgnoreCase(null, TEST_STRING.charAt(i))); + } + for (int i = 0; i < TEST_SUB_STRING.length(); i++) { + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, TEST_SUB_STRING.charAt(i))); + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING.charAt(i))); + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING.charAt(i))); + assertTrue(StringUtil.containsIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase().charAt(i))); + } + + for (int i = 0; i < WHITESPACE_STRING.length(); i++) { + assertFalse(StringUtil.containsIgnoreCase(TEST_STRING, WHITESPACE_STRING.charAt(i))); + } + + // Test all alpha-chars + for (int i = 'a'; i < 'z'; i++) { + if ((TEST_STRING.indexOf(i) < 0) && (TEST_STRING.indexOf(Character.toUpperCase((char) i)) < 0)) { + assertFalse(TEST_STRING + " seems to contain '" + (char) i + "', at index " + Math.max(TEST_STRING.indexOf(i), TEST_STRING.indexOf(Character.toUpperCase((char) i))), StringUtil.containsIgnoreCase(TEST_STRING, i)); + } + else { + assertTrue(TEST_STRING + " seems to not contain '" + (char) i + "', at index " + TEST_STRING.indexOf(i), StringUtil.containsIgnoreCase(TEST_STRING, i)); + } + } + } + + @Test + public void testIndexOfIgnoreCase() { + assertEquals(0, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING)); + assertEquals(0, StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING)); + assertEquals(0, StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING)); + assertEquals(0, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase())); + assertEquals(0, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase())); + + for (int i = 1; i < TEST_STRING.length(); i++) { + assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.substring(i))); + assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.substring(i))); + assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.substring(i))); + assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase().substring(i))); + assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase().substring(i))); + } + + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING)); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING)); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING)); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase())); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toLowerCase())); + + for (int i = 1; i < TEST_STRING.length(); i++) { + assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING.substring(i), TEST_STRING)); + assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING.substring(i), TEST_STRING)); + } + + assertEquals(-1, StringUtil.indexOfIgnoreCase(null, TEST_STRING)); + assertEquals(-1, StringUtil.indexOfIgnoreCase(null, null)); + } + + @Test + public void testIndexOfIgnoreCasePos() { + assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING, 1)); + assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING, 2)); + assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING, 3)); + assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase(), 4)); + assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase(), 5)); + + for (int i = 1; i < TEST_STRING.length(); i++) { + assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.substring(i), i - 1)); + assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.substring(i), i - 1)); + assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.substring(i), i - 1)); + assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase().substring(i), i - 1)); + assertEquals(i, StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase().substring(i), i - 1)); + } + + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING, 1)); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING, 1)); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING, 2)); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase(), 1)); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toLowerCase(), 2)); + + assertEquals(-1, StringUtil.indexOfIgnoreCase(null, TEST_STRING, 234)); + assertEquals(-1, StringUtil.indexOfIgnoreCase(null, null, -45)); + } + + @Test + public void testLastIndexOfIgnoreCase() { + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING)); + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING)); + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING)); + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase())); + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase())); + + for (int i = 1; i < TEST_STRING.length(); i++) { + assertEquals(i, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.substring(i))); + assertEquals(i, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.substring(i))); + assertEquals(i, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.substring(i))); + assertEquals(i, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase().substring(i))); + assertEquals(i, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase().substring(i))); + } + + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING)); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING)); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING)); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase())); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toLowerCase())); + + for (int i = 1; i < TEST_STRING.length(); i++) { + assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.substring(i), TEST_STRING)); + assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.substring(i), TEST_STRING)); + } + + assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(null, TEST_STRING)); + assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(null, null)); + + } + + @Test + public void testLastIndexOfIgnoreCasePos() { + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING, 1)); + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING, 2)); + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING, 3)); + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase(), 4)); + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase(), 5)); + + for (int i = 1; i < TEST_STRING.length(); i++) { + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.substring(0, i), i - 1)); + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.substring(0, i), i - 1)); + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.substring(0, i), i - 1)); + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase().substring(0, i), i - 1)); + assertEquals(0, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.toLowerCase().substring(0, i), i - 1)); + } + + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING, TEST_SUB_STRING.length() + 3)); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING, TEST_SUB_STRING.length() + 3)); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING, TEST_SUB_STRING.length() + 4)); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase(), TEST_SUB_STRING.length() + 3)); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toLowerCase(), TEST_SUB_STRING.length() + 4)); + + assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(null, TEST_STRING, 234)); + assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(null, null, -45)); + + } + + @Test + public void testIndexOfIgnoreCaseChar() { + // Must contain all chars in string + for (int i = 0; i < TEST_STRING.length(); i++) { + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.charAt(i))); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.charAt(i))); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.charAt(i))); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, Character.toUpperCase(TEST_STRING.charAt(i)))); + assertEquals(-1, StringUtil.indexOfIgnoreCase(EMPTY_STRING, TEST_STRING.charAt(i))); + assertEquals(-1, StringUtil.indexOfIgnoreCase(WHITESPACE_STRING, TEST_STRING.charAt(i))); + assertEquals(-1, StringUtil.indexOfIgnoreCase(null, TEST_STRING.charAt(i))); + } + + for (int i = 0; i < TEST_SUB_STRING.length(); i++) { + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.charAt(i))); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING.charAt(i))); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING.charAt(i))); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase().charAt(i))); + } + + for (int i = 0; i < WHITESPACE_STRING.length(); i++) { + assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING, WHITESPACE_STRING.charAt(i))); + } + + // Test all alpha-chars + for (int i = 'a'; i < 'z'; i++) { + if ((TEST_STRING.indexOf(i) < 0) && (TEST_STRING.indexOf(Character.toUpperCase((char) i)) < 0)) { + assertEquals(TEST_STRING + " seems to contain '" + (char) i + "', at index " + Math.max(TEST_STRING.indexOf(i), TEST_STRING.indexOf(Character.toUpperCase((char) i))), -1, StringUtil.indexOfIgnoreCase(TEST_STRING, i)); + } + else { + assertTrue(TEST_STRING + " seems to not contain '" + (char) i + "', at index " + TEST_STRING.indexOf(i), 0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, i)); + } + } + } + + @Test + public void testIndexOfIgnoreCaseCharPos() { + // Must contain all chars in string + for (int i = 0; i < TEST_STRING.length(); i++) { + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_STRING.charAt(i), i)); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.charAt(i), i)); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.charAt(i), i)); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, Character.toUpperCase(TEST_STRING.charAt(i)), i)); + assertEquals(-1, StringUtil.indexOfIgnoreCase(EMPTY_STRING, TEST_STRING.charAt(i), i)); + assertEquals(-1, StringUtil.indexOfIgnoreCase(WHITESPACE_STRING, TEST_STRING.charAt(i), i)); + assertEquals(-1, StringUtil.indexOfIgnoreCase(null, TEST_STRING.charAt(i), i)); + } + + for (int i = 0; i < TEST_SUB_STRING.length(); i++) { + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.charAt(i), i)); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING.charAt(i), i)); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING.charAt(i), i)); + assertTrue(0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase().charAt(i), i)); + } + + for (int i = 0; i < WHITESPACE_STRING.length(); i++) { + assertEquals(-1, StringUtil.indexOfIgnoreCase(TEST_STRING, WHITESPACE_STRING.charAt(i), i)); + } + + // Test all alpha-chars + for (int i = 'a'; i < 'z'; i++) { + if ((TEST_STRING.indexOf(i) < 0) && (TEST_STRING.indexOf(Character.toUpperCase((char) i)) < 0)) { + assertEquals(TEST_STRING + " seems to contain '" + (char) i + "', at index " + Math.max(TEST_STRING.indexOf(i), TEST_STRING.indexOf(Character.toUpperCase((char) i))), -1, StringUtil.indexOfIgnoreCase(TEST_STRING, i, 0)); + } + else { + assertTrue(TEST_STRING + " seems to not contain '" + (char) i + "', at index " + TEST_STRING.indexOf(i), 0 <= StringUtil.indexOfIgnoreCase(TEST_STRING, i, 0)); + } + } + } + + @Test + public void testLastIndexOfIgnoreCaseChar() { + // Must contain all chars in string + for (int i = 0; i < TEST_STRING.length(); i++) { + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.charAt(i))); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.charAt(i))); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.charAt(i))); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, Character.toUpperCase(TEST_STRING.charAt(i)))); + assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(EMPTY_STRING, TEST_STRING.charAt(i))); + assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(WHITESPACE_STRING, TEST_STRING.charAt(i))); + assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(null, TEST_STRING.charAt(i))); + } + + for (int i = 0; i < TEST_SUB_STRING.length(); i++) { + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.charAt(i))); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING.charAt(i))); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING.charAt(i))); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase().charAt(i))); + } + + for (int i = 0; i < WHITESPACE_STRING.length(); i++) { + assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, WHITESPACE_STRING.charAt(i))); + } + + // Test all alpha-chars + for (int i = 'a'; i < 'z'; i++) { + if ((TEST_STRING.indexOf(i) < 0) && (TEST_STRING.indexOf(Character.toUpperCase((char) i)) < 0)) { + assertEquals(TEST_STRING + " seems to contain '" + (char) i + "', at index " + Math.max(TEST_STRING.indexOf(i), TEST_STRING.indexOf(Character.toUpperCase((char) i))), -1, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, i)); + } + else { + assertTrue(TEST_STRING + " seems to not contain '" + (char) i + "', at index " + TEST_STRING.indexOf(i), 0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, i)); + } + } + } + + @Test + public void testLastIndexOfIgnoreCaseCharPos() { + // Must contain all chars in string + for (int i = 0; i < TEST_STRING.length(); i++) { + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_STRING.charAt(i), i)); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_STRING.charAt(i), i)); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_STRING.charAt(i), i)); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, Character.toUpperCase(TEST_STRING.charAt(i)), i)); + assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(EMPTY_STRING, TEST_STRING.charAt(i), i)); + assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(WHITESPACE_STRING, TEST_STRING.charAt(i), i)); + assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(null, TEST_STRING.charAt(i), i)); + } + + for (int i = 0; i < TEST_SUB_STRING.length(); i++) { + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.charAt(i), TEST_STRING.length())); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toUpperCase(), TEST_SUB_STRING.charAt(i), TEST_STRING.length())); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING.toLowerCase(), TEST_SUB_STRING.charAt(i), TEST_STRING.length())); + assertTrue(0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, TEST_SUB_STRING.toUpperCase().charAt(i), TEST_STRING.length())); + } + + for (int i = 0; i < WHITESPACE_STRING.length(); i++) { + assertEquals(-1, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, WHITESPACE_STRING.charAt(i), TEST_STRING.length())); + } + + // Test all alpha-chars + for (int i = 'a'; i < 'z'; i++) { + if ((TEST_STRING.indexOf(i) < 0) && (TEST_STRING.indexOf(Character.toUpperCase((char) i)) < 0)) { + assertEquals(TEST_STRING + " seems to contain '" + (char) i + "', at index " + Math.max(TEST_STRING.indexOf(i), TEST_STRING.indexOf(Character.toUpperCase((char) i))), -1, StringUtil.lastIndexOfIgnoreCase(TEST_STRING, i, TEST_STRING.length())); + } + else { + assertTrue(TEST_STRING + " seems to not contain '" + (char) i + "', at index " + TEST_STRING.indexOf(i), 0 <= StringUtil.lastIndexOfIgnoreCase(TEST_STRING, i, TEST_STRING.length())); + } + } + } + + @Test + public void testLtrim() { + assertEquals(TEST_STRING, StringUtil.ltrim(TEST_STRING)); + assertEquals(TEST_STRING, StringUtil.ltrim(" " + TEST_STRING)); + assertEquals(TEST_STRING, StringUtil.ltrim(WHITESPACE_STRING + TEST_STRING)); + assertFalse(TEST_STRING.equals(StringUtil.ltrim(TEST_STRING + WHITESPACE_STRING))); + // TODO: Test is not complete + } + + @Test + public void testRtrim() { + assertEquals(TEST_STRING, StringUtil.rtrim(TEST_STRING)); + assertEquals(TEST_STRING, StringUtil.rtrim(TEST_STRING + " ")); + assertEquals(TEST_STRING, StringUtil.rtrim(TEST_STRING + WHITESPACE_STRING)); + assertFalse(TEST_STRING.equals(StringUtil.rtrim(WHITESPACE_STRING + TEST_STRING))); + // TODO: Test is not complete + } + + @Test + public void testReplace() { + assertEquals("", StringUtil.replace(TEST_STRING, TEST_STRING, "")); + assertEquals("", StringUtil.replace("", "", "")); + assertEquals("", StringUtil.replace("", "xyzzy", "xyzzy")); + assertEquals(TEST_STRING, StringUtil.replace(TEST_STRING, "", "xyzzy")); + assertEquals("aabbdd", StringUtil.replace("aabbccdd", "c", "")); + assertEquals("aabbccdd", StringUtil.replace("aabbdd", "bd", "bccd")); + // TODO: Test is not complete + } + + @Test + public void testReplaceIgnoreCase() { + assertEquals("", StringUtil.replaceIgnoreCase(TEST_STRING, TEST_STRING.toUpperCase(), "")); + assertEquals("", StringUtil.replaceIgnoreCase("", "", "")); + assertEquals("", StringUtil.replaceIgnoreCase("", "xyzzy", "xyzzy")); + assertEquals(TEST_STRING, StringUtil.replaceIgnoreCase(TEST_STRING, "", "xyzzy")); + assertEquals("aabbdd", StringUtil.replaceIgnoreCase("aabbCCdd", "c", "")); + assertEquals("aabbdd", StringUtil.replaceIgnoreCase("aabbccdd", "C", "")); + assertEquals("aabbccdd", StringUtil.replaceIgnoreCase("aabbdd", "BD", "bccd")); + assertEquals("aabbccdd", StringUtil.replaceIgnoreCase("aabBDd", "bd", "bccd")); + // TODO: Test is not complete + } + + @Test + public void testCut() { + assertEquals(TEST_STRING, StringUtil.cut(TEST_STRING, TEST_STRING.length(), "..")); + assertEquals("This is a test..", StringUtil.cut("This is a test of how this works", 16, "..")); + assertEquals("This is a test", StringUtil.cut("This is a test of how this works", 16, null)); + assertEquals("This is a test", StringUtil.cut("This is a test of how this works", 16, "")); + // TODO: Test is not complete + } + + @Test + public void testCaptialize() { + assertNull(StringUtil.capitalize(null)); + assertEquals(TEST_STRING.toUpperCase(), StringUtil.capitalize(TEST_STRING.toUpperCase())); + assertTrue(StringUtil.capitalize("abc").charAt(0) == 'A'); + } + + @Test + public void testCaptializePos() { + assertNull(StringUtil.capitalize(null, 45)); + + // TODO: Should this throw IllegalArgument or StringIndexOutOfBonds? + assertEquals(TEST_STRING, StringUtil.capitalize(TEST_STRING, TEST_STRING.length() + 45)); + + for (int i = 0; i < TEST_STRING.length(); i++) { + assertTrue(Character.isUpperCase(StringUtil.capitalize(TEST_STRING, i).charAt(i))); + } + } + + @Test + public void testPad() { + assertEquals(TEST_STRING + "...", StringUtil.pad(TEST_STRING, TEST_STRING.length() + 3, "..", false)); + assertEquals(TEST_STRING, StringUtil.pad(TEST_STRING, 4, ".", false)); + assertEquals(TEST_STRING, StringUtil.pad(TEST_STRING, 4, ".", true)); + assertEquals("..." + TEST_STRING, StringUtil.pad(TEST_STRING, TEST_STRING.length() + 3, "..", true)); + } + + @Test + public void testToDate() { + long time = System.currentTimeMillis(); + Date now = new Date(time - time % 60000); // Default format seems to have no seconds.. + Date date = StringUtil.toDate(DateFormat.getInstance().format(now)); + assertNotNull(date); + assertEquals(now, date); + } + + @Test + public void testToDateWithFormatString() { + Calendar cal = new GregorianCalendar(); + cal.clear(); + cal.set(1976, 2, 16); // Month is 0-based + Date date = StringUtil.toDate("16.03.1976", "dd.MM.yyyy"); + assertNotNull(date); + assertEquals(cal.getTime(), date); + + cal.clear(); + cal.set(2004, 4, 13, 23, 51, 3); + date = StringUtil.toDate("2004-5-13 23:51 (03)", "yyyy-MM-dd hh:mm (ss)"); + assertNotNull(date); + assertEquals(cal.getTime(), date); + + cal.clear(); + cal.set(Calendar.HOUR, 1); + cal.set(Calendar.MINUTE, 2); + cal.set(Calendar.SECOND, 3); + date = StringUtil.toDate("123", "hms"); + assertNotNull(date); + assertEquals(cal.getTime(), date); + } + + @Test + public void testToDateWithFormat() { + Calendar cal = new GregorianCalendar(); + cal.clear(); + cal.set(1976, 2, 16); // Month is 0-based + Date date = StringUtil.toDate("16.03.1976", new SimpleDateFormat("dd.MM.yyyy")); + assertNotNull(date); + assertEquals(cal.getTime(), date); + + cal.clear(); + cal.set(2004, 4, 13, 23, 51); + date = StringUtil.toDate("13.5.04 23:51", + DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, new Locale("no", "NO"))); + assertNotNull(date); + assertEquals(cal.getTime(), date); + + cal.clear(); + cal.set(Calendar.HOUR, 1); + cal.set(Calendar.MINUTE, 2); + date = StringUtil.toDate("1:02 am", + DateFormat.getTimeInstance(DateFormat.SHORT, Locale.US)); + assertNotNull(date); + assertEquals(cal.getTime(), date); + } + + @Test + public void testToTimestamp() { + Calendar cal = new GregorianCalendar(); + cal.clear(); + cal.set(1976, 2, 16, 21, 28, 4); // Month is 0-based + Date date = StringUtil.toTimestamp("1976-03-16 21:28:04"); + assertNotNull(date); + assertTrue(date instanceof Timestamp); + assertEquals(cal.getTime(), date); + } + + @Test + public void testToStringArray() { + String[] arr = StringUtil.toStringArray(TEST_DELIM_STRING); + assertNotNull(arr); + assertEquals(STRING_ARRAY.length, arr.length); + for (int i = 0; i < arr.length; i++) { + assertEquals(STRING_ARRAY[i], arr[i]); + } + } + + @Test + public void testToStringArrayDelim() { + String[] arr = StringUtil.toStringArray("-1---2-3--4-5", "---"); + String[] arr2 = {"1", "2", "3", "4", "5"}; + assertNotNull(arr); + assertEquals(arr2.length, arr.length); + for (int i = 0; i < arr.length; i++) { + assertEquals(arr2[i], arr[i]); + } + + arr = StringUtil.toStringArray("1, 2, 3; 4 5", ",; "); + assertNotNull(arr); + assertEquals(arr2.length, arr.length); + for (int i = 0; i < arr.length; i++) { + assertEquals(arr2[i], arr[i]); + } + } + + @Test + public void testToIntArray() { + int[] arr = StringUtil.toIntArray(TEST_INT_DELIM_STRING); + assertNotNull(arr); + assertEquals(INT_ARRAY.length, arr.length); + for (int i = 0; i < arr.length; i++) { + assertEquals(INT_ARRAY[i], arr[i]); + } + } + + @Test + public void testToIntArrayDelim() { + int[] arr = StringUtil.toIntArray("-1---2-3--4-5", "---"); + int[] arr2 = {1, 2, 3, 4, 5}; + assertNotNull(arr); + assertEquals(arr2.length, arr.length); + for (int i = 0; i < arr.length; i++) { + assertEquals(arr2[i], arr[i]); + } + + arr = StringUtil.toIntArray("1, 2, 3; 4 5", ",; "); + assertNotNull(arr); + assertEquals(arr2.length, arr.length); + for (int i = 0; i < arr.length; i++) { + assertEquals(arr2[i], arr[i]); + } + } + + @Test + public void testToIntArrayDelimBase() { + int[] arr = StringUtil.toIntArray("-1___2_3__F_a", "___", 16); + int[] arr2 = {-1, 2, 3, 0xf, 0xa}; + assertNotNull(arr); + assertEquals(arr2.length, arr.length); + for (int i = 0; i < arr.length; i++) { + assertEquals(arr2[i], arr[i]); + } + + arr = StringUtil.toIntArray("-1, 2, 3; 17 12", ",; ", 8); + assertNotNull(arr); + assertEquals(arr2.length, arr.length); + for (int i = 0; i < arr.length; i++) { + assertEquals(arr2[i], arr[i]); + } + } + + @Test + public void testToLongArray() { + long[] arr = StringUtil.toLongArray(TEST_INT_DELIM_STRING); + assertNotNull(arr); + assertEquals(INT_ARRAY.length, arr.length); + for (int i = 0; i < arr.length; i++) { + assertEquals(INT_ARRAY[i], arr[i]); + } + } + + @Test + public void testToLongArrayDelim() { + long[] arr = StringUtil.toLongArray("-12854928752983___2_3__4_5", "___"); + long[] arr2 = {-12854928752983L, 2, 3, 4, 5}; + assertNotNull(arr); + assertEquals(arr2.length, arr.length); + for (int i = 0; i < arr.length; i++) { + assertEquals(arr2[i], arr[i]); + } + + arr = StringUtil.toLongArray("-12854928752983, 2, 3; 4 5", ",; "); + assertNotNull(arr); + assertEquals(arr2.length, arr.length); + for (int i = 0; i < arr.length; i++) { + assertEquals(arr2[i], arr[i]); + } + } + + @Test + public void testToDoubleArray() { + double[] arr = StringUtil.toDoubleArray(TEST_DOUBLE_DELIM_STRING); + assertNotNull(arr); + assertEquals(DOUBLE_ARRAY.length, arr.length); + for (int i = 0; i < arr.length; i++) { + assertEquals(DOUBLE_ARRAY[i], arr[i], 0d); + } + } + + @Test + public void testToDoubleArrayDelim() { + double[] arr = StringUtil.toDoubleArray("-12854928752983___.2_3__4_5e4", "___"); + double[] arr2 = {-12854928752983L, .2, 3, 4, 5e4}; + assertNotNull(arr); + assertEquals(arr2.length, arr.length); + for (int i = 0; i < arr.length; i++) { + assertEquals(arr2[i], arr[i], 0d); + } + + arr = StringUtil.toDoubleArray("-12854928752983, .2, 3; 4 5E4", ",; "); + assertNotNull(arr); + assertEquals(arr2.length, arr.length); + for (int i = 0; i < arr.length; i++) { + assertEquals(arr2[i], arr[i], 0d); + } + } + + @Test + public void testTestToColor() { + // Test all constants + assertEquals(Color.black, StringUtil.toColor("black")); + assertEquals(Color.black, StringUtil.toColor("BLACK")); + assertEquals(Color.blue, StringUtil.toColor("blue")); + assertEquals(Color.blue, StringUtil.toColor("BLUE")); + assertEquals(Color.cyan, StringUtil.toColor("cyan")); + assertEquals(Color.cyan, StringUtil.toColor("CYAN")); + assertEquals(Color.darkGray, StringUtil.toColor("darkGray")); + assertEquals(Color.darkGray, StringUtil.toColor("DARK_GRAY")); + assertEquals(Color.gray, StringUtil.toColor("gray")); + assertEquals(Color.gray, StringUtil.toColor("GRAY")); + assertEquals(Color.green, StringUtil.toColor("green")); + assertEquals(Color.green, StringUtil.toColor("GREEN")); + assertEquals(Color.lightGray, StringUtil.toColor("lightGray")); + assertEquals(Color.lightGray, StringUtil.toColor("LIGHT_GRAY")); + assertEquals(Color.magenta, StringUtil.toColor("magenta")); + assertEquals(Color.magenta, StringUtil.toColor("MAGENTA")); + assertEquals(Color.orange, StringUtil.toColor("orange")); + assertEquals(Color.orange, StringUtil.toColor("ORANGE")); + assertEquals(Color.pink, StringUtil.toColor("pink")); + assertEquals(Color.pink, StringUtil.toColor("PINK")); + assertEquals(Color.red, StringUtil.toColor("red")); + assertEquals(Color.red, StringUtil.toColor("RED")); + assertEquals(Color.white, StringUtil.toColor("white")); + assertEquals(Color.white, StringUtil.toColor("WHITE")); + assertEquals(Color.yellow, StringUtil.toColor("yellow")); + assertEquals(Color.yellow, StringUtil.toColor("YELLOW")); + +// System.out.println(StringUtil.deepToString(Color.yellow)); +// System.out.println(StringUtil.deepToString(Color.pink, true, -1)); + + // Test HTML/CSS style color + for (int i = 0; i < 256; i++) { + int c = i; + if (i < 0x10) { + c = i * 16; + } + String colorStr = "#" + Integer.toHexString(i) + Integer.toHexString(i) + Integer.toHexString(i); + String colorStrAlpha = "#" + Integer.toHexString(i) + Integer.toHexString(i) + Integer.toHexString(i) + Integer.toHexString(i); + assertEquals(new Color(c, c, c), StringUtil.toColor(colorStr)); + assertEquals(new Color(c, c, c, c), StringUtil.toColor(colorStrAlpha)); + + } + + // Test null + // TODO: Hmmm.. Maybe reconsider this.. + assertNull(StringUtil.toColor(null)); + + // Test + try { + StringUtil.toColor("illegal-color-value"); + fail("toColor with illegal color value should throw IllegalArgumentException."); + } + catch (IllegalArgumentException e) { + assertNotNull(e.getMessage()); + } + } + + @Test + public void testToColorString() { + assertEquals("#ff0000", StringUtil.toColorString(Color.red)); + assertEquals("#00ff00", StringUtil.toColorString(Color.green)); + assertEquals("#0000ff", StringUtil.toColorString(Color.blue)); + assertEquals("#101010", StringUtil.toColorString(new Color(0x10, 0x10, 0x10))); + + for (int i = 0; i < 256; i++) { + String str = (i < 0x10 ? "0" : "") + Integer.toHexString(i); + assertEquals("#" + str + str + str, StringUtil.toColorString(new Color(i, i, i))); + } + + // Test null + // TODO: Hmmm.. Maybe reconsider this.. + assertNull(StringUtil.toColorString(null)); + } + + @Test + public void testIsNumber() { + assertTrue(StringUtil.isNumber("0")); + assertTrue(StringUtil.isNumber("12345")); + assertTrue(StringUtil.isNumber(TEST_INTEGER.toString())); + assertTrue(StringUtil.isNumber("1234567890123456789012345678901234567890")); + assertTrue(StringUtil.isNumber(String.valueOf(Long.MAX_VALUE) + String.valueOf(Long.MAX_VALUE))); + assertFalse(StringUtil.isNumber("abc")); + assertFalse(StringUtil.isNumber(TEST_STRING)); + } + + @Test + public void testIsNumberNegative() { + assertTrue(StringUtil.isNumber("-12345")); + assertTrue(StringUtil.isNumber('-' + TEST_INTEGER.toString())); + assertTrue(StringUtil.isNumber("-1234567890123456789012345678901234567890")); + assertTrue(StringUtil.isNumber('-' + String.valueOf(Long.MAX_VALUE) + String.valueOf(Long.MAX_VALUE))); + assertFalse(StringUtil.isNumber("-abc")); + assertFalse(StringUtil.isNumber('-' + TEST_STRING)); + } + + @Test + public void testCamelToLispNull() { + try { + StringUtil.camelToLisp(null); + fail("should not accept null"); + } + catch (IllegalArgumentException iae) { + assertNotNull(iae.getMessage()); + } + } + + @Test + public void testCamelToLispNoConversion() { + assertEquals("", StringUtil.camelToLisp("")); + assertEquals("equal", StringUtil.camelToLisp("equal")); + assertEquals("allready-lisp", StringUtil.camelToLisp("allready-lisp")); + } + + @Test + public void testCamelToLispSimple() { + // Simple tests + assertEquals("foo-bar", StringUtil.camelToLisp("fooBar")); + } + + @Test + public void testCamelToLispCase() { + // Casing + assertEquals("my-url", StringUtil.camelToLisp("myURL")); + assertEquals("another-url", StringUtil.camelToLisp("AnotherURL")); + } + + @Test + public void testCamelToLispMulti() { + // Several words + assertEquals("http-request-wrapper", StringUtil.camelToLisp("HttpRequestWrapper")); + String s = StringUtil.camelToLisp("HttpURLConnection"); + assertEquals("http-url-connection", s); + // Long and short abbre in upper case + assertEquals("welcome-to-my-world", StringUtil.camelToLisp("WELCOMEToMYWorld")); + } + + @Test + public void testCamelToLispLeaveUntouched() { + // Leave others untouched + assertEquals("a-slightly-longer-and-more-bumpy-string?.,[]()", StringUtil.camelToLisp("ASlightlyLongerANDMoreBumpyString?.,[]()")); + } + + @Test + public void testCamelToLispNumbers() { + // Numbers + // TODO: FixMe + String s = StringUtil.camelToLisp("my45Caliber"); + assertEquals("my-45-caliber", s); + assertEquals("hello-12345-world-67890", StringUtil.camelToLisp("Hello12345world67890")); + assertEquals("hello-12345-my-world-67890-this-time", StringUtil.camelToLisp("HELLO12345MyWorld67890thisTime")); + assertEquals("hello-12345-world-67890-too", StringUtil.camelToLisp("Hello12345WORLD67890too")); + } + + @Test + public void testLispToCamelNull() { + try { + StringUtil.lispToCamel(null); + fail("should not accept null"); + } + catch (IllegalArgumentException iae) { + assertNotNull(iae.getMessage()); + } + } + + @Test + public void testLispToCamelNoConversion() { + assertEquals("", StringUtil.lispToCamel("")); + assertEquals("equal", StringUtil.lispToCamel("equal")); + assertEquals("alreadyCamel", StringUtil.lispToCamel("alreadyCamel")); + } + + @Test + public void testLispToCamelSimple() { + // Simple tests + assertEquals("fooBar", StringUtil.lispToCamel("foo-bar")); + assertEquals("myUrl", StringUtil.lispToCamel("my-URL")); + assertEquals("anotherUrl", StringUtil.lispToCamel("ANOTHER-URL")); + } + + @Test + public void testLispToCamelCase() { + // Casing + assertEquals("Object", StringUtil.lispToCamel("object", true)); + assertEquals("object", StringUtil.lispToCamel("Object", false)); + } + + @Test + public void testLispToCamelMulti() { + // Several words + assertEquals("HttpRequestWrapper", StringUtil.lispToCamel("http-request-wrapper", true)); + } + + @Test + public void testLispToCamelLeaveUntouched() { + // Leave others untouched + assertEquals("ASlightlyLongerAndMoreBumpyString?.,[]()", StringUtil.lispToCamel("a-slightly-longer-and-more-bumpy-string?.,[]()", true)); + } + + @Test + public void testLispToCamelNumber() { + // Numbers + assertEquals("my45Caliber", StringUtil.lispToCamel("my-45-caliber")); + } +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/lang/SystemUtilTest.java b/common/common-lang/src/test/java/com/twelvemonkeys/lang/SystemUtilTest.java index 4405fd9e..5b73f5af 100644 --- a/common/common-lang/src/test/java/com/twelvemonkeys/lang/SystemUtilTest.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/lang/SystemUtilTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.lang; diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/lang/ValidateTest.java b/common/common-lang/src/test/java/com/twelvemonkeys/lang/ValidateTest.java index 760d747b..76fee60c 100644 --- a/common/common-lang/src/test/java/com/twelvemonkeys/lang/ValidateTest.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/lang/ValidateTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.lang; diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/BeanMapTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/BeanMapTest.java similarity index 66% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/BeanMapTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/BeanMapTest.java index c33cde2e..b5f49db1 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/BeanMapTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/BeanMapTest.java @@ -1,146 +1,176 @@ -package com.twelvemonkeys.util; - -import java.util.Map; -import java.beans.IntrospectionException; -import java.io.Serializable; - -/** - * BeanMapTestCase - *

    - * @todo Extend with BeanMap specific tests - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/BeanMapTestCase.java#2 $ - */ -public class BeanMapTestCase extends MapAbstractTestCase { - - public boolean isPutAddSupported() { - return false; - } - - public boolean isRemoveSupported() { - return false; - } - - public boolean isSetValueSupported() { - return true; - } - - public boolean isAllowNullKey() { - return false; - } - - public Object[] getSampleKeys() { - return new Object[] { - "blah", "foo", "bar", "baz", "tmp", "gosh", "golly", "gee" - }; - } - - public Object[] getSampleValues() { - return new Object[] { - "blahv", "foov", "barv", "bazv", "tmpv", "goshv", "gollyv", "geev" - }; - } - - public Object[] getNewSampleValues() { - return new Object[] { - "newblahv", "newfoov", "newbarv", "newbazv", "newtmpv", "newgoshv", "newgollyv", "newgeev" - }; - } - - public Map makeEmptyMap() { - try { - return new BeanMap(new NullBean()); - } - catch (IntrospectionException e) { - throw new RuntimeException(e); - } - } - - public Map makeFullMap() { - try { - return new BeanMap(new MyBean()); - } - catch (IntrospectionException e) { - throw new RuntimeException(e); - } - } - - public static class MyBean implements Serializable { - Object blah = "blahv"; - Object foo = "foov"; - Object bar = "barv"; - Object baz = "bazv"; - Object tmp = "tmpv"; - Object gosh = "goshv"; - Object golly = "gollyv"; - Object gee = "geev"; - - public Object getBar() { - return bar; - } - - public void setBar(Object pBar) { - bar = pBar; - } - - public Object getBaz() { - return baz; - } - - public void setBaz(Object pBaz) { - baz = pBaz; - } - - public Object getBlah() { - return blah; - } - - public void setBlah(Object pBlah) { - blah = pBlah; - } - - public Object getFoo() { - return foo; - } - - public void setFoo(Object pFoo) { - foo = pFoo; - } - - public Object getGee() { - return gee; - } - - public void setGee(Object pGee) { - gee = pGee; - } - - public Object getGolly() { - return golly; - } - - public void setGolly(Object pGolly) { - golly = pGolly; - } - - public Object getGosh() { - return gosh; - } - - public void setGosh(Object pGosh) { - gosh = pGosh; - } - - public Object getTmp() { - return tmp; - } - - public void setTmp(Object pTmp) { - tmp = pTmp; - } - } - - static class NullBean implements Serializable { } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.util; + +import java.beans.IntrospectionException; +import java.io.Serializable; +import java.util.Map; + +/** + * BeanMapTestCase + *

    + * @todo Extend with BeanMap specific tests + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/BeanMapTestCase.java#2 $ + */ +public class BeanMapTest extends MapAbstractTest { + + public boolean isPutAddSupported() { + return false; + } + + public boolean isRemoveSupported() { + return false; + } + + public boolean isSetValueSupported() { + return true; + } + + public boolean isAllowNullKey() { + return false; + } + + public Object[] getSampleKeys() { + return new Object[] { + "blah", "foo", "bar", "baz", "tmp", "gosh", "golly", "gee" + }; + } + + public Object[] getSampleValues() { + return new Object[] { + "blahv", "foov", "barv", "bazv", "tmpv", "goshv", "gollyv", "geev" + }; + } + + public Object[] getNewSampleValues() { + return new Object[] { + "newblahv", "newfoov", "newbarv", "newbazv", "newtmpv", "newgoshv", "newgollyv", "newgeev" + }; + } + + public Map makeEmptyMap() { + try { + return new BeanMap(new NullBean()); + } + catch (IntrospectionException e) { + throw new RuntimeException(e); + } + } + + public Map makeFullMap() { + try { + return new BeanMap(new MyBean()); + } + catch (IntrospectionException e) { + throw new RuntimeException(e); + } + } + + public static class MyBean implements Serializable { + Object blah = "blahv"; + Object foo = "foov"; + Object bar = "barv"; + Object baz = "bazv"; + Object tmp = "tmpv"; + Object gosh = "goshv"; + Object golly = "gollyv"; + Object gee = "geev"; + + public Object getBar() { + return bar; + } + + public void setBar(Object pBar) { + bar = pBar; + } + + public Object getBaz() { + return baz; + } + + public void setBaz(Object pBaz) { + baz = pBaz; + } + + public Object getBlah() { + return blah; + } + + public void setBlah(Object pBlah) { + blah = pBlah; + } + + public Object getFoo() { + return foo; + } + + public void setFoo(Object pFoo) { + foo = pFoo; + } + + public Object getGee() { + return gee; + } + + public void setGee(Object pGee) { + gee = pGee; + } + + public Object getGolly() { + return golly; + } + + public void setGolly(Object pGolly) { + golly = pGolly; + } + + public Object getGosh() { + return gosh; + } + + public void setGosh(Object pGosh) { + gosh = pGosh; + } + + public Object getTmp() { + return tmp; + } + + public void setTmp(Object pTmp) { + tmp = pTmp; + } + } + + static class NullBean implements Serializable { } +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/CollectionAbstractTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/CollectionAbstractTest.java similarity index 96% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/CollectionAbstractTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/CollectionAbstractTest.java index 4bb26738..e2f08d86 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/CollectionAbstractTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/CollectionAbstractTest.java @@ -1,1308 +1,1359 @@ -/* - * Copyright 2001-2004 The Apache Software Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.twelvemonkeys.util; - -import java.lang.reflect.Array; -import java.util.*; - -/** - * Abstract test class for {@link java.util.Collection} methods and contracts. - *

    - * You should create a concrete subclass of this class to test any custom - * {@link Collection} implementation. At minimum, you'll have to - * implement the {@link #makeCollection()} method. You might want to - * override some of the additional public methods as well: - *

    - * Element Population Methods - *

    - * Override these if your collection restricts what kind of elements are - * allowed (for instance, if {@code null} is not permitted): - *

      - *
    • {@link #getFullElements()} - *
    • {@link #getOtherElements()} - *
    - *

    - * Supported Operation Methods - *

    - * Override these if your collection doesn't support certain operations: - *

      - *
    • {@link #isAddSupported()} - *
    • {@link #isRemoveSupported()} - *
    • {@link #areEqualElementsDistinguishable()} - *
    • {@link #isNullSupported()} - *
    • {@link #isFailFastSupported()} - *
    - *

    - * Fixture Methods - *

    - * Fixtures are used to verify that the the operation results in correct state - * for the collection. Basically, the operation is performed against your - * collection implementation, and an identical operation is performed against a - * confirmed collection implementation. A confirmed collection - * implementation is something like {@code java.util.ArrayList}, which is - * known to conform exactly to its collection interface's contract. After the - * operation takes place on both your collection implementation and the - * confirmed collection implementation, the two collections are compared to see - * if their state is identical. The comparison is usually much more involved - * than a simple {@code equals} test. This verification is used to ensure - * proper modifications are made along with ensuring that the collection does - * not change when read-only modifications are made. - *

    - * The {@link #collection} field holds an instance of your collection - * implementation; the {@link #confirmed} field holds an instance of the - * confirmed collection implementation. The {@link #resetEmpty()} and - * {@link #resetFull()} methods set these fields to empty or full collections, - * so that tests can proceed from a known state. - *

    - * After a modification operation to both {@link #collection} and - * {@link #confirmed}, the {@link #verifyAll()} method is invoked to compare - * the results. You may want to override {@link # verifyAll ()} to perform - * additional verifications. For instance, when testing the collection - * views of a map, {@link AbstractTestMap} would override {@link # verifyAll ()} to make - * sure the map is changed after the collection view is changed. - *

    - * If you're extending this class directly, you will have to provide - * implementations for the following: - *

      - *
    • {@link #makeConfirmedCollection()} - *
    • {@link #makeConfirmedFullCollection()} - *
    - *

    - * Those methods should provide a confirmed collection implementation - * that's compatible with your collection implementation. - *

    - * If you're extending {@link AbstractTestList}, {@link SetAbstractTestCase}, - * or {@link AbstractTestBag}, you probably don't have to worry about the - * above methods, because those three classes already override the methods - * to provide standard JDK confirmed collections.

    - *

    - * Other notes - *

    - * If your {@link Collection} fails one of these tests by design, - * you may still use this base set of cases. Simply override the - * test case (method) your {@link Collection} fails. - * - * @version $Revision: #2 $ $Date: 2008/07/15 $ - * - * @author Rodney Waldhoff - * @author Paul Jack - * @author Michael A. Smith - * @author Neil O'Toole - * @author Stephen Colebourne - */ -public abstract class CollectionAbstractTestCase extends ObjectAbstractTestCase { - - // - // NOTE: - // - // Collection doesn't define any semantics for equals, and recommends you - // use reference-based default behavior of Object.equals. (And a test for - // that already exists in ObjectAbstractTestCase). Tests for equality of lists, sets - // and bags will have to be written in test subclasses. Thus, there is no - // tests on Collection.equals nor any for Collection.hashCode. - // - - - // These fields are used by reset() and verifyAll(), and any test - // method that tests a modification. - - /** - * A collection instance that will be used for testing. - */ - public Collection collection; - - /** - * Confirmed collection. This is an instance of a collection that is - * confirmed to conform exactly to the java.util.Collection contract. - * Modification operations are tested by performing a mod on your - * collection, performing the exact same mod on an equivalent confirmed - * collection, and then calling verifyAll() to make sure your collection - * still matches the confirmed collection. - */ - public Collection confirmed; - - //----------------------------------------------------------------------- - /** - * Specifies whether equal elements in the collection are, in fact, - * distinguishable with information not readily available. That is, if a - * particular value is to be removed from the collection, then there is - * one and only one value that can be removed, even if there are other - * elements which are equal to it. - * - *

    In most collection cases, elements are not distinguishable (equal is - * equal), thus this method defaults to return false. In some cases, - * however, they are. For example, the collection returned from the map's - * values() collection view are backed by the map, so while there may be - * two values that are equal, their associated keys are not. Since the - * keys are distinguishable, the values are. - * - *

    This flag is used to skip some verifications for iterator.remove() - * where it is impossible to perform an equivalent modification on the - * confirmed collection because it is not possible to determine which - * value in the confirmed collection to actually remove. Tests that - * override the default (i.e. where equal elements are distinguishable), - * should provide additional tests on iterator.remove() to make sure the - * proper elements are removed when remove() is called on the iterator. - **/ - public boolean areEqualElementsDistinguishable() { - return false; - } - - /** - * Returns true if the collections produced by - * {@link #makeCollection()} and {@link #makeFullCollection()} - * support the {@code add} and {@code addAll} - * operations.

    - * Default implementation returns true. Override if your collection - * class does not support add or addAll. - */ - public boolean isAddSupported() { - return true; - } - - /** - * Returns true if the collections produced by - * {@link #makeCollection()} and {@link #makeFullCollection()} - * support the {@code remove}, {@code removeAll}, - * {@code retainAll}, {@code clear} and - * {@code iterator().remove()} methods. - * Default implementation returns true. Override if your collection - * class does not support removal operations. - */ - public boolean isRemoveSupported() { - return true; - } - - /** - * Returns true to indicate that the collection supports holding null. - * The default implementation returns true; - */ - public boolean isNullSupported() { - return true; - } - - /** - * Returns true to indicate that the collection supports fail fast iterators. - * The default implementation returns true; - */ - public boolean isFailFastSupported() { - return false; - } - - /** - * Returns true to indicate that the collection supports equals() comparisons. - * This implementation returns false; - */ - public boolean isEqualsCheckable() { - return false; - } - - //----------------------------------------------------------------------- - /** - * Verifies that {@link #collection} and {@link #confirmed} have - * identical state. - */ - public void verifyAll() { - int confirmedSize = confirmed.size(); - assertEquals("Collection size should match confirmed collection's", - confirmedSize, collection.size()); - assertEquals("Collection isEmpty() result should match confirmed " + - " collection's", - confirmed.isEmpty(), collection.isEmpty()); - - // verify the collections are the same by attempting to match each - // object in the collection and confirmed collection. To account for - // duplicates and differing orders, each confirmed element is copied - // into an array and a flag is maintained for each element to determine - // whether it has been matched once and only once. If all elements in - // the confirmed collection are matched once and only once and there - // aren't any elements left to be matched in the collection, - // verification is a success. - - // copy each collection value into an array - Object[] confirmedValues = new Object[confirmedSize]; - - Iterator iter; - - iter = confirmed.iterator(); - int pos = 0; - while(iter.hasNext()) { - confirmedValues[pos++] = iter.next(); - } - - // allocate an array of boolean flags for tracking values that have - // been matched once and only once. - boolean[] matched = new boolean[confirmedSize]; - - // now iterate through the values of the collection and try to match - // the value with one in the confirmed array. - iter = collection.iterator(); - while(iter.hasNext()) { - Object o = iter.next(); - boolean match = false; - for(int i = 0; i < confirmedSize; i++) { - if(matched[i]) { - // skip values already matched - continue; - } - if(o == confirmedValues[i] || - (o != null && o.equals(confirmedValues[i]))) { - // values matched - matched[i] = true; - match = true; - break; - } - } - // no match found! - if(!match) { - fail("Collection should not contain a value that the " + - "confirmed collection does not have: " + o + - "\nTest: " + collection + "\nReal: " + confirmed); - } - } - - // make sure there aren't any unmatched values - for(int i = 0; i < confirmedSize; i++) { - if(!matched[i]) { - // the collection didn't match all the confirmed values - fail("Collection should contain all values that are in the confirmed collection" + - "\nTest: " + collection + "\nReal: " + confirmed); - } - } - } - - //----------------------------------------------------------------------- - /** - * Resets the {@link #collection} and {@link #confirmed} fields to empty - * collections. Invoke this method before performing a modification - * test. - */ - public void resetEmpty() { - this.collection = makeCollection(); - this.confirmed = makeConfirmedCollection(); - } - - /** - * Resets the {@link #collection} and {@link #confirmed} fields to full - * collections. Invoke this method before performing a modification - * test. - */ - public void resetFull() { - this.collection = makeFullCollection(); - this.confirmed = makeConfirmedFullCollection(); - } - - //----------------------------------------------------------------------- - /** - * Returns a confirmed empty collection. - * For instance, an {@link java.util.ArrayList} for lists or a - * {@link java.util.HashSet} for sets. - * - * @return a confirmed empty collection - */ - public abstract Collection makeConfirmedCollection(); - - /** - * Returns a confirmed full collection. - * For instance, an {@link java.util.ArrayList} for lists or a - * {@link java.util.HashSet} for sets. The returned collection - * should contain the elements returned by {@link #getFullElements()}. - * - * @return a confirmed full collection - */ - public abstract Collection makeConfirmedFullCollection(); - - /** - * Return a new, empty {@link Collection} to be used for testing. - */ - public abstract Collection makeCollection(); - - /** - * Returns a full collection to be used for testing. The collection - * returned by this method should contain every element returned by - * {@link #getFullElements()}. The default implementation, in fact, - * simply invokes {@code addAll} on an empty collection with - * the results of {@link #getFullElements()}. Override this default - * if your collection doesn't support addAll. - */ - public Collection makeFullCollection() { - Collection c = makeCollection(); - c.addAll(Arrays.asList(getFullElements())); - return c; - } - - /** - * Returns an empty collection for Object tests. - */ - public Object makeObject() { - return makeCollection(); - } - - /** - * Creates a new Map Entry that is independent of the first and the map. - */ - public Map.Entry cloneMapEntry(Map.Entry entry) { - HashMap map = new HashMap(); - map.put(entry.getKey(), entry.getValue()); - return (Map.Entry) map.entrySet().iterator().next(); - } - - //----------------------------------------------------------------------- - /** - * Returns an array of objects that are contained in a collection - * produced by {@link #makeFullCollection()}. Every element in the - * returned array must be an element in a full collection.

    - * The default implementation returns a heterogenous array of - * objects with some duplicates. null is added if allowed. - * Override if you require specific testing elements. Note that if you - * override {@link #makeFullCollection()}, you must override - * this method to reflect the contents of a full collection. - */ - public Object[] getFullElements() { - if (isNullSupported()) { - ArrayList list = new ArrayList(); - list.addAll(Arrays.asList(getFullNonNullElements())); - list.add(4, null); - return list.toArray(); - } else { - return (Object[]) getFullNonNullElements().clone(); - } - } - - /** - * Returns an array of elements that are not contained in a - * full collection. Every element in the returned array must - * not exist in a collection returned by {@link #makeFullCollection()}. - * The default implementation returns a heterogenous array of elements - * without null. Note that some of the tests add these elements - * to an empty or full collection, so if your collection restricts - * certain kinds of elements, you should override this method. - */ - public Object[] getOtherElements() { - return getOtherNonNullElements(); - } - - //----------------------------------------------------------------------- - /** - * Returns a list of elements suitable for return by - * {@link #getFullElements()}. The array returned by this method - * does not include null, but does include a variety of objects - * of different types. Override getFullElements to return - * the results of this method if your collection does not support - * the null element. - */ - public Object[] getFullNonNullElements() { - return new Object[] { - new String(""), - new String("One"), - new Integer(2), - "Three", - new Integer(4), - "One", - new Double(5), - new Float(6), - "Seven", - "Eight", - new String("Nine"), - new Integer(10), - new Short((short)11), - new Long(12), - "Thirteen", - "14", - "15", - new Byte((byte)16) - }; - } - - /** - * Returns the default list of objects returned by - * {@link #getOtherElements()}. Includes many objects - * of different types. - */ - public Object[] getOtherNonNullElements() { - return new Object[] { - new Integer(0), - new Float(0), - new Double(0), - "Zero", - new Short((short)0), - new Byte((byte)0), - new Long(0), - new Character('\u0000'), - "0" - }; - } - - /** - * Returns a list of string elements suitable for return by - * {@link #getFullElements()}. Override getFullElements to return - * the results of this method if your collection does not support - * heterogenous elements or the null element. - */ - public Object[] getFullNonNullStringElements() { - return new Object[] { - "If","the","dull","substance","of","my","flesh","were","thought", - "Injurious","distance","could","not","stop","my","way", - }; - } - - /** - * Returns a list of string elements suitable for return by - * {@link #getOtherElements()}. Override getOtherElements to return - * the results of this method if your collection does not support - * heterogenous elements or the null element. - */ - public Object[] getOtherNonNullStringElements() { - return new Object[] { - "For","then","despite",/* of */"space","I","would","be","brought", - "From","limits","far","remote","where","thou","dost","stay" - }; - } - - // Tests - //----------------------------------------------------------------------- - /** - * Tests {@link Collection#add(Object)}. - */ - public void testCollectionAdd() { - if (!isAddSupported()) return; - - Object[] elements = getFullElements(); - for (int i = 0; i < elements.length; i++) { - resetEmpty(); - boolean r = collection.add(elements[i]); - confirmed.add(elements[i]); - verifyAll(); - assertTrue("Empty collection changed after add", r); - assertEquals("Collection size is 1 after first add", 1, collection.size()); - } - - resetEmpty(); - int size = 0; - for (int i = 0; i < elements.length; i++) { - boolean r = collection.add(elements[i]); - confirmed.add(elements[i]); - verifyAll(); - if (r) size++; - assertEquals("Collection size should grow after add", - size, collection.size()); - assertTrue("Collection should contain added element", - collection.contains(elements[i])); - } - } - - - /** - * Tests {@link Collection#addAll(Collection)}. - */ - public void testCollectionAddAll() { - if (!isAddSupported()) return; - - resetEmpty(); - Object[] elements = getFullElements(); - boolean r = collection.addAll(Arrays.asList(elements)); - confirmed.addAll(Arrays.asList(elements)); - verifyAll(); - assertTrue("Empty collection should change after addAll", r); - for (int i = 0; i < elements.length; i++) { - assertTrue("Collection should contain added element", - collection.contains(elements[i])); - } - - resetFull(); - int size = collection.size(); - elements = getOtherElements(); - r = collection.addAll(Arrays.asList(elements)); - confirmed.addAll(Arrays.asList(elements)); - verifyAll(); - assertTrue("Full collection should change after addAll", r); - for (int i = 0; i < elements.length; i++) { - assertTrue("Full collection should contain added element", - collection.contains(elements[i])); - } - assertEquals("Size should increase after addAll", - size + elements.length, collection.size()); - - resetFull(); - size = collection.size(); - r = collection.addAll(Arrays.asList(getFullElements())); - confirmed.addAll(Arrays.asList(getFullElements())); - verifyAll(); - if (r) { - assertTrue("Size should increase if addAll returns true", - size < collection.size()); - } else { - assertEquals("Size should not change if addAll returns false", - size, collection.size()); - } - } - - - /** - * If {@link #isAddSupported()} returns false, tests that add operations - * raise UnsupportedOperationException. - */ - public void testUnsupportedAdd() { - if (isAddSupported()) return; - - resetEmpty(); - try { - collection.add(new Object()); - fail("Emtpy collection should not support add."); - } catch (UnsupportedOperationException e) { - // expected - } - // make sure things didn't change even if the expected exception was - // thrown. - verifyAll(); - - try { - collection.addAll(Arrays.asList(getFullElements())); - fail("Emtpy collection should not support addAll."); - } catch (UnsupportedOperationException e) { - // expected - } - // make sure things didn't change even if the expected exception was - // thrown. - verifyAll(); - - resetFull(); - try { - collection.add(new Object()); - fail("Full collection should not support add."); - } catch (UnsupportedOperationException e) { - // expected - } - // make sure things didn't change even if the expected exception was - // thrown. - verifyAll(); - - try { - collection.addAll(Arrays.asList(getOtherElements())); - fail("Full collection should not support addAll."); - } catch (UnsupportedOperationException e) { - // expected - } - // make sure things didn't change even if the expected exception was - // thrown. - verifyAll(); - } - - - /** - * Test {@link Collection#clear()}. - */ - public void testCollectionClear() { - if (!isRemoveSupported()) return; - - resetEmpty(); - collection.clear(); // just to make sure it doesn't raise anything - verifyAll(); - - resetFull(); - collection.clear(); - confirmed.clear(); - verifyAll(); - } - - - /** - * Tests {@link Collection#contains(Object)}. - */ - public void testCollectionContains() { - Object[] elements; - - resetEmpty(); - elements = getFullElements(); - for(int i = 0; i < elements.length; i++) { - assertTrue("Empty collection shouldn't contain element[" + i + "]", - !collection.contains(elements[i])); - } - // make sure calls to "contains" don't change anything - verifyAll(); - - elements = getOtherElements(); - for(int i = 0; i < elements.length; i++) { - assertTrue("Empty collection shouldn't contain element[" + i + "]", - !collection.contains(elements[i])); - } - // make sure calls to "contains" don't change anything - verifyAll(); - - resetFull(); - elements = getFullElements(); - for(int i = 0; i < elements.length; i++) { - assertTrue("Full collection should contain element[" + i + "]", - collection.contains(elements[i])); - } - // make sure calls to "contains" don't change anything - verifyAll(); - - resetFull(); - elements = getOtherElements(); - for(int i = 0; i < elements.length; i++) { - assertTrue("Full collection shouldn't contain element", - !collection.contains(elements[i])); - } - } - - - /** - * Tests {@link Collection#containsAll(Collection)}. - */ - public void testCollectionContainsAll() { - resetEmpty(); - Collection col = new HashSet(); - assertTrue("Every Collection should contain all elements of an " + - "empty Collection.", collection.containsAll(col)); - col.addAll(Arrays.asList(getOtherElements())); - assertTrue("Empty Collection shouldn't contain all elements of " + - "a non-empty Collection.", !collection.containsAll(col)); - // make sure calls to "containsAll" don't change anything - verifyAll(); - - resetFull(); - assertTrue("Full collection shouldn't contain other elements", - !collection.containsAll(col)); - - col.clear(); - col.addAll(Arrays.asList(getFullElements())); - assertTrue("Full collection should containAll full elements", - collection.containsAll(col)); - // make sure calls to "containsAll" don't change anything - verifyAll(); - - int min = (getFullElements().length < 2 ? 0 : 2); - int max = (getFullElements().length == 1 ? 1 : - (getFullElements().length <= 5 ? getFullElements().length - 1 : 5)); - col = Arrays.asList(getFullElements()).subList(min, max); - assertTrue("Full collection should containAll partial full " + - "elements", collection.containsAll(col)); - assertTrue("Full collection should containAll itself", - collection.containsAll(collection)); - // make sure calls to "containsAll" don't change anything - verifyAll(); - - col = new ArrayList(); - col.addAll(Arrays.asList(getFullElements())); - col.addAll(Arrays.asList(getFullElements())); - assertTrue("Full collection should containAll duplicate full " + - "elements", collection.containsAll(col)); - - // make sure calls to "containsAll" don't change anything - verifyAll(); - } - - /** - * Tests {@link Collection#isEmpty()}. - */ - public void testCollectionIsEmpty() { - resetEmpty(); - assertEquals("New Collection should be empty.", - true, collection.isEmpty()); - // make sure calls to "isEmpty() don't change anything - verifyAll(); - - resetFull(); - assertEquals("Full collection shouldn't be empty", - false, collection.isEmpty()); - // make sure calls to "isEmpty() don't change anything - verifyAll(); - } - - - /** - * Tests the read-only functionality of {@link Collection#iterator()}. - */ - public void testCollectionIterator() { - resetEmpty(); - Iterator it1 = collection.iterator(); - assertEquals("Iterator for empty Collection shouldn't have next.", - false, it1.hasNext()); - try { - it1.next(); - fail("Iterator at end of Collection should throw " + - "NoSuchElementException when next is called."); - } catch(NoSuchElementException e) { - // expected - } - // make sure nothing has changed after non-modification - verifyAll(); - - resetFull(); - it1 = collection.iterator(); - for (int i = 0; i < collection.size(); i++) { - assertTrue("Iterator for full collection should haveNext", - it1.hasNext()); - it1.next(); - } - assertTrue("Iterator should be finished", !it1.hasNext()); - - ArrayList list = new ArrayList(); - it1 = collection.iterator(); - for (int i = 0; i < collection.size(); i++) { - Object next = it1.next(); - assertTrue("Collection should contain element returned by " + - "its iterator", collection.contains(next)); - list.add(next); - } - try { - it1.next(); - fail("iterator.next() should raise NoSuchElementException " + - "after it finishes"); - } catch (NoSuchElementException e) { - // expected - } - // make sure nothing has changed after non-modification - verifyAll(); - } - - - /** - * Tests removals from {@link Collection#iterator()}. - */ - public void testCollectionIteratorRemove() { - if (!isRemoveSupported()) return; - - resetEmpty(); - try { - collection.iterator().remove(); - fail("New iterator.remove should raise IllegalState"); - } catch (IllegalStateException e) { - // expected - } - verifyAll(); - - try { - Iterator iter = collection.iterator(); - iter.hasNext(); - iter.remove(); - fail("New iterator.remove should raise IllegalState " + - "even after hasNext"); - } catch (IllegalStateException e) { - // expected - } - verifyAll(); - - resetFull(); - int size = collection.size(); - Iterator iter = collection.iterator(); - while (iter.hasNext()) { - Object o = iter.next(); - // TreeMap reuses the Map Entry, so the verify below fails - // Clone it here if necessary - if (o instanceof Map.Entry) { - o = cloneMapEntry((Map.Entry) o); - } - iter.remove(); - - // if the elements aren't distinguishable, we can just remove a - // matching element from the confirmed collection and verify - // contents are still the same. Otherwise, we don't have the - // ability to distinguish the elements and determine which to - // remove from the confirmed collection (in which case, we don't - // verify because we don't know how). - // - // see areEqualElementsDistinguishable() - if(!areEqualElementsDistinguishable()) { - confirmed.remove(o); - verifyAll(); - } - - size--; - assertEquals("Collection should shrink by one after " + - "iterator.remove", size, collection.size()); - } - assertTrue("Collection should be empty after iterator purge", - collection.isEmpty()); - - resetFull(); - iter = collection.iterator(); - iter.next(); - iter.remove(); - try { - iter.remove(); - fail("Second iter.remove should raise IllegalState"); - } catch (IllegalStateException e) { - // expected - } - } - - - /** - * Tests {@link Collection#remove(Object)}. - */ - public void testCollectionRemove() { - if (!isRemoveSupported()) return; - - resetEmpty(); - Object[] elements = getFullElements(); - for (int i = 0; i < elements.length; i++) { - assertTrue("Shouldn't remove nonexistent element", - !collection.remove(elements[i])); - verifyAll(); - } - - Object[] other = getOtherElements(); - - resetFull(); - for (int i = 0; i < other.length; i++) { - assertTrue("Shouldn't remove nonexistent other element", - !collection.remove(other[i])); - verifyAll(); - } - - int size = collection.size(); - for (int i = 0; i < elements.length; i++) { - resetFull(); - assertTrue("Collection should remove extant element: " + elements[i], - collection.remove(elements[i])); - - // if the elements aren't distinguishable, we can just remove a - // matching element from the confirmed collection and verify - // contents are still the same. Otherwise, we don't have the - // ability to distinguish the elements and determine which to - // remove from the confirmed collection (in which case, we don't - // verify because we don't know how). - // - // see areEqualElementsDistinguishable() - if(!areEqualElementsDistinguishable()) { - confirmed.remove(elements[i]); - verifyAll(); - } - - assertEquals("Collection should shrink after remove", - size - 1, collection.size()); - } - } - - - /** - * Tests {@link Collection#removeAll(Collection)}. - */ - public void testCollectionRemoveAll() { - if (!isRemoveSupported()) return; - - resetEmpty(); - assertTrue("Emtpy collection removeAll should return false for " + - "empty input", - !collection.removeAll(Collections.EMPTY_SET)); - verifyAll(); - - assertTrue("Emtpy collection removeAll should return false for " + - "nonempty input", - !collection.removeAll(new ArrayList(collection))); - verifyAll(); - - resetFull(); - assertTrue("Full collection removeAll should return false for " + - "empty input", - !collection.removeAll(Collections.EMPTY_SET)); - verifyAll(); - - assertTrue("Full collection removeAll should return false for other elements", - !collection.removeAll(Arrays.asList(getOtherElements()))); - verifyAll(); - - assertTrue("Full collection removeAll should return true for full elements", - collection.removeAll(new HashSet(collection))); - confirmed.removeAll(new HashSet(confirmed)); - verifyAll(); - - resetFull(); - int size = collection.size(); - int min = (getFullElements().length < 2 ? 0 : 2); - int max = (getFullElements().length == 1 ? 1 : - (getFullElements().length <= 5 ? getFullElements().length - 1 : 5)); - Collection all = Arrays.asList(getFullElements()).subList(min, max); - assertTrue("Full collection removeAll should work", - collection.removeAll(all)); - confirmed.removeAll(all); - verifyAll(); - - assertTrue("Collection should shrink after removeAll", - collection.size() < size); - Iterator iter = all.iterator(); - while (iter.hasNext()) { - assertTrue("Collection shouldn't contain removed element", - !collection.contains(iter.next())); - } - } - - - /** - * Tests {@link Collection#retainAll(Collection)}. - */ - public void testCollectionRetainAll() { - if (!isRemoveSupported()) return; - - resetEmpty(); - List elements = Arrays.asList(getFullElements()); - List other = Arrays.asList(getOtherElements()); - - assertTrue("Empty retainAll() should return false", - !collection.retainAll(Collections.EMPTY_SET)); - verifyAll(); - - assertTrue("Empty retainAll() should return false", - !collection.retainAll(elements)); - verifyAll(); - - resetFull(); - assertTrue("Collection should change from retainAll empty", - collection.retainAll(Collections.EMPTY_SET)); - confirmed.retainAll(Collections.EMPTY_SET); - verifyAll(); - - resetFull(); - assertTrue("Collection changed from retainAll other", - collection.retainAll(other)); - confirmed.retainAll(other); - verifyAll(); - - resetFull(); - int size = collection.size(); - assertTrue("Collection shouldn't change from retainAll elements", - !collection.retainAll(elements)); - verifyAll(); - assertEquals("Collection size shouldn't change", size, - collection.size()); - - if (getFullElements().length > 1) { - resetFull(); - size = collection.size(); - int min = (getFullElements().length < 2 ? 0 : 2); - int max = (getFullElements().length <= 5 ? getFullElements().length - 1 : 5); - assertTrue("Collection should changed by partial retainAll", - collection.retainAll(elements.subList(min, max))); - confirmed.retainAll(elements.subList(min, max)); - verifyAll(); - - Iterator iter = collection.iterator(); - while (iter.hasNext()) { - assertTrue("Collection only contains retained element", - elements.subList(min, max).contains(iter.next())); - } - } - - resetFull(); - HashSet set = new HashSet(elements); - size = collection.size(); - assertTrue("Collection shouldn't change from retainAll without " + - "duplicate elements", !collection.retainAll(set)); - verifyAll(); - assertEquals("Collection size didn't change from nonduplicate " + - "retainAll", size, collection.size()); - } - - - /** - * Tests {@link Collection#size()}. - */ - public void testCollectionSize() { - resetEmpty(); - assertEquals("Size of new Collection is 0.", 0, collection.size()); - - resetFull(); - assertTrue("Size of full collection should be greater than zero", - collection.size() > 0); - } - - - /** - * Tests {@link Collection#toArray()}. - */ - public void testCollectionToArray() { - resetEmpty(); - assertEquals("Empty Collection should return empty array for toArray", - 0, collection.toArray().length); - - resetFull(); - Object[] array = collection.toArray(); - assertEquals("Full collection toArray should be same size as " + - "collection", array.length, collection.size()); - Object[] confirmedArray = confirmed.toArray(); - assertEquals("length of array from confirmed collection should " + - "match the length of the collection's array", - confirmedArray.length, array.length); - boolean[] matched = new boolean[array.length]; - - for (int i = 0; i < array.length; i++) { - assertTrue("Collection should contain element in toArray", - collection.contains(array[i])); - - boolean match = false; - // find a match in the confirmed array - for(int j = 0; j < array.length; j++) { - // skip already matched - if(matched[j]) continue; - if(array[i] == confirmedArray[j] || - (array[i] != null && array[i].equals(confirmedArray[j]))) { - matched[j] = true; - match = true; - break; - } - } - if(!match) { - fail("element " + i + " in returned array should be found " + - "in the confirmed collection's array"); - } - } - for(int i = 0; i < matched.length; i++) { - assertEquals("Collection should return all its elements in " + - "toArray", true, matched[i]); - } - } - - - /** - * Tests {@link Collection#toArray(Object[])}. - */ - public void testCollectionToArray2() { - resetEmpty(); - Object[] a = new Object[] { new Object(), null, null }; - Object[] array = collection.toArray(a); - assertEquals("Given array shouldn't shrink", array, a); - assertEquals("Last element should be set to null", a[0], null); - verifyAll(); - - resetFull(); - try { - array = collection.toArray(new Void[0]); - fail("toArray(new Void[0]) should raise ArrayStore"); - } catch (ArrayStoreException e) { - // expected - } - verifyAll(); - - try { - array = collection.toArray(null); - fail("toArray(null) should raise NPE"); - } catch (NullPointerException e) { - // expected - } - verifyAll(); - - array = collection.toArray(new Object[0]); - a = collection.toArray(); - assertEquals("toArrays should be equal", - Arrays.asList(array), Arrays.asList(a)); - - // Figure out if they're all the same class - // TODO: It'd be nicer to detect a common superclass - HashSet classes = new HashSet(); - for (int i = 0; i < array.length; i++) { - classes.add((array[i] == null) ? null : array[i].getClass()); - } - if (classes.size() > 1) return; - - Class cl = (Class)classes.iterator().next(); - if (Map.Entry.class.isAssignableFrom(cl)) { // check needed for protective cases like Predicated/Unmod map entrySet - cl = Map.Entry.class; - } - a = (Object[])Array.newInstance(cl, 0); - array = collection.toArray(a); - assertEquals("toArray(Object[]) should return correct array type", - a.getClass(), array.getClass()); - assertEquals("type-specific toArrays should be equal", - Arrays.asList(array), - Arrays.asList(collection.toArray())); - verifyAll(); - } - - - /** - * Tests {@code toString} on a collection. - */ - public void testCollectionToString() { - resetEmpty(); - assertTrue("toString shouldn't return null", - collection.toString() != null); - - resetFull(); - assertTrue("toString shouldn't return null", - collection.toString() != null); - } - - - /** - * If isRemoveSupported() returns false, tests to see that remove - * operations raise an UnsupportedOperationException. - */ - public void testUnsupportedRemove() { - if (isRemoveSupported()) return; - - resetEmpty(); - try { - collection.clear(); - fail("clear should raise UnsupportedOperationException"); - } catch (UnsupportedOperationException e) { - // expected - } - verifyAll(); - - try { - collection.remove(null); - fail("remove should raise UnsupportedOperationException"); - } catch (UnsupportedOperationException e) { - // expected - } - verifyAll(); - - try { - collection.removeAll(null); - fail("removeAll should raise UnsupportedOperationException"); - } catch (UnsupportedOperationException e) { - // expected - } - verifyAll(); - - try { - collection.retainAll(null); - fail("removeAll should raise UnsupportedOperationException"); - } catch (UnsupportedOperationException e) { - // expected - } - verifyAll(); - - resetFull(); - try { - Iterator iterator = collection.iterator(); - iterator.next(); - iterator.remove(); - fail("iterator.remove should raise UnsupportedOperationException"); - } catch (UnsupportedOperationException e) { - // expected - } - verifyAll(); - - } - - - /** - * Tests that the collection's iterator is fail-fast. - */ - public void testCollectionIteratorFailFast() { - if (!isFailFastSupported()) return; - - if (isAddSupported()) { - resetFull(); - try { - Iterator iter = collection.iterator(); - Object o = getOtherElements()[0]; - collection.add(o); - confirmed.add(o); - iter.next(); - fail("next after add should raise ConcurrentModification"); - } catch (ConcurrentModificationException e) { - // expected - } - verifyAll(); - - resetFull(); - try { - Iterator iter = collection.iterator(); - collection.addAll(Arrays.asList(getOtherElements())); - confirmed.addAll(Arrays.asList(getOtherElements())); - iter.next(); - fail("next after addAll should raise ConcurrentModification"); - } catch (ConcurrentModificationException e) { - // expected - } - verifyAll(); - } - - if (!isRemoveSupported()) return; - - resetFull(); - try { - Iterator iter = collection.iterator(); - collection.clear(); - iter.next(); - fail("next after clear should raise ConcurrentModification"); - } catch (ConcurrentModificationException e) { - // expected - } catch (NoSuchElementException e) { - // (also legal given spec) - } - - resetFull(); - try { - Iterator iter = collection.iterator(); - collection.remove(getFullElements()[0]); - iter.next(); - fail("next after remove should raise ConcurrentModification"); - } catch (ConcurrentModificationException e) { - // expected - } - - resetFull(); - try { - Iterator iter = collection.iterator(); - List sublist = Arrays.asList(getFullElements()).subList(2,5); - collection.removeAll(sublist); - iter.next(); - fail("next after removeAll should raise ConcurrentModification"); - } catch (ConcurrentModificationException e) { - // expected - } - - resetFull(); - try { - Iterator iter = collection.iterator(); - List sublist = Arrays.asList(getFullElements()).subList(2,5); - collection.retainAll(sublist); - iter.next(); - fail("next after retainAll should raise ConcurrentModification"); - } catch (ConcurrentModificationException e) { - // expected - } - } - - /* - public void testSerializeDeserializeThenCompare() throws Exception { - Object obj = makeCollection(); - if (obj instanceof Serializable && isTestSerialization()) { - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - ObjectOutputStream out = new ObjectOutputStream(buffer); - out.writeObject(obj); - out.close(); - - ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray())); - Object dest = in.readObject(); - in.close(); - if (isEqualsCheckable()) { - assertEquals("obj != deserialize(serialize(obj)) - EMPTY Collection", obj, dest); - } - } - obj = makeFullCollection(); - if (obj instanceof Serializable && isTestSerialization()) { - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - ObjectOutputStream out = new ObjectOutputStream(buffer); - out.writeObject(obj); - out.close(); - - ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray())); - Object dest = in.readObject(); - in.close(); - if (isEqualsCheckable()) { - assertEquals("obj != deserialize(serialize(obj)) - FULL Collection", obj, dest); - } - } - } - */ - -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Copyright 2001-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.twelvemonkeys.util; + +import org.junit.Test; + +import java.lang.reflect.Array; +import java.util.*; + +import static org.junit.Assert.*; + +/** + * Abstract test class for {@link java.util.Collection} methods and contracts. + *

    + * You should create a concrete subclass of this class to test any custom + * {@link Collection} implementation. At minimum, you'll have to + * implement the {@link #makeCollection()} method. You might want to + * override some of the additional public methods as well: + *

    + * Element Population Methods + *

    + * Override these if your collection restricts what kind of elements are + * allowed (for instance, if {@code null} is not permitted): + *

      + *
    • {@link #getFullElements()} + *
    • {@link #getOtherElements()} + *
    + *

    + * Supported Operation Methods + *

    + * Override these if your collection doesn't support certain operations: + *

      + *
    • {@link #isAddSupported()} + *
    • {@link #isRemoveSupported()} + *
    • {@link #areEqualElementsDistinguishable()} + *
    • {@link #isNullSupported()} + *
    • {@link #isFailFastSupported()} + *
    + *

    + * Fixture Methods + *

    + * Fixtures are used to verify that the the operation results in correct state + * for the collection. Basically, the operation is performed against your + * collection implementation, and an identical operation is performed against a + * confirmed collection implementation. A confirmed collection + * implementation is something like {@code java.util.ArrayList}, which is + * known to conform exactly to its collection interface's contract. After the + * operation takes place on both your collection implementation and the + * confirmed collection implementation, the two collections are compared to see + * if their state is identical. The comparison is usually much more involved + * than a simple {@code equals} test. This verification is used to ensure + * proper modifications are made along with ensuring that the collection does + * not change when read-only modifications are made. + *

    + * The {@link #collection} field holds an instance of your collection + * implementation; the {@link #confirmed} field holds an instance of the + * confirmed collection implementation. The {@link #resetEmpty()} and + * {@link #resetFull()} methods set these fields to empty or full collections, + * so that tests can proceed from a known state. + *

    + * After a modification operation to both {@link #collection} and + * {@link #confirmed}, the {@link #verifyAll()} method is invoked to compare + * the results. You may want to override {@link # verifyAll ()} to perform + * additional verifications. For instance, when testing the collection + * views of a map, {@link AbstractTestMap} would override {@link # verifyAll ()} to make + * sure the map is changed after the collection view is changed. + *

    + * If you're extending this class directly, you will have to provide + * implementations for the following: + *

      + *
    • {@link #makeConfirmedCollection()} + *
    • {@link #makeConfirmedFullCollection()} + *
    + *

    + * Those methods should provide a confirmed collection implementation + * that's compatible with your collection implementation. + *

    + * If you're extending {@link AbstractTestList}, {@link SetAbstractTest}, + * or {@link AbstractTestBag}, you probably don't have to worry about the + * above methods, because those three classes already override the methods + * to provide standard JDK confirmed collections.

    + *

    + * Other notes + *

    + * If your {@link Collection} fails one of these tests by design, + * you may still use this base set of cases. Simply override the + * test case (method) your {@link Collection} fails. + * + * @version $Revision: #2 $ $Date: 2008/07/15 $ + * + * @author Rodney Waldhoff + * @author Paul Jack + * @author Michael A. Smith + * @author Neil O'Toole + * @author Stephen Colebourne + */ +public abstract class CollectionAbstractTest extends ObjectAbstractTest { + + // + // NOTE: + // + // Collection doesn't define any semantics for equals, and recommends you + // use reference-based default behavior of Object.equals. (And a test for + // that already exists in ObjectAbstractTestCase). Tests for equality of lists, sets + // and bags will have to be written in test subclasses. Thus, there is no + // tests on Collection.equals nor any for Collection.hashCode. + // + + + // These fields are used by reset() and verifyAll(), and any test + // method that tests a modification. + + /** + * A collection instance that will be used for testing. + */ + public Collection collection; + + /** + * Confirmed collection. This is an instance of a collection that is + * confirmed to conform exactly to the java.util.Collection contract. + * Modification operations are tested by performing a mod on your + * collection, performing the exact same mod on an equivalent confirmed + * collection, and then calling verifyAll() to make sure your collection + * still matches the confirmed collection. + */ + public Collection confirmed; + + //----------------------------------------------------------------------- + /** + * Specifies whether equal elements in the collection are, in fact, + * distinguishable with information not readily available. That is, if a + * particular value is to be removed from the collection, then there is + * one and only one value that can be removed, even if there are other + * elements which are equal to it. + * + *

    In most collection cases, elements are not distinguishable (equal is + * equal), thus this method defaults to return false. In some cases, + * however, they are. For example, the collection returned from the map's + * values() collection view are backed by the map, so while there may be + * two values that are equal, their associated keys are not. Since the + * keys are distinguishable, the values are. + * + *

    This flag is used to skip some verifications for iterator.remove() + * where it is impossible to perform an equivalent modification on the + * confirmed collection because it is not possible to determine which + * value in the confirmed collection to actually remove. Tests that + * override the default (i.e. where equal elements are distinguishable), + * should provide additional tests on iterator.remove() to make sure the + * proper elements are removed when remove() is called on the iterator. + **/ + public boolean areEqualElementsDistinguishable() { + return false; + } + + /** + * Returns true if the collections produced by + * {@link #makeCollection()} and {@link #makeFullCollection()} + * support the {@code add} and {@code addAll} + * operations.

    + * Default implementation returns true. Override if your collection + * class does not support add or addAll. + */ + public boolean isAddSupported() { + return true; + } + + /** + * Returns true if the collections produced by + * {@link #makeCollection()} and {@link #makeFullCollection()} + * support the {@code remove}, {@code removeAll}, + * {@code retainAll}, {@code clear} and + * {@code iterator().remove()} methods. + * Default implementation returns true. Override if your collection + * class does not support removal operations. + */ + public boolean isRemoveSupported() { + return true; + } + + /** + * Returns true to indicate that the collection supports holding null. + * The default implementation returns true; + */ + public boolean isNullSupported() { + return true; + } + + /** + * Returns true to indicate that the collection supports fail fast iterators. + * The default implementation returns true; + */ + public boolean isFailFastSupported() { + return false; + } + + /** + * Returns true to indicate that the collection supports equals() comparisons. + * This implementation returns false; + */ + public boolean isEqualsCheckable() { + return false; + } + + //----------------------------------------------------------------------- + /** + * Verifies that {@link #collection} and {@link #confirmed} have + * identical state. + */ + public void verifyAll() { + int confirmedSize = confirmed.size(); + assertEquals("Collection size should match confirmed collection's", + confirmedSize, collection.size()); + assertEquals("Collection isEmpty() result should match confirmed " + + " collection's", + confirmed.isEmpty(), collection.isEmpty()); + + // verify the collections are the same by attempting to match each + // object in the collection and confirmed collection. To account for + // duplicates and differing orders, each confirmed element is copied + // into an array and a flag is maintained for each element to determine + // whether it has been matched once and only once. If all elements in + // the confirmed collection are matched once and only once and there + // aren't any elements left to be matched in the collection, + // verification is a success. + + // copy each collection value into an array + Object[] confirmedValues = new Object[confirmedSize]; + + Iterator iter; + + iter = confirmed.iterator(); + int pos = 0; + while(iter.hasNext()) { + confirmedValues[pos++] = iter.next(); + } + + // allocate an array of boolean flags for tracking values that have + // been matched once and only once. + boolean[] matched = new boolean[confirmedSize]; + + // now iterate through the values of the collection and try to match + // the value with one in the confirmed array. + iter = collection.iterator(); + while(iter.hasNext()) { + Object o = iter.next(); + boolean match = false; + for(int i = 0; i < confirmedSize; i++) { + if(matched[i]) { + // skip values already matched + continue; + } + if(o == confirmedValues[i] || + (o != null && o.equals(confirmedValues[i]))) { + // values matched + matched[i] = true; + match = true; + break; + } + } + // no match found! + if(!match) { + fail("Collection should not contain a value that the " + + "confirmed collection does not have: " + o + + "\nTest: " + collection + "\nReal: " + confirmed); + } + } + + // make sure there aren't any unmatched values + for(int i = 0; i < confirmedSize; i++) { + if(!matched[i]) { + // the collection didn't match all the confirmed values + fail("Collection should contain all values that are in the confirmed collection" + + "\nTest: " + collection + "\nReal: " + confirmed); + } + } + } + + //----------------------------------------------------------------------- + /** + * Resets the {@link #collection} and {@link #confirmed} fields to empty + * collections. Invoke this method before performing a modification + * test. + */ + public void resetEmpty() { + this.collection = makeCollection(); + this.confirmed = makeConfirmedCollection(); + } + + /** + * Resets the {@link #collection} and {@link #confirmed} fields to full + * collections. Invoke this method before performing a modification + * test. + */ + public void resetFull() { + this.collection = makeFullCollection(); + this.confirmed = makeConfirmedFullCollection(); + } + + //----------------------------------------------------------------------- + /** + * Returns a confirmed empty collection. + * For instance, an {@link java.util.ArrayList} for lists or a + * {@link java.util.HashSet} for sets. + * + * @return a confirmed empty collection + */ + public abstract Collection makeConfirmedCollection(); + + /** + * Returns a confirmed full collection. + * For instance, an {@link java.util.ArrayList} for lists or a + * {@link java.util.HashSet} for sets. The returned collection + * should contain the elements returned by {@link #getFullElements()}. + * + * @return a confirmed full collection + */ + public abstract Collection makeConfirmedFullCollection(); + + /** + * Return a new, empty {@link Collection} to be used for testing. + */ + public abstract Collection makeCollection(); + + /** + * Returns a full collection to be used for testing. The collection + * returned by this method should contain every element returned by + * {@link #getFullElements()}. The default implementation, in fact, + * simply invokes {@code addAll} on an empty collection with + * the results of {@link #getFullElements()}. Override this default + * if your collection doesn't support addAll. + */ + public Collection makeFullCollection() { + Collection c = makeCollection(); + c.addAll(Arrays.asList(getFullElements())); + return c; + } + + /** + * Returns an empty collection for Object tests. + */ + public Object makeObject() { + return makeCollection(); + } + + /** + * Creates a new Map Entry that is independent of the first and the map. + */ + public Map.Entry cloneMapEntry(Map.Entry entry) { + HashMap map = new HashMap(); + map.put(entry.getKey(), entry.getValue()); + return (Map.Entry) map.entrySet().iterator().next(); + } + + //----------------------------------------------------------------------- + /** + * Returns an array of objects that are contained in a collection + * produced by {@link #makeFullCollection()}. Every element in the + * returned array must be an element in a full collection.

    + * The default implementation returns a heterogenous array of + * objects with some duplicates. null is added if allowed. + * Override if you require specific testing elements. Note that if you + * override {@link #makeFullCollection()}, you must override + * this method to reflect the contents of a full collection. + */ + public Object[] getFullElements() { + if (isNullSupported()) { + ArrayList list = new ArrayList(); + list.addAll(Arrays.asList(getFullNonNullElements())); + list.add(4, null); + return list.toArray(); + } else { + return (Object[]) getFullNonNullElements().clone(); + } + } + + /** + * Returns an array of elements that are not contained in a + * full collection. Every element in the returned array must + * not exist in a collection returned by {@link #makeFullCollection()}. + * The default implementation returns a heterogenous array of elements + * without null. Note that some of the tests add these elements + * to an empty or full collection, so if your collection restricts + * certain kinds of elements, you should override this method. + */ + public Object[] getOtherElements() { + return getOtherNonNullElements(); + } + + //----------------------------------------------------------------------- + /** + * Returns a list of elements suitable for return by + * {@link #getFullElements()}. The array returned by this method + * does not include null, but does include a variety of objects + * of different types. Override getFullElements to return + * the results of this method if your collection does not support + * the null element. + */ + public Object[] getFullNonNullElements() { + return new Object[] { + new String(""), + new String("One"), + new Integer(2), + "Three", + new Integer(4), + "One", + new Double(5), + new Float(6), + "Seven", + "Eight", + new String("Nine"), + new Integer(10), + new Short((short)11), + new Long(12), + "Thirteen", + "14", + "15", + new Byte((byte)16) + }; + } + + /** + * Returns the default list of objects returned by + * {@link #getOtherElements()}. Includes many objects + * of different types. + */ + public Object[] getOtherNonNullElements() { + return new Object[] { + new Integer(0), + new Float(0), + new Double(0), + "Zero", + new Short((short)0), + new Byte((byte)0), + new Long(0), + new Character('\u0000'), + "0" + }; + } + + /** + * Returns a list of string elements suitable for return by + * {@link #getFullElements()}. Override getFullElements to return + * the results of this method if your collection does not support + * heterogenous elements or the null element. + */ + public Object[] getFullNonNullStringElements() { + return new Object[] { + "If","the","dull","substance","of","my","flesh","were","thought", + "Injurious","distance","could","not","stop","my","way", + }; + } + + /** + * Returns a list of string elements suitable for return by + * {@link #getOtherElements()}. Override getOtherElements to return + * the results of this method if your collection does not support + * heterogenous elements or the null element. + */ + public Object[] getOtherNonNullStringElements() { + return new Object[] { + "For","then","despite",/* of */"space","I","would","be","brought", + "From","limits","far","remote","where","thou","dost","stay" + }; + } + + // Tests + //----------------------------------------------------------------------- + /** + * Tests {@link Collection#add(Object)}. + */ + @Test + public void testCollectionAdd() { + if (!isAddSupported()) return; + + Object[] elements = getFullElements(); + for (int i = 0; i < elements.length; i++) { + resetEmpty(); + boolean r = collection.add(elements[i]); + confirmed.add(elements[i]); + verifyAll(); + assertTrue("Empty collection changed after add", r); + assertEquals("Collection size is 1 after first add", 1, collection.size()); + } + + resetEmpty(); + int size = 0; + for (int i = 0; i < elements.length; i++) { + boolean r = collection.add(elements[i]); + confirmed.add(elements[i]); + verifyAll(); + if (r) size++; + assertEquals("Collection size should grow after add", + size, collection.size()); + assertTrue("Collection should contain added element", + collection.contains(elements[i])); + } + } + + + /** + * Tests {@link Collection#addAll(Collection)}. + */ + @Test + public void testCollectionAddAll() { + if (!isAddSupported()) return; + + resetEmpty(); + Object[] elements = getFullElements(); + boolean r = collection.addAll(Arrays.asList(elements)); + confirmed.addAll(Arrays.asList(elements)); + verifyAll(); + assertTrue("Empty collection should change after addAll", r); + for (int i = 0; i < elements.length; i++) { + assertTrue("Collection should contain added element", + collection.contains(elements[i])); + } + + resetFull(); + int size = collection.size(); + elements = getOtherElements(); + r = collection.addAll(Arrays.asList(elements)); + confirmed.addAll(Arrays.asList(elements)); + verifyAll(); + assertTrue("Full collection should change after addAll", r); + for (int i = 0; i < elements.length; i++) { + assertTrue("Full collection should contain added element", + collection.contains(elements[i])); + } + assertEquals("Size should increase after addAll", + size + elements.length, collection.size()); + + resetFull(); + size = collection.size(); + r = collection.addAll(Arrays.asList(getFullElements())); + confirmed.addAll(Arrays.asList(getFullElements())); + verifyAll(); + if (r) { + assertTrue("Size should increase if addAll returns true", + size < collection.size()); + } else { + assertEquals("Size should not change if addAll returns false", + size, collection.size()); + } + } + + + /** + * If {@link #isAddSupported()} returns false, tests that add operations + * raise UnsupportedOperationException. + */ + @Test + public void testUnsupportedAdd() { + if (isAddSupported()) return; + + resetEmpty(); + try { + collection.add(new Object()); + fail("Emtpy collection should not support add."); + } catch (UnsupportedOperationException e) { + // expected + } + // make sure things didn't change even if the expected exception was + // thrown. + verifyAll(); + + try { + collection.addAll(Arrays.asList(getFullElements())); + fail("Emtpy collection should not support addAll."); + } catch (UnsupportedOperationException e) { + // expected + } + // make sure things didn't change even if the expected exception was + // thrown. + verifyAll(); + + resetFull(); + try { + collection.add(new Object()); + fail("Full collection should not support add."); + } catch (UnsupportedOperationException e) { + // expected + } + // make sure things didn't change even if the expected exception was + // thrown. + verifyAll(); + + try { + collection.addAll(Arrays.asList(getOtherElements())); + fail("Full collection should not support addAll."); + } catch (UnsupportedOperationException e) { + // expected + } + // make sure things didn't change even if the expected exception was + // thrown. + verifyAll(); + } + + + /** + * Test {@link Collection#clear()}. + */ + @Test + public void testCollectionClear() { + if (!isRemoveSupported()) return; + + resetEmpty(); + collection.clear(); // just to make sure it doesn't raise anything + verifyAll(); + + resetFull(); + collection.clear(); + confirmed.clear(); + verifyAll(); + } + + + /** + * Tests {@link Collection#contains(Object)}. + */ + public void testCollectionContains() { + Object[] elements; + + resetEmpty(); + elements = getFullElements(); + for(int i = 0; i < elements.length; i++) { + assertTrue("Empty collection shouldn't contain element[" + i + "]", + !collection.contains(elements[i])); + } + // make sure calls to "contains" don't change anything + verifyAll(); + + elements = getOtherElements(); + for(int i = 0; i < elements.length; i++) { + assertTrue("Empty collection shouldn't contain element[" + i + "]", + !collection.contains(elements[i])); + } + // make sure calls to "contains" don't change anything + verifyAll(); + + resetFull(); + elements = getFullElements(); + for(int i = 0; i < elements.length; i++) { + assertTrue("Full collection should contain element[" + i + "]", + collection.contains(elements[i])); + } + // make sure calls to "contains" don't change anything + verifyAll(); + + resetFull(); + elements = getOtherElements(); + for(int i = 0; i < elements.length; i++) { + assertTrue("Full collection shouldn't contain element", + !collection.contains(elements[i])); + } + } + + + /** + * Tests {@link Collection#containsAll(Collection)}. + */ + @Test + public void testCollectionContainsAll() { + resetEmpty(); + Collection col = new HashSet(); + assertTrue("Every Collection should contain all elements of an " + + "empty Collection.", collection.containsAll(col)); + col.addAll(Arrays.asList(getOtherElements())); + assertTrue("Empty Collection shouldn't contain all elements of " + + "a non-empty Collection.", !collection.containsAll(col)); + // make sure calls to "containsAll" don't change anything + verifyAll(); + + resetFull(); + assertTrue("Full collection shouldn't contain other elements", + !collection.containsAll(col)); + + col.clear(); + col.addAll(Arrays.asList(getFullElements())); + assertTrue("Full collection should containAll full elements", + collection.containsAll(col)); + // make sure calls to "containsAll" don't change anything + verifyAll(); + + int min = (getFullElements().length < 2 ? 0 : 2); + int max = (getFullElements().length == 1 ? 1 : + (getFullElements().length <= 5 ? getFullElements().length - 1 : 5)); + col = Arrays.asList(getFullElements()).subList(min, max); + assertTrue("Full collection should containAll partial full " + + "elements", collection.containsAll(col)); + assertTrue("Full collection should containAll itself", + collection.containsAll(collection)); + // make sure calls to "containsAll" don't change anything + verifyAll(); + + col = new ArrayList(); + col.addAll(Arrays.asList(getFullElements())); + col.addAll(Arrays.asList(getFullElements())); + assertTrue("Full collection should containAll duplicate full " + + "elements", collection.containsAll(col)); + + // make sure calls to "containsAll" don't change anything + verifyAll(); + } + + /** + * Tests {@link Collection#isEmpty()}. + */ + @Test + public void testCollectionIsEmpty() { + resetEmpty(); + assertEquals("New Collection should be empty.", + true, collection.isEmpty()); + // make sure calls to "isEmpty() don't change anything + verifyAll(); + + resetFull(); + assertEquals("Full collection shouldn't be empty", + false, collection.isEmpty()); + // make sure calls to "isEmpty() don't change anything + verifyAll(); + } + + + /** + * Tests the read-only functionality of {@link Collection#iterator()}. + */ + @Test + public void testCollectionIterator() { + resetEmpty(); + Iterator it1 = collection.iterator(); + assertEquals("Iterator for empty Collection shouldn't have next.", + false, it1.hasNext()); + try { + it1.next(); + fail("Iterator at end of Collection should throw " + + "NoSuchElementException when next is called."); + } catch(NoSuchElementException e) { + // expected + } + // make sure nothing has changed after non-modification + verifyAll(); + + resetFull(); + it1 = collection.iterator(); + for (int i = 0; i < collection.size(); i++) { + assertTrue("Iterator for full collection should haveNext", + it1.hasNext()); + it1.next(); + } + assertTrue("Iterator should be finished", !it1.hasNext()); + + ArrayList list = new ArrayList(); + it1 = collection.iterator(); + for (int i = 0; i < collection.size(); i++) { + Object next = it1.next(); + assertTrue("Collection should contain element returned by " + + "its iterator", collection.contains(next)); + list.add(next); + } + try { + it1.next(); + fail("iterator.next() should raise NoSuchElementException " + + "after it finishes"); + } catch (NoSuchElementException e) { + // expected + } + // make sure nothing has changed after non-modification + verifyAll(); + } + + + /** + * Tests removals from {@link Collection#iterator()}. + */ + @Test + public void testCollectionIteratorRemove() { + if (!isRemoveSupported()) return; + + resetEmpty(); + try { + collection.iterator().remove(); + fail("New iterator.remove should raise IllegalState"); + } catch (IllegalStateException e) { + // expected + } + verifyAll(); + + try { + Iterator iter = collection.iterator(); + iter.hasNext(); + iter.remove(); + fail("New iterator.remove should raise IllegalState " + + "even after hasNext"); + } catch (IllegalStateException e) { + // expected + } + verifyAll(); + + resetFull(); + int size = collection.size(); + Iterator iter = collection.iterator(); + while (iter.hasNext()) { + Object o = iter.next(); + // TreeMap reuses the Map Entry, so the verify below fails + // Clone it here if necessary + if (o instanceof Map.Entry) { + o = cloneMapEntry((Map.Entry) o); + } + iter.remove(); + + // if the elements aren't distinguishable, we can just remove a + // matching element from the confirmed collection and verify + // contents are still the same. Otherwise, we don't have the + // ability to distinguish the elements and determine which to + // remove from the confirmed collection (in which case, we don't + // verify because we don't know how). + // + // see areEqualElementsDistinguishable() + if(!areEqualElementsDistinguishable()) { + confirmed.remove(o); + verifyAll(); + } + + size--; + assertEquals("Collection should shrink by one after " + + "iterator.remove", size, collection.size()); + } + assertTrue("Collection should be empty after iterator purge", + collection.isEmpty()); + + resetFull(); + iter = collection.iterator(); + iter.next(); + iter.remove(); + try { + iter.remove(); + fail("Second iter.remove should raise IllegalState"); + } catch (IllegalStateException e) { + // expected + } + } + + + /** + * Tests {@link Collection#remove(Object)}. + */ + @Test + public void testCollectionRemove() { + if (!isRemoveSupported()) return; + + resetEmpty(); + Object[] elements = getFullElements(); + for (int i = 0; i < elements.length; i++) { + assertTrue("Shouldn't remove nonexistent element", + !collection.remove(elements[i])); + verifyAll(); + } + + Object[] other = getOtherElements(); + + resetFull(); + for (int i = 0; i < other.length; i++) { + assertTrue("Shouldn't remove nonexistent other element", + !collection.remove(other[i])); + verifyAll(); + } + + int size = collection.size(); + for (int i = 0; i < elements.length; i++) { + resetFull(); + assertTrue("Collection should remove extant element: " + elements[i], + collection.remove(elements[i])); + + // if the elements aren't distinguishable, we can just remove a + // matching element from the confirmed collection and verify + // contents are still the same. Otherwise, we don't have the + // ability to distinguish the elements and determine which to + // remove from the confirmed collection (in which case, we don't + // verify because we don't know how). + // + // see areEqualElementsDistinguishable() + if(!areEqualElementsDistinguishable()) { + confirmed.remove(elements[i]); + verifyAll(); + } + + assertEquals("Collection should shrink after remove", + size - 1, collection.size()); + } + } + + + /** + * Tests {@link Collection#removeAll(Collection)}. + */ + @Test + public void testCollectionRemoveAll() { + if (!isRemoveSupported()) return; + + resetEmpty(); + assertTrue("Emtpy collection removeAll should return false for " + + "empty input", + !collection.removeAll(Collections.EMPTY_SET)); + verifyAll(); + + assertTrue("Emtpy collection removeAll should return false for " + + "nonempty input", + !collection.removeAll(new ArrayList(collection))); + verifyAll(); + + resetFull(); + assertTrue("Full collection removeAll should return false for " + + "empty input", + !collection.removeAll(Collections.EMPTY_SET)); + verifyAll(); + + assertTrue("Full collection removeAll should return false for other elements", + !collection.removeAll(Arrays.asList(getOtherElements()))); + verifyAll(); + + assertTrue("Full collection removeAll should return true for full elements", + collection.removeAll(new HashSet(collection))); + confirmed.removeAll(new HashSet(confirmed)); + verifyAll(); + + resetFull(); + int size = collection.size(); + int min = (getFullElements().length < 2 ? 0 : 2); + int max = (getFullElements().length == 1 ? 1 : + (getFullElements().length <= 5 ? getFullElements().length - 1 : 5)); + Collection all = Arrays.asList(getFullElements()).subList(min, max); + assertTrue("Full collection removeAll should work", + collection.removeAll(all)); + confirmed.removeAll(all); + verifyAll(); + + assertTrue("Collection should shrink after removeAll", + collection.size() < size); + Iterator iter = all.iterator(); + while (iter.hasNext()) { + assertTrue("Collection shouldn't contain removed element", + !collection.contains(iter.next())); + } + } + + + /** + * Tests {@link Collection#retainAll(Collection)}. + */ + @Test + public void testCollectionRetainAll() { + if (!isRemoveSupported()) return; + + resetEmpty(); + List elements = Arrays.asList(getFullElements()); + List other = Arrays.asList(getOtherElements()); + + assertTrue("Empty retainAll() should return false", + !collection.retainAll(Collections.EMPTY_SET)); + verifyAll(); + + assertTrue("Empty retainAll() should return false", + !collection.retainAll(elements)); + verifyAll(); + + resetFull(); + assertTrue("Collection should change from retainAll empty", + collection.retainAll(Collections.EMPTY_SET)); + confirmed.retainAll(Collections.EMPTY_SET); + verifyAll(); + + resetFull(); + assertTrue("Collection changed from retainAll other", + collection.retainAll(other)); + confirmed.retainAll(other); + verifyAll(); + + resetFull(); + int size = collection.size(); + assertTrue("Collection shouldn't change from retainAll elements", + !collection.retainAll(elements)); + verifyAll(); + assertEquals("Collection size shouldn't change", size, + collection.size()); + + if (getFullElements().length > 1) { + resetFull(); + size = collection.size(); + int min = (getFullElements().length < 2 ? 0 : 2); + int max = (getFullElements().length <= 5 ? getFullElements().length - 1 : 5); + assertTrue("Collection should changed by partial retainAll", + collection.retainAll(elements.subList(min, max))); + confirmed.retainAll(elements.subList(min, max)); + verifyAll(); + + Iterator iter = collection.iterator(); + while (iter.hasNext()) { + assertTrue("Collection only contains retained element", + elements.subList(min, max).contains(iter.next())); + } + } + + resetFull(); + HashSet set = new HashSet(elements); + size = collection.size(); + assertTrue("Collection shouldn't change from retainAll without " + + "duplicate elements", !collection.retainAll(set)); + verifyAll(); + assertEquals("Collection size didn't change from nonduplicate " + + "retainAll", size, collection.size()); + } + + + /** + * Tests {@link Collection#size()}. + */ + @Test + public void testCollectionSize() { + resetEmpty(); + assertEquals("Size of new Collection is 0.", 0, collection.size()); + + resetFull(); + assertTrue("Size of full collection should be greater than zero", + collection.size() > 0); + } + + + /** + * Tests {@link Collection#toArray()}. + */ + public void testCollectionToArray() { + resetEmpty(); + assertEquals("Empty Collection should return empty array for toArray", + 0, collection.toArray().length); + + resetFull(); + Object[] array = collection.toArray(); + assertEquals("Full collection toArray should be same size as " + + "collection", array.length, collection.size()); + Object[] confirmedArray = confirmed.toArray(); + assertEquals("length of array from confirmed collection should " + + "match the length of the collection's array", + confirmedArray.length, array.length); + boolean[] matched = new boolean[array.length]; + + for (int i = 0; i < array.length; i++) { + assertTrue("Collection should contain element in toArray", + collection.contains(array[i])); + + boolean match = false; + // find a match in the confirmed array + for(int j = 0; j < array.length; j++) { + // skip already matched + if(matched[j]) continue; + if(array[i] == confirmedArray[j] || + (array[i] != null && array[i].equals(confirmedArray[j]))) { + matched[j] = true; + match = true; + break; + } + } + if(!match) { + fail("element " + i + " in returned array should be found " + + "in the confirmed collection's array"); + } + } + for(int i = 0; i < matched.length; i++) { + assertEquals("Collection should return all its elements in " + + "toArray", true, matched[i]); + } + } + + + /** + * Tests {@link Collection#toArray(Object[])}. + */ + @Test + public void testCollectionToArray2() { + resetEmpty(); + Object[] a = new Object[] { new Object(), null, null }; + Object[] array = collection.toArray(a); + assertEquals("Given array shouldn't shrink", array, a); + assertEquals("Last element should be set to null", a[0], null); + verifyAll(); + + resetFull(); + try { + array = collection.toArray(new Void[0]); + fail("toArray(new Void[0]) should raise ArrayStore"); + } catch (ArrayStoreException e) { + // expected + } + verifyAll(); + + try { + array = collection.toArray(null); + fail("toArray(null) should raise NPE"); + } catch (NullPointerException e) { + // expected + } + verifyAll(); + + array = collection.toArray(new Object[0]); + a = collection.toArray(); + assertEquals("toArrays should be equal", + Arrays.asList(array), Arrays.asList(a)); + + // Figure out if they're all the same class + // TODO: It'd be nicer to detect a common superclass + HashSet classes = new HashSet(); + for (int i = 0; i < array.length; i++) { + classes.add((array[i] == null) ? null : array[i].getClass()); + } + if (classes.size() > 1) return; + + Class cl = (Class)classes.iterator().next(); + if (Map.Entry.class.isAssignableFrom(cl)) { // check needed for protective cases like Predicated/Unmod map entrySet + cl = Map.Entry.class; + } + a = (Object[])Array.newInstance(cl, 0); + array = collection.toArray(a); + assertEquals("toArray(Object[]) should return correct array type", + a.getClass(), array.getClass()); + assertEquals("type-specific toArrays should be equal", + Arrays.asList(array), + Arrays.asList(collection.toArray())); + verifyAll(); + } + + + /** + * Tests {@code toString} on a collection. + */ + @Test + public void testCollectionToString() { + resetEmpty(); + assertTrue("toString shouldn't return null", + collection.toString() != null); + + resetFull(); + assertTrue("toString shouldn't return null", + collection.toString() != null); + } + + + /** + * If isRemoveSupported() returns false, tests to see that remove + * operations raise an UnsupportedOperationException. + */ + @Test + public void testUnsupportedRemove() { + if (isRemoveSupported()) return; + + resetEmpty(); + try { + collection.clear(); + fail("clear should raise UnsupportedOperationException"); + } catch (UnsupportedOperationException e) { + // expected + } + verifyAll(); + + try { + collection.remove(null); + fail("remove should raise UnsupportedOperationException"); + } catch (UnsupportedOperationException e) { + // expected + } + verifyAll(); + + try { + collection.removeAll(null); + fail("removeAll should raise UnsupportedOperationException"); + } catch (UnsupportedOperationException e) { + // expected + } + verifyAll(); + + try { + collection.retainAll(null); + fail("removeAll should raise UnsupportedOperationException"); + } catch (UnsupportedOperationException e) { + // expected + } + verifyAll(); + + resetFull(); + try { + Iterator iterator = collection.iterator(); + iterator.next(); + iterator.remove(); + fail("iterator.remove should raise UnsupportedOperationException"); + } catch (UnsupportedOperationException e) { + // expected + } + verifyAll(); + + } + + + /** + * Tests that the collection's iterator is fail-fast. + */ + @Test + public void testCollectionIteratorFailFast() { + if (!isFailFastSupported()) return; + + if (isAddSupported()) { + resetFull(); + try { + Iterator iter = collection.iterator(); + Object o = getOtherElements()[0]; + collection.add(o); + confirmed.add(o); + iter.next(); + fail("next after add should raise ConcurrentModification"); + } catch (ConcurrentModificationException e) { + // expected + } + verifyAll(); + + resetFull(); + try { + Iterator iter = collection.iterator(); + collection.addAll(Arrays.asList(getOtherElements())); + confirmed.addAll(Arrays.asList(getOtherElements())); + iter.next(); + fail("next after addAll should raise ConcurrentModification"); + } catch (ConcurrentModificationException e) { + // expected + } + verifyAll(); + } + + if (!isRemoveSupported()) return; + + resetFull(); + try { + Iterator iter = collection.iterator(); + collection.clear(); + iter.next(); + fail("next after clear should raise ConcurrentModification"); + } catch (ConcurrentModificationException e) { + // expected + } catch (NoSuchElementException e) { + // (also legal given spec) + } + + resetFull(); + try { + Iterator iter = collection.iterator(); + collection.remove(getFullElements()[0]); + iter.next(); + fail("next after remove should raise ConcurrentModification"); + } catch (ConcurrentModificationException e) { + // expected + } + + resetFull(); + try { + Iterator iter = collection.iterator(); + List sublist = Arrays.asList(getFullElements()).subList(2,5); + collection.removeAll(sublist); + iter.next(); + fail("next after removeAll should raise ConcurrentModification"); + } catch (ConcurrentModificationException e) { + // expected + } + + resetFull(); + try { + Iterator iter = collection.iterator(); + List sublist = Arrays.asList(getFullElements()).subList(2,5); + collection.retainAll(sublist); + iter.next(); + fail("next after retainAll should raise ConcurrentModification"); + } catch (ConcurrentModificationException e) { + // expected + } + } + + /* + @Test + public void testSerializeDeserializeThenCompare() throws Exception { + Object obj = makeCollection(); + if (obj instanceof Serializable && isTestSerialization()) { + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + ObjectOutputStream out = new ObjectOutputStream(buffer); + out.writeObject(obj); + out.close(); + + ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray())); + Object dest = in.readObject(); + in.close(); + if (isEqualsCheckable()) { + assertEquals("obj != deserialize(serialize(obj)) - EMPTY Collection", obj, dest); + } + } + obj = makeFullCollection(); + if (obj instanceof Serializable && isTestSerialization()) { + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + ObjectOutputStream out = new ObjectOutputStream(buffer); + out.writeObject(obj); + out.close(); + + ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray())); + Object dest = in.readObject(); + in.close(); + if (isEqualsCheckable()) { + assertEquals("obj != deserialize(serialize(obj)) - FULL Collection", obj, dest); + } + } + } + */ + +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/CollectionUtilTest.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/CollectionUtilTest.java index 948cdbc2..ca3ae856 100644 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/CollectionUtilTest.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/CollectionUtilTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util; @@ -34,7 +36,6 @@ import org.junit.Test; import java.util.*; import static org.junit.Assert.*; -import static org.junit.Assert.assertEquals; /** * CollectionUtilTest diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/LRUMapTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/LRUMapTest.java similarity index 76% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/LRUMapTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/LRUMapTest.java index 91d0f564..bfe47d1c 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/LRUMapTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/LRUMapTest.java @@ -1,181 +1,221 @@ -/* - * Copyright 2001-2004 The Apache Software Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.twelvemonkeys.util; - -import java.util.*; - -/** - * Tests LRUMap. - * - * @version $Revision: #2 $ $Date: 2008/07/15 $ - * - * @author James Strachan - * @author Morgan Delagrange - * @author Stephen Colebourne - */ -public class LRUMapTestCase extends LinkedMapTestCase { - - public boolean isGetStructuralModify() { - return true; - } - - //----------------------------------------------------------------------- - public Map makeEmptyMap() { - return new LRUMap(); - } - - //----------------------------------------------------------------------- - public void testRemoveLRU() { - LRUMap map2 = new LRUMap(3); - map2.put(1,"foo"); - map2.put(2,"foo"); - map2.put(3,"foo"); - map2.put(4,"foo"); // removes 1 since max size exceeded - map2.removeLRU(); // should be Integer(2) - - assertTrue("Second to last value should exist",map2.get(new Integer(3)).equals("foo")); - assertTrue("First value inserted should not exist", map2.get(new Integer(1)) == null); - } - - public void testMultiplePuts() { - LRUMap map2 = new LRUMap(2); - map2.put(1,"foo"); - map2.put(2,"bar"); - map2.put(3,"foo"); - map2.put(4,"bar"); - - assertTrue("last value should exist",map2.get(new Integer(4)).equals("bar")); - assertTrue("LRU should not exist", map2.get(new Integer(1)) == null); - } - - /** - * Confirm that putAll(Map) does not cause the LRUMap - * to exceed its maxiumum size. - */ - public void testPutAll() { - LRUMap map2 = new LRUMap(3); - map2.put(1,"foo"); - map2.put(2,"foo"); - map2.put(3,"foo"); - - HashMap hashMap = new HashMap(); - hashMap.put(4,"foo"); - - map2.putAll(hashMap); - - assertTrue("max size is 3, but actual size is " + map2.size(), - map2.size() == 3); - assertTrue("map should contain the Integer(4) object", - map2.containsKey(new Integer(4))); - } - - /** - * Test that the size of the map is reduced immediately - * when setMaximumSize(int) is called - */ - public void testSetMaximumSize() { - LRUMap map = new LRUMap(6); - map.put("1","1"); - map.put("2","2"); - map.put("3","3"); - map.put("4","4"); - map.put("5","5"); - map.put("6","6"); - map.setMaxSize(3); - - assertTrue("map should have size = 3, but actually = " + map.size(), - map.size() == 3); - } - - public void testGetPromotion() { - LRUMap map = new LRUMap(3); - map.put("1","1"); - map.put("2","2"); - map.put("3","3"); - // LRU is now 1 (then 2 then 3) - - // promote 1 to top - // eviction order is now 2,3,1 - map.get("1"); - - // add another value, forcing a remove - // 2 should be evicted (then 3,1,4) - map.put("4","4"); - - Iterator keyIterator = map.keySet().iterator(); - Object[] keys = new Object[3]; - for (int i = 0; keyIterator.hasNext() ; ++i) { - keys[i] = keyIterator.next(); - } - - assertTrue("first evicted should be 3, was " + keys[0], keys[0].equals("3")); - assertTrue("second evicted should be 1, was " + keys[1], keys[1].equals("1")); - assertTrue("third evicted should be 4, was " + keys[2], keys[2].equals("4")); - - } - - /** - * You should be able to subclass LRUMap and perform a - * custom action when items are removed automatically - * by the LRU algorithm (the removeLRU() method). - */ - public void testLRUSubclass() { - LRUCounter counter = new LRUCounter(3); - // oldest <--> newest - // 1 - counter.put("1","foo"); - // 1 2 - counter.put("2","foo"); - // 1 2 3 - counter.put("3","foo"); - // 2 3 1 - counter.put("1","foo"); - // 3 1 4 (2 goes out) - counter.put("4","foo"); - // 1 4 5 (3 goes out) - counter.put("5","foo"); - // 4 5 2 (1 goes out) - counter.put("2","foo"); - // 4 2 - counter.remove("5"); - - assertTrue("size should be 2, but was " + counter.size(), counter.size() == 2); - assertTrue("removedCount should be 3 but was " + counter.removedCount, - counter.removedCount == 3); - - assertTrue("first removed was '2'",counter.list.get(0).equals("2")); - assertTrue("second removed was '3'",counter.list.get(1).equals("3")); - assertTrue("third removed was '1'",counter.list.get(2).equals("1")); - - //assertTrue("oldest key is '4'",counter.get(0).equals("4")); - //assertTrue("newest key is '2'",counter.get(1).equals("2")); - } - - private class LRUCounter extends LRUMap { - int removedCount = 0; - List list = new ArrayList(3); - - LRUCounter(int i) { - super(i); - } - - public void processRemoved(Entry pEntry) { - ++removedCount; - list.add(pEntry.getKey()); - } - } -} - +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Copyright 2001-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.twelvemonkeys.util; + +import org.junit.Test; + +import java.util.*; + +import static org.junit.Assert.assertTrue; + +/** + * Tests LRUMap. + * + * @version $Revision: #2 $ $Date: 2008/07/15 $ + * + * @author James Strachan + * @author Morgan Delagrange + * @author Stephen Colebourne + */ +public class LRUMapTest extends LinkedMapTest { + + public boolean isGetStructuralModify() { + return true; + } + + //----------------------------------------------------------------------- + public Map makeEmptyMap() { + return new LRUMap(); + } + + //----------------------------------------------------------------------- + @Test + public void testRemoveLRU() { + LRUMap map2 = new LRUMap(3); + map2.put(1,"foo"); + map2.put(2,"foo"); + map2.put(3,"foo"); + map2.put(4,"foo"); // removes 1 since max size exceeded + map2.removeLRU(); // should be Integer(2) + + assertTrue("Second to last value should exist",map2.get(new Integer(3)).equals("foo")); + assertTrue("First value inserted should not exist", map2.get(new Integer(1)) == null); + } + + @Test + public void testMultiplePuts() { + LRUMap map2 = new LRUMap(2); + map2.put(1,"foo"); + map2.put(2,"bar"); + map2.put(3,"foo"); + map2.put(4,"bar"); + + assertTrue("last value should exist",map2.get(new Integer(4)).equals("bar")); + assertTrue("LRU should not exist", map2.get(new Integer(1)) == null); + } + + /** + * Confirm that putAll(Map) does not cause the LRUMap + * to exceed its maxiumum size. + */ + @Test + public void testPutAll() { + LRUMap map2 = new LRUMap(3); + map2.put(1,"foo"); + map2.put(2,"foo"); + map2.put(3,"foo"); + + HashMap hashMap = new HashMap(); + hashMap.put(4,"foo"); + + map2.putAll(hashMap); + + assertTrue("max size is 3, but actual size is " + map2.size(), + map2.size() == 3); + assertTrue("map should contain the Integer(4) object", + map2.containsKey(new Integer(4))); + } + + /** + * Test that the size of the map is reduced immediately + * when setMaximumSize(int) is called + */ + @Test + public void testSetMaximumSize() { + LRUMap map = new LRUMap(6); + map.put("1","1"); + map.put("2","2"); + map.put("3","3"); + map.put("4","4"); + map.put("5","5"); + map.put("6","6"); + map.setMaxSize(3); + + assertTrue("map should have size = 3, but actually = " + map.size(), + map.size() == 3); + } + + @Test + public void testGetPromotion() { + LRUMap map = new LRUMap(3); + map.put("1","1"); + map.put("2","2"); + map.put("3","3"); + // LRU is now 1 (then 2 then 3) + + // promote 1 to top + // eviction order is now 2,3,1 + map.get("1"); + + // add another value, forcing a remove + // 2 should be evicted (then 3,1,4) + map.put("4","4"); + + Iterator keyIterator = map.keySet().iterator(); + Object[] keys = new Object[3]; + for (int i = 0; keyIterator.hasNext() ; ++i) { + keys[i] = keyIterator.next(); + } + + assertTrue("first evicted should be 3, was " + keys[0], keys[0].equals("3")); + assertTrue("second evicted should be 1, was " + keys[1], keys[1].equals("1")); + assertTrue("third evicted should be 4, was " + keys[2], keys[2].equals("4")); + + } + + /** + * You should be able to subclass LRUMap and perform a + * custom action when items are removed automatically + * by the LRU algorithm (the removeLRU() method). + */ + @Test + public void testLRUSubclass() { + LRUCounter counter = new LRUCounter(3); + // oldest <--> newest + // 1 + counter.put("1","foo"); + // 1 2 + counter.put("2","foo"); + // 1 2 3 + counter.put("3","foo"); + // 2 3 1 + counter.put("1","foo"); + // 3 1 4 (2 goes out) + counter.put("4","foo"); + // 1 4 5 (3 goes out) + counter.put("5","foo"); + // 4 5 2 (1 goes out) + counter.put("2","foo"); + // 4 2 + counter.remove("5"); + + assertTrue("size should be 2, but was " + counter.size(), counter.size() == 2); + assertTrue("removedCount should be 3 but was " + counter.removedCount, + counter.removedCount == 3); + + assertTrue("first removed was '2'",counter.list.get(0).equals("2")); + assertTrue("second removed was '3'",counter.list.get(1).equals("3")); + assertTrue("third removed was '1'",counter.list.get(2).equals("1")); + + //assertTrue("oldest key is '4'",counter.get(0).equals("4")); + //assertTrue("newest key is '2'",counter.get(1).equals("2")); + } + + private class LRUCounter extends LRUMap { + int removedCount = 0; + List list = new ArrayList(3); + + LRUCounter(int i) { + super(i); + } + + public void processRemoved(Entry pEntry) { + ++removedCount; + list.add(pEntry.getKey()); + } + } +} + diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/LinkedMapTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/LinkedMapTest.java similarity index 77% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/LinkedMapTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/LinkedMapTest.java index 7cdaefe1..79c6a1eb 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/LinkedMapTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/LinkedMapTest.java @@ -1,175 +1,214 @@ - -/* - * Copyright 2001-2004 The Apache Software Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.twelvemonkeys.util; - -import java.util.Iterator; -import java.util.Map; - -/** - * Unit tests - * {@link org.apache.commons.collections.SequencedHashMap}. - * Be sure to use the "labRat" instance whenever possible, - * so that subclasses will be tested correctly. - * - * @version $Revision: #2 $ $Date: 2008/07/15 $ - * - * @author Morgan Delagrange - * @author Daniel Rall - * @author Henning P. Schmiedehausen - * @author James Strachan - */ -public class LinkedMapTestCase extends MapAbstractTestCase { - /** - * The instance to experiment on. - */ - protected LinkedMap labRat; - - public void setUp() throws Exception { - super.setUp(); - // use makeMap and cast the result to a SeqHashMap - // so that subclasses of SeqHashMap can share these tests - labRat = (LinkedMap) makeEmptyMap(); - } - - public Map makeEmptyMap() { - return new LinkedMap(); - } - - protected Object[] getKeys() { - return new Object[] { "foo", "baz", "eek" }; - } - - protected Object[] getValues() { - return new Object[] { "bar", "frob", new Object() }; - } - - public void testSequenceMap() throws Throwable { - Object[] keys = getKeys(); - int expectedSize = keys.length; - Object[] values = getValues(); - for (int i = 0; i < expectedSize; i++) { - labRat.put(keys[i], values[i]); - } - - // Test size(). - assertEquals("size() does not match expected size", - expectedSize, labRat.size()); - - // Test clone(), iterator(), and get(Object). - LinkedMap clone = (LinkedMap) labRat.clone(); - assertEquals("Size of clone does not match original", - labRat.size(), clone.size()); - Iterator origEntries = labRat.entrySet().iterator(); - Iterator copiedEntries = clone.entrySet().iterator(); - while (origEntries.hasNext()) { - Map.Entry origEntry = (Map.Entry)origEntries.next(); - Map.Entry copiedEntry = (Map.Entry)copiedEntries.next(); - assertEquals("Cloned key does not match original", - origEntry.getKey(), copiedEntry.getKey()); - assertEquals("Cloned value does not match original", - origEntry.getValue(), copiedEntry.getValue()); - assertEquals("Cloned entry does not match original", - origEntry, copiedEntry); - } - assertTrue("iterator() returned different number of elements than keys()", - !copiedEntries.hasNext()); - - // Test sequence() - /* - List seq = labRat.sequence(); - assertEquals("sequence() returns more keys than in the Map", - expectedSize, seq.size()); - - for (int i = 0; i < seq.size(); i++) { - assertEquals("Key " + i + " is not the same as the key in the Map", - keys[i], seq.get(i)); - } - */ - } - - /* - public void testYoungest() { - labRat.put(new Integer(1),"foo"); - labRat.put(new Integer(2),"bar"); - assertTrue("first key is correct",labRat.get(0).equals(new Integer(1))); - labRat.put(new Integer(1),"boo"); - assertTrue("second key is reassigned to first",labRat.get(0).equals(new Integer(2))); - } - - public void testYoungestReplaceNullWithValue() { - labRat.put(new Integer(1),null); - labRat.put(new Integer(2),"foo"); - assertTrue("first key is correct",labRat.get(0).equals(new Integer(1))); - labRat.put(new Integer(1),"bar"); - assertTrue("second key is reassigned to first",labRat.get(0).equals(new Integer(2))); - } - - public void testYoungestReplaceValueWithNull() { - labRat.put(new Integer(1),"bar"); - labRat.put(new Integer(2),"foo"); - assertTrue("first key is correct",labRat.get(0).equals(new Integer(1))); - labRat.put(new Integer(1),null); - assertTrue("second key is reassigned to first",labRat.get(0).equals(new Integer(2))); - } - */ - - // override TestMap method with more specific tests - /* - public void testFullMapSerialization() - throws IOException, ClassNotFoundException { - LinkedMap map = (LinkedMap) makeFullMap(); - - if (!(map instanceof Serializable)) return; - - byte[] objekt = writeExternalFormToBytes((Serializable) map); - LinkedMap map2 = (LinkedMap) readExternalFormFromBytes(objekt); - - assertEquals("Both maps are same size",map.size(), getSampleKeys().length); - assertEquals("Both maps are same size",map2.size(),getSampleKeys().length); - - assertEquals("Both maps have the same first key", - map.getFirstKey(),getSampleKeys()[0]); - assertEquals("Both maps have the same first key", - map2.getFirstKey(),getSampleKeys()[0]); - assertEquals("Both maps have the same last key", - map.getLastKey(),getSampleKeys()[getSampleKeys().length - 1]); - assertEquals("Both maps have the same last key", - map2.getLastKey(),getSampleKeys()[getSampleKeys().length - 1]); - } - */ - - /* - public void testIndexOf() throws Exception { - Object[] keys = getKeys(); - int expectedSize = keys.length; - Object[] values = getValues(); - for (int i = 0; i < expectedSize; i++) { - labRat.put(keys[i], values[i]); - } - // test that the index returned are in the same order that they were - // placed in the map - for (int i = 0; i < keys.length; i++) { - assertEquals("indexOf with existing key failed", i, labRat.indexOf(keys[i])); - } - // test non existing key.. - assertEquals("test with non-existing key failed", -1, labRat.indexOf("NonExistingKey")); - } - */ - public void tearDown() throws Exception { - labRat = null; - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Copyright 2001-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.twelvemonkeys.util; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.util.Iterator; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Unit tests + * {@link org.apache.commons.collections.SequencedHashMap}. + * Be sure to use the "labRat" instance whenever possible, + * so that subclasses will be tested correctly. + * + * @version $Revision: #2 $ $Date: 2008/07/15 $ + * + * @author Morgan Delagrange + * @author Daniel Rall + * @author Henning P. Schmiedehausen + * @author James Strachan + */ +public class LinkedMapTest extends MapAbstractTest { + /** + * The instance to experiment on. + */ + protected LinkedMap labRat; + + @Before + public void setUp() throws Exception { + // use makeMap and cast the result to a SeqHashMap + // so that subclasses of SeqHashMap can share these tests + labRat = (LinkedMap) makeEmptyMap(); + } + + public Map makeEmptyMap() { + return new LinkedMap(); + } + + protected Object[] getKeys() { + return new Object[] { "foo", "baz", "eek" }; + } + + protected Object[] getValues() { + return new Object[] { "bar", "frob", new Object() }; + } + + @Test + public void testSequenceMap() throws Throwable { + Object[] keys = getKeys(); + int expectedSize = keys.length; + Object[] values = getValues(); + for (int i = 0; i < expectedSize; i++) { + labRat.put(keys[i], values[i]); + } + + // Test size(). + assertEquals("size() does not match expected size", + expectedSize, labRat.size()); + + // Test clone(), iterator(), and get(Object). + LinkedMap clone = (LinkedMap) labRat.clone(); + assertEquals("Size of clone does not match original", + labRat.size(), clone.size()); + Iterator origEntries = labRat.entrySet().iterator(); + Iterator copiedEntries = clone.entrySet().iterator(); + while (origEntries.hasNext()) { + Map.Entry origEntry = (Map.Entry)origEntries.next(); + Map.Entry copiedEntry = (Map.Entry)copiedEntries.next(); + assertEquals("Cloned key does not match original", + origEntry.getKey(), copiedEntry.getKey()); + assertEquals("Cloned value does not match original", + origEntry.getValue(), copiedEntry.getValue()); + assertEquals("Cloned entry does not match original", + origEntry, copiedEntry); + } + assertTrue("iterator() returned different number of elements than keys()", + !copiedEntries.hasNext()); + + // Test sequence() + /* + List seq = labRat.sequence(); + assertEquals("sequence() returns more keys than in the Map", + expectedSize, seq.size()); + + for (int i = 0; i < seq.size(); i++) { + assertEquals("Key " + i + " is not the same as the key in the Map", + keys[i], seq.get(i)); + } + */ + } + + /* + public void testYoungest() { + labRat.put(new Integer(1),"foo"); + labRat.put(new Integer(2),"bar"); + assertTrue("first key is correct",labRat.get(0).equals(new Integer(1))); + labRat.put(new Integer(1),"boo"); + assertTrue("second key is reassigned to first",labRat.get(0).equals(new Integer(2))); + } + + public void testYoungestReplaceNullWithValue() { + labRat.put(new Integer(1),null); + labRat.put(new Integer(2),"foo"); + assertTrue("first key is correct",labRat.get(0).equals(new Integer(1))); + labRat.put(new Integer(1),"bar"); + assertTrue("second key is reassigned to first",labRat.get(0).equals(new Integer(2))); + } + + public void testYoungestReplaceValueWithNull() { + labRat.put(new Integer(1),"bar"); + labRat.put(new Integer(2),"foo"); + assertTrue("first key is correct",labRat.get(0).equals(new Integer(1))); + labRat.put(new Integer(1),null); + assertTrue("second key is reassigned to first",labRat.get(0).equals(new Integer(2))); + } + */ + + // override TestMap method with more specific tests + /* + public void testFullMapSerialization() + throws IOException, ClassNotFoundException { + LinkedMap map = (LinkedMap) makeFullMap(); + + if (!(map instanceof Serializable)) return; + + byte[] objekt = writeExternalFormToBytes((Serializable) map); + LinkedMap map2 = (LinkedMap) readExternalFormFromBytes(objekt); + + assertEquals("Both maps are same size",map.size(), getSampleKeys().length); + assertEquals("Both maps are same size",map2.size(),getSampleKeys().length); + + assertEquals("Both maps have the same first key", + map.getFirstKey(),getSampleKeys()[0]); + assertEquals("Both maps have the same first key", + map2.getFirstKey(),getSampleKeys()[0]); + assertEquals("Both maps have the same last key", + map.getLastKey(),getSampleKeys()[getSampleKeys().length - 1]); + assertEquals("Both maps have the same last key", + map2.getLastKey(),getSampleKeys()[getSampleKeys().length - 1]); + } + */ + + /* + public void testIndexOf() throws Exception { + Object[] keys = getKeys(); + int expectedSize = keys.length; + Object[] values = getValues(); + for (int i = 0; i < expectedSize; i++) { + labRat.put(keys[i], values[i]); + } + // test that the index returned are in the same order that they were + // placed in the map + for (int i = 0; i < keys.length; i++) { + assertEquals("indexOf with existing key failed", i, labRat.indexOf(keys[i])); + } + // test non existing key.. + assertEquals("test with non-existing key failed", -1, labRat.indexOf("NonExistingKey")); + } + */ + + @After + public void tearDown() throws Exception { + labRat = null; + } +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/MapAbstractTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/MapAbstractTest.java similarity index 91% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/MapAbstractTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/MapAbstractTest.java index 3b54c3cb..f4f35d1b 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/MapAbstractTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/MapAbstractTest.java @@ -1,1648 +1,1714 @@ -/* - * Copyright 2001-2004 The Apache Software Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.twelvemonkeys.util; - -import java.util.*; - -/** - * Abstract test class for {@link java.util.Map} methods and contracts. - *

    - * The forces at work here are similar to those in {@link CollectionAbstractTestCase}. - * If your class implements the full Map interface, including optional - * operations, simply extend this class, and implement the - * {@link #makeEmptyMap()} method. - *

    - * On the other hand, if your map implementation is weird, you may have to - * override one or more of the other protected methods. They're described - * below. - *

    - * Entry Population Methods - *

    - * Override these methods if your map requires special entries: - *

    - *

      - *
    • {@link #getSampleKeys()} - *
    • {@link #getSampleValues()} - *
    • {@link #getNewSampleValues()} - *
    • {@link #getOtherKeys()} - *
    • {@link #getOtherValues()} - *
    - *

    - * Supported Operation Methods - *

    - * Override these methods if your map doesn't support certain operations: - *

    - *

      - *
    • {@link #isPutAddSupported()} - *
    • {@link #isPutChangeSupported()} - *
    • {@link #isSetValueSupported()} - *
    • {@link #isRemoveSupported()} - *
    • {@link #isGetStructuralModify()} - *
    • {@link #isAllowDuplicateValues()} - *
    • {@link #isAllowNullKey()} - *
    • {@link #isAllowNullValue()} - *
    - *

    - * Fixture Methods - *

    - * For tests on modification operations (puts and removes), fixtures are used - * to verify that that operation results in correct state for the map and its - * collection views. Basically, the modification is performed against your - * map implementation, and an identical modification is performed against - * a confirmed map implementation. A confirmed map implementation is - * something like {@code java.util.HashMap}, which is known to conform - * exactly to the {@link Map} contract. After the modification takes place - * on both your map implementation and the confirmed map implementation, the - * two maps are compared to see if their state is identical. The comparison - * also compares the collection views to make sure they're still the same.

    - *

    - * The upshot of all that is that any test that modifies the map in - * any way will verify that all of the map's state is still - * correct, including the state of its collection views. So for instance - * if a key is removed by the map's key set's iterator, then the entry set - * is checked to make sure the key/value pair no longer appears.

    - *

    - * The {@link #map} field holds an instance of your collection implementation. - * The {@link #entrySet}, {@link #keySet} and {@link #values} fields hold - * that map's collection views. And the {@link #confirmed} field holds - * an instance of the confirmed collection implementation. The - * {@link #resetEmpty()} and {@link #resetFull()} methods set these fields to - * empty or full maps, so that tests can proceed from a known state.

    - *

    - * After a modification operation to both {@link #map} and {@link #confirmed}, - * the {@link #verifyAll()} method is invoked to compare the results. The - * {@link # verify0} method calls separate methods to verify the map and its three - * collection views ({@link #verifyMap}, {@link #verifyEntrySet}, - * {@link #verifyKeySet}, and {@link #verifyValues}). You may want to override - * one of the verification methodsto perform additional verifications. For - * instance, TestDoubleOrderedMap would want override its - * {@link #verifyValues()} method to verify that the values are unique and in - * ascending order.

    - *

    - * Other Notes - *

    - * If your {@link Map} fails one of these tests by design, you may still use - * this base set of cases. Simply override the test case (method) your map - * fails and/or the methods that define the assumptions used by the test - * cases. For example, if your map does not allow duplicate values, override - * {@link #isAllowDuplicateValues()} and have it return {@code false} - * - * @author Michael Smith - * @author Rodney Waldhoff - * @author Paul Jack - * @author Stephen Colebourne - * @version $Revision: #2 $ $Date: 2008/07/15 $ - */ -public abstract class MapAbstractTestCase extends ObjectAbstractTestCase { - - /** - * JDK1.2 has bugs in null handling of Maps, especially HashMap.Entry.toString - * This avoids nulls for JDK1.2 - */ - private static final boolean JDK12; - static { - String str = System.getProperty("java.version"); - JDK12 = str.startsWith("1.2"); - } - - // These instance variables are initialized with the reset method. - // Tests for map methods that alter the map (put, putAll, remove) - // first call reset() to create the map and its views; then perform - // the modification on the map; perform the same modification on the - // confirmed; and then call verifyAll() to ensure that the map is equal - // to the confirmed, that the already-constructed collection views - // are still equal to the confirmed's collection views. - - - /** Map created by reset(). */ - protected Map map; - - /** Entry set of map created by reset(). */ - protected Set entrySet; - - /** Key set of map created by reset(). */ - protected Set keySet; - - /** Values collection of map created by reset(). */ - protected Collection values; - - /** HashMap created by reset(). */ - protected Map confirmed; - - // TODO: Figure out if we need these tests... - protected boolean skipSerializedCanonicalTests() { - return true; - } - - /** - * Returns true if the maps produced by - * {@link #makeEmptyMap()} and {@link #makeFullMap()} - * support the {@code put} and {@code putAll} operations - * adding new mappings. - *

    - * Default implementation returns true. - * Override if your collection class does not support put adding. - */ - public boolean isPutAddSupported() { - return true; - } - - /** - * Returns true if the maps produced by - * {@link #makeEmptyMap()} and {@link #makeFullMap()} - * support the {@code put} and {@code putAll} operations - * changing existing mappings. - *

    - * Default implementation returns true. - * Override if your collection class does not support put changing. - */ - public boolean isPutChangeSupported() { - return true; - } - - /** - * Returns true if the maps produced by - * {@link #makeEmptyMap()} and {@link #makeFullMap()} - * support the {@code setValue} operation on entrySet entries. - *

    - * Default implementation returns isPutChangeSupported(). - * Override if your collection class does not support setValue but does - * support put changing. - */ - public boolean isSetValueSupported() { - return isPutChangeSupported(); - } - - /** - * Returns true if the maps produced by - * {@link #makeEmptyMap()} and {@link #makeFullMap()} - * support the {@code remove} and {@code clear} operations. - *

    - * Default implementation returns true. - * Override if your collection class does not support removal operations. - */ - public boolean isRemoveSupported() { - return true; - } - - /** - * Returns true if the maps produced by - * {@link #makeEmptyMap()} and {@link #makeFullMap()} - * can cause structural modification on a get(). The example is LRUMap. - *

    - * Default implementation returns false. - * Override if your map class structurally modifies on get. - */ - public boolean isGetStructuralModify() { - return false; - } - - /** - * Returns whether the sub map views of SortedMap are serializable. - * If the class being tested is based around a TreeMap then you should - * override and return false as TreeMap has a bug in deserialization. - * - * @return false - */ - public boolean isSubMapViewsSerializable() { - return true; - } - - /** - * Returns true if the maps produced by - * {@link #makeEmptyMap()} and {@link #makeFullMap()} - * supports null keys. - *

    - * Default implementation returns true. - * Override if your collection class does not support null keys. - */ - public boolean isAllowNullKey() { - return true; - } - - /** - * Returns true if the maps produced by - * {@link #makeEmptyMap()} and {@link #makeFullMap()} - * supports null values. - *

    - * Default implementation returns true. - * Override if your collection class does not support null values. - */ - public boolean isAllowNullValue() { - return true; - } - - /** - * Returns true if the maps produced by - * {@link #makeEmptyMap()} and {@link #makeFullMap()} - * supports duplicate values. - *

    - * Default implementation returns true. - * Override if your collection class does not support duplicate values. - */ - public boolean isAllowDuplicateValues() { - return true; - } - - /** - * Returns the set of keys in the mappings used to test the map. This - * method must return an array with the same length as {@link - * #getSampleValues()} and all array elements must be different. The - * default implementation constructs a set of String keys, and includes a - * single null key if {@link #isAllowNullKey()} returns {@code true}. - */ - public Object[] getSampleKeys() { - Object[] result = new Object[] { - "blah", "foo", "bar", "baz", "tmp", "gosh", "golly", "gee", - "hello", "goodbye", "we'll", "see", "you", "all", "again", - "key", - "key2", - (isAllowNullKey() && !JDK12) ? null : "nonnullkey" - }; - return result; - } - - public Object[] getOtherKeys() { - return getOtherNonNullStringElements(); - } - - public Object[] getOtherValues() { - return getOtherNonNullStringElements(); - } - - /** - * Returns a list of string elements suitable for return by - * {@link #getOtherKeys()} or {@link #getOtherValues}. - *

    - *

    Override getOtherElements to returnthe results of this method if your - * collection does not support heterogenous elements or the null element. - *

    - */ - public Object[] getOtherNonNullStringElements() { - return new Object[] { - "For", "then", "despite",/* of */"space", "I", "would", "be", "brought", - "From", "limits", "far", "remote", "where", "thou", "dost", "stay" - }; - } - - /** - * Returns the set of values in the mappings used to test the map. This - * method must return an array with the same length as - * {@link #getSampleKeys()}. The default implementation constructs a set of - * String values and includes a single null value if - * {@link #isAllowNullValue()} returns {@code true}, and includes - * two values that are the same if {@link #isAllowDuplicateValues()} returns - * {@code true}. - */ - public Object[] getSampleValues() { - Object[] result = new Object[] { - "blahv", "foov", "barv", "bazv", "tmpv", "goshv", "gollyv", "geev", - "hellov", "goodbyev", "we'llv", "seev", "youv", "allv", "againv", - (isAllowNullValue() && !JDK12) ? null : "nonnullvalue", - "value", - (isAllowDuplicateValues()) ? "value" : "value2", - }; - return result; - } - - /** - * Returns a the set of values that can be used to replace the values - * returned from {@link #getSampleValues()}. This method must return an - * array with the same length as {@link #getSampleValues()}. The values - * returned from this method should not be the same as those returned from - * {@link #getSampleValues()}. The default implementation constructs a - * set of String values and includes a single null value if - * {@link #isAllowNullValue()} returns {@code true}, and includes two values - * that are the same if {@link #isAllowDuplicateValues()} returns - * {@code true}. - */ - public Object[] getNewSampleValues() { - Object[] result = new Object[] { - (isAllowNullValue() && !JDK12 && isAllowDuplicateValues()) ? null : "newnonnullvalue", - "newvalue", - (isAllowDuplicateValues()) ? "newvalue" : "newvalue2", - "newblahv", "newfoov", "newbarv", "newbazv", "newtmpv", "newgoshv", - "newgollyv", "newgeev", "newhellov", "newgoodbyev", "newwe'llv", - "newseev", "newyouv", "newallv", "newagainv", - }; - return result; - } - - /** - * Helper method to add all the mappings described by - * {@link #getSampleKeys()} and {@link #getSampleValues()}. - */ - public void addSampleMappings(Map m) { - - Object[] keys = getSampleKeys(); - Object[] values = getSampleValues(); - - for (int i = 0; i < keys.length; i++) { - try { - m.put(keys[i], values[i]); - } - catch (NullPointerException exception) { - assertTrue("NullPointerException only allowed to be thrown if either the key or value is null.", - keys[i] == null || values[i] == null); - - assertTrue("NullPointerException on null key, but isAllowNullKey is not overridden to return false.", - keys[i] == null || !isAllowNullKey()); - - assertTrue("NullPointerException on null value, but isAllowNullValue is not overridden to return false.", - values[i] == null || !isAllowNullValue()); - - assertTrue("Unknown reason for NullPointer.", false); - } - } - assertEquals("size must reflect number of mappings added.", keys.length, m.size()); - } - - //----------------------------------------------------------------------- - - /** - * Return a new, empty {@link Map} to be used for testing. - * - * @return the map to be tested - */ - public abstract Map makeEmptyMap(); - - /** - * Return a new, populated map. The mappings in the map should match the - * keys and values returned from {@link #getSampleKeys()} and - * {@link #getSampleValues()}. The default implementation uses makeEmptyMap() - * and calls {@link #addSampleMappings} to add all the mappings to the - * map. - * - * @return the map to be tested - */ - public Map makeFullMap() { - Map m = makeEmptyMap(); - addSampleMappings(m); - return m; - } - - /** - * Implements the superclass method to return the map to be tested. - * - * @return the map to be tested - */ - public Object makeObject() { - return makeEmptyMap(); - } - - /** - * Override to return a map other than HashMap as the confirmed map. - * - * @return a map that is known to be valid - */ - public Map makeConfirmedMap() { - return new HashMap(); - } - - /** - * Creates a new Map Entry that is independent of the first and the map. - */ - public Map.Entry cloneMapEntry(Map.Entry entry) { - HashMap map = new HashMap(); - map.put(entry.getKey(), entry.getValue()); - return (Map.Entry) map.entrySet().iterator().next(); - } - - /** - * Gets the compatability version, needed for package access. - */ - public String getCompatibilityVersion() { - return super.getCompatibilityVersion(); - } - - //----------------------------------------------------------------------- - - /** - * Test to ensure the test setup is working properly. This method checks - * to ensure that the getSampleKeys and getSampleValues methods are - * returning results that look appropriate. That is, they both return a - * non-null array of equal length. The keys array must not have any - * duplicate values, and may only contain a (single) null key if - * isNullKeySupported() returns true. The values array must only have a null - * value if useNullValue() is true and may only have duplicate values if - * isAllowDuplicateValues() returns true. - */ - public void testSampleMappings() { - Object[] keys = getSampleKeys(); - Object[] values = getSampleValues(); - Object[] newValues = getNewSampleValues(); - - assertTrue("failure in test: Must have keys returned from getSampleKeys.", keys != null); - assertTrue("failure in test: Must have values returned from getSampleValues.", values != null); - - // verify keys and values have equivalent lengths (in case getSampleX are - // overridden) - assertEquals("failure in test: not the same number of sample keys and values.", keys.length, values.length); - assertEquals("failure in test: not the same number of values and new values.", values.length, newValues.length); - - // verify there aren't duplicate keys, and check values - for (int i = 0; i < keys.length - 1; i++) { - for (int j = i + 1; j < keys.length; j++) { - assertTrue("failure in test: duplicate null keys.", (keys[i] != null || keys[j] != null)); - assertTrue("failure in test: duplicate non-null key.", - (keys[i] == null || keys[j] == null || (!keys[i].equals(keys[j]) && !keys[j].equals(keys[i])))); - } - - assertTrue("failure in test: found null key, but isNullKeySupported is false.", keys[i] != null || isAllowNullKey()); - assertTrue("failure in test: found null value, but isNullValueSupported is false.", values[i] != null || isAllowNullValue()); - assertTrue("failure in test: found null new value, but isNullValueSupported is false.", newValues[i] != null || isAllowNullValue()); - assertTrue("failure in test: values should not be the same as new value", - values[i] != newValues[i] && (values[i] == null || !values[i].equals(newValues[i]))); - } - } - - // tests begin here. Each test adds a little bit of tested functionality. - // Many methods assume previous methods passed. That is, they do not - // exhaustively recheck things that have already been checked in a previous - // test methods. - - /** - * Test to ensure that makeEmptyMap and makeFull returns a new non-null - * map with each invocation. - */ - public void testMakeMap() { - Map em = makeEmptyMap(); - assertTrue("failure in test: makeEmptyMap must return a non-null map.", em != null); - - Map em2 = makeEmptyMap(); - assertTrue("failure in test: makeEmptyMap must return a non-null map.", em2 != null); - assertTrue("failure in test: makeEmptyMap must return a new map with each invocation.", em != em2); - - Map fm = makeFullMap(); - assertTrue("failure in test: makeFullMap must return a non-null map.", fm != null); - - Map fm2 = makeFullMap(); - assertTrue("failure in test: makeFullMap must return a non-null map.", fm2 != null); - assertTrue("failure in test: makeFullMap must return a new map with each invocation.", fm != fm2); - } - - /** - * Tests Map.isEmpty() - */ - public void testMapIsEmpty() { - resetEmpty(); - assertEquals("Map.isEmpty() should return true with an empty map", true, map.isEmpty()); - verifyAll(); - - resetFull(); - assertEquals("Map.isEmpty() should return false with a non-empty map", false, map.isEmpty()); - verifyAll(); - } - - /** - * Tests Map.size() - */ - public void testMapSize() { - resetEmpty(); - assertEquals("Map.size() should be 0 with an empty map", 0, map.size()); - verifyAll(); - - resetFull(); - assertEquals("Map.size() should equal the number of entries in the map", getSampleKeys().length, map.size()); - verifyAll(); - } - - /** - * Tests {@link Map#clear()}. If the map {@link #isRemoveSupported()} - * can add and remove elements}, then {@link Map#size()} and - * {@link Map#isEmpty()} are used to ensure that map has no elements after - * a call to clear. If the map does not support adding and removing - * elements, this method checks to ensure clear throws an - * UnsupportedOperationException. - */ - public void testMapClear() { - if (!isRemoveSupported()) { - try { - resetFull(); - map.clear(); - fail("Expected UnsupportedOperationException on clear"); - } - catch (UnsupportedOperationException ex) { - } - return; - } - - resetEmpty(); - map.clear(); - confirmed.clear(); - verifyAll(); - - resetFull(); - map.clear(); - confirmed.clear(); - verifyAll(); - } - - /** - * Tests Map.containsKey(Object) by verifying it returns false for all - * sample keys on a map created using an empty map and returns true for - * all sample keys returned on a full map. - */ - public void testMapContainsKey() { - Object[] keys = getSampleKeys(); - - resetEmpty(); - for (Object key : keys) { - assertTrue("Map must not contain key when map is empty", !map.containsKey(key)); - } - verifyAll(); - - resetFull(); - for (Object key : keys) { - assertTrue("Map must contain key for a mapping in the map. Missing: " + key, map.containsKey(key)); - } - verifyAll(); - } - - /** - * Tests Map.containsValue(Object) by verifying it returns false for all - * sample values on an empty map and returns true for all sample values on - * a full map. - */ - public void testMapContainsValue() { - Object[] values = getSampleValues(); - - resetEmpty(); - for (Object value : values) { - assertTrue("Empty map must not contain value", !map.containsValue(value)); - } - verifyAll(); - - resetFull(); - for (Object value : values) { - assertTrue("Map must contain value for a mapping in the map.", map.containsValue(value)); - } - verifyAll(); - } - - /** - * Tests Map.equals(Object) - */ - public void testMapEquals() { - resetEmpty(); - assertTrue("Empty maps unequal.", map.equals(confirmed)); - verifyAll(); - - resetFull(); - assertTrue("Full maps unequal.", map.equals(confirmed)); - verifyAll(); - - resetFull(); - // modify the HashMap created from the full map and make sure this - // change results in map.equals() to return false. - Iterator iter = confirmed.keySet().iterator(); - iter.next(); - iter.remove(); - assertTrue("Different maps equal.", !map.equals(confirmed)); - - resetFull(); - assertTrue("equals(null) returned true.", !map.equals(null)); - assertTrue("equals(new Object()) returned true.", !map.equals(new Object())); - verifyAll(); - } - - /** - * Tests Map.get(Object) - */ - public void testMapGet() { - resetEmpty(); - - Object[] keys = getSampleKeys(); - Object[] values = getSampleValues(); - - for (Object key : keys) { - assertTrue("Empty map.get() should return null.", map.get(key) == null); - } - - verifyAll(); - - resetFull(); - for (int i = 0; i < keys.length; i++) { - assertEquals("Full map.get() should return value from mapping.", values[i], map.get(keys[i])); - } - } - - /** - * Tests Map.hashCode() - */ - public void testMapHashCode() { - resetEmpty(); - assertTrue("Empty maps have different hashCodes.", map.hashCode() == confirmed.hashCode()); - - resetFull(); - assertTrue("Equal maps have different hashCodes.", map.hashCode() == confirmed.hashCode()); - } - - /** - * Tests Map.toString(). Since the format of the string returned by the - * toString() method is not defined in the Map interface, there is no - * common way to test the results of the toString() method. Thereforce, - * it is encouraged that Map implementations override this test with one - * that checks the format matches any format defined in its API. This - * default implementation just verifies that the toString() method does - * not return null. - */ - public void testMapToString() { - resetEmpty(); - assertTrue("Empty map toString() should not return null", map.toString() != null); - verifyAll(); - - resetFull(); - assertTrue("Empty map toString() should not return null", map.toString() != null); - verifyAll(); - } - - /** - * Compare the current serialized form of the Map - * against the canonical version in CVS. - */ - /* - public void testEmptyMapCompatibility() throws Exception { - /* - * Create canonical objects with this code - Map map = makeEmptyMap(); - if (!(map instanceof Serializable)) return; - - writeExternalFormToDisk((Serializable) map, getCanonicalEmptyCollectionName(map)); - // - - // test to make sure the canonical form has been preserved - Map map = makeEmptyMap(); - if (map instanceof Serializable && !skipSerializedCanonicalTests() && isTestSerialization()) { - Map map2 = (Map) readExternalFormFromDisk(getCanonicalEmptyCollectionName(map)); - assertEquals("Map is empty", 0, map2.size()); - } - } - */ - - /** - * Compare the current serialized form of the Map - * against the canonical version in CVS. - */ - //public void testFullMapCompatibility() throws Exception { - /** - * Create canonical objects with this code - Map map = makeFullMap(); - if (!(map instanceof Serializable)) return; - - writeExternalFormToDisk((Serializable) map, getCanonicalFullCollectionName(map)); - */ -/* - // test to make sure the canonical form has been preserved - Map map = makeFullMap(); - if (map instanceof Serializable && !skipSerializedCanonicalTests() && isTestSerialization()) { - Map map2 = (Map) readExternalFormFromDisk(getCanonicalFullCollectionName(map)); - assertEquals("Map is the right size", getSampleKeys().length, map2.size()); - } - }*/ - - /** - * Tests Map.put(Object, Object) - */ - public void testMapPut() { - resetEmpty(); - Object[] keys = getSampleKeys(); - Object[] values = getSampleValues(); - Object[] newValues = getNewSampleValues(); - - if (isPutAddSupported()) { - for (int i = 0; i < keys.length; i++) { - Object o = map.put(keys[i], values[i]); - confirmed.put(keys[i], values[i]); - verifyAll(); - assertTrue("First map.put should return null", o == null); - assertTrue("Map should contain key after put", - map.containsKey(keys[i])); - assertTrue("Map should contain value after put", - map.containsValue(values[i])); - } - if (isPutChangeSupported()) { - for (int i = 0; i < keys.length; i++) { - Object o = map.put(keys[i], newValues[i]); - confirmed.put(keys[i], newValues[i]); - verifyAll(); - assertEquals("Map.put should return previous value when changed", - values[i], o); - assertTrue("Map should still contain key after put when changed", - map.containsKey(keys[i])); - assertTrue("Map should contain new value after put when changed", - map.containsValue(newValues[i])); - - // if duplicates are allowed, we're not guaranteed that the value - // no longer exists, so don't try checking that. - if (!isAllowDuplicateValues()) { - assertTrue("Map should not contain old value after put when changed", - !map.containsValue(values[i])); - } - } - } - else { - try { - // two possible exception here, either valid - map.put(keys[0], newValues[0]); - fail("Expected IllegalArgumentException or UnsupportedOperationException on put (change)"); - } - catch (IllegalArgumentException ex) { - } - catch (UnsupportedOperationException ex) { - } - } - } - else if (isPutChangeSupported()) { - resetEmpty(); - try { - map.put(keys[0], values[0]); - fail("Expected UnsupportedOperationException or IllegalArgumentException on put (add) when fixed size"); - } - catch (IllegalArgumentException ex) { - } - catch (UnsupportedOperationException ex) { - } - - resetFull(); - int i = 0; - for (Iterator it = map.keySet().iterator(); it.hasNext() && i < newValues.length; i++) { - Object key = it.next(); - Object o = map.put(key, newValues[i]); - Object value = confirmed.put(key, newValues[i]); - verifyAll(); - assertEquals("Map.put should return previous value when changed", - value, o); - assertTrue("Map should still contain key after put when changed", - map.containsKey(key)); - assertTrue("Map should contain new value after put when changed", - map.containsValue(newValues[i])); - - // if duplicates are allowed, we're not guaranteed that the value - // no longer exists, so don't try checking that. - if (!isAllowDuplicateValues()) { - assertTrue("Map should not contain old value after put when changed", - !map.containsValue(values[i])); - } - } - } - else { - try { - map.put(keys[0], values[0]); - fail("Expected UnsupportedOperationException on put (add)"); - } - catch (UnsupportedOperationException ex) { - } - } - } - - /** - * Tests Map.put(null, value) - */ - public void testMapPutNullKey() { - resetFull(); - Object[] values = getSampleValues(); - - if (isPutAddSupported()) { - if (isAllowNullKey()) { - map.put(null, values[0]); - } - else { - try { - map.put(null, values[0]); - fail("put(null, value) should throw NPE/IAE"); - } - catch (NullPointerException ex) { - } - catch (IllegalArgumentException ex) { - } - } - } - } - - /** - * Tests Map.put(null, value) - */ - public void testMapPutNullValue() { - resetFull(); - Object[] keys = getSampleKeys(); - - if (isPutAddSupported()) { - if (isAllowNullValue()) { - map.put(keys[0], null); - } - else { - try { - map.put(keys[0], null); - fail("put(key, null) should throw NPE/IAE"); - } - catch (NullPointerException ex) { - } - catch (IllegalArgumentException ex) { - } - } - } - } - - /** - * Tests Map.putAll(map) - */ - public void testMapPutAll() { - if (!isPutAddSupported()) { - if (!isPutChangeSupported()) { - Map temp = makeFullMap(); - resetEmpty(); - try { - map.putAll(temp); - fail("Expected UnsupportedOperationException on putAll"); - } - catch (UnsupportedOperationException ex) { - } - } - return; - } - - resetEmpty(); - - Map m2 = makeFullMap(); - - map.putAll(m2); - confirmed.putAll(m2); - verifyAll(); - - resetEmpty(); - - m2 = makeConfirmedMap(); - Object[] keys = getSampleKeys(); - Object[] values = getSampleValues(); - for (int i = 0; i < keys.length; i++) { - m2.put(keys[i], values[i]); - } - - map.putAll(m2); - confirmed.putAll(m2); - verifyAll(); - } - - /** - * Tests Map.remove(Object) - */ - public void testMapRemove() { - if (!isRemoveSupported()) { - try { - resetFull(); - map.remove(map.keySet().iterator().next()); - fail("Expected UnsupportedOperationException on remove"); - } - catch (UnsupportedOperationException ex) { - } - return; - } - - resetEmpty(); - - Object[] keys = getSampleKeys(); - Object[] values = getSampleValues(); - for (int i = 0; i < keys.length; i++) { - Object o = map.remove(keys[i]); - assertTrue("First map.remove should return null", o == null); - } - verifyAll(); - - resetFull(); - - for (int i = 0; i < keys.length; i++) { - Object o = map.remove(keys[i]); - confirmed.remove(keys[i]); - verifyAll(); - - assertEquals("map.remove with valid key should return value", - values[i], o); - } - - Object[] other = getOtherKeys(); - - resetFull(); - int size = map.size(); - for (int i = 0; i < other.length; i++) { - Object o = map.remove(other[i]); - assertEquals("map.remove for nonexistent key should return null", - o, null); - assertEquals("map.remove for nonexistent key should not " + - "shrink map", size, map.size()); - } - verifyAll(); - } - - //----------------------------------------------------------------------- - - /** - * Tests that the {@link Map#values} collection is backed by - * the underlying map for clear(). - */ - public void testValuesClearChangesMap() { - if (!isRemoveSupported()) { - return; - } - - // clear values, reflected in map - resetFull(); - Collection values = map.values(); - assertTrue(map.size() > 0); - assertTrue(values.size() > 0); - values.clear(); - assertTrue(map.size() == 0); - assertTrue(values.size() == 0); - - // clear map, reflected in values - resetFull(); - values = map.values(); - assertTrue(map.size() > 0); - assertTrue(values.size() > 0); - map.clear(); - assertTrue(map.size() == 0); - assertTrue(values.size() == 0); - } - - /** - * Tests that the {@link Map#keySet} collection is backed by - * the underlying map for clear(). - */ - public void testKeySetClearChangesMap() { - if (!isRemoveSupported()) { - return; - } - - // clear values, reflected in map - resetFull(); - Set keySet = map.keySet(); - assertTrue(map.size() > 0); - assertTrue(keySet.size() > 0); - keySet.clear(); - assertTrue(map.size() == 0); - assertTrue(keySet.size() == 0); - - // clear map, reflected in values - resetFull(); - keySet = map.keySet(); - assertTrue(map.size() > 0); - assertTrue(keySet.size() > 0); - map.clear(); - assertTrue(map.size() == 0); - assertTrue(keySet.size() == 0); - } - - /** - * Tests that the {@link Map#entrySet()} collection is backed by - * the underlying map for clear(). - */ - public void testEntrySetClearChangesMap() { - if (!isRemoveSupported()) { - return; - } - - // clear values, reflected in map - resetFull(); - Set entrySet = map.entrySet(); - assertTrue(map.size() > 0); - assertTrue(entrySet.size() > 0); - entrySet.clear(); - assertTrue(map.size() == 0); - assertTrue(entrySet.size() == 0); - - // clear map, reflected in values - resetFull(); - entrySet = map.entrySet(); - assertTrue(map.size() > 0); - assertTrue(entrySet.size() > 0); - map.clear(); - assertTrue(map.size() == 0); - assertTrue(entrySet.size() == 0); - } - - //----------------------------------------------------------------------- - public void testEntrySetContains1() { - resetFull(); - Set entrySet = map.entrySet(); - Map.Entry entry = (Map.Entry) entrySet.iterator().next(); - assertEquals(true, entrySet.contains(entry)); - } - - public void testEntrySetContains2() { - resetFull(); - Set entrySet = map.entrySet(); - Map.Entry entry = (Map.Entry) entrySet.iterator().next(); - Map.Entry test = cloneMapEntry(entry); - assertEquals(true, entrySet.contains(test)); - } - - public void testEntrySetContains3() { - resetFull(); - Set entrySet = map.entrySet(); - Map.Entry entry = (Map.Entry) entrySet.iterator().next(); - HashMap temp = new HashMap(); - temp.put(entry.getKey(), "A VERY DIFFERENT VALUE"); - Map.Entry test = (Map.Entry) temp.entrySet().iterator().next(); - assertEquals(false, entrySet.contains(test)); - } - - public void testEntrySetRemove1() { - if (!isRemoveSupported()) { - return; - } - resetFull(); - int size = map.size(); - Set entrySet = map.entrySet(); - Map.Entry entry = (Map.Entry) entrySet.iterator().next(); - Object key = entry.getKey(); - - assertEquals(true, entrySet.remove(entry)); - assertEquals(false, map.containsKey(key)); - assertEquals(size - 1, map.size()); - } - - public void testEntrySetRemove2() { - if (!isRemoveSupported()) { - return; - } - resetFull(); - int size = map.size(); - Set entrySet = map.entrySet(); - Map.Entry entry = (Map.Entry) entrySet.iterator().next(); - Object key = entry.getKey(); - Map.Entry test = cloneMapEntry(entry); - - assertEquals(true, entrySet.remove(test)); - assertEquals(false, map.containsKey(key)); - assertEquals(size - 1, map.size()); - } - - public void testEntrySetRemove3() { - if (!isRemoveSupported()) { - return; - } - resetFull(); - int size = map.size(); - Set entrySet = map.entrySet(); - Map.Entry entry = (Map.Entry) entrySet.iterator().next(); - Object key = entry.getKey(); - HashMap temp = new HashMap(); - temp.put(entry.getKey(), "A VERY DIFFERENT VALUE"); - Map.Entry test = (Map.Entry) temp.entrySet().iterator().next(); - - assertEquals(false, entrySet.remove(test)); - assertEquals(true, map.containsKey(key)); - assertEquals(size, map.size()); - } - - //----------------------------------------------------------------------- - - /** - * Tests that the {@link Map#values} collection is backed by - * the underlying map by removing from the values collection - * and testing if the value was removed from the map. - *

    - * We should really test the "vice versa" case--that values removed - * from the map are removed from the values collection--also, - * but that's a more difficult test to construct (lacking a - * "removeValue" method.) - *

    - *

    - * See bug - * 9573. - *

    - */ - public void testValuesRemoveChangesMap() { - resetFull(); - Object[] sampleValues = getSampleValues(); - Collection values = map.values(); - for (int i = 0; i < sampleValues.length; i++) { - if (map.containsValue(sampleValues[i])) { - int j = 0; // loop counter prevents infinite loops when remove is broken - while (values.contains(sampleValues[i]) && j < 10000) { - try { - values.remove(sampleValues[i]); - } - catch (UnsupportedOperationException e) { - // if values.remove is unsupported, just skip this test - return; - } - j++; - } - assertTrue("values().remove(obj) is broken", j < 10000); - assertTrue( - "Value should have been removed from the underlying map.", - !map.containsValue(sampleValues[i])); - } - } - } - - /** - * Tests that the {@link Map#keySet} set is backed by - * the underlying map by removing from the keySet set - * and testing if the key was removed from the map. - */ - public void testKeySetRemoveChangesMap() { - resetFull(); - Object[] sampleKeys = getSampleKeys(); - Set keys = map.keySet(); - for (int i = 0; i < sampleKeys.length; i++) { - try { - keys.remove(sampleKeys[i]); - } - catch (UnsupportedOperationException e) { - // if key.remove is unsupported, just skip this test - return; - } - assertTrue( - "Key should have been removed from the underlying map.", - !map.containsKey(sampleKeys[i])); - } - } - - // TODO: Need: - // testValuesRemovedFromEntrySetAreRemovedFromMap - // same for EntrySet/KeySet/values's - // Iterator.remove, removeAll, retainAll - - /** - * Utility methods to create an array of Map.Entry objects - * out of the given key and value arrays.

    - * - * @param keys the array of keys - * @param values the array of values - * @return an array of Map.Entry of those keys to those values - */ - private Map.Entry[] makeEntryArray(Object[] keys, Object[] values) { - Map.Entry[] result = new Map.Entry[keys.length]; - for (int i = 0; i < keys.length; i++) { - Map map = makeConfirmedMap(); - map.put(keys[i], values[i]); - result[i] = (Map.Entry) map.entrySet().iterator().next(); - } - return result; - } - - /** - * Bulk test {@link Map#entrySet()}. This method runs through all of - * the tests in {@link SetAbstractTestCase}. - * After modification operations, {@link #verifyAll()} is invoked to ensure - * that the map and the other collection views are still valid. - * - * @return a {@link SetAbstractTestCase} instance for testing the map's entry set - */ - /* - public BulkTest bulkTestMapEntrySet() { - return new TestMapEntrySet(); - } - */ - - public class TestMapEntrySet extends SetAbstractTestCase { - - // Have to implement manually; entrySet doesn't support addAll - public Object[] getFullElements() { - Object[] k = getSampleKeys(); - Object[] v = getSampleValues(); - return makeEntryArray(k, v); - } - - // Have to implement manually; entrySet doesn't support addAll - public Object[] getOtherElements() { - Object[] k = getOtherKeys(); - Object[] v = getOtherValues(); - return makeEntryArray(k, v); - } - - public Set makeEmptySet() { - return makeEmptyMap().entrySet(); - } - - public Set makeFullSet() { - return makeFullMap().entrySet(); - } - - public boolean isAddSupported() { - // Collection views don't support add operations. - return false; - } - - public boolean isRemoveSupported() { - // Entry set should only support remove if map does - return MapAbstractTestCase.this.isRemoveSupported(); - } - - public boolean isGetStructuralModify() { - return MapAbstractTestCase.this.isGetStructuralModify(); - } - - public boolean isTestSerialization() { - return false; - } - - public void resetFull() { - MapAbstractTestCase.this.resetFull(); - collection = map.entrySet(); - TestMapEntrySet.this.confirmed = MapAbstractTestCase.this.confirmed.entrySet(); - } - - public void resetEmpty() { - MapAbstractTestCase.this.resetEmpty(); - collection = map.entrySet(); - TestMapEntrySet.this.confirmed = MapAbstractTestCase.this.confirmed.entrySet(); - } - - public void testMapEntrySetIteratorEntry() { - resetFull(); - Iterator it = collection.iterator(); - int count = 0; - while (it.hasNext()) { - Map.Entry entry = (Map.Entry) it.next(); - assertEquals(true, MapAbstractTestCase.this.map.containsKey(entry.getKey())); - assertEquals(true, MapAbstractTestCase.this.map.containsValue(entry.getValue())); - if (isGetStructuralModify() == false) { - assertEquals(MapAbstractTestCase.this.map.get(entry.getKey()), entry.getValue()); - } - count++; - } - assertEquals(collection.size(), count); - } - - public void testMapEntrySetIteratorEntrySetValue() { - Object key1 = getSampleKeys()[0]; - Object key2 = (getSampleKeys().length == 1 ? getSampleKeys()[0] : getSampleKeys()[1]); - Object newValue1 = getNewSampleValues()[0]; - Object newValue2 = (getNewSampleValues().length == 1 ? getNewSampleValues()[0] : getNewSampleValues()[1]); - - resetFull(); - // explicitly get entries as sample values/keys are connected for some maps - // such as BeanMap - Iterator it = TestMapEntrySet.this.collection.iterator(); - Map.Entry entry1 = getEntry(it, key1); - it = TestMapEntrySet.this.collection.iterator(); - Map.Entry entry2 = getEntry(it, key2); - Iterator itConfirmed = TestMapEntrySet.this.confirmed.iterator(); - Map.Entry entryConfirmed1 = getEntry(itConfirmed, key1); - itConfirmed = TestMapEntrySet.this.confirmed.iterator(); - Map.Entry entryConfirmed2 = getEntry(itConfirmed, key2); - verifyAll(); - - if (isSetValueSupported() == false) { - try { - entry1.setValue(newValue1); - } - catch (UnsupportedOperationException ex) { - } - return; - } - - entry1.setValue(newValue1); - entryConfirmed1.setValue(newValue1); - assertEquals(newValue1, entry1.getValue()); - assertEquals(true, MapAbstractTestCase.this.map.containsKey(entry1.getKey())); - assertEquals(true, MapAbstractTestCase.this.map.containsValue(newValue1)); - assertEquals(newValue1, MapAbstractTestCase.this.map.get(entry1.getKey())); - verifyAll(); - - entry1.setValue(newValue1); - entryConfirmed1.setValue(newValue1); - assertEquals(newValue1, entry1.getValue()); - assertEquals(true, MapAbstractTestCase.this.map.containsKey(entry1.getKey())); - assertEquals(true, MapAbstractTestCase.this.map.containsValue(newValue1)); - assertEquals(newValue1, MapAbstractTestCase.this.map.get(entry1.getKey())); - verifyAll(); - - entry2.setValue(newValue2); - entryConfirmed2.setValue(newValue2); - assertEquals(newValue2, entry2.getValue()); - assertEquals(true, MapAbstractTestCase.this.map.containsKey(entry2.getKey())); - assertEquals(true, MapAbstractTestCase.this.map.containsValue(newValue2)); - assertEquals(newValue2, MapAbstractTestCase.this.map.get(entry2.getKey())); - verifyAll(); - } - - public Map.Entry getEntry(Iterator itConfirmed, Object key) { - Map.Entry entry = null; - while (itConfirmed.hasNext()) { - Map.Entry temp = (Map.Entry) itConfirmed.next(); - if (temp.getKey() == null) { - if (key == null) { - entry = temp; - break; - } - } - else if (temp.getKey().equals(key)) { - entry = temp; - break; - } - } - assertNotNull("No matching entry in map for key '" + key + "'", entry); - return entry; - } - - public void testMapEntrySetRemoveNonMapEntry() { - if (isRemoveSupported() == false) { - return; - } - resetFull(); - assertEquals(false, getSet().remove(null)); - assertEquals(false, getSet().remove(new Object())); - } - - public void verifyAll() { - super.verifyAll(); - MapAbstractTestCase.this.verifyAll(); - } - } - - /** - * Bulk test {@link Map#keySet()}. This method runs through all of - * the tests in {@link SetAbstractTestCase}. - * After modification operations, {@link #verifyAll()} is invoked to ensure - * that the map and the other collection views are still valid. - * - * @return a {@link SetAbstractTestCase} instance for testing the map's key set - */ - /* - public BulkTest bulkTestMapKeySet() { - return new TestMapKeySet(); - } - */ - - public class TestMapKeySet extends SetAbstractTestCase { - public Object[] getFullElements() { - return getSampleKeys(); - } - - public Object[] getOtherElements() { - return getOtherKeys(); - } - - public Set makeEmptySet() { - return makeEmptyMap().keySet(); - } - - public Set makeFullSet() { - return makeFullMap().keySet(); - } - - public boolean isNullSupported() { - return MapAbstractTestCase.this.isAllowNullKey(); - } - - public boolean isAddSupported() { - return false; - } - - public boolean isRemoveSupported() { - return MapAbstractTestCase.this.isRemoveSupported(); - } - - public boolean isTestSerialization() { - return false; - } - - public void resetEmpty() { - MapAbstractTestCase.this.resetEmpty(); - collection = map.keySet(); - TestMapKeySet.this.confirmed = MapAbstractTestCase.this.confirmed.keySet(); - } - - public void resetFull() { - MapAbstractTestCase.this.resetFull(); - collection = map.keySet(); - TestMapKeySet.this.confirmed = MapAbstractTestCase.this.confirmed.keySet(); - } - - public void verifyAll() { - super.verifyAll(); - MapAbstractTestCase.this.verifyAll(); - } - } - - /** - * Bulk test {@link Map#values()}. This method runs through all of - * the tests in {@link CollectionAbstractTestCase}. - * After modification operations, {@link #verifyAll()} is invoked to ensure - * that the map and the other collection views are still valid. - * - * @return a {@link CollectionAbstractTestCase} instance for testing the map's - * values collection - */ - /* - public BulkTest bulkTestMapValues() { - return new TestMapValues(); - } - */ - - public class TestMapValues extends CollectionAbstractTestCase { - public Object[] getFullElements() { - return getSampleValues(); - } - - public Object[] getOtherElements() { - return getOtherValues(); - } - - public Collection makeCollection() { - return makeEmptyMap().values(); - } - - public Collection makeFullCollection() { - return makeFullMap().values(); - } - - public boolean isNullSupported() { - return MapAbstractTestCase.this.isAllowNullKey(); - } - - public boolean isAddSupported() { - return false; - } - - public boolean isRemoveSupported() { - return MapAbstractTestCase.this.isRemoveSupported(); - } - - public boolean isTestSerialization() { - return false; - } - - public boolean areEqualElementsDistinguishable() { - // equal values are associated with different keys, so they are - // distinguishable. - return true; - } - - public Collection makeConfirmedCollection() { - // never gets called, reset methods are overridden - return null; - } - - public Collection makeConfirmedFullCollection() { - // never gets called, reset methods are overridden - return null; - } - - public void resetFull() { - MapAbstractTestCase.this.resetFull(); - collection = map.values(); - TestMapValues.this.confirmed = MapAbstractTestCase.this.confirmed.values(); - } - - public void resetEmpty() { - MapAbstractTestCase.this.resetEmpty(); - collection = map.values(); - TestMapValues.this.confirmed = MapAbstractTestCase.this.confirmed.values(); - } - - public void verifyAll() { - super.verifyAll(); - MapAbstractTestCase.this.verifyAll(); - } - - // TODO: should test that a remove on the values collection view - // removes the proper mapping and not just any mapping that may have - // the value equal to the value returned from the values iterator. - } - - /** - * Resets the {@link #map}, {@link #entrySet}, {@link #keySet}, - * {@link #values} and {@link #confirmed} fields to empty. - */ - public void resetEmpty() { - this.map = makeEmptyMap(); - views(); - this.confirmed = makeConfirmedMap(); - } - - /** - * Resets the {@link #map}, {@link #entrySet}, {@link #keySet}, - * {@link #values} and {@link #confirmed} fields to full. - */ - public void resetFull() { - this.map = makeFullMap(); - views(); - this.confirmed = makeConfirmedMap(); - Object[] k = getSampleKeys(); - Object[] v = getSampleValues(); - for (int i = 0; i < k.length; i++) { - confirmed.put(k[i], v[i]); - } - } - - /** - * Resets the collection view fields. - */ - private void views() { - this.keySet = map.keySet(); - this.values = map.values(); - this.entrySet = map.entrySet(); - } - - /** - * Verifies that {@link #map} is still equal to {@link #confirmed}. - * This method checks that the map is equal to the HashMap, - * and that the map's collection views are still equal to - * the HashMap's collection views. An {@code equals} test - * is done on the maps and their collection views; their size and - * {@code isEmpty} results are compared; their hashCodes are - * compared; and {@code containsAll} tests are run on the - * collection views. - */ - public void verifyAll() { - verifyMap(); - verifyEntrySet(); - verifyKeySet(); - verifyValues(); - } - - public void verifyMap() { - int size = confirmed.size(); - boolean empty = confirmed.isEmpty(); - assertEquals("Map should be same size as HashMap", size, map.size()); - assertEquals("Map should be empty if HashMap is", empty, map.isEmpty()); - assertEquals("hashCodes should be the same", confirmed.hashCode(), map.hashCode()); - // this fails for LRUMap because confirmed.equals() somehow modifies - // map, causing concurrent modification exceptions. - //assertEquals("Map should still equal HashMap", confirmed, map); - // this works though and performs the same verification: - assertTrue("Map should still equal HashMap", map.equals(confirmed)); - // TODO: this should really be reexamined to figure out why LRU map - // behaves like it does (the equals shouldn't modify since all accesses - // by the confirmed collection should be through an iterator, thus not - // causing LRUMap to change). - } - - public void verifyEntrySet() { - int size = confirmed.size(); - boolean empty = confirmed.isEmpty(); - assertEquals("entrySet should be same size as HashMap's\nTest: " + entrySet + "\nReal: " + confirmed.entrySet(), - size, entrySet.size()); - assertEquals("entrySet should be empty if HashMap is\nTest: " + entrySet + "\nReal: " + confirmed.entrySet(), - empty, entrySet.isEmpty()); - assertTrue("entrySet should contain all HashMap's elements\nTest: " + entrySet + "\nReal: " + confirmed.entrySet(), - entrySet.containsAll(confirmed.entrySet())); - assertEquals("entrySet hashCodes should be the same\nTest: " + entrySet + "\nReal: " + confirmed.entrySet(), - confirmed.entrySet().hashCode(), entrySet.hashCode()); - assertEquals("Map's entry set should still equal HashMap's", confirmed.entrySet(), entrySet); - } - - public void verifyKeySet() { - int size = confirmed.size(); - boolean empty = confirmed.isEmpty(); - assertEquals("keySet should be same size as HashMap's\nTest: " + keySet + "\nReal: " + confirmed.keySet(), - size, keySet.size()); - assertEquals("keySet should be empty if HashMap is\nTest: " + keySet + "\nReal: " + confirmed.keySet(), - empty, keySet.isEmpty()); - assertTrue("keySet should contain all HashMap's elements\nTest: " + keySet + "\nReal: " + confirmed.keySet(), - keySet.containsAll(confirmed.keySet())); - assertEquals("keySet hashCodes should be the same\nTest: " + keySet + "\nReal: " + confirmed.keySet(), - confirmed.keySet().hashCode(), keySet.hashCode()); - assertEquals("Map's key set should still equal HashMap's", confirmed.keySet(), keySet); - } - - public void verifyValues() { - List known = new ArrayList(confirmed.values()); - List test = new ArrayList(values); - - int size = confirmed.size(); - boolean empty = confirmed.isEmpty(); - - assertEquals("values should be same size as HashMap's\nTest: " + test + "\nReal: " + known, size, values.size()); - assertEquals("values should be empty if HashMap is\nTest: " + test + "\nReal: " + known, empty, values.isEmpty()); - assertTrue("values should contain all HashMap's elements\nTest: " + test + "\nReal: " + known, test.containsAll(known)); - assertTrue("values should contain all HashMap's elements\nTest: " + test + "\nReal: " + known, known.containsAll(test)); - - for (Object aKnown : known) { - boolean removed = test.remove(aKnown); - assertTrue("Map's values should still equal HashMap's", removed); - } - - assertTrue("Map's values should still equal HashMap's", test.isEmpty()); - } - - /** - * Erases any leftover instance variables by setting them to null. - */ - public void tearDown() throws Exception { - map = null; - keySet = null; - entrySet = null; - values = null; - confirmed = null; - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Copyright 2001-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.twelvemonkeys.util; + +import org.junit.After; +import org.junit.Test; + +import java.util.*; + +import static org.junit.Assert.*; + +/** + * Abstract test class for {@link java.util.Map} methods and contracts. + *

    + * The forces at work here are similar to those in {@link CollectionAbstractTest}. + * If your class implements the full Map interface, including optional + * operations, simply extend this class, and implement the + * {@link #makeEmptyMap()} method. + *

    + * On the other hand, if your map implementation is weird, you may have to + * override one or more of the other protected methods. They're described + * below. + *

    + * Entry Population Methods + *

    + * Override these methods if your map requires special entries: + *

    + *

      + *
    • {@link #getSampleKeys()} + *
    • {@link #getSampleValues()} + *
    • {@link #getNewSampleValues()} + *
    • {@link #getOtherKeys()} + *
    • {@link #getOtherValues()} + *
    + *

    + * Supported Operation Methods + *

    + * Override these methods if your map doesn't support certain operations: + *

    + *

      + *
    • {@link #isPutAddSupported()} + *
    • {@link #isPutChangeSupported()} + *
    • {@link #isSetValueSupported()} + *
    • {@link #isRemoveSupported()} + *
    • {@link #isGetStructuralModify()} + *
    • {@link #isAllowDuplicateValues()} + *
    • {@link #isAllowNullKey()} + *
    • {@link #isAllowNullValue()} + *
    + *

    + * Fixture Methods + *

    + * For tests on modification operations (puts and removes), fixtures are used + * to verify that that operation results in correct state for the map and its + * collection views. Basically, the modification is performed against your + * map implementation, and an identical modification is performed against + * a confirmed map implementation. A confirmed map implementation is + * something like {@code java.util.HashMap}, which is known to conform + * exactly to the {@link Map} contract. After the modification takes place + * on both your map implementation and the confirmed map implementation, the + * two maps are compared to see if their state is identical. The comparison + * also compares the collection views to make sure they're still the same.

    + *

    + * The upshot of all that is that any test that modifies the map in + * any way will verify that all of the map's state is still + * correct, including the state of its collection views. So for instance + * if a key is removed by the map's key set's iterator, then the entry set + * is checked to make sure the key/value pair no longer appears.

    + *

    + * The {@link #map} field holds an instance of your collection implementation. + * The {@link #entrySet}, {@link #keySet} and {@link #values} fields hold + * that map's collection views. And the {@link #confirmed} field holds + * an instance of the confirmed collection implementation. The + * {@link #resetEmpty()} and {@link #resetFull()} methods set these fields to + * empty or full maps, so that tests can proceed from a known state.

    + *

    + * After a modification operation to both {@link #map} and {@link #confirmed}, + * the {@link #verifyAll()} method is invoked to compare the results. The + * {@link # verify0} method calls separate methods to verify the map and its three + * collection views ({@link #verifyMap}, {@link #verifyEntrySet}, + * {@link #verifyKeySet}, and {@link #verifyValues}). You may want to override + * one of the verification methodsto perform additional verifications. For + * instance, TestDoubleOrderedMap would want override its + * {@link #verifyValues()} method to verify that the values are unique and in + * ascending order.

    + *

    + * Other Notes + *

    + * If your {@link Map} fails one of these tests by design, you may still use + * this base set of cases. Simply override the test case (method) your map + * fails and/or the methods that define the assumptions used by the test + * cases. For example, if your map does not allow duplicate values, override + * {@link #isAllowDuplicateValues()} and have it return {@code false} + * + * @author Michael Smith + * @author Rodney Waldhoff + * @author Paul Jack + * @author Stephen Colebourne + * @version $Revision: #2 $ $Date: 2008/07/15 $ + */ +public abstract class MapAbstractTest extends ObjectAbstractTest { + + /** + * JDK1.2 has bugs in null handling of Maps, especially HashMap.Entry.toString + * This avoids nulls for JDK1.2 + */ + private static final boolean JDK12; + static { + String str = System.getProperty("java.version"); + JDK12 = str.startsWith("1.2"); + } + + // These instance variables are initialized with the reset method. + // Tests for map methods that alter the map (put, putAll, remove) + // first call reset() to create the map and its views; then perform + // the modification on the map; perform the same modification on the + // confirmed; and then call verifyAll() to ensure that the map is equal + // to the confirmed, that the already-constructed collection views + // are still equal to the confirmed's collection views. + + + /** Map created by reset(). */ + protected Map map; + + /** Entry set of map created by reset(). */ + protected Set entrySet; + + /** Key set of map created by reset(). */ + protected Set keySet; + + /** Values collection of map created by reset(). */ + protected Collection values; + + /** HashMap created by reset(). */ + protected Map confirmed; + + // TODO: Figure out if we need these tests... + protected boolean skipSerializedCanonicalTests() { + return true; + } + + /** + * Returns true if the maps produced by + * {@link #makeEmptyMap()} and {@link #makeFullMap()} + * support the {@code put} and {@code putAll} operations + * adding new mappings. + *

    + * Default implementation returns true. + * Override if your collection class does not support put adding. + */ + public boolean isPutAddSupported() { + return true; + } + + /** + * Returns true if the maps produced by + * {@link #makeEmptyMap()} and {@link #makeFullMap()} + * support the {@code put} and {@code putAll} operations + * changing existing mappings. + *

    + * Default implementation returns true. + * Override if your collection class does not support put changing. + */ + public boolean isPutChangeSupported() { + return true; + } + + /** + * Returns true if the maps produced by + * {@link #makeEmptyMap()} and {@link #makeFullMap()} + * support the {@code setValue} operation on entrySet entries. + *

    + * Default implementation returns isPutChangeSupported(). + * Override if your collection class does not support setValue but does + * support put changing. + */ + public boolean isSetValueSupported() { + return isPutChangeSupported(); + } + + /** + * Returns true if the maps produced by + * {@link #makeEmptyMap()} and {@link #makeFullMap()} + * support the {@code remove} and {@code clear} operations. + *

    + * Default implementation returns true. + * Override if your collection class does not support removal operations. + */ + public boolean isRemoveSupported() { + return true; + } + + /** + * Returns true if the maps produced by + * {@link #makeEmptyMap()} and {@link #makeFullMap()} + * can cause structural modification on a get(). The example is LRUMap. + *

    + * Default implementation returns false. + * Override if your map class structurally modifies on get. + */ + public boolean isGetStructuralModify() { + return false; + } + + /** + * Returns whether the sub map views of SortedMap are serializable. + * If the class being tested is based around a TreeMap then you should + * override and return false as TreeMap has a bug in deserialization. + * + * @return false + */ + public boolean isSubMapViewsSerializable() { + return true; + } + + /** + * Returns true if the maps produced by + * {@link #makeEmptyMap()} and {@link #makeFullMap()} + * supports null keys. + *

    + * Default implementation returns true. + * Override if your collection class does not support null keys. + */ + public boolean isAllowNullKey() { + return true; + } + + /** + * Returns true if the maps produced by + * {@link #makeEmptyMap()} and {@link #makeFullMap()} + * supports null values. + *

    + * Default implementation returns true. + * Override if your collection class does not support null values. + */ + public boolean isAllowNullValue() { + return true; + } + + /** + * Returns true if the maps produced by + * {@link #makeEmptyMap()} and {@link #makeFullMap()} + * supports duplicate values. + *

    + * Default implementation returns true. + * Override if your collection class does not support duplicate values. + */ + public boolean isAllowDuplicateValues() { + return true; + } + + /** + * Returns the set of keys in the mappings used to test the map. This + * method must return an array with the same length as {@link + * #getSampleValues()} and all array elements must be different. The + * default implementation constructs a set of String keys, and includes a + * single null key if {@link #isAllowNullKey()} returns {@code true}. + */ + public Object[] getSampleKeys() { + Object[] result = new Object[] { + "blah", "foo", "bar", "baz", "tmp", "gosh", "golly", "gee", + "hello", "goodbye", "we'll", "see", "you", "all", "again", + "key", + "key2", + (isAllowNullKey() && !JDK12) ? null : "nonnullkey" + }; + return result; + } + + public Object[] getOtherKeys() { + return getOtherNonNullStringElements(); + } + + public Object[] getOtherValues() { + return getOtherNonNullStringElements(); + } + + /** + * Returns a list of string elements suitable for return by + * {@link #getOtherKeys()} or {@link #getOtherValues}. + *

    + *

    Override getOtherElements to returnthe results of this method if your + * collection does not support heterogenous elements or the null element. + *

    + */ + public Object[] getOtherNonNullStringElements() { + return new Object[] { + "For", "then", "despite",/* of */"space", "I", "would", "be", "brought", + "From", "limits", "far", "remote", "where", "thou", "dost", "stay" + }; + } + + /** + * Returns the set of values in the mappings used to test the map. This + * method must return an array with the same length as + * {@link #getSampleKeys()}. The default implementation constructs a set of + * String values and includes a single null value if + * {@link #isAllowNullValue()} returns {@code true}, and includes + * two values that are the same if {@link #isAllowDuplicateValues()} returns + * {@code true}. + */ + public Object[] getSampleValues() { + Object[] result = new Object[] { + "blahv", "foov", "barv", "bazv", "tmpv", "goshv", "gollyv", "geev", + "hellov", "goodbyev", "we'llv", "seev", "youv", "allv", "againv", + (isAllowNullValue() && !JDK12) ? null : "nonnullvalue", + "value", + (isAllowDuplicateValues()) ? "value" : "value2", + }; + return result; + } + + /** + * Returns a the set of values that can be used to replace the values + * returned from {@link #getSampleValues()}. This method must return an + * array with the same length as {@link #getSampleValues()}. The values + * returned from this method should not be the same as those returned from + * {@link #getSampleValues()}. The default implementation constructs a + * set of String values and includes a single null value if + * {@link #isAllowNullValue()} returns {@code true}, and includes two values + * that are the same if {@link #isAllowDuplicateValues()} returns + * {@code true}. + */ + public Object[] getNewSampleValues() { + Object[] result = new Object[] { + (isAllowNullValue() && !JDK12 && isAllowDuplicateValues()) ? null : "newnonnullvalue", + "newvalue", + (isAllowDuplicateValues()) ? "newvalue" : "newvalue2", + "newblahv", "newfoov", "newbarv", "newbazv", "newtmpv", "newgoshv", + "newgollyv", "newgeev", "newhellov", "newgoodbyev", "newwe'llv", + "newseev", "newyouv", "newallv", "newagainv", + }; + return result; + } + + /** + * Helper method to add all the mappings described by + * {@link #getSampleKeys()} and {@link #getSampleValues()}. + */ + public void addSampleMappings(Map m) { + + Object[] keys = getSampleKeys(); + Object[] values = getSampleValues(); + + for (int i = 0; i < keys.length; i++) { + try { + m.put(keys[i], values[i]); + } + catch (NullPointerException exception) { + assertTrue("NullPointerException only allowed to be thrown if either the key or value is null.", + keys[i] == null || values[i] == null); + + assertTrue("NullPointerException on null key, but isAllowNullKey is not overridden to return false.", + keys[i] == null || !isAllowNullKey()); + + assertTrue("NullPointerException on null value, but isAllowNullValue is not overridden to return false.", + values[i] == null || !isAllowNullValue()); + + assertTrue("Unknown reason for NullPointer.", false); + } + } + assertEquals("size must reflect number of mappings added.", keys.length, m.size()); + } + + //----------------------------------------------------------------------- + + /** + * Return a new, empty {@link Map} to be used for testing. + * + * @return the map to be tested + */ + public abstract Map makeEmptyMap(); + + /** + * Return a new, populated map. The mappings in the map should match the + * keys and values returned from {@link #getSampleKeys()} and + * {@link #getSampleValues()}. The default implementation uses makeEmptyMap() + * and calls {@link #addSampleMappings} to add all the mappings to the + * map. + * + * @return the map to be tested + */ + public Map makeFullMap() { + Map m = makeEmptyMap(); + addSampleMappings(m); + return m; + } + + /** + * Implements the superclass method to return the map to be tested. + * + * @return the map to be tested + */ + public Object makeObject() { + return makeEmptyMap(); + } + + /** + * Override to return a map other than HashMap as the confirmed map. + * + * @return a map that is known to be valid + */ + public Map makeConfirmedMap() { + return new HashMap(); + } + + /** + * Creates a new Map Entry that is independent of the first and the map. + */ + public Map.Entry cloneMapEntry(Map.Entry entry) { + HashMap map = new HashMap(); + map.put(entry.getKey(), entry.getValue()); + return (Map.Entry) map.entrySet().iterator().next(); + } + + /** + * Gets the compatability version, needed for package access. + */ + public String getCompatibilityVersion() { + return super.getCompatibilityVersion(); + } + + //----------------------------------------------------------------------- + + /** + * Test to ensure the test setup is working properly. This method checks + * to ensure that the getSampleKeys and getSampleValues methods are + * returning results that look appropriate. That is, they both return a + * non-null array of equal length. The keys array must not have any + * duplicate values, and may only contain a (single) null key if + * isNullKeySupported() returns true. The values array must only have a null + * value if useNullValue() is true and may only have duplicate values if + * isAllowDuplicateValues() returns true. + */ + @Test + public void testSampleMappings() { + Object[] keys = getSampleKeys(); + Object[] values = getSampleValues(); + Object[] newValues = getNewSampleValues(); + + assertTrue("failure in test: Must have keys returned from getSampleKeys.", keys != null); + assertTrue("failure in test: Must have values returned from getSampleValues.", values != null); + + // verify keys and values have equivalent lengths (in case getSampleX are + // overridden) + assertEquals("failure in test: not the same number of sample keys and values.", keys.length, values.length); + assertEquals("failure in test: not the same number of values and new values.", values.length, newValues.length); + + // verify there aren't duplicate keys, and check values + for (int i = 0; i < keys.length - 1; i++) { + for (int j = i + 1; j < keys.length; j++) { + assertTrue("failure in test: duplicate null keys.", (keys[i] != null || keys[j] != null)); + assertTrue("failure in test: duplicate non-null key.", + (keys[i] == null || keys[j] == null || (!keys[i].equals(keys[j]) && !keys[j].equals(keys[i])))); + } + + assertTrue("failure in test: found null key, but isNullKeySupported is false.", keys[i] != null || isAllowNullKey()); + assertTrue("failure in test: found null value, but isNullValueSupported is false.", values[i] != null || isAllowNullValue()); + assertTrue("failure in test: found null new value, but isNullValueSupported is false.", newValues[i] != null || isAllowNullValue()); + assertTrue("failure in test: values should not be the same as new value", + values[i] != newValues[i] && (values[i] == null || !values[i].equals(newValues[i]))); + } + } + + // tests begin here. Each test adds a little bit of tested functionality. + // Many methods assume previous methods passed. That is, they do not + // exhaustively recheck things that have already been checked in a previous + // test methods. + + /** + * Test to ensure that makeEmptyMap and makeFull returns a new non-null + * map with each invocation. + */ + @Test + public void testMakeMap() { + Map em = makeEmptyMap(); + assertTrue("failure in test: makeEmptyMap must return a non-null map.", em != null); + + Map em2 = makeEmptyMap(); + assertTrue("failure in test: makeEmptyMap must return a non-null map.", em2 != null); + assertTrue("failure in test: makeEmptyMap must return a new map with each invocation.", em != em2); + + Map fm = makeFullMap(); + assertTrue("failure in test: makeFullMap must return a non-null map.", fm != null); + + Map fm2 = makeFullMap(); + assertTrue("failure in test: makeFullMap must return a non-null map.", fm2 != null); + assertTrue("failure in test: makeFullMap must return a new map with each invocation.", fm != fm2); + } + + /** + * Tests Map.isEmpty() + */ + @Test + public void testMapIsEmpty() { + resetEmpty(); + assertEquals("Map.isEmpty() should return true with an empty map", true, map.isEmpty()); + verifyAll(); + + resetFull(); + assertEquals("Map.isEmpty() should return false with a non-empty map", false, map.isEmpty()); + verifyAll(); + } + + /** + * Tests Map.size() + */ + @Test + public void testMapSize() { + resetEmpty(); + assertEquals("Map.size() should be 0 with an empty map", 0, map.size()); + verifyAll(); + + resetFull(); + assertEquals("Map.size() should equal the number of entries in the map", getSampleKeys().length, map.size()); + verifyAll(); + } + + /** + * Tests {@link Map#clear()}. If the map {@link #isRemoveSupported()} + * can add and remove elements}, then {@link Map#size()} and + * {@link Map#isEmpty()} are used to ensure that map has no elements after + * a call to clear. If the map does not support adding and removing + * elements, this method checks to ensure clear throws an + * UnsupportedOperationException. + */ + @Test + public void testMapClear() { + if (!isRemoveSupported()) { + try { + resetFull(); + map.clear(); + fail("Expected UnsupportedOperationException on clear"); + } + catch (UnsupportedOperationException ex) { + } + return; + } + + resetEmpty(); + map.clear(); + confirmed.clear(); + verifyAll(); + + resetFull(); + map.clear(); + confirmed.clear(); + verifyAll(); + } + + /** + * Tests Map.containsKey(Object) by verifying it returns false for all + * sample keys on a map created using an empty map and returns true for + * all sample keys returned on a full map. + */ + @Test + public void testMapContainsKey() { + Object[] keys = getSampleKeys(); + + resetEmpty(); + for (Object key : keys) { + assertTrue("Map must not contain key when map is empty", !map.containsKey(key)); + } + verifyAll(); + + resetFull(); + for (Object key : keys) { + assertTrue("Map must contain key for a mapping in the map. Missing: " + key, map.containsKey(key)); + } + verifyAll(); + } + + /** + * Tests Map.containsValue(Object) by verifying it returns false for all + * sample values on an empty map and returns true for all sample values on + * a full map. + */ + @Test + public void testMapContainsValue() { + Object[] values = getSampleValues(); + + resetEmpty(); + for (Object value : values) { + assertTrue("Empty map must not contain value", !map.containsValue(value)); + } + verifyAll(); + + resetFull(); + for (Object value : values) { + assertTrue("Map must contain value for a mapping in the map.", map.containsValue(value)); + } + verifyAll(); + } + + /** + * Tests Map.equals(Object) + */ + @Test + public void testMapEquals() { + resetEmpty(); + assertTrue("Empty maps unequal.", map.equals(confirmed)); + verifyAll(); + + resetFull(); + assertTrue("Full maps unequal.", map.equals(confirmed)); + verifyAll(); + + resetFull(); + // modify the HashMap created from the full map and make sure this + // change results in map.equals() to return false. + Iterator iter = confirmed.keySet().iterator(); + iter.next(); + iter.remove(); + assertTrue("Different maps equal.", !map.equals(confirmed)); + + resetFull(); + assertTrue("equals(null) returned true.", !map.equals(null)); + assertTrue("equals(new Object()) returned true.", !map.equals(new Object())); + verifyAll(); + } + + /** + * Tests Map.get(Object) + */ + @Test + public void testMapGet() { + resetEmpty(); + + Object[] keys = getSampleKeys(); + Object[] values = getSampleValues(); + + for (Object key : keys) { + assertTrue("Empty map.get() should return null.", map.get(key) == null); + } + + verifyAll(); + + resetFull(); + for (int i = 0; i < keys.length; i++) { + assertEquals("Full map.get() should return value from mapping.", values[i], map.get(keys[i])); + } + } + + /** + * Tests Map.hashCode() + */ + @Test + public void testMapHashCode() { + resetEmpty(); + assertTrue("Empty maps have different hashCodes.", map.hashCode() == confirmed.hashCode()); + + resetFull(); + assertTrue("Equal maps have different hashCodes.", map.hashCode() == confirmed.hashCode()); + } + + /** + * Tests Map.toString(). Since the format of the string returned by the + * toString() method is not defined in the Map interface, there is no + * common way to test the results of the toString() method. Thereforce, + * it is encouraged that Map implementations override this test with one + * that checks the format matches any format defined in its API. This + * default implementation just verifies that the toString() method does + * not return null. + */ + @Test + public void testMapToString() { + resetEmpty(); + assertTrue("Empty map toString() should not return null", map.toString() != null); + verifyAll(); + + resetFull(); + assertTrue("Empty map toString() should not return null", map.toString() != null); + verifyAll(); + } + + /** + * Compare the current serialized form of the Map + * against the canonical version in CVS. + */ + /* + @Test + public void testEmptyMapCompatibility() throws Exception { + /* + * Create canonical objects with this code + Map map = makeEmptyMap(); + if (!(map instanceof Serializable)) return; + + writeExternalFormToDisk((Serializable) map, getCanonicalEmptyCollectionName(map)); + // + + // test to make sure the canonical form has been preserved + Map map = makeEmptyMap(); + if (map instanceof Serializable && !skipSerializedCanonicalTests() && isTestSerialization()) { + Map map2 = (Map) readExternalFormFromDisk(getCanonicalEmptyCollectionName(map)); + assertEquals("Map is empty", 0, map2.size()); + } + } + */ + + /** + * Compare the current serialized form of the Map + * against the canonical version in CVS. + */ + //public void testFullMapCompatibility() throws Exception { + /** + * Create canonical objects with this code + Map map = makeFullMap(); + if (!(map instanceof Serializable)) return; + + writeExternalFormToDisk((Serializable) map, getCanonicalFullCollectionName(map)); + */ +/* + // test to make sure the canonical form has been preserved + Map map = makeFullMap(); + if (map instanceof Serializable && !skipSerializedCanonicalTests() && isTestSerialization()) { + Map map2 = (Map) readExternalFormFromDisk(getCanonicalFullCollectionName(map)); + assertEquals("Map is the right size", getSampleKeys().length, map2.size()); + } + }*/ + + /** + * Tests Map.put(Object, Object) + */ + @Test + public void testMapPut() { + resetEmpty(); + Object[] keys = getSampleKeys(); + Object[] values = getSampleValues(); + Object[] newValues = getNewSampleValues(); + + if (isPutAddSupported()) { + for (int i = 0; i < keys.length; i++) { + Object o = map.put(keys[i], values[i]); + confirmed.put(keys[i], values[i]); + verifyAll(); + assertTrue("First map.put should return null", o == null); + assertTrue("Map should contain key after put", + map.containsKey(keys[i])); + assertTrue("Map should contain value after put", + map.containsValue(values[i])); + } + if (isPutChangeSupported()) { + for (int i = 0; i < keys.length; i++) { + Object o = map.put(keys[i], newValues[i]); + confirmed.put(keys[i], newValues[i]); + verifyAll(); + assertEquals("Map.put should return previous value when changed", + values[i], o); + assertTrue("Map should still contain key after put when changed", + map.containsKey(keys[i])); + assertTrue("Map should contain new value after put when changed", + map.containsValue(newValues[i])); + + // if duplicates are allowed, we're not guaranteed that the value + // no longer exists, so don't try checking that. + if (!isAllowDuplicateValues()) { + assertTrue("Map should not contain old value after put when changed", + !map.containsValue(values[i])); + } + } + } + else { + try { + // two possible exception here, either valid + map.put(keys[0], newValues[0]); + fail("Expected IllegalArgumentException or UnsupportedOperationException on put (change)"); + } + catch (IllegalArgumentException ex) { + } + catch (UnsupportedOperationException ex) { + } + } + } + else if (isPutChangeSupported()) { + resetEmpty(); + try { + map.put(keys[0], values[0]); + fail("Expected UnsupportedOperationException or IllegalArgumentException on put (add) when fixed size"); + } + catch (IllegalArgumentException ex) { + } + catch (UnsupportedOperationException ex) { + } + + resetFull(); + int i = 0; + for (Iterator it = map.keySet().iterator(); it.hasNext() && i < newValues.length; i++) { + Object key = it.next(); + Object o = map.put(key, newValues[i]); + Object value = confirmed.put(key, newValues[i]); + verifyAll(); + assertEquals("Map.put should return previous value when changed", + value, o); + assertTrue("Map should still contain key after put when changed", + map.containsKey(key)); + assertTrue("Map should contain new value after put when changed", + map.containsValue(newValues[i])); + + // if duplicates are allowed, we're not guaranteed that the value + // no longer exists, so don't try checking that. + if (!isAllowDuplicateValues()) { + assertTrue("Map should not contain old value after put when changed", + !map.containsValue(values[i])); + } + } + } + else { + try { + map.put(keys[0], values[0]); + fail("Expected UnsupportedOperationException on put (add)"); + } + catch (UnsupportedOperationException ex) { + } + } + } + + /** + * Tests Map.put(null, value) + */ + @Test + public void testMapPutNullKey() { + resetFull(); + Object[] values = getSampleValues(); + + if (isPutAddSupported()) { + if (isAllowNullKey()) { + map.put(null, values[0]); + } + else { + try { + map.put(null, values[0]); + fail("put(null, value) should throw NPE/IAE"); + } + catch (NullPointerException ex) { + } + catch (IllegalArgumentException ex) { + } + } + } + } + + /** + * Tests Map.put(null, value) + */ + @Test + public void testMapPutNullValue() { + resetFull(); + Object[] keys = getSampleKeys(); + + if (isPutAddSupported()) { + if (isAllowNullValue()) { + map.put(keys[0], null); + } + else { + try { + map.put(keys[0], null); + fail("put(key, null) should throw NPE/IAE"); + } + catch (NullPointerException ex) { + } + catch (IllegalArgumentException ex) { + } + } + } + } + + /** + * Tests Map.putAll(map) + */ + @Test + public void testMapPutAll() { + if (!isPutAddSupported()) { + if (!isPutChangeSupported()) { + Map temp = makeFullMap(); + resetEmpty(); + try { + map.putAll(temp); + fail("Expected UnsupportedOperationException on putAll"); + } + catch (UnsupportedOperationException ex) { + } + } + return; + } + + resetEmpty(); + + Map m2 = makeFullMap(); + + map.putAll(m2); + confirmed.putAll(m2); + verifyAll(); + + resetEmpty(); + + m2 = makeConfirmedMap(); + Object[] keys = getSampleKeys(); + Object[] values = getSampleValues(); + for (int i = 0; i < keys.length; i++) { + m2.put(keys[i], values[i]); + } + + map.putAll(m2); + confirmed.putAll(m2); + verifyAll(); + } + + /** + * Tests Map.remove(Object) + */ + @Test + public void testMapRemove() { + if (!isRemoveSupported()) { + try { + resetFull(); + map.remove(map.keySet().iterator().next()); + fail("Expected UnsupportedOperationException on remove"); + } + catch (UnsupportedOperationException ex) { + } + return; + } + + resetEmpty(); + + Object[] keys = getSampleKeys(); + Object[] values = getSampleValues(); + for (int i = 0; i < keys.length; i++) { + Object o = map.remove(keys[i]); + assertTrue("First map.remove should return null", o == null); + } + verifyAll(); + + resetFull(); + + for (int i = 0; i < keys.length; i++) { + Object o = map.remove(keys[i]); + confirmed.remove(keys[i]); + verifyAll(); + + assertEquals("map.remove with valid key should return value", + values[i], o); + } + + Object[] other = getOtherKeys(); + + resetFull(); + int size = map.size(); + for (int i = 0; i < other.length; i++) { + Object o = map.remove(other[i]); + assertEquals("map.remove for nonexistent key should return null", + o, null); + assertEquals("map.remove for nonexistent key should not " + + "shrink map", size, map.size()); + } + verifyAll(); + } + + //----------------------------------------------------------------------- + + /** + * Tests that the {@link Map#values} collection is backed by + * the underlying map for clear(). + */ + @Test + public void testValuesClearChangesMap() { + if (!isRemoveSupported()) { + return; + } + + // clear values, reflected in map + resetFull(); + Collection values = map.values(); + assertTrue(map.size() > 0); + assertTrue(values.size() > 0); + values.clear(); + assertTrue(map.size() == 0); + assertTrue(values.size() == 0); + + // clear map, reflected in values + resetFull(); + values = map.values(); + assertTrue(map.size() > 0); + assertTrue(values.size() > 0); + map.clear(); + assertTrue(map.size() == 0); + assertTrue(values.size() == 0); + } + + /** + * Tests that the {@link Map#keySet} collection is backed by + * the underlying map for clear(). + */ + @Test + public void testKeySetClearChangesMap() { + if (!isRemoveSupported()) { + return; + } + + // clear values, reflected in map + resetFull(); + Set keySet = map.keySet(); + assertTrue(map.size() > 0); + assertTrue(keySet.size() > 0); + keySet.clear(); + assertTrue(map.size() == 0); + assertTrue(keySet.size() == 0); + + // clear map, reflected in values + resetFull(); + keySet = map.keySet(); + assertTrue(map.size() > 0); + assertTrue(keySet.size() > 0); + map.clear(); + assertTrue(map.size() == 0); + assertTrue(keySet.size() == 0); + } + + /** + * Tests that the {@link Map#entrySet()} collection is backed by + * the underlying map for clear(). + */ + @Test + public void testEntrySetClearChangesMap() { + if (!isRemoveSupported()) { + return; + } + + // clear values, reflected in map + resetFull(); + Set entrySet = map.entrySet(); + assertTrue(map.size() > 0); + assertTrue(entrySet.size() > 0); + entrySet.clear(); + assertTrue(map.size() == 0); + assertTrue(entrySet.size() == 0); + + // clear map, reflected in values + resetFull(); + entrySet = map.entrySet(); + assertTrue(map.size() > 0); + assertTrue(entrySet.size() > 0); + map.clear(); + assertTrue(map.size() == 0); + assertTrue(entrySet.size() == 0); + } + + //----------------------------------------------------------------------- + @Test + public void testEntrySetContains1() { + resetFull(); + Set entrySet = map.entrySet(); + Map.Entry entry = (Map.Entry) entrySet.iterator().next(); + assertEquals(true, entrySet.contains(entry)); + } + + @Test + public void testEntrySetContains2() { + resetFull(); + Set entrySet = map.entrySet(); + Map.Entry entry = (Map.Entry) entrySet.iterator().next(); + Map.Entry test = cloneMapEntry(entry); + assertEquals(true, entrySet.contains(test)); + } + + @Test + public void testEntrySetContains3() { + resetFull(); + Set entrySet = map.entrySet(); + Map.Entry entry = (Map.Entry) entrySet.iterator().next(); + HashMap temp = new HashMap(); + temp.put(entry.getKey(), "A VERY DIFFERENT VALUE"); + Map.Entry test = (Map.Entry) temp.entrySet().iterator().next(); + assertEquals(false, entrySet.contains(test)); + } + + @Test + public void testEntrySetRemove1() { + if (!isRemoveSupported()) { + return; + } + resetFull(); + int size = map.size(); + Set entrySet = map.entrySet(); + Map.Entry entry = (Map.Entry) entrySet.iterator().next(); + Object key = entry.getKey(); + + assertEquals(true, entrySet.remove(entry)); + assertEquals(false, map.containsKey(key)); + assertEquals(size - 1, map.size()); + } + + @Test + public void testEntrySetRemove2() { + if (!isRemoveSupported()) { + return; + } + resetFull(); + int size = map.size(); + Set entrySet = map.entrySet(); + Map.Entry entry = (Map.Entry) entrySet.iterator().next(); + Object key = entry.getKey(); + Map.Entry test = cloneMapEntry(entry); + + assertEquals(true, entrySet.remove(test)); + assertEquals(false, map.containsKey(key)); + assertEquals(size - 1, map.size()); + } + + @Test + public void testEntrySetRemove3() { + if (!isRemoveSupported()) { + return; + } + resetFull(); + int size = map.size(); + Set entrySet = map.entrySet(); + Map.Entry entry = (Map.Entry) entrySet.iterator().next(); + Object key = entry.getKey(); + HashMap temp = new HashMap(); + temp.put(entry.getKey(), "A VERY DIFFERENT VALUE"); + Map.Entry test = (Map.Entry) temp.entrySet().iterator().next(); + + assertEquals(false, entrySet.remove(test)); + assertEquals(true, map.containsKey(key)); + assertEquals(size, map.size()); + } + + //----------------------------------------------------------------------- + + /** + * Tests that the {@link Map#values} collection is backed by + * the underlying map by removing from the values collection + * and testing if the value was removed from the map. + *

    + * We should really test the "vice versa" case--that values removed + * from the map are removed from the values collection--also, + * but that's a more difficult test to construct (lacking a + * "removeValue" method.) + *

    + *

    + * See bug + * 9573. + *

    + */ + @Test + public void testValuesRemoveChangesMap() { + resetFull(); + Object[] sampleValues = getSampleValues(); + Collection values = map.values(); + for (int i = 0; i < sampleValues.length; i++) { + if (map.containsValue(sampleValues[i])) { + int j = 0; // loop counter prevents infinite loops when remove is broken + while (values.contains(sampleValues[i]) && j < 10000) { + try { + values.remove(sampleValues[i]); + } + catch (UnsupportedOperationException e) { + // if values.remove is unsupported, just skip this test + return; + } + j++; + } + assertTrue("values().remove(obj) is broken", j < 10000); + assertTrue( + "Value should have been removed from the underlying map.", + !map.containsValue(sampleValues[i])); + } + } + } + + /** + * Tests that the {@link Map#keySet} set is backed by + * the underlying map by removing from the keySet set + * and testing if the key was removed from the map. + */ + @Test + public void testKeySetRemoveChangesMap() { + resetFull(); + Object[] sampleKeys = getSampleKeys(); + Set keys = map.keySet(); + for (int i = 0; i < sampleKeys.length; i++) { + try { + keys.remove(sampleKeys[i]); + } + catch (UnsupportedOperationException e) { + // if key.remove is unsupported, just skip this test + return; + } + assertTrue( + "Key should have been removed from the underlying map.", + !map.containsKey(sampleKeys[i])); + } + } + + // TODO: Need: + // testValuesRemovedFromEntrySetAreRemovedFromMap + // same for EntrySet/KeySet/values's + // Iterator.remove, removeAll, retainAll + + /** + * Utility methods to create an array of Map.Entry objects + * out of the given key and value arrays.

    + * + * @param keys the array of keys + * @param values the array of values + * @return an array of Map.Entry of those keys to those values + */ + private Map.Entry[] makeEntryArray(Object[] keys, Object[] values) { + Map.Entry[] result = new Map.Entry[keys.length]; + for (int i = 0; i < keys.length; i++) { + Map map = makeConfirmedMap(); + map.put(keys[i], values[i]); + result[i] = (Map.Entry) map.entrySet().iterator().next(); + } + return result; + } + + /** + * Bulk test {@link Map#entrySet()}. This method runs through all of + * the tests in {@link SetAbstractTest}. + * After modification operations, {@link #verifyAll()} is invoked to ensure + * that the map and the other collection views are still valid. + * + * @return a {@link SetAbstractTest} instance for testing the map's entry set + */ + /* + public BulkTest bulkTestMapEntrySet() { + return new TestMapEntrySet(); + } + */ + + public class TestMapEntrySet extends SetAbstractTest { + + // Have to implement manually; entrySet doesn't support addAll + public Object[] getFullElements() { + Object[] k = getSampleKeys(); + Object[] v = getSampleValues(); + return makeEntryArray(k, v); + } + + // Have to implement manually; entrySet doesn't support addAll + public Object[] getOtherElements() { + Object[] k = getOtherKeys(); + Object[] v = getOtherValues(); + return makeEntryArray(k, v); + } + + public Set makeEmptySet() { + return makeEmptyMap().entrySet(); + } + + public Set makeFullSet() { + return makeFullMap().entrySet(); + } + + public boolean isAddSupported() { + // Collection views don't support add operations. + return false; + } + + public boolean isRemoveSupported() { + // Entry set should only support remove if map does + return MapAbstractTest.this.isRemoveSupported(); + } + + public boolean isGetStructuralModify() { + return MapAbstractTest.this.isGetStructuralModify(); + } + + public boolean isTestSerialization() { + return false; + } + + public void resetFull() { + MapAbstractTest.this.resetFull(); + collection = map.entrySet(); + TestMapEntrySet.this.confirmed = MapAbstractTest.this.confirmed.entrySet(); + } + + public void resetEmpty() { + MapAbstractTest.this.resetEmpty(); + collection = map.entrySet(); + TestMapEntrySet.this.confirmed = MapAbstractTest.this.confirmed.entrySet(); + } + + @Test + public void testMapEntrySetIteratorEntry() { + resetFull(); + Iterator it = collection.iterator(); + int count = 0; + while (it.hasNext()) { + Map.Entry entry = (Map.Entry) it.next(); + assertEquals(true, MapAbstractTest.this.map.containsKey(entry.getKey())); + assertEquals(true, MapAbstractTest.this.map.containsValue(entry.getValue())); + if (isGetStructuralModify() == false) { + assertEquals(MapAbstractTest.this.map.get(entry.getKey()), entry.getValue()); + } + count++; + } + assertEquals(collection.size(), count); + } + + @Test + public void testMapEntrySetIteratorEntrySetValue() { + Object key1 = getSampleKeys()[0]; + Object key2 = (getSampleKeys().length == 1 ? getSampleKeys()[0] : getSampleKeys()[1]); + Object newValue1 = getNewSampleValues()[0]; + Object newValue2 = (getNewSampleValues().length == 1 ? getNewSampleValues()[0] : getNewSampleValues()[1]); + + resetFull(); + // explicitly get entries as sample values/keys are connected for some maps + // such as BeanMap + Iterator it = TestMapEntrySet.this.collection.iterator(); + Map.Entry entry1 = getEntry(it, key1); + it = TestMapEntrySet.this.collection.iterator(); + Map.Entry entry2 = getEntry(it, key2); + Iterator itConfirmed = TestMapEntrySet.this.confirmed.iterator(); + Map.Entry entryConfirmed1 = getEntry(itConfirmed, key1); + itConfirmed = TestMapEntrySet.this.confirmed.iterator(); + Map.Entry entryConfirmed2 = getEntry(itConfirmed, key2); + verifyAll(); + + if (isSetValueSupported() == false) { + try { + entry1.setValue(newValue1); + } + catch (UnsupportedOperationException ex) { + } + return; + } + + entry1.setValue(newValue1); + entryConfirmed1.setValue(newValue1); + assertEquals(newValue1, entry1.getValue()); + assertEquals(true, MapAbstractTest.this.map.containsKey(entry1.getKey())); + assertEquals(true, MapAbstractTest.this.map.containsValue(newValue1)); + assertEquals(newValue1, MapAbstractTest.this.map.get(entry1.getKey())); + verifyAll(); + + entry1.setValue(newValue1); + entryConfirmed1.setValue(newValue1); + assertEquals(newValue1, entry1.getValue()); + assertEquals(true, MapAbstractTest.this.map.containsKey(entry1.getKey())); + assertEquals(true, MapAbstractTest.this.map.containsValue(newValue1)); + assertEquals(newValue1, MapAbstractTest.this.map.get(entry1.getKey())); + verifyAll(); + + entry2.setValue(newValue2); + entryConfirmed2.setValue(newValue2); + assertEquals(newValue2, entry2.getValue()); + assertEquals(true, MapAbstractTest.this.map.containsKey(entry2.getKey())); + assertEquals(true, MapAbstractTest.this.map.containsValue(newValue2)); + assertEquals(newValue2, MapAbstractTest.this.map.get(entry2.getKey())); + verifyAll(); + } + + public Map.Entry getEntry(Iterator itConfirmed, Object key) { + Map.Entry entry = null; + while (itConfirmed.hasNext()) { + Map.Entry temp = (Map.Entry) itConfirmed.next(); + if (temp.getKey() == null) { + if (key == null) { + entry = temp; + break; + } + } + else if (temp.getKey().equals(key)) { + entry = temp; + break; + } + } + assertNotNull("No matching entry in map for key '" + key + "'", entry); + return entry; + } + + @Test + public void testMapEntrySetRemoveNonMapEntry() { + if (isRemoveSupported() == false) { + return; + } + resetFull(); + assertEquals(false, getSet().remove(null)); + assertEquals(false, getSet().remove(new Object())); + } + + public void verifyAll() { + super.verifyAll(); + MapAbstractTest.this.verifyAll(); + } + } + + /** + * Bulk test {@link Map#keySet()}. This method runs through all of + * the tests in {@link SetAbstractTest}. + * After modification operations, {@link #verifyAll()} is invoked to ensure + * that the map and the other collection views are still valid. + * + * @return a {@link SetAbstractTest} instance for testing the map's key set + */ + /* + public BulkTest bulkTestMapKeySet() { + return new TestMapKeySet(); + } + */ + + public class TestMapKeySet extends SetAbstractTest { + public Object[] getFullElements() { + return getSampleKeys(); + } + + public Object[] getOtherElements() { + return getOtherKeys(); + } + + public Set makeEmptySet() { + return makeEmptyMap().keySet(); + } + + public Set makeFullSet() { + return makeFullMap().keySet(); + } + + public boolean isNullSupported() { + return MapAbstractTest.this.isAllowNullKey(); + } + + public boolean isAddSupported() { + return false; + } + + public boolean isRemoveSupported() { + return MapAbstractTest.this.isRemoveSupported(); + } + + public boolean isTestSerialization() { + return false; + } + + public void resetEmpty() { + MapAbstractTest.this.resetEmpty(); + collection = map.keySet(); + TestMapKeySet.this.confirmed = MapAbstractTest.this.confirmed.keySet(); + } + + public void resetFull() { + MapAbstractTest.this.resetFull(); + collection = map.keySet(); + TestMapKeySet.this.confirmed = MapAbstractTest.this.confirmed.keySet(); + } + + public void verifyAll() { + super.verifyAll(); + MapAbstractTest.this.verifyAll(); + } + } + + /** + * Bulk test {@link Map#values()}. This method runs through all of + * the tests in {@link CollectionAbstractTest}. + * After modification operations, {@link #verifyAll()} is invoked to ensure + * that the map and the other collection views are still valid. + * + * @return a {@link CollectionAbstractTest} instance for testing the map's + * values collection + */ + /* + public BulkTest bulkTestMapValues() { + return new TestMapValues(); + } + */ + + public class TestMapValues extends CollectionAbstractTest { + public Object[] getFullElements() { + return getSampleValues(); + } + + public Object[] getOtherElements() { + return getOtherValues(); + } + + public Collection makeCollection() { + return makeEmptyMap().values(); + } + + public Collection makeFullCollection() { + return makeFullMap().values(); + } + + public boolean isNullSupported() { + return MapAbstractTest.this.isAllowNullKey(); + } + + public boolean isAddSupported() { + return false; + } + + public boolean isRemoveSupported() { + return MapAbstractTest.this.isRemoveSupported(); + } + + public boolean isTestSerialization() { + return false; + } + + public boolean areEqualElementsDistinguishable() { + // equal values are associated with different keys, so they are + // distinguishable. + return true; + } + + public Collection makeConfirmedCollection() { + // never gets called, reset methods are overridden + return null; + } + + public Collection makeConfirmedFullCollection() { + // never gets called, reset methods are overridden + return null; + } + + public void resetFull() { + MapAbstractTest.this.resetFull(); + collection = map.values(); + TestMapValues.this.confirmed = MapAbstractTest.this.confirmed.values(); + } + + public void resetEmpty() { + MapAbstractTest.this.resetEmpty(); + collection = map.values(); + TestMapValues.this.confirmed = MapAbstractTest.this.confirmed.values(); + } + + public void verifyAll() { + super.verifyAll(); + MapAbstractTest.this.verifyAll(); + } + + // TODO: should test that a remove on the values collection view + // removes the proper mapping and not just any mapping that may have + // the value equal to the value returned from the values iterator. + } + + /** + * Resets the {@link #map}, {@link #entrySet}, {@link #keySet}, + * {@link #values} and {@link #confirmed} fields to empty. + */ + public void resetEmpty() { + this.map = makeEmptyMap(); + views(); + this.confirmed = makeConfirmedMap(); + } + + /** + * Resets the {@link #map}, {@link #entrySet}, {@link #keySet}, + * {@link #values} and {@link #confirmed} fields to full. + */ + public void resetFull() { + this.map = makeFullMap(); + views(); + this.confirmed = makeConfirmedMap(); + Object[] k = getSampleKeys(); + Object[] v = getSampleValues(); + for (int i = 0; i < k.length; i++) { + confirmed.put(k[i], v[i]); + } + } + + /** + * Resets the collection view fields. + */ + private void views() { + this.keySet = map.keySet(); + this.values = map.values(); + this.entrySet = map.entrySet(); + } + + /** + * Verifies that {@link #map} is still equal to {@link #confirmed}. + * This method checks that the map is equal to the HashMap, + * and that the map's collection views are still equal to + * the HashMap's collection views. An {@code equals} test + * is done on the maps and their collection views; their size and + * {@code isEmpty} results are compared; their hashCodes are + * compared; and {@code containsAll} tests are run on the + * collection views. + */ + public void verifyAll() { + verifyMap(); + verifyEntrySet(); + verifyKeySet(); + verifyValues(); + } + + public void verifyMap() { + int size = confirmed.size(); + boolean empty = confirmed.isEmpty(); + assertEquals("Map should be same size as HashMap", size, map.size()); + assertEquals("Map should be empty if HashMap is", empty, map.isEmpty()); + assertEquals("hashCodes should be the same", confirmed.hashCode(), map.hashCode()); + // this fails for LRUMap because confirmed.equals() somehow modifies + // map, causing concurrent modification exceptions. + //assertEquals("Map should still equal HashMap", confirmed, map); + // this works though and performs the same verification: + assertTrue("Map should still equal HashMap", map.equals(confirmed)); + // TODO: this should really be reexamined to figure out why LRU map + // behaves like it does (the equals shouldn't modify since all accesses + // by the confirmed collection should be through an iterator, thus not + // causing LRUMap to change). + } + + public void verifyEntrySet() { + int size = confirmed.size(); + boolean empty = confirmed.isEmpty(); + assertEquals("entrySet should be same size as HashMap's\nTest: " + entrySet + "\nReal: " + confirmed.entrySet(), + size, entrySet.size()); + assertEquals("entrySet should be empty if HashMap is\nTest: " + entrySet + "\nReal: " + confirmed.entrySet(), + empty, entrySet.isEmpty()); + assertTrue("entrySet should contain all HashMap's elements\nTest: " + entrySet + "\nReal: " + confirmed.entrySet(), + entrySet.containsAll(confirmed.entrySet())); + assertEquals("entrySet hashCodes should be the same\nTest: " + entrySet + "\nReal: " + confirmed.entrySet(), + confirmed.entrySet().hashCode(), entrySet.hashCode()); + assertEquals("Map's entry set should still equal HashMap's", confirmed.entrySet(), entrySet); + } + + public void verifyKeySet() { + int size = confirmed.size(); + boolean empty = confirmed.isEmpty(); + assertEquals("keySet should be same size as HashMap's\nTest: " + keySet + "\nReal: " + confirmed.keySet(), + size, keySet.size()); + assertEquals("keySet should be empty if HashMap is\nTest: " + keySet + "\nReal: " + confirmed.keySet(), + empty, keySet.isEmpty()); + assertTrue("keySet should contain all HashMap's elements\nTest: " + keySet + "\nReal: " + confirmed.keySet(), + keySet.containsAll(confirmed.keySet())); + assertEquals("keySet hashCodes should be the same\nTest: " + keySet + "\nReal: " + confirmed.keySet(), + confirmed.keySet().hashCode(), keySet.hashCode()); + assertEquals("Map's key set should still equal HashMap's", confirmed.keySet(), keySet); + } + + public void verifyValues() { + List known = new ArrayList(confirmed.values()); + List test = new ArrayList(values); + + int size = confirmed.size(); + boolean empty = confirmed.isEmpty(); + + assertEquals("values should be same size as HashMap's\nTest: " + test + "\nReal: " + known, size, values.size()); + assertEquals("values should be empty if HashMap is\nTest: " + test + "\nReal: " + known, empty, values.isEmpty()); + assertTrue("values should contain all HashMap's elements\nTest: " + test + "\nReal: " + known, test.containsAll(known)); + assertTrue("values should contain all HashMap's elements\nTest: " + test + "\nReal: " + known, known.containsAll(test)); + + for (Object aKnown : known) { + boolean removed = test.remove(aKnown); + assertTrue("Map's values should still equal HashMap's", removed); + } + + assertTrue("Map's values should still equal HashMap's", test.isEmpty()); + } + + /** + * Erases any leftover instance variables by setting them to null. + */ + @After + public void tearDown() throws Exception { + map = null; + keySet = null; + entrySet = null; + values = null; + confirmed = null; + } +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/NullMapTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/NullMapTest.java similarity index 63% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/NullMapTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/NullMapTest.java index c97dcae9..308ca4c5 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/NullMapTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/NullMapTest.java @@ -1,187 +1,260 @@ -package com.twelvemonkeys.util; - - -import java.util.Map; -import java.util.HashMap; - -/** - * NOTE: This TestCase is written especially for NullMap, and is full of dirty - * tricks. A good indication that NullMap is not a good, general-purpose Map - * implementation... - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/NullMapTestCase.java#2 $ - */ -public class NullMapTestCase extends MapAbstractTestCase { - private boolean empty = true; - - public Map makeEmptyMap() { - return new NullMap(); - } - - public Map makeFullMap() { - return new NullMap(); - } - - public Map makeConfirmedMap() { - // Always empty - return new HashMap(); - } - - public void resetEmpty() { - empty = true; - super.resetEmpty(); - } - - public void resetFull() { - empty = false; - super.resetFull(); - } - - public void verifyAll() { - if (empty) { - super.verifyAll(); - } - } - - // Overriden, as this map is always empty - public void testMapIsEmpty() { - resetEmpty(); - assertEquals("Map.isEmpty() should return true with an empty map", - true, map.isEmpty()); - verifyAll(); - resetFull(); - assertEquals("Map.isEmpty() should return true with a full map", - true, map.isEmpty()); - } - - // Overriden, as this map is always empty - public void testMapSize() { - resetEmpty(); - assertEquals("Map.size() should be 0 with an empty map", - 0, map.size()); - verifyAll(); - - resetFull(); - assertEquals("Map.size() should equal the number of entries " + - "in the map", 0, map.size()); - } - - public void testMapContainsKey() { - Object[] keys = getSampleKeys(); - - resetEmpty(); - for(int i = 0; i < keys.length; i++) { - assertTrue("Map must not contain key when map is empty", - !map.containsKey(keys[i])); - } - verifyAll(); - } - - public void testMapContainsValue() { - Object[] values = getSampleValues(); - - resetEmpty(); - for(int i = 0; i < values.length; i++) { - assertTrue("Empty map must not contain value", - !map.containsValue(values[i])); - } - verifyAll(); - } - - public void testMapEquals() { - resetEmpty(); - assertTrue("Empty maps unequal.", map.equals(confirmed)); - verifyAll(); - } - - public void testMapHashCode() { - resetEmpty(); - assertTrue("Empty maps have different hashCodes.", - map.hashCode() == confirmed.hashCode()); - } - - public void testMapGet() { - resetEmpty(); - - Object[] keys = getSampleKeys(); - - for (int i = 0; i < keys.length; i++) { - assertTrue("Empty map.get() should return null.", - map.get(keys[i]) == null); - } - verifyAll(); - } - - public void testMapPut() { - resetEmpty(); - Object[] keys = getSampleKeys(); - Object[] values = getSampleValues(); - Object[] newValues = getNewSampleValues(); - - for (int i = 0; i < keys.length; i++) { - Object o = map.put(keys[i], values[i]); - //confirmed.put(keys[i], values[i]); - verifyAll(); - assertTrue("First map.put should return null", o == null); - } - for (int i = 0; i < keys.length; i++) { - map.put(keys[i], newValues[i]); - //confirmed.put(keys[i], newValues[i]); - verifyAll(); - } - } - - public void testMapToString() { - resetEmpty(); - assertTrue("Empty map toString() should not return null", - map.toString() != null); - verifyAll(); - } - - public void testMapPutAll() { - // TODO: Find a menaingful way to test this - } - - public void testMapRemove() { - resetEmpty(); - - Object[] keys = getSampleKeys(); - for(int i = 0; i < keys.length; i++) { - Object o = map.remove(keys[i]); - assertTrue("First map.remove should return null", o == null); - } - verifyAll(); - } - - //----------------------------------------------------------------------- - public void testEntrySetClearChangesMap() { - } - - public void testKeySetClearChangesMap() { - } - - public void testKeySetRemoveChangesMap() { - } - - public void testValuesClearChangesMap() { - } - - public void testEntrySetContains1() { - } - - public void testEntrySetContains2() { - } - - public void testEntrySetContains3() { - } - - public void testEntrySetRemove1() { - } - - public void testEntrySetRemove2() { - } - - public void testEntrySetRemove3() { - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.util; + +import org.junit.Test; + +import java.util.HashMap; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * NOTE: This TestCase is written especially for NullMap, and is full of dirty + * tricks. A good indication that NullMap is not a good, general-purpose Map + * implementation... + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/NullMapTestCase.java#2 $ + */ +public class NullMapTest extends MapAbstractTest { + private boolean empty = true; + + public Map makeEmptyMap() { + return new NullMap(); + } + + public Map makeFullMap() { + return new NullMap(); + } + + public Map makeConfirmedMap() { + // Always empty + return new HashMap(); + } + + public void resetEmpty() { + empty = true; + super.resetEmpty(); + } + + public void resetFull() { + empty = false; + super.resetFull(); + } + + public void verifyAll() { + if (empty) { + super.verifyAll(); + } + } + + // Overriden, as this map is always empty + @Test + @Override + public void testMapIsEmpty() { + resetEmpty(); + assertEquals("Map.isEmpty() should return true with an empty map", + true, map.isEmpty()); + verifyAll(); + resetFull(); + assertEquals("Map.isEmpty() should return true with a full map", + true, map.isEmpty()); + } + + // Overriden, as this map is always empty + @Test + @Override + public void testMapSize() { + resetEmpty(); + assertEquals("Map.size() should be 0 with an empty map", + 0, map.size()); + verifyAll(); + + resetFull(); + assertEquals("Map.size() should equal the number of entries " + + "in the map", 0, map.size()); + } + + @Test + @Override + public void testMapContainsKey() { + Object[] keys = getSampleKeys(); + + resetEmpty(); + for (Object key : keys) { + assertTrue("Map must not contain key when map is empty", !map.containsKey(key)); + } + verifyAll(); + } + + @Test + @Override + public void testMapContainsValue() { + Object[] values = getSampleValues(); + + resetEmpty(); + for (Object value : values) { + assertTrue("Empty map must not contain value", !map.containsValue(value)); + } + verifyAll(); + } + + @Test + @Override + public void testMapEquals() { + resetEmpty(); + assertTrue("Empty maps unequal.", map.equals(confirmed)); + verifyAll(); + } + + @Test + @Override + public void testMapHashCode() { + resetEmpty(); + assertTrue("Empty maps have different hashCodes.", + map.hashCode() == confirmed.hashCode()); + } + + @Test + @Override + public void testMapGet() { + resetEmpty(); + + Object[] keys = getSampleKeys(); + + for (Object key : keys) { + assertTrue("Empty map.get() should return null.", map.get(key) == null); + } + verifyAll(); + } + + @Test + @Override + public void testMapPut() { + resetEmpty(); + Object[] keys = getSampleKeys(); + Object[] values = getSampleValues(); + Object[] newValues = getNewSampleValues(); + + for (int i = 0; i < keys.length; i++) { + Object o = map.put(keys[i], values[i]); + //confirmed.put(keys[i], values[i]); + verifyAll(); + assertTrue("First map.put should return null", o == null); + } + for (int i = 0; i < keys.length; i++) { + map.put(keys[i], newValues[i]); + //confirmed.put(keys[i], newValues[i]); + verifyAll(); + } + } + + @Test + @Override + public void testMapToString() { + resetEmpty(); + assertTrue("Empty map toString() should not return null", + map.toString() != null); + verifyAll(); + } + + @Test + @Override + public void testMapPutAll() { + // TODO: Find a menaingful way to test this + } + + @Test + @Override + public void testMapRemove() { + resetEmpty(); + + Object[] keys = getSampleKeys(); + for(int i = 0; i < keys.length; i++) { + Object o = map.remove(keys[i]); + assertTrue("First map.remove should return null", o == null); + } + verifyAll(); + } + + //----------------------------------------------------------------------- + @Test + @Override + public void testEntrySetClearChangesMap() { + } + + @Test + @Override + public void testKeySetClearChangesMap() { + } + + @Test + @Override + public void testKeySetRemoveChangesMap() { + } + + @Test + @Override + public void testValuesClearChangesMap() { + } + + @Test + @Override + public void testEntrySetContains1() { + } + + @Test + @Override + public void testEntrySetContains2() { + } + + @Test + @Override + public void testEntrySetContains3() { + } + + @Test + @Override + public void testEntrySetRemove1() { + } + + @Test + @Override + public void testEntrySetRemove2() { + } + + @Test + @Override + public void testEntrySetRemove3() { + } +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/ObjectAbstractTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/ObjectAbstractTest.java similarity index 86% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/ObjectAbstractTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/ObjectAbstractTest.java index c781d776..f79cfdb6 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/ObjectAbstractTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/ObjectAbstractTest.java @@ -1,307 +1,347 @@ -/* - * Copyright 2001-2004 The Apache Software Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.twelvemonkeys.util; - -import junit.framework.TestCase; - -import java.io.*; - -/** - * Abstract test class for {@link Object} methods and contracts. - *

    - * To use, simply extend this class, and implement - * the {@link #makeObject()} method. - *

    - * If your {@link Object} fails one of these tests by design, - * you may still use this base set of cases. Simply override the - * test case (method) your {@link Object} fails. - * - * @version $Revision: #2 $ $Date: 2008/07/15 $ - * - * @author Rodney Waldhoff - * @author Stephen Colebourne - * @author Anonymous - */ -public abstract class ObjectAbstractTestCase extends TestCase { - //----------------------------------------------------------------------- - - /** - * Implement this method to return the object to test. - * - * @return the object to test - */ - public abstract Object makeObject(); - - /** - * Override this method if a subclass is testing an object - * that cannot serialize an "empty" Collection. - * (e.g. Comparators have no contents) - * - * @return true - */ - public boolean supportsEmptyCollections() { - return true; - } - - /** - * Override this method if a subclass is testing an object - * that cannot serialize a "full" Collection. - * (e.g. Comparators have no contents) - * - * @return true - */ - public boolean supportsFullCollections() { - return true; - } - - /** - * Is serialization testing supported. - * Default is true. - */ - public boolean isTestSerialization() { - return true; - } - - /** - * Returns true to indicate that the collection supports equals() comparisons. - * This implementation returns true; - */ - public boolean isEqualsCheckable() { - return true; - } - - //----------------------------------------------------------------------- - public void testObjectEqualsSelf() { - Object obj = makeObject(); - assertEquals("A Object should equal itself", obj, obj); - } - - public void testEqualsNull() { - Object obj = makeObject(); - assertEquals(false, obj.equals(null)); // make sure this doesn't throw NPE either - } - - public void testObjectHashCodeEqualsSelfHashCode() { - Object obj = makeObject(); - assertEquals("hashCode should be repeatable", obj.hashCode(), obj.hashCode()); - } - - public void testObjectHashCodeEqualsContract() { - Object obj1 = makeObject(); - if (obj1.equals(obj1)) { - assertEquals( - "[1] When two objects are equal, their hashCodes should be also.", - obj1.hashCode(), obj1.hashCode()); - } - Object obj2 = makeObject(); - if (obj1.equals(obj2)) { - assertEquals( - "[2] When two objects are equal, their hashCodes should be also.", - obj1.hashCode(), obj2.hashCode()); - assertTrue( - "When obj1.equals(obj2) is true, then obj2.equals(obj1) should also be true", - obj2.equals(obj1)); - } - } - - public void testSerializeDeserializeThenCompare() throws Exception { - Object obj = makeObject(); - if (obj instanceof Serializable && isTestSerialization()) { - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - ObjectOutputStream out = new ObjectOutputStream(buffer); - out.writeObject(obj); - out.close(); - - ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray())); - Object dest = in.readObject(); - in.close(); - if (isEqualsCheckable()) { - assertEquals("obj != deserialize(serialize(obj))", obj, dest); - } - } - } - - /** - * Sanity check method, makes sure that any Serializable - * class can be serialized and de-serialized in memory, - * using the handy makeObject() method - * - * @throws java.io.IOException - * @throws ClassNotFoundException - */ - public void testSimpleSerialization() throws Exception { - Object o = makeObject(); - if (o instanceof Serializable && isTestSerialization()) { - byte[] objekt = writeExternalFormToBytes((Serializable) o); - Object p = readExternalFormFromBytes(objekt); - } - } - - /** - * Tests serialization by comparing against a previously stored version in CVS. - * If the test object is serializable, confirm that a canonical form exists. - */ - public void testCanonicalEmptyCollectionExists() { - if (supportsEmptyCollections() && isTestSerialization() && !skipSerializedCanonicalTests()) { - Object object = makeObject(); - if (object instanceof Serializable) { - String name = getCanonicalEmptyCollectionName(object); - assertTrue( - "Canonical empty collection (" + name + ") is not in CVS", - new File(name).exists()); - } - } - } - - /** - * Tests serialization by comparing against a previously stored version in CVS. - * If the test object is serializable, confirm that a canonical form exists. - */ - public void testCanonicalFullCollectionExists() { - if (supportsFullCollections() && isTestSerialization() && !skipSerializedCanonicalTests()) { - Object object = makeObject(); - if (object instanceof Serializable) { - String name = getCanonicalFullCollectionName(object); - assertTrue( - "Canonical full collection (" + name + ") is not in CVS", - new File(name).exists()); - } - } - } - - // protected implementation - //----------------------------------------------------------------------- - /** - * Get the version of Collections that this object tries to - * maintain serialization compatibility with. Defaults to 1, the - * earliest Collections version. (Note: some collections did not - * even exist in this version). - * - * This constant makes it possible for TestMap (and other subclasses, - * if necessary) to automatically check CVS for a versionX copy of a - * Serialized object, so we can make sure that compatibility is maintained. - * See, for example, TestMap.getCanonicalFullMapName(Map map). - * Subclasses can override this variable, indicating compatibility - * with earlier Collections versions. - * - * @return The version, or {@code null} if this object shouldn't be - * tested for compatibility with previous versions. - */ - public String getCompatibilityVersion() { - return "1"; - } - - protected String getCanonicalEmptyCollectionName(Object object) { - StringBuilder retval = new StringBuilder(); - retval.append("data/test/"); - String colName = object.getClass().getName(); - colName = colName.substring(colName.lastIndexOf(".") + 1, colName.length()); - retval.append(colName); - retval.append(".emptyCollection.version"); - retval.append(getCompatibilityVersion()); - retval.append(".obj"); - return retval.toString(); - } - - protected String getCanonicalFullCollectionName(Object object) { - StringBuilder retval = new StringBuilder(); - retval.append("data/test/"); - String colName = object.getClass().getName(); - colName = colName.substring(colName.lastIndexOf(".") + 1, colName.length()); - retval.append(colName); - retval.append(".fullCollection.version"); - retval.append(getCompatibilityVersion()); - retval.append(".obj"); - return retval.toString(); - } - - /** - * Write a Serializable or Externalizable object as - * a file at the given path. NOT USEFUL as part - * of a unit test; this is just a utility method - * for creating disk-based objects in CVS that can become - * the basis for compatibility tests using - * readExternalFormFromDisk(String path) - * - * @param o Object to serialize - * @param path path to write the serialized Object - * @exception java.io.IOException - */ - protected void writeExternalFormToDisk(Serializable o, String path) throws IOException { - FileOutputStream fileStream = new FileOutputStream(path); - writeExternalFormToStream(o, fileStream); - } - - /** - * Converts a Serializable or Externalizable object to - * bytes. Useful for in-memory tests of serialization - * - * @param o Object to convert to bytes - * @return serialized form of the Object - * @exception java.io.IOException - */ - protected byte[] writeExternalFormToBytes(Serializable o) throws IOException { - ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); - writeExternalFormToStream(o, byteStream); - return byteStream.toByteArray(); - } - - /** - * Reads a Serialized or Externalized Object from disk. - * Useful for creating compatibility tests between - * different CVS versions of the same class - * - * @param path path to the serialized Object - * @return the Object at the given path - * @exception java.io.IOException - * @exception ClassNotFoundException - */ - protected Object readExternalFormFromDisk(String path) throws IOException, ClassNotFoundException { - FileInputStream stream = new FileInputStream(path); - return readExternalFormFromStream(stream); - } - - /** - * Read a Serialized or Externalized Object from bytes. - * Useful for verifying serialization in memory. - * - * @param b byte array containing a serialized Object - * @return Object contained in the bytes - * @exception java.io.IOException - * @exception ClassNotFoundException - */ - protected Object readExternalFormFromBytes(byte[] b) throws IOException, ClassNotFoundException { - ByteArrayInputStream stream = new ByteArrayInputStream(b); - return readExternalFormFromStream(stream); - } - - protected boolean skipSerializedCanonicalTests() { - return Boolean.getBoolean("org.apache.commons.collections:with-clover"); - } - - // private implementation - //----------------------------------------------------------------------- - private Object readExternalFormFromStream(InputStream stream) throws IOException, ClassNotFoundException { - ObjectInputStream oStream = new ObjectInputStream(stream); - return oStream.readObject(); - } - - private void writeExternalFormToStream(Serializable o, OutputStream stream) throws IOException { - ObjectOutputStream oStream = new ObjectOutputStream(stream); - oStream.writeObject(o); - } - -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Copyright 2001-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.twelvemonkeys.util; + +import org.junit.Test; + +import java.io.*; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Abstract test class for {@link Object} methods and contracts. + *

    + * To use, simply extend this class, and implement + * the {@link #makeObject()} method. + *

    + * If your {@link Object} fails one of these tests by design, + * you may still use this base set of cases. Simply override the + * test case (method) your {@link Object} fails. + * + * @version $Revision: #2 $ $Date: 2008/07/15 $ + * + * @author Rodney Waldhoff + * @author Stephen Colebourne + * @author Anonymous + */ +public abstract class ObjectAbstractTest { + //----------------------------------------------------------------------- + + /** + * Implement this method to return the object to test. + * + * @return the object to test + */ + public abstract Object makeObject(); + + /** + * Override this method if a subclass is testing an object + * that cannot serialize an "empty" Collection. + * (e.g. Comparators have no contents) + * + * @return true + */ + public boolean supportsEmptyCollections() { + return true; + } + + /** + * Override this method if a subclass is testing an object + * that cannot serialize a "full" Collection. + * (e.g. Comparators have no contents) + * + * @return true + */ + public boolean supportsFullCollections() { + return true; + } + + /** + * Is serialization testing supported. + * Default is true. + */ + public boolean isTestSerialization() { + return true; + } + + /** + * Returns true to indicate that the collection supports equals() comparisons. + * This implementation returns true; + */ + public boolean isEqualsCheckable() { + return true; + } + + //----------------------------------------------------------------------- + @Test + public void testObjectEqualsSelf() { + Object obj = makeObject(); + assertEquals("A Object should equal itself", obj, obj); + } + + @Test + public void testEqualsNull() { + Object obj = makeObject(); + assertEquals(false, obj.equals(null)); // make sure this doesn't throw NPE either + } + + @Test + public void testObjectHashCodeEqualsSelfHashCode() { + Object obj = makeObject(); + assertEquals("hashCode should be repeatable", obj.hashCode(), obj.hashCode()); + } + + @Test + public void testObjectHashCodeEqualsContract() { + Object obj1 = makeObject(); + if (obj1.equals(obj1)) { + assertEquals( + "[1] When two objects are equal, their hashCodes should be also.", + obj1.hashCode(), obj1.hashCode()); + } + Object obj2 = makeObject(); + if (obj1.equals(obj2)) { + assertEquals( + "[2] When two objects are equal, their hashCodes should be also.", + obj1.hashCode(), obj2.hashCode()); + assertTrue( + "When obj1.equals(obj2) is true, then obj2.equals(obj1) should also be true", + obj2.equals(obj1)); + } + } + + @Test + public void testSerializeDeserializeThenCompare() throws Exception { + Object obj = makeObject(); + if (obj instanceof Serializable && isTestSerialization()) { + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + ObjectOutputStream out = new ObjectOutputStream(buffer); + out.writeObject(obj); + out.close(); + + ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray())); + Object dest = in.readObject(); + in.close(); + if (isEqualsCheckable()) { + assertEquals("obj != deserialize(serialize(obj))", obj, dest); + } + } + } + + /** + * Sanity check method, makes sure that any Serializable + * class can be serialized and de-serialized in memory, + * using the handy makeObject() method + * + * @throws java.io.IOException + * @throws ClassNotFoundException + */ + @Test + public void testSimpleSerialization() throws Exception { + Object o = makeObject(); + if (o instanceof Serializable && isTestSerialization()) { + byte[] objekt = writeExternalFormToBytes((Serializable) o); + Object p = readExternalFormFromBytes(objekt); + } + } + + /** + * Tests serialization by comparing against a previously stored version in CVS. + * If the test object is serializable, confirm that a canonical form exists. + */ + @Test + public void testCanonicalEmptyCollectionExists() { + if (supportsEmptyCollections() && isTestSerialization() && !skipSerializedCanonicalTests()) { + Object object = makeObject(); + if (object instanceof Serializable) { + String name = getCanonicalEmptyCollectionName(object); + assertTrue( + "Canonical empty collection (" + name + ") is not in CVS", + new File(name).exists()); + } + } + } + + /** + * Tests serialization by comparing against a previously stored version in CVS. + * If the test object is serializable, confirm that a canonical form exists. + */ + @Test + public void testCanonicalFullCollectionExists() { + if (supportsFullCollections() && isTestSerialization() && !skipSerializedCanonicalTests()) { + Object object = makeObject(); + if (object instanceof Serializable) { + String name = getCanonicalFullCollectionName(object); + assertTrue( + "Canonical full collection (" + name + ") is not in CVS", + new File(name).exists()); + } + } + } + + // protected implementation + //----------------------------------------------------------------------- + /** + * Get the version of Collections that this object tries to + * maintain serialization compatibility with. Defaults to 1, the + * earliest Collections version. (Note: some collections did not + * even exist in this version). + * + * This constant makes it possible for TestMap (and other subclasses, + * if necessary) to automatically check CVS for a versionX copy of a + * Serialized object, so we can make sure that compatibility is maintained. + * See, for example, TestMap.getCanonicalFullMapName(Map map). + * Subclasses can override this variable, indicating compatibility + * with earlier Collections versions. + * + * @return The version, or {@code null} if this object shouldn't be + * tested for compatibility with previous versions. + */ + public String getCompatibilityVersion() { + return "1"; + } + + protected String getCanonicalEmptyCollectionName(Object object) { + StringBuilder retval = new StringBuilder(); + retval.append("data/test/"); + String colName = object.getClass().getName(); + colName = colName.substring(colName.lastIndexOf(".") + 1, colName.length()); + retval.append(colName); + retval.append(".emptyCollection.version"); + retval.append(getCompatibilityVersion()); + retval.append(".obj"); + return retval.toString(); + } + + protected String getCanonicalFullCollectionName(Object object) { + StringBuilder retval = new StringBuilder(); + retval.append("data/test/"); + String colName = object.getClass().getName(); + colName = colName.substring(colName.lastIndexOf(".") + 1, colName.length()); + retval.append(colName); + retval.append(".fullCollection.version"); + retval.append(getCompatibilityVersion()); + retval.append(".obj"); + return retval.toString(); + } + + /** + * Write a Serializable or Externalizable object as + * a file at the given path. NOT USEFUL as part + * of a unit test; this is just a utility method + * for creating disk-based objects in CVS that can become + * the basis for compatibility tests using + * readExternalFormFromDisk(String path) + * + * @param o Object to serialize + * @param path path to write the serialized Object + * @exception java.io.IOException + */ + protected void writeExternalFormToDisk(Serializable o, String path) throws IOException { + FileOutputStream fileStream = new FileOutputStream(path); + writeExternalFormToStream(o, fileStream); + } + + /** + * Converts a Serializable or Externalizable object to + * bytes. Useful for in-memory tests of serialization + * + * @param o Object to convert to bytes + * @return serialized form of the Object + * @exception java.io.IOException + */ + protected byte[] writeExternalFormToBytes(Serializable o) throws IOException { + ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); + writeExternalFormToStream(o, byteStream); + return byteStream.toByteArray(); + } + + /** + * Reads a Serialized or Externalized Object from disk. + * Useful for creating compatibility tests between + * different CVS versions of the same class + * + * @param path path to the serialized Object + * @return the Object at the given path + * @exception java.io.IOException + * @exception ClassNotFoundException + */ + protected Object readExternalFormFromDisk(String path) throws IOException, ClassNotFoundException { + FileInputStream stream = new FileInputStream(path); + return readExternalFormFromStream(stream); + } + + /** + * Read a Serialized or Externalized Object from bytes. + * Useful for verifying serialization in memory. + * + * @param b byte array containing a serialized Object + * @return Object contained in the bytes + * @exception java.io.IOException + * @exception ClassNotFoundException + */ + protected Object readExternalFormFromBytes(byte[] b) throws IOException, ClassNotFoundException { + ByteArrayInputStream stream = new ByteArrayInputStream(b); + return readExternalFormFromStream(stream); + } + + protected boolean skipSerializedCanonicalTests() { + return Boolean.getBoolean("org.apache.commons.collections:with-clover"); + } + + // private implementation + //----------------------------------------------------------------------- + private Object readExternalFormFromStream(InputStream stream) throws IOException, ClassNotFoundException { + ObjectInputStream oStream = new ObjectInputStream(stream); + return oStream.readObject(); + } + + private void writeExternalFormToStream(Serializable o, OutputStream stream) throws IOException { + ObjectOutputStream oStream = new ObjectOutputStream(stream); + oStream.writeObject(o); + } + +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/SetAbstractTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/SetAbstractTest.java similarity index 71% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/SetAbstractTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/SetAbstractTest.java index 5bdcc797..dc7e32e3 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/SetAbstractTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/SetAbstractTest.java @@ -1,183 +1,215 @@ -/* - * Copyright 2001-2004 The Apache Software Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.twelvemonkeys.util; - -import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; - -/** - * Abstract test class for {@link Set} methods and contracts. - *

    - * Since {@link Set} doesn't stipulate much new behavior that isn't already - * found in {@link Collection}, this class basically just adds tests for - * {@link Set#equals} and {@link Set#hashCode()} along with an updated - * {@link #verifyAll()} that ensures elements do not appear more than once in the - * set. - *

    - * To use, subclass and override the {@link #makeEmptySet()} - * method. You may have to override other protected methods if your - * set is not modifiable, or if your set restricts what kinds of - * elements may be added; see {@link CollectionAbstractTestCase} for more details. - * - * @since Commons Collections 3.0 - * @version $Revision: #2 $ $Date: 2008/07/15 $ - * - * @author Paul Jack - */ -public abstract class SetAbstractTestCase extends CollectionAbstractTestCase { - - //----------------------------------------------------------------------- - /** - * Provides additional verifications for sets. - */ - public void verifyAll() { - super.verifyAll(); - - assertEquals("Sets should be equal", confirmed, collection); - assertEquals("Sets should have equal hashCodes", - confirmed.hashCode(), collection.hashCode()); - Collection set = makeConfirmedCollection(); - Iterator iterator = collection.iterator(); - while (iterator.hasNext()) { - assertTrue("Set.iterator should only return unique elements", - set.add(iterator.next())); - } - } - - //----------------------------------------------------------------------- - /** - * Set equals method is defined. - */ - public boolean isEqualsCheckable() { - return true; - } - - /** - * Returns an empty Set for use in modification testing. - * - * @return a confirmed empty collection - */ - public Collection makeConfirmedCollection() { - return new HashSet(); - } - - /** - * Returns a full Set for use in modification testing. - * - * @return a confirmed full collection - */ - public Collection makeConfirmedFullCollection() { - Collection set = makeConfirmedCollection(); - set.addAll(Arrays.asList(getFullElements())); - return set; - } - - /** - * Makes an empty set. The returned set should have no elements. - * - * @return an empty set - */ - public abstract Set makeEmptySet(); - - /** - * Makes a full set by first creating an empty set and then adding - * all the elements returned by {@link #getFullElements()}. - * - * Override if your set does not support the add operation. - * - * @return a full set - */ - public Set makeFullSet() { - Set set = makeEmptySet(); - set.addAll(Arrays.asList(getFullElements())); - return set; - } - - /** - * Makes an empty collection by invoking {@link #makeEmptySet()}. - * - * @return an empty collection - */ - public final Collection makeCollection() { - return makeEmptySet(); - } - - /** - * Makes a full collection by invoking {@link #makeFullSet()}. - * - * @return a full collection - */ - public final Collection makeFullCollection() { - return makeFullSet(); - } - - //----------------------------------------------------------------------- - /** - * Return the {@link CollectionAbstractTestCase#collection} fixture, but cast as a Set. - */ - public Set getSet() { - return (Set)collection; - } - - /** - * Return the {@link CollectionAbstractTestCase#confirmed} fixture, but cast as a Set. - */ - public Set getConfirmedSet() { - return (Set)confirmed; - } - - //----------------------------------------------------------------------- - /** - * Tests {@link Set#equals(Object)}. - */ - public void testSetEquals() { - resetEmpty(); - assertEquals("Empty sets should be equal", - getSet(), getConfirmedSet()); - verifyAll(); - - Collection set2 = makeConfirmedCollection(); - set2.add("foo"); - assertTrue("Empty set shouldn't equal nonempty set", - !getSet().equals(set2)); - - resetFull(); - assertEquals("Full sets should be equal", getSet(), getConfirmedSet()); - verifyAll(); - - set2.clear(); - set2.addAll(Arrays.asList(getOtherElements())); - assertTrue("Sets with different contents shouldn't be equal", - !getSet().equals(set2)); - } - - /** - * Tests {@link Set#hashCode()}. - */ - public void testSetHashCode() { - resetEmpty(); - assertEquals("Empty sets have equal hashCodes", - getSet().hashCode(), getConfirmedSet().hashCode()); - - resetFull(); - assertEquals("Equal sets have equal hashCodes", - getSet().hashCode(), getConfirmedSet().hashCode()); - } - -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Copyright 2001-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.twelvemonkeys.util; + +import org.junit.Test; + +import java.util.*; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Abstract test class for {@link Set} methods and contracts. + *

    + * Since {@link Set} doesn't stipulate much new behavior that isn't already + * found in {@link Collection}, this class basically just adds tests for + * {@link Set#equals} and {@link Set#hashCode()} along with an updated + * {@link #verifyAll()} that ensures elements do not appear more than once in the + * set. + *

    + * To use, subclass and override the {@link #makeEmptySet()} + * method. You may have to override other protected methods if your + * set is not modifiable, or if your set restricts what kinds of + * elements may be added; see {@link CollectionAbstractTest} for more details. + * + * @since Commons Collections 3.0 + * @version $Revision: #2 $ $Date: 2008/07/15 $ + * + * @author Paul Jack + */ +public abstract class SetAbstractTest extends CollectionAbstractTest { + + //----------------------------------------------------------------------- + /** + * Provides additional verifications for sets. + */ + public void verifyAll() { + super.verifyAll(); + + assertEquals("Sets should be equal", confirmed, collection); + assertEquals("Sets should have equal hashCodes", + confirmed.hashCode(), collection.hashCode()); + Collection set = makeConfirmedCollection(); + Iterator iterator = collection.iterator(); + while (iterator.hasNext()) { + assertTrue("Set.iterator should only return unique elements", + set.add(iterator.next())); + } + } + + //----------------------------------------------------------------------- + /** + * Set equals method is defined. + */ + public boolean isEqualsCheckable() { + return true; + } + + /** + * Returns an empty Set for use in modification testing. + * + * @return a confirmed empty collection + */ + public Collection makeConfirmedCollection() { + return new HashSet(); + } + + /** + * Returns a full Set for use in modification testing. + * + * @return a confirmed full collection + */ + public Collection makeConfirmedFullCollection() { + Collection set = makeConfirmedCollection(); + set.addAll(Arrays.asList(getFullElements())); + return set; + } + + /** + * Makes an empty set. The returned set should have no elements. + * + * @return an empty set + */ + public abstract Set makeEmptySet(); + + /** + * Makes a full set by first creating an empty set and then adding + * all the elements returned by {@link #getFullElements()}. + * + * Override if your set does not support the add operation. + * + * @return a full set + */ + public Set makeFullSet() { + Set set = makeEmptySet(); + set.addAll(Arrays.asList(getFullElements())); + return set; + } + + /** + * Makes an empty collection by invoking {@link #makeEmptySet()}. + * + * @return an empty collection + */ + public final Collection makeCollection() { + return makeEmptySet(); + } + + /** + * Makes a full collection by invoking {@link #makeFullSet()}. + * + * @return a full collection + */ + @Override + public final Collection makeFullCollection() { + return makeFullSet(); + } + + //----------------------------------------------------------------------- + /** + * Return the {@link CollectionAbstractTest#collection} fixture, but cast as a Set. + */ + public Set getSet() { + return (Set)collection; + } + + /** + * Return the {@link CollectionAbstractTest#confirmed} fixture, but cast as a Set. + */ + public Set getConfirmedSet() { + return (Set)confirmed; + } + + //----------------------------------------------------------------------- + /** + * Tests {@link Set#equals(Object)}. + */ + @Test + public void testSetEquals() { + resetEmpty(); + assertEquals("Empty sets should be equal", + getSet(), getConfirmedSet()); + verifyAll(); + + Collection set2 = makeConfirmedCollection(); + set2.add("foo"); + assertTrue("Empty set shouldn't equal nonempty set", + !getSet().equals(set2)); + + resetFull(); + assertEquals("Full sets should be equal", getSet(), getConfirmedSet()); + verifyAll(); + + set2.clear(); + set2.addAll(Arrays.asList(getOtherElements())); + assertTrue("Sets with different contents shouldn't be equal", + !getSet().equals(set2)); + } + + /** + * Tests {@link Set#hashCode()}. + */ + @Test + public void testSetHashCode() { + resetEmpty(); + assertEquals("Empty sets have equal hashCodes", + getSet().hashCode(), getConfirmedSet().hashCode()); + + resetFull(); + assertEquals("Equal sets have equal hashCodes", + getSet().hashCode(), getConfirmedSet().hashCode()); + } +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/StringTokenIteratorTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/StringTokenIteratorTest.java similarity index 71% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/StringTokenIteratorTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/StringTokenIteratorTest.java index 0895e965..1a591fe1 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/StringTokenIteratorTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/StringTokenIteratorTest.java @@ -1,111 +1,143 @@ -package com.twelvemonkeys.util; - - -import java.util.Iterator; - -/** - * StringTokenIteratorTestCase - *

    - * - * - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/StringTokenIteratorTestCase.java#1 $ - */ -public class StringTokenIteratorTestCase extends TokenIteratorAbstractTestCase { - public void setUp() throws Exception { - super.setUp(); - } - - public void tearDown() throws Exception { - super.tearDown(); - } - - protected TokenIterator createTokenIterator(String pString) { - return new StringTokenIterator(pString); - } - - protected TokenIterator createTokenIterator(String pString, String pDelimiters) { - return new StringTokenIterator(pString, pDelimiters); - } - - public void testEmptyDelimiter() { - Iterator iterator = createTokenIterator("", ""); - assertFalse("Empty string has elements", iterator.hasNext()); - } - - public void testSingleToken() { - Iterator iterator = createTokenIterator("A"); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("A", iterator.next()); - assertFalse("String has more than one element", iterator.hasNext()); - } - - public void testSingleTokenEmptyDelimiter() { - Iterator iterator = createTokenIterator("A", ""); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("A", iterator.next()); - assertFalse("String has more than one element", iterator.hasNext()); - } - - public void testSingleTokenSingleDelimiter() { - Iterator iterator = createTokenIterator("A", ","); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("A", iterator.next()); - assertFalse("String has more than one element", iterator.hasNext()); - } - - public void testSingleSeparatorDefaultDelimiter() { - Iterator iterator = createTokenIterator("A B C D"); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("A", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("B", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("C", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("D", iterator.next()); - assertFalse("String has more than one element", iterator.hasNext()); - } - - public void testSingleSeparator() { - Iterator iterator = createTokenIterator("A,B,C", ","); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("A", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("B", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("C", iterator.next()); - assertFalse("String has more than one element", iterator.hasNext()); - } - - public void testMultipleSeparatorDefaultDelimiter() { - Iterator iterator = createTokenIterator("A B C\nD\t\t \nE"); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("A", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("B", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("C", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("D", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("E", iterator.next()); - assertFalse("String has more than one element", iterator.hasNext()); - } - - public void testMultipleSeparator() { - Iterator iterator = createTokenIterator("A,B,;,C...D, ., ,E", " ,.;:"); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("A", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("B", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("C", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("D", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("E", iterator.next()); - assertFalse("String has more than one element", iterator.hasNext()); - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.util; + + +import org.junit.Test; + +import java.util.Iterator; + +import static org.junit.Assert.*; + +/** + * StringTokenIteratorTestCase + *

    + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/StringTokenIteratorTestCase.java#1 $ + */ +public class StringTokenIteratorTest extends TokenIteratorAbstractTest { + + protected TokenIterator createTokenIterator(String pString) { + return new StringTokenIterator(pString); + } + + protected TokenIterator createTokenIterator(String pString, String pDelimiters) { + return new StringTokenIterator(pString, pDelimiters); + } + + @Test + public void testEmptyDelimiter() { + Iterator iterator = createTokenIterator("", ""); + assertFalse("Empty string has elements", iterator.hasNext()); + } + + @Test + public void testSingleToken() { + Iterator iterator = createTokenIterator("A"); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("A", iterator.next()); + assertFalse("String has more than one element", iterator.hasNext()); + } + + @Test + public void testSingleTokenEmptyDelimiter() { + Iterator iterator = createTokenIterator("A", ""); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("A", iterator.next()); + assertFalse("String has more than one element", iterator.hasNext()); + } + + @Test + public void testSingleTokenSingleDelimiter() { + Iterator iterator = createTokenIterator("A", ","); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("A", iterator.next()); + assertFalse("String has more than one element", iterator.hasNext()); + } + + @Test + public void testSingleSeparatorDefaultDelimiter() { + Iterator iterator = createTokenIterator("A B C D"); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("A", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("B", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("C", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("D", iterator.next()); + assertFalse("String has more than one element", iterator.hasNext()); + } + + @Test + public void testSingleSeparator() { + Iterator iterator = createTokenIterator("A,B,C", ","); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("A", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("B", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("C", iterator.next()); + assertFalse("String has more than one element", iterator.hasNext()); + } + + @Test + public void testMultipleSeparatorDefaultDelimiter() { + Iterator iterator = createTokenIterator("A B C\nD\t\t \nE"); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("A", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("B", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("C", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("D", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("E", iterator.next()); + assertFalse("String has more than one element", iterator.hasNext()); + } + + @Test + public void testMultipleSeparator() { + Iterator iterator = createTokenIterator("A,B,;,C...D, ., ,E", " ,.;:"); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("A", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("B", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("C", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("D", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("E", iterator.next()); + assertFalse("String has more than one element", iterator.hasNext()); + } +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/TimeoutMapTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/TimeoutMapTest.java similarity index 90% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/TimeoutMapTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/TimeoutMapTest.java index 8cfb9ab1..1ca479b5 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/TimeoutMapTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/TimeoutMapTest.java @@ -1,632 +1,655 @@ -/**************************************************** - * * - * (c) 2000-2003 WM-data * - * All rights reserved * - * http://www.twelvemonkeys.no * - * * - * $RCSfile: TimeoutMapTestCase.java,v $ - * @version $Revision: #2 $ - * $Date: 2008/07/15 $ - * * - * @author Last modified by: $Author: haku $ - * * - ****************************************************/ - - -package com.twelvemonkeys.util; - - -import junit.framework.Test; -import junit.framework.TestSuite; - -import java.util.*; - - -/** - * TimeoutMapTestCase - *

    - * - * - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/TimeoutMapTestCase.java#2 $ - */ -public class TimeoutMapTestCase extends MapAbstractTestCase { - - /** - * Method suite - * - * @return - */ - public static Test suite() { - return new TestSuite(TimeoutMapTestCase.class); - } - - - public Map makeEmptyMap() { - return new TimeoutMap(60 * 60 * 1000); - } - /* - * The basic Map interface lets one associate keys and values: - */ - - /** - * Method testBasicMap - */ - public void testBasicMap() { - - Map map = new TimeoutMap(60000L); - Object key = "key"; - Object value = new Integer(3); - - map.put(key, value); - assertEquals(value, map.get(key)); - } - - /* - * If there is no value associated with a key, - * the basic Map will return null for that key: - */ - - /** - * Method testBasicMapReturnsNullForMissingKey - */ - public void testBasicMapReturnsNullForMissingKey() { - - Map map = new TimeoutMap(60000L); - - assertNull(map.get("key")); - } - - /* - * One can also explicitly store a null value for - * some key: - */ - - /** - * Method testBasicMapAllowsNull - */ - public void testBasicMapAllowsNull() { - - Map map = new TimeoutMap(60000L); - Object key = "key"; - Object value = null; - - map.put(key, value); - assertNull(map.get(key)); - } - - /** - * Method testBasicMapAllowsMultipleTypes - */ - public void testBasicMapAllowsMultipleTypes() { - - Map map = new TimeoutMap(60000L); - - map.put("key-1", "value-1"); - map.put(new Integer(2), "value-2"); - map.put("key-3", new Integer(3)); - map.put(new Integer(4), new Integer(4)); - map.put(Boolean.FALSE, ""); - assertEquals("value-1", map.get("key-1")); - assertEquals("value-2", map.get(new Integer(2))); - assertEquals(new Integer(3), map.get("key-3")); - assertEquals(new Integer(4), map.get(new Integer(4))); - assertEquals("", map.get(Boolean.FALSE)); - } - - /** - * Method testBasicMapStoresOnlyOneValuePerKey - */ - public void testBasicMapStoresOnlyOneValuePerKey() { - - Map map = new TimeoutMap(60000L); - - assertNull(map.put("key", "value-1")); - assertEquals("value-1", map.get("key")); - assertEquals("value-1", map.put("key", "value-2")); - assertEquals("value-2", map.get("key")); - } - - /** - * Method testBasicMapValuesView - */ - public void testBasicMapValuesView() { - - Map map = new TimeoutMap(60000L); - - assertNull(map.put("key-1", new Integer(1))); - assertNull(map.put("key-2", new Integer(2))); - assertNull(map.put("key-3", new Integer(3))); - assertNull(map.put("key-4", new Integer(4))); - assertEquals(4, map.size()); - - Collection values = map.values(); - assertEquals(4, values.size()); - - Iterator it = values.iterator(); - - assertNotNull(it); - int count = 0; - - while (it.hasNext()) { - Object o = it.next(); - - assertNotNull(o); - assertTrue(o instanceof Integer); - count++; - } - assertEquals(4, count); - } - - /** - * Method testBasicMapKeySetView - */ - public void testBasicMapKeySetView() { - - Map map = new TimeoutMap(60000L); - - assertNull(map.put("key-1", "value-1")); - assertNull(map.put("key-2", "value-2")); - assertNull(map.put("key-3", "value-3")); - assertNull(map.put("key-4", "value-4")); - assertEquals(4, map.size()); - Iterator it = map.keySet().iterator(); - - assertNotNull(it); - int count = 0; - - while (it.hasNext()) { - Object o = it.next(); - - assertNotNull(o); - assertTrue(o instanceof String); - count++; - } - assertEquals(4, count); - } - - /** - * Method testBasicMapEntrySetView - */ - public void testBasicMapEntrySetView() { - - Map map = new TimeoutMap(60000L); - - assertNull(map.put("key-1", new Integer(1))); - assertNull(map.put("key-2", "value-2")); - assertNull(map.put("key-3", new Object())); - assertNull(map.put("key-4", Boolean.FALSE)); - assertEquals(4, map.size()); - Iterator it = map.entrySet().iterator(); - - assertNotNull(it); - int count = 0; - - while (it.hasNext()) { - Object o = it.next(); - - assertNotNull(o); - assertTrue(o instanceof Map.Entry); - count++; - } - assertEquals(4, count); - } - - /** - * Method testBasicMapValuesView - */ - public void testBasicMapValuesViewRemoval() { - - Map map = new TimeoutMap(60000L); - - assertNull(map.put("key-1", new Integer(1))); - assertNull(map.put("key-2", new Integer(2))); - assertNull(map.put("key-3", new Integer(3))); - assertNull(map.put("key-4", new Integer(4))); - assertEquals(4, map.size()); - Iterator it = map.values().iterator(); - - assertNotNull(it); - int count = 0; - - while (it.hasNext()) { - Object o = it.next(); - - assertNotNull(o); - assertTrue(o instanceof Integer); - try { - it.remove(); - } - catch (UnsupportedOperationException e) { - fail("Removal failed"); - } - count++; - } - assertEquals(4, count); - } - - /** - * Method testBasicMapKeySetView - */ - public void testBasicMapKeySetViewRemoval() { - - Map map = new TimeoutMap(60000L); - - assertNull(map.put("key-1", "value-1")); - assertNull(map.put("key-2", "value-2")); - assertNull(map.put("key-3", "value-3")); - assertNull(map.put("key-4", "value-4")); - assertEquals(4, map.size()); - Iterator it = map.keySet().iterator(); - - assertNotNull(it); - int count = 0; - - while (it.hasNext()) { - Object o = it.next(); - - assertNotNull(o); - assertTrue(o instanceof String); - try { - it.remove(); - } - catch (UnsupportedOperationException e) { - fail("Removal failed"); - } - count++; - } - assertEquals(4, count); - } - - /** - * Method testBasicMapEntrySetView - */ - public void testBasicMapEntrySetViewRemoval() { - - Map map = new TimeoutMap(60000L); - - assertNull(map.put("key-1", new Integer(1))); - assertNull(map.put("key-2", "value-2")); - assertNull(map.put("key-3", new Object())); - assertNull(map.put("key-4", Boolean.FALSE)); - assertEquals(4, map.size()); - Iterator it = map.entrySet().iterator(); - - assertNotNull(it); - int count = 0; - - while (it.hasNext()) { - Object o = it.next(); - - assertNotNull(o); - assertTrue(o instanceof Map.Entry); - try { - it.remove(); - } - catch (UnsupportedOperationException e) { - fail("Removal failed"); - } - count++; - } - assertEquals(4, count); - } - - /** - * Method testBasicMapStoresOnlyOneValuePerKey - */ - public void testTimeoutReturnNull() { - - Map map = new TimeoutMap(100L); - - assertNull(map.put("key", "value-1")); - assertEquals("value-1", map.get("key")); - assertNull(map.put("another", "value-2")); - assertEquals("value-2", map.get("another")); - synchronized (this) { - try { - Thread.sleep(110L); - } - catch (InterruptedException e) { - // Continue, but might break the timeout thing below... - } - } - - // Values should now time out - assertNull(map.get("key")); - assertNull(map.get("another")); - } - - /** - * Method testTimeoutIsEmpty - */ - public void testTimeoutIsEmpty() { - - TimeoutMap map = new TimeoutMap(50L); - - assertNull(map.put("key", "value-1")); - assertEquals("value-1", map.get("key")); - assertNull(map.put("another", "value-2")); - assertEquals("value-2", map.get("another")); - synchronized (this) { - try { - Thread.sleep(100L); - } - catch (InterruptedException e) { - // Continue, but might break the timeout thing below... - } - } - - // This for loop should not print anything, if the tests succeed. - Set set = map.keySet(); - assertEquals(0, set.size()); - for (Iterator iterator = set.iterator(); iterator.hasNext(); System.out.println(iterator.next())) { - ; - } - assertEquals(0, map.size()); - assertTrue(map.isEmpty()); - } - - /** - * Method testTimeoutWrapIsEmpty - */ - public void testTimeoutWrapIsEmpty() { - - Map map = new TimeoutMap(new LRUMap(2), null, 100L); - - assertNull(map.put("key", "value-1")); - assertEquals("value-1", map.get("key")); - assertNull(map.put("another", "value-2")); - assertEquals("value-2", map.get("another")); - assertNull(map.put("third", "value-3")); - assertEquals("value-3", map.get("third")); - synchronized (this) { - try { - Thread.sleep(110L); - } - catch (InterruptedException e) { - // Continue, but might break the timeout thing below... - } - } - - // This for loop should not print anything, if the tests succeed. - Set set = map.keySet(); - assertEquals(0, set.size()); - for (Iterator iterator = set.iterator(); iterator.hasNext(); System.out.println(iterator.next())) { - ; - } - assertEquals(0, map.size()); - assertTrue(map.isEmpty()); - } - - /** - * Method testTimeoutWrapReturnNull - */ - public void testTimeoutWrapReturnNull() { - - Map map = new TimeoutMap(new LRUMap(), null, 100L); - - assertNull(map.put("key", "value-1")); - assertEquals("value-1", map.get("key")); - assertNull(map.put("another", "value-2")); - assertEquals("value-2", map.get("another")); - synchronized (this) { - try { - Thread.sleep(110L); - } - catch (InterruptedException e) { - // Continue, but might break the timeout thing below... - } - } - - // Values should now time out - assertNull(map.get("key")); - assertNull(map.get("another")); - } - - /** - * Method testWrapMaxSize - */ - public void testWrapMaxSize() { - - LRUMap lru = new LRUMap(); - - lru.setMaxSize(2); - TimeoutMap map = new TimeoutMap(lru, null, 1000L); - - assertNull(map.put("key", "value-1")); - assertEquals("value-1", map.get("key")); - assertNull(map.put("another", "value-2")); - assertEquals("value-2", map.get("another")); - assertNull(map.put("third", "value-3")); - assertEquals("value-3", map.get("third")); - - // This value should have expired - assertNull(map.get("key")); - - // These should be left - assertEquals("value-2", map.get("another")); - assertEquals("value-3", map.get("third")); - } - - /** - * Method testWrapMapContainingValues - */ - public void testWrapMapContainingValues() { - - Map backing = new TreeMap(); - - backing.put("key", "original"); - TimeoutMap map = null; - - try { - map = new TimeoutMap(backing, backing, 1000L); - Object value = map.put("key", "value-1"); - assertNotNull(value); // Should now have value! - assertEquals("original", value); - } - catch (ClassCastException cce) { - cce.printStackTrace(); - fail("Content not converted to TimedEntries properly!"); - } - assertEquals("value-1", map.get("key")); - assertNull(map.put("another", "value-2")); - assertEquals("value-2", map.get("another")); - assertNull(map.put("third", "value-3")); - assertEquals("value-3", map.get("third")); - } - - public void testIteratorRemove() { - Map map = makeFullMap(); - - for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) { - iterator.remove(); - } - assertEquals(0, map.size()); - - map = makeFullMap(); - - for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) { - iterator.next(); - iterator.remove(); - } - assertEquals(0, map.size()); - } - - public void testIteratorPredictableNext() { - TimeoutMap map = (TimeoutMap) makeFullMap(); - map.setExpiryTime(50l); - assertFalse(map.isEmpty()); - - int count = 0; - for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) { - if (count == 0) { - // NOTE: Only wait fist time, to avoid slooow tests - synchronized (this) { - try { - wait(60l); - } - catch (InterruptedException e) { - } - } - } - - try { - Map.Entry entry = (Map.Entry) iterator.next(); - assertNotNull(entry); - count++; - } - catch (NoSuchElementException nse) { - fail("Elements expire between Interator.hasNext() and Iterator.next()"); - } - } - - assertTrue("Elements expired too early, test did not run as expected.", count > 0); - //assertEquals("Elements did not expire as expected.", 1, count); - } - - public void testIteratorPredictableRemove() { - TimeoutMap map = (TimeoutMap) makeFullMap(); - map.setExpiryTime(50l); - assertFalse(map.isEmpty()); - - int count = 0; - for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) { - if (count == 0) { - // NOTE: Only wait fist time, to avoid slooow tests - synchronized (this) { - try { - wait(60l); - } - catch (InterruptedException e) { - } - } - } - - try { - iterator.remove(); - count++; - } - catch (NoSuchElementException nse) { - fail("Elements expired between Interator.hasNext() and Iterator.remove()"); - } - } - - assertTrue("Elements expired too early, test did not run as expected.", count > 0); - //assertEquals("Elements did not expire as expected.", 1, count); - } - - public void testIteratorPredictableNextRemove() { - TimeoutMap map = (TimeoutMap) makeFullMap(); - map.setExpiryTime(50l); - assertFalse(map.isEmpty()); - - int count = 0; - for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) { - if (count == 0) { - // NOTE: Only wait fist time, to avoid slooow tests - synchronized (this) { - try { - wait(60l); - } - catch (InterruptedException e) { - } - } - } - - try { - Map.Entry entry = (Map.Entry) iterator.next(); - assertNotNull(entry); - } - catch (NoSuchElementException nse) { - fail("Elements expired between Interator.hasNext() and Iterator.next()"); - } - - try { - iterator.remove(); - count++; - } - catch (NoSuchElementException nse) { - fail("Elements expired between Interator.hasNext() and Iterator.remove()"); - } - } - - assertTrue("Elements expired too early, test did not run as expected.", count > 0); - //assertEquals("Elements did not expire as expected.", 1, count); - } - - public void testIteratorPredictableRemovedEntry() { - TimeoutMap map = (TimeoutMap) makeEmptyMap(); - map.setExpiryTime(1000l); // No elements should expire during this test - - map.put("key-1", new Integer(1)); - map.put("key-2", new Integer(2)); - - assertFalse(map.isEmpty()); - - Object removedKey = null; - Object otherKey = null; - Iterator iterator = map.entrySet().iterator(); - assertTrue("Iterator was empty", iterator.hasNext()); - try { - Map.Entry entry = (Map.Entry) iterator.next(); - assertNotNull(entry); - removedKey = entry.getKey(); - otherKey = "key-1".equals(removedKey) ? "key-2" : "key-1"; - } - catch (NoSuchElementException nse) { - fail("Elements expired between Interator.hasNext() and Iterator.next()"); - } - - try { - iterator.remove(); - } - catch (NoSuchElementException nse) { - fail("Elements expired between Interator.hasNext() and Iterator.remove()"); - } - - assertTrue("Wrong entry removed, keySet().iterator() is broken.", !map.containsKey(removedKey)); - assertTrue("Wrong entry removed, keySet().iterator() is broken.", map.containsKey(otherKey)); - } -} - +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.util; + +import org.junit.Test; + +import java.util.*; + +import static org.junit.Assert.*; + +/** + * TimeoutMapTest + *

    + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/TimeoutMapTestCase.java#2 $ + */ +public class TimeoutMapTest extends MapAbstractTest { + + public Map makeEmptyMap() { + return new TimeoutMap(60 * 60 * 1000); + } + /* + * The basic Map interface lets one associate keys and values: + */ + + /** + * Method testBasicMap + */ + @Test + public void testBasicMap() { + + Map map = new TimeoutMap(60000L); + Object key = "key"; + Object value = new Integer(3); + + map.put(key, value); + assertEquals(value, map.get(key)); + } + + /* + * If there is no value associated with a key, + * the basic Map will return null for that key: + */ + + /** + * Method testBasicMapReturnsNullForMissingKey + */ + @Test + public void testBasicMapReturnsNullForMissingKey() { + + Map map = new TimeoutMap(60000L); + + assertNull(map.get("key")); + } + + /* + * One can also explicitly store a null value for + * some key: + */ + + /** + * Method testBasicMapAllowsNull + */ + @Test + public void testBasicMapAllowsNull() { + + Map map = new TimeoutMap(60000L); + Object key = "key"; + Object value = null; + + map.put(key, value); + assertNull(map.get(key)); + } + + /** + * Method testBasicMapAllowsMultipleTypes + */ + @Test + public void testBasicMapAllowsMultipleTypes() { + + Map map = new TimeoutMap(60000L); + + map.put("key-1", "value-1"); + map.put(new Integer(2), "value-2"); + map.put("key-3", new Integer(3)); + map.put(new Integer(4), new Integer(4)); + map.put(Boolean.FALSE, ""); + assertEquals("value-1", map.get("key-1")); + assertEquals("value-2", map.get(new Integer(2))); + assertEquals(new Integer(3), map.get("key-3")); + assertEquals(new Integer(4), map.get(new Integer(4))); + assertEquals("", map.get(Boolean.FALSE)); + } + + /** + * Method testBasicMapStoresOnlyOneValuePerKey + */ + @Test + public void testBasicMapStoresOnlyOneValuePerKey() { + + Map map = new TimeoutMap(60000L); + + assertNull(map.put("key", "value-1")); + assertEquals("value-1", map.get("key")); + assertEquals("value-1", map.put("key", "value-2")); + assertEquals("value-2", map.get("key")); + } + + /** + * Method testBasicMapValuesView + */ + @Test + public void testBasicMapValuesView() { + + Map map = new TimeoutMap(60000L); + + assertNull(map.put("key-1", new Integer(1))); + assertNull(map.put("key-2", new Integer(2))); + assertNull(map.put("key-3", new Integer(3))); + assertNull(map.put("key-4", new Integer(4))); + assertEquals(4, map.size()); + + Collection values = map.values(); + assertEquals(4, values.size()); + + Iterator it = values.iterator(); + + assertNotNull(it); + int count = 0; + + while (it.hasNext()) { + Object o = it.next(); + + assertNotNull(o); + assertTrue(o instanceof Integer); + count++; + } + assertEquals(4, count); + } + + /** + * Method testBasicMapKeySetView + */ + @Test + public void testBasicMapKeySetView() { + + Map map = new TimeoutMap(60000L); + + assertNull(map.put("key-1", "value-1")); + assertNull(map.put("key-2", "value-2")); + assertNull(map.put("key-3", "value-3")); + assertNull(map.put("key-4", "value-4")); + assertEquals(4, map.size()); + Iterator it = map.keySet().iterator(); + + assertNotNull(it); + int count = 0; + + while (it.hasNext()) { + Object o = it.next(); + + assertNotNull(o); + assertTrue(o instanceof String); + count++; + } + assertEquals(4, count); + } + + /** + * Method testBasicMapEntrySetView + */ + @Test + public void testBasicMapEntrySetView() { + + Map map = new TimeoutMap(60000L); + + assertNull(map.put("key-1", new Integer(1))); + assertNull(map.put("key-2", "value-2")); + assertNull(map.put("key-3", new Object())); + assertNull(map.put("key-4", Boolean.FALSE)); + assertEquals(4, map.size()); + Iterator it = map.entrySet().iterator(); + + assertNotNull(it); + int count = 0; + + while (it.hasNext()) { + Object o = it.next(); + + assertNotNull(o); + assertTrue(o instanceof Map.Entry); + count++; + } + assertEquals(4, count); + } + + /** + * Method testBasicMapValuesView + */ + @Test + public void testBasicMapValuesViewRemoval() { + + Map map = new TimeoutMap(60000L); + + assertNull(map.put("key-1", new Integer(1))); + assertNull(map.put("key-2", new Integer(2))); + assertNull(map.put("key-3", new Integer(3))); + assertNull(map.put("key-4", new Integer(4))); + assertEquals(4, map.size()); + Iterator it = map.values().iterator(); + + assertNotNull(it); + int count = 0; + + while (it.hasNext()) { + Object o = it.next(); + + assertNotNull(o); + assertTrue(o instanceof Integer); + try { + it.remove(); + } + catch (UnsupportedOperationException e) { + fail("Removal failed"); + } + count++; + } + assertEquals(4, count); + } + + /** + * Method testBasicMapKeySetView + */ + @Test + public void testBasicMapKeySetViewRemoval() { + + Map map = new TimeoutMap(60000L); + + assertNull(map.put("key-1", "value-1")); + assertNull(map.put("key-2", "value-2")); + assertNull(map.put("key-3", "value-3")); + assertNull(map.put("key-4", "value-4")); + assertEquals(4, map.size()); + Iterator it = map.keySet().iterator(); + + assertNotNull(it); + int count = 0; + + while (it.hasNext()) { + Object o = it.next(); + + assertNotNull(o); + assertTrue(o instanceof String); + try { + it.remove(); + } + catch (UnsupportedOperationException e) { + fail("Removal failed"); + } + count++; + } + assertEquals(4, count); + } + + /** + * Method testBasicMapEntrySetView + */ + @Test + public void testBasicMapEntrySetViewRemoval() { + + Map map = new TimeoutMap(60000L); + + assertNull(map.put("key-1", new Integer(1))); + assertNull(map.put("key-2", "value-2")); + assertNull(map.put("key-3", new Object())); + assertNull(map.put("key-4", Boolean.FALSE)); + assertEquals(4, map.size()); + Iterator it = map.entrySet().iterator(); + + assertNotNull(it); + int count = 0; + + while (it.hasNext()) { + Object o = it.next(); + + assertNotNull(o); + assertTrue(o instanceof Map.Entry); + try { + it.remove(); + } + catch (UnsupportedOperationException e) { + fail("Removal failed"); + } + count++; + } + assertEquals(4, count); + } + + /** + * Method testBasicMapStoresOnlyOneValuePerKey + */ + @Test + public void testTimeoutReturnNull() { + + Map map = new TimeoutMap(100L); + + assertNull(map.put("key", "value-1")); + assertEquals("value-1", map.get("key")); + assertNull(map.put("another", "value-2")); + assertEquals("value-2", map.get("another")); + synchronized (this) { + try { + Thread.sleep(110L); + } + catch (InterruptedException e) { + // Continue, but might break the timeout thing below... + } + } + + // Values should now time out + assertNull(map.get("key")); + assertNull(map.get("another")); + } + + /** + * Method testTimeoutIsEmpty + */ + @Test + public void testTimeoutIsEmpty() { + + TimeoutMap map = new TimeoutMap(50L); + + assertNull(map.put("key", "value-1")); + assertEquals("value-1", map.get("key")); + assertNull(map.put("another", "value-2")); + assertEquals("value-2", map.get("another")); + synchronized (this) { + try { + Thread.sleep(100L); + } + catch (InterruptedException e) { + // Continue, but might break the timeout thing below... + } + } + + // This for loop should not print anything, if the tests succeed. + Set set = map.keySet(); + assertEquals(0, set.size()); + for (Iterator iterator = set.iterator(); iterator.hasNext(); System.out.println(iterator.next())) { + ; + } + assertEquals(0, map.size()); + assertTrue(map.isEmpty()); + } + + /** + * Method testTimeoutWrapIsEmpty + */ + @Test + public void testTimeoutWrapIsEmpty() { + + Map map = new TimeoutMap(new LRUMap(2), null, 100L); + + assertNull(map.put("key", "value-1")); + assertEquals("value-1", map.get("key")); + assertNull(map.put("another", "value-2")); + assertEquals("value-2", map.get("another")); + assertNull(map.put("third", "value-3")); + assertEquals("value-3", map.get("third")); + synchronized (this) { + try { + Thread.sleep(110L); + } + catch (InterruptedException e) { + // Continue, but might break the timeout thing below... + } + } + + // This for loop should not print anything, if the tests succeed. + Set set = map.keySet(); + assertEquals(0, set.size()); + for (Iterator iterator = set.iterator(); iterator.hasNext(); System.out.println(iterator.next())) { + ; + } + assertEquals(0, map.size()); + assertTrue(map.isEmpty()); + } + + /** + * Method testTimeoutWrapReturnNull + */ + @Test + public void testTimeoutWrapReturnNull() { + + Map map = new TimeoutMap(new LRUMap(), null, 100L); + + assertNull(map.put("key", "value-1")); + assertEquals("value-1", map.get("key")); + assertNull(map.put("another", "value-2")); + assertEquals("value-2", map.get("another")); + synchronized (this) { + try { + Thread.sleep(110L); + } + catch (InterruptedException e) { + // Continue, but might break the timeout thing below... + } + } + + // Values should now time out + assertNull(map.get("key")); + assertNull(map.get("another")); + } + + /** + * Method testWrapMaxSize + */ + @Test + public void testWrapMaxSize() { + + LRUMap lru = new LRUMap(); + + lru.setMaxSize(2); + TimeoutMap map = new TimeoutMap(lru, null, 1000L); + + assertNull(map.put("key", "value-1")); + assertEquals("value-1", map.get("key")); + assertNull(map.put("another", "value-2")); + assertEquals("value-2", map.get("another")); + assertNull(map.put("third", "value-3")); + assertEquals("value-3", map.get("third")); + + // This value should have expired + assertNull(map.get("key")); + + // These should be left + assertEquals("value-2", map.get("another")); + assertEquals("value-3", map.get("third")); + } + + /** + * Method testWrapMapContainingValues + */ + @Test + public void testWrapMapContainingValues() { + + Map backing = new TreeMap(); + + backing.put("key", "original"); + TimeoutMap map = null; + + try { + map = new TimeoutMap(backing, backing, 1000L); + Object value = map.put("key", "value-1"); + assertNotNull(value); // Should now have value! + assertEquals("original", value); + } + catch (ClassCastException cce) { + cce.printStackTrace(); + fail("Content not converted to TimedEntries properly!"); + } + assertEquals("value-1", map.get("key")); + assertNull(map.put("another", "value-2")); + assertEquals("value-2", map.get("another")); + assertNull(map.put("third", "value-3")); + assertEquals("value-3", map.get("third")); + } + + @Test + public void testIteratorRemove() { + Map map = makeFullMap(); + + for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) { + iterator.remove(); + } + assertEquals(0, map.size()); + + map = makeFullMap(); + + for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) { + iterator.next(); + iterator.remove(); + } + assertEquals(0, map.size()); + } + + @Test + public void testIteratorPredictableNext() { + TimeoutMap map = (TimeoutMap) makeFullMap(); + map.setExpiryTime(50l); + assertFalse(map.isEmpty()); + + int count = 0; + for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) { + if (count == 0) { + // NOTE: Only wait fist time, to avoid slooow tests + synchronized (this) { + try { + wait(60l); + } + catch (InterruptedException e) { + } + } + } + + try { + Map.Entry entry = (Map.Entry) iterator.next(); + assertNotNull(entry); + count++; + } + catch (NoSuchElementException nse) { + fail("Elements expire between Interator.hasNext() and Iterator.next()"); + } + } + + assertTrue("Elements expired too early, test did not run as expected.", count > 0); + //assertEquals("Elements did not expire as expected.", 1, count); + } + + @Test + public void testIteratorPredictableRemove() { + TimeoutMap map = (TimeoutMap) makeFullMap(); + map.setExpiryTime(50l); + assertFalse(map.isEmpty()); + + int count = 0; + for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) { + if (count == 0) { + // NOTE: Only wait fist time, to avoid slooow tests + synchronized (this) { + try { + wait(60l); + } + catch (InterruptedException e) { + } + } + } + + try { + iterator.remove(); + count++; + } + catch (NoSuchElementException nse) { + fail("Elements expired between Interator.hasNext() and Iterator.remove()"); + } + } + + assertTrue("Elements expired too early, test did not run as expected.", count > 0); + //assertEquals("Elements did not expire as expected.", 1, count); + } + + @Test + public void testIteratorPredictableNextRemove() { + TimeoutMap map = (TimeoutMap) makeFullMap(); + map.setExpiryTime(50l); + assertFalse(map.isEmpty()); + + int count = 0; + for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) { + if (count == 0) { + // NOTE: Only wait fist time, to avoid slooow tests + synchronized (this) { + try { + wait(60l); + } + catch (InterruptedException e) { + } + } + } + + try { + Map.Entry entry = (Map.Entry) iterator.next(); + assertNotNull(entry); + } + catch (NoSuchElementException nse) { + fail("Elements expired between Interator.hasNext() and Iterator.next()"); + } + + try { + iterator.remove(); + count++; + } + catch (NoSuchElementException nse) { + fail("Elements expired between Interator.hasNext() and Iterator.remove()"); + } + } + + assertTrue("Elements expired too early, test did not run as expected.", count > 0); + //assertEquals("Elements did not expire as expected.", 1, count); + } + + @Test + public void testIteratorPredictableRemovedEntry() { + TimeoutMap map = (TimeoutMap) makeEmptyMap(); + map.setExpiryTime(1000l); // No elements should expire during this test + + map.put("key-1", new Integer(1)); + map.put("key-2", new Integer(2)); + + assertFalse(map.isEmpty()); + + Object removedKey = null; + Object otherKey = null; + Iterator iterator = map.entrySet().iterator(); + assertTrue("Iterator was empty", iterator.hasNext()); + try { + Map.Entry entry = (Map.Entry) iterator.next(); + assertNotNull(entry); + removedKey = entry.getKey(); + otherKey = "key-1".equals(removedKey) ? "key-2" : "key-1"; + } + catch (NoSuchElementException nse) { + fail("Elements expired between Interator.hasNext() and Iterator.next()"); + } + + try { + iterator.remove(); + } + catch (NoSuchElementException nse) { + fail("Elements expired between Interator.hasNext() and Iterator.remove()"); + } + + assertTrue("Wrong entry removed, keySet().iterator() is broken.", !map.containsKey(removedKey)); + assertTrue("Wrong entry removed, keySet().iterator() is broken.", map.containsKey(otherKey)); + } +} + diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/TokenIteratorAbstractTest.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/TokenIteratorAbstractTest.java new file mode 100755 index 00000000..8ef7f7aa --- /dev/null +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/TokenIteratorAbstractTest.java @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.util; + +import org.junit.Test; + +import java.util.Iterator; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.fail; + +/** + * TokenIteratorAbstractTestCase + *

    + * + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/TokenIteratorAbstractTestCase.java#1 $ + */ +public abstract class TokenIteratorAbstractTest { + protected abstract TokenIterator createTokenIterator(String pString); + + protected abstract TokenIterator createTokenIterator(String pString, String pDelimiters); + + @Test + public void testNullString() { + try { + createTokenIterator(null); + fail("Null string parameter not allowed"); + } + catch (IllegalArgumentException e) { + // okay! + } + catch (Throwable t) { + fail(t.getMessage()); + } + } + + @Test + public void testNullDelimmiter() { + try { + createTokenIterator("", null); + fail("Null delimiter parameter not allowed"); + } + catch (IllegalArgumentException e) { + // okay! + } + catch (Throwable t) { + fail(t.getMessage()); + } + } + + @Test + public void testEmptyString() { + Iterator iterator = createTokenIterator(""); + assertFalse("Empty string has elements", iterator.hasNext()); + } + +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/TokenIteratorAbstractTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/TokenIteratorAbstractTestCase.java deleted file mode 100755 index acef4f81..00000000 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/TokenIteratorAbstractTestCase.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.twelvemonkeys.util; - -import junit.framework.TestCase; - -import java.util.Iterator; - -/** - * TokenIteratorAbstractTestCase - *

    - * - * - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/TokenIteratorAbstractTestCase.java#1 $ - */ -public abstract class TokenIteratorAbstractTestCase extends TestCase { - protected abstract TokenIterator createTokenIterator(String pString); - - protected abstract TokenIterator createTokenIterator(String pString, String pDelimiters); - - public void testNullString() { - try { - createTokenIterator(null); - fail("Null string parameter not allowed"); - } - catch (IllegalArgumentException e) { - // okay! - } - catch (Throwable t) { - fail(t.getMessage()); - } - } - - public void testNullDelimmiter() { - try { - createTokenIterator("", null); - fail("Null delimiter parameter not allowed"); - } - catch (IllegalArgumentException e) { - // okay! - } - catch (Throwable t) { - fail(t.getMessage()); - } - } - - public void testEmptyString() { - Iterator iterator = createTokenIterator(""); - assertFalse("Empty string has elements", iterator.hasNext()); - } - -} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/ConverterTest.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/ConverterTest.java new file mode 100755 index 00000000..7ae9ead4 --- /dev/null +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/ConverterTest.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.util.convert; + +import org.junit.Ignore; +import org.junit.Test; + +/** + * ConverterTest + *

    + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/convert/ConverterTestCase.java#1 $ + */ +public class ConverterTest { + + @Ignore("Not implemented") + @Test + public void testMe() { + // TODO: Implement tests + } +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/ConverterTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/ConverterTestCase.java deleted file mode 100755 index d974da3f..00000000 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/ConverterTestCase.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.twelvemonkeys.util.convert; - -import junit.framework.TestCase; - -/** - * ConverterTestCase - *

    - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/convert/ConverterTestCase.java#1 $ - */ -public class ConverterTestCase extends TestCase { - - public void testMe() { - // TODO: Implement tests - } -} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/DateConverterTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/DateConverterTest.java similarity index 54% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/convert/DateConverterTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/convert/DateConverterTest.java index ec6aeecc..467502d5 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/DateConverterTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/DateConverterTest.java @@ -1,61 +1,93 @@ -package com.twelvemonkeys.util.convert; - -import com.twelvemonkeys.lang.DateUtil; -import org.junit.Test; - -import java.text.DateFormat; -import java.util.*; - -/** - * DateConverterTestCase - *

    - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/convert/DateConverterTestCase.java#2 $ - */ -public class DateConverterTestCase extends PropertyConverterAbstractTestCase { - protected final static String FORMAT_STR_1 = "dd.MM.yyyy HH:mm:ss"; - protected final static String FORMAT_STR_2 = "dd-MM-yyyy hh:mm:ss a"; - - protected PropertyConverter makePropertyConverter() { - return new DateConverter(); - } - - protected Conversion[] getTestConversions() { - // The default format doesn't contain milliseconds, so we have to round - long time = System.currentTimeMillis(); - final Date now = new Date(DateUtil.roundToSecond(time)); - DateFormat df = DateFormat.getDateTimeInstance(); - - return new Conversion[] { - new Conversion("01.11.2006 15:26:23", new GregorianCalendar(2006, 10, 1, 15, 26, 23).getTime(), FORMAT_STR_1), - - // This doesn't really work.. But close enough - new Conversion(df.format(now), now), - - // This format is really stupid - new Conversion("01-11-2006 03:27:44 pm", new GregorianCalendar(2006, 10, 1, 15, 27, 44).getTime(), FORMAT_STR_2, "01-11-2006 03:27:44 PM"), - - // These seems to be an hour off (no timezone?)... - new Conversion("42", new Date(42l), "S"), - new Conversion(String.valueOf(time % 1000l), new Date(time % 1000l), "S"), - }; - } - - @Test - @Override - public void testConvert() { - // Custom setup, to make test cases stable: Always use GMT - TimeZone oldTZ = TimeZone.getDefault(); - - try { - TimeZone.setDefault(TimeZone.getTimeZone("GMT")); - super.testConvert(); - } - finally { - // Restore - TimeZone.setDefault(oldTZ); - } - } +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.util.convert; + +import com.twelvemonkeys.lang.DateUtil; +import org.junit.Test; + +import java.text.DateFormat; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.TimeZone; + +/** + * DateConverterTest + *

    + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/convert/DateConverterTestCase.java#2 $ + */ +public class DateConverterTest extends PropertyConverterAbstractTest { + protected final static String FORMAT_STR_1 = "dd.MM.yyyy HH:mm:ss"; + protected final static String FORMAT_STR_2 = "dd-MM-yyyy hh:mm:ss a"; + + protected PropertyConverter makePropertyConverter() { + return new DateConverter(); + } + + protected Conversion[] getTestConversions() { + // The default format doesn't contain milliseconds, so we have to round + long time = System.currentTimeMillis(); + final Date now = new Date(DateUtil.roundToSecond(time)); + DateFormat df = DateFormat.getDateTimeInstance(); + + return new Conversion[] { + new Conversion("01.11.2006 15:26:23", new GregorianCalendar(2006, 10, 1, 15, 26, 23).getTime(), FORMAT_STR_1), + + // This doesn't really work.. But close enough + new Conversion(df.format(now), now), + + // This format is really stupid + new Conversion("01-11-2006 03:27:44 pm", new GregorianCalendar(2006, 10, 1, 15, 27, 44).getTime(), FORMAT_STR_2, "01-11-2006 03:27:44 PM"), + + // These seems to be an hour off (no timezone?)... + new Conversion("42", new Date(42l), "S"), + new Conversion(String.valueOf(time % 1000l), new Date(time % 1000l), "S"), + }; + } + + @Test + @Override + public void testConvert() { + // Custom setup, to make test cases stable: Always use GMT + TimeZone oldTZ = TimeZone.getDefault(); + + try { + TimeZone.setDefault(TimeZone.getTimeZone("GMT")); + super.testConvert(); + } + finally { + // Restore + TimeZone.setDefault(oldTZ); + } + } } \ No newline at end of file diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/DefaultConverterTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/DefaultConverterTest.java similarity index 77% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/convert/DefaultConverterTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/convert/DefaultConverterTest.java index 6f1f19e7..394cd795 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/DefaultConverterTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/DefaultConverterTest.java @@ -1,150 +1,180 @@ -package com.twelvemonkeys.util.convert; - -import com.twelvemonkeys.lang.Validate; -import org.junit.Ignore; -import org.junit.Test; - -import java.io.File; -import java.net.URI; - -import static org.junit.Assert.*; - -/** - * DefaultConverterTestCase - *

    - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/convert/DefaultConverterTestCase.java#1 $ - */ -public class DefaultConverterTestCase extends PropertyConverterAbstractTestCase { - protected PropertyConverter makePropertyConverter() { - return new DefaultConverter(); - } - - protected Conversion[] getTestConversions() { - //noinspection BooleanConstructorCall - return new Conversion[] { - // Booleans - new Conversion("true", Boolean.TRUE), - new Conversion("TRUE", Boolean.TRUE, null, "true"), - new Conversion("false", Boolean.FALSE), - new Conversion("FALSE", false, null, "false"), - - new Conversion("2", 2), - - // Stupid but valid - new Conversion("fooBar", "fooBar"), - //new Conversion("fooBar", new StringBuilder("fooBar")), - StringBuilder does not impl equals()... - - // Stupid test class that reveres chars - new Conversion("fooBar", new FooBar("fooBar")), - - // String array tests - new Conversion("foo, bar, baz", new String[] {"foo", "bar", "baz"}), - new Conversion("foo", new String[] {"foo"}), - new Conversion("foo;bar; baz", new String[] {"foo", "bar", "baz"}, "; ", "foo; bar; baz"), - - // Native array tests - new Conversion("1, 2, 3", new int[] {1, 2, 3}), - new Conversion("-1, 42, 0", new long[] {-1, 42, 0}), - new Conversion("true, true, false", new boolean[] {true, true, false}), - new Conversion(".3, 4E7, .97", new float[] {.3f, 4e7f, .97f}, ", ", "0.3, 4.0E7, 0.97"), - - // Object array test - new Conversion("foo, bar", new FooBar[] {new FooBar("foo"), new FooBar("bar")}), - new Conversion("/temp, /usr/local/bin".replace('/', File.separatorChar), new File[] {new File("/temp"), new File("/usr/local/bin")}), - new Conversion("file:/temp, http://java.net/", new URI[] {URI.create("file:/temp"), URI.create("http://java.net/")}), - - // TODO: More tests - }; - } - - @Test - public void testConvertBooleanPrimitive() { - PropertyConverter converter = makePropertyConverter(); - assertTrue((Boolean) converter.toObject("true", boolean.class, null)); - assertFalse((Boolean) converter.toObject("FalsE", Boolean.TYPE, null)); - } - - @Test - public void testConvertShortPrimitive() { - PropertyConverter converter = makePropertyConverter(); - assertEquals(1, (short) (Short) converter.toObject("1", short.class, null)); - assertEquals(-2, (short) (Short) converter.toObject("-2", Short.TYPE, null)); - } - @Test - public void testConvertIntPrimitive() { - PropertyConverter converter = makePropertyConverter(); - assertEquals(1, (int) (Integer) converter.toObject("1", int.class, null)); - assertEquals(-2, (int) (Integer) converter.toObject("-2", Integer.TYPE, null)); - } - - @Test - public void testConvertLongPrimitive() { - PropertyConverter converter = makePropertyConverter(); - assertEquals(Long.MAX_VALUE, (long) (Long) converter.toObject("9223372036854775807", long.class, null)); - assertEquals(-2, (long) (Long) converter.toObject("-2", Long.TYPE, null)); - } - - @Test - public void testConvertBytePrimitive() { - PropertyConverter converter = makePropertyConverter(); - assertEquals(1, (byte) (Byte) converter.toObject("1", byte.class, null)); - assertEquals(-2, (byte) (Byte) converter.toObject("-2", Byte.TYPE, null)); - } - - @Test - public void testConvertFloatPrimitive() { - PropertyConverter converter = makePropertyConverter(); - assertEquals(1f, (Float) converter.toObject("1.0", float.class, null), 0); - assertEquals(-2.3456f, (Float) converter.toObject("-2.3456", Float.TYPE, null), 0); - } - - @Test - public void testConvertDoublePrimitive() { - PropertyConverter converter = makePropertyConverter(); - assertEquals(1d, (Double) converter.toObject("1.0", double.class, null), 0); - assertEquals(-2.3456, (Double) converter.toObject("-2.3456", Double.TYPE, null), 0); - } - - @Ignore("Known issue. Why would anyone do something like this?") - @Test - public void testConvertCharPrimitive() { - PropertyConverter converter = makePropertyConverter(); - assertEquals('A', (char) (Character) converter.toObject("A", char.class, null)); - assertEquals('Z', (char) (Character) converter.toObject("Z", Character.TYPE, null)); - } - - public static class FooBar { - private final String bar; - - public FooBar(String pFoo) { - Validate.notNull(pFoo, "foo"); - - bar = reverse(pFoo); - } - - private String reverse(String pFoo) { - StringBuilder buffer = new StringBuilder(pFoo.length()); - - for (int i = pFoo.length() - 1; i >= 0; i--) { - buffer.append(pFoo.charAt(i)); - } - - return buffer.toString(); - } - - public String toString() { - return reverse(bar); - } - - public boolean equals(Object obj) { - return obj == this || (obj != null && obj.getClass() == getClass() && ((FooBar) obj).bar.equals(bar)); - } - - public int hashCode() { - return 7 * bar.hashCode(); - } - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.util.convert; + +import com.twelvemonkeys.lang.Validate; +import org.junit.Ignore; +import org.junit.Test; + +import java.io.File; +import java.net.URI; + +import static org.junit.Assert.*; + +/** + * DefaultConverterTest + *

    + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/convert/DefaultConverterTestCase.java#1 $ + */ +public class DefaultConverterTest extends PropertyConverterAbstractTest { + protected PropertyConverter makePropertyConverter() { + return new DefaultConverter(); + } + + protected Conversion[] getTestConversions() { + //noinspection BooleanConstructorCall + return new Conversion[] { + // Booleans + new Conversion("true", Boolean.TRUE), + new Conversion("TRUE", Boolean.TRUE, null, "true"), + new Conversion("false", Boolean.FALSE), + new Conversion("FALSE", false, null, "false"), + + new Conversion("2", 2), + + // Stupid but valid + new Conversion("fooBar", "fooBar"), + //new Conversion("fooBar", new StringBuilder("fooBar")), - StringBuilder does not impl equals()... + + // Stupid test class that reveres chars + new Conversion("fooBar", new FooBar("fooBar")), + + // String array tests + new Conversion("foo, bar, baz", new String[] {"foo", "bar", "baz"}), + new Conversion("foo", new String[] {"foo"}), + new Conversion("foo;bar; baz", new String[] {"foo", "bar", "baz"}, "; ", "foo; bar; baz"), + + // Native array tests + new Conversion("1, 2, 3", new int[] {1, 2, 3}), + new Conversion("-1, 42, 0", new long[] {-1, 42, 0}), + new Conversion("true, true, false", new boolean[] {true, true, false}), + new Conversion(".3, 4E7, .97", new float[] {.3f, 4e7f, .97f}, ", ", "0.3, 4.0E7, 0.97"), + + // Object array test + new Conversion("foo, bar", new FooBar[] {new FooBar("foo"), new FooBar("bar")}), + new Conversion("/temp, /usr/local/bin".replace('/', File.separatorChar), new File[] {new File("/temp"), new File("/usr/local/bin")}), + new Conversion("file:/temp, http://java.net/", new URI[] {URI.create("file:/temp"), URI.create("http://java.net/")}), + + // TODO: More tests + }; + } + + @Test + public void testConvertBooleanPrimitive() { + PropertyConverter converter = makePropertyConverter(); + assertTrue((Boolean) converter.toObject("true", boolean.class, null)); + assertFalse((Boolean) converter.toObject("FalsE", Boolean.TYPE, null)); + } + + @Test + public void testConvertShortPrimitive() { + PropertyConverter converter = makePropertyConverter(); + assertEquals(1, (short) (Short) converter.toObject("1", short.class, null)); + assertEquals(-2, (short) (Short) converter.toObject("-2", Short.TYPE, null)); + } + @Test + public void testConvertIntPrimitive() { + PropertyConverter converter = makePropertyConverter(); + assertEquals(1, (int) (Integer) converter.toObject("1", int.class, null)); + assertEquals(-2, (int) (Integer) converter.toObject("-2", Integer.TYPE, null)); + } + + @Test + public void testConvertLongPrimitive() { + PropertyConverter converter = makePropertyConverter(); + assertEquals(Long.MAX_VALUE, (long) (Long) converter.toObject("9223372036854775807", long.class, null)); + assertEquals(-2, (long) (Long) converter.toObject("-2", Long.TYPE, null)); + } + + @Test + public void testConvertBytePrimitive() { + PropertyConverter converter = makePropertyConverter(); + assertEquals(1, (byte) (Byte) converter.toObject("1", byte.class, null)); + assertEquals(-2, (byte) (Byte) converter.toObject("-2", Byte.TYPE, null)); + } + + @Test + public void testConvertFloatPrimitive() { + PropertyConverter converter = makePropertyConverter(); + assertEquals(1f, (Float) converter.toObject("1.0", float.class, null), 0); + assertEquals(-2.3456f, (Float) converter.toObject("-2.3456", Float.TYPE, null), 0); + } + + @Test + public void testConvertDoublePrimitive() { + PropertyConverter converter = makePropertyConverter(); + assertEquals(1d, (Double) converter.toObject("1.0", double.class, null), 0); + assertEquals(-2.3456, (Double) converter.toObject("-2.3456", Double.TYPE, null), 0); + } + + @Ignore("Known issue. Why would anyone do something like this?") + @Test + public void testConvertCharPrimitive() { + PropertyConverter converter = makePropertyConverter(); + assertEquals('A', (char) (Character) converter.toObject("A", char.class, null)); + assertEquals('Z', (char) (Character) converter.toObject("Z", Character.TYPE, null)); + } + + public static class FooBar { + private final String bar; + + public FooBar(String pFoo) { + Validate.notNull(pFoo, "foo"); + + bar = reverse(pFoo); + } + + private String reverse(String pFoo) { + StringBuilder buffer = new StringBuilder(pFoo.length()); + + for (int i = pFoo.length() - 1; i >= 0; i--) { + buffer.append(pFoo.charAt(i)); + } + + return buffer.toString(); + } + + public String toString() { + return reverse(bar); + } + + public boolean equals(Object obj) { + return obj == this || (obj != null && obj.getClass() == getClass() && ((FooBar) obj).bar.equals(bar)); + } + + public int hashCode() { + return 7 * bar.hashCode(); + } + } +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/NumberConverterTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/NumberConverterTest.java similarity index 50% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/convert/NumberConverterTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/convert/NumberConverterTest.java index 97ddcb44..ade7c952 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/NumberConverterTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/NumberConverterTest.java @@ -1,42 +1,72 @@ -package com.twelvemonkeys.util.convert; - -/** - * NumberConverterTestCase - *

    - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/convert/NumberConverterTestCase.java#2 $ - */ -public class NumberConverterTestCase extends PropertyConverterAbstractTestCase { - protected PropertyConverter makePropertyConverter() { - return new NumberConverter(); - } - - protected Conversion[] getTestConversions() { - return new Conversion[] { - new Conversion("0", 0), - new Conversion("1", 1), - new Conversion("-1001", -1001), - new Conversion("1E3", 1000, null, "1000"), - - new Conversion("-2", -2l), - new Conversion("2000651651854", 2000651651854l), - new Conversion("2E10", 20000000000l, null, "20000000000"), - - new Conversion("3", 3.0f), - new Conversion("3.1", 3.1f), - new Conversion("3.2", 3.2f, "#.#"), - //new Conversion("3,3", new Float(3), "#", "3"), // Seems to need parseIntegerOnly - new Conversion("-3.4", -3.4f), - new Conversion("-3.5E10", -3.5e10f, null, "-35000000512"), - - new Conversion("4", 4.0), - new Conversion("4.1", 4.1), - new Conversion("4.2", 4.2, "#.#"), - //new Conversion("4,3", new Double(4), "#", "4"), // Seems to need parseIntegerOnly - new Conversion("-4.4", -4.4), - new Conversion("-4.5E97", -4.5e97, null, "-45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - }; - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.util.convert; + +/** + * NumberConverterTest + *

    + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/convert/NumberConverterTestCase.java#2 $ + */ +public class NumberConverterTest extends PropertyConverterAbstractTest { + protected PropertyConverter makePropertyConverter() { + return new NumberConverter(); + } + + protected Conversion[] getTestConversions() { + return new Conversion[] { + new Conversion("0", 0), + new Conversion("1", 1), + new Conversion("-1001", -1001), + new Conversion("1E3", 1000, null, "1000"), + + new Conversion("-2", -2l), + new Conversion("2000651651854", 2000651651854l), + new Conversion("2E10", 20000000000l, null, "20000000000"), + + new Conversion("3", 3.0f), + new Conversion("3.1", 3.1f), + new Conversion("3.2", 3.2f, "#.#"), + //new Conversion("3,3", new Float(3), "#", "3"), // Seems to need parseIntegerOnly + new Conversion("-3.4", -3.4f), + new Conversion("-3.5E10", -3.5e10f, null, "-35000000512"), + + new Conversion("4", 4.0), + new Conversion("4.1", 4.1), + new Conversion("4.2", 4.2, "#.#"), + //new Conversion("4,3", new Double(4), "#", "4"), // Seems to need parseIntegerOnly + new Conversion("-4.4", -4.4), + new Conversion("-4.5E97", -4.5e97, null, "-45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + }; + } +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/PropertyConverterAbstractTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/PropertyConverterAbstractTest.java similarity index 75% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/convert/PropertyConverterAbstractTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/convert/PropertyConverterAbstractTest.java index a848ad75..34a55682 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/PropertyConverterAbstractTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/PropertyConverterAbstractTest.java @@ -1,154 +1,184 @@ -package com.twelvemonkeys.util.convert; - -import com.twelvemonkeys.lang.ObjectAbstractTestCase; -import com.twelvemonkeys.lang.Validate; -import org.junit.Test; - -import java.util.Arrays; - -import static org.junit.Assert.*; - -/** - * PropertyConverterAbstractTestCase - *

    - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/convert/PropertyConverterAbstractTestCase.java#2 $ - */ -public abstract class PropertyConverterAbstractTestCase extends ObjectAbstractTestCase { - protected Object makeObject() { - return makePropertyConverter(); - } - - protected abstract PropertyConverter makePropertyConverter(); - - protected abstract Conversion[] getTestConversions(); - - @Test - public void testConvert() { - PropertyConverter converter = makePropertyConverter(); - - Conversion[] tests = getTestConversions(); - - for (Conversion test : tests) { - Object obj; - try { - obj = converter.toObject(test.original(), test.type(), test.format()); - - assertEquals(String.format("'%s' converted to incorrect type", test.original()), test.type(), obj.getClass()); - if (test.type().isArray()) { - assertArrayEquals0(String.format("'%s' not converted", test.original()), test.value(), obj); - } - else { - assertEquals(String.format("'%s' not converted", test.original()), test.value(), obj); - } - - String result = converter.toString(test.value(), test.format()); - - assertEquals(String.format("'%s' does not match", test.converted()), test.converted(), result); - - obj = converter.toObject(result, test.type(), test.format()); - assertEquals(String.format("'%s' converted to incorrect type", test.original()), test.type(), obj.getClass()); - - if (test.type().isArray()) { - assertArrayEquals0(String.format("'%s' did not survive round trip conversion", test.original()), test.value(), obj); - } - else { - assertEquals(String.format("'%s' did not survive round trip conversion", test.original()), test.value(), obj); - } - } - catch (ConversionException e) { - failBecause(String.format("Converting '%s' to %s failed", test.original(), test.type()), e); - } - } - } - - private static void assertArrayEquals0(final String message, final Object left, final Object right) { - Class componentType = left.getClass().getComponentType(); - if (componentType.isPrimitive()) { - if (int.class == componentType) { - assertArrayEquals(message, (int[]) left, (int[]) right); - } - else if (short.class == componentType) { - assertArrayEquals(message, (short[]) left, (short[]) right); - } - else if (long.class == componentType) { - assertArrayEquals(message, (long[]) left, (long[]) right); - } - else if (float.class == componentType) { - assertArrayEquals(message, (float[]) left, (float[]) right, 0f); - } - else if (double.class == componentType) { - assertArrayEquals(message, (double[]) left, (double[]) right, 0d); - } - else if (boolean.class == componentType) { - assertTrue(message, Arrays.equals((boolean[]) left, (boolean[]) right)); - } - else if (byte.class == componentType) { - assertArrayEquals(message, (byte[]) left, (byte[]) right); - } - else if (char.class == componentType) { - assertArrayEquals(message, (char[]) left, (char[]) right); - } - else { - fail(String.format("Unknown primitive type: %s", componentType)); - } - } - else { - assertArrayEquals(message, (Object[]) left, (Object[]) right); - } - } - - private static void failBecause(String message, Throwable exception) { - AssertionError error = new AssertionError(message); - error.initCause(exception); - throw error; - } - - public static final class Conversion { - private final String strVal; - private final Object objVal; - private final String format; - private final String convertedStrVal; - - public Conversion(String pStrVal, Object pObjVal) { - this(pStrVal, pObjVal, null); - } - - public Conversion(String pStrVal, Object pObjVal, String pFormat) { - this(pStrVal, pObjVal, pFormat, pStrVal); - } - - public Conversion(String pStrVal, Object pObjVal, String pFormat, String pConvertedStrVal) { - Validate.notNull(pStrVal, "strVal"); - Validate.notNull(pObjVal, "objVal"); - Validate.notNull(pConvertedStrVal, "convertedStrVal"); - - strVal = pStrVal; - objVal = pObjVal; - format = pFormat; - convertedStrVal = pConvertedStrVal; - } - - public String original() { - return strVal; - } - - public Object value() { - return objVal; - } - - public Class type() { - return objVal.getClass(); - } - - public String format() { - return format; - } - - public String converted() { - return convertedStrVal; - } - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.util.convert; + +import com.twelvemonkeys.lang.ObjectAbstractTest; +import com.twelvemonkeys.lang.Validate; +import org.junit.Test; + +import java.util.Arrays; + +import static org.junit.Assert.*; + +/** + * PropertyConverterAbstractTest + *

    + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/convert/PropertyConverterAbstractTestCase.java#2 $ + */ +public abstract class PropertyConverterAbstractTest extends ObjectAbstractTest { + protected Object makeObject() { + return makePropertyConverter(); + } + + protected abstract PropertyConverter makePropertyConverter(); + + protected abstract Conversion[] getTestConversions(); + + @Test + public void testConvert() { + PropertyConverter converter = makePropertyConverter(); + + Conversion[] tests = getTestConversions(); + + for (Conversion test : tests) { + Object obj; + try { + obj = converter.toObject(test.original(), test.type(), test.format()); + + assertEquals(String.format("'%s' converted to incorrect type", test.original()), test.type(), obj.getClass()); + if (test.type().isArray()) { + assertArrayEquals0(String.format("'%s' not converted", test.original()), test.value(), obj); + } + else { + assertEquals(String.format("'%s' not converted", test.original()), test.value(), obj); + } + + String result = converter.toString(test.value(), test.format()); + + assertEquals(String.format("'%s' does not match", test.converted()), test.converted(), result); + + obj = converter.toObject(result, test.type(), test.format()); + assertEquals(String.format("'%s' converted to incorrect type", test.original()), test.type(), obj.getClass()); + + if (test.type().isArray()) { + assertArrayEquals0(String.format("'%s' did not survive round trip conversion", test.original()), test.value(), obj); + } + else { + assertEquals(String.format("'%s' did not survive round trip conversion", test.original()), test.value(), obj); + } + } + catch (ConversionException e) { + failBecause(String.format("Converting '%s' to %s failed", test.original(), test.type()), e); + } + } + } + + private static void assertArrayEquals0(final String message, final Object left, final Object right) { + Class componentType = left.getClass().getComponentType(); + if (componentType.isPrimitive()) { + if (int.class == componentType) { + assertArrayEquals(message, (int[]) left, (int[]) right); + } + else if (short.class == componentType) { + assertArrayEquals(message, (short[]) left, (short[]) right); + } + else if (long.class == componentType) { + assertArrayEquals(message, (long[]) left, (long[]) right); + } + else if (float.class == componentType) { + assertArrayEquals(message, (float[]) left, (float[]) right, 0f); + } + else if (double.class == componentType) { + assertArrayEquals(message, (double[]) left, (double[]) right, 0d); + } + else if (boolean.class == componentType) { + assertTrue(message, Arrays.equals((boolean[]) left, (boolean[]) right)); + } + else if (byte.class == componentType) { + assertArrayEquals(message, (byte[]) left, (byte[]) right); + } + else if (char.class == componentType) { + assertArrayEquals(message, (char[]) left, (char[]) right); + } + else { + fail(String.format("Unknown primitive type: %s", componentType)); + } + } + else { + assertArrayEquals(message, (Object[]) left, (Object[]) right); + } + } + + private static void failBecause(String message, Throwable exception) { + AssertionError error = new AssertionError(message); + error.initCause(exception); + throw error; + } + + public static final class Conversion { + private final String strVal; + private final Object objVal; + private final String format; + private final String convertedStrVal; + + public Conversion(String pStrVal, Object pObjVal) { + this(pStrVal, pObjVal, null); + } + + public Conversion(String pStrVal, Object pObjVal, String pFormat) { + this(pStrVal, pObjVal, pFormat, pStrVal); + } + + public Conversion(String pStrVal, Object pObjVal, String pFormat, String pConvertedStrVal) { + Validate.notNull(pStrVal, "strVal"); + Validate.notNull(pObjVal, "objVal"); + Validate.notNull(pConvertedStrVal, "convertedStrVal"); + + strVal = pStrVal; + objVal = pObjVal; + format = pFormat; + convertedStrVal = pConvertedStrVal; + } + + public String original() { + return strVal; + } + + public Object value() { + return objVal; + } + + public Class type() { + return objVal.getClass(); + } + + public String format() { + return format; + } + + public String converted() { + return convertedStrVal; + } + } +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/TimeConverterTest.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/TimeConverterTest.java new file mode 100755 index 00000000..6c770cc5 --- /dev/null +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/TimeConverterTest.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.util.convert; + +/** + * TimeConverterTest + *

    + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/convert/TimeConverterTestCase.java#1 $ + */ +public class TimeConverterTest extends PropertyConverterAbstractTest { + protected PropertyConverter makePropertyConverter() { + return new TimeConverter(); + } + + protected Conversion[] getTestConversions() { + return new Conversion[0];// TODO: Implement + } +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/TimeConverterTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/TimeConverterTestCase.java deleted file mode 100755 index f71898b6..00000000 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/convert/TimeConverterTestCase.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.twelvemonkeys.util.convert; - -/** - * TimeConverterTestCase - *

    - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/convert/TimeConverterTestCase.java#1 $ - */ -public class TimeConverterTestCase extends PropertyConverterAbstractTestCase { - protected PropertyConverter makePropertyConverter() { - return new TimeConverter(); - } - - protected Conversion[] getTestConversions() { - return new Conversion[0];// TODO: Implement - } -} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/regex/RegExTokenIteratorTestCase.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/regex/RegExTokenIteratorTest.java similarity index 71% rename from common/common-lang/src/test/java/com/twelvemonkeys/util/regex/RegExTokenIteratorTestCase.java rename to common/common-lang/src/test/java/com/twelvemonkeys/util/regex/RegExTokenIteratorTest.java index 69517f60..4a7d2f6b 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/regex/RegExTokenIteratorTestCase.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/regex/RegExTokenIteratorTest.java @@ -1,122 +1,153 @@ -package com.twelvemonkeys.util.regex; - -import com.twelvemonkeys.util.TokenIterator; -import com.twelvemonkeys.util.TokenIteratorAbstractTestCase; - -import java.util.Iterator; - -/** - * StringTokenIteratorTestCase - *

    - * - * - * - * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/regex/RegExTokenIteratorTestCase.java#1 $ - */ -public class RegExTokenIteratorTestCase extends TokenIteratorAbstractTestCase { - public void setUp() throws Exception { - super.setUp(); - } - - public void tearDown() throws Exception { - super.tearDown(); - } - - protected TokenIterator createTokenIterator(String pString) { - return new RegExTokenIterator(pString); - } - - protected TokenIterator createTokenIterator(String pString, String pDelimiters) { - return new RegExTokenIterator(pString, pDelimiters); - } - - public void testEmptyDelimiter() { - // TODO: What is it supposed to match? - /* - Iterator iterator = createTokenIterator("", ".*"); - assertTrue("Empty string has no elements", iterator.hasNext()); - iterator.next(); - assertFalse("Empty string has more then one element", iterator.hasNext()); - */ - } - - public void testSingleToken() { - Iterator iterator = createTokenIterator("A"); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("A", iterator.next()); - assertFalse("String has more than one element", iterator.hasNext()); - } - - public void testSingleTokenEmptyDelimiter() { - // TODO: What is it supposed to match? - /* - Iterator iterator = createTokenIterator("A", ".*"); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("A", iterator.next()); - assertFalse("String has more than one element", iterator.hasNext()); - */ - } - - public void testSingleTokenSingleDelimiter() { - Iterator iterator = createTokenIterator("A", "[^,]+"); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("A", iterator.next()); - assertFalse("String has more than one element", iterator.hasNext()); - } - - public void testSingleSeparatorDefaultDelimiter() { - Iterator iterator = createTokenIterator("A B C D"); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("A", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("B", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("C", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("D", iterator.next()); - assertFalse("String has more than one element", iterator.hasNext()); - } - - public void testSingleSeparator() { - Iterator iterator = createTokenIterator("A,B,C", "[^,]+"); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("A", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("B", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("C", iterator.next()); - assertFalse("String has more than one element", iterator.hasNext()); - } - - public void testMultipleSeparatorDefaultDelimiter() { - Iterator iterator = createTokenIterator("A B C\nD\t\t \nE"); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("A", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("B", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("C", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("D", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("E", iterator.next()); - assertFalse("String has more than one element", iterator.hasNext()); - } - - public void testMultipleSeparator() { - Iterator iterator = createTokenIterator("A,B,;,C...D, ., ,E", "[^ ,.;:]+"); - assertTrue("String has no elements", iterator.hasNext()); - Object o = iterator.next(); - assertEquals("A", o); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("B", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("C", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("D", iterator.next()); - assertTrue("String has no elements", iterator.hasNext()); - assertEquals("E", iterator.next()); - assertFalse("String has more than one element", iterator.hasNext()); - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.util.regex; + +import com.twelvemonkeys.util.TokenIterator; +import com.twelvemonkeys.util.TokenIteratorAbstractTest; +import org.junit.Test; + +import java.util.Iterator; + +import static org.junit.Assert.*; + +/** + * StringTokenIteratorTestCase + *

    + * @author Harald Kuhr + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/util/regex/RegExTokenIteratorTestCase.java#1 $ + */ +public class RegExTokenIteratorTest extends TokenIteratorAbstractTest { + + protected TokenIterator createTokenIterator(String pString) { + return new RegExTokenIterator(pString); + } + + protected TokenIterator createTokenIterator(String pString, String pDelimiters) { + return new RegExTokenIterator(pString, pDelimiters); + } + + @Test + public void testEmptyDelimiter() { + // TODO: What is it supposed to match? + /* + Iterator iterator = createTokenIterator("", ".*"); + assertTrue("Empty string has no elements", iterator.hasNext()); + iterator.next(); + assertFalse("Empty string has more then one element", iterator.hasNext()); + */ + } + + @Test + public void testSingleToken() { + Iterator iterator = createTokenIterator("A"); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("A", iterator.next()); + assertFalse("String has more than one element", iterator.hasNext()); + } + + @Test + public void testSingleTokenEmptyDelimiter() { + // TODO: What is it supposed to match? + /* + Iterator iterator = createTokenIterator("A", ".*"); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("A", iterator.next()); + assertFalse("String has more than one element", iterator.hasNext()); + */ + } + + @Test + public void testSingleTokenSingleDelimiter() { + Iterator iterator = createTokenIterator("A", "[^,]+"); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("A", iterator.next()); + assertFalse("String has more than one element", iterator.hasNext()); + } + + @Test + public void testSingleSeparatorDefaultDelimiter() { + Iterator iterator = createTokenIterator("A B C D"); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("A", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("B", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("C", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("D", iterator.next()); + assertFalse("String has more than one element", iterator.hasNext()); + } + + @Test + public void testSingleSeparator() { + Iterator iterator = createTokenIterator("A,B,C", "[^,]+"); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("A", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("B", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("C", iterator.next()); + assertFalse("String has more than one element", iterator.hasNext()); + } + + @Test + public void testMultipleSeparatorDefaultDelimiter() { + Iterator iterator = createTokenIterator("A B C\nD\t\t \nE"); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("A", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("B", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("C", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("D", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("E", iterator.next()); + assertFalse("String has more than one element", iterator.hasNext()); + } + + @Test + public void testMultipleSeparator() { + Iterator iterator = createTokenIterator("A,B,;,C...D, ., ,E", "[^ ,.;:]+"); + assertTrue("String has no elements", iterator.hasNext()); + Object o = iterator.next(); + assertEquals("A", o); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("B", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("C", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("D", iterator.next()); + assertTrue("String has no elements", iterator.hasNext()); + assertEquals("E", iterator.next()); + assertFalse("String has more than one element", iterator.hasNext()); + } +} diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/service/DummySPI.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/service/DummySPI.java index aa078a3e..9b450d83 100644 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/service/DummySPI.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/service/DummySPI.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.service; diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/service/DummySPIImpl.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/service/DummySPIImpl.java index 8ae8b908..6ce0a476 100644 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/service/DummySPIImpl.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/service/DummySPIImpl.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.service; diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/service/DummySPIToo.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/service/DummySPIToo.java index 4d2f6c73..6ae0c4eb 100644 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/service/DummySPIToo.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/service/DummySPIToo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.service; diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/service/ServiceRegistryTest.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/service/ServiceRegistryTest.java index fe7b8f32..8f046cbb 100644 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/service/ServiceRegistryTest.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/service/ServiceRegistryTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.util.service; diff --git a/contrib/src/main/java/com/twelvemonkeys/contrib/tiff/TIFFUtilities.java b/contrib/src/main/java/com/twelvemonkeys/contrib/tiff/TIFFUtilities.java index 4c8a58d2..b99bfef1 100644 --- a/contrib/src/main/java/com/twelvemonkeys/contrib/tiff/TIFFUtilities.java +++ b/contrib/src/main/java/com/twelvemonkeys/contrib/tiff/TIFFUtilities.java @@ -1,29 +1,31 @@ /* - * Copyright (c) 2013, Harald Kuhr + * Copyright (c) 2013, Oliver Schmidtmer, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.contrib.tiff; @@ -34,11 +36,7 @@ import com.twelvemonkeys.imageio.metadata.CompoundDirectory; import com.twelvemonkeys.imageio.metadata.Directory; import com.twelvemonkeys.imageio.metadata.Entry; import com.twelvemonkeys.imageio.metadata.jpeg.JPEG; -import com.twelvemonkeys.imageio.metadata.tiff.IFD; -import com.twelvemonkeys.imageio.metadata.tiff.TIFF; -import com.twelvemonkeys.imageio.metadata.tiff.TIFFEntry; -import com.twelvemonkeys.imageio.metadata.tiff.TIFFReader; -import com.twelvemonkeys.imageio.metadata.tiff.TIFFWriter; +import com.twelvemonkeys.imageio.metadata.tiff.*; import com.twelvemonkeys.lang.Validate; import javax.imageio.IIOException; diff --git a/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java b/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java index f1a79ff6..9d33983c 100644 --- a/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java +++ b/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java @@ -1,29 +1,31 @@ /* - * Copyright (c) 2013, Harald Kuhr + * Copyright (c) 2013, Oliver Schmidtmer, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.contrib.tiff; diff --git a/imageio/imageio-batik/license.txt b/imageio/imageio-batik/license.txt index 2d8ee79c..5ae89322 100755 --- a/imageio/imageio-batik/license.txt +++ b/imageio/imageio-batik/license.txt @@ -4,22 +4,24 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java index ec7b85aa..2e82ba35 100755 --- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.svg; diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java index 4b6cc86a..edaf1706 100755 --- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.svg; diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGProviderInfo.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGProviderInfo.java index 5eac8873..7bf4e941 100644 --- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGProviderInfo.java +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.svg; diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGReadParam.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGReadParam.java index 9d384807..2d5ad4dd 100755 --- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGReadParam.java +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGReadParam.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.svg; diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMF.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMF.java index 08159719..c87d1668 100755 --- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMF.java +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMF.java @@ -4,28 +4,31 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + package com.twelvemonkeys.imageio.plugins.wmf; /** @@ -36,7 +39,7 @@ package com.twelvemonkeys.imageio.plugins.wmf; * @version $Id: WMF.java,v 1.0 Feb 17, 2008 5:46:59 PM haraldk Exp$ */ interface WMF { - static byte[] HEADER = new byte[] { + byte[] HEADER = new byte[] { (byte) 0xd7, (byte) 0xcd, (byte) 0xc6, (byte) 0x9a, (byte) 0x00, (byte) 0x00, //(byte) 0x7a, (byte) 0xf3, (byte) 0xa6, (byte) 0xfe, //(byte) 0xf5, (byte) 0x06, (byte) 0x1c, (byte) 0x01, (byte) 0xe8, diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReader.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReader.java index 1e78a57e..a53ffedb 100755 --- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReader.java +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.wmf; diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderSpi.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderSpi.java index a8106b91..ea4b3a25 100755 --- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderSpi.java +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.wmf; diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFProviderInfo.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFProviderInfo.java index 6db9a085..9d5e671f 100644 --- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFProviderInfo.java +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/wmf/WMFProviderInfo.java @@ -4,28 +4,31 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + package com.twelvemonkeys.imageio.plugins.wmf; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpiTest.java b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpiTest.java index cbe2c457..03752acb 100644 --- a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpiTest.java +++ b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpiTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.svg; import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStream; diff --git a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTest.java b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTest.java index 59a06967..f833df80 100755 --- a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTest.java +++ b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.svg; diff --git a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGProviderInfoTest.java b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGProviderInfoTest.java index 2537db4f..a51c167d 100644 --- a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGProviderInfoTest.java +++ b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.svg; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderTest.java b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderTest.java index b634b138..f85d9d90 100755 --- a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderTest.java +++ b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/WMFImageReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.wmf; diff --git a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/WMFProviderInfoTest.java b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/WMFProviderInfoTest.java index 6b96d2cf..f6fc2801 100644 --- a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/WMFProviderInfoTest.java +++ b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/wmf/WMFProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.wmf; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-bmp/license.txt b/imageio/imageio-bmp/license.txt index fe399516..e5f570e1 100755 --- a/imageio/imageio-bmp/license.txt +++ b/imageio/imageio-bmp/license.txt @@ -4,22 +4,24 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/imageio/imageio-clippath/license.txt b/imageio/imageio-clippath/license.txt index fe399516..e5f570e1 100755 --- a/imageio/imageio-clippath/license.txt +++ b/imageio/imageio-clippath/license.txt @@ -4,22 +4,24 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/AdobePathBuilder.java b/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/AdobePathBuilder.java index fa9faeea..a9227bee 100644 --- a/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/AdobePathBuilder.java +++ b/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/AdobePathBuilder.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.path; diff --git a/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/AdobePathSegment.java b/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/AdobePathSegment.java index c8d91449..d5fe8df7 100644 --- a/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/AdobePathSegment.java +++ b/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/AdobePathSegment.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.path; diff --git a/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/Paths.java b/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/Paths.java index 7ab5f441..8d30112a 100644 --- a/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/Paths.java +++ b/imageio/imageio-clippath/src/main/java/com/twelvemonkeys/imageio/path/Paths.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.path; diff --git a/imageio/imageio-clippath/src/test/java/com/twelvemonkeys/imageio/path/AdobePathBuilderTest.java b/imageio/imageio-clippath/src/test/java/com/twelvemonkeys/imageio/path/AdobePathBuilderTest.java index 5ae16d25..1e917a86 100644 --- a/imageio/imageio-clippath/src/test/java/com/twelvemonkeys/imageio/path/AdobePathBuilderTest.java +++ b/imageio/imageio-clippath/src/test/java/com/twelvemonkeys/imageio/path/AdobePathBuilderTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2014, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.path; import org.junit.Test; diff --git a/imageio/imageio-clippath/src/test/java/com/twelvemonkeys/imageio/path/AdobePathSegmentTest.java b/imageio/imageio-clippath/src/test/java/com/twelvemonkeys/imageio/path/AdobePathSegmentTest.java index fbdda65b..c42aee6a 100644 --- a/imageio/imageio-clippath/src/test/java/com/twelvemonkeys/imageio/path/AdobePathSegmentTest.java +++ b/imageio/imageio-clippath/src/test/java/com/twelvemonkeys/imageio/path/AdobePathSegmentTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2014, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.path; import org.junit.Test; diff --git a/imageio/imageio-clippath/src/test/java/com/twelvemonkeys/imageio/path/PathsTest.java b/imageio/imageio-clippath/src/test/java/com/twelvemonkeys/imageio/path/PathsTest.java index c7115f67..7aca08ee 100644 --- a/imageio/imageio-clippath/src/test/java/com/twelvemonkeys/imageio/path/PathsTest.java +++ b/imageio/imageio-clippath/src/test/java/com/twelvemonkeys/imageio/path/PathsTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2014, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.path; import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStream; diff --git a/imageio/imageio-core/license.txt b/imageio/imageio-core/license.txt index 3d296265..22f6384e 100755 --- a/imageio/imageio-core/license.txt +++ b/imageio/imageio-core/license.txt @@ -4,25 +4,28 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --- diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java index d8ff9607..c8752efb 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageReaderBase.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageReaderBase.java index 90e16063..a848e072 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageReaderBase.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageReaderBase.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageWriterBase.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageWriterBase.java index a554a7f0..e8bb379b 100755 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageWriterBase.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/ImageWriterBase.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/CIELabColorConverter.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/CIELabColorConverter.java index 3abe5f47..56648938 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/CIELabColorConverter.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/CIELabColorConverter.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.color; import com.twelvemonkeys.lang.Validate; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/CMYKColorSpace.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/CMYKColorSpace.java index 2223ec77..7599d9d0 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/CMYKColorSpace.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/CMYKColorSpace.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.color; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java index 3293306b..8e0ba318 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.color; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModel.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModel.java index db3a1bd7..a3ed6865 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModel.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModel.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.color; import java.awt.*; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ICCProfileSanitizer.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ICCProfileSanitizer.java index 0ff6738c..7c2fdbcd 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ICCProfileSanitizer.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ICCProfileSanitizer.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.color; import com.twelvemonkeys.lang.SystemUtil; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/Int16ComponentColorModel.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/Int16ComponentColorModel.java index 3a38023f..64d55fe9 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/Int16ComponentColorModel.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/Int16ComponentColorModel.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.color; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/KCMSSanitizerStrategy.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/KCMSSanitizerStrategy.java index 557d22c1..ed4ecf8d 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/KCMSSanitizerStrategy.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/KCMSSanitizerStrategy.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.color; import com.twelvemonkeys.lang.Validate; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/LCMSSanitizerStrategy.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/LCMSSanitizerStrategy.java index 2bd0d88e..88c42a25 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/LCMSSanitizerStrategy.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/LCMSSanitizerStrategy.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.color; import com.twelvemonkeys.lang.Validate; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/UInt32ColorModel.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/UInt32ColorModel.java index 25318f60..30e5dd56 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/UInt32ColorModel.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/UInt32ColorModel.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.color; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/YCbCrConverter.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/YCbCrConverter.java index 8b1f8eef..aedb1231 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/YCbCrConverter.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/YCbCrConverter.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.color; /** diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ImageReaderSpiBase.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ImageReaderSpiBase.java index 1c521644..cf9f09a9 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ImageReaderSpiBase.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ImageReaderSpiBase.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.spi; import javax.imageio.spi.ImageReaderSpi; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ImageWriterSpiBase.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ImageWriterSpiBase.java index 3989f5e8..b6d1efb7 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ImageWriterSpiBase.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ImageWriterSpiBase.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.spi; import javax.imageio.spi.ImageWriterSpi; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ProviderInfo.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ProviderInfo.java index 61048791..d0a88da6 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ProviderInfo.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ProviderInfo.java @@ -4,27 +4,30 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + package com.twelvemonkeys.imageio.spi; import com.twelvemonkeys.lang.Validate; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ReaderWriterProviderInfo.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ReaderWriterProviderInfo.java index a6138816..77731fd7 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ReaderWriterProviderInfo.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/ReaderWriterProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.spi; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/package-info.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/package-info.java index cc3d2c1b..7dc46817 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/package-info.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/spi/package-info.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** * Provides helper classes for service provider implementations. */ diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/BufferedImageInputStream.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/BufferedImageInputStream.java index 7e9a8678..a0bd79aa 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/BufferedImageInputStream.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/BufferedImageInputStream.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.stream; import javax.imageio.stream.ImageInputStream; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStream.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStream.java index 92aee63d..679013ea 100755 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStream.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStream.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.stream; import javax.imageio.stream.ImageInputStreamImpl; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamSpi.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamSpi.java index ae148269..a19af942 100755 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamSpi.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamSpi.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.stream; import javax.imageio.spi.ImageInputStreamSpi; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/SubImageInputStream.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/SubImageInputStream.java index 46600aa3..ce61c856 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/SubImageInputStream.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/SubImageInputStream.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.stream; import com.twelvemonkeys.lang.Validate; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/SubImageOutputStream.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/SubImageOutputStream.java index e72cde21..e798a636 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/SubImageOutputStream.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/SubImageOutputStream.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.stream; import javax.imageio.stream.ImageOutputStream; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/URLImageInputStreamSpi.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/URLImageInputStreamSpi.java index 64c1ae6e..e4a01f66 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/URLImageInputStreamSpi.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/URLImageInputStreamSpi.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.stream; import javax.imageio.spi.ImageInputStreamSpi; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/package-info.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/package-info.java index 71618df3..b3039049 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/package-info.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/stream/package-info.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** * Provides various additional stream implementations. */ diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IIOInputStreamAdapter.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IIOInputStreamAdapter.java index 9e5b1d52..fed0cac8 100755 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IIOInputStreamAdapter.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IIOInputStreamAdapter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.util; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IIOOutputStreamAdapter.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IIOOutputStreamAdapter.java index c83fd3d4..1922fd40 100755 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IIOOutputStreamAdapter.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IIOOutputStreamAdapter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.util; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IIOUtil.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IIOUtil.java index 7e667b2f..9d9cf290 100755 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IIOUtil.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IIOUtil.java @@ -4,27 +4,30 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + package com.twelvemonkeys.imageio.util; import com.twelvemonkeys.image.ImageUtil; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiers.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiers.java index c572010c..0f3f6259 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiers.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiers.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.util; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IndexedImageTypeSpecifier.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IndexedImageTypeSpecifier.java index 65dee377..33456114 100755 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IndexedImageTypeSpecifier.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/IndexedImageTypeSpecifier.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.util; import javax.imageio.ImageTypeSpecifier; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/Int16ImageTypeSpecifier.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/Int16ImageTypeSpecifier.java index e79ed3d3..50ff738d 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/Int16ImageTypeSpecifier.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/Int16ImageTypeSpecifier.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.util; @@ -38,7 +40,7 @@ import java.awt.image.PixelInterleavedSampleModel; /** * ImageTypeSpecifier for interleaved 16 bit signed integral samples. * - * @see com.twelvemonkeys.imageio.color.Int16ColorModel + * @see com.twelvemonkeys.imageio.color.Int16ComponentColorModel * @author Harald Kuhr * @author last modified by $Author: haraldk$ * @version $Id: Int16ImageTypeSpecifier.java,v 1.0 24.01.11 17.51 haraldk Exp$ diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ProgressListenerBase.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ProgressListenerBase.java index 816dc142..448881a1 100755 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ProgressListenerBase.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ProgressListenerBase.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.util; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ReaderFileSuffixFilter.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ReaderFileSuffixFilter.java index e94b61b0..be67c875 100755 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ReaderFileSuffixFilter.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ReaderFileSuffixFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.util; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/UInt32ImageTypeSpecifier.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/UInt32ImageTypeSpecifier.java index 94060844..6a8b8041 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/UInt32ImageTypeSpecifier.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/UInt32ImageTypeSpecifier.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.util; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/WriterFileSuffixFilter.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/WriterFileSuffixFilter.java index 20a43ae4..a5d69140 100755 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/WriterFileSuffixFilter.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/WriterFileSuffixFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.util; diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/package-info.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/package-info.java index 87091685..1c0da421 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/package-info.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/package-info.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** * Provides various common utilities for reading and writing images. */ diff --git a/imageio/imageio-core/src/main/resources/com/twelvemonkeys/imageio/color/icc_profiles_lnx.properties b/imageio/imageio-core/src/main/resources/com/twelvemonkeys/imageio/color/icc_profiles_lnx.properties index 706fe6d6..b82f9513 100644 --- a/imageio/imageio-core/src/main/resources/com/twelvemonkeys/imageio/color/icc_profiles_lnx.properties +++ b/imageio/imageio-core/src/main/resources/com/twelvemonkeys/imageio/color/icc_profiles_lnx.properties @@ -4,26 +4,28 @@ # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name "TwelveMonkeys" nor the -# names of its contributors may be used to endorse or promote products -# derived from this software without specific prior written permission. # -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# * Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # #GENERIC_CMYK=unknown, use built in for now #ADOBE_RGB_1998=unknown, use built in for now \ No newline at end of file diff --git a/imageio/imageio-core/src/main/resources/com/twelvemonkeys/imageio/color/icc_profiles_osx.properties b/imageio/imageio-core/src/main/resources/com/twelvemonkeys/imageio/color/icc_profiles_osx.properties index a516ec1c..55791c41 100644 --- a/imageio/imageio-core/src/main/resources/com/twelvemonkeys/imageio/color/icc_profiles_osx.properties +++ b/imageio/imageio-core/src/main/resources/com/twelvemonkeys/imageio/color/icc_profiles_osx.properties @@ -4,26 +4,28 @@ # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name "TwelveMonkeys" nor the -# names of its contributors may be used to endorse or promote products -# derived from this software without specific prior written permission. # -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# * Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # GENERIC_CMYK=/System/Library/ColorSync/Profiles/Generic CMYK Profile.icc ADOBE_RGB_1998=/System/Library/ColorSync/Profiles/AdobeRGB1998.icc diff --git a/imageio/imageio-core/src/main/resources/com/twelvemonkeys/imageio/color/icc_profiles_win.properties b/imageio/imageio-core/src/main/resources/com/twelvemonkeys/imageio/color/icc_profiles_win.properties index 21fef9f9..7f8eb489 100644 --- a/imageio/imageio-core/src/main/resources/com/twelvemonkeys/imageio/color/icc_profiles_win.properties +++ b/imageio/imageio-core/src/main/resources/com/twelvemonkeys/imageio/color/icc_profiles_win.properties @@ -4,26 +4,28 @@ # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name "TwelveMonkeys" nor the -# names of its contributors may be used to endorse or promote products -# derived from this software without specific prior written permission. # -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# * Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # GENERIC_CMYK=/C:/Windows/System32/spool/drivers/color/RSWOP.icm #ADOBE_RGB_1998=unknown, use built in for now \ No newline at end of file diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/ImageReaderBaseTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/ImageReaderBaseTest.java index d0fb66df..ac1353a9 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/ImageReaderBaseTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/ImageReaderBaseTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/CIELabColorConverterTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/CIELabColorConverterTest.java index ff3ddbeb..6c49b4a9 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/CIELabColorConverterTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/CIELabColorConverterTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.color; import com.twelvemonkeys.imageio.color.CIELabColorConverter.Illuminant; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/ColorSpacesTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/ColorSpacesTest.java index 87d18f8f..412bdb6f 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/ColorSpacesTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/ColorSpacesTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.color; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModelTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModelTest.java index 72d42186..875e8844 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModelTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModelTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.color; import org.hamcrest.CoreMatchers; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/KCMSSanitizerStrategyTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/KCMSSanitizerStrategyTest.java index cfcd8932..e5012a34 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/KCMSSanitizerStrategyTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/KCMSSanitizerStrategyTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.color; import org.junit.Test; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/LCMSSanitizerStrategyTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/LCMSSanitizerStrategyTest.java index ed7e9e5a..d7b63ea2 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/LCMSSanitizerStrategyTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/LCMSSanitizerStrategyTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.color; import org.junit.Test; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/UInt32ColorModelTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/UInt32ColorModelTest.java index 81ea76d6..96bbba41 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/UInt32ColorModelTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/color/UInt32ColorModelTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2014, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.color; import org.junit.Test; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTestCase.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTest.java similarity index 62% rename from imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTestCase.java rename to imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTest.java index 35fb902a..92350b29 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTestCase.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTest.java @@ -1,21 +1,55 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.spi; -import junit.framework.TestCase; +import org.junit.Test; import java.net.URL; +import static org.junit.Assert.*; + /** - * ProviderInfoTestCase + * ProviderInfoTest * * @author Harald Kuhr * @author last modified by $Author: haraldk$ - * @version $Id: ProviderInfoTestCase.java,v 1.0 Oct 31, 2009 3:51:22 PM haraldk Exp$ + * @version $Id: ProviderInfoTest.java,v 1.0 Oct 31, 2009 3:51:22 PM haraldk Exp$ */ -public class ProviderInfoTestCase extends TestCase { +public class ProviderInfoTest { + @Test public void testCreateNorma() { new ProviderInfo(Package.getPackage("java.util")); } + @Test public void testCreateNullPackage() { try { new ProviderInfo(null); @@ -26,6 +60,7 @@ public class ProviderInfoTestCase extends TestCase { } } + @Test public void testGetVendorUnknownNonJARPackage() { ProviderInfo info = new ProviderInfo(mockNonJARPackage("org.foo")); @@ -38,6 +73,7 @@ public class ProviderInfoTestCase extends TestCase { assertEquals("Unspecified", version); } + @Test public void testGetVendorNonJARTMPackage() { ProviderInfo info = new ProviderInfo(mockNonJARPackage("com.twelvemonkeys")); @@ -50,6 +86,7 @@ public class ProviderInfoTestCase extends TestCase { assertEquals("DEV", version); } + @Test public void testGetVendorKnownJARPackage() { ProviderInfo info = new ProviderInfo(mockJARPackage("com.acme", "1.7u4-BETA-b39", "Acme")); diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ReaderWriterProviderInfoTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ReaderWriterProviderInfoTest.java index af0df7ed..48562391 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ReaderWriterProviderInfoTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ReaderWriterProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.spi; import org.hamcrest.Description; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/BufferedImageInputStreamTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/BufferedImageInputStreamTest.java index 8bbf9b36..da0acc1a 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/BufferedImageInputStreamTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/BufferedImageInputStreamTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.stream; import com.twelvemonkeys.io.ole2.CompoundDocument; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamTest.java index ff4e2f03..35a3d677 100755 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/ByteArrayImageInputStreamTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.stream; import org.junit.Test; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/SubImageInputStreamTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/SubImageInputStreamTest.java index fc7ab1ec..6d7537e7 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/SubImageInputStreamTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/stream/SubImageInputStreamTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.stream; import org.junit.Test; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOInputStreamAdapterTestCase.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOInputStreamAdapterTest.java similarity index 96% rename from imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOInputStreamAdapterTestCase.java rename to imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOInputStreamAdapterTest.java index bb725a5f..83efb105 100755 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOInputStreamAdapterTestCase.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOInputStreamAdapterTest.java @@ -28,7 +28,7 @@ package com.twelvemonkeys.imageio.util; -import com.twelvemonkeys.io.InputStreamAbstractTestCase; +import com.twelvemonkeys.io.InputStreamAbstractTest; import org.junit.Test; import javax.imageio.stream.MemoryCacheImageInputStream; @@ -36,7 +36,8 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; /** * IIOInputStreamAdapter @@ -45,7 +46,7 @@ import static org.junit.Assert.*; * @author last modified by $Author: haraldk$ * @version $Id: IIOInputStreamAdapter.java,v 1.0 Apr 11, 2008 1:04:42 PM haraldk Exp$ */ -public class IIOInputStreamAdapterTestCase extends InputStreamAbstractTestCase { +public class IIOInputStreamAdapterTest extends InputStreamAbstractTest { protected InputStream makeInputStream(byte[] pBytes) { return new IIOInputStreamAdapter(new MemoryCacheImageInputStream(new ByteArrayInputStream(pBytes)), pBytes.length); diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOOutputStreamAdapterTestCase.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOOutputStreamAdapterTest.java similarity index 95% rename from imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOOutputStreamAdapterTestCase.java rename to imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOOutputStreamAdapterTest.java index 0fdcf9a4..f14630af 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOOutputStreamAdapterTestCase.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOOutputStreamAdapterTest.java @@ -28,7 +28,7 @@ package com.twelvemonkeys.imageio.util; -import com.twelvemonkeys.io.OutputStreamAbstractTestCase; +import com.twelvemonkeys.io.OutputStreamAbstractTest; import org.junit.Test; import javax.imageio.stream.MemoryCacheImageOutputStream; @@ -36,7 +36,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; /** * IIOOutputStreamAdapterTestCase @@ -45,7 +45,7 @@ import static org.junit.Assert.*; * @author last modified by $Author: haraldk$ * @version $Id: IIOOutputStreamAdapterTestCase.java,v 1.0 30.11.11 12:21 haraldk Exp$ */ -public class IIOOutputStreamAdapterTestCase extends OutputStreamAbstractTestCase { +public class IIOOutputStreamAdapterTest extends OutputStreamAbstractTest { @Override protected OutputStream makeObject() { return new IIOOutputStreamAdapter(new MemoryCacheImageOutputStream(new ByteArrayOutputStream())); diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageWriterAbstractTestCase.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageWriterAbstractTest.java similarity index 96% rename from imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageWriterAbstractTestCase.java rename to imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageWriterAbstractTest.java index 15f9a31d..9d91a5de 100755 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageWriterAbstractTestCase.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageWriterAbstractTest.java @@ -1,364 +1,364 @@ -/* - * Copyright (c) 2008, Harald Kuhr - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package com.twelvemonkeys.imageio.util; - -import com.twelvemonkeys.imageio.stream.URLImageInputStreamSpi; -import org.junit.Test; -import org.mockito.InOrder; - -import javax.imageio.ImageIO; -import javax.imageio.ImageWriteParam; -import javax.imageio.ImageWriter; -import javax.imageio.event.IIOWriteProgressListener; -import javax.imageio.spi.IIORegistry; -import javax.imageio.stream.ImageOutputStream; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.awt.image.RenderedImage; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.net.URL; -import java.util.List; - -import static org.junit.Assert.*; -import static org.mockito.Matchers.anyInt; -import static org.mockito.Mockito.*; - -/** - * ImageReaderAbstractTestCase class description. - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: ImageReaderAbstractTestCase.java,v 1.0 18.nov.2004 17:38:33 haku Exp $ - */ -public abstract class ImageWriterAbstractTestCase { - - // TODO: Move static block + getClassLoaderResource to common superclass for reader/writer test cases or delegate. - - static { - IIORegistry.getDefaultInstance().registerServiceProvider(new URLImageInputStreamSpi()); - ImageIO.setUseCache(false); - } - - protected abstract ImageWriter createImageWriter(); - - protected abstract List getTestData(); - - protected static BufferedImage drawSomething(final BufferedImage image) { - Graphics2D g = image.createGraphics(); - try { - int width = image.getWidth(); - int height = image.getHeight(); - - g.clearRect(0, 0, width, height); - g.setPaint(new LinearGradientPaint(0, 0, width, 0, new float[] {0.2f, 1}, new Color[] {new Color(0x0, true), Color.BLUE})); - g.fillRect(0, 0, width, height); - g.setPaint(new LinearGradientPaint(0, 0, 0, height, new float[] {0.2f, 1}, new Color[] {new Color(0x0, true), Color.RED})); - g.fillRect(0, 0, width, height); - g.setPaint(new LinearGradientPaint(0, 0, 0, height, new float[] {0, 1}, new Color[] {new Color(0x00ffffff, true), Color.WHITE})); - g.fill(new Polygon(new int[] {0, width, width}, new int[] {0, height, 0}, 3)); - } - finally { - g.dispose(); - } - - return image; - } - - protected final RenderedImage getTestData(final int index) { - return getTestData().get(index); - } - - protected URL getClassLoaderResource(final String pName) { - return getClass().getResource(pName); - } - - @Test - public void testSetOutput() throws IOException { - // Should just pass with no exceptions - ImageWriter writer = createImageWriter(); - assertNotNull(writer); - writer.setOutput(ImageIO.createImageOutputStream(new ByteArrayOutputStream())); - } - - @Test - public void testSetOutputNull() { - // Should just pass with no exceptions - ImageWriter writer = createImageWriter(); - assertNotNull(writer); - writer.setOutput(null); - } - - @Test - public void testWrite() throws IOException { - ImageWriter writer = createImageWriter(); - - for (RenderedImage testData : getTestData()) { - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - - try (ImageOutputStream stream = ImageIO.createImageOutputStream(buffer)) { - writer.setOutput(stream); - writer.write(drawSomething((BufferedImage) testData)); - } - catch (IOException e) { - fail(e.getMessage()); - } - - assertTrue("No image data written", buffer.size() > 0); - } - } - - @SuppressWarnings("ConstantConditions") - @Test - public void testWriteNull() throws IOException { - ImageWriter writer = createImageWriter(); - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - writer.setOutput(ImageIO.createImageOutputStream(buffer)); - - try { - writer.write((RenderedImage) null); - } - catch(IllegalArgumentException ignore) { - } - catch (IOException e) { - fail(e.getMessage()); - } - - assertTrue("Image data written", buffer.size() == 0); - } - - @Test(expected = IllegalStateException.class) - public void testWriteNoOutput() { - ImageWriter writer = createImageWriter(); - - try { - writer.write(getTestData(0)); - } - catch (IOException e) { - fail(e.getMessage()); - } - } - - @Test - public void testGetDefaultWriteParam() { - ImageWriter writer = createImageWriter(); - ImageWriteParam param = writer.getDefaultWriteParam(); - assertNotNull("Default ImageWriteParam is null", param); - } - - // TODO: Test writing with params - // TODO: Source region and subsampling at least - - @Test - public void testAddIIOWriteProgressListener() { - ImageWriter writer = createImageWriter(); - writer.addIIOWriteProgressListener(mock(IIOWriteProgressListener.class)); - } - - @Test - public void testAddIIOWriteProgressListenerNull() { - ImageWriter writer = createImageWriter(); - writer.addIIOWriteProgressListener(null); - } - - @Test - public void testAddIIOWriteProgressListenerCallbacks() throws IOException { - ImageWriter writer = createImageWriter(); - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - writer.setOutput(ImageIO.createImageOutputStream(buffer)); - - IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); - writer.addIIOWriteProgressListener(listener); - - try { - writer.write(getTestData(0)); - } - catch (IOException e) { - fail("Could not write image"); - } - - // At least imageStarted and imageComplete, plus any number of imageProgress - InOrder ordered = inOrder(listener); - ordered.verify(listener).imageStarted(writer, 0); - ordered.verify(listener, atLeastOnce()).imageProgress(eq(writer), anyInt()); - ordered.verify(listener).imageComplete(writer); - } - - @Test - public void testMultipleAddIIOWriteProgressListenerCallbacks() throws IOException { - ImageWriter writer = createImageWriter(); - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - writer.setOutput(ImageIO.createImageOutputStream(buffer)); - - IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); - IIOWriteProgressListener listenerToo = mock(IIOWriteProgressListener.class); - IIOWriteProgressListener listenerThree = mock(IIOWriteProgressListener.class); - - writer.addIIOWriteProgressListener(listener); - writer.addIIOWriteProgressListener(listenerToo); - writer.addIIOWriteProgressListener(listenerThree); - - try { - writer.write(getTestData(0)); - } - catch (IOException e) { - fail("Could not write image"); - } - - // At least imageStarted and imageComplete, plus any number of imageProgress - InOrder ordered = inOrder(listener, listenerToo, listenerThree); - - ordered.verify(listener).imageStarted(writer, 0); - ordered.verify(listenerToo).imageStarted(writer, 0); - ordered.verify(listenerThree).imageStarted(writer, 0); - - ordered.verify(listener, atLeastOnce()).imageProgress(eq(writer), anyInt()); - ordered.verify(listenerToo, atLeastOnce()).imageProgress(eq(writer), anyInt()); - ordered.verify(listenerThree, atLeastOnce()).imageProgress(eq(writer), anyInt()); - - ordered.verify(listener).imageComplete(writer); - ordered.verify(listenerToo).imageComplete(writer); - ordered.verify(listenerThree).imageComplete(writer); - } - - @Test - public void testRemoveIIOWriteProgressListenerNull() { - ImageWriter writer = createImageWriter(); - writer.removeIIOWriteProgressListener(null); - } - - @Test - public void testRemoveIIOWriteProgressListenerNone() { - ImageWriter writer = createImageWriter(); - writer.removeIIOWriteProgressListener(mock(IIOWriteProgressListener.class)); - } - - @Test - public void testRemoveIIOWriteProgressListener() throws IOException { - ImageWriter writer = createImageWriter(); - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - writer.setOutput(ImageIO.createImageOutputStream(buffer)); - - IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); - writer.addIIOWriteProgressListener(listener); - writer.removeIIOWriteProgressListener(listener); - - try { - writer.write(getTestData(0)); - } - catch (IOException e) { - fail("Could not write image"); - } - - // Should not have called any methods... - verifyZeroInteractions(listener); - } - - @Test - public void testRemoveIIOWriteProgressListenerMultiple() throws IOException { - ImageWriter writer = createImageWriter(); - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - writer.setOutput(ImageIO.createImageOutputStream(buffer)); - - IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); - writer.addIIOWriteProgressListener(listener); - - IIOWriteProgressListener listenerToo = mock(IIOWriteProgressListener.class); - writer.addIIOWriteProgressListener(listenerToo); - - writer.removeIIOWriteProgressListener(listener); - - try { - writer.write(getTestData(0)); - } - catch (IOException e) { - fail("Could not write image"); - } - - // Should not have called any methods... - verifyZeroInteractions(listener); - - // At least imageStarted and imageComplete, plus any number of imageProgress - InOrder ordered = inOrder(listenerToo); - ordered.verify(listenerToo).imageStarted(writer, 0); - ordered.verify(listenerToo, atLeastOnce()).imageProgress(eq(writer), anyInt()); - ordered.verify(listenerToo).imageComplete(writer); - - } - - @Test - public void testRemoveAllIIOWriteProgressListeners() throws IOException { - ImageWriter writer = createImageWriter(); - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - writer.setOutput(ImageIO.createImageOutputStream(buffer)); - - - IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); - writer.addIIOWriteProgressListener(listener); - - writer.removeAllIIOWriteProgressListeners(); - - try { - writer.write(getTestData(0)); - } - catch (IOException e) { - fail("Could not write image"); - } - - // Should not have called any methods... - verifyZeroInteractions(listener); - } - - @Test - public void testRemoveAllIIOWriteProgressListenersMultiple() throws IOException { - ImageWriter writer = createImageWriter(); - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - writer.setOutput(ImageIO.createImageOutputStream(buffer)); - - - IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); - writer.addIIOWriteProgressListener(listener); - - IIOWriteProgressListener listenerToo = mock(IIOWriteProgressListener.class); - writer.addIIOWriteProgressListener(listenerToo); - - writer.removeAllIIOWriteProgressListeners(); - - try { - writer.write(getTestData(0)); - } - catch (IOException e) { - fail("Could not write image"); - } - - // Should not have called any methods... - verifyZeroInteractions(listener); - verifyZeroInteractions(listenerToo); - } +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name "TwelveMonkeys" nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.util; + +import com.twelvemonkeys.imageio.stream.URLImageInputStreamSpi; +import org.junit.Test; +import org.mockito.InOrder; + +import javax.imageio.ImageIO; +import javax.imageio.ImageWriteParam; +import javax.imageio.ImageWriter; +import javax.imageio.event.IIOWriteProgressListener; +import javax.imageio.spi.IIORegistry; +import javax.imageio.stream.ImageOutputStream; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.awt.image.RenderedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.net.URL; +import java.util.List; + +import static org.junit.Assert.*; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Mockito.*; + +/** + * ImageReaderAbstractTestCase class description. + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: ImageReaderAbstractTestCase.java,v 1.0 18.nov.2004 17:38:33 haku Exp $ + */ +public abstract class ImageWriterAbstractTest { + + // TODO: Move static block + getClassLoaderResource to common superclass for reader/writer test cases or delegate. + + static { + IIORegistry.getDefaultInstance().registerServiceProvider(new URLImageInputStreamSpi()); + ImageIO.setUseCache(false); + } + + protected abstract ImageWriter createImageWriter(); + + protected abstract List getTestData(); + + protected static BufferedImage drawSomething(final BufferedImage image) { + Graphics2D g = image.createGraphics(); + try { + int width = image.getWidth(); + int height = image.getHeight(); + + g.clearRect(0, 0, width, height); + g.setPaint(new LinearGradientPaint(0, 0, width, 0, new float[] {0.2f, 1}, new Color[] {new Color(0x0, true), Color.BLUE})); + g.fillRect(0, 0, width, height); + g.setPaint(new LinearGradientPaint(0, 0, 0, height, new float[] {0.2f, 1}, new Color[] {new Color(0x0, true), Color.RED})); + g.fillRect(0, 0, width, height); + g.setPaint(new LinearGradientPaint(0, 0, 0, height, new float[] {0, 1}, new Color[] {new Color(0x00ffffff, true), Color.WHITE})); + g.fill(new Polygon(new int[] {0, width, width}, new int[] {0, height, 0}, 3)); + } + finally { + g.dispose(); + } + + return image; + } + + protected final RenderedImage getTestData(final int index) { + return getTestData().get(index); + } + + protected URL getClassLoaderResource(final String pName) { + return getClass().getResource(pName); + } + + @Test + public void testSetOutput() throws IOException { + // Should just pass with no exceptions + ImageWriter writer = createImageWriter(); + assertNotNull(writer); + writer.setOutput(ImageIO.createImageOutputStream(new ByteArrayOutputStream())); + } + + @Test + public void testSetOutputNull() { + // Should just pass with no exceptions + ImageWriter writer = createImageWriter(); + assertNotNull(writer); + writer.setOutput(null); + } + + @Test + public void testWrite() throws IOException { + ImageWriter writer = createImageWriter(); + + for (RenderedImage testData : getTestData()) { + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + + try (ImageOutputStream stream = ImageIO.createImageOutputStream(buffer)) { + writer.setOutput(stream); + writer.write(drawSomething((BufferedImage) testData)); + } + catch (IOException e) { + fail(e.getMessage()); + } + + assertTrue("No image data written", buffer.size() > 0); + } + } + + @SuppressWarnings("ConstantConditions") + @Test + public void testWriteNull() throws IOException { + ImageWriter writer = createImageWriter(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + writer.setOutput(ImageIO.createImageOutputStream(buffer)); + + try { + writer.write((RenderedImage) null); + } + catch(IllegalArgumentException ignore) { + } + catch (IOException e) { + fail(e.getMessage()); + } + + assertTrue("Image data written", buffer.size() == 0); + } + + @Test(expected = IllegalStateException.class) + public void testWriteNoOutput() { + ImageWriter writer = createImageWriter(); + + try { + writer.write(getTestData(0)); + } + catch (IOException e) { + fail(e.getMessage()); + } + } + + @Test + public void testGetDefaultWriteParam() { + ImageWriter writer = createImageWriter(); + ImageWriteParam param = writer.getDefaultWriteParam(); + assertNotNull("Default ImageWriteParam is null", param); + } + + // TODO: Test writing with params + // TODO: Source region and subsampling at least + + @Test + public void testAddIIOWriteProgressListener() { + ImageWriter writer = createImageWriter(); + writer.addIIOWriteProgressListener(mock(IIOWriteProgressListener.class)); + } + + @Test + public void testAddIIOWriteProgressListenerNull() { + ImageWriter writer = createImageWriter(); + writer.addIIOWriteProgressListener(null); + } + + @Test + public void testAddIIOWriteProgressListenerCallbacks() throws IOException { + ImageWriter writer = createImageWriter(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + writer.setOutput(ImageIO.createImageOutputStream(buffer)); + + IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); + writer.addIIOWriteProgressListener(listener); + + try { + writer.write(getTestData(0)); + } + catch (IOException e) { + fail("Could not write image"); + } + + // At least imageStarted and imageComplete, plus any number of imageProgress + InOrder ordered = inOrder(listener); + ordered.verify(listener).imageStarted(writer, 0); + ordered.verify(listener, atLeastOnce()).imageProgress(eq(writer), anyInt()); + ordered.verify(listener).imageComplete(writer); + } + + @Test + public void testMultipleAddIIOWriteProgressListenerCallbacks() throws IOException { + ImageWriter writer = createImageWriter(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + writer.setOutput(ImageIO.createImageOutputStream(buffer)); + + IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); + IIOWriteProgressListener listenerToo = mock(IIOWriteProgressListener.class); + IIOWriteProgressListener listenerThree = mock(IIOWriteProgressListener.class); + + writer.addIIOWriteProgressListener(listener); + writer.addIIOWriteProgressListener(listenerToo); + writer.addIIOWriteProgressListener(listenerThree); + + try { + writer.write(getTestData(0)); + } + catch (IOException e) { + fail("Could not write image"); + } + + // At least imageStarted and imageComplete, plus any number of imageProgress + InOrder ordered = inOrder(listener, listenerToo, listenerThree); + + ordered.verify(listener).imageStarted(writer, 0); + ordered.verify(listenerToo).imageStarted(writer, 0); + ordered.verify(listenerThree).imageStarted(writer, 0); + + ordered.verify(listener, atLeastOnce()).imageProgress(eq(writer), anyInt()); + ordered.verify(listenerToo, atLeastOnce()).imageProgress(eq(writer), anyInt()); + ordered.verify(listenerThree, atLeastOnce()).imageProgress(eq(writer), anyInt()); + + ordered.verify(listener).imageComplete(writer); + ordered.verify(listenerToo).imageComplete(writer); + ordered.verify(listenerThree).imageComplete(writer); + } + + @Test + public void testRemoveIIOWriteProgressListenerNull() { + ImageWriter writer = createImageWriter(); + writer.removeIIOWriteProgressListener(null); + } + + @Test + public void testRemoveIIOWriteProgressListenerNone() { + ImageWriter writer = createImageWriter(); + writer.removeIIOWriteProgressListener(mock(IIOWriteProgressListener.class)); + } + + @Test + public void testRemoveIIOWriteProgressListener() throws IOException { + ImageWriter writer = createImageWriter(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + writer.setOutput(ImageIO.createImageOutputStream(buffer)); + + IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); + writer.addIIOWriteProgressListener(listener); + writer.removeIIOWriteProgressListener(listener); + + try { + writer.write(getTestData(0)); + } + catch (IOException e) { + fail("Could not write image"); + } + + // Should not have called any methods... + verifyZeroInteractions(listener); + } + + @Test + public void testRemoveIIOWriteProgressListenerMultiple() throws IOException { + ImageWriter writer = createImageWriter(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + writer.setOutput(ImageIO.createImageOutputStream(buffer)); + + IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); + writer.addIIOWriteProgressListener(listener); + + IIOWriteProgressListener listenerToo = mock(IIOWriteProgressListener.class); + writer.addIIOWriteProgressListener(listenerToo); + + writer.removeIIOWriteProgressListener(listener); + + try { + writer.write(getTestData(0)); + } + catch (IOException e) { + fail("Could not write image"); + } + + // Should not have called any methods... + verifyZeroInteractions(listener); + + // At least imageStarted and imageComplete, plus any number of imageProgress + InOrder ordered = inOrder(listenerToo); + ordered.verify(listenerToo).imageStarted(writer, 0); + ordered.verify(listenerToo, atLeastOnce()).imageProgress(eq(writer), anyInt()); + ordered.verify(listenerToo).imageComplete(writer); + + } + + @Test + public void testRemoveAllIIOWriteProgressListeners() throws IOException { + ImageWriter writer = createImageWriter(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + writer.setOutput(ImageIO.createImageOutputStream(buffer)); + + + IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); + writer.addIIOWriteProgressListener(listener); + + writer.removeAllIIOWriteProgressListeners(); + + try { + writer.write(getTestData(0)); + } + catch (IOException e) { + fail("Could not write image"); + } + + // Should not have called any methods... + verifyZeroInteractions(listener); + } + + @Test + public void testRemoveAllIIOWriteProgressListenersMultiple() throws IOException { + ImageWriter writer = createImageWriter(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + writer.setOutput(ImageIO.createImageOutputStream(buffer)); + + + IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class); + writer.addIIOWriteProgressListener(listener); + + IIOWriteProgressListener listenerToo = mock(IIOWriteProgressListener.class); + writer.addIIOWriteProgressListener(listenerToo); + + writer.removeAllIIOWriteProgressListeners(); + + try { + writer.write(getTestData(0)); + } + catch (IOException e) { + fail("Could not write image"); + } + + // Should not have called any methods... + verifyZeroInteractions(listener); + verifyZeroInteractions(listenerToo); + } } \ No newline at end of file diff --git a/imageio/imageio-hdr/license.txt b/imageio/imageio-hdr/license.txt new file mode 100755 index 00000000..7c7e386c --- /dev/null +++ b/imageio/imageio-hdr/license.txt @@ -0,0 +1,27 @@ +Copyright (c) 2015, Harald Kuhr +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDR.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDR.java index 170b8da0..0371bb5d 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDR.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDR.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.hdr; diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRHeader.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRHeader.java index 7ce3ffa3..0c66d9d1 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRHeader.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRHeader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.hdr; diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReadParam.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReadParam.java index 32490da5..d1dd5d5c 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReadParam.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReadParam.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.hdr; diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReader.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReader.java index e24fb5fc..b1af2080 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReader.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.hdr; diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderSpi.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderSpi.java index 380313be..dc9fbabb 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderSpi.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.hdr; diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java index cd5422eb..b783c68f 100755 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRMetadata.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.hdr; diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfo.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfo.java index a11a215f..226bc4e1 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfo.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.hdr; @@ -38,7 +40,7 @@ import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; * @version $Id: HDRProviderInfo.java,v 1.0 27/07/15 harald.kuhr Exp$ */ final class HDRProviderInfo extends ReaderWriterProviderInfo { - protected HDRProviderInfo() { + HDRProviderInfo() { super( HDRProviderInfo.class, new String[] {"HDR", "hdr", "RGBE", "rgbe"}, diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/DefaultToneMapper.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/DefaultToneMapper.java index 1a211886..964bbf17 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/DefaultToneMapper.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/DefaultToneMapper.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.hdr.tonemap; diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/GammaToneMapper.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/GammaToneMapper.java index 285b6955..b1a05ead 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/GammaToneMapper.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/GammaToneMapper.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.hdr.tonemap; diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/NullToneMapper.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/NullToneMapper.java index 33de6478..a164167a 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/NullToneMapper.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/NullToneMapper.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.hdr.tonemap; diff --git a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/ToneMapper.java b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/ToneMapper.java index 37d8f222..840a6b7e 100644 --- a/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/ToneMapper.java +++ b/imageio/imageio-hdr/src/main/java/com/twelvemonkeys/imageio/plugins/hdr/tonemap/ToneMapper.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.hdr.tonemap; diff --git a/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderTest.java b/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderTest.java index 7baae6be..8720973b 100755 --- a/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderTest.java +++ b/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRImageReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.hdr; diff --git a/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfoTest.java b/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfoTest.java index 153f3b45..684291c0 100644 --- a/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfoTest.java +++ b/imageio/imageio-hdr/src/test/java/com/twelvemonkeys/imageio/plugins/hdr/HDRProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.hdr; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-icns/license.txt b/imageio/imageio-icns/license.txt new file mode 100755 index 00000000..74dd72ca --- /dev/null +++ b/imageio/imageio-icns/license.txt @@ -0,0 +1,27 @@ +Copyright (c) 2011, Harald Kuhr +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS.java index 723d7a51..89af08f5 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.icns; diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS1BitColorModel.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS1BitColorModel.java index 12a42ff4..05af872d 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS1BitColorModel.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS1BitColorModel.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.icns; diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS4BitColorModel.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS4BitColorModel.java index 10a90f18..362cb8d8 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS4BitColorModel.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS4BitColorModel.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.icns; diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS8BitColorModel.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS8BitColorModel.java index 19d12f86..c23f92dd 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS8BitColorModel.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS8BitColorModel.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.icns; diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReader.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReader.java index 719a51e5..a4476dc5 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReader.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.icns; diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReaderSpi.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReaderSpi.java index d128b0b8..70f981e7 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReaderSpi.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.icns; diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfo.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfo.java index 59cb4e9e..153257ef 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfo.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.icns; diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSUtil.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSUtil.java index 71fb6b06..33fc546e 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSUtil.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.icns; diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/IconResource.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/IconResource.java index 8eb05ef2..bde54b32 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/IconResource.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/IconResource.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.icns; diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/SipsJP2Reader.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/SipsJP2Reader.java index ba1704e6..9b1fb949 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/SipsJP2Reader.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/SipsJP2Reader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.icns; diff --git a/imageio/imageio-icns/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi b/imageio/imageio-icns/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi index 8e2e73e4..c5bd0d3a 100644 --- a/imageio/imageio-icns/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi +++ b/imageio/imageio-icns/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi @@ -1,28 +1 @@ -# -# Copyright (c) 2011, Harald Kuhr -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name "TwelveMonkeys" nor the -# names of its contributors may be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# com.twelvemonkeys.imageio.plugins.icns.ICNSImageReaderSpi \ No newline at end of file diff --git a/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReaderTest.java b/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReaderTest.java index 84131b60..4d162888 100644 --- a/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReaderTest.java +++ b/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.icns; diff --git a/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfoTest.java b/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfoTest.java index c5772ae6..d6a065d4 100644 --- a/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfoTest.java +++ b/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2011, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.icns; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-iff/license.txt b/imageio/imageio-iff/license.txt index 2d8ee79c..5ae89322 100755 --- a/imageio/imageio-iff/license.txt +++ b/imageio/imageio-iff/license.txt @@ -4,22 +4,24 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/AbstractMultipaletteChunk.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/AbstractMultiPaletteChunk.java similarity index 76% rename from imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/AbstractMultipaletteChunk.java rename to imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/AbstractMultiPaletteChunk.java index 372589c0..291dd35b 100644 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/AbstractMultipaletteChunk.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/AbstractMultiPaletteChunk.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Parts of this code is based on ilbmtoppm.c diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/BMHDChunk.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/BMHDChunk.java index a784699f..f5a62d87 100755 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/BMHDChunk.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/BMHDChunk.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/BODYChunk.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/BODYChunk.java index 42a5bbf7..66884eef 100755 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/BODYChunk.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/BODYChunk.java @@ -4,33 +4,35 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; import java.io.DataInput; -import java.io.IOException; import java.io.DataOutput; +import java.io.IOException; /** * BODYChunk diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/CAMGChunk.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/CAMGChunk.java index a2e6818f..d61ff5a8 100755 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/CAMGChunk.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/CAMGChunk.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/CMAPChunk.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/CMAPChunk.java index b1546149..baed7ea3 100755 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/CMAPChunk.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/CMAPChunk.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/CTBLChunk.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/CTBLChunk.java index 6062518f..6e458cd6 100644 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/CTBLChunk.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/CTBLChunk.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/GRABChunk.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/GRABChunk.java index bf69b27b..c5b28d7f 100755 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/GRABChunk.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/GRABChunk.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/GenericChunk.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/GenericChunk.java index 78b5f3a1..caaf4b8b 100755 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/GenericChunk.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/GenericChunk.java @@ -4,33 +4,35 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; import java.io.DataInput; -import java.io.IOException; import java.io.DataOutput; +import java.io.IOException; /** * UnknownChunk diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFF.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFF.java index c9185d79..2b3e31b5 100755 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFF.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFF.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFChunk.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFChunk.java index 1c6b3982..43b22051 100755 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFChunk.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFChunk.java @@ -4,33 +4,35 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; import java.io.DataInput; -import java.io.IOException; import java.io.DataOutput; +import java.io.IOException; /** * IFFChunk diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReader.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReader.java index e545afcd..1485dbc0 100755 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReader.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderSpi.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderSpi.java index d2d445d1..ff776ac1 100755 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderSpi.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriter.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriter.java index d567113a..b48979e8 100755 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriter.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriterSpi.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriterSpi.java index 0355c768..fe63302c 100755 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriterSpi.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriterSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFProviderInfo.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFProviderInfo.java index 62f8cf89..92270714 100644 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFProviderInfo.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFUtil.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFUtil.java index 843d2eb9..2ce66ec1 100755 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFUtil.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/IFFUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Fast 90-degree bit rotation routines. diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/MultiPalette.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/MultiPalette.java new file mode 100644 index 00000000..ac7f3dae --- /dev/null +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/MultiPalette.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2012, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.iff; + +import java.awt.image.ColorModel; +import java.awt.image.IndexColorModel; + +/** + * MultiPalette + * + * @author Harald Kuhr + * @author last modified by $Author: haraldk$ + * @version $Id: MultiPalette.java,v 1.0 30.03.12 15:22 haraldk Exp$ + */ +interface MultiPalette { + ColorModel getColorModel(IndexColorModel colorModel, int rowIndex, boolean laced); +} diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/Multipalette.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/Multipalette.java deleted file mode 100644 index 6130b25c..00000000 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/Multipalette.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2012, Harald Kuhr - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package com.twelvemonkeys.imageio.plugins.iff; - -import java.awt.image.ColorModel; -import java.awt.image.IndexColorModel; - -/** - * MultiPalette - * - * @author Harald Kuhr - * @author last modified by $Author: haraldk$ - * @version $Id: MultiPalette.java,v 1.0 30.03.12 15:22 haraldk Exp$ - */ -interface MultiPalette { - ColorModel getColorModel(IndexColorModel colorModel, int rowIndex, boolean laced); -} diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/MutableIndexColorModel.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/MutableIndexColorModel.java index 4535b580..dc381aa9 100644 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/MutableIndexColorModel.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/MutableIndexColorModel.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Parts of this code is based on ilbmtoppm.c diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/PCHGChunk.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/PCHGChunk.java index 499e5690..51511882 100644 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/PCHGChunk.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/PCHGChunk.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Parts of this code is based on ilbmtoppm.c diff --git a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/SHAMChunk.java b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/SHAMChunk.java index 74b8805a..5fa3c9fb 100644 --- a/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/SHAMChunk.java +++ b/imageio/imageio-iff/src/main/java/com/twelvemonkeys/imageio/plugins/iff/SHAMChunk.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; diff --git a/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderTest.java b/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderTest.java index 90783b11..20c55d3c 100755 --- a/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderTest.java +++ b/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; diff --git a/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriterTest.java b/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriterTest.java index 1cff8e2e..b1a4623b 100644 --- a/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriterTest.java +++ b/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFImageWriterTest.java @@ -4,32 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.iff; import com.twelvemonkeys.image.MonochromeColorModel; -import com.twelvemonkeys.imageio.util.ImageWriterAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageWriterAbstractTest; import org.junit.Test; import javax.imageio.ImageIO; @@ -54,7 +56,7 @@ import static org.junit.Assert.*; * @author last modified by $Author: haraldk$ * @version $Id: JPEG2000ImageWriterTest.java,v 1.0 20.01.12 12:19 haraldk Exp$ */ -public class IFFImageWriterTest extends ImageWriterAbstractTestCase { +public class IFFImageWriterTest extends ImageWriterAbstractTest { private final IFFImageWriterSpi provider = new IFFImageWriterSpi(); @Override diff --git a/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFProviderInfoTest.java b/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFProviderInfoTest.java index ec666c9a..a5700e6a 100644 --- a/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFProviderInfoTest.java +++ b/imageio/imageio-iff/src/test/java/com/twelvemonkeys/imageio/plugins/iff/IFFProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.iff; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-jpeg/license.txt b/imageio/imageio-jpeg/license.txt index 53188f88..0e3d0c5d 100644 --- a/imageio/imageio-jpeg/license.txt +++ b/imageio/imageio-jpeg/license.txt @@ -6,22 +6,24 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/AdobeDCT.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/AdobeDCT.java index bae9d248..21960633 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/AdobeDCT.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/AdobeDCT.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Application.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Application.java index 586c91d8..206c7728 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Application.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Application.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Comment.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Comment.java index 50e9ea69..e6ecbda7 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Comment.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Comment.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/EXIFThumbnailReader.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/EXIFThumbnailReader.java index cd70f04c..c435e56b 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/EXIFThumbnailReader.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/EXIFThumbnailReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/FastCMYKToRGB.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/FastCMYKToRGB.java index 58a25744..81bfc974 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/FastCMYKToRGB.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/FastCMYKToRGB.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Frame.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Frame.java index d72dc5f3..96206fef 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Frame.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Frame.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/HuffmanTable.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/HuffmanTable.java index 2e079d74..de01a2cf 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/HuffmanTable.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/HuffmanTable.java @@ -6,26 +6,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/ICCProfile.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/ICCProfile.java index 28599d0e..e91679d4 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/ICCProfile.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/ICCProfile.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFIF.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFIF.java index 7dcd8d9f..7e97f63e 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFIF.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFIF.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFIFThumbnailReader.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFIFThumbnailReader.java index 14e71e46..20818057 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFIFThumbnailReader.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFIFThumbnailReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFXX.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFXX.java index 39a9ffb4..da2a8027 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFXX.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFXX.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFXXThumbnailReader.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFXXThumbnailReader.java index 92a0b844..d6d39316 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFXXThumbnailReader.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JFXXThumbnailReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGColorSpace.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGColorSpace.java index 157648fc..ff82b000 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGColorSpace.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGColorSpace.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10Metadata.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10Metadata.java index 2b8e49ae..c50e0aff 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10Metadata.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10Metadata.java @@ -1,3 +1,32 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ package com.twelvemonkeys.imageio.plugins.jpeg; import com.twelvemonkeys.imageio.AbstractMetadata; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleaner.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleaner.java index ac404c0f..d6ab49f0 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleaner.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleaner.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2013, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.jpeg; import com.twelvemonkeys.imageio.metadata.jpeg.JPEG; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java index c234a67a..8d0b0f20 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderSpi.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderSpi.java index 1b8e1c2b..7efc00c9 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderSpi.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriter.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriter.java index 8cc404cd..429862b9 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriter.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriterSpi.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriterSpi.java index 5c2d484b..653a0218 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriterSpi.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriterSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGLosslessDecoder.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGLosslessDecoder.java index 312f9b33..954349e9 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGLosslessDecoder.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGLosslessDecoder.java @@ -6,26 +6,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGLosslessDecoderWrapper.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGLosslessDecoderWrapper.java index 8c44f21c..07d7d7dd 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGLosslessDecoderWrapper.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGLosslessDecoderWrapper.java @@ -5,26 +5,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGProviderInfo.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGProviderInfo.java index 2d576197..084fd3a5 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGProviderInfo.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java index 9d7dfb84..d00c09d4 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentStreamWarningListener.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentStreamWarningListener.java index 9e11996e..7d533280 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentStreamWarningListener.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentStreamWarningListener.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2012, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.jpeg; /** diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/QuantizationTable.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/QuantizationTable.java index 6b3dacd9..67c14ba0 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/QuantizationTable.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/QuantizationTable.java @@ -6,26 +6,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/RestartInterval.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/RestartInterval.java index b4e73a2b..6d31a8e9 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/RestartInterval.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/RestartInterval.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Scan.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Scan.java index 0de93192..8f0ecc6a 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Scan.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Scan.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Segment.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Segment.java index 0a0d2b93..c371c7d5 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Segment.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Segment.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/ThumbnailReadProgressListener.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/ThumbnailReadProgressListener.java index 47fec3f4..35fe71d0 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/ThumbnailReadProgressListener.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/ThumbnailReadProgressListener.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/ThumbnailReader.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/ThumbnailReader.java index 784be814..4fe50160 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/ThumbnailReader.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/ThumbnailReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Unknown.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Unknown.java index 012eddfd..6b83f8c3 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Unknown.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Unknown.java @@ -1,29 +1,31 @@ /* - * Copyright (c) 2016, Harald Kuhr + * Copyright (c) 2012, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/AbstractThumbnailReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/AbstractThumbnailReaderTest.java index 9cd65353..c5f0b380 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/AbstractThumbnailReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/AbstractThumbnailReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/EXIFThumbnailReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/EXIFThumbnailReaderTest.java index e69fcb75..f997935d 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/EXIFThumbnailReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/EXIFThumbnailReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/FastCMYKToRGBTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/FastCMYKToRGBTest.java index 9f8bb46d..10aeb808 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/FastCMYKToRGBTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/FastCMYKToRGBTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JFIFThumbnailReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JFIFThumbnailReaderTest.java index 63408f69..6e780da2 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JFIFThumbnailReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JFIFThumbnailReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JFXXThumbnailReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JFXXThumbnailReaderTest.java index 007ad29b..d2396cfc 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JFXXThumbnailReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JFXXThumbnailReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleanerTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleanerTest.java index 081994e6..190074e2 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleanerTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleanerTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.jpeg; import com.twelvemonkeys.imageio.stream.URLImageInputStreamSpi; diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java index 08e7fe9f..e76d5b04 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriterTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriterTest.java index da363928..d902ccfd 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriterTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageWriterTest.java @@ -4,33 +4,35 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStream; import com.twelvemonkeys.imageio.util.IIOUtil; -import com.twelvemonkeys.imageio.util.ImageWriterAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageWriterAbstractTest; import org.junit.Test; import org.w3c.dom.NodeList; @@ -64,7 +66,7 @@ import static org.junit.Assert.assertNotNull; * @author last modified by $Author: haraldk$ * @version $Id: JPEGImageWriterTest.java,v 1.0 06.02.12 17:05 haraldk Exp$ */ -public class JPEGImageWriterTest extends ImageWriterAbstractTestCase { +public class JPEGImageWriterTest extends ImageWriterAbstractTest { private static final JPEGImageWriterSpi SPI = new JPEGImageWriterSpi(lookupDelegateProvider()); diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGProviderInfoTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGProviderInfoTest.java index 6885f09a..2ebc2a29 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGProviderInfoTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.jpeg; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStreamTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStreamTest.java index 18d9e870..fd043c78 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStreamTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStreamTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.jpeg; diff --git a/imageio/imageio-metadata/license.txt b/imageio/imageio-metadata/license.txt index f1d861fb..1a0d6691 100644 --- a/imageio/imageio-metadata/license.txt +++ b/imageio/imageio-metadata/license.txt @@ -4,22 +4,24 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/AbstractCompoundDirectory.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/AbstractCompoundDirectory.java index 6cd35e0b..f28ee69c 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/AbstractCompoundDirectory.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/AbstractCompoundDirectory.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/AbstractDirectory.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/AbstractDirectory.java index 2802ee63..9b65e504 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/AbstractDirectory.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/AbstractDirectory.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/AbstractEntry.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/AbstractEntry.java index 1b761e5a..b4045d34 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/AbstractEntry.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/AbstractEntry.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/CompoundDirectory.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/CompoundDirectory.java index 7bde3ae2..9f4bca8f 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/CompoundDirectory.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/CompoundDirectory.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/Directory.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/Directory.java index 8d08a89b..f5b5c1d5 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/Directory.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/Directory.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/Entry.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/Entry.java index be03f90c..2a04aed9 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/Entry.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/Entry.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/MetadataReader.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/MetadataReader.java index 2888a5f0..525d7f0a 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/MetadataReader.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/MetadataReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/MetadataWriter.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/MetadataWriter.java index 325fbdad..a80954a2 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/MetadataWriter.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/MetadataWriter.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.metadata; import javax.imageio.stream.ImageOutputStream; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIF.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIF.java index 7ad54e97..180f576b 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIF.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIF.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.exif; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReader.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReader.java index b3fafd0c..fb417e8b 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReader.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.exif; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java index ec1601b3..adb44b5d 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.exif; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/Rational.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/Rational.java index 52391289..97ea6f81 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/Rational.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/Rational.java @@ -4,32 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Adapted from sample code featured in - * "Intro to Programming in Java: An Interdisciplinary Approach" (Addison Wesley) - * by Robert Sedgewick and Kevin Wayne. Permission granted to redistribute under BSD license. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.exif; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java index 17b1c696..3a607fc8 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/TIFF.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.exif; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTC.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTC.java index adee2645..0bb074de 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTC.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTC.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.iptc; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCDirectory.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCDirectory.java index 54a644ca..9c4bf6fc 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCDirectory.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCDirectory.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.iptc; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCEntry.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCEntry.java index 956b6ac1..1480c00e 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCEntry.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCEntry.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.iptc; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCReader.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCReader.java index 34a8f1a5..592fd1e6 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCReader.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.iptc; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriter.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriter.java index 11904a7f..ae5ba2ca 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriter.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriter.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.metadata.iptc; import com.twelvemonkeys.imageio.metadata.Directory; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEG.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEG.java index 6eab1b50..e30a2828 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEG.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEG.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.jpeg; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGQuality.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGQuality.java index 623c0ef9..c00d0a03 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGQuality.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGQuality.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.jpeg; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegment.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegment.java index 229a7985..de4564d3 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegment.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegment.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.jpeg; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentUtil.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentUtil.java index 8bf362bb..8554c630 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentUtil.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.jpeg; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSD.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSD.java index 6e167e04..f9aeebe5 100755 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSD.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSD.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.psd; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDDirectory.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDDirectory.java index cd9af244..8df18eae 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDDirectory.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDDirectory.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.psd; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDEntry.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDEntry.java index f07a4453..874ef7f8 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDEntry.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDEntry.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.psd; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDReader.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDReader.java index c8ca0d8e..b20ace02 100755 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDReader.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/psd/PSDReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.psd; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/IFD.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/IFD.java index 6f7b2a09..ca83658a 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/IFD.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/IFD.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.tiff; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/Rational.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/Rational.java index 987253cc..ef63945b 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/Rational.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/Rational.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFF.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFF.java index 7c98b079..dd85dc88 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFF.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFF.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.tiff; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFDirectory.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFDirectory.java index 4de0379f..2d49f76f 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFDirectory.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFDirectory.java @@ -1,29 +1,31 @@ /* - * Copyright (c) 2009, Harald Kuhr + * Copyright (c) 2018, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.tiff; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFEntry.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFEntry.java index 0577c8a1..e54ddfb4 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFEntry.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFEntry.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.tiff; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReader.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReader.java index 12f5692e..b4c505b1 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReader.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.tiff; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFWriter.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFWriter.java index 57e686e4..2755b35e 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFWriter.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFWriter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.tiff; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/Unknown.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/Unknown.java index bb097d31..a4f1836c 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/Unknown.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/Unknown.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2010, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.metadata.tiff; /** diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/AbstractCompoundDirectoryTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/AbstractCompoundDirectoryTest.java index 23b783af..87618083 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/AbstractCompoundDirectoryTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/AbstractCompoundDirectoryTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/AbstractDirectoryTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/AbstractDirectoryTest.java index 64de19ea..d7674114 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/AbstractDirectoryTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/AbstractDirectoryTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/AbstractEntryTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/AbstractEntryTest.java index 08cff7dd..f2817b56 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/AbstractEntryTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/AbstractEntryTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/CompoundDirectoryAbstractTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/CompoundDirectoryAbstractTest.java index 1a58dba7..3e97e811 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/CompoundDirectoryAbstractTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/CompoundDirectoryAbstractTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; @@ -34,8 +36,8 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; -import static org.junit.Assert.*; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; /** * CompoundDirectoryTest diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/DirectoryAbstractTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/DirectoryAbstractTest.java index 44bac310..f0a92b59 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/DirectoryAbstractTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/DirectoryAbstractTest.java @@ -4,31 +4,33 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; -import com.twelvemonkeys.lang.ObjectAbstractTestCase; +import com.twelvemonkeys.lang.ObjectAbstractTest; import org.junit.Test; import java.util.*; @@ -42,7 +44,7 @@ import static org.junit.Assert.*; * @author last modified by $Author: haraldk$ * @version $Id: DirectoryTest.java,v 1.0 02.01.12 15:07 haraldk Exp$ */ -public abstract class DirectoryAbstractTest extends ObjectAbstractTestCase { +public abstract class DirectoryAbstractTest extends ObjectAbstractTest { @Override protected Object makeObject() { diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/EntryAbstractTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/EntryAbstractTest.java index c98a6546..8a6982c9 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/EntryAbstractTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/EntryAbstractTest.java @@ -4,31 +4,33 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; -import com.twelvemonkeys.lang.ObjectAbstractTestCase; +import com.twelvemonkeys.lang.ObjectAbstractTest; import org.junit.Test; import java.util.Arrays; @@ -42,7 +44,7 @@ import static org.junit.Assert.*; * @author last modified by $Author: haraldk$ * @version $Id: EntryTest.java,v 1.0 02.01.12 17:33 haraldk Exp$ */ -public abstract class EntryAbstractTest extends ObjectAbstractTestCase { +public abstract class EntryAbstractTest extends ObjectAbstractTest { @Override protected Object makeObject() { return createEntry(new Object()); diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataReaderAbstractTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataReaderAbstractTest.java index 24c36fa7..fbd11457 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataReaderAbstractTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataReaderAbstractTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataWriterAbstractTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataWriterAbstractTest.java index 845ebc97..0a9ef07a 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataWriterAbstractTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/MetadataWriterAbstractTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReaderTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReaderTest.java index b768abd8..64799db9 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReaderTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.exif; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriterTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriterTest.java index 5cf2085d..5e4fcc1d 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriterTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/EXIFWriterTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.exif; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/RationalTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/RationalTest.java index 9c319c4d..7d6e483d 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/RationalTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/exif/RationalTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.metadata.exif; import org.junit.Test; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCDirectoryTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCDirectoryTest.java index 4b7e82cc..dc6440ab 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCDirectoryTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCDirectoryTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.iptc; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCEntryTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCEntryTest.java index 860f422d..f9cb1ee1 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCEntryTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCEntryTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.iptc; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCReaderTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCReaderTest.java index 8a68fab3..fc34bdf2 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCReaderTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.iptc; @@ -36,7 +38,8 @@ import javax.imageio.ImageIO; import java.io.IOException; import java.io.InputStream; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; /** * IPTCReaderTest diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriterTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriterTest.java index e5f277db..9dbd2b64 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriterTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/iptc/IPTCWriterTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.metadata.iptc; import com.twelvemonkeys.imageio.metadata.Directory; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGQualityTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGQualityTest.java index 4648e2bc..b74583a2 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGQualityTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGQualityTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.jpeg; @@ -45,7 +47,8 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Collections; -import static org.junit.Assert.*; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; /** * JPEGQualityTest diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentTest.java index 42a9abe5..41d1cbf8 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentTest.java @@ -4,31 +4,33 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.jpeg; -import com.twelvemonkeys.lang.ObjectAbstractTestCase; +import com.twelvemonkeys.lang.ObjectAbstractTest; import org.junit.Test; import java.nio.charset.Charset; @@ -42,7 +44,7 @@ import static org.junit.Assert.assertEquals; * @author last modified by $Author: haraldk$ * @version $Id: JPEGSegmentTest.java,v 1.0 02.03.11 10.46 haraldk Exp$ */ -public class JPEGSegmentTest extends ObjectAbstractTestCase { +public class JPEGSegmentTest extends ObjectAbstractTest { @Test public void testCreate() { byte[] bytes = new byte[14]; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentUtilTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentUtilTest.java index 8d961e05..ac9b6983 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentUtilTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/jpeg/JPEGSegmentUtilTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.jpeg; @@ -44,7 +46,8 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; /** * JPEGSegmentUtilTest diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/psd/PSDDirectoryTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/psd/PSDDirectoryTest.java index 5cf4e846..a5f17fdb 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/psd/PSDDirectoryTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/psd/PSDDirectoryTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.psd; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/psd/PSDEntryTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/psd/PSDEntryTest.java index 50f9558f..eb240d52 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/psd/PSDEntryTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/psd/PSDEntryTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.psd; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/psd/PSDReaderTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/psd/PSDReaderTest.java index 288c7737..3040205d 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/psd/PSDReaderTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/psd/PSDReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.psd; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/IFDTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/IFDTest.java index e7fcf131..1ff40eaf 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/IFDTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/IFDTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.tiff; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/RationalTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/RationalTest.java index 9767a9f4..cc0ef4c1 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/RationalTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/RationalTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2012, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.metadata.tiff; import org.junit.Test; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFDirectoryTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFDirectoryTest.java index fad5355a..70555f18 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFDirectoryTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFDirectoryTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.tiff; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFEntryTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFEntryTest.java index 6e83d7e9..0745dde2 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFEntryTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFEntryTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.tiff; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReaderTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReaderTest.java index 66c8e1b8..5bc15465 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReaderTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.tiff; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFWriterTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFWriterTest.java index d017e4a6..5debc1c0 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFWriterTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFWriterTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.tiff; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/UnknownTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/UnknownTest.java index a700cc60..33ab2472 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/UnknownTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/UnknownTest.java @@ -4,31 +4,33 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.tiff; -import com.twelvemonkeys.lang.ObjectAbstractTestCase; +import com.twelvemonkeys.lang.ObjectAbstractTest; /** * UnknownTest @@ -37,7 +39,7 @@ import com.twelvemonkeys.lang.ObjectAbstractTestCase; * @author last modified by $Author: haraldk$ * @version $Id: UnknownTest.java,v 1.0 03.01.12 17:21 haraldk Exp$ */ -public class UnknownTest extends ObjectAbstractTestCase { +public class UnknownTest extends ObjectAbstractTest { @Override protected Object makeObject() { return new Unknown((short) 42, 77, (long) (Math.random() * (long) Integer.MAX_VALUE)); diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/RDFDescriptionTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/RDFDescriptionTest.java index c4adc532..3846a96b 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/RDFDescriptionTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/RDFDescriptionTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.xmp; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPDirectoryTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPDirectoryTest.java index 883c0550..73f0cffd 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPDirectoryTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPDirectoryTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.xmp; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPEntryTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPEntryTest.java index c656cc4b..f2ec4b7c 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPEntryTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPEntryTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.xmp; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPReaderTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPReaderTest.java index b66b2bd9..fc8a55dd 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPReaderTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.xmp; diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPScannerTestCase.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPScannerTest.java similarity index 74% rename from imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPScannerTestCase.java rename to imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPScannerTest.java index 450d4d8b..42ab9d5d 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPScannerTestCase.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/xmp/XMPScannerTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2012, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.metadata.xmp; import org.junit.Test; @@ -8,7 +38,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.Random; -import static org.junit.Assert.*; +import static org.junit.Assert.assertNotNull; /** * XMPScannerTestCase @@ -17,7 +47,7 @@ import static org.junit.Assert.*; * @author last modified by $Author: haraldk$ * @version $Id: XMPScannerTestCase.java,v 1.0 Nov 13, 2009 3:59:43 PM haraldk Exp$ */ -public class XMPScannerTestCase { +public class XMPScannerTest { static final String XMP = "" + "\n"+ diff --git a/imageio/imageio-pcx/license.txt b/imageio/imageio-pcx/license.txt index fe399516..e5f570e1 100755 --- a/imageio/imageio-pcx/license.txt +++ b/imageio/imageio-pcx/license.txt @@ -4,22 +4,24 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCX.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCX.java index c11843db..ba8e388b 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCX.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCX.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.dcx; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXHeader.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXHeader.java index 6b7c839d..82586257 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXHeader.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXHeader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.dcx; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReader.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReader.java index e2a41409..bedf2bba 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReader.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.dcx; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderSpi.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderSpi.java index d14b92fc..ec676d55 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderSpi.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.dcx; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXProviderInfo.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXProviderInfo.java index 434119e3..a1cf46a6 100644 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXProviderInfo.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/dcx/DCXProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.dcx; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/BitRotator.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/BitRotator.java index 3a2261ed..06fc17f1 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/BitRotator.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/BitRotator.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pcx; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/CGAColorModel.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/CGAColorModel.java index 0516560a..0358931d 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/CGAColorModel.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/CGAColorModel.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pcx; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCX.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCX.java index 05bdad03..9e8a1001 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCX.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCX.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pcx; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXHeader.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXHeader.java index fd74169d..79aa1115 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXHeader.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXHeader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pcx; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java index 93d619d7..1befd3f1 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pcx; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderSpi.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderSpi.java index 73a93bf5..f0f944fd 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderSpi.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pcx; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXMetadata.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXMetadata.java index 45e81fbe..cd5f6e20 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXMetadata.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXMetadata.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pcx; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXProviderInfo.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXProviderInfo.java index 8f734fda..9adf593b 100644 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXProviderInfo.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/PCXProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pcx; diff --git a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/RLEDecoder.java b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/RLEDecoder.java index 2c286e93..65bddb4e 100755 --- a/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/RLEDecoder.java +++ b/imageio/imageio-pcx/src/main/java/com/twelvemonkeys/imageio/plugins/pcx/RLEDecoder.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pcx; diff --git a/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderTest.java b/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderTest.java index cdc4f0d4..af3001e0 100755 --- a/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderTest.java +++ b/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/dcx/DCXImageReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.dcx; diff --git a/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/dcx/DCXProviderInfoTest.java b/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/dcx/DCXProviderInfoTest.java index 5e3893e7..6072e984 100644 --- a/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/dcx/DCXProviderInfoTest.java +++ b/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/dcx/DCXProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.dcx; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderTest.java b/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderTest.java index 794027a7..164c9144 100755 --- a/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderTest.java +++ b/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pcx; diff --git a/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXProviderInfoTest.java b/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXProviderInfoTest.java index d82951a0..344b7319 100644 --- a/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXProviderInfoTest.java +++ b/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.pcx; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-pdf/license.txt b/imageio/imageio-pdf/license.txt index 2d8ee79c..46479fb3 100755 --- a/imageio/imageio-pdf/license.txt +++ b/imageio/imageio-pdf/license.txt @@ -1,25 +1,27 @@ -Copyright (c) 2009, Harald Kuhr +Copyright (c) 2018, Harald Kuhr All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/imageio/imageio-pict/license.txt b/imageio/imageio-pict/license.txt index 30d47b8d..11c48e05 100755 --- a/imageio/imageio-pict/license.txt +++ b/imageio/imageio-pict/license.txt @@ -1,28 +1,30 @@ -Copyright (c) 2008, Harald Kuhr +Copyright (c) 2018, Harald Kuhr All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Parts of this software is based on JVG/JIS. diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/BitMap.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/BitMap.java index 20ad04fd..47b89435 100644 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/BitMap.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/BitMap.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.pict; /** diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/BitMapPattern.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/BitMapPattern.java index 4eb79f01..1f052d7b 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/BitMapPattern.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/BitMapPattern.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICT.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICT.java index 5038f791..c1ecafad 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICT.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICT.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReader.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReader.java index 90af9cff..277ae45b 100644 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReader.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReader.java @@ -1,31 +1,32 @@ /* -Copyright (c) 2008, Harald Kuhr -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * Parts of this software is based on JVG/JIS. See http://www.cs.hut.fi/~framling/JVG/index.html for more information. Redistribution under BSD authorized by Kary Främling: diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java index 2846a9ad..6576e9d2 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriter.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriter.java index 09b0747d..7691490f 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriter.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriter.java @@ -1,30 +1,32 @@ /* -Copyright (c) 2008, Harald Kuhr -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * Parts of this software is based on JVG/JIS. See http://www.cs.hut.fi/~framling/JVG/index.html for more information. diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterSpi.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterSpi.java index a5354889..5ec68dc6 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterSpi.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTProviderInfo.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTProviderInfo.java index 20b16eb2..3927e497 100644 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTProviderInfo.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTUtil.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTUtil.java index e69b17f1..cb80be0b 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTUtil.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PICTUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/Pattern.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/Pattern.java index 13ceeec1..5965f117 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/Pattern.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/Pattern.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PenState.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PenState.java index 83b456d9..6c7268b1 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PenState.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PenState.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PixMap.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PixMap.java index 43192ca8..f28e1fcc 100644 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PixMap.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PixMap.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.pict; /** diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PixMapPattern.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PixMapPattern.java index d84f0a45..a23fba24 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PixMapPattern.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/PixMapPattern.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QDTest.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QDTest.java index 425be0d3..86cf8c8b 100644 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QDTest.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QDTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; @@ -32,8 +34,8 @@ import com.twelvemonkeys.image.BufferedImageIcon; import com.twelvemonkeys.image.ImageUtil; import javax.swing.*; -import java.awt.image.BufferedImage; import java.awt.*; +import java.awt.image.BufferedImage; import java.lang.reflect.InvocationTargetException; /** diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTBMPDecompressor.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTBMPDecompressor.java index 0bdf6529..7d39b2ea 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTBMPDecompressor.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTBMPDecompressor.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTDecompressor.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTDecompressor.java index cc06ffd2..28b58aca 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTDecompressor.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTDecompressor.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTGenericDecompressor.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTGenericDecompressor.java index 74b71bbf..4e58c91c 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTGenericDecompressor.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTGenericDecompressor.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTRAWDecompressor.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTRAWDecompressor.java index 95d368f3..c585e12d 100644 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTRAWDecompressor.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QTRAWDecompressor.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickDraw.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickDraw.java index 63c7b151..438f3ad2 100644 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickDraw.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickDraw.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickDrawComposite.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickDrawComposite.java index dda83e90..d6762e1a 100644 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickDrawComposite.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickDrawComposite.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2018, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.pict; import java.awt.*; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickDrawContext.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickDrawContext.java index b9b80dd0..f80842dd 100644 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickDrawContext.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickDrawContext.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickTime.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickTime.java index 02991e0b..826f1ccb 100755 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickTime.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/QuickTime.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; @@ -48,7 +50,7 @@ import java.util.List; * @version $Id: QT.java,v 1.0 Feb 16, 2009 7:20:59 PM haraldk Exp$ */ final class QuickTime { - public static final String VENDOR_APPLE = "appl"; + static final String VENDOR_APPLE = "appl"; // TODO: Consider SPI for this in the future, however not very likely private static final List sDecompressors = Arrays.asList( diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/RGBColor.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/RGBColor.java index a5d1ade5..5fe65a39 100644 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/RGBColor.java +++ b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/RGBColor.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/TestPICTClippingApp.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/TestPICTClippingApp.java deleted file mode 100644 index d8326023..00000000 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/TestPICTClippingApp.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.twelvemonkeys.imageio.plugins.pict; - -import com.twelvemonkeys.image.BufferedImageIcon; -import com.twelvemonkeys.image.ImageUtil; -import com.twelvemonkeys.net.MIMEUtil; - -import javax.imageio.ImageIO; -import javax.imageio.ImageReadParam; -import javax.imageio.ImageReader; -import javax.imageio.stream.ImageInputStream; -import javax.swing.*; -import java.awt.*; -import java.awt.color.ColorSpace; -import java.awt.datatransfer.DataFlavor; -import java.awt.datatransfer.Transferable; -import java.awt.datatransfer.UnsupportedFlavorException; -import java.awt.image.BufferedImage; -import java.awt.image.ColorConvertOp; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Iterator; -import java.util.List; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -/** - * TestPICTClippingApp - * - * @author Harald Kuhr - * @author last modified by $Author: haraldk$ - * @version $Id: TestPICTClippingApp.java,v 1.0 Feb 16, 2009 3:05:16 PM haraldk Exp$ - */ -public class TestPICTClippingApp { - public static void main(final String[] pArgs) { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - try { - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } - catch (Exception ignore) { - } - - JFrame frame = new JFrame("PICTClipping test"); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - JLabel dropZone = new JLabel("Drop images here", JLabel.CENTER) { - @Override - public Dimension getPreferredSize() { - return new Dimension(320, 200); - } - }; - - dropZone.setTransferHandler(new ImageDropHandler(dropZone)); - frame.add(dropZone); - frame.pack(); - frame.setLocationRelativeTo(null); - frame.setVisible(true); - } - }); - } - - private static class ImageDropHandler extends TransferHandler { - private final JLabel label; - private final ExecutorService executor = Executors.newSingleThreadExecutor(); - - public ImageDropHandler(JLabel pLabel) { - super(null); - label = pLabel; - } - - private DataFlavor getSupportedFlavor(final DataFlavor[] transferFlavors) { - for (DataFlavor flavor : transferFlavors) { - String type = MIMEUtil.bareMIME(flavor.getMimeType()); - if (InputStream.class.isAssignableFrom(flavor.getDefaultRepresentationClass()) && ImageIO.getImageReadersByMIMEType(type).hasNext()) { - return flavor; - } - else if (flavor.equals(DataFlavor.javaFileListFlavor)) { - return flavor; - } - } - - for (DataFlavor flavor : transferFlavors) { - System.err.printf("flavor: %s%n", flavor); - } - - return null; - } - - @Override - public boolean canImport(final JComponent comp, final DataFlavor[] transferFlavors) { - return getSupportedFlavor(transferFlavors) != null; - } - - @Override - public boolean importData(JComponent comp, Transferable t) { - DataFlavor[] flavors = t.getTransferDataFlavors(); - DataFlavor flavor = getSupportedFlavor(flavors); - if (flavor != null) { - try { - InputStream input; - if (DataFlavor.javaFileListFlavor.equals(flavor)) { - List files = (List) t.getTransferData(flavor); - if (files.isEmpty()) { - return false; - } - else { - input = new FileInputStream((File) files.get(0)); - } - } - else { - Object data = t.getTransferData(flavor); - input = (InputStream) data; - } - - final ImageInputStream stream = ImageIO.createImageInputStream(input); - Iterator readers = ImageIO.getImageReaders(stream); - - if (!readers.hasNext()) { - String mimeType = MIMEUtil.bareMIME(flavor.getMimeType()); - System.out.printf("Getting reader by MIME type (%s)...%n", mimeType); - readers = ImageIO.getImageReadersByMIMEType(mimeType); - } - - if (readers.hasNext()) { - final ImageReader imageReader = readers.next(); - - executor.execute(new Runnable() { - public void run() { - try { - readAndInstallImage(stream, imageReader); - } - catch (IOException e) { - e.printStackTrace(); - } - } - }); - - return true; - } - else { - System.err.println("No reader found!"); - } - - } - catch (UnsupportedFlavorException ignore) { - ignore.printStackTrace(); - } - catch (IOException ignore) { - ignore.printStackTrace(); - } - catch (RuntimeException e) { - e.printStackTrace(); - throw e; - } - } - - return false; - } - - private void readAndInstallImage(final ImageInputStream pStream, final ImageReader reader) throws IOException { - reader.setInput(pStream); - - final int maxDimension = 200; - int w = reader.getWidth(0); - int h = reader.getHeight(0); - - ImageReadParam param = null; - if (w > maxDimension && h > maxDimension) { - int sub = (int) Math.ceil((Math.max(w, h) / (double) maxDimension) / 3.0); - if (sub > 1) { - param = reader.getDefaultReadParam(); - param.setSourceSubsampling(sub, sub, 0, 0); - } - } - - System.out.printf("Reading %s format%s... ", reader.getFormatName(), (param != null ? ", sampling every " + param.getSourceXSubsampling() + "th pixel" : "")); - final BufferedImage image = reader.read(0, param); - System.out.printf("Done (%dx%d).%n", image.getWidth(), image.getHeight()); - - reader.dispose(); - - SwingUtilities.invokeLater(new Runnable() { - public void run() { - System.out.print("Scaling image... "); - BufferedImage scaled = box(image, maxDimension); - System.out.printf("Done (%dx%d).%n", scaled.getWidth(), scaled.getHeight()); - label.setIcon(new BufferedImageIcon(scaled)); - } - }); - } - - private BufferedImage box(final BufferedImage pImage, final int pMaxDimension) { - // TODO: ImageUtil.toRGB method? ColorConvertOp MUCH faster than ImageUtil.toBuffered(img, type) - BufferedImage image = pImage; - if (image.getType() == 0) { - try { - ColorConvertOp op = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_sRGB), null); - image = op.filter(image, new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_4BYTE_ABGR_PRE)); - } - catch (Exception e) { - e.printStackTrace(); - image = ImageUtil.accelerate(image); - } - } - - if (image.getWidth() > pMaxDimension || image.getHeight() > pMaxDimension) { - int w, h; - - if (image.getWidth() > image.getHeight()) { - w = pMaxDimension; - h = (int) Math.round(w / (image.getWidth() / (double) image.getHeight())); - } - else { - h = pMaxDimension; - w = (int) Math.round(h * (image.getWidth() / (double) image.getHeight())); - } - - return ImageUtil.createResampled(image, w, h, Image.SCALE_DEFAULT); - } - return image; - } - } -} \ No newline at end of file diff --git a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/TestPICTEagerDetect.java b/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/TestPICTEagerDetect.java deleted file mode 100755 index 0a1630c6..00000000 --- a/imageio/imageio-pict/src/main/java/com/twelvemonkeys/imageio/plugins/pict/TestPICTEagerDetect.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.twelvemonkeys.imageio.plugins.pict; - -import javax.imageio.ImageIO; -import java.io.File; -import java.io.IOException; - -/** - * TestPICTEagerDetect - * - * @author Harald Kuhr - * @author last modified by $Author: haraldk$ - * @version $Id: TestPICTEagerDetect.java,v 1.0 Aug 6, 2009 2:59:41 PM haraldk Exp$ - */ -public class TestPICTEagerDetect { - public static void main(final String[] pArgs) throws IOException { - PICTImageReaderSpi provider = new PICTImageReaderSpi(); - - if (pArgs.length == 0) { - System.exit(1); - } - for (String arg : pArgs) { - boolean canDecode = provider.canDecodeInput(ImageIO.createImageInputStream(new File(arg))); - System.err.printf("canDecode %s: %s%n", arg, canDecode); - } - } -} diff --git a/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderTest.java b/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderTest.java index b565d6d8..4350db13 100644 --- a/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderTest.java +++ b/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageReaderTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.pict; import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStream; diff --git a/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterTest.java b/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterTest.java index d18c1690..22a3d21a 100644 --- a/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterTest.java +++ b/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTImageWriterTest.java @@ -4,32 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pict; import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStream; -import com.twelvemonkeys.imageio.util.ImageWriterAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageWriterAbstractTest; import org.junit.Test; import javax.imageio.ImageIO; @@ -53,7 +55,7 @@ import static org.junit.Assert.*; * @author last modified by $Author: haraldk$ * @version $Id: PICTImageWriterTest.java,v 1.0 20.01.12 12:26 haraldk Exp$ */ -public class PICTImageWriterTest extends ImageWriterAbstractTestCase { +public class PICTImageWriterTest extends ImageWriterAbstractTest { private final PICTImageWriterSpi provider = new PICTImageWriterSpi(); @Override diff --git a/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTProviderInfoTest.java b/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTProviderInfoTest.java index 920e2c91..7be4fc70 100644 --- a/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTProviderInfoTest.java +++ b/imageio/imageio-pict/src/test/java/com/twelvemonkeys/imageio/plugins/pict/PICTProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.pict; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-pnm/license.txt b/imageio/imageio-pnm/license.txt index fe399516..b3290ecd 100755 --- a/imageio/imageio-pnm/license.txt +++ b/imageio/imageio-pnm/license.txt @@ -4,22 +4,24 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/HeaderParser.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/HeaderParser.java index bde668c4..05b5ad6a 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/HeaderParser.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/HeaderParser.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/HeaderWriter.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/HeaderWriter.java index f277838d..6df9a386 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/HeaderWriter.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/HeaderWriter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PAMHeaderParser.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PAMHeaderParser.java index b6afe021..e5e3b365 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PAMHeaderParser.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PAMHeaderParser.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; @@ -47,7 +49,8 @@ final class PAMHeaderParser extends HeaderParser { super(input); } - @Override public PNMHeader parse() throws IOException { + @Override + public PNMHeader parse() throws IOException { /* Note: Comments are allowed P7 WIDTH 227 diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PAMHeaderWriter.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PAMHeaderWriter.java index 89bee869..c2c6fece 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PAMHeaderWriter.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PAMHeaderWriter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; @@ -38,7 +40,8 @@ final class PAMHeaderWriter extends HeaderWriter { super(imageOutput); } - @Override public void writeHeader(final IIOImage image, final ImageWriterSpi provider) throws IOException { + @Override + public void writeHeader(final IIOImage image, final ImageWriterSpi provider) throws IOException { // Write PAM magic imageOutput.writeShort(PNM.PAM); imageOutput.write('\n'); diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PAMImageWriterSpi.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PAMImageWriterSpi.java index 51490cb1..c20d4918 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PAMImageWriterSpi.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PAMImageWriterSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PFMHeaderParser.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PFMHeaderParser.java index 36f47f68..3b071c80 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PFMHeaderParser.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PFMHeaderParser.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; @@ -63,7 +65,8 @@ final class PFMHeaderParser extends HeaderParser { // [xres] [yres] // [scale/byte_order] where positive means big-endian, negative means little-endian, maxVal is abs(scale) // Samples are 1 or 3 samples/pixels, interleaved, IEEE 32 bit floating point values - @Override public PNMHeader parse() throws IOException { + @Override + public PNMHeader parse() throws IOException { int width = 0; int height = 0; float maxSample = tupleType == TupleType.BLACKANDWHITE_WHITE_IS_ZERO ? 1 : 0; // PBM has no maxSample line @@ -95,11 +98,14 @@ final class PFMHeaderParser extends HeaderParser { for (String token : tokens) { if (width == 0) { width = Integer.parseInt(token); - } else if (height == 0) { + } + else if (height == 0) { height = Integer.parseInt(token); - } else if (maxSample == 0) { + } + else if (maxSample == 0) { maxSample = Float.parseFloat(token); - } else { + } + else { throw new IIOException("Unknown PNM token: " + token); } } diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNM.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNM.java index 49d52033..0ad0425e 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNM.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNM.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMHeader.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMHeader.java index 27e44f28..902e6ff1 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMHeader.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMHeader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; @@ -152,7 +154,8 @@ final class PNMHeader { return byteOrder; } - @Override public String toString() { + @Override + public String toString() { return "PNMHeader{" + "fileType=" + PNMImageReader.asASCII(fileType) + ", tupleType=" + tupleType + diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMHeaderParser.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMHeaderParser.java index cd56b2d8..bdec6952 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMHeaderParser.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMHeaderParser.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; @@ -60,7 +62,8 @@ final class PNMHeaderParser extends HeaderParser { } } - @Override public PNMHeader parse() throws IOException { + @Override + public PNMHeader parse() throws IOException { int width = 0; int height = 0; int maxSample = tupleType == TupleType.BLACKANDWHITE_WHITE_IS_ZERO ? 1 : 0; // PBM has no maxSample line @@ -92,11 +95,14 @@ final class PNMHeaderParser extends HeaderParser { for (String token : tokens) { if (width == 0) { width = Integer.parseInt(token); - } else if (height == 0) { + } + else if (height == 0) { height = Integer.parseInt(token); - } else if (maxSample == 0) { + } + else if (maxSample == 0) { maxSample = Integer.parseInt(token); - } else { + } + else { throw new IIOException("Unknown PNM token: " + token); } } diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMHeaderWriter.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMHeaderWriter.java index 9d639067..db0e69d7 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMHeaderWriter.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMHeaderWriter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; @@ -38,7 +40,8 @@ final class PNMHeaderWriter extends HeaderWriter { super(imageOutput); } - @Override public void writeHeader(final IIOImage image, final ImageWriterSpi provider) throws IOException { + @Override + public void writeHeader(final IIOImage image, final ImageWriterSpi provider) throws IOException { // Write P4/P5/P6 magic (Support only RAW formats for now; if we are to support PLAIN formats, pass parameter) // TODO: Determine PBM, PBM or PPM based on input color model and image data? short type = PNM.PPM; diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReader.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReader.java index 5336eb01..3a9ce0ae 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReader.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; @@ -62,7 +64,8 @@ public final class PNMImageReader extends ImageReaderBase { super(provider); } - @Override protected void resetMembers() { + @Override + protected void resetMembers() { header = null; } @@ -72,7 +75,8 @@ public final class PNMImageReader extends ImageReaderBase { imageInput.flushBefore(imageInput.getStreamPosition()); imageInput.setByteOrder(header.getByteOrder()); // For PFM support - } else { + } + else { imageInput.seek(imageInput.getFlushedPosition()); } } @@ -82,21 +86,24 @@ public final class PNMImageReader extends ImageReaderBase { return new String(asciiBytes, Charset.forName("ASCII")); } - @Override public int getWidth(final int imageIndex) throws IOException { + @Override + public int getWidth(final int imageIndex) throws IOException { checkBounds(imageIndex); readHeader(); return header.getWidth(); } - @Override public int getHeight(final int imageIndex) throws IOException { + @Override + public int getHeight(final int imageIndex) throws IOException { checkBounds(imageIndex); readHeader(); return header.getHeight(); } - @Override public ImageTypeSpecifier getRawImageType(final int imageIndex) throws IOException { + @Override + public ImageTypeSpecifier getRawImageType(final int imageIndex) throws IOException { checkBounds(imageIndex); readHeader(); @@ -121,7 +128,7 @@ public final class PNMImageReader extends ImageReaderBase { } if (header.getMaxSample() <= PNM.MAX_VAL_16BIT) { return hasAlpha ? ImageTypeSpecifiers.createGrayscale(bitsPerSample, transferType, false) - : ImageTypeSpecifiers.createGrayscale(bitsPerSample, transferType); + : ImageTypeSpecifiers.createGrayscale(bitsPerSample, transferType); } return ImageTypeSpecifiers.createInterleaved(gray, createBandOffsets(samplesPerPixel), transferType, hasAlpha, false); @@ -158,7 +165,8 @@ public final class PNMImageReader extends ImageReaderBase { return offsets; } - @Override public Iterator getImageTypes(final int imageIndex) throws IOException { + @Override + public Iterator getImageTypes(final int imageIndex) throws IOException { ImageTypeSpecifier rawType = getRawImageType(imageIndex); List specifiers = new ArrayList(); @@ -192,7 +200,8 @@ public final class PNMImageReader extends ImageReaderBase { return specifiers.iterator(); } - @Override public BufferedImage read(final int imageIndex, final ImageReadParam param) throws IOException { + @Override + public BufferedImage read(final int imageIndex, final ImageReadParam param) throws IOException { Iterator imageTypes = getImageTypes(imageIndex); ImageTypeSpecifier rawType = getRawImageType(imageIndex); @@ -205,14 +214,16 @@ public final class PNMImageReader extends ImageReaderBase { Rectangle destRegion = new Rectangle(); computeRegions(param, width, height, destination, srcRegion, destRegion); - WritableRaster destRaster = clipToRect(destination.getRaster(), destRegion, param != null ? param.getDestinationBands() : null); + WritableRaster destRaster = clipToRect(destination.getRaster(), destRegion, param != null + ? param.getDestinationBands() + : null); checkReadParamBandSettings(param, rawType.getNumBands(), destRaster.getNumBands()); WritableRaster rowRaster = rawType.createBufferedImage(width, 1).getRaster(); // Clip to source region Raster clippedRow = clipRowToRect(rowRaster, srcRegion, - param != null ? param.getSourceBands() : null, - param != null ? param.getSourceXSubsampling() : 1); + param != null ? param.getSourceBands() : null, + param != null ? param.getSourceXSubsampling() : 1); int transferType = rowRaster.getTransferType(); int samplesPerPixel = header.getSamplesPerPixel(); @@ -287,10 +298,10 @@ public final class PNMImageReader extends ImageReaderBase { case PNM.PGM_PLAIN: case PNM.PPM_PLAIN: if (header.getBitsPerSample() <= 8) { - return new DataInputStream(new Plain8BitDecoder(IIOUtil.createStreamAdapter(imageInput))); + return new DataInputStream(new Plain8BitDecoder(IIOUtil.createStreamAdapter(imageInput))); } if (header.getBitsPerSample() <= 16) { - return new DataInputStream(new Plain16BitDecoder(IIOUtil.createStreamAdapter(imageInput))); + return new DataInputStream(new Plain16BitDecoder(IIOUtil.createStreamAdapter(imageInput))); } throw new IIOException("Unsupported bit depth for type: " + asASCII(header.getFileType())); case PNM.PBM: @@ -348,7 +359,8 @@ public final class PNMImageReader extends ImageReaderBase { int destY = (y - srcRegion.y) / ySub; if (colorConvert != null) { colorConvert.filter(rowRaster, destRaster.createWritableChild(0, destY, rowRaster.getWidth(), 1, 0, 0, null)); - } else { + } + else { destRaster.setDataElements(0, destY, rowRaster); } } @@ -482,7 +494,8 @@ public final class PNMImageReader extends ImageReaderBase { } } - @Override public IIOMetadata getImageMetadata(final int imageIndex) throws IOException { + @Override + public IIOMetadata getImageMetadata(final int imageIndex) throws IOException { checkBounds(imageIndex); readHeader(); diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderSpi.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderSpi.java index 6b10f6d2..287f78e6 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderSpi.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageWriter.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageWriter.java index 7d3e455f..b7af9314 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageWriter.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageWriter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageWriterSpi.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageWriterSpi.java index 5a7522c0..f91e5c68 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageWriterSpi.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageWriterSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMMetadata.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMMetadata.java index 58578603..d6f75e6f 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMMetadata.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMMetadata.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMProviderInfo.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMProviderInfo.java index 15eb1d8f..3f496378 100644 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMProviderInfo.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/PNMProviderInfo.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2014, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.pnm; import com.twelvemonkeys.imageio.spi.ProviderInfo; diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/Plain16BitDecoder.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/Plain16BitDecoder.java index b63c1f8e..486e90f6 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/Plain16BitDecoder.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/Plain16BitDecoder.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; @@ -46,7 +48,8 @@ final class Plain16BitDecoder extends InputStream { reader = new BufferedReader(new InputStreamReader(in, Charset.forName("ASCII"))); } - @Override public int read() throws IOException { + @Override + public int read() throws IOException { if (leftOver != -1) { int next = leftOver; leftOver = -1; @@ -74,7 +77,8 @@ final class Plain16BitDecoder extends InputStream { return (next >> 8) & 0xff; } - @Override public void close() throws IOException { + @Override + public void close() throws IOException { reader.close(); } } diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/Plain1BitDecoder.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/Plain1BitDecoder.java index e529bae6..80e33232 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/Plain1BitDecoder.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/Plain1BitDecoder.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; @@ -41,7 +43,8 @@ final class Plain1BitDecoder extends InputStream { this.samplesPerRow = samplesPerRow; } - @Override public int read() throws IOException { + @Override + public int read() throws IOException { // Each 0 or 1 represents one bit, whitespace is ignored. Padded to byte boundary for each row. // NOTE: White is 0, black is 1! int result = 0; @@ -74,7 +77,8 @@ final class Plain1BitDecoder extends InputStream { return result; } - @Override public void close() throws IOException { + @Override + public void close() throws IOException { stream.close(); } } diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/Plain8BitDecoder.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/Plain8BitDecoder.java index 421c271f..8f2409b0 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/Plain8BitDecoder.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/Plain8BitDecoder.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; @@ -45,7 +47,8 @@ final class Plain8BitDecoder extends InputStream { reader = new BufferedReader(new InputStreamReader(in, Charset.forName("ASCII"))); } - @Override public int read() throws IOException { + @Override + public int read() throws IOException { // Each number is one byte. Skip whitespace. if (currentLine == null || !currentLine.hasNext()) { String line = reader.readLine(); @@ -63,7 +66,8 @@ final class Plain8BitDecoder extends InputStream { return Integer.parseInt(currentLine.next()) & 0xff; } - @Override public void close() throws IOException { + @Override + public void close() throws IOException { reader.close(); } } diff --git a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/TupleType.java b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/TupleType.java index 0a859f02..6ceccfa4 100755 --- a/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/TupleType.java +++ b/imageio/imageio-pnm/src/main/java/com/twelvemonkeys/imageio/plugins/pnm/TupleType.java @@ -4,31 +4,33 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; -import java.awt.Transparency; +import java.awt.*; enum TupleType { // Official: diff --git a/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PAMImageWriterSpiTest.java b/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PAMImageWriterSpiTest.java index c6efb07b..1befecfb 100644 --- a/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PAMImageWriterSpiTest.java +++ b/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PAMImageWriterSpiTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2014, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.pnm; import org.junit.Test; diff --git a/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderSpiTest.java b/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderSpiTest.java index 2ed5daef..6e02a0cd 100644 --- a/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderSpiTest.java +++ b/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderSpiTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2014, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.pnm; import org.junit.Test; diff --git a/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderTest.java b/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderTest.java index c8a3dde1..49755bdc 100755 --- a/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderTest.java +++ b/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.pnm; diff --git a/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageWriterSpiTest.java b/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageWriterSpiTest.java index 4bbb4936..d8a7882c 100644 --- a/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageWriterSpiTest.java +++ b/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMImageWriterSpiTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2014, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.pnm; import org.junit.Test; diff --git a/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMProviderInfoTest.java b/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMProviderInfoTest.java index 7ae7e892..03539d55 100644 --- a/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMProviderInfoTest.java +++ b/imageio/imageio-pnm/src/test/java/com/twelvemonkeys/imageio/plugins/pnm/PNMProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.pnm; import org.junit.Test; diff --git a/imageio/imageio-psd/license.txt b/imageio/imageio-psd/license.txt index 2d8ee79c..323261e0 100755 --- a/imageio/imageio-psd/license.txt +++ b/imageio/imageio-psd/license.txt @@ -4,22 +4,24 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/ICCProfile.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/ICCProfile.java index 0112c645..2c68b46b 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/ICCProfile.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/ICCProfile.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSD.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSD.java index 6fb112a0..1160c297 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSD.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSD.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDAlphaChannelInfo.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDAlphaChannelInfo.java index f474cd36..6c767f93 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDAlphaChannelInfo.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDAlphaChannelInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDChannelInfo.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDChannelInfo.java index 99f4518d..a5076878 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDChannelInfo.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDChannelInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDChannelSourceDestinationRange.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDChannelSourceDestinationRange.java index 406d8ccb..61fccca6 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDChannelSourceDestinationRange.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDChannelSourceDestinationRange.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDColorData.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDColorData.java index 993929af..1622d2a6 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDColorData.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDColorData.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDDirectoryResource.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDDirectoryResource.java index 1a2e0205..86f03227 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDDirectoryResource.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDDirectoryResource.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDDisplayInfo.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDDisplayInfo.java index c8b1eb51..73f5e09c 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDDisplayInfo.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDDisplayInfo.java @@ -4,32 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; -import javax.imageio.stream.ImageInputStream; import javax.imageio.IIOException; +import javax.imageio.stream.ImageInputStream; import java.io.IOException; /** diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDEXIF1Data.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDEXIF1Data.java index d952f215..d0d31eca 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDEXIF1Data.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDEXIF1Data.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDGlobalLayerMask.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDGlobalLayerMask.java index ba9563ac..fae32146 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDGlobalLayerMask.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDGlobalLayerMask.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDGridAndGuideInfo.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDGridAndGuideInfo.java index 02c72047..1f6665ae 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDGridAndGuideInfo.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDGridAndGuideInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDHeader.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDHeader.java index 12a4c07b..ac931264 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDHeader.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDHeader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDIPTCData.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDIPTCData.java index b3952ee8..92dc776e 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDIPTCData.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDIPTCData.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReader.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReader.java index b19f3e4c..2e9343cf 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReader.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderSpi.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderSpi.java index 35e6f5d3..d6924419 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderSpi.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageResource.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageResource.java index ebb7ad80..c137b807 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageResource.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageResource.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerBlendMode.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerBlendMode.java index 043d23d6..1f6e0483 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerBlendMode.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerBlendMode.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerInfo.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerInfo.java index 7b92883c..ccc0559a 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerInfo.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerMaskData.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerMaskData.java index 29985ef0..a057895d 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerMaskData.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDLayerMaskData.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDMetadata.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDMetadata.java index 8a9303eb..25d54980 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDMetadata.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDMetadata.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDMetadataFormat.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDMetadataFormat.java index 1110ca86..cf73d6f7 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDMetadataFormat.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDMetadataFormat.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPathResource.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPathResource.java index b9397870..cd70abaf 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPathResource.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPathResource.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPixelAspectRatio.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPixelAspectRatio.java index f2a2d7bb..1352d530 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPixelAspectRatio.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPixelAspectRatio.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlags.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlags.java index 000dec83..3708603b 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlags.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlags.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlagsInformation.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlagsInformation.java index 59c45fb0..0bef45c6 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlagsInformation.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintFlagsInformation.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintScale.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintScale.java index 8d4183a1..80b31e3f 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintScale.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDPrintScale.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDProviderInfo.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDProviderInfo.java index 1767cc50..cdf26a9b 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDProviderInfo.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDResolutionInfo.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDResolutionInfo.java index d4558ee5..547878b0 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDResolutionInfo.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDResolutionInfo.java @@ -4,32 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; -import javax.imageio.stream.ImageInputStream; import javax.imageio.IIOException; +import javax.imageio.stream.ImageInputStream; import java.io.IOException; /** diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDThumbnail.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDThumbnail.java index bf0df7ba..b7f21b9d 100755 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDThumbnail.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDThumbnail.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDUnicodeAlphaNames.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDUnicodeAlphaNames.java index 6a6bf90c..3cae917a 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDUnicodeAlphaNames.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDUnicodeAlphaNames.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDUtil.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDUtil.java index 5cd5f0c2..e7c239a4 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDUtil.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDVersionInfo.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDVersionInfo.java index 9ac99f4f..1655c381 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDVersionInfo.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDVersionInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDXMPData.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDXMPData.java index 78cc002c..fd2e063c 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDXMPData.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDXMPData.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderTest.java b/imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderTest.java index ac939e2f..e8540f08 100755 --- a/imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderTest.java +++ b/imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.psd; diff --git a/imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/PSDProviderInfoTest.java b/imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/PSDProviderInfoTest.java index 58e073d8..49bb1515 100644 --- a/imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/PSDProviderInfoTest.java +++ b/imageio/imageio-psd/src/test/java/com/twelvemonkeys/imageio/plugins/psd/PSDProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.psd; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-reference/license.txt b/imageio/imageio-reference/license.txt index 2d8ee79c..323261e0 100644 --- a/imageio/imageio-reference/license.txt +++ b/imageio/imageio-reference/license.txt @@ -4,22 +4,24 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/JPEGImageReaderTest.java b/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/JPEGImageReaderTest.java index 02f94cf4..4364e7fd 100644 --- a/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/JPEGImageReaderTest.java +++ b/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/JPEGImageReaderTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.reference; import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; diff --git a/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/PNGImageReaderTest.java b/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/PNGImageReaderTest.java index e1a5ecf1..02ae9fdb 100644 --- a/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/PNGImageReaderTest.java +++ b/imageio/imageio-reference/src/test/java/com/twelvemonkeys/imageio/reference/PNGImageReaderTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.reference; import com.twelvemonkeys.imageio.util.IIOUtil; diff --git a/imageio/imageio-sgi/license.txt b/imageio/imageio-sgi/license.txt index fe399516..15ff285c 100755 --- a/imageio/imageio-sgi/license.txt +++ b/imageio/imageio-sgi/license.txt @@ -1,25 +1,29 @@ -Copyright (c) 2014, Harald Kuhr +BSD 3-Clause License + +Copyright (c) 2009, Harald Kuhr All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/RLEDecoder.java b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/RLEDecoder.java index 684edf9c..f19bb5e0 100755 --- a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/RLEDecoder.java +++ b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/RLEDecoder.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.sgi; diff --git a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGI.java b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGI.java index 6b0c67c2..86289843 100755 --- a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGI.java +++ b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGI.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.sgi; diff --git a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIHeader.java b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIHeader.java index e77ee45f..8b893c06 100755 --- a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIHeader.java +++ b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIHeader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.sgi; @@ -81,7 +83,8 @@ final class SGIHeader { return colorMode; } - @Override public String toString() { + @Override + public String toString() { return "SGIHeader{" + "compression=" + compression + ", bytesPerPixel=" + bytesPerPixel + diff --git a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReader.java b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReader.java index fce75c3f..ab47bd89 100755 --- a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReader.java +++ b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.sgi; diff --git a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderSpi.java b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderSpi.java index 1aa9436e..2e7bdeaa 100755 --- a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderSpi.java +++ b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.sgi; @@ -44,7 +46,8 @@ public final class SGIImageReaderSpi extends ImageReaderSpiBase { super(new SGIProviderInfo()); } - @Override public boolean canDecodeInput(final Object source) throws IOException { + @Override + public boolean canDecodeInput(final Object source) throws IOException { if (!(source instanceof ImageInputStream)) { return false; } @@ -71,11 +74,13 @@ public final class SGIImageReaderSpi extends ImageReaderSpiBase { } } - @Override public ImageReader createReaderInstance(final Object extension) throws IOException { + @Override + public ImageReader createReaderInstance(final Object extension) throws IOException { return new SGIImageReader(this); } - @Override public String getDescription(final Locale locale) { + @Override + public String getDescription(final Locale locale) { return "Silicon Graphics (SGI) image reader"; } } diff --git a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIMetadata.java b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIMetadata.java index 5e4614fd..42cb005a 100755 --- a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIMetadata.java +++ b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIMetadata.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.sgi; diff --git a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIProviderInfo.java b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIProviderInfo.java index d49a948c..d176146c 100644 --- a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIProviderInfo.java +++ b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.sgi; diff --git a/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderTest.java b/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderTest.java index 8d6d8112..7389a3c2 100755 --- a/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderTest.java +++ b/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.sgi; diff --git a/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIProviderInfoTest.java b/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIProviderInfoTest.java index 7a84ff48..d55fd1e9 100644 --- a/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIProviderInfoTest.java +++ b/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.sgi; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-tga/license.txt b/imageio/imageio-tga/license.txt index fe399516..e5f570e1 100755 --- a/imageio/imageio-tga/license.txt +++ b/imageio/imageio-tga/license.txt @@ -4,22 +4,24 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/RLEDecoder.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/RLEDecoder.java index 3efa3c4b..6a1ee98e 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/RLEDecoder.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/RLEDecoder.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tga; diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGA.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGA.java index 116ec2df..5fc0e2f0 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGA.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGA.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tga; diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAExtensions.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAExtensions.java index ad806de9..157ab7a1 100644 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAExtensions.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAExtensions.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2014, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.tga; import javax.imageio.IIOException; diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAHeader.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAHeader.java index 09a7b014..c3e4775e 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAHeader.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAHeader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tga; diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java index b6340926..fbaba173 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tga; diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderSpi.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderSpi.java index 5a741ba3..0c1eca79 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderSpi.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tga; diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java index bcca2bb6..7df3e9aa 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tga; diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfo.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfo.java index 1009093b..beda1535 100644 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfo.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tga; diff --git a/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderTest.java b/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderTest.java index 601df0a9..795859c6 100755 --- a/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderTest.java +++ b/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tga; diff --git a/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfoTest.java b/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfoTest.java index 99a85127..8c68afcc 100644 --- a/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfoTest.java +++ b/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.tga; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-thumbsdb/license.txt b/imageio/imageio-thumbsdb/license.txt index 2d8ee79c..5ae89322 100755 --- a/imageio/imageio-thumbsdb/license.txt +++ b/imageio/imageio-thumbsdb/license.txt @@ -4,22 +4,24 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/Catalog.java b/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/Catalog.java index c791ac29..5eb968f7 100755 --- a/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/Catalog.java +++ b/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/Catalog.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.thumbsdb; @@ -32,11 +34,11 @@ import com.twelvemonkeys.io.LittleEndianDataInputStream; import com.twelvemonkeys.io.ole2.CompoundDocument; import com.twelvemonkeys.lang.StringUtil; -import java.io.InputStream; -import java.io.IOException; import java.io.DataInput; -import java.util.Iterator; +import java.io.IOException; +import java.io.InputStream; import java.util.Date; +import java.util.Iterator; /** * Represents a {@code Catalog} structure, typically found in a {@link com.twelvemonkeys.io.ole2.CompoundDocument}. diff --git a/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReader.java b/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReader.java index 6d31b19f..7fdb8036 100644 --- a/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReader.java +++ b/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.thumbsdb; diff --git a/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderSpi.java b/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderSpi.java index 919aa6cd..e73a80eb 100755 --- a/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderSpi.java +++ b/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.thumbsdb; diff --git a/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBProviderInfo.java b/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBProviderInfo.java index a7585f00..ad345f52 100644 --- a/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBProviderInfo.java +++ b/imageio/imageio-thumbsdb/src/main/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.thumbsdb; diff --git a/imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderTest.java b/imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderTest.java index 8b6ad255..296aa00a 100644 --- a/imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderTest.java +++ b/imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBImageReaderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.thumbsdb; diff --git a/imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBProviderInfoTest.java b/imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBProviderInfoTest.java index 8c9be0e6..eaf00272 100644 --- a/imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBProviderInfoTest.java +++ b/imageio/imageio-thumbsdb/src/test/java/com/twelvemonkeys/imageio/plugins/thumbsdb/ThumbsDBProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.thumbsdb; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-tiff/license.txt b/imageio/imageio-tiff/license.txt index 4913b243..b2a67b53 100644 --- a/imageio/imageio-tiff/license.txt +++ b/imageio/imageio-tiff/license.txt @@ -4,22 +4,24 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name "TwelveMonkeys" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFImageReaderSpi.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFImageReaderSpi.java index d46564da..f07477d2 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFImageReaderSpi.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFProviderInfo.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFProviderInfo.java index 94c9b9de..71495539 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFProviderInfo.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFProviderInfo.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.tiff; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BitPaddingStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BitPaddingStream.java index 58e64a79..7c11c4cc 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BitPaddingStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BitPaddingStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java index e54d60af..e4d98961 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStream.java index 8a250ece..93c0f61a 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java index 4a17a327..1faa26a6 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.tiff; import com.twelvemonkeys.lang.Validate; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDeDifferencingStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDeDifferencingStream.java index 096c4e9d..da06f5c8 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDeDifferencingStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDeDifferencingStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDifferencingStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDifferencingStream.java index 0daeeea6..3fd37256 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDifferencingStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDifferencingStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/JPEGTables.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/JPEGTables.java index b1aba18f..2ddc7ac5 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/JPEGTables.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/JPEGTables.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWDecoder.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWDecoder.java index 251b3812..6011f528 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWDecoder.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWDecoder.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoder.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoder.java index 47afa666..e065b5ae 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoder.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoder.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ReverseInputStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ReverseInputStream.java index 3a76b64b..581ec73c 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ReverseInputStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ReverseInputStream.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.tiff; import java.io.FilterInputStream; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFBaseline.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFBaseline.java index 6d9a8cee..b344d8c2 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFBaseline.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFBaseline.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFCustom.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFCustom.java index 3a93895a..1ebe0513 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFCustom.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFCustom.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java index 3bff65f4..4d3ed3e0 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFExtension.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java index 805ac2e2..823f90a4 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java index f9ebff9f..75c589cb 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderSpi.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderSpi.java index e41be3cd..c6d9a15c 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderSpi.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriteParam.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriteParam.java index 2e63b293..90a7f904 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriteParam.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriteParam.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java index 7763001e..08039f8d 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterSpi.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterSpi.java index 7d85e568..a5db69b9 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterSpi.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFMedataFormat.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFMedataFormat.java index 54e9e1b9..82333d24 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFMedataFormat.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFMedataFormat.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java index 0d2a9a5d..784a6339 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadata.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadata.java index 17ec1010..5c4cc80a 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadata.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadata.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataFormat.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataFormat.java index e81d38e4..7ed1a8ea 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataFormat.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataFormat.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCr16UpsamplerStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCr16UpsamplerStream.java index 8045e632..482f0c6b 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCr16UpsamplerStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCr16UpsamplerStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCrUpsamplerStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCrUpsamplerStream.java index 560845d7..f4c07fba 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCrUpsamplerStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCrUpsamplerStream.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFImageReaderTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFImageReaderTest.java index 02c44101..531edea1 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFImageReaderTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFImageReaderTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.tiff; import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/BitPaddingStreamTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/BitPaddingStreamTest.java index 3d094bfe..fea025f7 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/BitPaddingStreamTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/BitPaddingStreamTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.tiff; import org.junit.Test; @@ -7,7 +37,8 @@ import java.io.DataInputStream; import java.io.IOException; import java.nio.ByteOrder; -import static org.junit.Assert.*; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; /** * BitPaddingStreamTest. diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java index ac98d09f..6a305032 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStreamTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStreamTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStreamTest.java index a9eb0599..8f8781ec 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStreamTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStreamTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModelTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModelTest.java index d69875e2..f874a8fa 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModelTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModelTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2018, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.tiff; import com.twelvemonkeys.image.ResampleOp; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDeDifferencingStreamTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDeDifferencingStreamTest.java index 2ee1692d..526c2f8e 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDeDifferencingStreamTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDeDifferencingStreamTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; @@ -36,7 +38,8 @@ import org.junit.Test; import java.io.*; import java.nio.ByteOrder; -import static org.junit.Assert.*; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; /** * HorizontalDeDifferencingStreamTest diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDifferencingStreamTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDifferencingStreamTest.java index 30fc6608..93aab8ea 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDifferencingStreamTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/HorizontalDifferencingStreamTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/LZWDecoderTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/LZWDecoderTest.java index 4cb9538a..6e503346 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/LZWDecoderTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/LZWDecoderTest.java @@ -1,34 +1,38 @@ -package com.twelvemonkeys.imageio.plugins.tiff;/* +/* * Copyright (c) 2012, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +package com.twelvemonkeys.imageio.plugins.tiff; + import com.twelvemonkeys.io.FileUtil; import com.twelvemonkeys.io.enc.Decoder; -import com.twelvemonkeys.io.enc.DecoderAbstractTestCase; +import com.twelvemonkeys.io.enc.DecoderAbstractTest; import com.twelvemonkeys.io.enc.DecoderStream; import com.twelvemonkeys.io.enc.Encoder; import org.junit.Ignore; @@ -48,7 +52,7 @@ import static org.junit.Assert.*; * @author last modified by $Author: haraldk$ * @version $Id: LZWDecoderTest.java,v 1.0 08.05.12 23:44 haraldk Exp$ */ -public class LZWDecoderTest extends DecoderAbstractTestCase { +public class LZWDecoderTest extends DecoderAbstractTest { public static final int SPEED_TEST_ITERATIONS = 1024; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoderTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoderTest.java index ced15e6d..881a2ce3 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoderTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/LZWEncoderTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataTest.java index bd54b0b9..4041e95a 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataTest.java @@ -1,3 +1,32 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ package com.twelvemonkeys.imageio.plugins.tiff; import com.twelvemonkeys.imageio.metadata.Directory; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java index 53f101c8..077cd3f2 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java @@ -1,31 +1,35 @@ -package com.twelvemonkeys.imageio.plugins.tiff;/* +/* * Copyright (c) 2012, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +package com.twelvemonkeys.imageio.plugins.tiff; + import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import org.junit.Test; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterTest.java index 8770f474..164ad217 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; @@ -34,7 +36,7 @@ import com.twelvemonkeys.imageio.metadata.tiff.Rational; import com.twelvemonkeys.imageio.metadata.tiff.TIFF; import com.twelvemonkeys.imageio.metadata.tiff.TIFFReader; import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStream; -import com.twelvemonkeys.imageio.util.ImageWriterAbstractTestCase; +import com.twelvemonkeys.imageio.util.ImageWriterAbstractTest; import com.twelvemonkeys.io.FastByteArrayOutputStream; import com.twelvemonkeys.io.NullOutputStream; import org.junit.Test; @@ -72,7 +74,7 @@ import static org.mockito.Mockito.*; * @author last modified by $Author: haraldk$ * @version $Id: TIFFImageWriterTest.java,v 1.0 19.09.13 13:22 haraldk Exp$ */ -public class TIFFImageWriterTest extends ImageWriterAbstractTestCase { +public class TIFFImageWriterTest extends ImageWriterAbstractTest { private static final TIFFImageWriterSpi PROVIDER = new TIFFImageWriterSpi(); diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfoTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfoTest.java index bdb8df3b..ca5f279b 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfoTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.tiff; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataTest.java index 506d563f..88400a42 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.tiff; import org.junit.Test; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCr16UpsamplerStreamTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCr16UpsamplerStreamTest.java index f998ae29..1d52bd1d 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCr16UpsamplerStreamTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCr16UpsamplerStreamTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCrUpsamplerStreamTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCrUpsamplerStreamTest.java index 3b0b6c73..8f61ecc3 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCrUpsamplerStreamTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/YCbCrUpsamplerStreamTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.tiff; diff --git a/servlet/license.txt b/servlet/license.txt new file mode 100644 index 00000000..39a176e0 --- /dev/null +++ b/servlet/license.txt @@ -0,0 +1,27 @@ +Copyright (c) 2008, Harald Kuhr +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/AbstractServletMapAdapter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/AbstractServletMapAdapter.java index 7ee01471..ea76d7dc 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/AbstractServletMapAdapter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/AbstractServletMapAdapter.java @@ -1,6 +1,39 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet; -import java.util.*; +import java.util.AbstractMap; +import java.util.AbstractSet; +import java.util.Iterator; +import java.util.Set; /** * AbstractServletMapAdapter diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/BrowserHelperFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/BrowserHelperFilter.java index 938dd16c..a01d8fdc 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/BrowserHelperFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/BrowserHelperFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/DebugServlet.java b/servlet/src/main/java/com/twelvemonkeys/servlet/DebugServlet.java index 894dbf6c..54644745 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/DebugServlet.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/DebugServlet.java @@ -4,34 +4,36 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/GenericFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/GenericFilter.java index 6397e182..5c243ad6 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/GenericFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/GenericFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/GenericServlet.java b/servlet/src/main/java/com/twelvemonkeys/servlet/GenericServlet.java index 7f2198ca..343440fc 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/GenericServlet.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/GenericServlet.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/HttpServlet.java b/servlet/src/main/java/com/twelvemonkeys/servlet/HttpServlet.java index cff681bf..6302ec92 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/HttpServlet.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/HttpServlet.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/InitParam.java b/servlet/src/main/java/com/twelvemonkeys/servlet/InitParam.java index 51e160c7..4c9cd343 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/InitParam.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/InitParam.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/OutputStreamAdapter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/OutputStreamAdapter.java index d3316f08..62dfd2d6 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/OutputStreamAdapter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/OutputStreamAdapter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/ProxyServlet.java b/servlet/src/main/java/com/twelvemonkeys/servlet/ProxyServlet.java index ae16403f..b6d2e429 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/ProxyServlet.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/ProxyServlet.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletAttributesMapAdapter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletAttributesMapAdapter.java index 227f12c7..05bd930f 100644 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletAttributesMapAdapter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletAttributesMapAdapter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletConfigException.java b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletConfigException.java index 4d0b6389..75ca2f94 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletConfigException.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletConfigException.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletConfigMapAdapter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletConfigMapAdapter.java index 1d23226a..b9adec7c 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletConfigMapAdapter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletConfigMapAdapter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletConfigurator.java b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletConfigurator.java index d04bfeee..9414748a 100644 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletConfigurator.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletConfigurator.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2011, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet; import com.twelvemonkeys.lang.StringUtil; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletHeadersMapAdapter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletHeadersMapAdapter.java index b547929f..f038a7a2 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletHeadersMapAdapter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletHeadersMapAdapter.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet; import com.twelvemonkeys.util.CollectionUtil; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletParametersMapAdapter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletParametersMapAdapter.java index 9324d2fb..fad767d8 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletParametersMapAdapter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletParametersMapAdapter.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet; import com.twelvemonkeys.util.CollectionUtil; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletResponseStreamDelegate.java b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletResponseStreamDelegate.java index bf645e53..bc0bdcc2 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletResponseStreamDelegate.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletResponseStreamDelegate.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletUtil.java b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletUtil.java index 41072fa8..892d3d8e 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/ServletUtil.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/ServletUtil.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/StaticContentServlet.java b/servlet/src/main/java/com/twelvemonkeys/servlet/StaticContentServlet.java index 63fcabb6..3a5c4601 100644 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/StaticContentServlet.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/StaticContentServlet.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/ThrottleFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/ThrottleFilter.java index 99d073b1..aa2bae79 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/ThrottleFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/ThrottleFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/TimingFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/TimingFilter.java index 23a79a5e..3c129d04 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/TimingFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/TimingFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/TrimWhiteSpaceFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/TrimWhiteSpaceFilter.java index 9005136e..574559f9 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/TrimWhiteSpaceFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/TrimWhiteSpaceFilter.java @@ -4,40 +4,37 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletOutputStream; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.ServletResponseWrapper; -import java.io.IOException; -import java.io.PrintWriter; -import java.io.OutputStream; +import javax.servlet.*; import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintWriter; /** * Removes extra unneccessary white space from a servlet response. diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/AbstractCacheRequest.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/AbstractCacheRequest.java index 523c2f2d..0b53cbf8 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/AbstractCacheRequest.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/AbstractCacheRequest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.cache; import com.twelvemonkeys.lang.Validate; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/AbstractCacheResponse.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/AbstractCacheResponse.java index 98d10356..cbcc0037 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/AbstractCacheResponse.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/AbstractCacheResponse.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.cache; import java.util.*; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheException.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheException.java index bc7ca17c..0302cb94 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheException.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheException.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.cache; /** diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheFilter.java index 1996060f..5cebf2f9 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.cache; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheRequest.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheRequest.java index 486dca11..8b9a43cb 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheRequest.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheRequest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.cache; import java.net.URI; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheResponse.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheResponse.java index 2e94b4c8..8e0ea7f4 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheResponse.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheResponse.java @@ -1,7 +1,37 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.cache; -import java.io.OutputStream; import java.io.IOException; +import java.io.OutputStream; import java.util.List; import java.util.Map; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheResponseWrapper.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheResponseWrapper.java index 719bb378..ae4bbdeb 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheResponseWrapper.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CacheResponseWrapper.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.cache; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedEntity.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedEntity.java index e82e5d82..0f6bc1e2 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedEntity.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedEntity.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.cache; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedEntityImpl.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedEntityImpl.java index f612bca5..564021ca 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedEntityImpl.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedEntityImpl.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.cache; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedResponse.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedResponse.java index 4696f284..fb433dca 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedResponse.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedResponse.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.cache; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedResponseImpl.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedResponseImpl.java index 4fd870aa..3436138d 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedResponseImpl.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/CachedResponseImpl.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.cache; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ClientCacheRequest.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ClientCacheRequest.java index 80b02f00..858ccff4 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ClientCacheRequest.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ClientCacheRequest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.cache; import java.net.URI; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ClientCacheResponse.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ClientCacheResponse.java index 795e3180..85e6a05c 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ClientCacheResponse.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ClientCacheResponse.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.cache; import java.io.IOException; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/HTTPCache.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/HTTPCache.java index 9d73e8b2..0c092fa3 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/HTTPCache.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/HTTPCache.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.cache; @@ -31,8 +33,8 @@ package com.twelvemonkeys.servlet.cache; import com.twelvemonkeys.io.FileUtil; import com.twelvemonkeys.lang.StringUtil; import com.twelvemonkeys.lang.Validate; -import com.twelvemonkeys.net.MIMEUtil; import com.twelvemonkeys.net.HTTPUtil; +import com.twelvemonkeys.net.MIMEUtil; import com.twelvemonkeys.util.LRUHashMap; import com.twelvemonkeys.util.NullMap; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ResponseResolver.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ResponseResolver.java index 6e513928..835c8760 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ResponseResolver.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ResponseResolver.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.cache; import java.io.IOException; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/SerlvetCacheResponseWrapper.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/SerlvetCacheResponseWrapper.java index f71f3d8b..96f16afe 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/SerlvetCacheResponseWrapper.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/SerlvetCacheResponseWrapper.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.cache; @@ -33,8 +35,8 @@ import com.twelvemonkeys.net.HTTPUtil; import com.twelvemonkeys.servlet.ServletResponseStreamDelegate; import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponseWrapper; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletResponseWrapper; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ServletCacheRequest.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ServletCacheRequest.java index 1f88a02f..57c08a03 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ServletCacheRequest.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ServletCacheRequest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.cache; import com.twelvemonkeys.servlet.ServletUtil; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ServletCacheResponse.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ServletCacheResponse.java index 855f6655..244a6aa0 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ServletCacheResponse.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ServletCacheResponse.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.cache; import javax.servlet.http.HttpServletResponse; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ServletResponseResolver.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ServletResponseResolver.java index 314dd69a..c5f064cd 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ServletResponseResolver.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/ServletResponseResolver.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.cache; import javax.servlet.FilterChain; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/WritableCachedResponse.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/WritableCachedResponse.java index ded04f68..476975c3 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/WritableCachedResponse.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/WritableCachedResponse.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.cache; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/WritableCachedResponseImpl.java b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/WritableCachedResponseImpl.java index c73ebf99..056c3b61 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/cache/WritableCachedResponseImpl.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/cache/WritableCachedResponseImpl.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.cache; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/FileSizeExceededException.java b/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/FileSizeExceededException.java index ca5642ab..946823dd 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/FileSizeExceededException.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/FileSizeExceededException.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.fileupload; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/FileUploadException.java b/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/FileUploadException.java index 57dc89e3..b44d802a 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/FileUploadException.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/FileUploadException.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.fileupload; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/FileUploadFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/FileUploadFilter.java index a891ac63..7520a087 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/FileUploadFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/FileUploadFilter.java @@ -4,44 +4,46 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.fileupload; -import com.twelvemonkeys.servlet.GenericFilter; -import com.twelvemonkeys.servlet.ServletUtil; import com.twelvemonkeys.io.FileUtil; import com.twelvemonkeys.lang.StringUtil; +import com.twelvemonkeys.servlet.GenericFilter; +import com.twelvemonkeys.servlet.ServletUtil; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; -import java.io.IOException; import java.io.File; -import java.net.URL; +import java.io.IOException; import java.net.MalformedURLException; +import java.net.URL; /** * A servlet {@code Filter} for processing HTTP file upload requests, as diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/HttpFileUploadRequest.java b/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/HttpFileUploadRequest.java index 32d58cbd..9d8a6545 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/HttpFileUploadRequest.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/HttpFileUploadRequest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.fileupload; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/HttpFileUploadRequestWrapper.java b/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/HttpFileUploadRequestWrapper.java index 60080507..dad18653 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/HttpFileUploadRequestWrapper.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/HttpFileUploadRequestWrapper.java @@ -4,37 +4,41 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.fileupload; -import org.apache.commons.fileupload.*; -import org.apache.commons.fileupload.servlet.ServletRequestContext; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileUpload; +import org.apache.commons.fileupload.FileUploadBase; import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import org.apache.commons.fileupload.servlet.ServletRequestContext; -import javax.servlet.http.HttpServletRequestWrapper; -import javax.servlet.http.HttpServletRequest; import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; import java.io.File; import java.util.*; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/UploadedFile.java b/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/UploadedFile.java index 508f12f2..356a6ced 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/UploadedFile.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/UploadedFile.java @@ -4,33 +4,35 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.fileupload; import java.io.File; -import java.io.InputStream; import java.io.IOException; +import java.io.InputStream; /** * This class represents an uploaded file. diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/UploadedFileImpl.java b/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/UploadedFileImpl.java index e2d66267..ba9d6e1b 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/UploadedFileImpl.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/fileupload/UploadedFileImpl.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.fileupload; @@ -31,9 +33,9 @@ package com.twelvemonkeys.servlet.fileupload; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; -import java.io.InputStream; -import java.io.IOException; import java.io.File; +import java.io.IOException; +import java.io.InputStream; /** * An {@code UploadedFile} implementation, based on diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPFilter.java index 99486fa8..0b15f5b0 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.gzip; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPResponseWrapper.java b/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPResponseWrapper.java index 84bc0357..329aff33 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPResponseWrapper.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPResponseWrapper.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.gzip; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/AWTImageFilterAdapter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/AWTImageFilterAdapter.java index 11d231c1..f0df539d 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/AWTImageFilterAdapter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/AWTImageFilterAdapter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/BufferedImageOpAdapter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/BufferedImageOpAdapter.java index cc0b52f9..523b72c7 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/BufferedImageOpAdapter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/BufferedImageOpAdapter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ColorServlet.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ColorServlet.java index 47ae42dd..0f7d67ec 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ColorServlet.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ColorServlet.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ComposeFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ComposeFilter.java index 7fa3f02c..1dd725ad 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ComposeFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ComposeFilter.java @@ -4,33 +4,35 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; import javax.servlet.ServletRequest; -import java.awt.image.RenderedImage; import java.awt.image.BufferedImage; +import java.awt.image.RenderedImage; import java.io.IOException; /** diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ContentNegotiationFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ContentNegotiationFilter.java index b0d33327..8ecf5435 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ContentNegotiationFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ContentNegotiationFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; @@ -31,20 +33,21 @@ package com.twelvemonkeys.servlet.image; import com.twelvemonkeys.image.ImageUtil; import com.twelvemonkeys.lang.StringUtil; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; +import javax.imageio.ImageIO; import javax.servlet.FilterChain; import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.awt.image.IndexColorModel; import java.awt.image.RenderedImage; import java.io.IOException; import java.net.HttpURLConnection; -import java.util.*; +import java.util.HashMap; +import java.util.Map; /** * This filter implements server side content negotiation and transcoding for diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/CropFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/CropFilter.java index d761c5c4..a1cf761f 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/CropFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/CropFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/IIOProviderContextListener.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/IIOProviderContextListener.java index cee1f7d5..b5e5054a 100644 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/IIOProviderContextListener.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/IIOProviderContextListener.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageFilter.java index 68970fb4..d50da14e 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageServletException.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageServletException.java index 93143ffb..2d6c48f6 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageServletException.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageServletException.java @@ -4,31 +4,33 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; -import javax.servlet.*; +import javax.servlet.ServletException; /** * This exception is a subclass of ServletException, and acts just as a marker diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageServletResponse.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageServletResponse.java index 25fdf89e..d2d4c067 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageServletResponse.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageServletResponse.java @@ -4,34 +4,36 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; import javax.servlet.ServletResponse; -import java.io.IOException; -import java.awt.image.RenderedImage; import java.awt.image.BufferedImage; +import java.awt.image.RenderedImage; +import java.io.IOException; /** * ImageServletResponse. diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageServletResponseImpl.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageServletResponseImpl.java index 0c83380d..3eae9b1f 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageServletResponseImpl.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ImageServletResponseImpl.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/NullImageFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/NullImageFilter.java index 107a1a3f..20a65ef9 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/NullImageFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/NullImageFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/RotateFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/RotateFilter.java index cc74d4b5..ad71b05d 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/RotateFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/RotateFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ScaleFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ScaleFilter.java index 0451cd34..705d1bb2 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/ScaleFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/ScaleFilter.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/SourceRenderFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/SourceRenderFilter.java index b93f9826..7c6e7c0b 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/SourceRenderFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/SourceRenderFilter.java @@ -1,14 +1,44 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.image; import com.twelvemonkeys.servlet.ServletUtil; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; import javax.servlet.FilterChain; import javax.servlet.ServletException; -import java.awt.image.RenderedImage; -import java.awt.image.BufferedImage; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import java.awt.*; +import java.awt.image.BufferedImage; +import java.awt.image.RenderedImage; import java.io.IOException; /** diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterest.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterest.java index f095536e..42bfc8f2 100644 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterest.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2012, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.image.aoi; import java.awt.*; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestFactory.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestFactory.java index fd059682..ded138af 100644 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestFactory.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestFactory.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2012, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.image.aoi; import java.util.concurrent.atomic.AtomicReference; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestWrapper.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestWrapper.java index af405eeb..817f575b 100644 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestWrapper.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestWrapper.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2012, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.image.aoi; import com.twelvemonkeys.lang.Validate; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/DefaultAreaOfInterest.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/DefaultAreaOfInterest.java index ac8e8142..1f667e21 100644 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/DefaultAreaOfInterest.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/DefaultAreaOfInterest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2012, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.image.aoi; import java.awt.*; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/PercentAreaOfInterest.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/PercentAreaOfInterest.java index 3b53b9d8..15a13742 100644 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/PercentAreaOfInterest.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/PercentAreaOfInterest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2012, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.image.aoi; import java.awt.*; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/UniformAreaOfInterest.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/UniformAreaOfInterest.java index 7d785307..4cf4deed 100644 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/UniformAreaOfInterest.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/aoi/UniformAreaOfInterest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2012, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.image.aoi; import java.awt.*; diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/image/package_info.java b/servlet/src/main/java/com/twelvemonkeys/servlet/image/package_info.java index d18e9deb..4ab97f32 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/image/package_info.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/image/package_info.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** * Contains various image-outputting filters, that should run under any * servlet engine. diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/jsp/droplet/taglib/package.html b/servlet/src/main/java/com/twelvemonkeys/servlet/jsp/droplet/taglib/package.html deleted file mode 100755 index e69de29b..00000000 diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/jsp/package_info.java b/servlet/src/main/java/com/twelvemonkeys/servlet/jsp/package_info.java deleted file mode 100755 index e69de29b..00000000 diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/jsp/taglib/LastModifiedTag.java b/servlet/src/main/java/com/twelvemonkeys/servlet/jsp/taglib/LastModifiedTag.java deleted file mode 100755 index e69de29b..00000000 diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/package_info.java b/servlet/src/main/java/com/twelvemonkeys/servlet/package_info.java index 09d358cb..84545a85 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/package_info.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/package_info.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** * Contains servlet support classes. */ diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/FilterAbstractTestCase.java b/servlet/src/test/java/com/twelvemonkeys/servlet/FilterAbstractTest.java similarity index 87% rename from servlet/src/test/java/com/twelvemonkeys/servlet/FilterAbstractTestCase.java rename to servlet/src/test/java/com/twelvemonkeys/servlet/FilterAbstractTest.java index 88570a3c..80cfb44f 100755 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/FilterAbstractTestCase.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/FilterAbstractTest.java @@ -1,438 +1,469 @@ -package com.twelvemonkeys.servlet; - -import com.twelvemonkeys.lang.ObjectAbstractTestCase; -import org.junit.Test; - -import javax.servlet.*; -import java.io.*; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.*; - -import static org.junit.Assert.*; - -/** - * FilterAbstractTestCase - *

    - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/FilterAbstractTestCase.java#1 $ - */ -public abstract class FilterAbstractTestCase extends ObjectAbstractTestCase { - protected Object makeObject() { - return makeFilter(); - } - - protected abstract Filter makeFilter(); - - // TODO: Is it a good thing to have an API like this? - protected FilterConfig makeFilterConfig() { - return makeFilterConfig(new HashMap()); - } - - protected FilterConfig makeFilterConfig(Map pParams) { - return new MockFilterConfig(pParams); - } - - protected ServletRequest makeRequest() { - return new MockServletRequest(); - } - - protected ServletResponse makeResponse() { - return new MockServletResponse(); - } - - protected FilterChain makeFilterChain() { - return new MockFilterChain(); - } - - @Test - public void testInitNull() { - Filter filter = makeFilter(); - - // The spec seems to be a little unclear on this issue, but anyway, - // the container should never invoke init(null)... - try { - filter.init(null); - fail("Should throw Exception on init(null)"); - } - catch (IllegalArgumentException e) { - // Good - } - catch (NullPointerException e) { - // Bad (but not unreasonable) - } - catch (ServletException e) { - // Hmmm.. The jury is still out. - } - } - - @Test - public void testInit() { - Filter filter = makeFilter(); - - try { - filter.init(makeFilterConfig()); - } - catch (ServletException e) { - assertNotNull(e.getMessage()); - } - finally { - filter.destroy(); - } - } - - @Test - public void testLifeCycle() throws ServletException { - Filter filter = makeFilter(); - - try { - filter.init(makeFilterConfig()); - } - finally { - filter.destroy(); - } - } - - @Test - public void testFilterBasic() throws ServletException, IOException { - Filter filter = makeFilter(); - - try { - filter.init(makeFilterConfig()); - - filter.doFilter(makeRequest(), makeResponse(), makeFilterChain()); - } - finally { - filter.destroy(); - } - } - - @Test - public void testDestroy() { - // TODO: Implement - } - - static class MockFilterConfig implements FilterConfig { - private final Map params; - - MockFilterConfig(Map pParams) { - if (pParams == null) { - throw new IllegalArgumentException("params == null"); - } - params = pParams; - } - - public String getFilterName() { - return "mock-filter"; - } - - public String getInitParameter(String pName) { - return params.get(pName); - } - - public Enumeration getInitParameterNames() { - return Collections.enumeration(params.keySet()); - } - - public ServletContext getServletContext() { - return new MockServletContext(); - } - - private static class MockServletContext implements ServletContext { - private final Map attributes; - private final Map params; - - MockServletContext() { - attributes = new HashMap(); - params = new HashMap(); - } - - public Object getAttribute(String s) { - return attributes.get(s); - } - - public Enumeration getAttributeNames() { - return Collections.enumeration(attributes.keySet()); - } - - public ServletContext getContext(String s) { - return null; // TODO: Implement - } - - public String getInitParameter(String s) { - return (String) params.get(s); - } - - public Enumeration getInitParameterNames() { - return Collections.enumeration(params.keySet()); - } - - public int getMajorVersion() { - return 0; // TODO: Implement - } - - public String getMimeType(String s) { - return null; // TODO: Implement - } - - public int getMinorVersion() { - return 0; // TODO: Implement - } - - public RequestDispatcher getNamedDispatcher(String s) { - return null; // TODO: Implement - } - - public String getRealPath(String s) { - return null; // TODO: Implement - } - - public RequestDispatcher getRequestDispatcher(String s) { - return null; // TODO: Implement - } - - public URL getResource(String s) throws MalformedURLException { - return null; // TODO: Implement - } - - public InputStream getResourceAsStream(String s) { - return null; // TODO: Implement - } - - public Set getResourcePaths(String s) { - return null; // TODO: Implement - } - - public String getServerInfo() { - return null; // TODO: Implement - } - - public Servlet getServlet(String s) throws ServletException { - return null; // TODO: Implement - } - - public String getServletContextName() { - return "mock"; - } - - public Enumeration getServletNames() { - return null; // TODO: Implement - } - - public Enumeration getServlets() { - return null; // TODO: Implement - } - - public void log(Exception exception, String s) { - } - - public void log(String s) { - } - - public void log(String s, Throwable throwable) { - } - - public void removeAttribute(String s) { - attributes.remove(s); - } - - public void setAttribute(String s, Object obj) { - attributes.put(s, obj); - } - } - } - - static class MockServletRequest implements ServletRequest { - final private Map attributes; - - public MockServletRequest() { - attributes = new HashMap(); - } - - public Object getAttribute(String pKey) { - return attributes.get(pKey); - } - - public Enumeration getAttributeNames() { - return Collections.enumeration(attributes.keySet()); - } - - public String getCharacterEncoding() { - return null; // TODO: Implement - } - - public void setCharacterEncoding(String pMessage) throws UnsupportedEncodingException { - // TODO: Implement - } - - public int getContentLength() { - return 0; // TODO: Implement - } - - public String getContentType() { - return null; // TODO: Implement - } - - public ServletInputStream getInputStream() throws IOException { - return null; // TODO: Implement - } - - public String getParameter(String pMessage) { - return null; // TODO: Implement - } - - public Enumeration getParameterNames() { - return null; // TODO: Implement - } - - public String[] getParameterValues(String pMessage) { - return new String[0]; // TODO: Implement - } - - public Map getParameterMap() { - return null; // TODO: Implement - } - - public String getProtocol() { - return null; // TODO: Implement - } - - public String getScheme() { - return null; // TODO: Implement - } - - public String getServerName() { - return null; // TODO: Implement - } - - public int getServerPort() { - return 0; // TODO: Implement - } - - public BufferedReader getReader() throws IOException { - return null; // TODO: Implement - } - - public String getRemoteAddr() { - return null; // TODO: Implement - } - - public String getRemoteHost() { - return null; // TODO: Implement - } - - public void setAttribute(String pKey, Object pValue) { - attributes.put(pKey, pValue); - } - - public void removeAttribute(String pKey) { - attributes.remove(pKey); - } - - public Locale getLocale() { - return null; // TODO: Implement - } - - public Enumeration getLocales() { - return null; // TODO: Implement - } - - public boolean isSecure() { - return false; // TODO: Implement - } - - public RequestDispatcher getRequestDispatcher(String pMessage) { - return null; // TODO: Implement - } - - public String getRealPath(String pMessage) { - return null; // TODO: Implement - } - - public int getRemotePort() { - throw new UnsupportedOperationException("Method getRemotePort not implemented");// TODO: Implement - } - - public String getLocalName() { - throw new UnsupportedOperationException("Method getLocalName not implemented");// TODO: Implement - } - - public String getLocalAddr() { - throw new UnsupportedOperationException("Method getLocalAddr not implemented");// TODO: Implement - } - - public int getLocalPort() { - throw new UnsupportedOperationException("Method getLocalPort not implemented");// TODO: Implement - } - } - - static class MockServletResponse implements ServletResponse { - public void flushBuffer() throws IOException { - // TODO: Implement - } - - public int getBufferSize() { - return 0; // TODO: Implement - } - - public String getCharacterEncoding() { - return null; // TODO: Implement - } - - public String getContentType() { - throw new UnsupportedOperationException("Method getContentType not implemented");// TODO: Implement - } - - public Locale getLocale() { - return null; // TODO: Implement - } - - public ServletOutputStream getOutputStream() throws IOException { - return null; // TODO: Implement - } - - public PrintWriter getWriter() throws IOException { - return null; // TODO: Implement - } - - public void setCharacterEncoding(String charset) { - throw new UnsupportedOperationException("Method setCharacterEncoding not implemented");// TODO: Implement - } - - public boolean isCommitted() { - return false; // TODO: Implement - } - - public void reset() { - // TODO: Implement - } - - public void resetBuffer() { - // TODO: Implement - } - - public void setBufferSize(int pLength) { - // TODO: Implement - } - - public void setContentLength(int pLength) { - // TODO: Implement - } - - public void setContentType(String pMessage) { - // TODO: Implement - } - - public void setLocale(Locale pLocale) { - // TODO: Implement - } - } - - static class MockFilterChain implements FilterChain { - public void doFilter(ServletRequest pRequest, ServletResponse pResponse) throws IOException, ServletException { - // TODO: Implement - } - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.servlet; + +import com.twelvemonkeys.lang.ObjectAbstractTest; +import org.junit.Test; + +import javax.servlet.*; +import java.io.*; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.*; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; + +/** + * FilterAbstractTestCase + *

    + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/FilterAbstractTestCase.java#1 $ + */ +public abstract class FilterAbstractTest extends ObjectAbstractTest { + protected Object makeObject() { + return makeFilter(); + } + + protected abstract Filter makeFilter(); + + // TODO: Is it a good thing to have an API like this? + protected FilterConfig makeFilterConfig() { + return makeFilterConfig(new HashMap()); + } + + protected FilterConfig makeFilterConfig(Map pParams) { + return new MockFilterConfig(pParams); + } + + protected ServletRequest makeRequest() { + return new MockServletRequest(); + } + + protected ServletResponse makeResponse() { + return new MockServletResponse(); + } + + protected FilterChain makeFilterChain() { + return new MockFilterChain(); + } + + @Test + public void testInitNull() { + Filter filter = makeFilter(); + + // The spec seems to be a little unclear on this issue, but anyway, + // the container should never invoke init(null)... + try { + filter.init(null); + fail("Should throw Exception on init(null)"); + } + catch (IllegalArgumentException e) { + // Good + } + catch (NullPointerException e) { + // Bad (but not unreasonable) + } + catch (ServletException e) { + // Hmmm.. The jury is still out. + } + } + + @Test + public void testInit() { + Filter filter = makeFilter(); + + try { + filter.init(makeFilterConfig()); + } + catch (ServletException e) { + assertNotNull(e.getMessage()); + } + finally { + filter.destroy(); + } + } + + @Test + public void testLifeCycle() throws ServletException { + Filter filter = makeFilter(); + + try { + filter.init(makeFilterConfig()); + } + finally { + filter.destroy(); + } + } + + @Test + public void testFilterBasic() throws ServletException, IOException { + Filter filter = makeFilter(); + + try { + filter.init(makeFilterConfig()); + + filter.doFilter(makeRequest(), makeResponse(), makeFilterChain()); + } + finally { + filter.destroy(); + } + } + + @Test + public void testDestroy() { + // TODO: Implement + } + + static class MockFilterConfig implements FilterConfig { + private final Map params; + + MockFilterConfig(Map pParams) { + if (pParams == null) { + throw new IllegalArgumentException("params == null"); + } + params = pParams; + } + + public String getFilterName() { + return "mock-filter"; + } + + public String getInitParameter(String pName) { + return params.get(pName); + } + + public Enumeration getInitParameterNames() { + return Collections.enumeration(params.keySet()); + } + + public ServletContext getServletContext() { + return new MockServletContext(); + } + + private static class MockServletContext implements ServletContext { + private final Map attributes; + private final Map params; + + MockServletContext() { + attributes = new HashMap(); + params = new HashMap(); + } + + public Object getAttribute(String s) { + return attributes.get(s); + } + + public Enumeration getAttributeNames() { + return Collections.enumeration(attributes.keySet()); + } + + public ServletContext getContext(String s) { + return null; // TODO: Implement + } + + public String getInitParameter(String s) { + return (String) params.get(s); + } + + public Enumeration getInitParameterNames() { + return Collections.enumeration(params.keySet()); + } + + public int getMajorVersion() { + return 0; // TODO: Implement + } + + public String getMimeType(String s) { + return null; // TODO: Implement + } + + public int getMinorVersion() { + return 0; // TODO: Implement + } + + public RequestDispatcher getNamedDispatcher(String s) { + return null; // TODO: Implement + } + + public String getRealPath(String s) { + return null; // TODO: Implement + } + + public RequestDispatcher getRequestDispatcher(String s) { + return null; // TODO: Implement + } + + public URL getResource(String s) throws MalformedURLException { + return null; // TODO: Implement + } + + public InputStream getResourceAsStream(String s) { + return null; // TODO: Implement + } + + public Set getResourcePaths(String s) { + return null; // TODO: Implement + } + + public String getServerInfo() { + return null; // TODO: Implement + } + + public Servlet getServlet(String s) throws ServletException { + return null; // TODO: Implement + } + + public String getServletContextName() { + return "mock"; + } + + public Enumeration getServletNames() { + return null; // TODO: Implement + } + + public Enumeration getServlets() { + return null; // TODO: Implement + } + + public void log(Exception exception, String s) { + } + + public void log(String s) { + } + + public void log(String s, Throwable throwable) { + } + + public void removeAttribute(String s) { + attributes.remove(s); + } + + public void setAttribute(String s, Object obj) { + attributes.put(s, obj); + } + } + } + + static class MockServletRequest implements ServletRequest { + final private Map attributes; + + public MockServletRequest() { + attributes = new HashMap(); + } + + public Object getAttribute(String pKey) { + return attributes.get(pKey); + } + + public Enumeration getAttributeNames() { + return Collections.enumeration(attributes.keySet()); + } + + public String getCharacterEncoding() { + return null; // TODO: Implement + } + + public void setCharacterEncoding(String pMessage) throws UnsupportedEncodingException { + // TODO: Implement + } + + public int getContentLength() { + return 0; // TODO: Implement + } + + public String getContentType() { + return null; // TODO: Implement + } + + public ServletInputStream getInputStream() throws IOException { + return null; // TODO: Implement + } + + public String getParameter(String pMessage) { + return null; // TODO: Implement + } + + public Enumeration getParameterNames() { + return null; // TODO: Implement + } + + public String[] getParameterValues(String pMessage) { + return new String[0]; // TODO: Implement + } + + public Map getParameterMap() { + return null; // TODO: Implement + } + + public String getProtocol() { + return null; // TODO: Implement + } + + public String getScheme() { + return null; // TODO: Implement + } + + public String getServerName() { + return null; // TODO: Implement + } + + public int getServerPort() { + return 0; // TODO: Implement + } + + public BufferedReader getReader() throws IOException { + return null; // TODO: Implement + } + + public String getRemoteAddr() { + return null; // TODO: Implement + } + + public String getRemoteHost() { + return null; // TODO: Implement + } + + public void setAttribute(String pKey, Object pValue) { + attributes.put(pKey, pValue); + } + + public void removeAttribute(String pKey) { + attributes.remove(pKey); + } + + public Locale getLocale() { + return null; // TODO: Implement + } + + public Enumeration getLocales() { + return null; // TODO: Implement + } + + public boolean isSecure() { + return false; // TODO: Implement + } + + public RequestDispatcher getRequestDispatcher(String pMessage) { + return null; // TODO: Implement + } + + public String getRealPath(String pMessage) { + return null; // TODO: Implement + } + + public int getRemotePort() { + throw new UnsupportedOperationException("Method getRemotePort not implemented");// TODO: Implement + } + + public String getLocalName() { + throw new UnsupportedOperationException("Method getLocalName not implemented");// TODO: Implement + } + + public String getLocalAddr() { + throw new UnsupportedOperationException("Method getLocalAddr not implemented");// TODO: Implement + } + + public int getLocalPort() { + throw new UnsupportedOperationException("Method getLocalPort not implemented");// TODO: Implement + } + } + + static class MockServletResponse implements ServletResponse { + public void flushBuffer() throws IOException { + // TODO: Implement + } + + public int getBufferSize() { + return 0; // TODO: Implement + } + + public String getCharacterEncoding() { + return null; // TODO: Implement + } + + public String getContentType() { + throw new UnsupportedOperationException("Method getContentType not implemented");// TODO: Implement + } + + public Locale getLocale() { + return null; // TODO: Implement + } + + public ServletOutputStream getOutputStream() throws IOException { + return null; // TODO: Implement + } + + public PrintWriter getWriter() throws IOException { + return null; // TODO: Implement + } + + public void setCharacterEncoding(String charset) { + throw new UnsupportedOperationException("Method setCharacterEncoding not implemented");// TODO: Implement + } + + public boolean isCommitted() { + return false; // TODO: Implement + } + + public void reset() { + // TODO: Implement + } + + public void resetBuffer() { + // TODO: Implement + } + + public void setBufferSize(int pLength) { + // TODO: Implement + } + + public void setContentLength(int pLength) { + // TODO: Implement + } + + public void setContentType(String pMessage) { + // TODO: Implement + } + + public void setLocale(Locale pLocale) { + // TODO: Implement + } + } + + static class MockFilterChain implements FilterChain { + public void doFilter(ServletRequest pRequest, ServletResponse pResponse) throws IOException, ServletException { + // TODO: Implement + } + } +} diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/GenericFilterTestCase.java b/servlet/src/test/java/com/twelvemonkeys/servlet/GenericFilterTest.java similarity index 72% rename from servlet/src/test/java/com/twelvemonkeys/servlet/GenericFilterTestCase.java rename to servlet/src/test/java/com/twelvemonkeys/servlet/GenericFilterTest.java index 1e04e19b..8efd283a 100755 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/GenericFilterTestCase.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/GenericFilterTest.java @@ -1,157 +1,187 @@ -package com.twelvemonkeys.servlet; - -import org.junit.Test; - -import javax.servlet.*; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -import static org.junit.Assert.*; - -/** - * GenericFilterTestCase - *

    - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/GenericFilterTestCase.java#1 $ - */ -public final class GenericFilterTestCase extends FilterAbstractTestCase { - protected Filter makeFilter() { - return new GenericFilterImpl(); - } - - @Test - public void testInitOncePerRequest() { - // Default FALSE - GenericFilter filter = new GenericFilterImpl(); - - try { - filter.init(makeFilterConfig()); - } - catch (ServletException e) { - fail(e.getMessage()); - } - - assertFalse("OncePerRequest should default to false", filter.oncePerRequest); - filter.destroy(); - - // TRUE - filter = new GenericFilterImpl(); - Map params = new HashMap(); - params.put("once-per-request", "true"); - - try { - filter.init(makeFilterConfig(params)); - } - catch (ServletException e) { - fail(e.getMessage()); - } - - assertTrue("oncePerRequest should be true", filter.oncePerRequest); - filter.destroy(); - - // TRUE - filter = new GenericFilterImpl(); - params = new HashMap(); - params.put("oncePerRequest", "true"); - - try { - filter.init(makeFilterConfig(params)); - } - catch (ServletException e) { - fail(e.getMessage()); - } - - assertTrue("oncePerRequest should be true", filter.oncePerRequest); - filter.destroy(); - } - - @Test - public void testFilterOnlyOnce() { - final GenericFilterImpl filter = new GenericFilterImpl(); - filter.setOncePerRequest(true); - - try { - filter.init(makeFilterConfig()); - } - catch (ServletException e) { - fail(e.getMessage()); - } - - FilterChain chain = new MyFilterChain(new Filter[] {filter, filter, filter}); - - try { - chain.doFilter(makeRequest(), makeResponse()); - } - catch (IOException e) { - fail(e.getMessage()); - } - catch (ServletException e) { - fail(e.getMessage()); - } - - assertEquals("Filter was invoked more than once!", 1, filter.invocationCount); - - filter.destroy(); - } - - @Test - public void testFilterMultiple() { - final GenericFilterImpl filter = new GenericFilterImpl(); - - try { - filter.init(makeFilterConfig()); - } - catch (ServletException e) { - fail(e.getMessage()); - } - - FilterChain chain = new MyFilterChain(new Filter[] { - filter, filter, filter, filter, filter - }); - - try { - chain.doFilter(makeRequest(), makeResponse()); - } - catch (IOException e) { - fail(e.getMessage()); - } - catch (ServletException e) { - fail(e.getMessage()); - } - - assertEquals("Filter was invoked not invoked five times!", 5, filter.invocationCount); - - filter.destroy(); - } - - private static class GenericFilterImpl extends GenericFilter { - int invocationCount; - protected void doFilterImpl(ServletRequest pRequest, ServletResponse pResponse, FilterChain pChain) throws IOException, ServletException { - invocationCount++; - pChain.doFilter(pRequest, pResponse); - } - } - - private static class MyFilterChain implements FilterChain { - - Filter[] mFilters; - int mCurrentFilter; - - public MyFilterChain(Filter[] pFilters) { - if (pFilters == null) { - throw new IllegalArgumentException("filters == null"); - } - mFilters = pFilters; - mCurrentFilter = 0; - } - - public void doFilter(ServletRequest pRequest, ServletResponse pResponse) throws IOException, ServletException { - if (mCurrentFilter < mFilters.length) { - mFilters[mCurrentFilter++].doFilter(pRequest, pResponse, this); - } - } - } -} +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.servlet; + +import org.junit.Test; + +import javax.servlet.*; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.Assert.*; + +/** + * GenericFilterTestCase + *

    + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/GenericFilterTestCase.java#1 $ + */ +public final class GenericFilterTest extends FilterAbstractTest { + protected Filter makeFilter() { + return new GenericFilterImpl(); + } + + @Test + public void testInitOncePerRequest() { + // Default FALSE + GenericFilter filter = new GenericFilterImpl(); + + try { + filter.init(makeFilterConfig()); + } + catch (ServletException e) { + fail(e.getMessage()); + } + + assertFalse("OncePerRequest should default to false", filter.oncePerRequest); + filter.destroy(); + + // TRUE + filter = new GenericFilterImpl(); + Map params = new HashMap(); + params.put("once-per-request", "true"); + + try { + filter.init(makeFilterConfig(params)); + } + catch (ServletException e) { + fail(e.getMessage()); + } + + assertTrue("oncePerRequest should be true", filter.oncePerRequest); + filter.destroy(); + + // TRUE + filter = new GenericFilterImpl(); + params = new HashMap(); + params.put("oncePerRequest", "true"); + + try { + filter.init(makeFilterConfig(params)); + } + catch (ServletException e) { + fail(e.getMessage()); + } + + assertTrue("oncePerRequest should be true", filter.oncePerRequest); + filter.destroy(); + } + + @Test + public void testFilterOnlyOnce() { + final GenericFilterImpl filter = new GenericFilterImpl(); + filter.setOncePerRequest(true); + + try { + filter.init(makeFilterConfig()); + } + catch (ServletException e) { + fail(e.getMessage()); + } + + FilterChain chain = new MyFilterChain(new Filter[] {filter, filter, filter}); + + try { + chain.doFilter(makeRequest(), makeResponse()); + } + catch (IOException e) { + fail(e.getMessage()); + } + catch (ServletException e) { + fail(e.getMessage()); + } + + assertEquals("Filter was invoked more than once!", 1, filter.invocationCount); + + filter.destroy(); + } + + @Test + public void testFilterMultiple() { + final GenericFilterImpl filter = new GenericFilterImpl(); + + try { + filter.init(makeFilterConfig()); + } + catch (ServletException e) { + fail(e.getMessage()); + } + + FilterChain chain = new MyFilterChain(new Filter[] { + filter, filter, filter, filter, filter + }); + + try { + chain.doFilter(makeRequest(), makeResponse()); + } + catch (IOException e) { + fail(e.getMessage()); + } + catch (ServletException e) { + fail(e.getMessage()); + } + + assertEquals("Filter was invoked not invoked five times!", 5, filter.invocationCount); + + filter.destroy(); + } + + private static class GenericFilterImpl extends GenericFilter { + int invocationCount; + protected void doFilterImpl(ServletRequest pRequest, ServletResponse pResponse, FilterChain pChain) throws IOException, ServletException { + invocationCount++; + pChain.doFilter(pRequest, pResponse); + } + } + + private static class MyFilterChain implements FilterChain { + + Filter[] mFilters; + int mCurrentFilter; + + public MyFilterChain(Filter[] pFilters) { + if (pFilters == null) { + throw new IllegalArgumentException("filters == null"); + } + mFilters = pFilters; + mCurrentFilter = 0; + } + + public void doFilter(ServletRequest pRequest, ServletResponse pResponse) throws IOException, ServletException { + if (mCurrentFilter < mFilters.length) { + mFilters[mCurrentFilter++].doFilter(pRequest, pResponse, this); + } + } + } +} diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletAttributesMapAdapterContextTest.java b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletAttributesMapAdapterContextTest.java index 759714e4..5d25f825 100755 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletAttributesMapAdapterContextTest.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletAttributesMapAdapterContextTest.java @@ -4,37 +4,42 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; -import com.twelvemonkeys.util.MapAbstractTestCase; +import com.twelvemonkeys.util.MapAbstractTest; +import org.junit.Test; import org.mockito.Mockito; import javax.servlet.ServletContext; import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.mockito.Mockito.mock; /** @@ -44,7 +49,7 @@ import static org.mockito.Mockito.mock; * @author Harald Kuhr * @version $Id: ServletAttributesMapAdapterTestCase.java#1 $ */ -public class ServletAttributesMapAdapterContextTest extends MapAbstractTestCase { +public class ServletAttributesMapAdapterContextTest extends MapAbstractTest { private static final String ATTRIB_VALUE_ETAG = "\"1234567890abcdef\""; private static final Date ATTRIB_VALUE_DATE = new Date(); private static final List ATTRIB_VALUE_FOO = Arrays.asList(1, 2); @@ -108,6 +113,7 @@ public class ServletAttributesMapAdapterContextTest extends MapAbstractTestCase return new Object[] {new Date(-1l), "foo/bar", Arrays.asList(2, 3, 4)}; } + @Test @SuppressWarnings("unchecked") @Override public void testMapPutNullValue() { diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletAttributesMapAdapterRequestTest.java b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletAttributesMapAdapterRequestTest.java index ee461352..a8d0cb4b 100755 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletAttributesMapAdapterRequestTest.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletAttributesMapAdapterRequestTest.java @@ -4,37 +4,42 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; -import com.twelvemonkeys.util.MapAbstractTestCase; +import com.twelvemonkeys.util.MapAbstractTest; +import org.junit.Test; import org.mockito.Mockito; import javax.servlet.ServletRequest; import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.mockito.Mockito.mock; /** @@ -44,7 +49,7 @@ import static org.mockito.Mockito.mock; * @author Harald Kuhr * @version $Id: ServletAttributesMapAdapterTestCase.java#1 $ */ -public class ServletAttributesMapAdapterRequestTest extends MapAbstractTestCase { +public class ServletAttributesMapAdapterRequestTest extends MapAbstractTest { private static final String ATTRIB_VALUE_ETAG = "\"1234567890abcdef\""; private static final Date ATTRIB_VALUE_DATE = new Date(); private static final List ATTRIB_VALUE_FOO = Arrays.asList(1, 2); @@ -108,6 +113,7 @@ public class ServletAttributesMapAdapterRequestTest extends MapAbstractTestCase return new Object[] {new Date(-1l), "foo/bar", Arrays.asList(2, 3, 4)}; } + @Test @SuppressWarnings("unchecked") @Override public void testMapPutNullValue() { diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfigExceptionTestCase.java b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfigExceptionTest.java similarity index 64% rename from servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfigExceptionTestCase.java rename to servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfigExceptionTest.java index 93df14a6..eb7dc2cd 100755 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfigExceptionTestCase.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfigExceptionTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet; import com.twelvemonkeys.io.NullOutputStream; @@ -5,7 +35,8 @@ import org.junit.Test; import java.io.PrintWriter; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; /** * ServletConfigExceptionTestCase @@ -14,7 +45,7 @@ import static org.junit.Assert.*; * @author last modified by $Author: haku $ * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfigExceptionTestCase.java#2 $ */ -public class ServletConfigExceptionTestCase { +public class ServletConfigExceptionTest { @Test public void testThrowCatchPrintStacktrace() { try { diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfigMapAdapterTest.java b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfigMapAdapterTest.java index 7a164636..4f972f81 100755 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfigMapAdapterTest.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfigMapAdapterTest.java @@ -1,6 +1,36 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet; -import com.twelvemonkeys.util.MapAbstractTestCase; +import com.twelvemonkeys.util.MapAbstractTest; import org.junit.runner.RunWith; import org.junit.runners.Suite; @@ -23,7 +53,7 @@ import java.util.*; public final class ServletConfigMapAdapterTest { } -abstract class AbstractServletConfigMapAdapterTest extends MapAbstractTestCase { +abstract class AbstractServletConfigMapAdapterTest extends MapAbstractTest { public boolean isPutAddSupported() { return false; diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfiguratorTestCase.java b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfiguratorTest.java similarity index 88% rename from servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfiguratorTestCase.java rename to servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfiguratorTest.java index 63f9565f..fa0a7a92 100644 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfiguratorTestCase.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletConfiguratorTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet; import org.junit.Test; @@ -10,7 +40,7 @@ import javax.servlet.ServletConfig; import java.util.Arrays; import java.util.Collections; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.*; /** @@ -20,7 +50,7 @@ import static org.mockito.Mockito.*; * @author last modified by $Author: haraldk$ * @version $Id: ServletConfiguratorTestCase.java,v 1.0 May 2, 2010 3:08:33 PM haraldk Exp$ */ -public class ServletConfiguratorTestCase { +public class ServletConfiguratorTest { // TODO: Test error conditions: // - Missing name = ... or non-bean conforming method diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletHeadersMapAdapterTest.java b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletHeadersMapAdapterTest.java index f70d214c..94521605 100755 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletHeadersMapAdapterTest.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletHeadersMapAdapterTest.java @@ -1,6 +1,36 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet; -import com.twelvemonkeys.util.MapAbstractTestCase; +import com.twelvemonkeys.util.MapAbstractTest; import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; @@ -11,13 +41,13 @@ import java.util.*; import static org.mockito.Mockito.when; /** - * ServletConfigMapAdapterTestCase + * ServletConfigMapAdapterTest *

    * * @author Harald Kuhr - * @version $Id: ServletHeadersMapAdapterTestCase.java#1 $ + * @version $Id: ServletHeadersMapAdapterTest.java#1 $ */ -public class ServletHeadersMapAdapterTest extends MapAbstractTestCase { +public class ServletHeadersMapAdapterTest extends MapAbstractTest { private static final List HEADER_VALUE_ETAG = Arrays.asList("\"1234567890abcdef\""); private static final List HEADER_VALUE_DATE = Arrays.asList(new Date().toString()); private static final List HEADER_VALUE_FOO = Arrays.asList("one", "two"); diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletParametersMapAdapterTest.java b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletParametersMapAdapterTest.java index f042b325..934ddb8f 100755 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletParametersMapAdapterTest.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletParametersMapAdapterTest.java @@ -1,6 +1,36 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet; -import com.twelvemonkeys.util.MapAbstractTestCase; +import com.twelvemonkeys.util.MapAbstractTest; import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; @@ -11,13 +41,13 @@ import java.util.*; import static org.mockito.Mockito.when; /** - * ServletConfigMapAdapterTestCase + * ServletConfigMapAdapterTest *

    * * @author Harald Kuhr - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/ServletParametersMapAdapterTestCase.java#1 $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/ServletParametersMapAdapterTest.java#1 $ */ -public class ServletParametersMapAdapterTest extends MapAbstractTestCase { +public class ServletParametersMapAdapterTest extends MapAbstractTest { private static final List PARAM_VALUE_ETAG = Arrays.asList("\"1234567890abcdef\""); private static final List PARAM_VALUE_DATE = Arrays.asList(new Date().toString()); private static final List PARAM_VALUE_FOO = Arrays.asList("one", "two"); diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletResponseAbsrtactTest.java b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletResponseAbsrtactTest.java new file mode 100755 index 00000000..819871b7 --- /dev/null +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletResponseAbsrtactTest.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.servlet; + +import com.twelvemonkeys.lang.ObjectAbstractTest; + +import javax.servlet.ServletResponse; + +/** + * ServletResponseAbsrtactTestCase + *

    + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/ServletResponseAbsrtactTestCase.java#1 $ + */ +public abstract class ServletResponseAbsrtactTest extends ObjectAbstractTest { + protected Object makeObject() { + return makeServletResponse(); + } + + protected abstract ServletResponse makeServletResponse(); + + // TODO: Implement +} diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletResponseAbsrtactTestCase.java b/servlet/src/test/java/com/twelvemonkeys/servlet/ServletResponseAbsrtactTestCase.java deleted file mode 100755 index 222b5ea4..00000000 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/ServletResponseAbsrtactTestCase.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.twelvemonkeys.servlet; - -import com.twelvemonkeys.lang.ObjectAbstractTestCase; - -import javax.servlet.ServletResponse; - -/** - * ServletResponseAbsrtactTestCase - *

    - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/ServletResponseAbsrtactTestCase.java#1 $ - */ -public abstract class ServletResponseAbsrtactTestCase extends ObjectAbstractTestCase { - protected Object makeObject() { - return makeServletResponse(); - } - - protected abstract ServletResponse makeServletResponse(); - - // TODO: Implement -} diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/StaticContentServletTestCase.java b/servlet/src/test/java/com/twelvemonkeys/servlet/StaticContentServletTest.java similarity index 87% rename from servlet/src/test/java/com/twelvemonkeys/servlet/StaticContentServletTestCase.java rename to servlet/src/test/java/com/twelvemonkeys/servlet/StaticContentServletTest.java index 922bb6cb..a3361102 100644 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/StaticContentServletTestCase.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/StaticContentServletTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet; @@ -48,13 +50,13 @@ import static org.mockito.Mockito.*; /** - * StaticContentServletTestCase + * StaticContentServletTest * * @author Harald Kuhr * @author last modified by $Author: haraldk$ - * @version $Id: StaticContentServletTestCase.java,v 1.0 12.12.11 15:10 haraldk Exp$ + * @version $Id: StaticContentServletTest.java,v 1.0 12.12.11 15:10 haraldk Exp$ */ -public class StaticContentServletTestCase { +public class StaticContentServletTest { private static final String IMAGE_RESOURCE = "/12monkeys-splash.png"; @@ -64,7 +66,7 @@ public class StaticContentServletTestCase { } private static File getResourceAsFile(String resourceName) { - URL resource = StaticContentServletTestCase.class.getResource("/com/twelvemonkeys/servlet/image" + resourceName); + URL resource = StaticContentServletTest.class.getResource("/com/twelvemonkeys/servlet/image" + resourceName); try { return new File(resource.toURI()); diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/TrimWhiteSpaceFilterTestCase.java b/servlet/src/test/java/com/twelvemonkeys/servlet/TrimWhiteSpaceFilterTest.java similarity index 91% rename from servlet/src/test/java/com/twelvemonkeys/servlet/TrimWhiteSpaceFilterTestCase.java rename to servlet/src/test/java/com/twelvemonkeys/servlet/TrimWhiteSpaceFilterTest.java index 20bcca89..498496ac 100755 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/TrimWhiteSpaceFilterTestCase.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/TrimWhiteSpaceFilterTest.java @@ -1,115 +1,115 @@ -package com.twelvemonkeys.servlet; - -import com.twelvemonkeys.io.OutputStreamAbstractTestCase; -import org.junit.Test; - -import javax.servlet.Filter; -import javax.servlet.ServletResponse; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; - -import static org.junit.Assert.*; - -/** - * TrimWhiteSpaceFilterTestCase - *

    - * - * @author Harald Kuhr - * @author last modified by $Author: haku $ - * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/TrimWhiteSpaceFilterTestCase.java#1 $ - */ -public class TrimWhiteSpaceFilterTestCase extends FilterAbstractTestCase { - protected Filter makeFilter() { - return new TrimWhiteSpaceFilter(); - } - - public static final class TrimWSFilterOutputStreamTestCase extends OutputStreamAbstractTestCase { - protected OutputStream makeObject() { - // NOTE: ByteArrayOutputStream does not implement flush or close... - return makeOutputStream(new ByteArrayOutputStream(16)); - } - - protected OutputStream makeOutputStream(OutputStream pWrapped) { - return new TrimWhiteSpaceFilter.TrimWSFilterOutputStream(pWrapped); - } - - @Test - public void testTrimWSOnlyWS() throws IOException { - ByteArrayOutputStream out = new ByteArrayOutputStream(64); - OutputStream trim = makeOutputStream(out); - - String input = " \n\n\t \t" + (char) 0x0a + ' ' + (char) 0x0d + "\r "; - - trim.write(input.getBytes()); - trim.flush(); - trim.close(); - - assertEquals("Should be trimmed", "\"\"", '"' + new String(out.toByteArray()) + '"'); - } - - @Test - public void testTrimWSLeading() throws IOException { - ByteArrayOutputStream out = new ByteArrayOutputStream(64); - OutputStream trim = makeOutputStream(out); - - byte[] input = " \n\n\t \t".getBytes(); - String trimmed = "\n "; // TODO: This is pr spec (the trailing space). But probably quite stupid... - - trim.write(input); - trim.flush(); - trim.close(); - - assertEquals("Should be trimmed", '"' + trimmed + '"', '"' + new String(out.toByteArray()) + '"'); - } - - @Test - public void testTrimWSOffsetLength() throws IOException { - ByteArrayOutputStream out = new ByteArrayOutputStream(64); - OutputStream trim = makeOutputStream(out); - - // Kindly generated by http://lipsum.org/ :-) - byte[] input = (" \n\tLorem ipsum dolor sit amet, consectetuer adipiscing elit.\n\r\n\r" + - "Etiam arcu neque, \n\rmalesuada blandit,\t\n\r\n\r\n\n\n\r\n\r\r\n\n\t rutrum quis, molestie at, diam.\n" + - " Nulla elementum elementum eros.\n \t\t\n\r" + - "Ut rhoncus, turpis in pellentesque volutpat, sapien sem accumsan augue, a scelerisque nibh erat vel magna.\n" + - " Phasellus diam orci, dignissim et, gravida vitae, venenatis eu, elit.\n" + - "\t\t\tSuspendisse dictum enim at nisl. Integer magna erat, viverra sit amet, consectetuer nec, accumsan ut, mi.\n" + - "\n\r\r\r\n\rNunc ultricies \n\n\n consectetuer mauris. " + - "Nulla lectus mauris, viverra ac, pulvinar a, commodo quis, nulla.\n " + - "Ut eget nulla. In est dolor, convallis \t non, tincidunt \tvestibulum, porttitor et, eros.\n " + - "\t\t \t \n\rDonec vehicula ultrices nisl.").getBytes(); - - String trimmed = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\n" + - "Etiam arcu neque, malesuada blandit,\trutrum quis, molestie at, diam.\n" + - "Nulla elementum elementum eros.\n" + - "Ut rhoncus, turpis in pellentesque volutpat, sapien sem accumsan augue, a scelerisque nibh erat vel magna.\n" + - "Phasellus diam orci, dignissim et, gravida vitae, venenatis eu, elit.\n" + - "Suspendisse dictum enim at nisl. Integer magna erat, viverra sit amet, consectetuer nec, accumsan ut, mi.\n" + - "Nunc ultricies consectetuer mauris. Nulla lectus mauris, viverra ac, pulvinar a, commodo quis, nulla.\n" + - "Ut eget nulla. In est dolor, convallis non, tincidunt vestibulum, porttitor et, eros.\n" + - "Donec vehicula ultrices nisl."; - - int chunkLenght = 5; - int bytesLeft = input.length; - while (bytesLeft > chunkLenght) { - trim.write(input, input.length - bytesLeft, chunkLenght); - bytesLeft -= chunkLenght; - } - trim.write(input, input.length - bytesLeft, bytesLeft); - - trim.flush(); - trim.close(); - - assertEquals("Should be trimmed", '"' + trimmed + '"', '"' + new String(out.toByteArray()) + '"'); - } - - // TODO: Test that we DON'T remove too much... - } - - public static final class TrimWSServletResponseWrapperTestCase extends ServletResponseAbsrtactTestCase { - protected ServletResponse makeServletResponse() { - return new TrimWhiteSpaceFilter.TrimWSServletResponseWrapper(new MockServletResponse()); - } - } -} +package com.twelvemonkeys.servlet; + +import com.twelvemonkeys.io.OutputStreamAbstractTest; +import org.junit.Test; + +import javax.servlet.Filter; +import javax.servlet.ServletResponse; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +import static org.junit.Assert.assertEquals; + +/** + * TrimWhiteSpaceFilterTestCase + *

    + * + * @author Harald Kuhr + * @author last modified by $Author: haku $ + * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/TrimWhiteSpaceFilterTestCase.java#1 $ + */ +public class TrimWhiteSpaceFilterTest extends FilterAbstractTest { + protected Filter makeFilter() { + return new TrimWhiteSpaceFilter(); + } + + public static final class TrimWSFilterOutputStreamTest extends OutputStreamAbstractTest { + protected OutputStream makeObject() { + // NOTE: ByteArrayOutputStream does not implement flush or close... + return makeOutputStream(new ByteArrayOutputStream(16)); + } + + protected OutputStream makeOutputStream(OutputStream pWrapped) { + return new TrimWhiteSpaceFilter.TrimWSFilterOutputStream(pWrapped); + } + + @Test + public void testTrimWSOnlyWS() throws IOException { + ByteArrayOutputStream out = new ByteArrayOutputStream(64); + OutputStream trim = makeOutputStream(out); + + String input = " \n\n\t \t" + (char) 0x0a + ' ' + (char) 0x0d + "\r "; + + trim.write(input.getBytes()); + trim.flush(); + trim.close(); + + assertEquals("Should be trimmed", "\"\"", '"' + new String(out.toByteArray()) + '"'); + } + + @Test + public void testTrimWSLeading() throws IOException { + ByteArrayOutputStream out = new ByteArrayOutputStream(64); + OutputStream trim = makeOutputStream(out); + + byte[] input = " \n\n\t \t".getBytes(); + String trimmed = "\n "; // TODO: This is pr spec (the trailing space). But probably quite stupid... + + trim.write(input); + trim.flush(); + trim.close(); + + assertEquals("Should be trimmed", '"' + trimmed + '"', '"' + new String(out.toByteArray()) + '"'); + } + + @Test + public void testTrimWSOffsetLength() throws IOException { + ByteArrayOutputStream out = new ByteArrayOutputStream(64); + OutputStream trim = makeOutputStream(out); + + // Kindly generated by http://lipsum.org/ :-) + byte[] input = (" \n\tLorem ipsum dolor sit amet, consectetuer adipiscing elit.\n\r\n\r" + + "Etiam arcu neque, \n\rmalesuada blandit,\t\n\r\n\r\n\n\n\r\n\r\r\n\n\t rutrum quis, molestie at, diam.\n" + + " Nulla elementum elementum eros.\n \t\t\n\r" + + "Ut rhoncus, turpis in pellentesque volutpat, sapien sem accumsan augue, a scelerisque nibh erat vel magna.\n" + + " Phasellus diam orci, dignissim et, gravida vitae, venenatis eu, elit.\n" + + "\t\t\tSuspendisse dictum enim at nisl. Integer magna erat, viverra sit amet, consectetuer nec, accumsan ut, mi.\n" + + "\n\r\r\r\n\rNunc ultricies \n\n\n consectetuer mauris. " + + "Nulla lectus mauris, viverra ac, pulvinar a, commodo quis, nulla.\n " + + "Ut eget nulla. In est dolor, convallis \t non, tincidunt \tvestibulum, porttitor et, eros.\n " + + "\t\t \t \n\rDonec vehicula ultrices nisl.").getBytes(); + + String trimmed = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\n" + + "Etiam arcu neque, malesuada blandit,\trutrum quis, molestie at, diam.\n" + + "Nulla elementum elementum eros.\n" + + "Ut rhoncus, turpis in pellentesque volutpat, sapien sem accumsan augue, a scelerisque nibh erat vel magna.\n" + + "Phasellus diam orci, dignissim et, gravida vitae, venenatis eu, elit.\n" + + "Suspendisse dictum enim at nisl. Integer magna erat, viverra sit amet, consectetuer nec, accumsan ut, mi.\n" + + "Nunc ultricies consectetuer mauris. Nulla lectus mauris, viverra ac, pulvinar a, commodo quis, nulla.\n" + + "Ut eget nulla. In est dolor, convallis non, tincidunt vestibulum, porttitor et, eros.\n" + + "Donec vehicula ultrices nisl."; + + int chunkLenght = 5; + int bytesLeft = input.length; + while (bytesLeft > chunkLenght) { + trim.write(input, input.length - bytesLeft, chunkLenght); + bytesLeft -= chunkLenght; + } + trim.write(input, input.length - bytesLeft, bytesLeft); + + trim.flush(); + trim.close(); + + assertEquals("Should be trimmed", '"' + trimmed + '"', '"' + new String(out.toByteArray()) + '"'); + } + + // TODO: Test that we DON'T remove too much... + } + + public static final class TrimWSServletResponseWrapperTest extends ServletResponseAbsrtactTest { + protected ServletResponse makeServletResponse() { + return new TrimWhiteSpaceFilter.TrimWSServletResponseWrapper(new MockServletResponse()); + } + } +} diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/cache/HTTPCacheTestCase.java b/servlet/src/test/java/com/twelvemonkeys/servlet/cache/HTTPCacheTest.java similarity index 96% rename from servlet/src/test/java/com/twelvemonkeys/servlet/cache/HTTPCacheTestCase.java rename to servlet/src/test/java/com/twelvemonkeys/servlet/cache/HTTPCacheTest.java index dbe759aa..f720817a 100755 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/cache/HTTPCacheTestCase.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/cache/HTTPCacheTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.cache; import com.twelvemonkeys.net.HTTPUtil; @@ -22,13 +52,13 @@ import static org.junit.Assert.*; import static org.mockito.Mockito.*; /** - * CacheManagerTestCase + * HTTPCacheTest * * @author Harald Kuhr * @author last modified by $Author: haku $ * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/cache/HTTPCacheTestCase.java#2 $ */ -public class HTTPCacheTestCase { +public class HTTPCacheTest { @Rule public final TestName name = new TestName(); diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/image/IIOProviderContextListenerTest.java b/servlet/src/test/java/com/twelvemonkeys/servlet/image/IIOProviderContextListenerTest.java index 02f96a0c..99b25123 100644 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/image/IIOProviderContextListenerTest.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/image/IIOProviderContextListenerTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; @@ -39,7 +41,8 @@ import javax.servlet.ServletContextListener; import java.io.IOException; import java.util.Locale; -import static org.junit.Assert.*; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageFilterTestCase.java b/servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageFilterTest.java similarity index 93% rename from servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageFilterTestCase.java rename to servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageFilterTest.java index ebb8dce8..8868a964 100644 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageFilterTestCase.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageFilterTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.servlet.image; @@ -51,13 +53,13 @@ import static org.junit.Assert.*; import static org.mockito.Mockito.*; /** - * ImageFilterTestCase + * ImageFilterTest * * @author Harald Kuhr * @author last modified by $Author: haraldk$ - * @version $Id: ImageFilterTestCase.java,v 1.0 07.04.11 14.14 haraldk Exp$ + * @version $Id: ImageFilterTest.java,v 1.0 07.04.11 14.14 haraldk Exp$ */ -public class ImageFilterTestCase { +public class ImageFilterTest { @Test public void passThroughIfNotTrigger() throws ServletException, IOException { diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageServletResponseImplTestCase.java b/servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageServletResponseImplTest.java similarity index 97% rename from servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageServletResponseImplTestCase.java rename to servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageServletResponseImplTest.java index 10117d3b..c50f9ae8 100755 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageServletResponseImplTestCase.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageServletResponseImplTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.image; import com.twelvemonkeys.image.BufferedImageIcon; @@ -28,13 +58,13 @@ import static org.junit.Assert.*; import static org.mockito.Mockito.*; /** - * ImageServletResponseImplTestCase + * ImageServletResponseImplTest * * @author Harald Kuhr * @author last modified by $Author: haku $ - * @version $Id: twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageServletResponseImplTestCase.java#6 $ + * @version $Id: twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/image/ImageServletResponseImplTest.java#6 $ */ -public class ImageServletResponseImplTestCase { +public class ImageServletResponseImplTest { private static final String CONTENT_TYPE_BMP = "image/bmp"; private static final String CONTENT_TYPE_FOO = "foo/bar"; private static final String CONTENT_TYPE_GIF = "image/gif"; diff --git a/servlet/src/test/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestTestCase.java b/servlet/src/test/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestTest.java similarity index 88% rename from servlet/src/test/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestTestCase.java rename to servlet/src/test/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestTest.java index f3782ad8..db0c9525 100644 --- a/servlet/src/test/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestTestCase.java +++ b/servlet/src/test/java/com/twelvemonkeys/servlet/image/aoi/AreaOfInterestTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2008, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.servlet.image.aoi; import org.junit.Test; @@ -10,7 +40,7 @@ import static org.junit.Assert.assertEquals; * @author Erlend Hamnaberg * @version $Revision: $ */ -public class AreaOfInterestTestCase { +public class AreaOfInterestTest { private static final Dimension SQUARE_200_200 = new Dimension(200, 200); private static final Dimension PORTRAIT_100_200 = new Dimension(100, 200); private static final Dimension LANDSCAPE_200_100 = new Dimension(200, 100); From 6cf9152508edf931e3ab051cde70625113411f9b Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 18 Aug 2018 20:02:15 +0200 Subject: [PATCH 018/277] Batik 1.9 --- imageio/imageio-batik/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/imageio/imageio-batik/pom.xml b/imageio/imageio-batik/pom.xml index 39ca0cdb..74e8608d 100644 --- a/imageio/imageio-batik/pom.xml +++ b/imageio/imageio-batik/pom.xml @@ -49,7 +49,7 @@ org.apache.xmlgraphics xmlgraphics-commons - 2.0.1 + 2.2 provided @@ -88,6 +88,6 @@ - 1.8 + 1.9 From 83adf121e2284d45a82a2fc2dab99f707fe17ef3 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 18 Aug 2018 20:28:59 +0200 Subject: [PATCH 019/277] [maven-release-plugin] prepare release twelvemonkeys-3.4 --- bom/pom.xml | 2 +- common/common-image/pom.xml | 2 +- common/common-io/pom.xml | 2 +- common/common-lang/pom.xml | 2 +- common/pom.xml | 2 +- contrib/pom.xml | 2 +- imageio/imageio-batik/pom.xml | 2 +- imageio/imageio-bmp/pom.xml | 2 +- imageio/imageio-clippath/pom.xml | 2 +- imageio/imageio-core/pom.xml | 2 +- imageio/imageio-hdr/pom.xml | 2 +- imageio/imageio-icns/pom.xml | 2 +- imageio/imageio-iff/pom.xml | 2 +- imageio/imageio-jpeg/pom.xml | 2 +- imageio/imageio-metadata/pom.xml | 2 +- imageio/imageio-pcx/pom.xml | 2 +- imageio/imageio-pdf/pom.xml | 2 +- imageio/imageio-pict/pom.xml | 2 +- imageio/imageio-pnm/pom.xml | 2 +- imageio/imageio-psd/pom.xml | 2 +- imageio/imageio-reference/pom.xml | 2 +- imageio/imageio-sgi/pom.xml | 2 +- imageio/imageio-tga/pom.xml | 2 +- imageio/imageio-thumbsdb/pom.xml | 2 +- imageio/imageio-tiff/pom.xml | 2 +- imageio/pom.xml | 2 +- pom.xml | 4 ++-- servlet/pom.xml | 2 +- 28 files changed, 29 insertions(+), 29 deletions(-) diff --git a/bom/pom.xml b/bom/pom.xml index 42a7ed3c..bd1337a2 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -5,7 +5,7 @@ com.twelvemonkeys twelvemonkeys - 3.4-SNAPSHOT + 3.4 com.twelvemonkeys.bom diff --git a/common/common-image/pom.xml b/common/common-image/pom.xml index cdef6ab4..94697ec5 100644 --- a/common/common-image/pom.xml +++ b/common/common-image/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.4-SNAPSHOT + 3.4 common-image jar diff --git a/common/common-io/pom.xml b/common/common-io/pom.xml index 19f61ccc..a0bc4e89 100644 --- a/common/common-io/pom.xml +++ b/common/common-io/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.4-SNAPSHOT + 3.4 common-io jar diff --git a/common/common-lang/pom.xml b/common/common-lang/pom.xml index 79316441..71572c9d 100644 --- a/common/common-lang/pom.xml +++ b/common/common-lang/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.4-SNAPSHOT + 3.4 common-lang jar diff --git a/common/pom.xml b/common/pom.xml index eb530041..13da022f 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys twelvemonkeys - 3.4-SNAPSHOT + 3.4 com.twelvemonkeys.common common diff --git a/contrib/pom.xml b/contrib/pom.xml index f50aac23..8804b9a5 100644 --- a/contrib/pom.xml +++ b/contrib/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys twelvemonkeys - 3.4-SNAPSHOT + 3.4 com.twelvemonkeys.contrib contrib diff --git a/imageio/imageio-batik/pom.xml b/imageio/imageio-batik/pom.xml index 74e8608d..005b3dbd 100644 --- a/imageio/imageio-batik/pom.xml +++ b/imageio/imageio-batik/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-batik TwelveMonkeys :: ImageIO :: Batik Plugin diff --git a/imageio/imageio-bmp/pom.xml b/imageio/imageio-bmp/pom.xml index e4a24e22..b8513327 100644 --- a/imageio/imageio-bmp/pom.xml +++ b/imageio/imageio-bmp/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-bmp TwelveMonkeys :: ImageIO :: BMP plugin diff --git a/imageio/imageio-clippath/pom.xml b/imageio/imageio-clippath/pom.xml index 45ba89f4..be2dbc16 100755 --- a/imageio/imageio-clippath/pom.xml +++ b/imageio/imageio-clippath/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-clippath TwelveMonkeys :: ImageIO :: Photoshop Path Support diff --git a/imageio/imageio-core/pom.xml b/imageio/imageio-core/pom.xml index 34e815db..02fcfb0f 100644 --- a/imageio/imageio-core/pom.xml +++ b/imageio/imageio-core/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-core TwelveMonkeys :: ImageIO :: Core diff --git a/imageio/imageio-hdr/pom.xml b/imageio/imageio-hdr/pom.xml index 985c48f7..0b3d83ad 100644 --- a/imageio/imageio-hdr/pom.xml +++ b/imageio/imageio-hdr/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-hdr TwelveMonkeys :: ImageIO :: HDR plugin diff --git a/imageio/imageio-icns/pom.xml b/imageio/imageio-icns/pom.xml index 9a76609e..4c8ac65c 100644 --- a/imageio/imageio-icns/pom.xml +++ b/imageio/imageio-icns/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-icns TwelveMonkeys :: ImageIO :: ICNS plugin diff --git a/imageio/imageio-iff/pom.xml b/imageio/imageio-iff/pom.xml index 0c5176f1..bef78bb1 100644 --- a/imageio/imageio-iff/pom.xml +++ b/imageio/imageio-iff/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-iff TwelveMonkeys :: ImageIO :: IFF plugin diff --git a/imageio/imageio-jpeg/pom.xml b/imageio/imageio-jpeg/pom.xml index 913c4426..831918eb 100644 --- a/imageio/imageio-jpeg/pom.xml +++ b/imageio/imageio-jpeg/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-jpeg TwelveMonkeys :: ImageIO :: JPEG plugin diff --git a/imageio/imageio-metadata/pom.xml b/imageio/imageio-metadata/pom.xml index 659f5428..442ddc4c 100644 --- a/imageio/imageio-metadata/pom.xml +++ b/imageio/imageio-metadata/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 4.0.0 imageio-metadata diff --git a/imageio/imageio-pcx/pom.xml b/imageio/imageio-pcx/pom.xml index f775b43d..bc310044 100755 --- a/imageio/imageio-pcx/pom.xml +++ b/imageio/imageio-pcx/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-pcx TwelveMonkeys :: ImageIO :: PCX plugin diff --git a/imageio/imageio-pdf/pom.xml b/imageio/imageio-pdf/pom.xml index 1ccf8f17..cead11b2 100644 --- a/imageio/imageio-pdf/pom.xml +++ b/imageio/imageio-pdf/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-pdf TwelveMonkeys :: ImageIO :: PDF plugin diff --git a/imageio/imageio-pict/pom.xml b/imageio/imageio-pict/pom.xml index 758bff49..ea321ed5 100644 --- a/imageio/imageio-pict/pom.xml +++ b/imageio/imageio-pict/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-pict TwelveMonkeys :: ImageIO :: PICT plugin diff --git a/imageio/imageio-pnm/pom.xml b/imageio/imageio-pnm/pom.xml index b36295f6..ef889b0a 100755 --- a/imageio/imageio-pnm/pom.xml +++ b/imageio/imageio-pnm/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-pnm TwelveMonkeys :: ImageIO :: PNM plugin diff --git a/imageio/imageio-psd/pom.xml b/imageio/imageio-psd/pom.xml index 9eb4a91d..79ab47c1 100644 --- a/imageio/imageio-psd/pom.xml +++ b/imageio/imageio-psd/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-psd TwelveMonkeys :: ImageIO :: PSD plugin diff --git a/imageio/imageio-reference/pom.xml b/imageio/imageio-reference/pom.xml index 94ad0bf7..1b0def0b 100644 --- a/imageio/imageio-reference/pom.xml +++ b/imageio/imageio-reference/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-reference TwelveMonkeys :: ImageIO :: reference test cases diff --git a/imageio/imageio-sgi/pom.xml b/imageio/imageio-sgi/pom.xml index 4fe7bb94..d3e62368 100755 --- a/imageio/imageio-sgi/pom.xml +++ b/imageio/imageio-sgi/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-sgi TwelveMonkeys :: ImageIO :: SGI plugin diff --git a/imageio/imageio-tga/pom.xml b/imageio/imageio-tga/pom.xml index 9e1ead30..9f6eccd6 100755 --- a/imageio/imageio-tga/pom.xml +++ b/imageio/imageio-tga/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-tga TwelveMonkeys :: ImageIO :: TGA plugin diff --git a/imageio/imageio-thumbsdb/pom.xml b/imageio/imageio-thumbsdb/pom.xml index 1a60813d..04862ba8 100644 --- a/imageio/imageio-thumbsdb/pom.xml +++ b/imageio/imageio-thumbsdb/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-thumbsdb TwelveMonkeys :: ImageIO :: Thumbs.db plugin diff --git a/imageio/imageio-tiff/pom.xml b/imageio/imageio-tiff/pom.xml index 64472584..1cbf9538 100644 --- a/imageio/imageio-tiff/pom.xml +++ b/imageio/imageio-tiff/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4-SNAPSHOT + 3.4 imageio-tiff TwelveMonkeys :: ImageIO :: TIFF plugin diff --git a/imageio/pom.xml b/imageio/pom.xml index 7f2e9afd..c3854c37 100644 --- a/imageio/pom.xml +++ b/imageio/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys twelvemonkeys - 3.4-SNAPSHOT + 3.4 4.0.0 com.twelvemonkeys.imageio diff --git a/pom.xml b/pom.xml index db48b399..3186cd22 100755 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ com.twelvemonkeys twelvemonkeys - 3.4-SNAPSHOT + 3.4 pom Twelvemonkeys @@ -83,7 +83,7 @@ scm:git:https://github.com/haraldk/TwelveMonkeys scm:git:https://github.com/haraldk/TwelveMonkeys https://github.com/haraldk/TwelveMonkeys - HEAD + twelvemonkeys-3.4 diff --git a/servlet/pom.xml b/servlet/pom.xml index fdf7a8ff..bf324bce 100644 --- a/servlet/pom.xml +++ b/servlet/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys twelvemonkeys - 3.4-SNAPSHOT + 3.4 4.0.0 From 1228043d570cc56085a089d29e3044042cc5755a Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 18 Aug 2018 20:29:07 +0200 Subject: [PATCH 020/277] [maven-release-plugin] prepare for next development iteration --- bom/pom.xml | 2 +- common/common-image/pom.xml | 2 +- common/common-io/pom.xml | 2 +- common/common-lang/pom.xml | 2 +- common/pom.xml | 2 +- contrib/pom.xml | 2 +- imageio/imageio-batik/pom.xml | 2 +- imageio/imageio-bmp/pom.xml | 2 +- imageio/imageio-clippath/pom.xml | 2 +- imageio/imageio-core/pom.xml | 2 +- imageio/imageio-hdr/pom.xml | 2 +- imageio/imageio-icns/pom.xml | 2 +- imageio/imageio-iff/pom.xml | 2 +- imageio/imageio-jpeg/pom.xml | 2 +- imageio/imageio-metadata/pom.xml | 2 +- imageio/imageio-pcx/pom.xml | 2 +- imageio/imageio-pdf/pom.xml | 2 +- imageio/imageio-pict/pom.xml | 2 +- imageio/imageio-pnm/pom.xml | 2 +- imageio/imageio-psd/pom.xml | 2 +- imageio/imageio-reference/pom.xml | 2 +- imageio/imageio-sgi/pom.xml | 2 +- imageio/imageio-tga/pom.xml | 2 +- imageio/imageio-thumbsdb/pom.xml | 2 +- imageio/imageio-tiff/pom.xml | 2 +- imageio/pom.xml | 2 +- pom.xml | 4 ++-- servlet/pom.xml | 2 +- 28 files changed, 29 insertions(+), 29 deletions(-) diff --git a/bom/pom.xml b/bom/pom.xml index bd1337a2..228290b4 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -5,7 +5,7 @@ com.twelvemonkeys twelvemonkeys - 3.4 + 3.5-SNAPSHOT com.twelvemonkeys.bom diff --git a/common/common-image/pom.xml b/common/common-image/pom.xml index 94697ec5..ed064c52 100644 --- a/common/common-image/pom.xml +++ b/common/common-image/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.4 + 3.5-SNAPSHOT common-image jar diff --git a/common/common-io/pom.xml b/common/common-io/pom.xml index a0bc4e89..6f7c9ad3 100644 --- a/common/common-io/pom.xml +++ b/common/common-io/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.4 + 3.5-SNAPSHOT common-io jar diff --git a/common/common-lang/pom.xml b/common/common-lang/pom.xml index 71572c9d..82c487af 100644 --- a/common/common-lang/pom.xml +++ b/common/common-lang/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.common common - 3.4 + 3.5-SNAPSHOT common-lang jar diff --git a/common/pom.xml b/common/pom.xml index 13da022f..b629ff1b 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys twelvemonkeys - 3.4 + 3.5-SNAPSHOT com.twelvemonkeys.common common diff --git a/contrib/pom.xml b/contrib/pom.xml index 8804b9a5..c937183e 100644 --- a/contrib/pom.xml +++ b/contrib/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys twelvemonkeys - 3.4 + 3.5-SNAPSHOT com.twelvemonkeys.contrib contrib diff --git a/imageio/imageio-batik/pom.xml b/imageio/imageio-batik/pom.xml index 005b3dbd..c4276d8e 100644 --- a/imageio/imageio-batik/pom.xml +++ b/imageio/imageio-batik/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-batik TwelveMonkeys :: ImageIO :: Batik Plugin diff --git a/imageio/imageio-bmp/pom.xml b/imageio/imageio-bmp/pom.xml index b8513327..5024bf13 100644 --- a/imageio/imageio-bmp/pom.xml +++ b/imageio/imageio-bmp/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-bmp TwelveMonkeys :: ImageIO :: BMP plugin diff --git a/imageio/imageio-clippath/pom.xml b/imageio/imageio-clippath/pom.xml index be2dbc16..d19ba569 100755 --- a/imageio/imageio-clippath/pom.xml +++ b/imageio/imageio-clippath/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-clippath TwelveMonkeys :: ImageIO :: Photoshop Path Support diff --git a/imageio/imageio-core/pom.xml b/imageio/imageio-core/pom.xml index 02fcfb0f..f01e13e8 100644 --- a/imageio/imageio-core/pom.xml +++ b/imageio/imageio-core/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-core TwelveMonkeys :: ImageIO :: Core diff --git a/imageio/imageio-hdr/pom.xml b/imageio/imageio-hdr/pom.xml index 0b3d83ad..bf8b7cdd 100644 --- a/imageio/imageio-hdr/pom.xml +++ b/imageio/imageio-hdr/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-hdr TwelveMonkeys :: ImageIO :: HDR plugin diff --git a/imageio/imageio-icns/pom.xml b/imageio/imageio-icns/pom.xml index 4c8ac65c..25388049 100644 --- a/imageio/imageio-icns/pom.xml +++ b/imageio/imageio-icns/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-icns TwelveMonkeys :: ImageIO :: ICNS plugin diff --git a/imageio/imageio-iff/pom.xml b/imageio/imageio-iff/pom.xml index bef78bb1..ee2d6984 100644 --- a/imageio/imageio-iff/pom.xml +++ b/imageio/imageio-iff/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-iff TwelveMonkeys :: ImageIO :: IFF plugin diff --git a/imageio/imageio-jpeg/pom.xml b/imageio/imageio-jpeg/pom.xml index 831918eb..9706d307 100644 --- a/imageio/imageio-jpeg/pom.xml +++ b/imageio/imageio-jpeg/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-jpeg TwelveMonkeys :: ImageIO :: JPEG plugin diff --git a/imageio/imageio-metadata/pom.xml b/imageio/imageio-metadata/pom.xml index 442ddc4c..4a21d175 100644 --- a/imageio/imageio-metadata/pom.xml +++ b/imageio/imageio-metadata/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT 4.0.0 imageio-metadata diff --git a/imageio/imageio-pcx/pom.xml b/imageio/imageio-pcx/pom.xml index bc310044..44e932aa 100755 --- a/imageio/imageio-pcx/pom.xml +++ b/imageio/imageio-pcx/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-pcx TwelveMonkeys :: ImageIO :: PCX plugin diff --git a/imageio/imageio-pdf/pom.xml b/imageio/imageio-pdf/pom.xml index cead11b2..8206a93e 100644 --- a/imageio/imageio-pdf/pom.xml +++ b/imageio/imageio-pdf/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-pdf TwelveMonkeys :: ImageIO :: PDF plugin diff --git a/imageio/imageio-pict/pom.xml b/imageio/imageio-pict/pom.xml index ea321ed5..4debc232 100644 --- a/imageio/imageio-pict/pom.xml +++ b/imageio/imageio-pict/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-pict TwelveMonkeys :: ImageIO :: PICT plugin diff --git a/imageio/imageio-pnm/pom.xml b/imageio/imageio-pnm/pom.xml index ef889b0a..7edffeaa 100755 --- a/imageio/imageio-pnm/pom.xml +++ b/imageio/imageio-pnm/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-pnm TwelveMonkeys :: ImageIO :: PNM plugin diff --git a/imageio/imageio-psd/pom.xml b/imageio/imageio-psd/pom.xml index 79ab47c1..d553ea8e 100644 --- a/imageio/imageio-psd/pom.xml +++ b/imageio/imageio-psd/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-psd TwelveMonkeys :: ImageIO :: PSD plugin diff --git a/imageio/imageio-reference/pom.xml b/imageio/imageio-reference/pom.xml index 1b0def0b..320d6ffb 100644 --- a/imageio/imageio-reference/pom.xml +++ b/imageio/imageio-reference/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-reference TwelveMonkeys :: ImageIO :: reference test cases diff --git a/imageio/imageio-sgi/pom.xml b/imageio/imageio-sgi/pom.xml index d3e62368..24f8ab2f 100755 --- a/imageio/imageio-sgi/pom.xml +++ b/imageio/imageio-sgi/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-sgi TwelveMonkeys :: ImageIO :: SGI plugin diff --git a/imageio/imageio-tga/pom.xml b/imageio/imageio-tga/pom.xml index 9f6eccd6..5a0e1340 100755 --- a/imageio/imageio-tga/pom.xml +++ b/imageio/imageio-tga/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-tga TwelveMonkeys :: ImageIO :: TGA plugin diff --git a/imageio/imageio-thumbsdb/pom.xml b/imageio/imageio-thumbsdb/pom.xml index 04862ba8..9637cfbe 100644 --- a/imageio/imageio-thumbsdb/pom.xml +++ b/imageio/imageio-thumbsdb/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-thumbsdb TwelveMonkeys :: ImageIO :: Thumbs.db plugin diff --git a/imageio/imageio-tiff/pom.xml b/imageio/imageio-tiff/pom.xml index 1cbf9538..0abe3ae6 100644 --- a/imageio/imageio-tiff/pom.xml +++ b/imageio/imageio-tiff/pom.xml @@ -4,7 +4,7 @@ com.twelvemonkeys.imageio imageio - 3.4 + 3.5-SNAPSHOT imageio-tiff TwelveMonkeys :: ImageIO :: TIFF plugin diff --git a/imageio/pom.xml b/imageio/pom.xml index c3854c37..bc8ca744 100644 --- a/imageio/pom.xml +++ b/imageio/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys twelvemonkeys - 3.4 + 3.5-SNAPSHOT 4.0.0 com.twelvemonkeys.imageio diff --git a/pom.xml b/pom.xml index 3186cd22..d5c5fab3 100755 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ com.twelvemonkeys twelvemonkeys - 3.4 + 3.5-SNAPSHOT pom Twelvemonkeys @@ -83,7 +83,7 @@ scm:git:https://github.com/haraldk/TwelveMonkeys scm:git:https://github.com/haraldk/TwelveMonkeys https://github.com/haraldk/TwelveMonkeys - twelvemonkeys-3.4 + HEAD diff --git a/servlet/pom.xml b/servlet/pom.xml index bf324bce..c4709a1d 100644 --- a/servlet/pom.xml +++ b/servlet/pom.xml @@ -3,7 +3,7 @@ com.twelvemonkeys twelvemonkeys - 3.4 + 3.5-SNAPSHOT 4.0.0 From 08283299ba158e1ea6843d390fafda3647026315 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 18 Aug 2018 23:17:54 +0200 Subject: [PATCH 021/277] #311 Updated license headers to be the same as in the LICENSE.txt --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4b693402..65299879 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Master branch build status: [![Build Status](https://travis-ci.org/haraldk/TwelveMonkeys.svg?branch=master)](https://travis-ci.org/haraldk/TwelveMonkeys) -Latest release is TwelveMonkeys ImageIO [3.3.2](http://search.maven.org/#search%7Cga%7C1%7Cg%3Acom.twelvemonkeys*%20AND%20v%3A%223.3.2%22) (Feb. 2nd, 2017). +Latest release is TwelveMonkeys ImageIO [3.4](https://search.maven.org/search?q=g:com.twelvemonkeys.imageio%20AND%20v:3.4) (Aug. 18th, 2018). [Release notes](https://github.com/haraldk/TwelveMonkeys/releases/latest). ## About @@ -239,7 +239,7 @@ Other formats, using 3rd party libraries * Limited read-only support using Batik -**Important note on using Batik:** *Please read [The Apache™ XML Graphics Project - Security](http://xmlgraphics.apache.org/security.html), and make sure you use +**Important note on using Batik:** *Please read [The Apache? XML Graphics Project - Security](http://xmlgraphics.apache.org/security.html), and make sure you use either version 1.6.1, 1.7.1 or 1.8+.* @@ -649,7 +649,7 @@ Native libs does not exist for several popular platforms/architectures, and furt Some environments may also prevent deployment of native libs, which brings us back to square one. -q: What about JMagick or IM4Java? Can't you just use what´s already available? +q: What about JMagick or IM4Java? Can't you just use what?s already available? a: While great libraries with a wide range of formats support, the ImageMagick-based libraries has some disadvantages compared to ImageIO. From a6519392746bc4d83665bc930950dee5d823e117 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 18 Aug 2018 23:26:44 +0200 Subject: [PATCH 022/277] Updated readme. --- README.md | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 65299879..96260664 100644 --- a/README.md +++ b/README.md @@ -575,35 +575,33 @@ Servlet support The project is distributed under the OSI approved [BSD license](http://opensource.org/licenses/BSD-3-Clause): - Copyright (c) 2008-2015, Harald Kuhr + Copyright (c) 2008-2018, Harald Kuhr All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - o Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. + o Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. - o Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. + o Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. - o Neither the name "TwelveMonkeys" nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + o Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## FAQ From b09a8a5dbe4c192fe5d1d90558c486be3943350f Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 18 Aug 2018 23:37:46 +0200 Subject: [PATCH 023/277] Updated License. --- LICENSE.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE.txt b/LICENSE.txt index 5c0e09d1..378e5046 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) 2017, Harald Kuhr +Copyright (c) 2008-2018, Harald Kuhr All rights reserved. Redistribution and use in source and binary forms, with or without From f4b154f6c8e95a7487cc9405849719c1accbb310 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Mon, 20 Aug 2018 11:32:29 +0200 Subject: [PATCH 024/277] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 96260664..a778a773 100644 --- a/README.md +++ b/README.md @@ -56,9 +56,9 @@ Mainstream format support * `javax_imageio_jpeg_image_1.0` format (currently as native format, may change in the future) * Non-conforming combinations of JFIF, Exif and Adobe markers, using "unknown" segments in the "MarkerSequence" tag for the unsupported segments (for `javax_imageio_jpeg_image_1.0` format) -* Extended write support in progress: +* Extended write support: * CMYK JPEGs - * YCCK JPEGs + * YCCK JPEGs (in progress) #### JPEG-2000 @@ -132,6 +132,7 @@ Alternatively, if you have or know of a JPEG-2000 implementation in Java with a * Additional support for CCITT T4 and and T6 compressions. * Additional support for LZW and JPEG (type 7) compressions * Horizontal differencing Predictor (type 2) for LZW, ZLib, Deflate + * Multipage TIFF files * Native and Standard metadata support Legacy formats From 7af0cfaa7868a91f0eb47ee53a88670dd87201e8 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Mon, 20 Aug 2018 11:38:46 +0200 Subject: [PATCH 025/277] Update README.md --- README.md | 67 +++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index a778a773..3c5739fa 100644 --- a/README.md +++ b/README.md @@ -56,9 +56,9 @@ Mainstream format support * `javax_imageio_jpeg_image_1.0` format (currently as native format, may change in the future) * Non-conforming combinations of JFIF, Exif and Adobe markers, using "unknown" segments in the "MarkerSequence" tag for the unsupported segments (for `javax_imageio_jpeg_image_1.0` format) -* Extended write support: +* Extended write support in progress: * CMYK JPEGs - * YCCK JPEGs (in progress) + * YCCK JPEGs #### JPEG-2000 @@ -132,7 +132,6 @@ Alternatively, if you have or know of a JPEG-2000 implementation in Java with a * Additional support for CCITT T4 and and T6 compressions. * Additional support for LZW and JPEG (type 7) compressions * Horizontal differencing Predictor (type 2) for LZW, ZLib, Deflate - * Multipage TIFF files * Native and Standard metadata support Legacy formats @@ -481,12 +480,12 @@ To depend on the JPEG and TIFF plugin using Maven, add the following to your POM com.twelvemonkeys.imageio imageio-jpeg - 3.3.2 + 3.4 com.twelvemonkeys.imageio imageio-tiff - 3.3.2 + 3.4 @@ -494,52 +493,52 @@ To depend on the JPEG and TIFF plugin using Maven, add the following to your POM To depend on the JPEG and TIFF plugin in your IDE or program, add all of the following JARs to your class path: - twelvemonkeys-common-lang-3.3.2.jar - twelvemonkeys-common-io-3.3.2.jar - twelvemonkeys-common-image-3.3.2.jar - twelvemonkeys-imageio-core-3.3.2.jar - twelvemonkeys-imageio-metadata-3.3.2.jar - twelvemonkeys-imageio-jpeg-3.3.2.jar - twelvemonkeys-imageio-tiff-3.3.2.jar + twelvemonkeys-common-lang-3.4.jar + twelvemonkeys-common-io-3.4.jar + twelvemonkeys-common-image-3.4.jar + twelvemonkeys-imageio-core-3.4.jar + twelvemonkeys-imageio-metadata-3.4.jar + twelvemonkeys-imageio-jpeg-3.4.jar + twelvemonkeys-imageio-tiff-3.4.jar ### Links to prebuilt binaries -##### Latest version (3.2.x) +##### Latest version (3.4) Requires Java 7 or later. Common dependencies -* [common-lang-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-lang/3.3.2/common-lang-3.3.2.jar) -* [common-io-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-io/3.3.2/common-io-3.3.2.jar) -* [common-image-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-image/3.3.2/common-image-3.3.2.jar) +* [common-lang-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-lang/3.4/common-lang-3.4.jar) +* [common-io-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-io/3.4/common-io-3.4.jar) +* [common-image-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/common/common-image/3.4/common-image-3.4.jar) ImageIO dependencies -* [imageio-core-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-core/3.3.2/imageio-core-3.3.2.jar) -* [imageio-metadata-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-metadata/3.3.2/imageio-metadata-3.3.2.jar) +* [imageio-core-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-core/3.4/imageio-core-3.4.jar) +* [imageio-metadata-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-metadata/3.4/imageio-metadata-3.4.jar) ImageIO plugins -* [imageio-bmp-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-bmp/3.3.2/imageio-bmp-3.3.2.jar) -* [imageio-jpeg-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-jpeg/3.3.2/imageio-jpeg-3.3.2.jar) -* [imageio-tiff-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tiff/3.3.2/imageio-tiff-3.3.2.jar) -* [imageio-pnm-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pnm/3.3.2/imageio-pnm-3.3.2.jar) -* [imageio-psd-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-psd/3.3.2/imageio-psd-3.3.2.jar) -* [imageio-hdr-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-hdr/3.3.2/imageio-hdr-3.3.2.jar) -* [imageio-iff-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-iff/3.3.2/imageio-iff-3.3.2.jar) -* [imageio-pcx-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pcx/3.3.2/imageio-pcx-3.3.2.jar) -* [imageio-pict-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pict/3.3.2/imageio-pict-3.3.2.jar) -* [imageio-sgi-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-sgi/3.3.2/imageio-sgi-3.3.2.jar) -* [imageio-tga-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tga/3.3.2/imageio-tga-3.3.2.jar) -* [imageio-icns-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-icns/3.3.2/imageio-icns-3.3.2.jar) -* [imageio-thumbsdb-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-thumbsdb/3.3.2/imageio-thumbsdb-3.3.2.jar) +* [imageio-bmp-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-bmp/3.4/imageio-bmp-3.4.jar) +* [imageio-jpeg-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-jpeg/3.4/imageio-jpeg-3.4.jar) +* [imageio-tiff-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tiff/3.4/imageio-tiff-3.4.jar) +* [imageio-pnm-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pnm/3.4/imageio-pnm-3.4.jar) +* [imageio-psd-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-psd/3.4/imageio-psd-3.4.jar) +* [imageio-hdr-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-hdr/3.4/imageio-hdr-3.4.jar) +* [imageio-iff-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-iff/3.4/imageio-iff-3.4.jar) +* [imageio-pcx-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pcx/3.4/imageio-pcx-3.4.jar) +* [imageio-pict-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-pict/3.4/imageio-pict-3.4.jar) +* [imageio-sgi-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-sgi/3.4/imageio-sgi-3.4.jar) +* [imageio-tga-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-tga/3.4/imageio-tga-3.4.jar) +* [imageio-icns-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-icns/3.4/imageio-icns-3.4.jar) +* [imageio-thumbsdb-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-thumbsdb/3.4/imageio-thumbsdb-3.4.jar) ImageIO plugins requiring 3rd party libs -* [imageio-batik-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-batik/3.3.2/imageio-batik-3.3.2.jar) +* [imageio-batik-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-batik/3.4/imageio-batik-3.4.jar) Photoshop Path support for ImageIO -* [imageio-clippath-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-clippath/3.3.2/imageio-clippath-3.3.2.jar) +* [imageio-clippath-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/imageio/imageio-clippath/3.4/imageio-clippath-3.4.jar) Servlet support -* [servlet-3.3.2.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/servlet/servlet/3.3.2/servlet-3.3.2.jar) +* [servlet-3.4.jar](http://search.maven.org/remotecontent?filepath=com/twelvemonkeys/servlet/servlet/3.4/servlet-3.4.jar) ##### Old version (3.0.x) From 632e5e6664d2824d76767180c43f785cb9c3ab2a Mon Sep 17 00:00:00 2001 From: Oliver Schmidtmer Date: Tue, 21 Aug 2018 14:55:36 +0200 Subject: [PATCH 026/277] TIFFUtilities: Enhanced support for old-style to new-style JPEG transformation --- .../contrib/tiff/TIFFUtilities.java | 237 ++++++++++++++---- .../contrib/tiff/TIFFUtilitiesTest.java | 49 ++-- .../test/resources/contrib/tiff/WangJPEG.tif | Bin 0 -> 4676 bytes .../tiff/old-style-jpeg-invalid-tables.tif | Bin 0 -> 1603630 bytes .../test/resources/contrib/tiff/smallliz.tif | Bin 0 -> 5052 bytes .../resources/contrib/tiff/zackthecat.tif | Bin 0 -> 8258 bytes 6 files changed, 221 insertions(+), 65 deletions(-) create mode 100644 contrib/src/test/resources/contrib/tiff/WangJPEG.tif create mode 100644 contrib/src/test/resources/contrib/tiff/old-style-jpeg-invalid-tables.tif create mode 100644 contrib/src/test/resources/contrib/tiff/smallliz.tif create mode 100644 contrib/src/test/resources/contrib/tiff/zackthecat.tif diff --git a/contrib/src/main/java/com/twelvemonkeys/contrib/tiff/TIFFUtilities.java b/contrib/src/main/java/com/twelvemonkeys/contrib/tiff/TIFFUtilities.java index b99bfef1..d3d2e264 100644 --- a/contrib/src/main/java/com/twelvemonkeys/contrib/tiff/TIFFUtilities.java +++ b/contrib/src/main/java/com/twelvemonkeys/contrib/tiff/TIFFUtilities.java @@ -45,11 +45,9 @@ import javax.imageio.stream.ImageInputStream; import javax.imageio.stream.ImageOutputStream; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.File; -import java.io.IOException; +import java.io.*; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -358,13 +356,21 @@ public final class TIFFUtilities { } } + int compression = -1; + Entry compressionEntry = IFD.getEntryById(TIFF.TAG_COMPRESSION); + if (compressionEntry != null && compressionEntry.getValue() instanceof Number) { + compression = ((Number) compressionEntry.getValue()).shortValue(); + } + boolean rearrangedByteStrips = false; Entry oldJpegData = IFD.getEntryById(TIFF.TAG_JPEG_INTERCHANGE_FORMAT); Entry oldJpegDataLength = IFD.getEntryById(TIFF.TAG_JPEG_INTERCHANGE_FORMAT_LENGTH); + long[] jpegByteCounts = null; + long[] jpegOffsets = null; if (oldJpegData != null && oldJpegData.valueCount() > 0) { // convert JPEGInterchangeFormat to new-style-JPEG - long[] jpegByteCounts = new long[0]; - long[] jpegOffsets = getValueAsLongArray(oldJpegData); + jpegByteCounts = new long[0]; + jpegOffsets = getValueAsLongArray(oldJpegData); if (oldJpegDataLength != null && oldJpegDataLength.valueCount() > 0) { jpegByteCounts = getValueAsLongArray(oldJpegDataLength); } @@ -388,6 +394,20 @@ public final class TIFFUtilities { newIFD.remove(oldJpegDataLength); rearrangedByteStrips = true; } + else if (offsets.length == 1 && oldJpegDataLength != null && (jpegOffsets[0] < offsets[0]) && (jpegOffsets[0] + jpegByteCounts[0]) > (offsets[0] + byteCounts[0])) { + + // ByteStrip contains only a part of JPEGInterchangeFormat + newOffsets = writeData(jpegOffsets, jpegByteCounts, outputStream); + + newIFD.remove(stripOffsetsEntry); + newIFD.add(new TIFFEntry(useTiles ? TIFF.TAG_TILE_OFFSETS : TIFF.TAG_STRIP_OFFSETS, newOffsets)); + newIFD.remove(stripByteCountsEntry); + newIFD.add(new TIFFEntry(useTiles ? TIFF.TAG_TILE_BYTE_COUNTS : TIFF.TAG_STRIP_BYTE_COUNTS, new int[]{(int) (jpegByteCounts[0])})); + + newIFD.remove(oldJpegData); + newIFD.remove(oldJpegDataLength); + rearrangedByteStrips = true; + } else if (oldJpegDataLength != null) { // multiple bytestrips // search for SOF on first strip and copy to each if needed @@ -423,7 +443,7 @@ public final class TIFFUtilities { byte[] buffer = new byte[(int) byteCounts[i]]; newByteCounts[i] = (int) (jpegInterchangeData.length + byteCounts[i]); stream.readFully(buffer); - if (buffer[0] != 0xff && buffer[1] != 0xda) { + if (buffer[0] != ((byte) 0xff) || buffer[1] != ((byte) 0xda)) { outputStream.write(sosMarker); newByteCounts[i] += sosMarker.length; } @@ -440,7 +460,58 @@ public final class TIFFUtilities { rearrangedByteStrips = true; } } + else if (compression == TIFFExtension.COMPRESSION_OLD_JPEG) { + // old-style but no JPEGInterchangeFormat + long[] yCbCrSubSampling = getValueAsLongArray(IFD.getEntryById(TIFF.TAG_YCBCR_SUB_SAMPLING)); + int subsampling = yCbCrSubSampling != null + ? (int) ((yCbCrSubSampling[0] & 0xf) << 4 | yCbCrSubSampling[1] & 0xf) + : 0x22; + int bands = ((Number) IFD.getEntryById(TIFF.TAG_SAMPLES_PER_PIXEL).getValue()).intValue(); + + int w = ((Number) IFD.getEntryById(TIFF.TAG_IMAGE_WIDTH).getValue()).intValue(); + int h = ((Number) IFD.getEntryById(TIFF.TAG_IMAGE_HEIGHT).getValue()).intValue(); + + int r = ((Number) (useTiles ? IFD.getEntryById(TIFF.TAG_TILE_HEIGTH) : IFD.getEntryById(TIFF.TAG_ROWS_PER_STRIP)).getValue()).intValue(); + int c = useTiles ? ((Number) IFD.getEntryById(TIFF.TAG_TILE_WIDTH).getValue()).intValue() : w; + + newOffsets = new int[offsets.length]; + int[] newByteCounts = new int[byteCounts.length]; + + // No JPEGInterchangeFormat + for (int i = 0; i < offsets.length; i++) { + byte[] start = new byte[2]; + stream.seek(offsets[i]); + stream.readFully(start); + newOffsets[i] = (int) outputStream.getStreamPosition(); + if (start[0] == ((byte) 0xff) && start[1] == ((byte) 0xd8)) { + // full image stream, nothing to do + writeData(stream, outputStream, offsets[i], byteCounts[i]); + } + else if (start[0] == ((byte) 0xff) && start[1] == ((byte) 0xda)) { + // starts with SOS + outputStream.writeShort(JPEG.SOI); + writeSOF0(outputStream, bands, c, r, subsampling); + writeData(stream, outputStream, offsets[i], byteCounts[i]); + outputStream.writeShort(JPEG.EOI); + } + else { + // raw data + outputStream.writeShort(JPEG.SOI); + writeSOF0(outputStream, bands, c, r, subsampling); + writeSOS(outputStream, bands); + writeData(stream, outputStream, offsets[i], byteCounts[i]); + outputStream.writeShort(JPEG.EOI); + } + newByteCounts[i] = ((int) outputStream.getStreamPosition()) - newOffsets[i]; + } + + newIFD.remove(stripOffsetsEntry); + newIFD.add(new TIFFEntry(useTiles ? TIFF.TAG_TILE_OFFSETS : TIFF.TAG_STRIP_OFFSETS, newOffsets)); + newIFD.remove(stripByteCountsEntry); + newIFD.add(new TIFFEntry(useTiles ? TIFF.TAG_TILE_BYTE_COUNTS : TIFF.TAG_STRIP_BYTE_COUNTS, newByteCounts)); + rearrangedByteStrips = true; + } if (!rearrangedByteStrips && stripOffsetsEntry != null && stripByteCountsEntry != null) { newOffsets = writeData(offsets, byteCounts, outputStream); @@ -457,12 +528,21 @@ public final class TIFFUtilities { oldJpegTableQ = IFD.getEntryById(TIFF.TAG_OLD_JPEG_Q_TABLES); oldJpegTableDC = IFD.getEntryById(TIFF.TAG_OLD_JPEG_DC_TABLES); oldJpegTableAC = IFD.getEntryById(TIFF.TAG_OLD_JPEG_AC_TABLES); - if (oldJpegTableQ != null || oldJpegTableDC != null || oldJpegTableAC != null) { + if ((oldJpegTableQ != null) || (oldJpegTableDC != null) || (oldJpegTableAC != null)) { if (IFD.getEntryById(TIFF.TAG_JPEG_TABLES) != null) { throw new IOException("Found old-style and new-style JPEGTables"); } - newIFD.add(mergeTables(oldJpegTableQ, oldJpegTableDC, oldJpegTableAC)); + boolean tablesInStream = jfifContainsTables(oldJpegTableQ, jpegOffsets, jpegByteCounts); + tablesInStream &= jfifContainsTables(oldJpegTableDC, jpegOffsets, jpegByteCounts); + tablesInStream &= jfifContainsTables(oldJpegTableAC, jpegOffsets, jpegByteCounts); + if (!tablesInStream) { + // merge them only to JPEGTables if they are not already contained within the stream + Entry jpegTables = mergeTables(oldJpegTableQ, oldJpegTableDC, oldJpegTableAC); + if (jpegTables != null) { + newIFD.add(jpegTables); + } + } if (oldJpegTableQ != null) { newIFD.remove(oldJpegTableQ); } @@ -474,17 +554,66 @@ public final class TIFFUtilities { } } - Entry compressionEntry = IFD.getEntryById(TIFF.TAG_COMPRESSION); - if(compressionEntry != null) { - Number compression = (Number) compressionEntry.getValue(); - if (compression.shortValue() == TIFFExtension.COMPRESSION_OLD_JPEG) { - newIFD.remove(compressionEntry); - newIFD.add(new TIFFEntry(TIFF.TAG_COMPRESSION, TIFF.TYPE_SHORT, TIFFExtension.COMPRESSION_JPEG)); - } + if (compressionEntry != null && compression == TIFFExtension.COMPRESSION_OLD_JPEG) { + newIFD.remove(compressionEntry); + newIFD.add(new TIFFEntry(TIFF.TAG_COMPRESSION, TIFF.TYPE_SHORT, TIFFExtension.COMPRESSION_JPEG)); } return newIFD; } + //TODO merge/extract from TIFFReader Jpeg/6 stream reconstruction + private void writeSOF0(ImageOutputStream outputStream, int bands, int width, int height, int subsampling) throws IOException { + outputStream.writeShort(JPEG.SOF0); // TODO: Use correct process for data + outputStream.writeShort(2 + 6 + 3 * bands); // SOF0 len + outputStream.writeByte(8); // bits TODO: Consult raster/transfer type or BitsPerSample for 12/16 bits support + outputStream.writeShort(height); // height + outputStream.writeShort(width); // width + outputStream.writeByte(bands); // Number of components + + for (int comp = 0; comp < bands; comp++) { + outputStream.writeByte(comp); // Component id + outputStream.writeByte(comp == 0 ? subsampling : 0x11); // h/v subsampling + outputStream.writeByte(comp); // Q table selector TODO: Consider merging if tables are equal, correct selection if only 1 or 2 valid tables are contained + } + } + + //TODO merge/extract from TIFFReader Jpeg/6 stream reconstruction + private void writeSOS(ImageOutputStream outputStream, int bands) throws IOException { + outputStream.writeShort(JPEG.SOS); + outputStream.writeShort(6 + 2 * bands); // SOS length + outputStream.writeByte(bands); // Num comp + + for (int component = 0; component < bands; component++) { + outputStream.writeByte(component); // Comp id + outputStream.writeByte(component == 0 ? component : 0x10 + (component & 0xf)); // dc/ac selector TODO: correct selection if only 1 or 2 valid tables are contained + } + + outputStream.writeByte(0); // Spectral selection start + outputStream.writeByte(0); // Spectral selection end + outputStream.writeByte(0); // Approx high & low + } + + private void writeData(ImageInputStream input, ImageOutputStream output, long offset, long length) throws IOException { + input.seek(offset); + byte[] buffer = new byte[(int) length]; + stream.readFully(buffer); + output.write(buffer); + } + + private boolean jfifContainsTables(Entry tableEntry, long[] jpegOffsets, long[] jpegLengths) throws IOException { + if (jpegLengths == null || jpegOffsets == null || jpegLengths.length == 0) return false; + if (tableEntry != null) { + long[] tableOffsets = getValueAsLongArray(tableEntry); + for (long offset : tableOffsets) { + if (offset < jpegOffsets[0] || offset > (jpegOffsets[0] + jpegLengths[0])) { + return false; + } + } + } + return true; + } + + //TODO merge/extract from TIFFReader Jpeg/6 stream reconstruction private Entry mergeTables(Entry qEntry, Entry dcEntry, Entry acEntry) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(bos); @@ -494,12 +623,16 @@ public final class TIFFUtilities { long[] off = getValueAsLongArray(qEntry); byte[] table = new byte[64]; for (int tableId = 0; tableId < off.length; tableId++) { - stream.seek(off[tableId]); - stream.readFully(table); - dos.writeShort(JPEG.DQT); - dos.writeShort(3 + 64); - dos.writeByte(tableId); - dos.write(table); + try { + stream.seek(off[tableId]); + stream.readFully(table); + dos.writeShort(JPEG.DQT); + dos.writeShort(3 + 64); + dos.writeByte(tableId); + dos.write(table); + } catch (EOFException e) { + // invalid table pointer, ignore + } } } @@ -507,30 +640,50 @@ public final class TIFFUtilities { if (dcEntry != null && dcEntry.valueCount() > 0) { long[] off = getValueAsLongArray(dcEntry); for (int tableId = 0; tableId < off.length; tableId++) { - stream.seek(off[tableId]); - byte[] table = readHUFFTable(); - dos.writeShort(JPEG.DHT); - dos.writeShort(3 + table.length); - dos.writeByte(tableId); - dos.write(table); + try { + stream.seek(off[tableId]); + byte[] table = readHUFFTable(); + if (table.length > (16 + 17)) { + // to long, table is invalid, just ignoe + continue; + } + dos.writeShort(JPEG.DHT); + dos.writeShort(3 + table.length); + dos.writeByte(tableId); + dos.write(table); + } catch (EOFException e) { + // invalid table pointer, ignore + } } } if (acEntry != null && acEntry.valueCount() > 0) { long[] off = getValueAsLongArray(acEntry); for (int tableId = 0; tableId < off.length; tableId++) { - stream.seek(off[tableId]); - byte[] table = readHUFFTable(); - dos.writeShort(JPEG.DHT); - dos.writeShort(3 + table.length); - dos.writeByte(16 | tableId); - dos.write(table); + try { + stream.seek(off[tableId]); + byte[] table = readHUFFTable(); + if (table.length > (16 + 256)) { + // to long, table is invalid, just ignoe + continue; + } + dos.writeShort(JPEG.DHT); + dos.writeShort(3 + table.length); + dos.writeByte(16 | tableId); + dos.write(table); + } catch (EOFException e) { + // invalid table pointer, ignore + } } } dos.writeShort(JPEG.EOI); bos.close(); + if (bos.size() == 4) { + // no valid tables, don't add + return null; + } return new TIFFEntry(TIFF.TAG_JPEG_TABLES, TIFF.TYPE_UNDEFINED, bos.toByteArray()); } @@ -540,15 +693,11 @@ public final class TIFFUtilities { stream.readFully(lengths); int numCodes = 0; for (int i = 0; i < lengths.length; i++) { - numCodes += lengths[i]; + numCodes += ((int) lengths[i]) & 0xff; } byte table[] = new byte[16 + numCodes]; System.arraycopy(lengths, 0, table, 0, 16); - int off = 16; - for (int i = 0; i < lengths.length; i++) { - stream.read(table, off, lengths[i]); - off += lengths[i]; - } + stream.readFully(table, 16, numCodes); return table; } @@ -559,7 +708,11 @@ public final class TIFFUtilities { stream.seek(offsets[i]); byte[] buffer = new byte[(int) byteCounts[i]]; - stream.readFully(buffer); + try { + stream.readFully(buffer); + } catch (EOFException e) { + // invalid strip length + } outputStream.write(buffer); } return newOffsets; @@ -571,7 +724,7 @@ public final class TIFFUtilities { if (entry.valueCount() == 1) { // For single entries, this will be a boxed type - value = new long[] {((Number) entry.getValue()).longValue()}; + value = new long[]{((Number) entry.getValue()).longValue()}; } else if (entry.getValue() instanceof short[]) { short[] shorts = (short[]) entry.getValue(); diff --git a/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java b/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java index 9d33983c..c9a81252 100644 --- a/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java +++ b/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java @@ -202,36 +202,39 @@ public class TIFFUtilitiesTest { } @Test - public void testMergeBogusInterchangeFormatLength() throws IOException { - String[] testFiles = new String[] { + public void testOldStyleJPEGTransform() throws IOException { + String[] testFiles = new String[]{ "/tiff/old-style-jpeg-bogus-jpeginterchangeformatlength.tif", // InterchangeFormat before StripOffset, length not including StripOffset "/tiff/old-style-jpeg-no-jpeginterchangeformatlength.tif", // missing JPEGInterChangeFormatLength and JPEGInterchangeFormat == StipOffset - "/tiff/old-style-jpeg-multiple-strips.tif" // InterchangeFormat with multiple strips + "/tiff/old-style-jpeg-multiple-strips.tif", // InterchangeFormat with multiple strips + "/contrib/tiff/old-style-jpeg-invalid-tables.tif", // AC/DC Tables are invalid (to long) and lie within the JPEGInterchangeFormat stream + "/contrib/tiff/smallliz.tif", // InterchangeFormat contains whole JPEG, ByteStrip only raw ImageData after SOS + "/contrib/tiff/WangJPEG.tif", // multiple strips, first strip contains SOS + "/contrib/tiff/zackthecat.tif" // No JPEGInterchangeFormat, ByteStrip contains only raw image data }; for (String testFile : testFiles) { - File output = File.createTempFile("imageiotest", ".tif"); - ImageOutputStream outputStream = ImageIO.createImageOutputStream(output); - InputStream inputStream1 = getClassLoaderResource(testFile).openStream(); - ImageInputStream imageInput1 = ImageIO.createImageInputStream(inputStream1); - InputStream inputStream2 = getClassLoaderResource(testFile).openStream(); - ImageInputStream imageInput2 = ImageIO.createImageInputStream(inputStream2); - ArrayList pages = new ArrayList<>(); - pages.addAll(TIFFUtilities.getPages(imageInput1)); - pages.addAll(TIFFUtilities.getPages(imageInput2)); - TIFFUtilities.writePages(outputStream, pages); + try { + File output = File.createTempFile("imageiotest", ".tif"); + ImageOutputStream outputStream = ImageIO.createImageOutputStream(output); + InputStream inputStream = getClassLoaderResource(testFile).openStream(); + ImageInputStream imageInput = ImageIO.createImageInputStream(inputStream); + List pages = TIFFUtilities.getPages(imageInput); + TIFFUtilities.writePages(outputStream, pages); - ImageInputStream testOutput = ImageIO.createImageInputStream(output); - ImageReader reader = ImageIO.getImageReaders(testOutput).next(); - reader.setInput(testOutput); - int numImages = reader.getNumImages(true); - for (int i = 0; i < numImages; i++) { - reader.read(i); + ImageInputStream testOutput = ImageIO.createImageInputStream(output); + ImageReader reader = ImageIO.getImageReaders(testOutput).next(); + reader.setInput(testOutput); + int numImages = reader.getNumImages(true); + for (int i = 0; i < numImages; i++) { + reader.read(i); + } + + imageInput.close(); + outputStream.close(); + } catch (Exception exc) { + throw new IOException(testFile, exc); } - - imageInput1.close(); - imageInput2.close(); - outputStream.close(); } } diff --git a/contrib/src/test/resources/contrib/tiff/WangJPEG.tif b/contrib/src/test/resources/contrib/tiff/WangJPEG.tif new file mode 100644 index 0000000000000000000000000000000000000000..d1a98ede03bbc96c3e486d4409625c1368e89685 GIT binary patch literal 4676 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 z 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

    2u6Y7vJLcjtt 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

    K2ThZ$^@FQ{2TtwV=YMbk+d-o4G5D- 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%0A79rU?PYHGen5HoK%i!b;%p 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�Wq=nIK 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⁢yPI)s9L6QY&eWUW>)(gk;15 zHUeyC34g8o9ed{!Zf?Gi&QX44olt4WU94YfQZvy1#oT*9HQh7|<3W%B(g{ilMM0{K zo*)nq>C&YmqM(3C?==(^#Spq^h!jaE(nLT&K|o3)r_n!Md z_x*qOe)rrQ&SB5~w#>}#&g{<4&M<2kgx#khl@^P52loX#_SzgHSgVFCZxNvme3X#j zUf2x%p17wD8R8}w0m?yZL1H3NecJrBMCitJ8dY!tlUyWhQFF`_CYy6Iu2%nbAhv_BUH!x9$Y}`QZw@Fiv+cELH2g|#YZO6Bo|x6m3#$s>!}6i zp851v&svpsdKqKU_oe|}CWLX9NeavX^XZ=#_T8g^1ewJHK((*7MHie7*?& zn*6+O!|*%j>ZtbgLF4=%5?=>(iE%;Ka3nYk2NsUd`mW0>#79w^$MP6?=M6=H?|?;J zNMmnVSd-59j>T-s^&BT<5>r@%WbfdJC9{X1%M@E3`W4$?!VS?jrK;M!?F45y(x+zC9`b z^Rh7Bs5be^yQwtxXvt0`{k*XFYY7f?WbXkZ_e<;nPT3T|Eib#K*=`L9GCDH8mQ%&m zq9C}O*^$6FN!3?J!{X6_l?E$|*FZP%qdlNr8C0Ty=Ki#1AooP|sDs73x@Y5Y@~4t6 z5Q=Xqj@~kQNvp)ju&@UnKQ?-EO+Q2+^={0W-SEv`mscTfLs4CSJR9@oKS|;qV7`)0fOJ|mT(Oh2GcOq6wJ$j zw3cFf$SP5Z504}U0V@UN&s}<}7wxNOxHB!O`9~@JG7TAyC^oM~P-6Cn`u_;yKO5Qe zfYhxYEfur}<+_c*W+}QsTx5tN%8}@pOhi+)A|>oJJz?uvd|yCocp*dxLf5&0RCnHV zQU9WL69cuQZ_9b=evGQLr>2Wfh5a-N<+z^z@O0$$wyOF|_~OBdjI%whWl+^-r~Wxg0=#~o89gk#P}`xvW_0hl^jGk~Ajr72UFRtvPA=LNv@D?U$gs&*wOVp@V{&>C(uL#pd!1B^Cq^nqa=lq8ZO55|l5%xYWu_UO_p zS3}%sP<_#iOD~dzSJi~z;3b^Bmo{#`5tc(S;2Le;6LaV>#VC+U;f3y;rkWc8X^Tu~mW3mR!+>I$%o zWVsT4i*s~9;E@~<3gMGzRUDsA)A4!R>gD}q_^zzwo@?&XzQQZIv=g z?zuvoZ)-AfIF%;EN2k*N96qB@lSD<(HPQ@o0ST^+_kw81fGBA7Ss|! zyg1JCdAdJK-JQVmmtu@RuPQOqt{W%!@+^d!6>oJm8jF4%G`t4Kv#B1rRYSpCUPhw7 z56)Kc%|>*=#=jDA+G62Ud6JF-InrtO=x8*>tdYN za+`^(1{6|#2lIFSx<2K=n3GMDTYs2re>v{I~dnR32r_f>Ikr7I_ zGYp~Oa{S>p448WA9SlXMdS!oJhbleAzsrHK?LAraK~IBpdzkLS4W z?4>7AuYH$~u!#s-7SW9U^mh!d7X*=t{&b6jm0}Gr%A&d#D%`gYSeRPW(fX6iV=3#C zKH6%nT2tE6K8Zc}lR`^5!tqm@+Ph;ZdHib%N~Dz>gqSb}CdB7be@;_I*ATiQ)*2|B zsNXO{D>XZYBIP=dc56dTSwv9`{+>ZyA|WJNtPJ`of4?}jC^4>K9az~5NUAG6u*uBe zfE%-VC`QI;jG3|;pZNDzni`^^$(hAqRPsQ@O>f@-(iY*)$J^w5U>od>;4yCD7AB)U zB@%)aSM>$S#OK|L2atPCG+vrVR)S>j@#jFi4V6q-WqK&OTn?ZE*}@0hqWF{WyAugj zrb7?f;N!$3)kcWDA6HI7Fu;)K&5N<_+_T08-jhzyjeIniTOdvXo6&!7#Fck%f`To`S`(E!&9jf-kDSWgXb2@6;8BCEifzHB~XMl!Pp;@j9`?GGVU3dBLz z+j5+hEyqm~aGu(-V>;03l=a!ZN^x%fb$s?1ud>~k?KmxH^~>NZNw8|eBwOOu^)R@f zzM`J_$pBwrUpYc%%%H&P{)zn+R~yx(mhQOV+X}{SIh({xuW8tC0k>g5SS>*LNamcj zcI&j7@%&id@SzSve|bsxWuRY|M*i^QI+Z}W?lnORl&xlO_fld<84VjT>xUYjiymt* zD#R3RrB#I&Wnd0AfkwzDui+bolJ(C}wTcgy6H#m1W!k)%*FRvB#6_n_v`@y!P2=~% z>g%T<1V=KHJ?a$Me2^@G`nV~Prrp>8>W-??OL$N=Jz2jaWH^4R^N zZ^HFoKa5Cf7o?iT%DLU?YdugVp3wN_bM$qxY-Av4kng4SnB}a+`{SVd)$iEP@1_oH z#g0iD9y7>L8;06@dhHB88@j#~*z))>Z~Xr3cDffL?h09E1x?JAM&ci5&Vz}iZbfPZ(GD+j# zE&PH&+O5@DGj{}O>CoF^#h*3*Yp-s_F9H~X9vuW$zTT8spKCppeyfs{?l7`V2Z`!S|gk3jM zZc**NT-~BAZD@)K>JG%=1kZ^FI1w`=(O+>;>D93m#w1v`i)Ii^;QrAt3W%zj5{qKq z+Ph;gT2MrFqeUDVT92oCx(>+!lo+zbfT)>@oZm9_iYBJ4_O0hcC{7YN5>YpwH$wgA zbvPhR~j=!z81EAQ8dnlo;Vj-yIWX*r^mJeb>tHTJM0^&T!sJ!FCuJP|Ao#V~H1(#o@=W;j-`EpqMNCx;1FR!wQPR z@3Omihf(D)MYzC4lBr>f+91esxx1zh#=NZ+p1aut>_hgc@RY{f2%FL)SUTg#onD(t z>q^l8YqY}?A?S4B>tqUsuCdiwIDQ$=L@>r^!UV@n)*F?@wpEp7*70B=C3_>C){sw0 z7Rkw%R)UHFKQGA}*Axz_1B%%C_{0N6m$JrDPO++<7ns9SUaH-N#$Hmr>*zqlf)NTr zm9nUeK)i{jrn7Lt?BH6SB&#=z;9y~(hhX7MYc(5)#|?W@erGcvITN66ecxm@8XQ*ejm z=-A1r+Q5=2GZW9|U=ABQ*1_zu&kt*8FVJ}I(-v^%*429| zSU{YH6iXi~@a_BwVz+}o3~lR`6x*O&O*8sb@i5}efZws(p3J8zjV$^17_{E-Jk{Gp zvg(U0zLUK4?)`IEiEFE3l*G*VnSkW|W4F}FZDjFyD-cIE@PQ6t=RF|Ux ztV+4keIL&7zc=LpnZTyp;!u7!trhG3E!PhdMMw_7D^ z5}g%J`#ceSRK{Hk)EmO=42JsSdz5_F^ZamUBO}D~MC$}^(szO5TjRd$n2TC^qyl@vIE z;r7xsq&|`|l~zxDY6zRg;z;Ne$5*p`#pka$;rW7E#iiONO&{_(6QI6$XaP4x2Mx<| z@;iCs9mcFpcmm5(Ci|TrDA1jlLRPMG{sEfT{FDL1iHdTKn>Ih?62iDRpuw|RcF`+2 zuq;+pSQ}0$G1k^0ejs6g9FcmlU;)6EiQ1h7N|aigKut1NoEObNFkBf=;7MRh3TlA~ zq*XyO#T&^>xYqELj1eO^jR|#hhD*rg1g;~w_hwE585;{YE#5Y2Qa*a}$~b9Omuj3! zYcSam>Yszf_DTVgnu{pBHYO=Ih#hBJ%imcSNafy%rDjzXO*WLacZ0^dv`WjU!uYyf zET(4=)>?Kx7>`RVy8g^slqa+a}v3D2XWXwGj3f=F-=L{#I>%{Z0<2MuRmvkUYov84N0YTy< z)rZwt1F%q}mfgi2Bb-yB&A~~bxwq~z2RL(jzHQl@J1BJS1Hm-`Yqg9K6M@tiYkwX1 zL|pAgwoM6ASAAYhGz)=eP;DT{3EnJCxoy4yD@kiaI#&-uD!R=eNyj+s(k;W!ypw+m z#akBEfLJ|U6&iUGt1FTQtQ53kghZ1hOG+%7`8ku#>rSwCLW8*Mo9gtw_b`t-C$|x8 zg<46eMy~i03jz;v$T!iG){bMx0^{Z#OmxZ@iO`aDj3y?GlLwNaL{hPc4K%z08{N1k ze!+)=36*?%qkos-!{A!{h4jw5S=5^k;h>#Z(xe~D>a|45wZW!ueDC8!1u^3QZ$5$w zR3VMMi*x-Dka2Q=*Yx$<^4PIkZHeB{&y14S0RjzeDMNOtYC6q##*FjNQD zdnNy5_t=|@;`7$rZM*exup_h~!Lc`n4D<2s??+$i`Rq0*`dIi0(&QjUIWa9-_Rifb z5GH~sEH8_yk>nSm`M5jI8A*BiZ!vF8Yg@MtD(wIr8Ov^E!9VNB;wO;XCl z^~wDGP3;R}5?{cO2!RjJu}1LOZKAzXvY{{)K?HL>t7G!2R$4c+_;6qkH3YcuiRn-?HrO5Ok2ECfvOt-E7k)JBYq=%T z+R8ImoB-j(=tWGR`>qbSRsQJ4UvG_gtaLjw@>{VWjme53pO`2#x{Cqu0X4Z< z65T9%{4MbIBlpxRH9?<&G(iU_&$XH!b$w9jKm^!S`^#*L$lQuExc-hUDNiH~=?z@5 zTOL5DyY+z>t1R=XRn;{@ybq19ReFx8ylbp_!>6)bf^4$LCD`2G5#q~RF0}*;0XB8{ z=jMqsL`z3*a}%b(mboKi8_ubZ=q9Pn;bvt8-O_*jf`ZIFpb5H9+cXgFfV52F@ z;_}iRwuT}<9k2Me+*>LsnKwQ=MZuAk!YdG`V*+~OCh zC_UEi3Q|{JGkd=%*F5HnTWs|*5IxqSC~tOaoZ7B02ie9ycu*5t_h%Ubrj2z11BD|< z!gs)l!@qmNTUKlO6Lf05hggd`Z*o*dREa}dt*z@~!QxgQ%h*O1;~KYY0J#{P4=#qW zsOx;L$wfu!a6=qv+khKRz_Tpd(EaWqBdVS|M%py)4V$@)^fLXyeLbQGJXc#6h$IA= zTSklDr&|!80deKLE+WeAl@o>EaPm4d==E}Eu6K*u~?yy;uRQ}g&W zllI?xS)nu+p5>C1;Tt$%wzVvQP@)1gb|QJ2&!vgFR5si2uBkS>5e^Sh`>>UQeI$wci-lhOLaJ*Ti#%4O!o z+9QVG*(<=y*m<)r0hEk2Vu-0f;75ABMVt9kV*9-Q>|pGL91M)_DC``szql5-L`Hiw zI9!%F2Rf)Wq4YRRmKotG3Cc8X!;8WuKedtTi$UaQz2t@;7m4=hZ}^i0qYGNr8jTcU z>f0y{5SoCvPXm%h@Yun)C*F3kw9?}!AHEEw+504nx@w1By0Yr{1uz_}c^+V)*zyxJ zL~{$oMXf9;A@7?Yoy34$FBupnO!GR%&2=h99CM#F0c@F?t~H0<+YRlnUn=A9SNZUT zut{NQwrrSgDgQS8aJ1EGukod^!qT zt^5PTjGd0igNtJ1v6BZ}IKhk{T#vO0y>WM#_)`2g=D|nZ{E_CGy7cLE$V|{&{56z9M!8b zCledyZb1jN@>~k<9@kP8Hja=<$Qi0g@k(-OCZWPlr4y*@iO;L}+FBU(93o@gy{na9 z>fLxo1w=SA8`V2C9&GPhv_vn=9QK3nfm(J9_pJ84kX z%#*V+5qA-~pIiQ1P5oNo<_bVa2fLabi$n)FD8Z!~HWW;ZL?fQd?i!=|9#DHCc<9!t zWr^?{lvfKF<<%vd5q6ZTM|3rZx~5Aa;ze{)$bm02&RurodwHzXYLryGZh*SM=(Z7T zey|SYKD%T5j)u`OOx!CYOw7Hoi!L}4Yy8fGO9V?rjc8J(hA|C2tq}!RUWB5N5-c24mE=`_jfx^OS+)TydX_dOUTOP$g_CE!M-`#q$VhJ%@(5A{vYrr(rxIqYZ<` zx?3#cMTNZ*)$J3}fL%e9|9FVW5=_4Q^8GJWEHr8B_?szmw!5qiy#}WWV(TJ zQX)ET>^W1Pp#vhh39v_Qgvm0J+xc8GR31dpD=`=+z-QGiKG3qJYNIA%>D*cJibakp zps;=izK%rkp+NkIPGcUULqAV^>G()9g+$RYP!Ez+QbB?vO$o>SC$6h(&qh1Q9 zje?U=Yk0|?Efe2yBQ5@eeq!JzUMN?b4&KTnezO)NUYKF9_~CggtX(z+>m(;DK@<6~ z%kuF_nO2FSxK#y#hq*^Pup|hM9X@Z2jn*C35*GN7>e)1%6#;{i$I`n40s3U-%g(W1 z&=)#VO;Fbk->j-s8QB~0>9XywAEZWwz9{bzrA>2(L!3nO_$yx0j%(Sjm)`kQKgn_! z#GnQ6k@nYNQX-YI4OlP*0TE-C->2rwVE*YHilk_>XYCGWhbI1MDTs0KiF|U{7}4I) zFrnW`zYd%Zn3yg`Yi;;_hwq*NxL3*T1j^tu;H+v@zxXxFC9QsSUPW1+=lb06Yi~Ee z+`0aC@~-^qL0B$gphcr8Q?25696b$Z~wV3%kjQ2e;!2nLU~I?{bpm%oQ3+qHN4P%lfJxy z9^l__CGy}q{`xeDFdQIVwxK<%yU=Jwwc4JieY|5jnAU zmH1dMew!qsERRulRRFgmcPEJtPb<-79&F3<>I8}?2t;Pt=*m=b?Q5L>I(g%up!|S> z+m-zy)R7F7ctPI=xDVRgcG19nA*B2SZMNsk^-&!Z*Dofky?H7oBErAxqS7T@C8e;x z;&O0xbOO0M{cIAjNmUyD7HzPr6oYe%$BR{YfAgxB;2G06pl#pC#YuZJKzAlm0Ou+r zcQ+gG7doq8z$JH(xAe-r#ChEt?(b}tAQ@L;wk*RmWLs6+!Ap>!yQ};bF8%8a>_?6ON z`3t~VJ=mzdRUW%9o_$T5hLxpK@+5ynIxqJgMV=L=w9}_s({+x^o>g@t=Z11nPqEk~ z-i6HKqdG#d7YsGm+1F9ztDvT@hCMYzMwnAFrG(JW3oa!{`)G0{qcDIUy1}96s}2cB9;NdB zQrg618hal1kqyFkT_g0UIH$CCKM`ecRFJ99L!~0yb~(Py>|NkDL_qA_?~f+=C8)UJ zvpTQP&EXKvo3zp{@)vrp<9TgLhRn>Bby^tX7Q)0C%E(-VN(7@tq)uf61!GjC+QZqq zl_DUdPuN@Hlgu3I%1j}GNO2XR&2ADdo~jMA-(s(y$pEXY5pf_;7q3m-b}6 z!2XD8w3YUbW#d?V2mXws;j-2V+6;-<2dcNefz zMS(g8;S{^icrUzl{LXEOsXvnYsz>>>#(KVJ&oD2=I_jT|!TzYjo?4va^&(X{7&ZX$ zs8B4rS6FoA(19i4@RQO* zBsmHB?Nr)fEz$iIag`pHy_NWbZAcIsvgcPf{Ff1{?TE!htwj1+cA#kdDL~D423Yuz zund81640KwN*8!<`LI$LhUHg|*siR=YAa%Q(s&~fK}I0~u;zM^JzM~LPSpD92HuGxz*=j6m3#7S zb@9ahlGyI)s=ZxchZ@T859P{+k^jCJ-+xf-wauSm{(x*?`RCRMfA?B8bjZ*Vn+>>K zzS6y2^~27t|3lqBkQ{c=^b3+-b%C3XZ%2~n%zrh#3ki!IJP6AMM(*hOFY`$9kihP^ zNf`P+$ospTfI}r9E1Z!4f&Q+s|91@mhd032K;Wz1hE1qL+hhLpqY86>Bl0(-DlLG7 zRp~thCjJj5bH*Ez*S9xf4)$aJ>9aNR7oIu4fd;6{`3GT@CKsTYS3ommIvczI4bB~= zk3>2+D_Z|Tnkf!IF3s{6v~CFUz#)G74|;{4svk@#0b0^5Eu2V0QL zuN%nKSzrXjHSRy9xc(Z7qnUqdGy?84esz5$^=`4n!tiCp_>pJ_=TWz8#1fUx#xW)G z+%I6_Us+}TyY|Es!=7=;zas57YHfsNNNxOrZ^Q42&xZCPq#I#>I#JKF;>dihp1FDS z{J&*he`OW@6U6_k@dV0-{=gwtSL0mW8)&1XA@;Y_T4d&qKkNB=<8W97>?^v%JAZ)= zAp6%eQEB``H2_(FxtJrxE_N#Bv4Y#zt9bi;K8JN>=BBzLl)%VkZy@^V~uW7h@uIV7` z_G`=x=i)BH zccF;QE-|9-GO-(I-Dt=lgCNokFas)J^mqdHwhv1Zkq#7`!<-Rmf5;f;(%>-X3G^-t zWPa`Wl6}~`qGm?$*S|{Mq}2SC>C%a#%y^&q4&MKyE8EFQaRHb@M65cFGUt8wJ7S4V zTQ&~Hcnk)Nm+GfA0LXJjhmF>MRYd;PDTBv`3hAqKI)aQ&Z)){{GaQ7thK*^>fP$Lot4qNWbPYBZ6%pM$Ne z(3*+LQ8bHY0EcqUGvmG0_Bgg=bvswflO^pH3&1U@_*vh_>ai>b3yZG8~tC-&(4rJc?qm; z5_HEv7d80vtB#HYhzI1PA>szvEOx% z0PTa0`~}-#UsS)-hkYISojz;_{5$Q1VFJ}n4X@Fff2&QcH#-Ll zgpWsnpN|I$6%;-vDtPLQ5ELq=Ab#e8l&q|*fGAuUCarW%MppV~1LznXy*8~U6%`xk zXER6u!0RZ`#bGbMe^f`PX^zr@>F61b0R<{q52qLP5gO{FM`>t)(qX`N5DnW=_LEX- zv>e7az^A+*(vgYTbV8TP8aYiqEeXrq^p2uuIDUeQo9DEMsF=8ftem_846dktSwmAx zTSwRQs+qZkrIodVK|1A||_4t<{>O-@ade^6$YS60{7H#WDncYY3m z=nnBgfHs42+3f9~C`JAR4Hk{6+r}Hd33>G9<@xIqA~jDBL@8xGZzd!o`Gan7!}zNg zuXWWmE0`~j*tETFIu)a(p3tx+*q`$6S;hYs3;CbSSKENSC_hI!TOf`YY1o_9K8(UT z@IZvixi|jOix;lP>nKVDuq`pGv0|KZ}EdI-^^k3-g{|YgQif9GBwL;l{X*y_kK<&vT!GAf; z`_E+0f9u4#$^tz6lw2$L@qdNn{{ZzRz<`PSJ{z-j(v&X|E&~^jWXQYzK%EiUrD^f zK`;W83IDs-aqX`~QuhCYf`VMalLx*P|6OzJUuoxX9)9@WJ`WB5!+B^?S69_HZ#OaZ zK{F@GHNoTIn?kP&E8UxvcY!@qu`?C(y2Dp1Y#uv}#FWkC_4fH)vm4Z^P&je!$eJ0S z<*tR4$MUIey@+Hh9f%_-(DPfaWLZ^p>SwnkvAG z2zl`O+Ort}%ZHlIGAC?Yw_k-MQZC5V-4;WC%saNQOC`s9ad75g4vH;bYOF$;#+=H zp6rfTe#yBTmG`=o9zz`pr5cL1_VjW(1uwsk_aY@|t#anm39_nzvHyx&qP_foMWW;b zs=)Y^LlOB8i_6q8@n+ofZU|$tom=77!j8=&4#OJ|2G8QEGp;fR9DJUru*$mk#s`o- z5|dBeY?vyf42U~_f5qb%x?Vckh6mZKhx4=9V!yo5-pD!X^0qj)*n@1X3k~2S^qUQl zR8Dc%m%Dvn7dpQhY>}P;hi2jf>X}0u&NcR=w#v+!g$r>XjJgeWeDNB&UF`=QPu?CZ z+&b0;_^Jr?K!~iq+O;s%fZW?P+1SjH`w*&`de7X8IzkU>k(u;$x{l*}f6M&27ot<< zT%5z7{zA(3d^6ZX{*%ngyr@8&*TpyE8>N?)AgGeq z^ETqSCC|`Y@=__=*FoB+p1j$zS(%0(5;D~7$4wt-!HShREYh{>bx5!)-v^a0lsZ;D zKj%im$ala-m^8v1XtSL+2I=1_KzG9=<2_=Gc~Qly59{BRPw&kZ_W5?YiF|UKPi9a| z?$0#6^10%%+wK10k2=e2+ae_M*`z6J8?v)ncT2nr0&TcbGB7a2d(k(FhMtG< zC=gZ%a`kQy39^J#q;K&QV6!2Ytu-Nazf1e?OV)3B9F%OLXZKxeU!dauy0NS_d`P{y z5wriKL{tdGJi6~%zl8);i2=5g?wnr_5mp05(T%T{2v{u1w0p0*^srjMS0>wr!s0Y? z1KG**$3(J~Tv;byuv_jrO!vqI1(A}@wM9`j$cxa*s~Z}?cxN?2g*2STRB88Fh|E;%ajBbqW@x;0?db-ycR z?Ak~6%LiyFz}rH;3_5F)XQr0TM>x3e67}6g=5fF^cMbq+ldSIWm4__3-!VwzM2(Xt z)r2FIb#l)(GkYd$623+jh?Q_m91rc3YWrUJaEQ}ei}-FaCg=FzQ%beP^|K#Y89Qa2 z5kvOkLT{_m_pdJ3?-nuXYxt=VqI~G znWM4OYT*2aQjMh(idUKiwp}RKZvEqw`7fl+rhaiWv%k6YVL~Feur<}M73u%2qgMHW zWn_PbPTp|t?!!UuqYc z;XXk6K`8~aT*2wHPzo2~Lt=D%cai|_Y+?sD*$OmM%Ei4`c1<&$RCsZlo%i$cJ_V}s z6`tAD&ncXO(Y>*zeR6y){qhO2eQjl}IZs46n`Y`+b<0IE>2CZ4DGM*Iaef>LY_i6< zO-vHzvh2SRVK_y8BENlWL!*}e{t+fLbHwgI@hUp zpY1!i4b&!iViy*U@%m>>XrSe0^u2iE<8eV(tbHX4`nnRlkqnK<6Rz$C9wW%NFA;b{ zH`2A+CwR$LDM-dx_+DZ8CnX!Fmx++*wra$OAf`3B-a+s(O}yeDd^fi`u>zYhmilcE z0gRt((fWvFc@dLqi#f*bN6snN$UV@KN^W&$&xt#mEUDEi7Oz{SVsk^)UuLAOlJ`m0 z!2xJF-rHtxhrI;CMij``7SalbW(Fo~0w%*ImCZ{nm?qA1*$#hG&dq3hEWkLWCcNtu zTbi@gy=I5ASfS7Mi5pgx+-6w3l>u`b3V_8~c&U6Q^Q58H#TPQ?lJ+xL!_64z_k1jT zJ)rGe&g+Jm)KiHTV3h~2{SYVaSS);iquBf{yAd*0nM1)3_R`;>03{GGl?wB=>aUjj zemkGZIuk!o$D#ANcs)c-37mn-%a;oVLRg$%et;Xq)IN;aGztaYx|3z9eFiBu?@#oi z%Y(0AZ3vyD`pV!GRt-0X76u8;9IC4hoTn{n%ih%AYw=-diy6${;r~pq+oDy!;3|n@ zBjak?_B4HL!UdN4gD*(Gdj#BRC-#O(1}@3ic}xg!+I58p%O_P_IN2cC-_N7%V%&!tWn9qOv;_Fb z?d1t3xb;Qvb3HTyZIcqO(kpd7ekAZot%38hjvz46RJMx4M4NZe>8B=cKVchC zfD6RngKwu549^Vc`B057U0pY&*v2$Vt$xkCU2-DnYtNLmy!Gd)`xUQj^rjxMd~8~D zm^I_KNPOJZ-SV~!jzeo{cE}X)F<^NpYY47U%eGfzWf{!r@nhGQOEs%9B=e6u+e%+( zJ5|#I1>P!fYWbWFDhYvlT`P^CS5Ua7@}p!WR8_oWZS{N~7_;U9BJWB# zd}(j-tN10T{tH~^_wLCe?LdWtVt%+C{rm4_@T=}*Uu6fmi7PQkIk}gBb!|&VBw@AG z{eku#uIcR@y;`6- ze!AXzde3P>-0^wEuEj6|vgpR1W_8tU64hpY{bOZianNkWT7!SR+Iq=uBfpS;f=il# zHe%*kJO#7pnCcMs{J@M_7_)-p*owVoy`J;%Ri*lUJHp7I%C<2!^fNu9fnjhU4dZH; z?)}~Z8nTklH6)5}_zDqYyC~j{xbIElt^^IS2wGaCON$X?c@lp-@KwUbadwCD4wfI1 z4^WAM?ZU|!cRm-_rePwgB9Cd$N5*c5J-_Qawfcn$f|Lo9?5tHU)hn{Q=#Fqwzo%wd zwkkM0mKW8!FvZnKLyR1}>o}3^>2T4?%FEcF1-8-0BE5f%9@duCsKzmDG=MB3l3xoDH+AC|bZhUW(U2+j^9TxpO(}UA)p?jv|`nd&qA&-p*GG@yUX1jdfGuDTM-MS&l)|DzW zR;L&%0sq!fmG~0`ghz=T{pk2MwdeHHq&tFNyEP4`>9&*-ACME<90Q{~gf>TsqG#8z0EB2vD{Txo2j3(Ec60>wGS09CV{14>{sK z(t;;l@lGu6-7ykZ6SRo6)<32f?4(wq{c!&6;%f?O{c?zmA;!GTr{m#%*G)bx`WE<) zUNTkYf<|9WDFb62@Z7K;;gvOcTZUKr&o(c&CT8#Esz)JpyZU{1i=}-yM{djWU5s9n zGlVI5Wz>{3H7Jy%t=jOLXta^DIUOe0F3!`!8Ue8-`9L)KOE8BjHyIUnXZ?M0{;0-# zUihTl$Fd{|`gwAtcXErcd!1PtC)L@0FU)-Cv7!_#g;*m-k^**R#hFm7b79~9t)P#Gc5U_R@|vVEb>4Arm5TOI{X@rrH`e3?_JrTQA4gP(?tpPBLIa9%y2#yy0^2d$ zv99Tnk1I6-LEQ!t)q+X#(ROj;%(4ZM2m5~g|8F^fsLosJgCNYZ2sntFARDVq8OS|h zVQ+8SN!Y#pbhYywP0~97e-R9L*}a|rb79txzFD3qEiM%!cw$)t=Zy8e0^ASpicq?o z5BshJ$JE@^XOGS_V@_7NK6?V8c?T7PuG%HzwnPoyRH+BCW_U|`2l9W(bq%L`Rb3f$ zMrc>Lfg8k8SyyJ~B5TO|bcD6d)A`M_;sv4SDl77HyMwubF_wgT1A#p~p4mPWJG-U~ zL(yW}KH0C87q^PDzdzlaQ+E9{uf&NPI#u+Fep1=0#~QQPXsz6F6Q&e1=b(&GEN~d- zy=asABqRna-e!`;(6jX*;+PU6h>ok|SV0ebT`v1p;fSSGkB7T|(3g>hm7_);Psv_; zcS3A}+)ErDh;^3pKP@#`8jJM6Yu;*|eWbFQG4`Qgi)`c?cGm4v&C}JjQfV@ryjon( zZ!X5Lvn0upA7 zw&CZllUE#lCmCAg|7t_7H&j)$yYdE#Q^|sr>j~5%D-_{*cA=d>bGrt~c0GOnb`brz z{O28pkCSV_1{I(2{Km~R4t?;DBll_SEiJsSmeDKwtE0mS!O?=H7nj}Qo>$KF+>+He zJ@c?({D8A-L2!34d+Yf6RG(87aGo>whEp)#{aC*Zajdra3}iig-Z1W0YFt-%8I)DW`V;KM-^3`rDvV$6l%Z7-v=LO$WU5dw+Sw z@rhasV;82q=}YR*m~~z@m0tf4C9P>_x0W5utPz}f-(5Jf>7lT2%273y)aii7=>=YW zLHRjGD=&_ZC&<`+${QxQ-e8o9;570r`U!$q;m7WKRUc_n5Lb>1I@yLWw64K5oRiaY zj+f|`ma_X8%Pwbh0n||9K=A+6o^z&|=~F%U%iuHi5C=|Tppd{YC4K?(c`K&*35o@# zEP0>CNojTHEejom{^d;8M;XTJGK_v3rRHW=jb3JnjZ;}32oq0zmTi}g?vC@0Lj%v2 z;#bNTWul`o<+-+U#d{nlr)>F|f?47$b+RrW6tPh3oV7q3#TU;!SDBm%KCdXyEU^3;fsiLX!1`bNhxLC}WLz;(o7*P)uUjfWl%ppC z=iSC!4A^LOis}TK{V^Y3YaDr78>Wta@t1@7SVeRF!AHL7aHSd#jzHMSpcd=bpNssU z`%k9f+A~zs`7;M1uRoQr(??gtwIBOpUR?Rn!k?ma_N@Xp?cd&>#glbkU0SL6kR`k? znL$*#;r4Ro?Cn<-ZruZ-@RB58OObx2fX47l%pI|ImDE&xV4C6Q1>vZ#ICfDdTlXFF zI*9q5*&WwA2>TPD5hq?xugqeX-&h&hU2Ac0J^gX=VXq^p*yPjtuD%;|_)M&W(j!_# z@tuFbUG4l{sHpPGf6}H)Iced-GsEhfAwF#eWW(4 zj89WC-~-#4F`+6(=@X)~bsq1f)Gg3~FW8vteG4NLobV2;TEe0Ax)i@4j3GVcaXa@7 z+b>`D$HO!wE4G3dos6oJ1r)Pdf*CVILu(3RWNTVHk!(SFmjKr}cHvi}Q9ReG?cliu zf|+TtGkd)G)?dez0@wsy0(GSNhU(5ixf-p!7ee2&z8}JFAXK+2B|it;lvet#@#`o z0uedx9ah_ZG3H6G#vYPgVPMTt@_p#`k=jBoQEZs2x+?HicPfJ`6YF1U&nJnvM!pP$ za4xxB8z5LiUF`DXSe$!r^iR-P$-!M?4QWSq)gQsqiFRj0sG>HmN^aVscp|93u&r^< zs4&%?P&}n+*uyrY;cM3I%Fj~%SyYA~WYa-7b7_HT%gajZJD}andWP5l3hx1QJG0Rj3lsZKp zD3gAIe9iPd4pgfEQ}2x1wSJN9lT;a!>X+IEiV?F}vvwa8Ef6Fn0T#W?MTV7DTd(%D zQ*Q;1#&6}H8YhE`UH2|=%f~=hZKZ5iPGlAb2(Wna|G2=rBw3r=885!tM_X&KcE1)Y z*6{?GYAxFfHOY@JdDnN;PEKYZCFYb^JQz1Q2xo2#dPoFu4kI018pv~p zRzyeAb|nqF!wJmD5lH=4e}P~2Qj$GNE^Z#KMKlji$N5v==i=<*S41kVT?e6D%9rCa z2j0&7+iw0v;hl4zD1*%R9?*Ge1lb-x@wRv}!A9IgG2tV4Ro1P451ub}bE$()n6^!5 zY1XbVZ#3-n2VRst@H9uu@8uUO`Qh~H7ap4SOge61uEF@?5}_34cf4|EUK1E^>s&Ji z3zxM@Du-&|WHT)LPmTnKeh$`qda6pMU7|=mX>wV=vbL)3ao3w?w+xs#ye}T8bVH#c; zOm%Pi)_EVD%hgVHGXDu;n0Ko+%o**OYzfV{@q>%AXF|huefqVBl0MGz)ayx$=9i#m%U_Sj+HK zq~Yf|zpLk6V99)1mkrihr?F{F1XnFHi(yr<3dUM&8k?=Vup|Q6%CtY20H72W%&pcx^fUOsW zWby(5l2R<5-1W4UBdyC7f>EE;o1Q5U&C27d2V%-JV zu3eEPc(HeK&}wqi1mLim0}H3Q<6TBGbxEP{{RqFW8W>$snz?g|rOBV3i=pZszx^Q>F06q$E*U*hv7x}s1!^~HJ5IhnFRLOJRx0N&MU8&vCgqXDeRmy_VK`dciw9RW(!-)fJgn zm6};M?X!Ke>h!XHl5>-BoZV$nUa*mCSF)+)dVSSPXi)k_a#yf&X6&51Z0`GHDG4a2 zJ8sup_#4}$uHAILPfm+6-mWh`DQP(sXS3ZpZC6%h{qb|C8*}>0bi?vzY|MO(l(k%! z16b_tRht`k%|*W3DD|`Nsm30wA%$FWxN=``Mc?%C#MvfYg)f9Dav8iO;J8KaH>=bA zT5PY{d+toh#S3V;c=mo#El-7=Bgc2-5Dx^;te&yhnB{Va6m}dBQ^PHnK8(8L`{M;; zQohKgkPr*G?~80Y+1}sWY9;_~(WZ6b+aV8y9bcDoA>pmK`1aB7j--q)T zS-(!~zwWnxpWz|KW^#txM@Ik^j*Oj1lXRJ|pX@9WGp)qY#IWYUzU6tx`fh;v>_I{z zid4u5JUdTPxCN)-SK}1s(4py+H8Ad<A{Z0Yr?5c_O^S{ui6AZoq5D~R`{2ckE*?H^;U1* zd}171DAl;}lA3#4GbGIQ^+3fyeB;2m6CyInge!wwI45pG9dNMhC%yW-p*=2~<8G+x z+V{0Q8cQbTnzjh~3FmudUKwOsW}T2!?=iIt*Wr`7cK-gFGjPiNayuITSjdP7Nt~N~r z<_eqNoZh99dc-WKMf(!3y$D4R4ZFyrWr+FGpCAqcz{y+~F1fl32$B*Ozw|O7gL7#N zlU`CP60fu>D7+6V9OEa3UYy>~{h;n8;k(Lv8p+VHb^rg6_LfmmzHQ$ql1d8FsRE)j z(mB!~BGMg-C2eBi^> zRp)sezdG()rnjs2O~l#seb=bSND${7*v&k8a5dAnK0htNIRm9tf+OC31d&4O#_v^s zs!WkGK6=<)8H|w=a=zN+xVsesg?R|6k3HdpvZblO_6??F*P3{xidSHH76)&tTGbJ;p>YzHjic{2@F=jHjK| zX>>~9&RQ$t_TIPD(E?ola}C0tRc+P@c4$aJEXhA!L*nV?F;byYevttqUo)hQKxHfv0#Lq6FI*siOt>M<8pFNzu()Xc7 zza7@yym}h1>z_(XSW?pN>mG1moSEKUU?ja#>Wm$`IRNfN7y67RD5HK;ZB;yEu3x}B zWNCP(dQW)#E5B_K7O>A1A0%t?n*`E+t)GX%xtBeKT+rJCss^fM#PX>poI>!}#49d$2=VAe zb8G9#50;L3ww$8ZdkhdF`yIz4g{W@gl3!=f>uxPehkY$SeMrEKX|5hm&$C?rC9KAt zIH&n-iTqUImVR-Dn^$NIpU7@=Y5j)r%b}JJV7tmUiOp%BtZs8rnVZAS`Jq=5<>_1L z!60dCP(DJt)Ehq3TDp36zq6PaxNpruA`?@vM|{a_=YztICEWBNp#@7o zz8?+I$BpV&8lZVYT1fh=AAR=8bTK#qaW1vYIXy+0wsNt^m@gl3Wa^287w)Exx52Xu z7zsd}k8}hs#mgG;JV@+}HChc5RGv+A51xrtvd}FNHPmEci}q)8Zb8--jSneJ#<;WH zOSu|DKm#>WVkZVZ*{j?Y#0Ayfc(t4+}4AFMc88I}N>W5T}}KLJP2 zF*GR`3+zp>Gub7c1_DrYQ>b%g2INeZpc=yugn3>rEk}5}z3Co+_r$-Ll6sf$X5-4; zk)VXC0Qs{-qD+nd1+{Erv>Fi$iM^{b#h7r`7}l{kF?js!M&-aEzcDK2IWe~X6jaFp zFd4W2#QiDDL*zZh*Xw${nWw6^+S~+3ZB0`8iUBddBU11M2-j2<3vre|DZ!Y5N=;JB*=~ui_lcke>8(mr%JV<|h-<*Crh6_}$vI8>O zIwcLpP^vbH&jn)xk~J+t{jFLqrs>zY&>hHdocnAh)KPr%J0xpVTxKS@*z}u} zJmswaq~KF5Q4>F%Y&Ln(D0c0WV+%1rjG%&=iAc6)R|#9997?#7mekL&OG#M4q*&crJbF5b@ZJOHtpfkE&bP~PtnH{LBSJ4vdV5rc67l`%W4fptE=5!EeV%{M z4=tKz3=}jrf`u+>&f;z8zf7pcn+{7j>-S7hdLGV7@azp;$;7|+S{({t#p?N=@&jGd zcgT0mNKmVkK9I1abl|RK{MmFs?53x^XDPTq@qXuCx7P>OtEf8dFa^1?&GopfqUC)w zRO(n|Rhy|!8P4=xr_!$@vb4Cf;K|dgZwpVMf^&emQ&^lQ(>1g7oa*OrolR+FmSDe8 zb{aj5a`C%I+`zhO874<(hV`T*!@;IZi62BiaOK)9T)uwDtFEmRO+{cK{yn~@-T1?l zW&7mknx~Gh>fIM7+uSZD)fgHZlT|#}=qnSUtsIL?T-J;I*X@~~fZ@AX76f!%`9MwF zKY0jFQDjY^UDP?K2M??DH^n35x;8eWMm&LZ{Trv$5);c*6GT&Jn|p%kac>)SOVHGQRH#xfk@nM*7-vlK?!bW1!hr*m=JeBYf;*8Jo-xd9Y-goezdP{K*v4Y-l zjo5^OeK#ULR*$cRzN&5*()@B2`83RU)=XgLU|fma@P`LQY{G4+)2(C0(lbqNm$2@W z)Fe!LSBjm@k0BulD|2B3u%lB9Gq*Z!Bqd_R&Z=S%w8L&UC2A- zGw7?mK6haM3T~)$A-L}D_uIBFDhC*z=lj5eho0Mv8uObNe=nS2=6)JqzrXw|KRU0% z&eeXF%=v|AFp(eq3HXNY?4~5tle6ni@Wacl!BNS~DMYrK_bM)w!LQt6reWq>6awB8 zwbJ-tZJ9G$Dqt5Y@yb?FN_)X+ROjm_Cx+yM_j-_U=(y1%;j z7){Ow@Zriy`Wo$q<$s2hmD2yx$vL0jux_7y4qk1H!|6lvA48Q3LbH*Om zFsTng=8eAM+TSccfus-;@U85+<9l(ov#Q5QVX>N_Z!A=9Uuq4HA_y8Or-lQOYNH2_ z-v@%n1D@myk!Q(y_KNjc#4ESk`b>FWFe|f&L4`J;Vq=r7WDkHx>EKRg(|cOe%oEv} zsw=0DA&@Trf#Y)JE0erq_CT)1^>CW~&y1CmgY!RPK)*JoJb$l{s0fdA%hHV_k(e2O29t-YK+IPg5Ao-!?h$ zSJF9G)q`;VOl@X!;CTNkXU6Slh?e|Tl+5ZT%Mkyd0!m}j?+s0Ie(Hinr=5^qk62Wt z?tPzG+7X1|0Q=(OBt8peM6$xG%N84T8)_| zdn4$?>KHF8_J<9vP`a6euUXw&zr_LlX3!X%CjX#-XEXsQK6pdPIQT16pxvi~D z;&cL3PlLqnbva@uDUHeT70f;?W;a#AdUH;A7lWHksDHje`|&wT&6VkyHCA@#Epkt> z4mGWDo(reZ#GU!B-=Pv7F&4Z4hjt`#E!)9Ic}iL1qPffm_-&GuWv<;aLS?W$@4xB z%mLY^Q^J*`47%|*s)jE#FHp9kseo~-cgQ+Rx zqYvOiPd5Su^`ULrj+}T?XZ~tl94WTCko5ts;uimyoCmE-Z>k5iCFKrj&tdj|Fdjc! zTR;b2jEq)eizm+$Y^ZA5z;T;VL)ZGo#G$rYZyqk?u3h}U?}9q|0=^eD{decj+l)Wd zr2n}vu$GIh@D=8b`6!ZC+Rdo)*Bkr21mT6x+-LjFWh|{0t~@=gQrf4NfT+McB1gR$ z9OJ>`_-u@&2b`ud^vpGB5dZ;+rr3W^E^KQ-Ukz&S>enA)lQ=Dc1CscbzU!yirwbn? z38;OW=d)ofy#@1^j=ird3BgxoPTMt-(2MjhAElV3UdTz;zEnn<73J-CUGw~mmJ*6Q z9#rNI?y2X>LUTm0&VCYM3y%8xV)8pk$JG;(nw) zd8PCN2$@E-{8^VWT=y0X>==*=4fcr!X`1K^?z>G~skcg5xSJ)cRr30ih;KH@K?DZ1 zyRmZ+8if7jVXn>%lDQJd$m_YxrCplzz|rAyo2c55ejkwhWGU_MJ|K=0AHh#xG+sTy zS5JdIJF}W?%<}R&{fv*)M^h;5A|ryrBw;{;V=`&LPYNEFsP0r$`0b>ilxpkH&dq%I zMk>5E)=?a)hVn|_O)E~#dOQ4TbZTB-o?BH)owAIM78uvv#N*zrtuP{zO`LFkayode z&(2M;*s$=)>5#gykmnH^x3$6g4Q1u-GlSexRy@mNE9f94B=rEQ{V`barc(OKgV z&omG2OE>Rx(AzT$>|dJWuIlOR*#uD?`?2(=rW)PX$?c1Q=})8-Hs5CF7|ozy;Z>E# z)F)R`?Kz&0hDN-pjP6JH4vHF*j+zDnxkjA=n9BRzhA5dGEDOqsS^mzcubY#o6;U_0 zbfraL<7CwrA($w^ddynCRljf2&f!bZRr?p5USn8wR1H6oO9T@g!*)$IBHCo&QtwY+*By5gjT5fs zNB5ygLt3T@HGAIYctYe4z&{{e@U&ELeM`w@CpYydJX!T7B>IUa}RNz=Vn-Zz%e59c{s6i3*l z8*-RdUPiVI-Yu7X|Vgja2IT` z+8#?RvVK{f-i`@$7CL0FUsNdEU@blf5-+Fs{=&m!W$5I@ycRDP4hLPI7gS=Lm~0i( z(s5|J;LXTgqZGX;D;uV|&&jf}+2>INUmZWrcGd-4a(J!N(PG_!^UEZPlO4;AeQ7vV z_8#t$xRaqyNEYHR-Z8iS&}&Fo=OW=W7jsJ2oXDwHtMsv-GfokIk*M$)`D#foboZjC z+aaAFg|}GWIw$PDM)Zn}2k&n+wtHR3n`_-W!R~9PjF%bP*@~O*es;-p>C39@)UdMt zvSP($KL2CxL!i-|To~$W!M0I_!*^CLVIJmjCt;PfaP-0~_VxirFCLl?-`Crx>h^@Y zRYcyf*dO3;2-SJbsQ-)lQ zFRFYI9#{36zg~-`le&=MUe6|PW{O@w9VL$9A|CF3u=7(aPQX#LFT{3J6&EJ?2P?Af zPU%9j_1jRgz@XTO{Y%1JQmi#Cl_+k9_y>BlPiL)j*6$?WH6{Anz8$<98kG*`yJfw$ zo$jo|#W|!Kb#u)z(cRCmtvXzJG%n@DuX9;;?UZCy*f+7z!>T7PeX2=9q(Ki^?86y5 zAEP_(w^gNAql;H0jtnjQOy85!oz8u76|ww1dvKnr$g*&Lw>-w!Lw>n>=+>@wrzLO% zu{`2X`TEShb3j1n(?rFy4)EY%f(@uYx?YOhq-Ww?G`dmudEyG3K}F$%(yy>wDx(|a zsq<$stp*#Q6;_g~czZ5B(p_p|`jtQYy#*o$_ttf$)Cw;FQ$jcHXZncQf!QHKcvk|p zn_R4Qe)A+ZA1?(0F)Pll(E__Y)mOs8^7wC^ny#<%wcP)dy1p#C6roNHqoGC*9}On~ zoB1J-i(p70dh>@wpWf=5W6vbx^#PUD z^LS8Gbf;{zC#B|8(SM&j%`dzE(Fy$r2mT)~`TzF<9g3W@um6X+;$Pnb2`TCl06`8eDW1as#Eh>M1 zz5a`J{vv@*m0)mhRUSCunkJCgpl5bLMCov@o#KQeGHiiyzd3bFU(!5Fybau+#c%dB z^2&kJ`OFFzyX(og^?yYs{Kp~u=i&T+_#gT&!NO$4fB#P4{A!x2U-+w9JH)9fLxvMA zvfghjl&KJ9{o}7H$i_@#vV{;h9{JgSA2e4qCJaqF)^$Pjvtue)B;c2Oi1Z@7t!l~~ z(~bCkd2Nv`sU$ATsF`nhmx$!KO83e^gJ9XTv(IbLJQYa={KU0gtO0(dSUA^n<9f9* zf}6*KVohru`%EuKmmW zHhn~*&t01__%75_<2P1^LCtclci@fRz3_gzr5SIOgLAwyE-PTQ@n@VHp_fT@Mv}#d zQm2;>qE+2)LV{Fq*Q`5YQ2?Ri5lplwMX#9qg>m!#lNyT~*pO)@I(XY{D?>M(Tx;@t>jGyQ5hRT{P64uDl zOFDUeplg561q+e{`&Feer%{F9_2)}c3_N=K1foUiY6e+rZ9Z;eDOy_kW0kh1HR_ji zY&`uxZqEP5C537fQ_x3Yo6z@6(T+{p_;)!RzYIR`vyu0UIlBRAaw%}P2_QNjFYOG_ z9;Qf-4FROzx=}iQ@pVHo)8FW_jrGv85xa>G%S$n8s!p^NtXlI_Lp#~RNm?_C6|>zG z@?SZ9S&R;T{rlQ*GBn3hC;ly9f1F@K6B(dhy5jTYW7E$zEea6}3;nzaGf#y1<2@1h zjUw(rLZ1?)hw!T5yE$t9cfDI4xc9msKq8bT`ExA+rmLmso1Fl)S4Y_PF8@If^G=4x z1Lft}^?yFiq2?IO|7kwdo9^7816VV* zbEoe@An|MNfUy;MH8<6a^%;fdlKleHyq-g{BwaqjzC7uv=K7s1PrCex8s=(!xOtXq zSgn-@_F$Ard5(!|szR7Z{r#w9E5o<#P}yV;ar`#Pi!hTFJCIUUd@mw0GT_qwaytUbo5Izqw#aS?5uTQSHpAVo=>ZMYzM~TGY2uUqzDgSj zq_R}pr~QsNBSJBZDnx<;UD$2CMwr9(tk;K!mCt~(o{{d^hbJ<93F%&u=&@d-dbqJk zzo*4t7wGHI=Ic;bvy>!dAvNyzP=?s@SA)-+9NiHONx7IR9{er1+kuV{l0h37pCoCH zL9UO`qZW?V6>>*F10GxBB>9 zS?-l>Rd7G^>xo--`FAOI0yXJb6J{m|kbas+s zeWGtY8uF>qWFBrtDXRBd7qMI>RR0 zX8ysl1?PzUJbQSXi869;Wl72yhqmzF_Nn~dr}rPDBs34zYg?| zKCj$olbraXXA&woHzGrgL?-M5cM^1J54@|E@zarKqp2y`GD4Vp6oy5JhEfCsg~GRt z9dXo+6C<$^>)(`Q{)n@psd5T~#=Spznt~NWdSG~mw58_VQDalj+e;MYJpREV2ViP? z$DR?~FmWcGYw~%(2}6bmTn+QQVUn2bp_}}`td|h)nrUH~S1u!kiE&?#W6@}-n^Yg~ zc$YY;qx5jh!Y!B+B~8@tO)nbr4_0GdjbRDz*aigv^oT(V0|<}|IaE7I_B3$U-zOQ2 z)lY$8hS*KVl(%jTzo*%z&KPilIVmc+7Up%d-K(D(zBl|1x(dvb*l?+>SQ zI#zt$ZqB$REOB878BBwG_wt)?9EH%=%pWf&8l-E@#@2J5*xhqZvQB&Kin6*42AzoJ zRi<+h^#^fJwLL48$@?V$Q$d)w9qw@T9S7U0`z%-2OxEoj)}B;!F9QT2E!iX>e~bJF zi^d_qTx{ytu|K6yNmt$qu(5h%%U(d=7MFf9c00sEj~Ssm;rMXxiMsu8++M~)5lIRz zwKZ6@M+}5WvEVLW%sH1sK%m>gA7XU=ZUZP};@bjCFdP~b@1*vd#UikLWwyul6H59) z-{1#OUP#FoGOOrC9~KnrY@-w%TD$*=Ps*winlz(n^akhQJBMt{5hvsjd(o4Ld&BbM zV84C?CJ$k}%n4IMMWnH+IujNqU739xWWIfHUY3KZ?|A0p{6Tll@lr`cz{D7r2yBrwf{yd{SN9j9@%DyrlH34B^W;W7AF&uU7Q;U%Lbud6wv#mh*$9xIw_7xM&599EeC+0h8T!am{xV* z#M`#`J^wH>DnxLU#C*OEaTuzso+^~FVI$_)I_^MrHzwPzBwT1XiU~DlnIwzdI z#qldIQtYT6ds<5oR0UajdgG^Siu`=(5Bmu6boOOCw%)9VbcqTsoG z>2z)_PGLK%G7o$$YhIaS#qLnxg-ENc%X<;P6m?y8F7NH@Y>A`p&e>19H=?8b?JUgJ zDg4a(vDY?%_}PG<9-v7vm0KOFPx}lhULTOD&v8do($8u?S$XBT_7$%h6J1}jZxmFL zQ)5#8d#@zo79t!}<9rK5=GXYTFOl(k>M(q}EfoTu(p{q;9VRrae-ElelCEakt?h%J zPSqtf>;-@>DL>C}In&u*YJGho@uZ8li7FiZVCKGWP&W))b_9%J49iUlA^2&3o6SDO zI;}T2`mU&9gZLN7XgbAqEvhI*Q9(2DuM3`gtT)r1dP3vobQSu6#k^ z^Y8;H9L_bCKaE=g(zR(1`IE(^t4)F<$0G5Y5JT)w620h1b?&%qw9tB4MJq&xX|Y+x zwm0=k$FLTww(w{1s$F~fU#@2(AP9ewk8Mr!FcBF*1p5}AA0OIWsXYMq%94B&eMwQ; z>nMhGXD?~av|HPC%&AHlE%-b3=$d{SP-8oOR^2FPg>5HvRYz7H5;F{sdj+U-34{;rQx1=`ksfQ z+mun`YvV*ZU_sV2b3{x*D3)x#Bp9nAS8EKrN!oK=>G8M^qZh{mtQ;%e^AyGQitmn* zm`YQP0XlxPt;O^HtLbXD4LN2_l0E?^$R3FeQqXEmriM7W8G6!xg z(4RY)P>lS5*sMd9}jKD%z)jle)3LMrVRwVvGTIC2_h34x45$#=@ zBrNRyo;L*sc{$EGOV>z7pXPk^JKv6IvvOTG-lgqji=&nE(I0RfD^bCCNHRZA6;9Ma0$=`FHHojjOzlkq2 zo3(YaP1$wbfA-^(lm!Ns=BImjcDF8Q^`YhlRR7o5ViTboQc;_bHhqmX$k%K9tA~AslCgwXAQ8t0tseST9PjQMR$a-q-34DtEo1E&1 zh74DhoFiQ~h}WXmIye`lSNry3Jk|?e7VLo+rMOV7z3IG34|Co}?;RrX4Q&`|RJNIC zwu5Q!neEcqzZ$JToOmLCQX3>4oi6$52cx_VGxSkx&({|=8r-S3#KoAn#$QSi&kc4` zc$UZ6z*3JTMV|iXrT+)ZQ)iCHKgpx-61!b+&8*hl28mNr{>0gnZmInX<5ov%e%mEN zqgO1zj=~f^_}$*6iYhaphD-_I570l75FEX)-r}}3*6HmGZ5eltpAf9cLf@cDU>W{H z`E_WL@AY2Kf~Ls-*i45FvSj%cmscz<__%HB#VaJzuDvb@>vc^S2{>HSAR9unz-YYT z<#j242JD(|mQbB!P|N&z08qg%w_eZ`WDnDz%T=JM?>qaOHBH zl6vHyROb-}%TN*@SPzL2vbRH`1+{VXPEhcLq_g(4wv2=;GKNAG_Ps4g_~`l#L9fW0 z5ak7J=uLh{0E)gmz&b(2B(T^7TjB&f*&&39aHQ$sva#=GYj=M6-8CF0Y`(S~dcZ9u zP2K43l(=fLnXv3$?fGRX88lAg-udmo(I5d^zFpZNDH@G% zUz$ygbh55TMp1ikD$jOIe@Qz;Sl{$N0Ga3{D;rE4)Gv!Tf{n_ z#@QSdeqPa16r=K-kNnB2XCX+co?EOLD;oNg#G`lq3cm!$xAB|Rz5ejXBOOvEt2X>M ziLv%xbM4L-sC-hHkjux)CGFBrxDA|IOX^M0UokjEX1+j)!(|aIEMZAPtE7jb)RIi8 z*-LYQ{{hSBIkh`o(o5}pjUdXFL^NwWG^h1UaZ?pu3#DcoAF2*|*{lqkE6Ne?ZvzU(5} z;j9W@7eD_+zh3-Uj`RUnqQ>Medl8y!#+i^6`6@a#?bzr;Am)Z2RjBXER68nSGk#g6 zFAG3|7sz4Z{_$vGkWXf{5ExE#!O+jsKA-$({R>vVjqpN)Pff=+3*LAEs~RKNhl?gS|+e4(iegrw8~K5L=FcP-OS*s+B&Wtn1z#HEsc` z395{t;BTmv2+ze!RmKWiQOWq?x&ZZc+q!S8%?$}~o^At?NBET(G8V^n*rhZ$z2n6NWgf8Xc}gC5?H3}(0MX}Qum&_C-`m3DeK&3lK)v; zTBS<6r_s3t6H3MX#_MDu(5{2G8_hE)J&0)K;pk~GNvBjY_Vi_kxVq1==@U^Z!ORHb zAiTh*nbjZIxsdRG8%AQ!E5wt$t|@mwZE`!A6x zqVdUcL4WE2pzNv4Ou_ayPua6qG3FcxZDfboGUiZW zV?>4-U%$A~5=$KpOH%fBr5J50kLjh6c{wu~1 zF{lHEeJ!TdI1!;W#me_XRexAAL#xvhcG$z-A^#JY;=37a3rSVvhS*NaFv# zLCx^%7j~5as_rqd9TFYXXn}Vyio+;W$y=m9`O!8}h^rAx?PC9hx*@;R@*j;Vu0>mD zy0eNo#FBPwaqcSm+Q5Zt=w8O=o}B2t&&`K>rFt1+i(9cUmeZO2KT<*h=xKmsxD7iO z_C`)?LFf#{*3Fjir1{Q2%@bDGn_O*W4Qt6*C;4vgnQ zV{j5ze8_;yUqD~e8EJwcPzIeHaoHGc%Xa`x7TIl_4_{aQDk@_ShtU_H>hts`DD|^% zwJ|{}ucuhkVfK3>3jz^qDxlW%tAW#=pr_T%BA4{+C#qR_0TJTYkNJZM&mcfD5}~K+ zxpAP4NnPUT8{cu#lZ;}oYa&c3;VB@PbI;8h3c7tVv3nc5pWBg9$B1+kGwjGk10 zMHQD`2VH;I#ydd$r5DRbOo~3TyP`#Z0Hy{_PTy15u4Y4Y{LF7-xCr68%PS0n@NRt zb3od_D|O0bc?PeMc8#&I9yj^FJJ^!VBd@zZ5gaj8`W_!#6dLU<;F1iFDBs8tS3zLj zTkRa{69irK;*5}|dK⁁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

    %S%SWslDF_fG~0LNMyZrMwqye)TPR?M}n?I+%RK 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

    an8c!5qn5%utF1ret`J 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

    XjHy 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≦aerw^ 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 literal 0 HcmV?d00001 diff --git a/contrib/src/test/resources/contrib/tiff/smallliz.tif b/contrib/src/test/resources/contrib/tiff/smallliz.tif new file mode 100644 index 0000000000000000000000000000000000000000..ee9dbb0ea336530a05a8750ebd29fc96a77aadeb GIT binary patch literal 5052 zcmbW5XIN9sx`tO02)zUd5PFpmKv+`5Bb+57xE=ghj^d7o?MnVEam`n6sI0{{g84CKFNe{}*da-aYxfB<{| z2nGVfK)*f$8UQ^NH7zwIJuM9_1B{-L70JfR%*-mmFUW~hlu}Vvkdl|Xa@F4Oil&v8 zoV>B0iPbe{4^IzOgTR{st`YWb9xmsbfM5&^tZ>##Y;2cY)aBJ({?F~#8-N=CK%}7G z4fv~pzz`BrC>c2gCDpkB1VH|rC-#3j{->dd9sq+N5HJaZl$3;oxLq`H9w32{GVn^M zK^aZ1lko*INycId$@$gmyWpl1`vOwVL2(q6%q*-3Ho*%*NMV$;jI5lzf})0|7FzqN zj;@)xg{76XjjfBTo4bdnmv?YTXjpi}&B*w>35iL`_fpcZ=^2?>**UpI#U-U>@Y~Vx$secRiT7%P z5wXD}BoGp^b8HYeoEQ)o2`R4xltIme?0O(0pJXgKlRBobzKeoi%5)#@95g}6EFirs zcyLbs8~lIA9rynN|A+fO*mD3ig!qPGU>NaBbfE&D>iUU>^K8WLjq(NdXlHi1nrV$dX53grPqgCT8e|W`c1RCvm#_N0PPpia*lCcyu zrppe)hq*aOPBt4UA6HccFw@g%ac(Q{Jo%U8Soob*#&tE{@9kBlPR zhZUI|eb%9H<(WK5%c>+4<+03jKOfDCQa`B0eXZf$ZIP72cH3pt zK1$?qWt4j^R)>vbjOBHWa!G^$=ZB-}8g~kt+}zNvhqHIHJo|N1w!WS?u@wV^xAiJf z#st?GCalTuO?rH-PZqO#=wL5;=ZzaJjTT2$n;PpzF3yQjsMMgkd&V_jiw+^IxEh)A z91BID2UJw5P)?(VE-9|2FT^q~CwOjNs7*o&)uS(Lp`5%k*<=T*C{WL8w=gpsS#cHV zH`&FympK>>aSoG-W|LKkWG|HzsyRa2wl3uGjdV58zy>CUxL=}4g^LDileB%1nZV-n zhK7ReUbA-sR5!+@u@XUc%8{00A2sr_7F`oou-i8814(@=e&EOX`EM1KJNY+;BCd3?oQbzFpc#ukB#Zit$AtF zf?N&xTznn%WA(}R$;Ru>9%~03tVJK!F&TM6O;;!4=?6C8)IfA0T4Gx-q^D52zLuhY z<%$(j?hu!*_*7iT*x=ejmH4p9z{ygFFUjd`CM0aP9?FUHMx(l|?GgmEla6FO#vk_* z@?Sfa6?x_)uKUhx33H4EMK!XW7-$S(a)+bj%qH8(OLffF$-*bA$(JY&FJ7iJu0nos zQ)F7*ohe5;VWPEE<#?8>$_QffI8t|SSs&Jm*}b+^qs6FvRqfq|eA`$Tk+W`6HNdnd zS~La{6Rd0dC4AR00Rxyj1w~oJQ%Q`;S7(#kq_^nL{LnAseYWac*l&h7>tGTz$cIK( zvUoA53a)vQuS5@$1yGtGwOyaZAjfNLh6pm_W z1~k%r>$q*XY{+{gdR5+vla<}kO@3n(oKos8I~*4dQ-;41%j8aqHpM1 z3QP^F2-I_yMK@JTJda&D5~Y>_o}WaS05(e;ey)@=+vs%+zKUajZBlE%+fzr zXyqYXP3{6Mt^<8hht|S(P?#3TVjj)()Z|mqr4};-12LTt*YEipmLgnCsKc+8xBHU* zxOs#x)|gH(ENV`LKT-^J^%yL(Ye+kYiPnbJ`%C9s^2@KW<}8V;aZq`;(~PN~(5e0x z)J&{8^*Z6zo!aOvH_{P|agBU`_R3gR$b5&` z?{)V4p4w!=i>5Fw8*}JN;AVS~PH}@gUZ=FaU%ac=rn%jh=;{cgMwXL~pp_OG5&3XYHCqI3@

    qzkT`*AGRwN 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 literal 0 HcmV?d00001 From 96901e020fac7182e16a4cb5332ad635f45c3834 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 25 Aug 2018 15:34:07 +0200 Subject: [PATCH 027/277] #83 ICNS write --- .../imageio/plugins/icns/ICNS.java | 26 +- .../imageio/plugins/icns/ICNSImageReader.java | 29 +- .../imageio/plugins/icns/ICNSImageWriter.java | 273 ++++++++++++++++++ .../plugins/icns/ICNSImageWriterSpi.java | 60 ++++ .../plugins/icns/ICNSProviderInfo.java | 11 +- .../imageio/plugins/icns/IconResource.java | 134 ++++++++- .../services/javax.imageio.spi.ImageReaderSpi | 2 +- .../services/javax.imageio.spi.ImageWriterSpi | 1 + .../plugins/icns/ICNSImageWriterTest.java | 189 ++++++++++++ 9 files changed, 695 insertions(+), 30 deletions(-) create mode 100644 imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageWriter.java create mode 100644 imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageWriterSpi.java create mode 100644 imageio/imageio-icns/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi create mode 100644 imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageWriterTest.java diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS.java index 89af08f5..3879a65f 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNS.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Harald Kuhr + * Copyright (c) 2017, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -92,14 +92,28 @@ interface ICNS { /** 128×128 8-bit mask. */ int t8mk = ('t' << 24) + ('8' << 16) + ('m' << 8) + 'k'; - /** 256×256 JPEG 2000 or PNG icon (10.x+). */ + /** 16x16 JPEG2000 or PNG icon (10.7+). */ + int icp4 = ('i' << 24) + ('c' << 16) + ('p' << 8) + '4'; + /** 32x32 JPEG2000 or PNG icon (10.7+). */ + int icp5 = ('i' << 24) + ('c' << 16) + ('p' << 8) + '5'; + /** 64x64 JPEG2000 or PNG icon (10.7+). */ + int icp6 = ('i' << 24) + ('c' << 16) + ('p' << 8) + '6'; + /** 128x128 JPEG2000 or PNG icon (10.7+). */ + int ic07 = ('i' << 24) + ('c' << 16) + ('0' << 8) + '7'; + /** 256×256 JPEG 2000 or PNG icon (10.5+). */ int ic08 = ('i' << 24) + ('c' << 16) + ('0' << 8) + '8'; - - /** 512×512 JPEG 2000 or PNG icon (10.x+). */ + /** 512×512 JPEG 2000 or PNG icon (10.5+). */ int ic09 = ('i' << 24) + ('c' << 16) + ('0' << 8) + '9'; - - /** 1024×1024 PNG icon (10.7+). */ + /** 1024×1024 JPEG2000 or PNG icon (10.7+) OR 512x512@2x "retina" (10.8+). */ int ic10 = ('i' << 24) + ('c' << 16) + ('1' << 8) + '0'; + /** 16x16@2x "retina" JPEG2000 or PNG icon (10.8+). */ + int ic11 = ('i' << 24) + ('c' << 16) + ('1' << 8) + '1'; + /** 32x32@2x "retina" JPEG2000 or PNG icon (10.8+). */ + int ic12 = ('i' << 24) + ('c' << 16) + ('1' << 8) + '2'; + /** 128x128@2x "retina" JPEG2000 or PNG icon (10.8+). */ + int ic13 = ('i' << 24) + ('c' << 16) + ('1' << 8) + '3'; + /** 256x256@2x "retina" JPEG2000 or PNG icon (10.8+). */ + int ic14 = ('i' << 24) + ('c' << 16) + ('1' << 8) + '4'; /** Unknown (Version). */ int icnV = ('i' << 24) + ('c' << 16) + ('n' << 8) + 'V'; diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReader.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReader.java index a4476dc5..82962c98 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReader.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageReader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Harald Kuhr + * Copyright (c) 2017, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -31,6 +31,7 @@ package com.twelvemonkeys.imageio.plugins.icns; import com.twelvemonkeys.imageio.ImageReaderBase; +import com.twelvemonkeys.imageio.stream.SubImageInputStream; import com.twelvemonkeys.imageio.util.IIOUtil; import com.twelvemonkeys.imageio.util.ImageTypeSpecifiers; @@ -422,7 +423,7 @@ public final class ICNSImageReader extends ImageReaderBase { private BufferedImage readForeignFormat(int imageIndex, final ImageReadParam param, final IconResource resource) throws IOException { // TODO: Optimize by caching readers that work? - ImageInputStream stream = ImageIO.createImageInputStream(IIOUtil.createStreamAdapter(imageInput, resource.length)); + ImageInputStream stream = new SubImageInputStream(imageInput, resource.length); try { // Try first using ImageIO @@ -441,7 +442,7 @@ public final class ICNSImageReader extends ImageReaderBase { } else { stream.close(); - stream = ImageIO.createImageInputStream(IIOUtil.createStreamAdapter(imageInput, resource.length)); + stream = new SubImageInputStream(imageInput, resource.length); } } finally { @@ -524,10 +525,28 @@ public final class ICNSImageReader extends ImageReaderBase { } IconResource resource = IconResource.read(imageInput); -// System.err.println("resource: " + resource); + + if (resource.isTOC()) { + // TODO: IconResource.readTOC()? + int resourceCount = (resource.length - ICNS.RESOURCE_HEADER_SIZE) / ICNS.RESOURCE_HEADER_SIZE; + long pos = resource.start + resource.length; + + for (int i = 0; i < resourceCount; i++) { + resource = IconResource.read(pos, imageInput); + pos += resource.length; + addResource(resource); + } + } + else { + addResource(resource); + } lastResourceRead = resource; + return resource; + } + + private void addResource(final IconResource resource) { // Filter out special cases like 'icnV' or 'TOC ' resources if (resource.isMaskType()) { masks.add(resource); @@ -535,8 +554,6 @@ public final class ICNSImageReader extends ImageReaderBase { else if (!resource.isUnknownType()) { icons.add(resource); } - - return resource; } private void readeFileHeader() throws IOException { diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageWriter.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageWriter.java new file mode 100644 index 00000000..56641a40 --- /dev/null +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageWriter.java @@ -0,0 +1,273 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.icns; + +import com.twelvemonkeys.imageio.ImageWriterBase; +import com.twelvemonkeys.imageio.stream.SubImageOutputStream; +import com.twelvemonkeys.imageio.util.ProgressListenerBase; + +import javax.imageio.*; +import javax.imageio.event.IIOWriteWarningListener; +import javax.imageio.metadata.IIOMetadata; +import javax.imageio.spi.ImageWriterSpi; +import javax.imageio.stream.ImageInputStream; +import javax.imageio.stream.ImageOutputStream; +import java.io.File; +import java.io.IOException; +import java.util.Iterator; + +/** + * ICNSImageWriter + */ +public final class ICNSImageWriter extends ImageWriterBase { + + private int sequenceIndex = -1; + private ImageWriter pngDelegate; + + ICNSImageWriter(ImageWriterSpi provider) { + super(provider); + } + + @Override + protected void resetMembers() { + sequenceIndex = -1; + + if (pngDelegate != null) { + pngDelegate.dispose(); + pngDelegate = null; + } + } + + @Override + public IIOMetadata getDefaultImageMetadata(final ImageTypeSpecifier imageType, final ImageWriteParam param) { + return null; + } + + @Override + public IIOMetadata convertImageMetadata(final IIOMetadata inData, final ImageTypeSpecifier imageType, final ImageWriteParam param) { + return null; + } + + @Override + public void write(final IIOMetadata streamMetadata, final IIOImage image, final ImageWriteParam param) throws IOException { + prepareWriteSequence(streamMetadata); + writeToSequence(image, param); + endWriteSequence(); + } + + @Override + public boolean canWriteSequence() { + return true; + } + + @Override + public void prepareWriteSequence(final IIOMetadata streamMetadata) throws IOException { + assertOutput(); + + // TODO: Allow TOC resource to be passed as stream metadata? + // - We only need number of icons to be written later + // - The contents of the TOC could be updated while adding to the sequence + + if (sequenceIndex >= 0) { + throw new IllegalStateException("writeSequence already started"); + } + + writeICNSHeader(); + sequenceIndex = 0; + } + + @Override + public void endWriteSequence() throws IOException { + assertOutput(); + + if (sequenceIndex < 0) { + throw new IllegalStateException("prepareWriteSequence not called"); + } + + // TODO: Now that we know the number of icon resources, we could move all data backwards + // and write a TOC... But I don't think the benefit will outweigh the cost. + + sequenceIndex = -1; + } + + @Override + public void writeToSequence(final IIOImage image, final ImageWriteParam param) throws IOException { + assertOutput(); + + if (sequenceIndex < 0) { + throw new IllegalStateException("prepareWriteSequence not called"); + } + + if (image.hasRaster()) { + throw new UnsupportedOperationException("image has a Raster"); + } + + long resourceStart = imageOutput.getStreamPosition(); + + // TODO: Allow for other formats based on param? + // - Uncompressed/RLE (only allowed up to 128x128)? + // - JPEG2000 not very likely... + + // Validate icon size, get icon resource type based on size and compression + // TODO: Allow smaller, centered in larger square? Resize? + imageOutput.writeInt(IconResource.typeFromImage(image.getRenderedImage(), "PNG")); + imageOutput.writeInt(0); // Size, update later + + processImageStarted(sequenceIndex); + + // Write icon in PNG format + ImageWriter writer = getPNGDelegate(); + writer.setOutput(new SubImageOutputStream(imageOutput)); + writer.write(null, image, copyParam(param, writer)); + + processImageComplete(); + + long resourceEnd = imageOutput.getStreamPosition(); + if (resourceEnd > Integer.MAX_VALUE) { + throw new IIOException("File too large for ICNS"); + } + + int length = (int) (resourceEnd - resourceStart); + + // Update file length field + imageOutput.seek(4); + imageOutput.writeInt((int) resourceEnd); + + // Update resource length field + imageOutput.seek(resourceStart + 4); + imageOutput.writeInt((length)); + + // Prepare for next iteration + imageOutput.seek(resourceEnd); + } + + private ImageWriteParam copyParam(final ImageWriteParam param, ImageWriter writer) { + if (param == null) { + return null; + } + + ImageWriteParam writeParam = writer.getDefaultWriteParam(); + writeParam.setSourceSubsampling(param.getSourceXSubsampling(), param.getSourceYSubsampling(), param.getSubsamplingXOffset(), param.getSubsamplingYOffset()); + writeParam.setSourceRegion(param.getSourceRegion()); + writeParam.setSourceBands(param.getSourceBands()); + + return writeParam; + } + + private ImageWriter getPNGDelegate() { + if (pngDelegate == null) { + // There's always a PNG writer... + pngDelegate = ImageIO.getImageWritersByFormatName("PNG").next(); + pngDelegate.setLocale(getLocale()); + pngDelegate.addIIOWriteProgressListener(new ProgressListenerBase() { + @Override + public void imageProgress(ImageWriter source, float percentageDone) { + processImageProgress(percentageDone); + } + + @Override + public void writeAborted(ImageWriter source) { + processWriteAborted(); + } + }); + pngDelegate.addIIOWriteWarningListener(new IIOWriteWarningListener() { + @Override + public void warningOccurred(ImageWriter source, int imageIndex, String warning) { + processWarningOccurred(sequenceIndex, warning); + } + }); + } + + return pngDelegate; + } + + private void writeICNSHeader() throws IOException { + if (imageOutput.getStreamPosition() != 0) { + throw new IllegalStateException("Stream already written to"); + } + + imageOutput.writeInt(ICNS.MAGIC); + imageOutput.writeInt(8); // Length of file, in bytes, must be updated while writing + } + + public static void main(String[] args) throws IOException { + boolean pngCompression = false; + int firstArg = 0; + + while (args.length > firstArg && args[firstArg].charAt(0) == '-') { + if (args[firstArg].equals("-p") || args[firstArg].equals("--png")) { + pngCompression = true; + } + + firstArg++; + } + + if (args.length - firstArg < 2) { + System.err.println("Usage: command [-p|--png] [...]"); + System.exit(1); + } + + try (ImageOutputStream out = ImageIO.createImageOutputStream(new File(args[firstArg++]))) { + ImageWriter writer = new ICNSImageWriter(null); + writer.setOutput(out); + + ImageWriteParam param = writer.getDefaultWriteParam(); + // For now, we only support PNG... +// param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); +// param.setCompressionType(pngCompression ? "BI_PNG" : "BI_RGB"); + + writer.prepareWriteSequence(null); + + for (int i = firstArg; i < args.length; i++) { + File inFile = new File(args[i]); + try (ImageInputStream input = ImageIO.createImageInputStream(inFile)) { + Iterator readers = ImageIO.getImageReaders(input); + + if (!readers.hasNext()) { + System.err.printf("Can't read %s\n", inFile.getAbsolutePath()); + } + else { + ImageReader reader = readers.next(); + reader.setInput(input); + for (int j = 0; j < reader.getNumImages(true); j++) { + IIOImage image = reader.readAll(j, null); + writer.writeToSequence(image, param); + } + } + } + } + + writer.endWriteSequence(); + writer.dispose(); + } + } + +} diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageWriterSpi.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageWriterSpi.java new file mode 100644 index 00000000..bf207e39 --- /dev/null +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageWriterSpi.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.icns; + +import com.twelvemonkeys.imageio.spi.ImageWriterSpiBase; + +import javax.imageio.ImageTypeSpecifier; +import java.util.Locale; + +/** + * ICNSImageWriterSpi + */ +public final class ICNSImageWriterSpi extends ImageWriterSpiBase { + public ICNSImageWriterSpi() { + super(new ICNSProviderInfo()); + } + + @Override + public boolean canEncodeImage(final ImageTypeSpecifier type) { + return true; + } + + @Override + public ICNSImageWriter createWriterInstance(final Object extension) { + return new ICNSImageWriter(this); + } + + @Override + public String getDescription(final Locale locale) { + return "Apple Icon Image (icns) format Writer"; + } +} diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfo.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfo.java index 153257ef..9fe2b6a6 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfo.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/ICNSProviderInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Harald Kuhr + * Copyright (c) 2017, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -40,7 +40,7 @@ import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; * @version $Id: ICNSProviderInfo.java,v 1.0 20/03/15 harald.kuhr Exp$ */ final class ICNSProviderInfo extends ReaderWriterProviderInfo { - protected ICNSProviderInfo() { + ICNSProviderInfo() { super( ICNSProviderInfo.class, new String[]{"icns", "ICNS"}, @@ -50,9 +50,12 @@ final class ICNSProviderInfo extends ReaderWriterProviderInfo { }, "com.twelvemonkeys.imageio.plugins.icns.ICNSImageReader", new String[] {"com.twelvemonkeys.imageio.plugins.icns.ICNSImageReaderSpi"}, + "com.twelvemonkeys.imageio.plugins.icns.ICNSImageWriter", + new String[] {"com.twelvemonkeys.imageio.plugins.icns.ICNSImageWriterSpi"}, + false, null, null, null, null, - false, null, null, null, null, - true, null, null, null, null + true, null, + null, null, null ); } } diff --git a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/IconResource.java b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/IconResource.java index bde54b32..d9b111a2 100644 --- a/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/IconResource.java +++ b/imageio/imageio-icns/src/main/java/com/twelvemonkeys/imageio/plugins/icns/IconResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Harald Kuhr + * Copyright (c) 2017, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -34,6 +34,7 @@ import com.twelvemonkeys.lang.Validate; import javax.imageio.stream.ImageInputStream; import java.awt.*; +import java.awt.image.RenderedImage; import java.io.IOException; /** @@ -46,9 +47,9 @@ import java.io.IOException; final class IconResource { // TODO: Rewrite using subclasses/instances! - protected final long start; - protected final int type; - protected final int length; + final long start; + final int type; + final int length; private IconResource(long start, int type, int length) { validate(type, length); @@ -58,8 +59,12 @@ final class IconResource { this.length = length; } - public static IconResource read(ImageInputStream input) throws IOException { - return new IconResource(input.getStreamPosition(), input.readInt(), input.readInt()); + static IconResource read(final ImageInputStream input) throws IOException { + return read(input.getStreamPosition(), input); + } + + static IconResource read(final long offset, final ImageInputStream input) throws IOException { + return new IconResource(offset, input.readInt(), input.readInt()); } private void validate(int type, int length) { @@ -113,9 +118,17 @@ final class IconResource { case ICNS.is32: case ICNS.il32: case ICNS.it32: + case ICNS.icp4: + case ICNS.icp5: + case ICNS.icp6: + case ICNS.ic07: case ICNS.ic08: case ICNS.ic09: case ICNS.ic10: + case ICNS.ic11: + case ICNS.ic12: + case ICNS.ic13: + case ICNS.ic14: if (length > ICNS.RESOURCE_HEADER_SIZE) { break; } @@ -142,7 +155,7 @@ final class IconResource { ); } - public Dimension size() { + Dimension size() { switch (type) { case ICNS.ICON: case ICNS.ICN_: @@ -156,11 +169,14 @@ final class IconResource { case ICNS.ics8: case ICNS.is32: case ICNS.s8mk: + case ICNS.icp4: return new Dimension(16, 16); case ICNS.icl4: case ICNS.icl8: case ICNS.il32: case ICNS.l8mk: + case ICNS.icp5: + case ICNS.ic11: return new Dimension(32, 32); case ICNS.ich_: case ICNS.ich4: @@ -168,12 +184,18 @@ final class IconResource { case ICNS.ih32: case ICNS.h8mk: return new Dimension(48, 48); + case ICNS.icp6: + case ICNS.ic12: + return new Dimension(64, 64); case ICNS.it32: case ICNS.t8mk: + case ICNS.ic07: return new Dimension(128, 128); case ICNS.ic08: + case ICNS.ic13: return new Dimension(256, 256); case ICNS.ic09: + case ICNS.ic14: return new Dimension(512, 512); case ICNS.ic10: return new Dimension(1024, 1024); @@ -182,7 +204,7 @@ final class IconResource { } } - public int depth() { + int depth() { switch (type) { case ICNS.ICON: case ICNS.ICN_: @@ -208,16 +230,24 @@ final class IconResource { case ICNS.il32: case ICNS.ih32: case ICNS.it32: + case ICNS.icp4: + case ICNS.icp5: + case ICNS.icp6: + case ICNS.ic07: case ICNS.ic08: case ICNS.ic09: case ICNS.ic10: + case ICNS.ic11: + case ICNS.ic12: + case ICNS.ic13: + case ICNS.ic14: return 32; default: throw new IllegalStateException(String.format("Unknown icon type: '%s'", ICNSUtil.intToStr(type))); } } - public boolean isUnknownType() { + boolean isUnknownType() { // Unknown types should simply be skipped when reading switch (type) { case ICNS.ICON: @@ -241,16 +271,24 @@ final class IconResource { case ICNS.il32: case ICNS.ih32: case ICNS.it32: + case ICNS.icp4: + case ICNS.icp5: + case ICNS.icp6: + case ICNS.ic07: case ICNS.ic08: case ICNS.ic09: case ICNS.ic10: + case ICNS.ic11: + case ICNS.ic12: + case ICNS.ic13: + case ICNS.ic14: return false; } return true; } - public boolean hasMask() { + boolean hasMask() { switch (type) { case ICNS.ICN_: case ICNS.icm_: @@ -262,7 +300,7 @@ final class IconResource { return false; } - public boolean isMaskType() { + boolean isMaskType() { switch (type) { case ICNS.s8mk: case ICNS.l8mk: @@ -274,7 +312,7 @@ final class IconResource { return false; } - public boolean isCompressed() { + boolean isCompressed() { switch (type) { case ICNS.is32: case ICNS.il32: @@ -291,18 +329,30 @@ final class IconResource { return false; } - public boolean isForeignFormat() { + boolean isForeignFormat() { // Recent entries contains full JPEG 2000 or PNG streams switch (type) { + case ICNS.icp4: + case ICNS.icp5: + case ICNS.icp6: + case ICNS.ic07: case ICNS.ic08: case ICNS.ic09: case ICNS.ic10: + case ICNS.ic11: + case ICNS.ic12: + case ICNS.ic13: + case ICNS.ic14: return true; } return false; } + boolean isTOC() { + return type == ICNS.TOC_; + } + @Override public int hashCode() { return (int) start ^ type; @@ -322,4 +372,62 @@ final class IconResource { public String toString() { return String.format("%s['%s' start: %d, length: %d%s]", getClass().getSimpleName(), ICNSUtil.intToStr(type), start, length, isCompressed() ? " (compressed)" : ""); } + + static int typeFromImage(final RenderedImage image, final String compression) { + int width = image.getWidth(); + int height = image.getHeight(); + + if (width == height) { + switch (compression) { + case "JPEG2000": + case "PNG": + return typeFromWidthForeign(width); + case "None": + case "RLE": + return typeFromWidthNative(width); + default: + throw new IllegalArgumentException("Unsupported compression for ICNS: " + compression); + } + } + + // Note: Strictly, the format supports an ancient 16x12 size, but I doubt we'll ever support that + throw new IllegalArgumentException(String.format("Unsupported dimensions for ICNS, only square icons supported: %dx%d", width, height)); + } + // NOTE: These also needs a mask, if there's an alpha channel + + private static int typeFromWidthNative(final int width) { + switch (width) { + case 16: + return ICNS.is32; + case 32: + return ICNS.il32; + case 48: + return ICNS.ih32; + case 128: + return ICNS.it32; + default: + throw new IllegalArgumentException(String.format("Unsupported dimensions for ICNS, only 16, 32, 48 and 128 supported: %dx%d", width, width)); + } + } + + private static int typeFromWidthForeign(final int width) { + switch (width) { + case 16: + return ICNS.icp4; + case 32: + return ICNS.icp5; + case 64: + return ICNS.icp6; + case 128: + return ICNS.ic07; + case 256: + return ICNS.ic08; + case 512: + return ICNS.ic09; + case 1024: + return ICNS.ic10; + default: + throw new IllegalArgumentException(String.format("Unsupported dimensions for ICNS, only multiples of 2 from 16 to 1024 supported: %dx%d", width, width)); + } + } } diff --git a/imageio/imageio-icns/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi b/imageio/imageio-icns/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi index c5bd0d3a..80a16d1d 100644 --- a/imageio/imageio-icns/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi +++ b/imageio/imageio-icns/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi @@ -1 +1 @@ -com.twelvemonkeys.imageio.plugins.icns.ICNSImageReaderSpi \ No newline at end of file +com.twelvemonkeys.imageio.plugins.icns.ICNSImageReaderSpi diff --git a/imageio/imageio-icns/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi b/imageio/imageio-icns/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi new file mode 100644 index 00000000..44f82bc5 --- /dev/null +++ b/imageio/imageio-icns/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi @@ -0,0 +1 @@ +com.twelvemonkeys.imageio.plugins.icns.ICNSImageWriterSpi diff --git a/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageWriterTest.java b/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageWriterTest.java new file mode 100644 index 00000000..d1af9df7 --- /dev/null +++ b/imageio/imageio-icns/src/test/java/com/twelvemonkeys/imageio/plugins/icns/ICNSImageWriterTest.java @@ -0,0 +1,189 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.icns; + +import com.twelvemonkeys.imageio.util.ImageWriterAbstractTest; +import org.junit.Test; + +import javax.imageio.IIOImage; +import javax.imageio.ImageIO; +import javax.imageio.ImageWriter; +import javax.imageio.stream.ImageOutputStream; +import java.awt.image.BufferedImage; +import java.awt.image.RenderedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.List; + +import static java.util.Arrays.asList; +import static org.junit.Assert.assertTrue; + +/** + * ICNSImageWriterTest. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: ICNSImageWriterTest.java,v 1.0 25/08/2018 harald.kuhr Exp$ + */ +public class ICNSImageWriterTest extends ImageWriterAbstractTest { + + private final ICNSImageWriterSpi provider = new ICNSImageWriterSpi(); + + @Override + protected ImageWriter createImageWriter() { + return provider.createWriterInstance(null); + } + + @Override + protected List getTestData() { + return asList( + new BufferedImage(32, 32, BufferedImage.TYPE_INT_ARGB), + new BufferedImage(32, 32, BufferedImage.TYPE_BYTE_BINARY), + new BufferedImage(32, 32, BufferedImage.TYPE_BYTE_INDEXED), + new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB), +// new BufferedImage(48, 48, BufferedImage.TYPE_INT_ARGB), // Only supported for compression None/RLE + new BufferedImage(64, 64, BufferedImage.TYPE_INT_ARGB), + new BufferedImage(128, 128, BufferedImage.TYPE_INT_ARGB), + new BufferedImage(256, 256, BufferedImage.TYPE_INT_ARGB), + new BufferedImage(512, 512, BufferedImage.TYPE_INT_ARGB), + new BufferedImage(1024, 1024, BufferedImage.TYPE_INT_ARGB) + ); + } + + @Test(expected = IllegalArgumentException.class) + public void testWriteNonSquare() throws IOException { + // ICNS only supports square icons (except some arcane 16x12 we don't currently support) + ImageWriter writer = createImageWriter(); + try (ImageOutputStream stream = ImageIO.createImageOutputStream(new ByteArrayOutputStream())) { + + writer.setOutput(stream); + + writer.write(new BufferedImage(32, 64, BufferedImage.TYPE_INT_ARGB)); + + } + finally { + writer.dispose(); + } + } + + @Test(expected = IllegalArgumentException.class) + public void testWriteBadSize() throws IOException { + // ICNS only supports sizes in multiples of 2 (16, 32, 64, ..., 1024 + 48 and 96) + ImageWriter writer = createImageWriter(); + try (ImageOutputStream stream = ImageIO.createImageOutputStream(new ByteArrayOutputStream())) { + + writer.setOutput(stream); + + writer.write(new BufferedImage(17, 17, BufferedImage.TYPE_INT_ARGB)); + + } + finally { + writer.dispose(); + } + } + + @Test + public void testSequencesSupported() { + ImageWriter writer = createImageWriter(); + try { + assertTrue(writer.canWriteSequence()); + } + finally { + writer.dispose(); + } + } + + @Test(expected = IllegalStateException.class) + public void testWriteSequenceNotStarted() throws IOException { + // ICNS only supports sizes in multiples of 2 (16, 32, 64, ..., 1024 + 48 and 96) + ImageWriter writer = createImageWriter(); + try (ImageOutputStream stream = ImageIO.createImageOutputStream(new ByteArrayOutputStream())) { + + writer.setOutput(stream); + + BufferedImage image = new BufferedImage(32, 32, BufferedImage.TYPE_INT_ARGB); + writer.writeToSequence(new IIOImage(image, null, null), writer.getDefaultWriteParam()); + + } + finally { + writer.dispose(); + } + } + + @Test(expected = IllegalStateException.class) + public void testEndSequenceNotStarted() throws IOException { + // ICNS only supports sizes in multiples of 2 (16, 32, 64, ..., 1024 + 48 and 96) + ImageWriter writer = createImageWriter(); + try (ImageOutputStream stream = ImageIO.createImageOutputStream(new ByteArrayOutputStream())) { + + writer.setOutput(stream); + writer.endWriteSequence(); + } + finally { + writer.dispose(); + } + } + + @Test(expected = IllegalStateException.class) + public void testPrepareSequenceAlreadyStarted() throws IOException { + // ICNS only supports sizes in multiples of 2 (16, 32, 64, ..., 1024 + 48 and 96) + ImageWriter writer = createImageWriter(); + try (ImageOutputStream stream = ImageIO.createImageOutputStream(new ByteArrayOutputStream())) { + + writer.setOutput(stream); + writer.prepareWriteSequence(null); + writer.prepareWriteSequence(null); + } + finally { + writer.dispose(); + } + } + + @Test + public void testWriteSequence() throws IOException { + ImageWriter writer = createImageWriter(); + ByteArrayOutputStream output = new ByteArrayOutputStream(); + + try (ImageOutputStream stream = ImageIO.createImageOutputStream(output)) { + writer.setOutput(stream); + + writer.prepareWriteSequence(null); + for (RenderedImage image : getTestData()) { + IIOImage iioImage = new IIOImage(image, null, null); + writer.writeToSequence(iioImage, writer.getDefaultWriteParam()); + } + writer.endWriteSequence(); + } + finally { + writer.dispose(); + } + } +} \ No newline at end of file From c74630656f1e0232c45725c126d9c8dc97aabe44 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sun, 26 Aug 2018 10:35:53 +0200 Subject: [PATCH 028/277] Removed a deprecated method. --- .../java/com/twelvemonkeys/util/CollectionAbstractTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/common-lang/src/test/java/com/twelvemonkeys/util/CollectionAbstractTest.java b/common/common-lang/src/test/java/com/twelvemonkeys/util/CollectionAbstractTest.java index e2f08d86..85ee6b8a 100755 --- a/common/common-lang/src/test/java/com/twelvemonkeys/util/CollectionAbstractTest.java +++ b/common/common-lang/src/test/java/com/twelvemonkeys/util/CollectionAbstractTest.java @@ -1122,7 +1122,7 @@ public abstract class CollectionAbstractTest extends ObjectAbstractTest { resetEmpty(); Object[] a = new Object[] { new Object(), null, null }; Object[] array = collection.toArray(a); - assertEquals("Given array shouldn't shrink", array, a); + assertArrayEquals("Given array shouldn't shrink", array, a); assertEquals("Last element should be set to null", a[0], null); verifyAll(); From 60180938d2862249cd80b03520dd680ee263a493 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 30 Aug 2018 14:46:55 +0200 Subject: [PATCH 029/277] #439: Unclear exception message when passing image metadata as stream metadata --- .../imageio/AbstractMetadata.java | 2 +- .../plugins/tiff/TIFFStreamMetadata.java | 10 ++++++++- .../plugins/tiff/TIFFStreamMetadataTest.java | 22 ++++++++++++++++++- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java index c8752efb..1e8ba89c 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/AbstractMetadata.java @@ -130,7 +130,7 @@ public abstract class AbstractMetadata extends IIOMetadata implements Cloneable } throw new IllegalArgumentException( - String.format("Bad format name: \"%s\". Expected one of %s", formatName, Arrays.toString(metadataFormatNames)) + String.format("Unsupported format name: \"%s\". Expected one of %s", formatName, Arrays.toString(metadataFormatNames)) ); } diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadata.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadata.java index 5c4cc80a..5ac7df3f 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadata.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadata.java @@ -39,9 +39,12 @@ import javax.imageio.metadata.IIOMetadata; import javax.imageio.metadata.IIOMetadataNode; import javax.imageio.stream.ImageOutputStream; import java.nio.ByteOrder; +import java.util.Arrays; import static com.twelvemonkeys.lang.Validate.notNull; +import static java.lang.String.format; import static java.nio.ByteOrder.BIG_ENDIAN; +import static java.util.Arrays.asList; /** * TIFFStreamMetadata. @@ -113,7 +116,7 @@ public final class TIFFStreamMetadata extends IIOMetadata { } } - private ByteOrder getByteOrder(final String value) throws IIOInvalidTreeException { + private ByteOrder getByteOrder(final String value) { switch (value) { case "BIG_ENDIAN": return ByteOrder.BIG_ENDIAN; @@ -138,6 +141,11 @@ public final class TIFFStreamMetadata extends IIOMetadata { } else if (streamMetadata != null) { TIFFStreamMetadata metadata = new TIFFStreamMetadata(); + + Validate.isTrue(asList(streamMetadata.getMetadataFormatNames()).contains(metadata.nativeMetadataFormatName), + format("Unsupported stream metadata format, expected %s: %s", metadata.nativeMetadataFormatName, + Arrays.toString(streamMetadata.getMetadataFormatNames()))); + // Will throw exception if stream format differs from native metadata.mergeTree(metadata.nativeMetadataFormatName, streamMetadata.getAsTree(metadata.nativeMetadataFormatName)); imageOutput.setByteOrder(metadata.byteOrder); diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataTest.java index 88400a42..304d856a 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataTest.java @@ -40,6 +40,7 @@ import javax.imageio.metadata.IIOMetadataNode; import javax.imageio.stream.ImageOutputStream; import java.nio.ByteOrder; +import static com.twelvemonkeys.imageio.plugins.tiff.TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; import static com.twelvemonkeys.imageio.plugins.tiff.TIFFStreamMetadata.SUN_NATIVE_STREAM_METADATA_FORMAT_NAME; import static java.nio.ByteOrder.BIG_ENDIAN; import static java.nio.ByteOrder.LITTLE_ENDIAN; @@ -85,9 +86,10 @@ public class TIFFStreamMetadataTest { } @Test - public void testConfigureStreamForegin() throws IIOInvalidTreeException { + public void testConfigureStreamForeign() throws IIOInvalidTreeException { ImageOutputStream stream = mock(ImageOutputStream.class); IIOMetadata metadata = mock(IIOMetadata.class); + when(metadata.getMetadataFormatNames()).thenReturn(new String[]{SUN_NATIVE_STREAM_METADATA_FORMAT_NAME, "com_foo_supertiff_9.42"}); when(metadata.getAsTree(eq(SUN_NATIVE_STREAM_METADATA_FORMAT_NAME))).thenReturn(createForeignTree(LITTLE_ENDIAN)); TIFFStreamMetadata.configureStreamByteOrder(metadata, stream); @@ -95,6 +97,24 @@ public class TIFFStreamMetadataTest { verify(stream, only()).setByteOrder(LITTLE_ENDIAN); } + @Test + public void testConfigureStreamImageMetadata() throws IIOInvalidTreeException { + ImageOutputStream stream = mock(ImageOutputStream.class); + IIOMetadata metadata = mock(IIOMetadata.class); + when(metadata.getMetadataFormatNames()).thenReturn(new String[]{SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME}); + + try { + TIFFStreamMetadata.configureStreamByteOrder(metadata, stream); + fail("Expected IllegalArgumentException"); + } + catch (IllegalArgumentException expected) { + assertNotNull(expected.getMessage()); + assertTrue(expected.getMessage().toLowerCase().contains("unsupported stream metadata format")); + assertTrue(expected.getMessage().contains("expected " + SUN_NATIVE_STREAM_METADATA_FORMAT_NAME)); + assertTrue(expected.getMessage().contains(SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME)); + } + } + private IIOMetadataNode createForeignTree(ByteOrder order) { IIOMetadataNode root = new IIOMetadataNode(SUN_NATIVE_STREAM_METADATA_FORMAT_NAME); IIOMetadataNode byteOrder = new IIOMetadataNode("ByteOrder"); From d8d0131806a6708d35385e155b292647ff756a78 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 30 Aug 2018 15:02:04 +0200 Subject: [PATCH 030/277] #437 Catching exception from static init, prints a warning and moves on. --- .../com/twelvemonkeys/imageio/color/ColorSpaces.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java index 8e0ba318..b9deebd8 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/ColorSpaces.java @@ -101,8 +101,16 @@ public final class ColorSpaces { private static final Map cache = new LRUHashMap<>(10); static { - // Force invocation of ProfileDeferralMgr.activateProfiles() to avoid JDK-6986863 - ICC_Profile.getInstance(ColorSpace.CS_sRGB).getData(); + try { + // Force invocation of ProfileDeferralMgr.activateProfiles() to avoid JDK-6986863 + ICC_Profile.getInstance(ColorSpace.CS_sRGB).getData(); + } + catch (Throwable disasters) { + System.err.println("ICC Color Profile not properly activated due to the exception below."); + System.err.println("Expect to see JDK-6986863 in action, and consider filing a bug report to your JRE provider."); + + disasters.printStackTrace(); + } } private ColorSpaces() {} From 1a1067a6bdf91de822287c2a1215ebb26f3ebb4b Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 7 Sep 2018 21:02:12 +0200 Subject: [PATCH 031/277] #82 ICO write --- .../plugins/bmp/AbstractRLEDecoder.java | 40 ++- .../imageio/plugins/bmp/BMPImageReader.java | 86 ++--- .../plugins/bmp/BMPImageReaderSpi.java | 40 ++- .../imageio/plugins/bmp/BMPImageWriter.java | 150 ++++++++ .../plugins/bmp/BMPImageWriterSpi.java | 61 ++++ .../imageio/plugins/bmp/BMPMetadata.java | 203 +++++------ .../imageio/plugins/bmp/BMPProviderInfo.java | 46 ++- .../imageio/plugins/bmp/BitmapDescriptor.java | 41 +-- .../imageio/plugins/bmp/BitmapIndexed.java | 41 +-- .../imageio/plugins/bmp/BitmapMask.java | 40 ++- .../imageio/plugins/bmp/BitmapRGB.java | 40 ++- .../plugins/bmp/BitmapUnsupported.java | 40 ++- .../imageio/plugins/bmp/CURImageReader.java | 40 ++- .../plugins/bmp/CURImageReaderSpi.java | 40 ++- .../imageio/plugins/bmp/CURProviderInfo.java | 42 +-- .../imageio/plugins/bmp/DIB.java | 40 ++- .../imageio/plugins/bmp/DIBHeader.java | 134 ++++--- .../imageio/plugins/bmp/DIBImageReader.java | 51 +-- .../imageio/plugins/bmp/DIBImageWriter.java | 113 ++++++ .../imageio/plugins/bmp/Directory.java | 40 ++- .../imageio/plugins/bmp/DirectoryEntry.java | 76 ++-- .../imageio/plugins/bmp/ICOImageReader.java | 41 +-- .../plugins/bmp/ICOImageReaderSpi.java | 40 ++- .../plugins/bmp/ICOImageWriteParam.java | 49 +++ .../imageio/plugins/bmp/ICOImageWriter.java | 327 ++++++++++++++++++ .../plugins/bmp/ICOImageWriterSpi.java | 61 ++++ .../imageio/plugins/bmp/ICOProviderInfo.java | 55 +-- .../imageio/plugins/bmp/RLE4Decoder.java | 43 +-- .../imageio/plugins/bmp/RLE8Decoder.java | 42 +-- .../services/javax.imageio.spi.ImageReaderSpi | 29 ++ .../services/javax.imageio.spi.ImageWriterSpi | 31 ++ .../plugins/bmp/BMPImageReaderTest.java | 70 +++- .../plugins/bmp/BMPProviderInfoTest.java | 30 ++ .../plugins/bmp/CURImageReaderTest.java | 30 ++ .../plugins/bmp/CURProviderInfoTest.java | 30 ++ .../plugins/bmp/ICOImageReaderTest.java | 30 ++ .../plugins/bmp/ICOProviderInfoTest.java | 30 ++ .../imageio/plugins/bmp/RLE4DecoderTest.java | 30 ++ .../imageio/plugins/bmp/RLE8DecoderTest.java | 30 ++ 39 files changed, 1769 insertions(+), 633 deletions(-) create mode 100644 imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageWriter.java create mode 100644 imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageWriterSpi.java create mode 100644 imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageWriter.java create mode 100644 imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageWriteParam.java create mode 100644 imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageWriter.java create mode 100644 imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageWriterSpi.java create mode 100644 imageio/imageio-bmp/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/AbstractRLEDecoder.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/AbstractRLEDecoder.java index 1404df31..9a43cc8c 100644 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/AbstractRLEDecoder.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/AbstractRLEDecoder.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReader.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReader.java index 9151dce6..c40070fd 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReader.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; @@ -59,8 +61,8 @@ import java.util.Iterator; * * @author Harald Kuhr * @author last modified by $Author: haraldk$ - * @version $Id: CURImageReader.java,v 1.0 Apr 20, 2009 11:54:28 AM haraldk Exp$ - * @see com.twelvemonkeys.imageio.plugins.bmp.ICOImageReader + * @version $Id: BMPImageReader.java,v 1.0 Apr 20, 2009 11:54:28 AM haraldk Exp$ + * @see ICOImageReader */ public final class BMPImageReader extends ImageReaderBase { private long pixelOffset; @@ -214,11 +216,9 @@ public final class BMPImageReader extends ImageReaderBase { case 16: if (header.hasMasks()) { - int[] masks = getMasks(); - return ImageTypeSpecifiers.createPacked( ColorSpace.getInstance(ColorSpace.CS_sRGB), - masks[0], masks[1], masks[2], masks[3], + header.masks[0], header.masks[1], header.masks[2], header.masks[3], DataBuffer.TYPE_USHORT, false ); } @@ -235,11 +235,9 @@ public final class BMPImageReader extends ImageReaderBase { case 32: if (header.hasMasks()) { - int[] masks = getMasks(); - return ImageTypeSpecifiers.createPacked( ColorSpace.getInstance(ColorSpace.CS_sRGB), - masks[0], masks[1], masks[2], masks[3], + header.masks[0], header.masks[1], header.masks[2], header.masks[3], DataBuffer.TYPE_INT, false ); } @@ -256,38 +254,6 @@ public final class BMPImageReader extends ImageReaderBase { } } - private int[] getMasks() throws IOException { - if (header.masks != null) { - // Get mask and create either 555, 565 or 444/4444 etc - return header.masks; - } - - switch (header.getCompression()) { - case DIB.COMPRESSION_BITFIELDS: - case DIB.COMPRESSION_ALPHA_BITFIELDS: - // Consult BITFIELDS/ALPHA_BITFIELDS - return readBitFieldsMasks(); - default: - return null; - } - } - - private int[] readBitFieldsMasks() throws IOException { - long offset = DIB.BMP_FILE_HEADER_SIZE + header.getSize(); - - if (offset != imageInput.getStreamPosition()) { - imageInput.seek(offset); - } - - int[] masks = DIBHeader.readMasks(imageInput); - - if (header.getCompression() != DIB.COMPRESSION_ALPHA_BITFIELDS) { - masks[3] = 0; - } - - return masks; - } - @Override public BufferedImage read(int imageIndex, ImageReadParam param) throws IOException { checkBounds(imageIndex); @@ -648,7 +614,7 @@ public final class BMPImageReader extends ImageReaderBase { } // Why, oh why..? Instead of accepting it's own native format as it should, - // The BMPImageWriter only accepts instances of com.sun.imageio.plugins.bmp.BMPMetadata... + // The DIBImageWriter only accepts instances of com.sun.imageio.plugins.bmp.BMPMetadata... // TODO: Consider reflectively construct a BMPMetadata and inject fields return new BMPMetadata(header, colors); } diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderSpi.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderSpi.java index 45a86b82..62e7f767 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderSpi.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageWriter.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageWriter.java new file mode 100644 index 00000000..3a2b9961 --- /dev/null +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageWriter.java @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.bmp; + +import javax.imageio.IIOImage; +import javax.imageio.ImageIO; +import javax.imageio.ImageTypeSpecifier; +import javax.imageio.ImageWriteParam; +import javax.imageio.metadata.IIOMetadata; +import javax.imageio.plugins.bmp.BMPImageWriteParam; +import javax.imageio.spi.ImageWriterSpi; +import javax.imageio.stream.ImageOutputStream; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.nio.ByteOrder; + +/** + * BMPImageWriter + */ +public final class BMPImageWriter extends DIBImageWriter { + protected BMPImageWriter(ImageWriterSpi provider) { + super(provider); + } + + @Override + public ImageWriteParam getDefaultWriteParam() { + // We can use the existing BMPImageWriteParam, as it's part of the javax.imageio API. + return new BMPImageWriteParam(getLocale()); + } + + @Override + public IIOMetadata getDefaultImageMetadata(ImageTypeSpecifier imageType, ImageWriteParam param) { + // TODO + return null; + } + + @Override + public IIOMetadata convertImageMetadata(IIOMetadata inData, ImageTypeSpecifier imageType, ImageWriteParam param) { + // TODO: Support both our own and the com.sun.. metadata + standard metadata + return null; + } + + @Override + public void write(IIOMetadata streamMetadata, IIOImage image, ImageWriteParam param) throws IOException { + assertOutput(); + + if (image == null) { + throw new IllegalArgumentException("image may not be null"); + } + + if (image.hasRaster()) { + // TODO: The default BMPWriter seems to support this, consider doing so as well + throw new UnsupportedOperationException("image has a Raster!"); + } + + imageOutput.setByteOrder(ByteOrder.LITTLE_ENDIAN); + + clearAbortRequest(); + processImageStarted(0); + + if (param == null) { + param = getDefaultWriteParam(); + } + + // Default to bottom-up + // TODO: top-down only allowed for RGB and BITFIELDS compressions (not RLE or PNG)! + // Though Windows seems to support top-down for RLE too... + final boolean isTopDown = param instanceof BMPImageWriteParam && ((BMPImageWriteParam) param).isTopDown(); +// int compression = DIB.COMPRESSION_ALPHA_BITFIELDS; // BMP can use BIFTFIELDS or ALPHA_BITFIELDS + int compression = DIB.COMPRESSION_RGB; + + // TODO: Fix + BufferedImage img = (BufferedImage) image.getRenderedImage(); + + int height = img.getHeight(); + int width = img.getWidth(); + + // Write File header + // TODO: Always use V4/V5 header, when writing with alpha, to avoid ambiguity + // TODO: Allow writing normal BITMAP_INFO_HEADER_SIZE with "fake" alpha as well? + int infoHeaderSize = DIB.BITMAP_INFO_HEADER_SIZE; + boolean hasExtraMasks = infoHeaderSize == DIB.BITMAP_INFO_HEADER_SIZE && (compression == DIB.COMPRESSION_BITFIELDS || compression == DIB.COMPRESSION_ALPHA_BITFIELDS); + // TODO: Allow writing without file header for ICO/CUR support + writeFileHeader(infoHeaderSize, DIB.BMP_FILE_HEADER_SIZE + infoHeaderSize + width * height * 4, hasExtraMasks); + writeDIBHeader(infoHeaderSize, img.getWidth(), img.getHeight(), isTopDown, img.getColorModel().getPixelSize(), compression); +// writeDIBHeader(infoHeaderSize, img, isTopDown, DIB.COMPRESSION_RGB); + + if (hasExtraMasks) { + imageOutput.writeInt(0x000000FF); // B + imageOutput.writeInt(0x0000FF00); // G + imageOutput.writeInt(0x00FF0000); // R + imageOutput.writeInt(0xFF000000); // A + } + + writeUncompressed(isTopDown, img, height, width); + + processImageComplete(); + } + + private void writeFileHeader(int infoHeaderSize, int fileSize, boolean hasMasks) throws IOException { + // 14 bytes + imageOutput.writeShort('M' << 8 | 'B'); + imageOutput.writeInt(fileSize + (hasMasks ? 16 : 0)); // File size (only known at this time if uncompressed!) + imageOutput.writeShort(0); // Reserved + imageOutput.writeShort(0); // Reserved + + imageOutput.writeInt(DIB.BMP_FILE_HEADER_SIZE + infoHeaderSize + (hasMasks ? 16 : 0)); // Offset to image data + } + + public static void main(String[] args) throws IOException { + File input = new File(args[0]); + File output = new File(args[0].replace('.', '_') + "_copy.bmp"); + + try (ImageOutputStream stream = ImageIO.createImageOutputStream(output)) { + DIBImageWriter writer = new BMPImageWriter(null); + writer.setOutput(stream); + writer.write(ImageIO.read(input)); + } + } + +} diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageWriterSpi.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageWriterSpi.java new file mode 100644 index 00000000..9f1c1de8 --- /dev/null +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageWriterSpi.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.bmp; + +import com.twelvemonkeys.imageio.spi.ImageWriterSpiBase; + +import javax.imageio.ImageTypeSpecifier; +import java.io.IOException; +import java.util.Locale; + +/** + * BMPImageWriterSpi + */ +public final class BMPImageWriterSpi extends ImageWriterSpiBase { + public BMPImageWriterSpi() { + super(new BMPProviderInfo()); + } + + @Override + public boolean canEncodeImage(final ImageTypeSpecifier type) { + return true; + } + + @Override + public BMPImageWriter createWriterInstance(final Object extension) throws IOException { + return new BMPImageWriter(this); + } + + @Override + public String getDescription(final Locale locale) { + return "Windows Device Independent Bitmap Format (BMP) Reader"; + } +} diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPMetadata.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPMetadata.java index 1988d376..f1cd5cee 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPMetadata.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPMetadata.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; @@ -38,7 +40,7 @@ import javax.imageio.metadata.IIOMetadataNode; * BMPMetadata. */ final class BMPMetadata extends AbstractMetadata { - /** We return metadata in the exact same form as the JRE built-in, to be compatible with the BMPImageWriter. */ + /** We return metadata in the exact same form as the JRE built-in, to be compatible with the DIBImageWriter. */ public static final String nativeMetadataFormatName = "javax_imageio_bmp_1.0"; private final DIBHeader header; @@ -168,87 +170,90 @@ final class BMPMetadata extends AbstractMetadata { protected IIOMetadataNode getStandardCompressionNode() { IIOMetadataNode compression = new IIOMetadataNode("Compression"); IIOMetadataNode compressionTypeName = addChildNode(compression, "CompressionTypeName", null); - compressionTypeName.setAttribute("value", "NONE"); + + // TODO: Should the compression names always match the compression names used in the ImageWriteParam? + // OR should they be as standard as possible..? + // The built-in plugin uses "BI_RGB", "BI_RLE8", "BI_RLE4", "BI_BITFIELDS", "BI_JPEG and "BI_PNG" + switch (header.compression) { + case DIB.COMPRESSION_RLE4: + case DIB.COMPRESSION_RLE8: + compressionTypeName.setAttribute("value", "RLE"); + break; + case DIB.COMPRESSION_JPEG: + compressionTypeName.setAttribute("value", "JPEG"); + break; + case DIB.COMPRESSION_PNG: + compressionTypeName.setAttribute("value", "PNG"); + break; + case DIB.COMPRESSION_RGB: + case DIB.COMPRESSION_BITFIELDS: + case DIB.COMPRESSION_ALPHA_BITFIELDS: + default: + compressionTypeName.setAttribute("value", "NONE"); + break; + } return compression; -// switch (header.getImageType()) { -// case TGA.IMAGETYPE_COLORMAPPED_RLE: -// case TGA.IMAGETYPE_TRUECOLOR_RLE: -// case TGA.IMAGETYPE_MONOCHROME_RLE: -// case TGA.IMAGETYPE_COLORMAPPED_HUFFMAN: -// case TGA.IMAGETYPE_COLORMAPPED_HUFFMAN_QUADTREE: -// IIOMetadataNode node = new IIOMetadataNode("Compression"); -// IIOMetadataNode compressionTypeName = new IIOMetadataNode("CompressionTypeName"); -// -// // Compression can be RLE4, RLE8, PNG, JPEG or NONE -// String value = header.getImageType() == TGA.IMAGETYPE_COLORMAPPED_HUFFMAN || header.getImageType() == TGA.IMAGETYPE_COLORMAPPED_HUFFMAN_QUADTREE -// ? "Uknown" : "RLE"; -// compressionTypeName.setAttribute("value", value); -// node.appendChild(compressionTypeName); -// -// IIOMetadataNode lossless = new IIOMetadataNode("Lossless"); -// lossless.setAttribute("value", "TRUE"); // TODO: Unless JPEG! -// node.appendChild(lossless); -// -// return node; -// default: -// // No compression -// return null; -// } } @Override protected IIOMetadataNode getStandardDataNode() { IIOMetadataNode node = new IIOMetadataNode("Data"); -// IIOMetadataNode planarConfiguration = new IIOMetadataNode("PlanarConfiguration"); -// planarConfiguration.setAttribute("value", "PixelInterleaved"); -// node.appendChild(planarConfiguration); - -// IIOMetadataNode sampleFormat = new IIOMetadataNode("SampleFormat"); -// switch (header.getImageType()) { -// case TGA.IMAGETYPE_COLORMAPPED: -// case TGA.IMAGETYPE_COLORMAPPED_RLE: -// case TGA.IMAGETYPE_COLORMAPPED_HUFFMAN: -// case TGA.IMAGETYPE_COLORMAPPED_HUFFMAN_QUADTREE: -// sampleFormat.setAttribute("value", "Index"); -// break; -// default: -// sampleFormat.setAttribute("value", "UnsignedIntegral"); -// break; -// } - -// node.appendChild(sampleFormat); - IIOMetadataNode bitsPerSample = new IIOMetadataNode("BitsPerSample"); switch (header.getBitCount()) { + // TODO: case 0: determined by embedded format (PNG/JPEG) case 1: case 2: case 4: case 8: bitsPerSample.setAttribute("value", createListValue(1, Integer.toString(header.getBitCount()))); break; + case 16: - // TODO: Consult masks here! - bitsPerSample.setAttribute("value", createListValue(4, Integer.toString(4))); + // Default is 555 + bitsPerSample.setAttribute("value", header.hasMasks() + ? createBitsPerSampleForBitMasks() + : createListValue(3, Integer.toString(5))); break; + case 24: bitsPerSample.setAttribute("value", createListValue(3, Integer.toString(8))); break; + case 32: - bitsPerSample.setAttribute("value", createListValue(4, Integer.toString(8))); + // Default is 888 + bitsPerSample.setAttribute("value", header.hasMasks() + ? createBitsPerSampleForBitMasks() + : createListValue(3, Integer.toString(8))); + break; } node.appendChild(bitsPerSample); - // TODO: Do we need MSB? -// IIOMetadataNode sampleMSB = new IIOMetadataNode("SampleMSB"); -// sampleMSB.setAttribute("value", createListValue(header.getChannels(), "0")); - return node; } + private String createBitsPerSampleForBitMasks() { + boolean hasAlpha = header.masks[3] != 0; + + return createListValue(hasAlpha ? 4 : 3, + Integer.toString(countMaskBits(header.masks[0])), Integer.toString(countMaskBits(header.masks[1])), + Integer.toString(countMaskBits(header.masks[2])), Integer.toString(countMaskBits(header.masks[3]))); + } + + private int countMaskBits(int mask) { + // See https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan + int count; + + for (count = 0; mask != 0; count++) { + mask &= mask - 1; // clear the least significant bit set + } + + return count; + } + private String createListValue(final int itemCount, final String... values) { StringBuilder buffer = new StringBuilder(); @@ -265,28 +270,31 @@ final class BMPMetadata extends AbstractMetadata { @Override protected IIOMetadataNode getStandardDimensionNode() { - if (header.xPixelsPerMeter > 0 || header.yPixelsPerMeter > 0) { - IIOMetadataNode dimension = new IIOMetadataNode("Dimension"); + IIOMetadataNode dimension = new IIOMetadataNode("Dimension"); - addChildNode(dimension, "PixelAspectRatio", null); - addChildNode(dimension, "HorizontalPhysicalPixelSpacing", null); - addChildNode(dimension, "VerticalPhysicalPixelSpacing", null); + if (header.xPixelsPerMeter > 0 && header.yPixelsPerMeter > 0) { + float ratio = header.xPixelsPerMeter / (float) header.yPixelsPerMeter; + addChildNode(dimension, "PixelAspectRatio", null) + .setAttribute("value", String.valueOf(ratio)); -// IIOMetadataNode imageOrientation = new IIOMetadataNode("ImageOrientation"); -// -// if (header.topDown) { -// imageOrientation.setAttribute("value", "FlipH"); -// } -// else { -// imageOrientation.setAttribute("value", "Normal"); -// } -// -// dimension.appendChild(imageOrientation); + addChildNode(dimension, "HorizontalPixelSize", null) + .setAttribute("value", String.valueOf(1f / header.xPixelsPerMeter * 1000)); + addChildNode(dimension, "VerticalPixelSize", null) + .setAttribute("value", String.valueOf(1f / header.yPixelsPerMeter * 1000)); - return dimension; + // Hmmm.. The JRE version includes these for some reason, even if values seem to be same as default... + addChildNode(dimension, "HorizontalPhysicalPixelSpacing", null) + .setAttribute("value", String.valueOf(0)); + addChildNode(dimension, "VerticalPhysicalPixelSpacing", null) + .setAttribute("value", String.valueOf(0)); } - return null; + if (header.topDown) { + addChildNode(dimension, "ImageOrientation", null) + .setAttribute("value", "FlipH"); // For BMP, bottom-up is "normal"... + } + + return dimension; } // No document node @@ -297,16 +305,15 @@ final class BMPMetadata extends AbstractMetadata { @Override protected IIOMetadataNode getStandardTransparencyNode() { - return null; + if (header.hasMasks() && header.masks[3] != 0) { + IIOMetadataNode transparency = new IIOMetadataNode("Transparency"); + IIOMetadataNode alpha = new IIOMetadataNode("Alpha"); + alpha.setAttribute("value", "nonpremultiplied"); + transparency.appendChild(alpha); -// IIOMetadataNode transparency = new IIOMetadataNode("Transparency"); -// -// IIOMetadataNode alpha = new IIOMetadataNode("Alpha"); -// -// // TODO: Consult masks -// alpha.setAttribute("value", header.getBitCount() == 32 ? "nonpremultiplied" : "none"); -// transparency.appendChild(alpha); -// -// return transparency; + return transparency; + } + + return null; } } diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPProviderInfo.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPProviderInfo.java index 9afcf685..40d875ad 100644 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPProviderInfo.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BMPProviderInfo.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2015, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.bmp; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; @@ -10,22 +40,24 @@ import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; * @version $Id: BMPProviderInfo.java,v 1.0 20/03/15 harald.kuhr Exp$ */ final class BMPProviderInfo extends ReaderWriterProviderInfo { - protected BMPProviderInfo() { + BMPProviderInfo() { super( BMPProviderInfo.class, new String[] {"bmp", "BMP"}, new String[] {"bmp", "rle"}, new String[] { "image/bmp", - "image/x-bmp" -// "image/vnd.microsoft.bitmap", // TODO: Official IANA MIME + "image/x-bmp", + "image/vnd.microsoft.bitmap" }, "com.twelvemonkeys.imageio.plugins.bmp.BMPImageReader", new String[] {"com.twelvemonkeys.imageio.plugins.bmp.BMPImageReaderSpi"}, - "com.sun.imageio.plugins.bmp.BMPImageWriter", - new String[]{"com.sun.imageio.plugins.bmp.BMPImageWriterSpi"}, // We support the same native metadata format - false, null, null, null, null, - true, BMPMetadata.nativeMetadataFormatName, "com.sun.imageio.plugins.bmp.BMPMetadataFormat", null, null + "com.twelvemonkeys.imageio.plugins.bmp.BMPImageWriter", + new String[] {"com.twelvemonkeys.imageio.plugins.bmp.BMPImageWriterSpi"}, + false, null, null, + null, null, + true, BMPMetadata.nativeMetadataFormatName, "com.sun.imageio.plugins.bmp.BMPMetadataFormat", + null, null ); } } diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapDescriptor.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapDescriptor.java index a5a00f6a..82c09384 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapDescriptor.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapDescriptor.java @@ -4,28 +4,29 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - package com.twelvemonkeys.imageio.plugins.bmp; import com.twelvemonkeys.lang.Validate; diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapIndexed.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapIndexed.java index cb2c413a..44e34d15 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapIndexed.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapIndexed.java @@ -4,28 +4,29 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - package com.twelvemonkeys.imageio.plugins.bmp; import java.awt.image.BufferedImage; diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapMask.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapMask.java index 5d619cf6..526c3dab 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapMask.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapMask.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapRGB.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapRGB.java index 05f43600..dfe6f55b 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapRGB.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapRGB.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapUnsupported.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapUnsupported.java index 7498976e..6db18431 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapUnsupported.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/BitmapUnsupported.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReader.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReader.java index 14eafe78..1cb5dd65 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReader.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReaderSpi.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReaderSpi.java index 10e9fc81..b3693a4a 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReaderSpi.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURProviderInfo.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURProviderInfo.java index 6444d5a6..9421ceea 100644 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURProviderInfo.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/CURProviderInfo.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; @@ -38,7 +40,7 @@ import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; * @version $Id: CURProviderInfo.java,v 1.0 20/03/15 harald.kuhr Exp$ */ final class CURProviderInfo extends ReaderWriterProviderInfo { - protected CURProviderInfo() { + CURProviderInfo() { super( CURProviderInfo.class, new String[]{"cur", "CUR"}, diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIB.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIB.java index 1384ab92..1cfe02a3 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIB.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIB.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBHeader.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBHeader.java index cf696f51..387a618b 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBHeader.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBHeader.java @@ -4,32 +4,35 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; import javax.imageio.IIOException; import java.io.DataInput; +import java.io.DataOutput; import java.io.IOException; /** @@ -104,17 +107,15 @@ abstract class DIBHeader { case DIB.OS2_V2_HEADER_SIZE: return new BitmapCoreHeaderV2(); case DIB.BITMAP_INFO_HEADER_SIZE: + case DIB.BITMAP_V2_INFO_HEADER_SIZE: + case DIB.BITMAP_V3_INFO_HEADER_SIZE: // ICO and CUR always uses the Microsoft Windows 3.0 DIB header, which is 40 bytes. // This is also the most common format for persistent BMPs. return new BitmapInfoHeader(); - case DIB.BITMAP_V3_INFO_HEADER_SIZE: - return new BitmapV3InfoHeader(); case DIB.BITMAP_V4_INFO_HEADER_SIZE: return new BitmapV4InfoHeader(); case DIB.BITMAP_V5_INFO_HEADER_SIZE: return new BitmapV5InfoHeader(); - case DIB.BITMAP_V2_INFO_HEADER_SIZE: - throw new IIOException(String.format("Windows Bitmap Information Header (size: %s) not supported", pSize)); default: throw new IIOException(String.format("Unknown Bitmap Information Header (size: %s)", pSize)); } @@ -159,7 +160,7 @@ abstract class DIBHeader { } public int getColorsUsed() { - return colorsUsed != 0 ? colorsUsed : 1 << bitCount; + return colorsUsed != 0 ? colorsUsed : 1 << Math.min(24, bitCount); } public int getColorsImportant() { @@ -187,9 +188,11 @@ abstract class DIBHeader { ); } - static int[] readMasks(final DataInput pStream) throws IOException { + private static int[] readMasks(final DataInput pStream, final boolean hasAlphaMask) throws IOException { + int maskCount = hasAlphaMask ? 4 : 3; int[] masks = new int[4]; - for (int i = 0; i < masks.length; i++) { + + for (int i = 0; i < maskCount; i++) { masks[i] = pStream.readInt(); } @@ -288,14 +291,17 @@ abstract class DIBHeader { * This is the common format for persistent DIB structures, even if Windows * may use the later versions at run-time. *

    + * Note: Some variations that includes the mask fields into the header size exists, + * but is no longer part of the documented spec. * * @author Harald Kuhr * @version $Id: DIBHeader.java,v 1.0 25.feb.2006 00:29:44 haku Exp$ * @see BMP file format (Wikipedia) + * @see BITMAPV3INFOHEADER. */ static final class BitmapInfoHeader extends DIBHeader { protected void read(final int pSize, final DataInput pStream) throws IOException { - if (pSize != DIB.BITMAP_INFO_HEADER_SIZE) { + if (!(pSize == DIB.BITMAP_INFO_HEADER_SIZE || pSize == DIB.BITMAP_V2_INFO_HEADER_SIZE || pSize == DIB.BITMAP_V3_INFO_HEADER_SIZE)) { throw new IIOException(String.format("Size: %s !=: %s", pSize, DIB.BITMAP_INFO_HEADER_SIZE)); } @@ -320,6 +326,36 @@ abstract class DIBHeader { colorsUsed = pStream.readInt(); colorsImportant = pStream.readInt(); + + // Read masks if we have V2 or V3 + // or if we have compression BITFIELDS or ALPHA_BITFIELDS + if (size == DIB.BITMAP_V2_INFO_HEADER_SIZE || compression == DIB.COMPRESSION_BITFIELDS) { + masks = readMasks(pStream, false); + } + else if (size == DIB.BITMAP_V3_INFO_HEADER_SIZE || compression == DIB.COMPRESSION_ALPHA_BITFIELDS) { + masks = readMasks(pStream, true); + } + } + + void write(final DataOutput stream) throws IOException { + stream.writeInt(DIB.BITMAP_INFO_HEADER_SIZE); + + stream.writeInt(width); + stream.writeInt(topDown ? -height : height); + + stream.writeShort(planes); + stream.writeShort(bitCount); + stream.writeInt(compression); + + stream.writeInt(imageSize); + + stream.writeInt(xPixelsPerMeter); + stream.writeInt(yPixelsPerMeter); + + stream.writeInt(colorsUsed); + stream.writeInt(colorsImportant); + + // TODO: Write masks, if bitfields } public String getBMPVersion() { @@ -328,46 +364,6 @@ abstract class DIBHeader { } } - /** - * Represents the semi-undocumented structure BITMAPV3INFOHEADER. - * @see BITMAPV3INFOHEADER - */ - static final class BitmapV3InfoHeader extends DIBHeader { - protected void read(final int pSize, final DataInput pStream) throws IOException { - if (pSize != DIB.BITMAP_V3_INFO_HEADER_SIZE) { - throw new IIOException(String.format("Size: %s !=: %s", pSize, DIB.BITMAP_V3_INFO_HEADER_SIZE)); - } - - size = pSize; - - width = pStream.readInt(); - height = pStream.readInt(); - - if (height < 0) { - height = -height; - topDown = true; - } - - planes = pStream.readUnsignedShort(); - bitCount = pStream.readUnsignedShort(); - compression = pStream.readInt(); - - imageSize = pStream.readInt(); - - xPixelsPerMeter = pStream.readInt(); - yPixelsPerMeter = pStream.readInt(); - - colorsUsed = pStream.readInt(); - colorsImportant = pStream.readInt(); - - masks = readMasks(pStream); - } - - public String getBMPVersion() { - return "BMP v. 3.x Photoshop"; - } - } - /** * Represents the BITMAPV4INFOHEADER structure. */ @@ -399,7 +395,7 @@ abstract class DIBHeader { colorsUsed = pStream.readInt(); colorsImportant = pStream.readInt(); - masks = readMasks(pStream); + masks = readMasks(pStream, true); colorSpaceType = pStream.readInt(); // Should be 0 for V4 cieXYZEndpoints = new double[9]; @@ -451,7 +447,7 @@ abstract class DIBHeader { colorsUsed = pStream.readInt(); colorsImportant = pStream.readInt(); - masks = readMasks(pStream); + masks = readMasks(pStream, true); colorSpaceType = pStream.readInt(); diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java index 12d4e5fe..32ddb2fc 100644 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java @@ -4,33 +4,35 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; import com.twelvemonkeys.image.ImageUtil; import com.twelvemonkeys.imageio.ImageReaderBase; -import com.twelvemonkeys.imageio.util.IIOUtil; +import com.twelvemonkeys.imageio.stream.SubImageInputStream; import com.twelvemonkeys.imageio.util.ImageTypeSpecifiers; import com.twelvemonkeys.util.WeakWeakMap; @@ -45,7 +47,6 @@ import java.awt.event.WindowEvent; import java.awt.image.*; import java.io.File; import java.io.IOException; -import java.io.InputStream; import java.nio.ByteOrder; import java.util.*; import java.util.List; @@ -234,8 +235,9 @@ abstract class DIBImageReader extends ImageReaderBase { ImageReader pngReader = getPNGReader(); imageInput.seek(pEntry.getOffset()); - InputStream inputStream = IIOUtil.createStreamAdapter(imageInput, pEntry.getSize()); - ImageInputStream stream = ImageIO.createImageInputStream(inputStream); +// InputStream inputStream = IIOUtil.createStreamAdapter(imageInput, pEntry.getSize()); +// ImageInputStream stream = ImageIO.createImageInputStream(inputStream); + ImageInputStream stream = new SubImageInputStream(imageInput, pEntry.getSize()); // NOTE: Will throw IOException on later reads if input is not PNG pngReader.setInput(stream); @@ -285,7 +287,7 @@ abstract class DIBImageReader extends ImageReaderBase { } // TODO: Support this, it's already in the BMP reader, spec allows RLE4 and RLE8 - if (header.getCompression() != 0) { + if (header.getCompression() != DIB.COMPRESSION_RGB) { descriptor = new BitmapUnsupported(pEntry, String.format("Unsupported compression: %d", header.getCompression())); } else { @@ -580,6 +582,7 @@ abstract class DIBImageReader extends ImageReaderBase { // Read directory directory = Directory.read(type, imageCount, imageInput); + System.err.println("directory: " + directory); } final DirectoryEntry getEntry(final int pImageIndex) throws IOException { diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageWriter.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageWriter.java new file mode 100644 index 00000000..8f48be1f --- /dev/null +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageWriter.java @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.bmp; + +import com.twelvemonkeys.imageio.ImageWriterBase; +import com.twelvemonkeys.imageio.plugins.bmp.DIBHeader.BitmapInfoHeader; + +import javax.imageio.IIOException; +import javax.imageio.spi.ImageWriterSpi; +import java.awt.image.*; +import java.io.IOException; +import java.nio.ByteOrder; + +/** + * DIBImageWriter + */ +abstract class DIBImageWriter extends ImageWriterBase { + DIBImageWriter(ImageWriterSpi provider) { + super(provider); + } + + @Override + public void setOutput(Object output) { + super.setOutput(output); + imageOutput.setByteOrder(ByteOrder.LITTLE_ENDIAN); + } + + void writeDIBHeader(int infoHeaderSize, int width, int height, boolean isTopDown, int pixelSize, int compression) throws IOException { + switch (infoHeaderSize) { + case DIB.BITMAP_INFO_HEADER_SIZE: + BitmapInfoHeader header = new BitmapInfoHeader(); + // TODO: Consider a constructor/factory for this + header.width = width; + header.height = height; + header.topDown = isTopDown; + + header.planes = 1; // Always 1 plane + header.bitCount = pixelSize; + header.compression = compression; + + header.colorsUsed = 0; // Means 2 ^ bitCount + header.colorsImportant = 0; // Means all colors important + + header.imageSize = header.height * ((header.width * header.bitCount + 31) / 32) * 4; // Rows padded to 32 bit + + header.xPixelsPerMeter = 2835; // 72 DPI + header.yPixelsPerMeter = 2835; + + header.write(imageOutput); + break; + default: + throw new IIOException("Unsupported header size: " + infoHeaderSize); + } + } + + void writeUncompressed(boolean isTopDown, BufferedImage img, int height, int width) throws IOException { + // TODO: Fix + if (img.getType() != BufferedImage.TYPE_4BYTE_ABGR) { + throw new IIOException("Blows!"); + } + + // Support + // - TODO: IndexColorModel (ucompressed, RLE4, RLE8 or BI_PNG) + // - TODO: ComponentColorModel (1 channel gray, 3 channel BGR and 4 channel BGRA, uncompressed and RLE8? BI_BITFIELDS? BI_PNG? BI_JPEG?) + // - TODO: Packed/DirectColorModel (16 and 32 bit, BI_BITFIELDS, BI_PNG? BI_JPEG?) + + Raster raster = img.getRaster(); + WritableRaster rowRaster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, width, 1, width * 4, 4, new int[]{2, 1, 0, 3}, null); + byte[] row = ((DataBufferByte) rowRaster.getDataBuffer()).getData(); + + for (int i = 0; i < height; i++) { + int line = isTopDown ? i : height - 1 - i; + rowRaster.setDataElements(0, 0, raster.createChild(0, line, width, 1, 0, 0, new int[]{2, 1, 0, 3})); + + imageOutput.write(row); + + if (abortRequested()) { + processWriteAborted(); + break; + } + + processImageProgress(100f * i / (float) height); + } + } +} diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/Directory.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/Directory.java index 7865dad6..e31000ba 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/Directory.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/Directory.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DirectoryEntry.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DirectoryEntry.java index 5675d94f..47210114 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DirectoryEntry.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DirectoryEntry.java @@ -4,33 +4,38 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; import javax.imageio.IIOException; import java.awt.*; +import java.awt.image.ColorModel; +import java.awt.image.IndexColorModel; import java.io.DataInput; +import java.io.DataOutput; import java.io.IOException; /** @@ -42,13 +47,13 @@ import java.io.IOException; * @see Wikipedia */ abstract class DirectoryEntry { - private int width; - private int height; - private int colorCount; + int width; + int height; + int colorCount; int planes; int bitCount; - private int size; - private int offset; + int size; + int offset; DirectoryEntry() { } @@ -96,6 +101,18 @@ abstract class DirectoryEntry { offset = pStream.readInt(); } + void write(final DataOutput output) throws IOException { + output.writeByte(width % 256); + output.writeByte(height % 256); + output.writeByte(colorCount); + output.writeByte(0); // Reserved + output.writeShort(1); // Color planes 0 or 1 + output.writeShort(bitCount); + output.writeInt(size); // Size, depends on compression... + output.writeInt(offset); + + } + public String toString() { return String.format( "%s: width: %d, height: %d, colors: %d, planes: %d, bit count: %d, size: %d, offset: %d", @@ -160,5 +177,16 @@ abstract class DirectoryEntry { * Icon directory entry. */ static final class ICOEntry extends DirectoryEntry { + private ICOEntry() {} + + ICOEntry(final int width, final int height, final ColorModel colorModel, int size, final int offset) { + this.width = width; + this.height = height; + this.colorCount = colorModel instanceof IndexColorModel ? ((IndexColorModel) colorModel).getMapSize() : 0; + this.planes = 1; + this.bitCount = colorModel.getPixelSize(); + this.size = size; + this.offset = offset; + } } } \ No newline at end of file diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReader.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReader.java index 042ada42..88657bf1 100644 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReader.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; @@ -47,5 +49,4 @@ public final class ICOImageReader extends DIBImageReader { protected ICOImageReader(final ImageReaderSpi pProvider) { super(pProvider); } - } diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderSpi.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderSpi.java index 3ef75af0..e21f1937 100755 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderSpi.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderSpi.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageWriteParam.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageWriteParam.java new file mode 100644 index 00000000..7d360506 --- /dev/null +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageWriteParam.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.bmp; + +import javax.imageio.ImageWriteParam; +import java.util.Locale; + +/** + * ICOImageWriteParam + */ +public final class ICOImageWriteParam extends ImageWriteParam { + public ICOImageWriteParam(final Locale locale) { + super(locale); + + // The names are consistent with those from the BMPImageWriteParam + compressionTypes = new String[] {"BI_RGB", "BI_RLE8", "BI_RLE4", "BI_PNG"}; + compressionType = compressionTypes[DIB.COMPRESSION_RGB]; + + canWriteCompressed = true; + } +} diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageWriter.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageWriter.java new file mode 100644 index 00000000..8a47b90c --- /dev/null +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageWriter.java @@ -0,0 +1,327 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.bmp; + +import com.twelvemonkeys.imageio.stream.SubImageOutputStream; +import com.twelvemonkeys.imageio.util.ProgressListenerBase; + +import javax.imageio.*; +import javax.imageio.event.IIOWriteWarningListener; +import javax.imageio.metadata.IIOMetadata; +import javax.imageio.spi.ImageWriterSpi; +import javax.imageio.stream.ImageInputStream; +import javax.imageio.stream.ImageOutputStream; +import java.awt.image.BufferedImage; +import java.awt.image.ColorModel; +import java.awt.image.RenderedImage; +import java.io.File; +import java.io.IOException; +import java.util.Iterator; + +import static com.twelvemonkeys.imageio.plugins.bmp.DirectoryEntry.ICOEntry; + +/** + * ImageWriter implementation for Windows Icon (ICO) format. + */ +public final class ICOImageWriter extends DIBImageWriter { + + // TODO: Support appending/updating an existing ICO file? + // - canInsertImage/canRemoveImage + + private static final int ENTRY_SIZE = 16; + private static final int ICO_MAX_DIMENSION = 256; + private static final int INITIAL_ENTRY_COUNT = 8; + + private int sequenceIndex = -1; + + private ImageWriter pngDelegate; + + protected ICOImageWriter(final ImageWriterSpi provider) { + super(provider); + } + + @Override + protected void resetMembers() { + sequenceIndex = -1; + + if (pngDelegate != null) { + pngDelegate.dispose(); + pngDelegate = null; + } + } + + @Override + public IIOMetadata getDefaultImageMetadata(final ImageTypeSpecifier imageType, final ImageWriteParam param) { + return null; + } + + @Override + public IIOMetadata convertImageMetadata(final IIOMetadata inData, final ImageTypeSpecifier imageType, final ImageWriteParam param) { + return null; + } + + @Override + public void write(final IIOMetadata streamMetadata, final IIOImage image, final ImageWriteParam param) throws IOException { + prepareWriteSequence(streamMetadata); + writeToSequence(image, param); + endWriteSequence(); + } + + @Override + public boolean canWriteSequence() { + return true; + } + + @Override + public void prepareWriteSequence(final IIOMetadata streamMetadata) throws IOException { + assertOutput(); + + if (sequenceIndex >= 0) { + throw new IllegalStateException("writeSequence already started"); + } + + writeICOHeader(); + + // Count: Needs to be updated for each new image + imageOutput.writeShort(0); + sequenceIndex = 0; + + // TODO: Allow passing the initial size of the directory in the stream metadata? + // - as this is much more efficient than growing... + // How do we update the "image directory" containing "image entries", + // and which must be written *before* the image data? + // - Allocate a block of N * 16 bytes + // - If image count % N > N, we need to move the first image backwards in the file and allocate another N items... + imageOutput.write(new byte[INITIAL_ENTRY_COUNT * ENTRY_SIZE]); // Allocate room for 8 entries for now + } + + @Override + public void endWriteSequence() throws IOException { + assertOutput(); + + if (sequenceIndex < 0) { + throw new IllegalStateException("prepareWriteSequence not called"); + } + + sequenceIndex = -1; + } + + @Override + public void writeToSequence(final IIOImage image, final ImageWriteParam param) throws IOException { + assertOutput(); + + if (sequenceIndex < 0) { + throw new IllegalStateException("prepareWriteSequence not called"); + } + + if (image.hasRaster()) { + throw new UnsupportedOperationException("image has a Raster"); + } + + if (sequenceIndex >= INITIAL_ENTRY_COUNT) { + growIfNecessary(); + } + + int width = image.getRenderedImage().getWidth(); + int height = image.getRenderedImage().getHeight(); + ColorModel colorModel = image.getRenderedImage().getColorModel(); + + // TODO: The output size may depend on the param (subsampling, source region, etc) + if (width > ICO_MAX_DIMENSION && height > ICO_MAX_DIMENSION) { + throw new IIOException(String.format("ICO maximum width or height (%d) exceeded", ICO_MAX_DIMENSION)); + } + + long imageOffset = imageOutput.getStreamPosition(); + + if (imageOffset > Integer.MAX_VALUE) { + throw new IIOException("ICO file too large"); + } + + // Uncompressed, RLE4/RLE8 or PNG compressed + boolean pngCompression = param != null && "BI_PNG".equals(param.getCompressionType()); + + processImageStarted(sequenceIndex); + + if (pngCompression) { + // NOTE: Embedding a PNG in a ICO is slightly different than a BMP with BI_PNG compression, + // so we'll just handle it directly + ImageWriter writer = getPNGDelegate(); + writer.setOutput(new SubImageOutputStream(imageOutput)); + writer.write(null, image, copyParam(param, writer)); + } + else { + RenderedImage img = image.getRenderedImage(); + // ICO needs height to include height of mask, even if mask isn't written + writeDIBHeader(DIB.BITMAP_INFO_HEADER_SIZE, img.getWidth(), img.getHeight() * 2, + false, img.getColorModel().getPixelSize(), DIB.COMPRESSION_RGB); + writeUncompressed(false, (BufferedImage) img, img.getWidth(), img.getHeight()); + // TODO: Write mask + imageOutput.write(new byte[((width * height + 31) / 32) * 4]); +// writeUncompressed(false, new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY), img.getWidth(), img.getHeight()); + } + + processImageComplete(); + + long nextPosition = imageOutput.getStreamPosition(); + + // Update count + imageOutput.seek(4); + imageOutput.writeShort(sequenceIndex + 1); + + // Write entry + int entryPosition = 6 + sequenceIndex * ENTRY_SIZE; + imageOutput.seek(entryPosition); + + long size = nextPosition - imageOffset; + writeEntry(width, height, colorModel, (int) size, (int) imageOffset); + + sequenceIndex++; + + imageOutput.seek(nextPosition); + } + + private void writeICOHeader() throws IOException { + if (imageOutput.getStreamPosition() != 0) { + throw new IllegalStateException("Stream already written to"); + } + + imageOutput.writeShort(0); + imageOutput.writeShort(DIB.TYPE_ICO); + imageOutput.flushBefore(imageOutput.getStreamPosition()); + } + + private void growIfNecessary() { + // TODO: Allow growing the directory index... + // Move the first icon to the back, update offset + throw new IllegalStateException(String.format("Maximum number of icons supported (%d) exceeded", INITIAL_ENTRY_COUNT)); + } + + @Override + public ImageWriteParam getDefaultWriteParam() { + return new ICOImageWriteParam(getLocale()); + } + + private ImageWriteParam copyParam(final ImageWriteParam param, ImageWriter writer) { + if (param == null) { + return null; + } + + ImageWriteParam writeParam = writer.getDefaultWriteParam(); + writeParam.setSourceSubsampling(param.getSourceXSubsampling(), param.getSourceYSubsampling(), param.getSubsamplingXOffset(), param.getSubsamplingYOffset()); + writeParam.setSourceRegion(param.getSourceRegion()); + writeParam.setSourceBands(param.getSourceBands()); + + return writeParam; + } + + private ImageWriter getPNGDelegate() { + if (pngDelegate == null) { + // There's always a PNG writer... + pngDelegate = ImageIO.getImageWritersByFormatName("PNG").next(); + pngDelegate.setLocale(getLocale()); + pngDelegate.addIIOWriteProgressListener(new ProgressListenerBase() { + @Override + public void imageProgress(ImageWriter source, float percentageDone) { + processImageProgress(percentageDone); + } + + @Override + public void writeAborted(ImageWriter source) { + processWriteAborted(); + } + }); + pngDelegate.addIIOWriteWarningListener(new IIOWriteWarningListener() { + @Override + public void warningOccurred(ImageWriter source, int imageIndex, String warning) { + processWarningOccurred(sequenceIndex, warning); + } + }); + } + + return pngDelegate; + } + + private void writeEntry(final int width, final int height, final ColorModel colorModel, int size, final int offset) throws IOException { + new ICOEntry(width, height, colorModel, size, offset) + .write(imageOutput); + } + + public static void main(String[] args) throws IOException { + boolean pngCompression = false; + int firstArg = 0; + + while (args.length > firstArg && args[firstArg].charAt(0) == '-') { + if (args[firstArg].equals("-p") || args[firstArg].equals("--png")) { + pngCompression = true; + } + + firstArg++; + } + + if (args.length - firstArg < 2) { + System.err.println("Usage: command [-p|--png] [...]"); + System.exit(1); + } + + try (ImageOutputStream out = ImageIO.createImageOutputStream(new File(args[firstArg++]))) { + ImageWriter writer = new ICOImageWriter(null); + writer.setOutput(out); + + ImageWriteParam param = writer.getDefaultWriteParam(); + param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); + param.setCompressionType(pngCompression ? "BI_PNG" : "BI_RGB"); + + writer.prepareWriteSequence(null); + + for (int i = firstArg; i < args.length; i++) { + File inFile = new File(args[i]); + try (ImageInputStream input = ImageIO.createImageInputStream(inFile)) { + Iterator readers = ImageIO.getImageReaders(input); + + if (!readers.hasNext()) { + System.err.printf("Can't read %s\n", inFile.getAbsolutePath()); + } + else { + ImageReader reader = readers.next(); + reader.setInput(input); + for (int j = 0; j < reader.getNumImages(true); j++) { + IIOImage image = reader.readAll(j, null); + writer.writeToSequence(image, param); + } + } + } + } + + writer.endWriteSequence(); + writer.dispose(); + } + } +} diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageWriterSpi.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageWriterSpi.java new file mode 100644 index 00000000..2dbbe4b3 --- /dev/null +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageWriterSpi.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.bmp; + +import com.twelvemonkeys.imageio.spi.ImageWriterSpiBase; + +import javax.imageio.ImageTypeSpecifier; +import java.io.IOException; +import java.util.Locale; + +/** + * ICOImageWriterSpi + */ +public final class ICOImageWriterSpi extends ImageWriterSpiBase { + public ICOImageWriterSpi() { + super(new ICOProviderInfo()); + } + + @Override + public boolean canEncodeImage(final ImageTypeSpecifier type) { + return true; + } + + @Override + public ICOImageWriter createWriterInstance(final Object extension) throws IOException { + return new ICOImageWriter(this); + } + + @Override + public String getDescription(final Locale locale) { + return "Windows Icon Format (ICO) Writer"; + } +} diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOProviderInfo.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOProviderInfo.java index 9b29e1fc..e8c6e9d2 100644 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOProviderInfo.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/ICOProviderInfo.java @@ -1,29 +1,31 @@ /* - * Copyright (c) 2015, Harald Kuhr + * Copyright (c) 2017, Harald Kuhr * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; @@ -31,14 +33,14 @@ package com.twelvemonkeys.imageio.plugins.bmp; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; /** - * CURProviderInfo. + * ICOProviderInfo. * * @author Harald Kuhr * @author last modified by $Author: harald.kuhr$ - * @version $Id: CURProviderInfo.java,v 1.0 20/03/15 harald.kuhr Exp$ + * @version $Id: ICOProviderInfo.java,v 1.0 20/03/15 harald.kuhr Exp$ */ final class ICOProviderInfo extends ReaderWriterProviderInfo { - protected ICOProviderInfo() { + ICOProviderInfo() { super( ICOProviderInfo.class, new String[]{"ico", "ICO"}, @@ -50,9 +52,12 @@ final class ICOProviderInfo extends ReaderWriterProviderInfo { }, "com.twelvemonkeys.imageio.plugins.bmp.ICOImageReader", new String[] {"com.twelvemonkeys.imageio.plugins.bmp.ICOImageReaderSpi"}, + "com.twelvemonkeys.imageio.plugins.bmp.ICOImageWriter", + new String[] {"com.twelvemonkeys.imageio.plugins.bmp.ICOImageWriterSpi"}, + false, null, null, null, null, - false, null, null, null, null, - true, null, null, null, null + true, null, null, + null, null ); } } diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/RLE4Decoder.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/RLE4Decoder.java index b3cef980..4e70ff94 100644 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/RLE4Decoder.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/RLE4Decoder.java @@ -4,33 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; -import java.io.InputStream; import java.io.IOException; -import java.nio.ByteBuffer; +import java.io.InputStream; import java.util.Arrays; /** diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/RLE8Decoder.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/RLE8Decoder.java index c4d38eab..2e216a42 100644 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/RLE8Decoder.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/RLE8Decoder.java @@ -4,32 +4,34 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.plugins.bmp; -import java.io.InputStream; import java.io.IOException; +import java.io.InputStream; import java.util.Arrays; /** diff --git a/imageio/imageio-bmp/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi b/imageio/imageio-bmp/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi index f2a7b76e..b9e5486e 100755 --- a/imageio/imageio-bmp/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi +++ b/imageio/imageio-bmp/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi @@ -1,3 +1,32 @@ +# +# Copyright (c) 2017, Harald Kuhr +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# * Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + com.twelvemonkeys.imageio.plugins.bmp.BMPImageReaderSpi com.twelvemonkeys.imageio.plugins.bmp.CURImageReaderSpi com.twelvemonkeys.imageio.plugins.bmp.ICOImageReaderSpi diff --git a/imageio/imageio-bmp/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi b/imageio/imageio-bmp/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi new file mode 100644 index 00000000..f41a5c4d --- /dev/null +++ b/imageio/imageio-bmp/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi @@ -0,0 +1,31 @@ +# +# Copyright (c) 2017, Harald Kuhr +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# * Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +com.twelvemonkeys.imageio.plugins.bmp.BMPImageWriterSpi +com.twelvemonkeys.imageio.plugins.bmp.ICOImageWriterSpi \ No newline at end of file diff --git a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java index 12646e9a..f0af3feb 100755 --- a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java +++ b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPImageReaderTest.java @@ -1,6 +1,37 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.bmp; import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; +import com.twelvemonkeys.xml.XMLSerializer; import org.junit.Ignore; import org.junit.Test; import org.mockito.InOrder; @@ -14,6 +45,7 @@ import javax.imageio.metadata.IIOMetadataNode; import javax.imageio.spi.ImageReaderSpi; import java.awt.*; import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.lang.reflect.Constructor; import java.net.URISyntaxException; @@ -337,20 +369,20 @@ public class BMPImageReaderTest extends ImageReaderAbstractTest Node expectedTree = jreMetadata.getAsTree(format); Node actualTree = metadata.getAsTree(format); -// try { + try { assertNodeEquals(localPath + " - " + format, expectedTree, actualTree); -// } -// catch (AssertionError e) { -// ByteArrayOutputStream expected = new ByteArrayOutputStream(); -// ByteArrayOutputStream actual = new ByteArrayOutputStream(); -// -// new XMLSerializer(expected, "UTF-8").serialize(expectedTree, false); -// new XMLSerializer(actual, "UTF-8").serialize(actualTree, false); -// -// assertEquals(e.getMessage(), new String(expected.toByteArray(), "UTF-8"), new String(actual.toByteArray(), "UTF-8")); -// -// throw e; -// } + } + catch (AssertionError e) { + ByteArrayOutputStream expected = new ByteArrayOutputStream(); + ByteArrayOutputStream actual = new ByteArrayOutputStream(); + + new XMLSerializer(expected, "UTF-8").serialize(expectedTree, false); + new XMLSerializer(actual, "UTF-8").serialize(actualTree, false); + + assertEquals(e.getMessage(), new String(expected.toByteArray(), "UTF-8"), new String(actual.toByteArray(), "UTF-8")); + + throw e; + } } } } @@ -372,13 +404,21 @@ public class BMPImageReaderTest extends ImageReaderAbstractTest NodeList expectedChildNodes = expected.getChildNodes(); NodeList actualChildNodes = actual.getChildNodes(); - assertEquals(message + " child length differs: " + toString(expectedChildNodes) + " != " + toString(actualChildNodes), - expectedChildNodes.getLength(), actualChildNodes.getLength()); + assertTrue(message + " child length differs: " + toString(expectedChildNodes) + " != " + toString(actualChildNodes), + expectedChildNodes.getLength() <= actualChildNodes.getLength()); for (int i = 0; i < expectedChildNodes.getLength(); i++) { Node expectedChild = expectedChildNodes.item(i); + Node actualChild = actualChildNodes.item(i); + for (int j = 0; j < actualChildNodes.getLength(); j++) { + if (actualChildNodes.item(j).getLocalName().equals(expectedChild.getLocalName())) { + actualChild = actualChildNodes.item(j); + break; + } + } + assertEquals(message + " node name differs", expectedChild.getLocalName(), actualChild.getLocalName()); assertNodeEquals(message + "/" + expectedChild.getLocalName(), expectedChild, actualChild); } diff --git a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPProviderInfoTest.java b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPProviderInfoTest.java index 97773065..d3dba961 100644 --- a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPProviderInfoTest.java +++ b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/BMPProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.bmp; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReaderTest.java b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReaderTest.java index a40ba06d..d4d53c4a 100755 --- a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReaderTest.java +++ b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/CURImageReaderTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.bmp; import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; diff --git a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/CURProviderInfoTest.java b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/CURProviderInfoTest.java index 61a814b2..3128da26 100644 --- a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/CURProviderInfoTest.java +++ b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/CURProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.bmp; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderTest.java b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderTest.java index 9c121287..375c98e1 100755 --- a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderTest.java +++ b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOImageReaderTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.bmp; import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; diff --git a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOProviderInfoTest.java b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOProviderInfoTest.java index 832d0ec9..caeba58c 100644 --- a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOProviderInfoTest.java +++ b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/ICOProviderInfoTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.bmp; import com.twelvemonkeys.imageio.spi.ReaderWriterProviderInfo; diff --git a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/RLE4DecoderTest.java b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/RLE4DecoderTest.java index b3348a3c..44e739bd 100644 --- a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/RLE4DecoderTest.java +++ b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/RLE4DecoderTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.bmp; import com.twelvemonkeys.io.enc.Decoder; diff --git a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/RLE8DecoderTest.java b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/RLE8DecoderTest.java index e353d33d..c7597a69 100644 --- a/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/RLE8DecoderTest.java +++ b/imageio/imageio-bmp/src/test/java/com/twelvemonkeys/imageio/plugins/bmp/RLE8DecoderTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2009, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.plugins.bmp; import com.twelvemonkeys.io.enc.Decoder; From a7b374e51ac10c552fd13314c959f1862c42e686 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 7 Sep 2018 21:07:08 +0200 Subject: [PATCH 032/277] #311 Updated some more license headers that was left out in the initial change. --- .../util/IIOInputStreamAdapterTest.java | 40 ++++++++++--------- .../util/IIOOutputStreamAdapterTest.java | 40 ++++++++++--------- .../imageio/util/ImageReaderAbstractTest.java | 40 ++++++++++--------- .../imageio/util/ImageTypeSpecifiersTest.java | 30 ++++++++++++++ .../imageio/util/ImageWriterAbstractTest.java | 40 ++++++++++--------- .../util/IndexedImageTypeSpecifierTest.java | 30 ++++++++++++++ .../util/UInt32ImageTypeSpecifierTest.java | 30 ++++++++++++++ .../imageio/metadata/xmp/RDFDescription.java | 40 ++++++++++--------- .../imageio/metadata/xmp/XMP.java | 40 ++++++++++--------- .../imageio/metadata/xmp/XMPDirectory.java | 40 ++++++++++--------- .../imageio/metadata/xmp/XMPEntry.java | 40 ++++++++++--------- .../metadata/xmp/XMPNamespaceMapping.java | 40 ++++++++++--------- .../imageio/metadata/xmp/XMPReader.java | 40 ++++++++++--------- .../imageio/metadata/xmp/XMPScanner.java | 40 ++++++++++--------- 14 files changed, 321 insertions(+), 209 deletions(-) diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOInputStreamAdapterTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOInputStreamAdapterTest.java index 83efb105..ccb4a040 100755 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOInputStreamAdapterTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOInputStreamAdapterTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.util; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOOutputStreamAdapterTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOOutputStreamAdapterTest.java index f14630af..dc59bb5b 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOOutputStreamAdapterTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IIOOutputStreamAdapterTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.util; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java index 2ebba948..f6c4149b 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.util; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiersTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiersTest.java index 65f9a083..2210b90a 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiersTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiersTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2014, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.util; import com.twelvemonkeys.lang.Validate; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageWriterAbstractTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageWriterAbstractTest.java index 9d91a5de..729c5cc2 100755 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageWriterAbstractTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageWriterAbstractTest.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.util; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IndexedImageTypeSpecifierTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IndexedImageTypeSpecifierTest.java index 043df088..aedd5ed4 100755 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IndexedImageTypeSpecifierTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/IndexedImageTypeSpecifierTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2014, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.util; import org.junit.Test; diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/UInt32ImageTypeSpecifierTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/UInt32ImageTypeSpecifierTest.java index f1ffa6fa..b74d9a16 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/UInt32ImageTypeSpecifierTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/UInt32ImageTypeSpecifierTest.java @@ -1,3 +1,33 @@ +/* + * Copyright (c) 2014, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.twelvemonkeys.imageio.util; import com.twelvemonkeys.imageio.color.ColorSpaces; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/RDFDescription.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/RDFDescription.java index 2e6c7eda..2e20cba7 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/RDFDescription.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/RDFDescription.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.xmp; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMP.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMP.java index c624afe6..85ed3728 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMP.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMP.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.xmp; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPDirectory.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPDirectory.java index 565f7d76..14399923 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPDirectory.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPDirectory.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.xmp; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPEntry.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPEntry.java index 82f566ad..630b38f0 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPEntry.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPEntry.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.xmp; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPNamespaceMapping.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPNamespaceMapping.java index af1729c9..caf7b498 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPNamespaceMapping.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPNamespaceMapping.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.xmp; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPReader.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPReader.java index aeb47bb7..9850a33e 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPReader.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPReader.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.xmp; diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPScanner.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPScanner.java index 93f941c0..00d13ed9 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPScanner.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/xmp/XMPScanner.java @@ -4,26 +4,28 @@ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name "TwelveMonkeys" nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.twelvemonkeys.imageio.metadata.xmp; From 586359e7ab2f6b108d45a307cda46e89d3c3098b Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 8 Sep 2018 16:04:06 +0200 Subject: [PATCH 033/277] #379 TGA write --- .../imageio/plugins/tga/TGA.java | 2 + .../imageio/plugins/tga/TGAExtensions.java | 5 +- .../imageio/plugins/tga/TGAHeader.java | 143 ++++++++++-- .../imageio/plugins/tga/TGAImageReader.java | 4 +- .../plugins/tga/TGAImageWriteParam.java | 55 +++++ .../imageio/plugins/tga/TGAImageWriter.java | 218 ++++++++++++++++++ .../plugins/tga/TGAImageWriterSpi.java | 95 ++++++++ .../imageio/plugins/tga/TGAMetadata.java | 4 +- .../imageio/plugins/tga/TGAProviderInfo.java | 4 +- .../services/javax.imageio.spi.ImageWriterSpi | 1 + .../plugins/tga/TGAImageWriterTest.java | 112 +++++++++ 11 files changed, 614 insertions(+), 29 deletions(-) create mode 100644 imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriteParam.java create mode 100644 imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriter.java create mode 100644 imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriterSpi.java create mode 100644 imageio/imageio-tga/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi create mode 100644 imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriterTest.java diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGA.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGA.java index 5fc0e2f0..3903aaa2 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGA.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGA.java @@ -36,6 +36,8 @@ interface TGA { /** Fixed header size: 18.*/ int HEADER_SIZE = 18; + int EXT_AREA_SIZE = 495; + /** No color map included. */ int COLORMAP_NONE = 0; /** Color map included. */ diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAExtensions.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAExtensions.java index 157ab7a1..1639f51f 100644 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAExtensions.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAExtensions.java @@ -36,6 +36,8 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Calendar; +import static com.twelvemonkeys.imageio.plugins.tga.TGA.EXT_AREA_SIZE; + /** * TGAExtensions. * @@ -44,7 +46,6 @@ import java.util.Calendar; * @version $Id: TGAExtensions.java,v 1.0 27/07/15 harald.kuhr Exp$ */ final class TGAExtensions { - public static final int EXT_AREA_SIZE = 495; private String authorName; private String authorComments; @@ -77,7 +78,7 @@ final class TGAExtensions { } TGAExtensions extensions = new TGAExtensions(); - extensions.authorName = readString(stream, 41);; + extensions.authorName = readString(stream, 41); extensions.authorComments = readString(stream, 324); extensions.creationDate = readDate(stream); extensions.jobId = readString(stream, 41); diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAHeader.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAHeader.java index c3e4775e..32980eb5 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAHeader.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAHeader.java @@ -31,11 +31,19 @@ package com.twelvemonkeys.imageio.plugins.tga; import javax.imageio.IIOException; +import javax.imageio.ImageWriteParam; import javax.imageio.stream.ImageInputStream; +import java.awt.image.ColorModel; import java.awt.image.IndexColorModel; +import java.awt.image.RenderedImage; import java.io.DataInput; +import java.io.DataOutput; import java.io.IOException; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; + +import static com.twelvemonkeys.lang.Validate.notNull; +import static java.awt.color.ColorSpace.TYPE_GRAY; +import static java.awt.color.ColorSpace.TYPE_RGB; final class TGAHeader { @@ -55,43 +63,44 @@ final class TGAHeader { private String identification; private IndexColorModel colorMap; - public int getImageType() { + int getImageType() { return imageType; } - public int getWidth() { + int getWidth() { return width; } - public int getHeight() { + int getHeight() { return height; } - public int getPixelDepth() { + int getPixelDepth() { return pixelDepth; } - public int getAttributeBits() { + int getAttributeBits() { return attributeBits; } - public int getOrigin() { + int getOrigin() { return origin; } - public int getInterleave() { + int getInterleave() { return interleave; } - public String getIdentification() { + String getIdentification() { return identification; } - public IndexColorModel getColorMap() { + IndexColorModel getColorMap() { return colorMap; } - @Override public String toString() { + @Override + public String toString() { return "TGAHeader{" + "colorMapType=" + colorMapType + ", imageType=" + imageType + @@ -110,7 +119,101 @@ final class TGAHeader { '}'; } - public static TGAHeader read(final ImageInputStream imageInput) throws IOException { + static TGAHeader from(final RenderedImage image, final ImageWriteParam param) { + notNull(image, "image"); + + ColorModel colorModel = image.getColorModel(); + IndexColorModel colorMap = colorModel instanceof IndexColorModel ? (IndexColorModel) colorModel : null; + + TGAHeader header = new TGAHeader(); + + header.colorMapType = colorMap != null ? 1 : 0; + header.imageType = getImageType(colorModel, param); + header.colorMapStart = 0; + header.colorMapSize = colorMap != null ? colorMap.getMapSize() : 0; + header.colorMapDepth = colorMap != null ? (colorMap.hasAlpha() ? 32 : 24) : 0; + + header.x = 0; + header.y = 0; + + header.width = image.getWidth(); // TODO: Param source region/subsampling might affect this + header.height = image.getHeight(); // // TODO: Param source region/subsampling might affect this + header.pixelDepth = colorModel.getPixelSize() == 15 ? 16 : colorModel.getPixelSize(); + + header.origin = TGA.ORIGIN_UPPER_LEFT; // TODO: Allow parameter to control this? + header.attributeBits = colorModel.hasAlpha() ? 8 : 0; // TODO: FixMe + + header.identification = null; + header.colorMap = colorMap; + + return header; + } + + private static int getImageType(final ColorModel colorModel, final ImageWriteParam param) { + int uncompressedType; + + if (colorModel instanceof IndexColorModel) { + uncompressedType = TGA.IMAGETYPE_COLORMAPPED; + } + else { + switch (colorModel.getColorSpace().getType()) { + case TYPE_RGB: + uncompressedType = TGA.IMAGETYPE_TRUECOLOR; + break; + case TYPE_GRAY: + uncompressedType = TGA.IMAGETYPE_MONOCHROME; + break; + + default: + throw new IllegalArgumentException("Unsupported color space for TGA: " + colorModel.getColorSpace()); + } + } + + return uncompressedType | (TGAImageWriteParam.isRLE(param) ? 8 : 0); + } + + void write(final DataOutput stream) throws IOException { + byte[] idBytes = identification != null ? identification.getBytes(StandardCharsets.US_ASCII) : new byte[0]; + + stream.writeByte(idBytes.length); + stream.writeByte(colorMapType); + stream.writeByte(imageType); + stream.writeShort(colorMapStart); + stream.writeShort(colorMapSize); + stream.writeByte(colorMapDepth); + + stream.writeShort(x); + stream.writeShort(y); + stream.writeShort(width); + stream.writeShort(height); + stream.writeByte(pixelDepth); + stream.writeByte(attributeBits | origin << 4 | interleave << 6); + + // Identification + stream.write(idBytes); + + // Color map + if (colorMap != null) { + int[] rgb = new int[colorMap.getMapSize()]; + colorMap.getRGBs(rgb); + + int components = colorMap.hasAlpha() ? 4 : 3; + byte[] cmap = new byte[rgb.length * components]; + for (int i = 0; i < rgb.length; i++) { + cmap[i * components ] = (byte) ((rgb[i] >> 16) & 0xff); + cmap[i * components + 1] = (byte) ((rgb[i] >> 8) & 0xff); + cmap[i * components + 2] = (byte) ((rgb[i] ) & 0xff); + + if (components == 4) { + cmap[i * components + 3] = (byte) ((rgb[i] >>> 24) & 0xff); + } + } + + stream.write(cmap); + } + } + + static TGAHeader read(final ImageInputStream imageInput) throws IOException { // typedef struct _TgaHeader // { // BYTE IDLength; /* 00h Size of Image ID field */ @@ -154,7 +257,7 @@ final class TGAHeader { byte[] idBytes = new byte[imageIdLength]; imageInput.readFully(idBytes); - header.identification = new String(idBytes, Charset.forName("US-ASCII")); + header.identification = new String(idBytes, StandardCharsets.US_ASCII); } // Color map, not *really* part of the header @@ -165,7 +268,7 @@ final class TGAHeader { return header; } - static IndexColorModel readColorMap(final DataInput stream, final TGAHeader header) throws IOException { + private static IndexColorModel readColorMap(final DataInput stream, final TGAHeader header) throws IOException { int size = header.colorMapSize; int depth = header.colorMapDepth; int bytes = (depth + 7) / 8; @@ -177,7 +280,7 @@ final class TGAHeader { switch (depth) { case 16: - // Expand 16 bit to 24 bit RGB + // Expand 16 (15) bit to 24 bit RGB byte[] temp = cmap; cmap = new byte[size * 3]; @@ -187,13 +290,9 @@ final class TGAHeader { byte low = temp[i * 2]; byte high = temp[i * 2 + 1]; - byte r = (byte) (8 * ((high & 0x7C) >> 2)); - byte g = (byte) (8 * ((high & 0x03) << 3 | (low & 0xE0) >> 5)); - byte b = (byte) (8 * ((low & 0x1F))); - - cmap[i * 3 ] = r; - cmap[i * 3 + 1] = g; - cmap[i * 3 + 2] = b; + cmap[i * 3 ] = (byte) (((high & 0x7C) >> 2) << 3); + cmap[i * 3 + 1] = (byte) (((high & 0x03) << 3 | (low & 0xE0) >> 5) << 3); + cmap[i * 3 + 2] = (byte) (((low & 0x1F)) << 3); } hasAlpha = false; diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java index fbaba173..76b0c98d 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java @@ -58,14 +58,14 @@ import java.util.Arrays; import java.util.Iterator; import java.util.List; -public final class TGAImageReader extends ImageReaderBase { +final class TGAImageReader extends ImageReaderBase { // http://www.fileformat.info/format/tga/egff.htm // http://www.gamers.org/dEngine/quake3/TGA.txt private TGAHeader header; private TGAExtensions extensions; - protected TGAImageReader(final ImageReaderSpi provider) { + TGAImageReader(final ImageReaderSpi provider) { super(provider); } diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriteParam.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriteParam.java new file mode 100644 index 00000000..8e4e528e --- /dev/null +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriteParam.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.tga; + +import javax.imageio.ImageWriteParam; +import java.util.Locale; + +/** + * TGAImageWriteParam + */ +public final class TGAImageWriteParam extends ImageWriteParam { + @SuppressWarnings("unused") + public TGAImageWriteParam() { + this(null); + } + + @SuppressWarnings("WeakerAccess") + public TGAImageWriteParam(final Locale locale) { + super(locale); + + compressionTypes = new String[]{"None", "RLE"}; + } + + static boolean isRLE(final ImageWriteParam param) { + return param != null && param.getCompressionMode() == MODE_EXPLICIT && "RLE".equals(param.getCompressionType()); + } +} diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriter.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriter.java new file mode 100644 index 00000000..ea7944c6 --- /dev/null +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriter.java @@ -0,0 +1,218 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.tga; + +import com.twelvemonkeys.imageio.ImageWriterBase; +import com.twelvemonkeys.imageio.util.ImageTypeSpecifiers; + +import javax.imageio.*; +import javax.imageio.metadata.IIOMetadata; +import javax.imageio.spi.ImageWriterSpi; +import java.awt.*; +import java.awt.color.ColorSpace; +import java.awt.image.*; +import java.io.File; +import java.io.IOException; +import java.nio.ByteOrder; + +import static com.twelvemonkeys.lang.Validate.notNull; + +/** + * TGAImageWriter + */ +final class TGAImageWriter extends ImageWriterBase { + TGAImageWriter(ImageWriterSpi provider) { + super(provider); + } + + @Override + public IIOMetadata getDefaultImageMetadata(final ImageTypeSpecifier imageType, final ImageWriteParam param) { + TGAHeader header = TGAHeader.from(imageType.createBufferedImage(1, 1), param); + return new TGAMetadata(header, null); + } + + @Override + public IIOMetadata convertImageMetadata(final IIOMetadata inData, final ImageTypeSpecifier imageType, final ImageWriteParam param) { + return null; + } + + @Override + public void setOutput(Object output) { + super.setOutput(output); + + if (imageOutput != null) { + imageOutput.setByteOrder(ByteOrder.LITTLE_ENDIAN); + } + } + + @Override + public void write(final IIOMetadata streamMetadata, final IIOImage image, final ImageWriteParam param) throws IOException { + assertOutput(); + + if (image.hasRaster()) { + throw new UnsupportedOperationException("Raster not supported"); + } + + RenderedImage renderedImage = image.getRenderedImage(); + TGAHeader header = TGAHeader.from(renderedImage, param); + + header.write(imageOutput); + + processImageStarted(0); + + WritableRaster rowRaster = header.getPixelDepth() == 32 + ? ImageTypeSpecifiers.createInterleaved(ColorSpace.getInstance(ColorSpace.CS_sRGB), new int[]{2, 1, 0, 3}, DataBuffer.TYPE_BYTE, true, false) + .createBufferedImage(renderedImage.getWidth(), 1) + .getRaster() + : renderedImage.getSampleModel().getTransferType() == DataBuffer.TYPE_INT + ? ImageTypeSpecifiers.createInterleaved(ColorSpace.getInstance(ColorSpace.CS_sRGB), new int[]{2, 1, 0}, DataBuffer.TYPE_BYTE, false, false) + .createBufferedImage(renderedImage.getWidth(), 1) + .getRaster() + : ImageTypeSpecifier.createFromRenderedImage(renderedImage) + .createBufferedImage(renderedImage.getWidth(), 1) + .getRaster(); + + DataBuffer buffer = rowRaster.getDataBuffer(); + + for (int tileY = 0; tileY < renderedImage.getNumYTiles(); tileY++) { + for (int tileX = 0; tileX < renderedImage.getNumXTiles(); tileX++) { + if (abortRequested()) { + break; + } + + // Wraps TYPE_INT rasters to TYPE_BYTE + Raster raster = asByteRaster(renderedImage.getTile(tileX, tileY), renderedImage.getColorModel()); + + for (int y = 0; y < raster.getHeight(); y++) { + if (abortRequested()) { + break; + } + + switch (buffer.getDataType()) { + case DataBuffer.TYPE_BYTE: + rowRaster.setDataElements(0, 0, raster.createChild(0, y, raster.getWidth(), 1, 0, 0, null)); + imageOutput.write(((DataBufferByte) buffer).getData()); + break; + case DataBuffer.TYPE_USHORT: + rowRaster.setDataElements(0, 0, raster.createChild(0, y, raster.getWidth(), 1, 0, 0, null)); + short[] shorts = ((DataBufferUShort) buffer).getData(); + imageOutput.writeShorts(shorts, 0, shorts.length); + break; + default: + throw new IIOException("Unsupported data"); + } + + processImageProgress(tileY * 100f / renderedImage.getNumYTiles()); + } + + } + } + + // TODO: If we have thumbnails, we need to write extension too. + + processImageComplete(); + + } + + // Vi kan lage en DataBuffer wrapper-klasse, + // som gjør TYPE_INT_RGB/INT_ARGB/INT_ARGB_PRE/INT_BGR til tilsvarende TYPE_xBYTE-klasser. + // Ytelse er ikke viktig her, siden vi uansett må konvertere når vi skal skrive/lese. + // TODO: Refactore dette til felles lag? + // TODO: Implementere writable også, slik at vi kan bruke i lesing? + private Raster asByteRaster(final Raster raster, ColorModel colorModel) { + switch (raster.getTransferType()) { + case DataBuffer.TYPE_BYTE: + return raster; + case DataBuffer.TYPE_USHORT: + return raster; // TODO: we handle ushort especially for now.. + case DataBuffer.TYPE_INT: + final int bands = colorModel.getNumComponents(); + final DataBufferInt buffer = (DataBufferInt) raster.getDataBuffer(); + + int w = raster.getWidth(); + int h = raster.getHeight(); + int size = buffer.getSize(); + + return new Raster( + new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE, w, h, bands, w * bands, createBandOffsets(colorModel)), + new DataBuffer(DataBuffer.TYPE_BYTE, size * bands) { + @Override + public int getElem(int bank, int i) { + int index = i / bands; + int shift = (i % bands) * 8; + + return (buffer.getElem(index) >>> shift) & 0xFF; + } + + @Override + public void setElem(int bank, int i, int val) { + throw new UnsupportedOperationException("Wrapped buffer is read-only"); + } + }, new Point()) {}; + default: + throw new IllegalArgumentException(String.format("Raster type %d not supported", raster.getTransferType())); + } + } + + private int[] createBandOffsets(final ColorModel colorModel) { + notNull(colorModel, "colorModel"); + + if (colorModel instanceof DirectColorModel) { + DirectColorModel dcm = (DirectColorModel) colorModel; + int[] masks = dcm.getMasks(); + int[] offs = new int[masks.length]; + + for (int i = 0; i < masks.length; i++) { + int mask = masks[i]; + int off = 0; + + // TODO: FixMe! This only works for standard 8 bit masks (0xFF) + if (mask != 0) { + while ((mask & 0xFF) == 0) { + mask >>>= 8; + off++; + } + } + + offs[i] = off; + } + + return offs; + } + + throw new IllegalArgumentException(String.format("%s not supported", colorModel.getClass().getSimpleName())); + } + + public static void main(String[] args) throws IOException { + BufferedImage image = ImageIO.read(new File(args[0])); + ImageIO.write(image, "TGA", new File("foo.tga")); + } +} diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriterSpi.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriterSpi.java new file mode 100644 index 00000000..449cfee4 --- /dev/null +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriterSpi.java @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.tga; + +import com.twelvemonkeys.imageio.spi.ImageWriterSpiBase; + +import javax.imageio.ImageTypeSpecifier; +import javax.imageio.ImageWriter; +import java.awt.color.ColorSpace; +import java.awt.image.BufferedImage; +import java.util.Locale; + +/** + * TGAImageWriterSpi + */ +public final class TGAImageWriterSpi extends ImageWriterSpiBase { + @SuppressWarnings("WeakerAccess") + public TGAImageWriterSpi() { + super(new TGAProviderInfo()); + } + + @Override + public boolean canEncodeImage(final ImageTypeSpecifier type) { + // Fast case, it's a known, supported type + switch (type.getBufferedImageType()) { + case BufferedImage.TYPE_INT_RGB: + case BufferedImage.TYPE_INT_ARGB: + case BufferedImage.TYPE_INT_ARGB_PRE: + case BufferedImage.TYPE_3BYTE_BGR: + case BufferedImage.TYPE_4BYTE_ABGR: + case BufferedImage.TYPE_4BYTE_ABGR_PRE: + case BufferedImage.TYPE_USHORT_555_RGB: + case BufferedImage.TYPE_BYTE_GRAY: + case BufferedImage.TYPE_BYTE_INDEXED: + return true; + case BufferedImage.TYPE_BYTE_BINARY: // Could be supported? Uncertain if the format allows < 8 bit/sample for color map entries + case BufferedImage.TYPE_INT_BGR: // TODO: Should be supported, just needs to invert band indices/offsets + case BufferedImage.TYPE_USHORT_565_RGB: + case BufferedImage.TYPE_USHORT_GRAY: + return false; + default: + // Fall through + } + + // Inspect color model etc. + ColorSpace colorSpace = type.getColorModel().getColorSpace(); + if (!(colorSpace.getType() == ColorSpace.TYPE_RGB || colorSpace.getType() == ColorSpace.TYPE_GRAY)) { + return false; + } + + + + // TODO! + + return true; + } + + @Override + public ImageWriter createWriterInstance(Object extension) { + return new TGAImageWriter(this); + } + + @Override + public String getDescription(Locale locale) { + return "TrueVision TGA image writer"; + } +} diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java index 7df3e9aa..3932b230 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAMetadata.java @@ -37,12 +37,14 @@ import java.awt.*; import java.awt.image.IndexColorModel; import java.util.Calendar; +import static com.twelvemonkeys.lang.Validate.notNull; + final class TGAMetadata extends AbstractMetadata { private final TGAHeader header; private final TGAExtensions extensions; TGAMetadata(final TGAHeader header, final TGAExtensions extensions) { - this.header = header; + this.header = notNull(header, "header"); this.extensions = extensions; } diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfo.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfo.java index beda1535..72151d77 100644 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfo.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAProviderInfo.java @@ -55,8 +55,8 @@ final class TGAProviderInfo extends ReaderWriterProviderInfo { }, "com.twelvemonkeys.imageio.plugins.tga.TGAImageReader", new String[] {"com.twelvemonkeys.imageio.plugins.tga.TGAImageReaderSpi"}, - null, - null, + "com.twelvemonkeys.imageio.plugins.tga.TGAImageWriter", + new String[] {"com.twelvemonkeys.imageio.plugins.tga.TGAImageWriterSpi"}, false, null, null, null, null, true, null, null, null, null ); diff --git a/imageio/imageio-tga/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi b/imageio/imageio-tga/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi new file mode 100644 index 00000000..8d153f1a --- /dev/null +++ b/imageio/imageio-tga/src/main/resources/META-INF/services/javax.imageio.spi.ImageWriterSpi @@ -0,0 +1 @@ +com.twelvemonkeys.imageio.plugins.tga.TGAImageWriterSpi diff --git a/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriterTest.java b/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriterTest.java new file mode 100644 index 00000000..802a00f8 --- /dev/null +++ b/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageWriterTest.java @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2017, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.tga; + +import com.twelvemonkeys.imageio.util.ImageTypeSpecifiers; +import com.twelvemonkeys.imageio.util.ImageWriterAbstractTest; +import org.junit.Test; + +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import javax.imageio.ImageTypeSpecifier; +import javax.imageio.ImageWriter; +import javax.imageio.stream.ImageInputStream; +import javax.imageio.stream.ImageOutputStream; +import java.awt.color.ColorSpace; +import java.awt.image.BufferedImage; +import java.awt.image.DataBuffer; +import java.awt.image.RenderedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; + +import static com.twelvemonkeys.imageio.util.ImageReaderAbstractTest.assertImageDataEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assume.assumeNotNull; + +/** + * TGAImageWriterTest + */ +public class TGAImageWriterTest extends ImageWriterAbstractTest { + + private static final TGAImageWriterSpi PROVIDER = new TGAImageWriterSpi(); + private static final ImageTypeSpecifier TYPE_USHORT_1555_ARGB = ImageTypeSpecifiers.createPacked(ColorSpace.getInstance(ColorSpace.CS_sRGB), 0x7C00, 0x03E0, 0x001F, 0x8000, DataBuffer.TYPE_USHORT, false); + + @Override + protected ImageWriter createImageWriter() { + return new TGAImageWriter(PROVIDER); + } + + @Override + protected List getTestData() { + return Arrays.asList( + drawSomething(new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB)), + drawSomething(new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB)), + drawSomething(new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB_PRE)), + drawSomething(new BufferedImage(10, 10, BufferedImage.TYPE_INT_BGR)), + drawSomething(new BufferedImage(10, 10, BufferedImage.TYPE_3BYTE_BGR)), + drawSomething(new BufferedImage(10, 10, BufferedImage.TYPE_4BYTE_ABGR)), + drawSomething(new BufferedImage(10, 10, BufferedImage.TYPE_4BYTE_ABGR_PRE)), + drawSomething(new BufferedImage(10, 10, BufferedImage.TYPE_USHORT_555_RGB)), + drawSomething(new BufferedImage(10, 10, BufferedImage.TYPE_BYTE_GRAY)), + drawSomething(new BufferedImage(10, 10, BufferedImage.TYPE_BYTE_INDEXED)), + drawSomething(TYPE_USHORT_1555_ARGB.createBufferedImage(10, 10)) + ); + } + + @Test + public void testWriteRead() throws IOException { + ImageWriter writer = createImageWriter(); + ImageReader reader = ImageIO.getImageReader(writer); + + assumeNotNull(reader); + + for (RenderedImage testData : getTestData()) { + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + + try (ImageOutputStream stream = ImageIO.createImageOutputStream(buffer)) { + writer.setOutput(stream); + writer.write(drawSomething((BufferedImage) testData)); + } + + try (ImageInputStream stream = ImageIO.createImageInputStream(new ByteArrayInputStream(buffer.toByteArray()))) { + reader.setInput(stream); + + BufferedImage image = reader.read(0); + + assertNotNull(image); + assertImageDataEquals("Images differ for " + testData, (BufferedImage) testData, image); + } + } + } +} \ No newline at end of file From 0cd250646a606029d7ef331dfed257a1e4421618 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 8 Sep 2018 16:21:01 +0200 Subject: [PATCH 034/277] #438 CompoundDocument file descriptor fix (cherry picked from commit 04f27a1) --- .../io/AbstractCachedSeekableStream.java | 8 ++- .../io/FileCacheSeekableStream.java | 26 ++++--- .../io/LittleEndianDataInputStream.java | 1 - .../io/LittleEndianDataOutputStream.java | 1 - .../io/LittleEndianRandomAccessFile.java | 1 - .../io/MemoryCacheSeekableStream.java | 7 +- .../io/ole2/CompoundDocument.java | 54 +++++++++++--- .../io/ole2/CompoundDocumentTest.java | 70 +++++++++---------- .../io/ole2/CompoundDocument_StreamTest.java | 40 ++--------- 9 files changed, 111 insertions(+), 97 deletions(-) diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/AbstractCachedSeekableStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/AbstractCachedSeekableStream.java index 17d9038f..418760c5 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/AbstractCachedSeekableStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/AbstractCachedSeekableStream.java @@ -186,7 +186,7 @@ abstract class AbstractCachedSeekableStream extends SeekableInputStream { } protected void closeImpl() throws IOException { - cache.flush(position); + cache.close(); cache = null; stream.close(); } @@ -198,12 +198,12 @@ abstract class AbstractCachedSeekableStream extends SeekableInputStream { * @author last modified by $Author: haku $ * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/main/java/com/twelvemonkeys/io/AbstractCachedSeekableStream.java#2 $ */ - public static abstract class StreamCache { + static abstract class StreamCache { /** * Creates a {@code StreamCache}. */ - protected StreamCache() { + StreamCache() { } /** @@ -303,5 +303,7 @@ abstract class AbstractCachedSeekableStream extends SeekableInputStream { * @throws IOException if the position can't be determined because of a problem in the cache backing mechanism. */ abstract long getPosition() throws IOException; + + abstract void close() throws IOException; } } diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/FileCacheSeekableStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/FileCacheSeekableStream.java index bfdbaed8..a857b817 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/FileCacheSeekableStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/FileCacheSeekableStream.java @@ -124,7 +124,9 @@ public final class FileCacheSeekableStream extends AbstractCachedSeekableStream @Override protected void closeImpl() throws IOException { + // TODO: Close cache file super.closeImpl(); + buffer = null; } @@ -194,39 +196,45 @@ public final class FileCacheSeekableStream extends AbstractCachedSeekableStream return length; } + // TODO: We need to close the cache file!!! Otherwise we are leaking file descriptors + final static class FileCache extends StreamCache { - private RandomAccessFile mCacheFile; + private RandomAccessFile cacheFile; public FileCache(final File pFile) throws FileNotFoundException { Validate.notNull(pFile, "file"); - mCacheFile = new RandomAccessFile(pFile, "rw"); + cacheFile = new RandomAccessFile(pFile, "rw"); } public void write(final int pByte) throws IOException { - mCacheFile.write(pByte); + cacheFile.write(pByte); } @Override public void write(final byte[] pBuffer, final int pOffset, final int pLength) throws IOException { - mCacheFile.write(pBuffer, pOffset, pLength); + cacheFile.write(pBuffer, pOffset, pLength); } public int read() throws IOException { - return mCacheFile.read(); + return cacheFile.read(); } @Override public int read(final byte[] pBuffer, final int pOffset, final int pLength) throws IOException { - return mCacheFile.read(pBuffer, pOffset, pLength); + return cacheFile.read(pBuffer, pOffset, pLength); } public void seek(final long pPosition) throws IOException { - mCacheFile.seek(pPosition); + cacheFile.seek(pPosition); } public long getPosition() throws IOException { - return mCacheFile.getFilePointer(); + return cacheFile.getFilePointer(); + } + + @Override + void close() throws IOException { + cacheFile.close(); } } - } diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataInputStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataInputStream.java index 401b92dd..5f9276f9 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataInputStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataInputStream.java @@ -53,7 +53,6 @@ import java.io.*; * which this class imitates reads big endian quantities. *

    * Warning: - * * The {@code DataInput} and {@code DataOutput} interfaces * specifies big endian byte order in their documentation. * This means that this class is, strictly speaking, not a proper diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataOutputStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataOutputStream.java index 84d6469f..23c112f7 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataOutputStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianDataOutputStream.java @@ -52,7 +52,6 @@ import java.io.*; * imitates uses big endian integers. *

    * Warning: - * * The {@code DataInput} and {@code DataOutput} interfaces * specifies big endian byte order in their documentation. * This means that this class is, strictly speaking, not a proper diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianRandomAccessFile.java b/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianRandomAccessFile.java index 73b222f5..de2b32d0 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianRandomAccessFile.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/LittleEndianRandomAccessFile.java @@ -38,7 +38,6 @@ import java.nio.channels.FileChannel; * and writing data in little endian byte order. *

    * Warning: - * * The {@code DataInput} and {@code DataOutput} interfaces * specifies big endian byte order in their documentation. * This means that this class is, strictly speaking, not a proper diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/MemoryCacheSeekableStream.java b/common/common-io/src/main/java/com/twelvemonkeys/io/MemoryCacheSeekableStream.java index a60bc8a4..d17546b6 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/MemoryCacheSeekableStream.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/MemoryCacheSeekableStream.java @@ -67,7 +67,7 @@ public final class MemoryCacheSeekableStream extends AbstractCachedSeekableStrea final static class MemoryCache extends StreamCache { final static int BLOCK_SIZE = 1 << 13; - private final List cache = new ArrayList(); + private final List cache = new ArrayList<>(); private long length; private long position; private long start; @@ -186,6 +186,11 @@ public final class MemoryCacheSeekableStream extends AbstractCachedSeekableStrea start = pPosition; } + @Override + void close() throws IOException { + cache.clear(); + } + public long getPosition() { return position; } diff --git a/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/CompoundDocument.java b/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/CompoundDocument.java index 91cab4a5..60cdf7ed 100755 --- a/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/CompoundDocument.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/io/ole2/CompoundDocument.java @@ -35,11 +35,14 @@ import com.twelvemonkeys.lang.StringUtil; import javax.imageio.stream.ImageInputStream; import java.io.*; +import java.nio.ByteOrder; import java.util.Arrays; import java.util.SortedSet; import java.util.TreeSet; import java.util.UUID; +import static com.twelvemonkeys.lang.Validate.notNull; + /** * Represents a read-only OLE2 compound document. *

    @@ -52,7 +55,7 @@ import java.util.UUID; * @author last modified by $Author: haku $ * @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/main/java/com/twelvemonkeys/io/ole2/CompoundDocument.java#4 $ */ -public final class CompoundDocument { +public final class CompoundDocument implements AutoCloseable { // TODO: Write support... // TODO: Properties: http://support.microsoft.com/kb/186898 @@ -96,13 +99,18 @@ public final class CompoundDocument { /** * Creates a (for now) read only {@code CompoundDocument}. + *

    + * Warning! You must invoke {@link #close()} on the compound document + * created from this constructor when done, to avoid leaking file + * descriptors. * - * @param pFile the file to read from + * @param file the file to read from * * @throws IOException if an I/O exception occurs while reading the header */ - public CompoundDocument(final File pFile) throws IOException { - input = new LittleEndianRandomAccessFile(FileUtil.resolve(pFile), "r"); + public CompoundDocument(final File file) throws IOException { + // TODO: We need to close this (or it's underlying RAF)! Otherwise we're leaking file descriptors! + input = new LittleEndianRandomAccessFile(FileUtil.resolve(file), "r"); // TODO: Might be better to read header on first read operation?! // OTOH: It's also good to be fail-fast, so at least we should make @@ -113,17 +121,17 @@ public final class CompoundDocument { /** * Creates a read only {@code CompoundDocument}. * - * @param pInput the input to read from + * @param pInput the input to read from. * * @throws IOException if an I/O exception occurs while reading the header */ public CompoundDocument(final InputStream pInput) throws IOException { - this(new FileCacheSeekableStream(pInput)); + this(new MemoryCacheSeekableStream(pInput)); } // For testing only, consider exposing later - CompoundDocument(final SeekableInputStream pInput) throws IOException { - input = new SeekableLittleEndianDataInputStream(pInput); + CompoundDocument(final SeekableInputStream stream) throws IOException { + input = new SeekableLittleEndianDataInputStream(stream); // TODO: Might be better to read header on first read operation?! // OTOH: It's also good to be fail-fast, so at least we should make @@ -134,12 +142,15 @@ public final class CompoundDocument { /** * Creates a read only {@code CompoundDocument}. * - * @param pInput the input to read from + * @param input the input to read from * * @throws IOException if an I/O exception occurs while reading the header */ - public CompoundDocument(final ImageInputStream pInput) throws IOException { - input = pInput; + public CompoundDocument(final ImageInputStream input) throws IOException { + this.input = notNull(input, "input"); + + // This implementation only supports little endian (Intel) CompoundDocuments + input.setByteOrder(ByteOrder.LITTLE_ENDIAN); // TODO: Might be better to read header on first read operation?! // OTOH: It's also good to be fail-fast, so at least we should make @@ -147,6 +158,27 @@ public final class CompoundDocument { readHeader(); } + /** + * This method will close the underlying {@link RandomAccessFile} if any, + * but will leave any stream created outside the document open. + * + * @see #CompoundDocument(File) + * @see RandomAccessFile#close() + * + * @throws IOException if an I/O error occurs. + */ + @Override + public void close() throws IOException { + if (input instanceof RandomAccessFile) { + ((RandomAccessFile) input).close(); + } + else if (input instanceof LittleEndianRandomAccessFile) { + ((LittleEndianRandomAccessFile) input).close(); + } + + // Other streams are left open + } + public static boolean canRead(final DataInput pInput) { return canRead(pInput, true); } diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocumentTest.java b/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocumentTest.java index cef8106f..a9efc698 100755 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocumentTest.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocumentTest.java @@ -72,64 +72,64 @@ public class CompoundDocumentTest { @Test public void testRoot() throws IOException { - CompoundDocument document = createTestDocument(); + try (CompoundDocument document = createTestDocument()) { + Entry root = document.getRootEntry(); - Entry root = document.getRootEntry(); - - assertNotNull(root); - assertEquals("Root Entry", root.getName()); - assertTrue(root.isRoot()); - assertFalse(root.isFile()); - assertFalse(root.isDirectory()); - assertEquals(0, root.length()); - assertNull(root.getInputStream()); + assertNotNull(root); + assertEquals("Root Entry", root.getName()); + assertTrue(root.isRoot()); + assertFalse(root.isFile()); + assertFalse(root.isDirectory()); + assertEquals(0, root.length()); + assertNull(root.getInputStream()); + } } @Test public void testContents() throws IOException { - CompoundDocument document = createTestDocument(); + try (CompoundDocument document = createTestDocument()) { + Entry root = document.getRootEntry(); - Entry root = document.getRootEntry(); + assertNotNull(root); - assertNotNull(root); + SortedSet children = new TreeSet(root.getChildEntries()); + assertEquals(25, children.size()); - SortedSet children = new TreeSet(root.getChildEntries()); - assertEquals(25, children.size()); - - // Weirdness in the file format, name is *written backwards* 1-24 + Catalog - for (String name : "1,2,3,4,5,6,7,8,9,01,02,11,12,21,22,31,32,41,42,51,61,71,81,91,Catalog".split(",")) { - assertEquals(name, children.first().getName()); - children.remove(children.first()); + // Weirdness in the file format, name is *written backwards* 1-24 + Catalog + for (String name : "1,2,3,4,5,6,7,8,9,01,02,11,12,21,22,31,32,41,42,51,61,71,81,91,Catalog".split(",")) { + assertEquals(name, children.first().getName()); + children.remove(children.first()); + } } } @Test(expected = UnsupportedOperationException.class) public void testChildEntriesUnmodifiable() throws IOException { - CompoundDocument document = createTestDocument(); + try (CompoundDocument document = createTestDocument()) { + Entry root = document.getRootEntry(); - Entry root = document.getRootEntry(); + assertNotNull(root); - assertNotNull(root); + SortedSet children = root.getChildEntries(); - SortedSet children = root.getChildEntries(); - - // Should not be allowed, as it modifies the internal structure - children.remove(children.first()); + // Should not be allowed, as it modifies the internal structure + children.remove(children.first()); + } } @Test public void testReadThumbsCatalogFile() throws IOException { - CompoundDocument document = createTestDocument(); + try (CompoundDocument document = createTestDocument()) { + Entry root = document.getRootEntry(); - Entry root = document.getRootEntry(); + assertNotNull(root); + assertEquals(25, root.getChildEntries().size()); - assertNotNull(root); - assertEquals(25, root.getChildEntries().size()); + Entry catalog = root.getChildEntry("Catalog"); - Entry catalog = root.getChildEntry("Catalog"); - - assertNotNull(catalog); - assertNotNull("Input stream may not be null", catalog.getInputStream()); + assertNotNull(catalog); + assertNotNull("Input stream may not be null", catalog.getInputStream()); + } } @Test diff --git a/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_StreamTest.java b/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_StreamTest.java index be188623..6bdd984a 100644 --- a/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_StreamTest.java +++ b/common/common-io/src/test/java/com/twelvemonkeys/io/ole2/CompoundDocument_StreamTest.java @@ -33,12 +33,12 @@ package com.twelvemonkeys.io.ole2; import com.twelvemonkeys.io.InputStreamAbstractTest; import com.twelvemonkeys.io.LittleEndianDataOutputStream; import com.twelvemonkeys.io.MemoryCacheSeekableStream; -import com.twelvemonkeys.io.SeekableInputStream; import org.junit.Test; -import java.io.*; -import java.net.URISyntaxException; -import java.net.URL; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; import java.nio.charset.Charset; import java.util.Arrays; @@ -51,35 +51,7 @@ import static org.junit.Assert.*; * @author last modified by $Author: haraldk$ * @version $Id: CompoundDocument_StreamTestCase.java,v 1.0 13.10.11 12:01 haraldk Exp$ */ -//@Ignore("Need proper in-memory creation of CompoundDocuments") public class CompoundDocument_StreamTest extends InputStreamAbstractTest { - private static final String SAMPLE_DATA = "/Thumbs-camera.db"; - - protected final CompoundDocument createTestDocument() throws IOException { - URL input = getClass().getResource(SAMPLE_DATA); - - assertNotNull("Missing test resource!", input); - assertEquals("Test resource not a file:// resource", "file", input.getProtocol()); - - try { - return new CompoundDocument(new File(input.toURI())); - } - catch (URISyntaxException e) { - throw new AssertionError(e); - } - } - - private SeekableInputStream createRealInputStream() { - try { - Entry first = createTestDocument().getRootEntry().getChildEntries().first(); - assertNotNull(first); - return first.getInputStream(); - } - catch (IOException e) { - throw new AssertionError(e); - } - } - @Override protected InputStream makeInputStream(byte[] data) { try { @@ -182,15 +154,13 @@ public class CompoundDocument_StreamTest extends InputStreamAbstractTest { return pad; } -// @Ignore @Test - public void testDev() throws IOException { + public void testStreamRead() throws IOException { InputStream stream = makeInputStream(makeOrderedArray(32)); int read; int count = 0; while ((read = stream.read()) >= 0) { -// System.out.printf("read %02d: 0x%02x%n", count, read & 0xFF); assertEquals(count, read); count++; } From 24ec5ae34d4548460c055ac3f85a9ddd59f51e5a Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 8 Sep 2018 17:21:55 +0200 Subject: [PATCH 035/277] #408 Added servlet JAR to dependency example. --- README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3c5739fa..a9c7f776 100644 --- a/README.md +++ b/README.md @@ -480,12 +480,22 @@ To depend on the JPEG and TIFF plugin using Maven, add the following to your POM com.twelvemonkeys.imageio imageio-jpeg - 3.4 + 3.4 com.twelvemonkeys.imageio imageio-tiff - 3.4 + 3.4 + + + + + com.twelvemonkeys.servlet + servlet + 3.4 From ed2eb7642a47531ba252dc1591e90f59ceff4d97 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 8 Sep 2018 17:23:01 +0200 Subject: [PATCH 036/277] Updated versions from 3.4 to 3.4.1. --- README.md | 66 +++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index a9c7f776..40e31ba6 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Master branch build status: [![Build Status](https://travis-ci.org/haraldk/TwelveMonkeys.svg?branch=master)](https://travis-ci.org/haraldk/TwelveMonkeys) -Latest release is TwelveMonkeys ImageIO [3.4](https://search.maven.org/search?q=g:com.twelvemonkeys.imageio%20AND%20v:3.4) (Aug. 18th, 2018). +Latest release is TwelveMonkeys ImageIO [3.4.1](https://search.maven.org/search?q=g:com.twelvemonkeys.imageio%20AND%20v:3.4.1) (Aug. 18th, 2018). [Release notes](https://github.com/haraldk/TwelveMonkeys/releases/latest). ## About @@ -480,12 +480,12 @@ To depend on the JPEG and TIFF plugin using Maven, add the following to your POM com.twelvemonkeys.imageio imageio-jpeg - 3.4 + 3.4.1 com.twelvemonkeys.imageio imageio-tiff - 3.4 + 3.4.1 + + + + + + + + + + Bar Chart + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Shoe + Car + Travel + Computer + + 0 + 10 + 20 + 30 + 40 + 50 + 60 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/imageio/imageio-batik/src/test/resources/svg/style/test.css b/imageio/imageio-batik/src/test/resources/svg/style/test.css new file mode 100644 index 00000000..bf25007b --- /dev/null +++ b/imageio/imageio-batik/src/test/resources/svg/style/test.css @@ -0,0 +1,29 @@ +/* + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + */ + +.title { + font-family: Arial, Helvetica; + font-size: 16pt; + text-anchor: middle; +} +.legend { + font-family: Arial, Helvetica; + font-size: 10pt; + text-anchor: middle; +} From b86bad2bf9f01fdd19067f5b69254aa237f80ca2 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 11 Oct 2018 22:36:41 +0200 Subject: [PATCH 043/277] Equals method for DiscreteAlphaIndexColorModel, needed for Java 10. --- .../imageio/color/DiscreteAlphaIndexColorModel.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModel.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModel.java index a3ed6865..b7bdf420 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModel.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModel.java @@ -153,6 +153,12 @@ public final class DiscreteAlphaIndexColorModel extends ColorModel { (raster.getNumBands() == 2) && ((1 << size) >= icm.getMapSize())); } + @Override + public boolean equals(Object obj) { + return this == obj + || obj != null && getClass() == obj.getClass() && icm.equals(((DiscreteAlphaIndexColorModel) obj).icm); + } + public String toString() { return "DiscreteAlphaIndexColorModel: #pixelBits = " + pixel_bits + " numComponents = " + getNumComponents() From de34d4642e829e164c4ec8fd8420960f5141c6ec Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 26 Oct 2018 19:40:00 +0200 Subject: [PATCH 044/277] Various Java 9 and beyond fixes. --- .../imageio/plugins/tiff/CCITTFaxEncoderStreamTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStreamTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStreamTest.java index 8f8781ec..de302c20 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStreamTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxEncoderStreamTest.java @@ -128,7 +128,7 @@ public class CCITTFaxEncoderStreamTest { reader.setInput(iis, true); ByteArrayOutputStream outputBuffer = new ByteArrayOutputStream(); - ImageWriter writer = ImageIO.getImageWritersByFormatName("TIFF").next(); + ImageWriter writer = new TIFFImageWriter(new TIFFImageWriterSpi()); BufferedImage originalImage; try (ImageOutputStream output = ImageIO.createImageOutputStream(outputBuffer)) { From 7e0de147833a8d8c554eb7f4a7d42750528c379d Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 26 Oct 2018 19:43:58 +0200 Subject: [PATCH 045/277] Various Java 9 and beyond fixes: - ExtraSamplesColorModel now overrides getComponentSize for correct size - TIFFImageReader/WriterSpi now recognizes the JEP 262 TIFF plugin - CCITTFaxEncoderStreamTest now directly creates writer (not JDK one) --- .../plugins/tiff/ExtraSamplesColorModel.java | 22 ++++++++----------- .../plugins/tiff/TIFFImageReaderSpi.java | 19 ++++++++-------- .../plugins/tiff/TIFFImageWriterSpi.java | 20 +++++++++++++---- 3 files changed, 34 insertions(+), 27 deletions(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java index 1faa26a6..41b168e4 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/ExtraSamplesColorModel.java @@ -54,22 +54,13 @@ final class ExtraSamplesColorModel extends ComponentColorModel { // still thinks it has numComponents == cs.getNumComponents() + 1 for most operations private final int numComponents; + private final int componentSize; + ExtraSamplesColorModel(ColorSpace cs, boolean hasAlpha, boolean isAlphaPremultiplied, int dataType, int extraComponents) { - super(cs, bitsArrayHelper(cs, dataType, extraComponents + (hasAlpha ? 1 : 0)), hasAlpha, isAlphaPremultiplied, Transparency.TRANSLUCENT, dataType); + super(cs, hasAlpha, isAlphaPremultiplied, Transparency.TRANSLUCENT, dataType); Validate.isTrue(extraComponents > 0, "Extra components must be > 0"); this.numComponents = cs.getNumComponents() + (hasAlpha ? 1 : 0) + extraComponents; - } - - private static int[] bitsArrayHelper(ColorSpace cs, int dataType, int extraComponents) { - int numBits = getDataTypeSize(dataType); - int numComponents = cs.getNumComponents() + extraComponents; - int[] bits = new int[numComponents]; - - for (int i = 0; i < numComponents; i++) { - bits[i] = numBits; - } - - return bits; + this.componentSize = getDataTypeSize(dataType); } @Override @@ -77,6 +68,11 @@ final class ExtraSamplesColorModel extends ComponentColorModel { return numComponents; } + @Override + public int getComponentSize(int componentIdx) { + return componentSize; + } + @Override public boolean isCompatibleSampleModel(SampleModel sm) { if (!(sm instanceof ComponentSampleModel)) { diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderSpi.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderSpi.java index c6d9a15c..b28de5d7 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderSpi.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderSpi.java @@ -40,6 +40,8 @@ import java.io.IOException; import java.nio.ByteOrder; import java.util.Locale; +import static com.twelvemonkeys.imageio.util.IIOUtil.lookupProviderByName; + /** * TIFFImageReaderSpi * @@ -51,6 +53,7 @@ public final class TIFFImageReaderSpi extends ImageReaderSpiBase { /** * Creates a {@code TIFFImageReaderSpi}. */ + @SuppressWarnings("WeakerAccess") public TIFFImageReaderSpi() { super(new TIFFProviderInfo()); } @@ -58,17 +61,13 @@ public final class TIFFImageReaderSpi extends ImageReaderSpiBase { @SuppressWarnings("unchecked") @Override public void onRegistration(final ServiceRegistry registry, final Class category) { - // Make sure we're ordered before the Apple-provided TIFF reader on OS X - try { - Class providerClass = (Class) Class.forName("com.sun.imageio.plugins.tiff.TIFFImageReaderSpi"); - ImageReaderSpi appleSpi = registry.getServiceProviderByClass(providerClass); + // Make sure we're ordered before the new JEP 262 JRE bundled TIFF plugin + // or the Apple-provided TIFF plugin on OS X (which both happen to have the same class name)... + ImageReaderSpi sunSpi = lookupProviderByName(registry, "com.sun.imageio.plugins.tiff.TIFFImageReaderSpi", ImageReaderSpi.class); - if (appleSpi != null && appleSpi.getVendorName() != null && appleSpi.getVendorName().startsWith("Apple")) { - registry.setOrdering((Class) category, this, appleSpi); - } - } - catch (ClassNotFoundException ignore) { - // This is actually OK, now we don't have to do anything + if (sunSpi != null && sunSpi.getVendorName() != null + && (sunSpi.getVendorName().startsWith("Apple") || sunSpi.getVendorName().startsWith("Oracle"))) { + registry.setOrdering((Class) category, this, sunSpi); } } diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterSpi.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterSpi.java index a5db69b9..acf36dab 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterSpi.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterSpi.java @@ -33,10 +33,12 @@ package com.twelvemonkeys.imageio.plugins.tiff; import com.twelvemonkeys.imageio.spi.ImageWriterSpiBase; import javax.imageio.ImageTypeSpecifier; -import javax.imageio.ImageWriter; -import java.io.IOException; +import javax.imageio.spi.ImageWriterSpi; +import javax.imageio.spi.ServiceRegistry; import java.util.Locale; +import static com.twelvemonkeys.imageio.util.IIOUtil.lookupProviderByName; + /** * TIFFImageWriterSpi * @@ -51,15 +53,25 @@ public final class TIFFImageWriterSpi extends ImageWriterSpiBase { super(new TIFFProviderInfo()); } + @SuppressWarnings("unchecked") + @Override + public void onRegistration(final ServiceRegistry registry, final Class category) { + // Make sure we're ordered before the new JEP 262 JRE bundled TIFF plugin + ImageWriterSpi sunSpi = lookupProviderByName(registry, "com.sun.imageio.plugins.tiff.TIFFImageWriterSpi", ImageWriterSpi.class); + + if (sunSpi != null && sunSpi.getVendorName() != null && sunSpi.getVendorName().startsWith("Oracle")) { + registry.setOrdering((Class) category, this, sunSpi); + } + } + @Override public boolean canEncodeImage(final ImageTypeSpecifier type) { // TODO: Test bit depths compatibility - return true; } @Override - public ImageWriter createWriterInstance(final Object extension) throws IOException { + public TIFFImageWriter createWriterInstance(final Object extension) { return new TIFFImageWriter(this); } From a0955875d82dcbe44acfc7f70e280f73683f27e6 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 26 Oct 2018 20:34:57 +0200 Subject: [PATCH 046/277] Test case for #446. --- .../plugins/tiff/TIFFImageReaderTest.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java index 077cd3f2..224c2b73 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java @@ -610,6 +610,31 @@ public class TIFFImageReaderTest extends ImageReaderAbstractTest Date: Fri, 26 Oct 2018 22:13:25 +0200 Subject: [PATCH 047/277] Remnoved System.err.println --- .../com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java | 1 - 1 file changed, 1 deletion(-) diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java index 32ddb2fc..3773dad8 100644 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java @@ -582,7 +582,6 @@ abstract class DIBImageReader extends ImageReaderBase { // Read directory directory = Directory.read(type, imageCount, imageInput); - System.err.println("directory: " + directory); } final DirectoryEntry getEntry(final int pImageIndex) throws IOException { From 3e9be32279ccc6a8248d407ffebfde32355f5c74 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 26 Oct 2018 22:14:57 +0200 Subject: [PATCH 048/277] Better assertion failed messages. --- .../imageio/plugins/tiff/TIFFImageReaderTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java index 224c2b73..1b89a466 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java @@ -630,8 +630,8 @@ public class TIFFImageReaderTest extends ImageReaderAbstractTest Date: Fri, 26 Oct 2018 22:28:31 +0200 Subject: [PATCH 049/277] Fix test case for #446 in case of "Gerenic CMYK" profile not being available. --- .../imageio/plugins/tiff/TIFFImageReaderTest.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java index 1b89a466..ab540933 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java @@ -30,6 +30,7 @@ package com.twelvemonkeys.imageio.plugins.tiff; +import com.twelvemonkeys.imageio.color.ColorSpaces; import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import org.junit.Test; @@ -42,6 +43,7 @@ import javax.imageio.metadata.IIOMetadata; import javax.imageio.spi.ImageReaderSpi; import javax.imageio.stream.ImageInputStream; import java.awt.*; +import java.awt.color.ICC_ColorSpace; import java.awt.image.BufferedImage; import java.awt.image.Raster; import java.awt.image.WritableRaster; @@ -630,8 +632,15 @@ public class TIFFImageReaderTest extends ImageReaderAbstractTest Date: Thu, 22 Nov 2018 12:20:58 +0100 Subject: [PATCH 050/277] Fix for #455: Ignore profiles PhotometricInterpretation MinIsWhite with 1bit/pixel --- .../imageio/plugins/tiff/TIFFImageReader.java | 2 +- .../plugins/tiff/TIFFImageReaderTest.java | 14 ++++++++++++++ .../tiff/ccitt/min-is-white-with-profile.tif | Bin 0 -> 204676 bytes 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 imageio/imageio-tiff/src/test/resources/tiff/ccitt/min-is-white-with-profile.tif diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java index 75c589cb..f128ca90 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java @@ -468,7 +468,7 @@ public final class TIFFImageReader extends ImageReaderBase { // We need special case to preserve WhiteIsZero for CCITT 1 bit encodings // as some software will treat black/white runs as-is, regardless of photometric. // Special handling is also in the normalizeColor method - if (profile == null && significantSamples == 1 && bitsPerSample == 1) { + if (significantSamples == 1 && bitsPerSample == 1) { byte[] lut = new byte[] {-1, 0}; return ImageTypeSpecifier.createIndexed(lut, lut, lut, null, bitsPerSample, dataType); } diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java index 077cd3f2..28c1a64d 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java @@ -609,6 +609,20 @@ public class TIFFImageReaderTest extends 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ℜ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 ce{j Date: Tue, 8 Jan 2019 21:47:05 +0100 Subject: [PATCH 051/277] Updated commons-fileupload dependency to safe version, even if in scope provided, just in case. --- servlet/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servlet/pom.xml b/servlet/pom.xml index c4709a1d..61ff3353 100644 --- a/servlet/pom.xml +++ b/servlet/pom.xml @@ -67,7 +67,7 @@ commons-fileupload commons-fileupload - 1.2 + 1.3.3 provided From 51b0734462d047e6c3a56847daefd81f2aeb72dc Mon Sep 17 00:00:00 2001 From: Paul Verest Date: Mon, 28 Jan 2019 15:31:42 +0800 Subject: [PATCH 052/277] colorize code snippets in README using GFM ```java, ```xml --- README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d99c4a39..70917be9 100644 --- a/README.md +++ b/README.md @@ -268,6 +268,7 @@ The plugins are discovered automatically at run time. See the [FAQ](#faq) for mo If you need more control of read parameters and the reading process, the common idiom for reading is something like: +```java // Create input stream ImageInputStream input = ImageIO.createImageInputStream(file); @@ -312,6 +313,7 @@ If you need more control of read parameters and the reading process, the common // Close stream in finally block to avoid resource leaks input.close(); } +``` Query the reader for source image dimensions using `reader.getWidth(n)` and `reader.getHeight(n)` without reading the entire image into memory first. @@ -321,6 +323,7 @@ It's also possible to read multiple images from the same file in a loop, using ` If you need more control of write parameters and the writing process, the common idiom for writing is something like: +```java // Get the writer Iterator writers = ImageIO.getImageWritersByFormatName(format); @@ -356,6 +359,7 @@ If you need more control of write parameters and the writing process, the common // Dispose writer in finally block to avoid memory leaks writer.dispose(); } +``` For more advanced usage, and information on how to use the ImageIO API, I suggest you read the [Java Image I/O API Guide](http://docs.oracle.com/javase/7/docs/technotes/guides/imageio/spec/imageio_guideTOC.fm.html) @@ -379,6 +383,7 @@ To work around both the discovery problem and the resource leak, it is *strongly recommended* to use the `IIOProviderContextListener` that implements dynamic loading and unloading of ImageIO plugins for web applications. +```xml ... @@ -391,6 +396,7 @@ dynamic loading and unloading of ImageIO plugins for web applications. ... +``` Loading plugins from `WEB-INF/lib` without the context listener installed is unsupported and will not work correctly. @@ -404,6 +410,7 @@ Another safe option, is to place the JAR files in the application server's share The library comes with a resampling (image resizing) operation, that contains many different algorithms to provide excellent results at reasonable speed. +```java import com.twelvemonkeys.image.ResampleOp; ... @@ -413,13 +420,14 @@ to provide excellent results at reasonable speed. BufferedImageOp resampler = new ResampleOp(width, height, ResampleOp.FILTER_LANCZOS); // A good default filter, see class documentation for more info BufferedImage output = resampler.filter(input, null); - +``` #### Using the DiffusionDither The library comes with a dithering operation, that can be used to convert `BufferedImage`s to `IndexColorModel` using Floyd-Steinberg error-diffusion dither. +```java import com.twelvemonkeys.image.DiffusionDither; ... @@ -428,7 +436,7 @@ Floyd-Steinberg error-diffusion dither. BufferedImageOp ditherer = new DiffusionDither(); BufferedImage output = ditherer.filter(input, null); - +``` ## Building @@ -464,10 +472,12 @@ The ImageIO registry and service lookup mechanism will make sure the plugins are To verify that the JPEG plugin is installed and used at run-time, you could use the following code: +```java Iterator readers = ImageIO.getImageReadersByFormatName("JPEG"); while (readers.hasNext()) { System.out.println("reader: " + readers.next()); } +``` The first line should print: @@ -477,6 +487,7 @@ The first line should print: To depend on the JPEG and TIFF plugin using Maven, add the following to your POM: +```xml ... ... @@ -501,6 +512,7 @@ To depend on the JPEG and TIFF plugin using Maven, add the following to your POM 3.4.1 +``` #### Manual dependency example From 3e4b14f984729d709d96cc2d020b38c3b77c15a8 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Tue, 12 Feb 2019 20:34:31 +0100 Subject: [PATCH 053/277] #473: Fix for ColorMap (Indexed) TIFF with non-alpha ExtraSamples. --- .../color/DiscreteAlphaIndexColorModel.java | 55 ++++++-- .../imageio/util/ImageTypeSpecifiers.java | 7 +- .../imageio/plugins/tiff/TIFFImageReader.java | 127 ++++++++++++++---- .../plugins/tiff/TIFFImageReaderTest.java | 25 ++-- .../tiff/indexed-unspecified-extrasamples.tif | Bin 0 -> 26750 bytes 5 files changed, 165 insertions(+), 49 deletions(-) create mode 100644 imageio/imageio-tiff/src/test/resources/tiff/indexed-unspecified-extrasamples.tif diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModel.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModel.java index b7bdf420..0f5eb4e4 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModel.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/color/DiscreteAlphaIndexColorModel.java @@ -37,20 +37,26 @@ import static com.twelvemonkeys.lang.Validate.notNull; /** * This class represents a hybrid between an {@link IndexColorModel} and a {@link ComponentColorModel}, - * having both a color map and a full, discrete alpha channel. + * having both a color map and a full, discrete alpha channel and/or one or more "extra" channels. * The color map entries are assumed to be fully opaque and should have no transparent index. *

    * ColorSpace will always be the default sRGB color space (as with {@code IndexColorModel}). *

    - * Component order is always P, A, where P is a palette index, and A is the alpha value. + * Component order is always I, A, X1, X2... Xn, + * where I is a palette index, A is the alpha value and Xn are extra samples (ignored for display). * * @see IndexColorModel * @see ComponentColorModel */ +// TODO: ExtraSamplesIndexColorModel might be a better name? +// TODO: Allow specifying which channel is the transparency mask? public final class DiscreteAlphaIndexColorModel extends ColorModel { // Our IndexColorModel delegate private final IndexColorModel icm; + private final int samples; + private final boolean hasAlpha; + /** * Creates a {@code DiscreteAlphaIndexColorModel}, delegating color map look-ups * to the given {@code IndexColorModel}. @@ -59,13 +65,34 @@ public final class DiscreteAlphaIndexColorModel extends ColorModel { * fully opaque, any transparency or transparent index will be ignored. */ public DiscreteAlphaIndexColorModel(final IndexColorModel icm) { + this(icm, 1, true); + } + + /** + * Creates a {@code DiscreteAlphaIndexColorModel}, delegating color map look-ups + * to the given {@code IndexColorModel}. + * + * @param icm The {@code IndexColorModel} delegate. Color map entries are assumed to be + * fully opaque, any transparency or transparent index will be ignored. + * @param extraSamples the number of extra samples in the color model. + * @param hasAlpha {@code true} if the extra samples contains alpha, otherwise {@code false}. + */ + public DiscreteAlphaIndexColorModel(final IndexColorModel icm, int extraSamples, boolean hasAlpha) { super( - notNull(icm, "IndexColorModel").getPixelSize() * 2, + notNull(icm, "IndexColorModel").getPixelSize() * (1 + extraSamples), new int[] {icm.getPixelSize(), icm.getPixelSize(), icm.getPixelSize(), icm.getPixelSize()}, - icm.getColorSpace(), true, false, Transparency.TRANSLUCENT, icm.getTransferType() + icm.getColorSpace(), hasAlpha, false, hasAlpha ? Transparency.TRANSLUCENT : Transparency.OPAQUE, + icm.getTransferType() ); this.icm = icm; + this.samples = 1 + extraSamples; + this.hasAlpha = hasAlpha; + } + + @Override + public int getNumComponents() { + return samples; } @Override @@ -85,7 +112,7 @@ public final class DiscreteAlphaIndexColorModel extends ColorModel { @Override public final int getAlpha(final int pixel) { - return (int) ((((float) pixel) / ((1 << getComponentSize(3))-1)) * 255.0f + 0.5f); + return hasAlpha ? (int) ((((float) pixel) / ((1 << getComponentSize(3))-1)) * 255.0f + 0.5f) : 0xff; } private int getSample(final Object inData, final int index) { @@ -128,17 +155,27 @@ public final class DiscreteAlphaIndexColorModel extends ColorModel { @Override public final int getAlpha(final Object inData) { - return getAlpha(getSample(inData, 1)); + return hasAlpha ? getAlpha(getSample(inData, 1)) : 0xff; } @Override public final SampleModel createCompatibleSampleModel(final int w, final int h) { - return new PixelInterleavedSampleModel(transferType, w, h, 2, w * 2, new int[] {0, 1}); + return new PixelInterleavedSampleModel(transferType, w, h, samples, w * samples, createOffsets(samples)); + } + + private int[] createOffsets(int samples) { + int[] offsets = new int[samples]; + + for (int i = 0; i < samples; i++) { + offsets[i] = i; + } + + return offsets; } @Override public final boolean isCompatibleSampleModel(final SampleModel sm) { - return sm instanceof PixelInterleavedSampleModel && sm.getNumBands() == 2; + return sm instanceof PixelInterleavedSampleModel && sm.getNumBands() == samples; } @Override @@ -150,7 +187,7 @@ public final class DiscreteAlphaIndexColorModel extends ColorModel { public final boolean isCompatibleRaster(final Raster raster) { int size = raster.getSampleModel().getSampleSize(0); return ((raster.getTransferType() == transferType) && - (raster.getNumBands() == 2) && ((1 << size) >= icm.getMapSize())); + (raster.getNumBands() == samples) && ((1 << size) >= icm.getMapSize())); } @Override diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiers.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiers.java index 0f3f6259..aaaa618c 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiers.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiers.java @@ -44,7 +44,7 @@ import static com.twelvemonkeys.lang.Validate.notNull; * Fixes some subtle bugs in {@code ImageTypeSpecifier}'s factory methods, but * in most cases, this class will delegate to the corresponding methods in {@link ImageTypeSpecifier}. * - * @see javax.imageio.ImageTypeSpecifier + * @see ImageTypeSpecifier * @author Harald Kuhr * @author last modified by $Author: haraldk$ * @version $Id: ImageTypeSpecifiers.java,v 1.0 24.01.11 17.51 haraldk Exp$ @@ -186,4 +186,9 @@ public final class ImageTypeSpecifiers { ColorModel colorModel = new DiscreteAlphaIndexColorModel(pColorModel); return new ImageTypeSpecifier(colorModel, colorModel.createCompatibleSampleModel(1, 1)); } + + public static ImageTypeSpecifier createDiscreteExtraSamplesIndexedFromIndexColorModel(final IndexColorModel pColorModel, int extraSamples, boolean hasAlpha) { + ColorModel colorModel = new DiscreteAlphaIndexColorModel(pColorModel, extraSamples, hasAlpha); + return new ImageTypeSpecifier(colorModel, colorModel.createCompatibleSampleModel(1, 1)); + } } diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java index da664ce5..59466d61 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java @@ -55,11 +55,14 @@ import com.twelvemonkeys.io.LittleEndianDataInputStream; import com.twelvemonkeys.io.enc.DecoderStream; import com.twelvemonkeys.io.enc.PackBitsDecoder; import com.twelvemonkeys.lang.StringUtil; +import com.twelvemonkeys.xml.XMLSerializer; +import org.w3c.dom.Node; import org.w3c.dom.NodeList; import javax.imageio.*; import javax.imageio.event.IIOReadWarningListener; import javax.imageio.metadata.IIOMetadata; +import javax.imageio.metadata.IIOMetadataFormatImpl; import javax.imageio.metadata.IIOMetadataNode; import javax.imageio.plugins.jpeg.JPEGImageReadParam; import javax.imageio.spi.IIORegistry; @@ -71,6 +74,7 @@ import java.awt.color.ColorSpace; import java.awt.color.ICC_Profile; import java.awt.image.*; import java.io.*; +import java.lang.reflect.Method; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.charset.StandardCharsets; @@ -80,6 +84,7 @@ import java.util.zip.InflaterInputStream; import static com.twelvemonkeys.imageio.util.IIOUtil.createStreamAdapter; import static com.twelvemonkeys.imageio.util.IIOUtil.lookupProviderByName; +import static java.util.Arrays.asList; /** * ImageReader implementation for Aldus/Adobe Tagged Image File Format (TIFF). @@ -111,7 +116,8 @@ import static com.twelvemonkeys.imageio.util.IIOUtil.lookupProviderByName; * * * @see Adobe TIFF developer resources - * @see Wikipedia + * @see TIFF 6.0 specification + * @see Wikipedia TIFF * @see AWare Systems TIFF pages * * @author Harald Kuhr @@ -122,10 +128,6 @@ public final class TIFFImageReader extends ImageReaderBase { // TODOs ImageIO basic functionality: // TODO: Thumbnail support (what is a TIFF thumbnail anyway? Photoshop way? Or use subfiletype?) - // TODOs Full BaseLine support: - // TODO: Support ExtraSamples (an array, if multiple extra samples!) - // (0: Unspecified (not alpha), 1: Associated Alpha (pre-multiplied), 2: Unassociated Alpha (non-multiplied) - // TODOs ImageIO advanced functionality: // TODO: Tiling support (readTile, readTileRaster) // TODO: Implement readAsRenderedImage to allow tiled RenderedImage? @@ -148,6 +150,8 @@ public final class TIFFImageReader extends ImageReaderBase { // Support ICCProfile // Support PlanarConfiguration 2 // Support Compression 3 & 4 (CCITT T.4 & T.6) + // Support ExtraSamples (an array, if multiple extra samples!) + // (0: Unspecified (not alpha), 1: Associated Alpha (pre-multiplied), 2: Unassociated Alpha (non-multiplied) final static boolean DEBUG = "true".equalsIgnoreCase(System.getProperty("com.twelvemonkeys.imageio.plugins.tiff.debug")); @@ -469,6 +473,10 @@ public final class TIFFImageReader extends ImageReaderBase { // as some software will treat black/white runs as-is, regardless of photometric. // Special handling is also in the normalizeColor method if (significantSamples == 1 && bitsPerSample == 1) { + if (profile != null) { + processWarningOccurred("Ignoring embedded ICC color profile for Bi-level/Gray TIFF"); + } + byte[] lut = new byte[] {-1, 0}; return ImageTypeSpecifier.createIndexed(lut, lut, lut, null, bitsPerSample, dataType); } @@ -591,8 +599,8 @@ public final class TIFFImageReader extends ImageReaderBase { IndexColorModel icm = createIndexColorModel(bitsPerSample, dataType, (int[]) colorMap.getValue()); - if (hasAlpha) { - return ImageTypeSpecifiers.createDiscreteAlphaIndexedFromIndexColorModel(icm); + if (extraSamples != null) { + return ImageTypeSpecifiers.createDiscreteExtraSamplesIndexedFromIndexColorModel(icm, extraSamples.length, hasAlpha); } return ImageTypeSpecifiers.createFromIndexColorModel(icm); @@ -921,6 +929,10 @@ public final class TIFFImageReader extends ImageReaderBase { if (stripTileByteCounts == null) { processWarningOccurred("Missing TileByteCounts for tiled TIFF with compression: " + compression); } + else if (stripTileByteCounts.length == 0 || containsZero(stripTileByteCounts)) { + stripTileByteCounts = null; + processWarningOccurred("Ignoring all-zero TileByteCounts for tiled TIFF with compression: " + compression); + } stripTileWidth = getValueAsInt(TIFF.TAG_TILE_WIDTH, "TileWidth"); stripTileHeight = getValueAsInt(TIFF.TAG_TILE_HEIGTH, "TileHeight"); @@ -931,6 +943,10 @@ public final class TIFFImageReader extends ImageReaderBase { if (stripTileByteCounts == null) { processWarningOccurred("Missing StripByteCounts for TIFF with compression: " + compression); } + else if (stripTileByteCounts.length == 0 || containsZero(stripTileByteCounts)) { + stripTileByteCounts = null; + processWarningOccurred("Ignoring all-zero StripByteCounts for TIFF with compression: " + compression); + } // NOTE: This is really against the spec, but libTiff seems to handle it. TIFF 6.0 says: // "Do not use both strip- oriented and tile-oriented fields in the same TIFF file". @@ -1309,13 +1325,11 @@ public final class TIFFImageReader extends ImageReaderBase { int len = stripTileByteCounts != null ? (int) stripTileByteCounts[i] : Integer.MAX_VALUE; imageInput.seek(stripTileOffsets != null ? stripTileOffsets[i] : realJPEGOffset); - try (ImageInputStream stream = ImageIO.createImageInputStream(new SequenceInputStream(Collections.enumeration( - Arrays.asList( - new ByteArrayInputStream(jpegHeader), - createStreamAdapter(imageInput, len), - new ByteArrayInputStream(new byte[] {(byte) 0xff, (byte) 0xd9}) // EOI - ) - )))) { + try (ImageInputStream stream = ImageIO.createImageInputStream(new SequenceInputStream(Collections.enumeration(asList( + new ByteArrayInputStream(jpegHeader), + createStreamAdapter(imageInput, len), + new ByteArrayInputStream(new byte[]{(byte) 0xff, (byte) 0xd9}) // EOI + ))))) { jpegReader.setInput(stream); jpegParam.setSourceRegion(new Rectangle(0, 0, colsInTile, rowsInTile)); jpegParam.setSourceSubsampling(xSub, ySub, 0, 0); @@ -1460,7 +1474,7 @@ public final class TIFFImageReader extends ImageReaderBase { } try (ImageInputStream stream = ImageIO.createImageInputStream(new SequenceInputStream(Collections.enumeration( - Arrays.asList( + asList( createJFIFStream(destRaster.getNumBands(), stripTileWidth, stripTileHeight, qTables, dcTables, acTables, subsampling), createStreamAdapter(imageInput, length), new ByteArrayInputStream(new byte[] {(byte) 0xff, (byte) 0xd9}) // EOI @@ -1538,6 +1552,16 @@ public final class TIFFImageReader extends ImageReaderBase { return destination; } + private boolean containsZero(long[] byteCounts) { + for (long byteCount : byteCounts) { + if (byteCount <= 0) { + return true; + } + } + + return false; + } + private IIOMetadata readJPEGMetadataSafe(final ImageReader jpegReader) throws IOException { try { return jpegReader.getImageMetadata(0); @@ -2026,7 +2050,7 @@ public final class TIFFImageReader extends ImageReaderBase { } } - private void normalizeColor(int photometricInterpretation, byte[] data) throws IIOException { + private void normalizeColor(int photometricInterpretation, byte[] data) throws IOException { switch (photometricInterpretation) { case TIFFBaseline.PHOTOMETRIC_WHITE_IS_ZERO: // NOTE: Preserve WhiteIsZero for 1 bit monochrome, for CCITT compatibility @@ -2543,6 +2567,13 @@ public final class TIFFImageReader extends ImageReaderBase { try { ImageReadParam param = reader.getDefaultReadParam(); + + if (param.getClass().getName().equals("com.twelvemonkeys.imageio.plugins.svg.SVGReadParam")) { + Method setBaseURI = param.getClass().getMethod("setBaseURI", String.class); + String uri = file.getAbsoluteFile().toURI().toString(); + setBaseURI.invoke(param, uri); + } + int numImages = reader.getNumImages(true); for (int imageNo = 0; imageNo < numImages; imageNo++) { // if (args.length > 1) { @@ -2557,6 +2588,7 @@ public final class TIFFImageReader extends ImageReaderBase { // int height = reader.getHeight(imageNo); // param.setSourceRegion(new Rectangle(width / 4, height / 4, width / 2, height / 2)); // param.setSourceRegion(new Rectangle(100, 300, 400, 400)); +// param.setSourceRegion(new Rectangle(95, 105, 100, 100)); // param.setSourceRegion(new Rectangle(3, 3, 9, 9)); // param.setDestinationOffset(new Point(50, 150)); // param.setSourceSubsampling(2, 2, 0, 0); @@ -2564,16 +2596,18 @@ public final class TIFFImageReader extends ImageReaderBase { BufferedImage image = reader.read(imageNo, param); System.err.println("Read time: " + (System.currentTimeMillis() - start) + " ms"); -// IIOMetadata metadata = reader.getImageMetadata(imageNo); -// if (metadata != null) { -// if (metadata.getNativeMetadataFormatName() != null) { -// new XMLSerializer(System.out, "UTF-8").serialize(metadata.getAsTree(metadata.getNativeMetadataFormatName()), false); -// } -// /*else*/ -// if (metadata.isStandardMetadataFormatSupported()) { -// new XMLSerializer(System.out, "UTF-8").serialize(metadata.getAsTree(IIOMetadataFormatImpl.standardMetadataFormatName), false); -// } -// } + IIOMetadata metadata = reader.getImageMetadata(imageNo); + if (metadata != null) { + if (metadata.getNativeMetadataFormatName() != null) { + Node tree = metadata.getAsTree(metadata.getNativeMetadataFormatName()); + replaceBytesWithUndefined((IIOMetadataNode) tree); + new XMLSerializer(System.out, "UTF-8").serialize(tree, false); + } + /*else*/ + if (metadata.isStandardMetadataFormatSupported()) { + new XMLSerializer(System.out, "UTF-8").serialize(metadata.getAsTree(IIOMetadataFormatImpl.standardMetadataFormatName), false); + } + } System.err.println("image: " + image); @@ -2659,6 +2693,47 @@ public final class TIFFImageReader extends ImageReaderBase { } } + // XMP Spec says "The field type should be UNDEFINED (7) or BYTE (1)" + // Adobe Photoshop® TIFF Technical Notes says (for Image Source Data): "Type: UNDEFINED" + private static final Set BYTE_TO_UNDEFINED_NODES = new HashSet<>(asList( + "700", // XMP + "34377", // Photoshop Image Resources + "37724" // Image Source Data + )); + + private static void replaceBytesWithUndefined(IIOMetadataNode tree) { + // The output of the TIFFUndefined tag is just much more readable (or easier to skip) + + NodeList nodes = tree.getElementsByTagName("TIFFBytes"); + for (int i = 0; i < nodes.getLength(); i++) { + IIOMetadataNode node = (IIOMetadataNode) nodes.item(i); + + IIOMetadataNode parentNode = (IIOMetadataNode) node.getParentNode(); + + NodeList childNodes = node.getChildNodes(); + if (BYTE_TO_UNDEFINED_NODES.contains(parentNode.getAttribute("number")) && childNodes.getLength() > 16) { + IIOMetadataNode undefined = new IIOMetadataNode("TIFFUndefined"); + StringBuilder values = new StringBuilder(); + + IIOMetadataNode child = (IIOMetadataNode) node.getFirstChild(); + while (child != null) { + if (values.length() > 0) { + values.append(", "); + } + + String value = child.getAttribute("value"); + values.append(value); + + child = (IIOMetadataNode) child.getNextSibling(); + } + + undefined.setAttribute("value", values.toString()); + + parentNode.replaceChild(undefined, node); + } + } + } + protected static void showIt(BufferedImage image, String title) { ImageReaderBase.showIt(image, title); } diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java index 0ce685b0..89ad7e50 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java @@ -43,10 +43,8 @@ import javax.imageio.metadata.IIOMetadata; import javax.imageio.spi.ImageReaderSpi; import javax.imageio.stream.ImageInputStream; import java.awt.*; -import java.awt.color.ICC_ColorSpace; -import java.awt.image.BufferedImage; -import java.awt.image.Raster; -import java.awt.image.WritableRaster; +import java.awt.color.ColorSpace; +import java.awt.image.*; import java.io.IOException; import java.nio.ByteOrder; import java.util.Arrays; @@ -108,6 +106,7 @@ public class TIFFImageReaderTest extends ImageReaderAbstractTestkKe8D*hpKAhkp%P{grJX`PWy zr!&xYkQM59fe-}Rkfcf8_T0O>@9n*NH!mUk z(mb* z+DvO{8O@}^lpZRfEt+KN${lpMWzl5@Z4FY}8rD`xm!`BucSgnZPqMoy$7vyv(;k)4 z;ZVtDx{4XDOrx!x{z&7av);8U9fM6B^iu*M9RY*z)=BzCv=nLMAX+_3H$=!_(>ru= zloSSrChiYiTAx{Q-VDujggP~CHciej!{dbXkk;y+5QevCgIiY9NaJ`|$+Ztso2GAG zrWv@^ayq57x<7#crvT5(8yS3x;u8cJO8hL(kUf{-2iw!7{xakmQ8H8v=$!B8oHKfb?`uNx z)*JaQDzzGlv;N8XdKQPXbTnChXJmMurqd2eXbcOT6(^e4KIYzj@75U^{1U12+oQ4G z(ei&`I6OBd2CrB=P} zTYOz%KwC=Y9-2lK(MBLzU&PvC55yjbJrH{!_CV}`!R`Uf!vZc5=Ue^bRUC$s@d>QO zKVu`8I(!b7;PqJGZyj@SI^O9kx8QZMOu#F!3@=h-^YJ#Hr2ncrai-AAo>H}`GWjf# z$CCb9w*_wN4qyFEqFuJ_UVIb(i?&u;aW7V4o@W~l$A4)O&K2$0gdei(QXG|(y^L#g zectaUk@q!mJRS>`u#xwlu@svXiMft;oQ+++`UaLPz^4uNd+oL1v&i@H;s|B%WE1!{ zPI6^4!LS=IkalPci1>_;$+O1)-iaG=NRJrARr_#+l+6S~2Tn9HOjP1xV*=l2J31Av z7QDH~3|&~2F$No-M7}@O`x1U%vDU^DSj4^SU9I+KAq<B#v`S zh3K0GhV@B_abk8iFxdDVuGh!IR;7I#9flXQ+PAx57|XHqN8%vzQ#1w!-evY51_l}J zl#G#~5r+gA8kF|K7>)|fhIvWEL1*}zoc)7wh=!qqS1mmbeP!jn83`$xk$l)FrZ@o)}Lxn--+ZeVClO8h~rX2$U#+Nw{-fP_;5MLrK@ zVDMXS<5@hwKFXCA2K!P<_D>-UDTz9vC6u8<@tUD8;l+xCqc?0!r&_hK9d~jT$FpX} z8T_rS^mBdhQ6>0suP+&LKDMAQamXaY7(5e*L<8!%_hH$WmTQu|=}Tb@+xcF@D>K+n!Fg#{ z^6xb`l_m6CV;I-Hq**4$!+fo-mG=j3!1uJ;C>Wf`JFnY~41S5MAW5iUPX} zt$11^=zeb1$8=a6{1%=+LqT9~rGaVZYWHFOw!HHJ69=|;o#tV|fShHkcVfcwHe7`* zN$G*aFj?D4Vg_+=-u_$sBx!L6zJv2HpLdr2?v_`jR59QGdo|Ac0={-MzOK~P;ZUv} zg|8^J>UB@EL; zak2wstzM1u&bx=4tE;t_%Ka0<5>3{BrP!Uw(XR9VeWdh*-X8DENV|#@&Ab}LN9=*v z1F;8U55yjbJrH{!_CW7F0Qs;D_6EuxsD)?YM{qm1-j-d8IA()jGfOB!jQ}Jp?{ue zf(cp25R60iF_gfkN*q20x&M*TF&$-JIs~g>4;#=pUuiBgTLLcM99zu`(aUPzQ{@j;hRo44E!mAII@P}Q|_0a`9_1_IO61| zS;O#q$bm6zwZDHR;D;HH!)aK?K5~kZ@yjmI&5L17i*-65b}I}v)MlI^%DGiA=P=0&Bcyy?F29oLD{u*v|~d;TPb3BAKo)NzO7@2Q9{Ed#ISgmD-G_d%7h%!e6pGmHh_w{74mqoi}a+%<6RD~7qS5gK_cd@M@?JO!0r1YDWx zy3tkTdCigaUVmL?S>h+J)UvMTXG-hGTGmYdra&?Oi_IL1A3k>uHd&lM$Uoqoi+@;v zK$iH>IFAeePbn!Q Date: Tue, 12 Feb 2019 20:40:08 +0100 Subject: [PATCH 054/277] #475: Fix support for writing TIFF > 2 GB --- .../imageio/plugins/tiff/TIFFImageWriter.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java index 08039f8d..d5f71b39 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java @@ -317,8 +317,8 @@ public final class TIFFImageWriter extends ImageWriterBase { long stripOffset = streamPosition + 4 + ifdSize + 4; long stripByteCount = (renderedImage.getWidth() * renderedImage.getHeight() * pixelSize + 7) / 8; - entries.put(TIFF.TAG_STRIP_OFFSETS, new TIFFEntry(TIFF.TAG_STRIP_OFFSETS, stripOffset)); - entries.put(TIFF.TAG_STRIP_BYTE_COUNTS, new TIFFEntry(TIFF.TAG_STRIP_BYTE_COUNTS, stripByteCount)); + entries.put(TIFF.TAG_STRIP_OFFSETS, new TIFFEntry(TIFF.TAG_STRIP_OFFSETS, TIFF.TYPE_LONG, stripOffset)); + entries.put(TIFF.TAG_STRIP_BYTE_COUNTS, new TIFFEntry(TIFF.TAG_STRIP_BYTE_COUNTS, TIFF.TYPE_LONG, stripByteCount)); long ifdPointer = tiffWriter.writeIFD(entries.values(), imageOutput); // NOTE: Writer takes case of ordering tags nextIFDPointerOffset = imageOutput.getStreamPosition(); @@ -369,8 +369,8 @@ public final class TIFFImageWriter extends ImageWriterBase { // Update IFD0-pointer, and write IFD if (compression != TIFFBaseline.COMPRESSION_NONE) { - entries.put(TIFF.TAG_STRIP_OFFSETS, new TIFFEntry(TIFF.TAG_STRIP_OFFSETS, stripOffset)); - entries.put(TIFF.TAG_STRIP_BYTE_COUNTS, new TIFFEntry(TIFF.TAG_STRIP_BYTE_COUNTS, stripByteCount)); + entries.put(TIFF.TAG_STRIP_OFFSETS, new TIFFEntry(TIFF.TAG_STRIP_OFFSETS, TIFF.TYPE_LONG, stripOffset)); + entries.put(TIFF.TAG_STRIP_BYTE_COUNTS, new TIFFEntry(TIFF.TAG_STRIP_BYTE_COUNTS, TIFF.TYPE_LONG, stripByteCount)); long ifdPointer = tiffWriter.writeIFD(entries.values(), imageOutput); // NOTE: Writer takes case of ordering tags From caef9b6a9e95bff7d11085d94a7da99dd7aa5cee Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Tue, 12 Feb 2019 20:44:34 +0100 Subject: [PATCH 055/277] XMLSerializer speedup. --- .../java/com/twelvemonkeys/xml/XMLSerializer.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) mode change 100755 => 100644 common/common-io/src/main/java/com/twelvemonkeys/xml/XMLSerializer.java diff --git a/common/common-io/src/main/java/com/twelvemonkeys/xml/XMLSerializer.java b/common/common-io/src/main/java/com/twelvemonkeys/xml/XMLSerializer.java old mode 100755 new mode 100644 index 67f124be..50ef4673 --- a/common/common-io/src/main/java/com/twelvemonkeys/xml/XMLSerializer.java +++ b/common/common-io/src/main/java/com/twelvemonkeys/xml/XMLSerializer.java @@ -389,9 +389,10 @@ public class XMLSerializer { private void writeDocument(final PrintWriter pOut, final Node pNode, final SerializationContext pContext) { // Document fragments might not have child nodes... if (pNode.hasChildNodes()) { - NodeList nodes = pNode.getChildNodes(); - for (int i = 0; i < nodes.getLength(); i++) { - writeNodeRecursive(pOut, nodes.item(i), pContext); + Node child = pNode.getFirstChild(); + while (child != null) { + writeNodeRecursive(pOut, child, pContext); + child = child.getNextSibling(); } } } @@ -448,9 +449,10 @@ public class XMLSerializer { pOut.println(); } - NodeList children = pNode.getChildNodes(); - for (int i = 0; i < children.getLength(); i++) { - writeNodeRecursive(pOut, children.item(i), pContext.push()); + Node child = pNode.getFirstChild(); + while (child != null) { + writeNodeRecursive(pOut, child, pContext.push()); + child = child.getNextSibling(); } if (!pContext.preserveSpace) { From d7fbd6594e073ca41476d9513a163aa7c43ef549 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 7 Aug 2019 15:47:33 +0200 Subject: [PATCH 056/277] JPEG Exif parsing optimization. --- .../imageio/plugins/jpeg/JPEGImageReader.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java index 8d0b0f20..3dd5b2f2 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java @@ -42,6 +42,7 @@ import com.twelvemonkeys.imageio.metadata.jpeg.JPEGSegmentUtil; import com.twelvemonkeys.imageio.metadata.tiff.TIFF; import com.twelvemonkeys.imageio.metadata.tiff.TIFFReader; import com.twelvemonkeys.imageio.stream.BufferedImageInputStream; +import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStream; import com.twelvemonkeys.imageio.stream.SubImageInputStream; import com.twelvemonkeys.imageio.util.ImageTypeSpecifiers; import com.twelvemonkeys.imageio.util.ProgressListenerBase; @@ -63,8 +64,8 @@ import java.awt.color.ICC_ColorSpace; import java.awt.color.ICC_Profile; import java.awt.image.*; import java.io.*; -import java.util.*; import java.util.List; +import java.util.*; /** * A JPEG {@code ImageReader} implementation based on the JRE {@code JPEGImageReader}, @@ -1120,14 +1121,15 @@ public final class JPEGImageReader extends ImageReaderBase { List exifSegments = getAppSegments(JPEG.APP1, "Exif"); if (!exifSegments.isEmpty()) { Application exif = exifSegments.get(0); - InputStream data = exif.data(); - if (data.read() == -1) { - // Pad + // Identifier is "Exif\0" + 1 byte pad + int offset = exif.identifier.length() + 2; + + if (exif.data.length <= offset) { processWarningOccurred("Exif chunk has no data."); } else { - ImageInputStream stream = new MemoryCacheImageInputStream(data); + ImageInputStream stream = new ByteArrayImageInputStream(exif.data, offset, exif.data.length - offset); CompoundDirectory exifMetadata = (CompoundDirectory) new TIFFReader().read(stream); if (exifMetadata.directoryCount() == 2) { From e8d1b999a290071b4df1aad77099cc4b8ee40572 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Wed, 7 Aug 2019 15:55:24 +0200 Subject: [PATCH 057/277] #469 Fix for OOME while reading Exif with corrupted IFDs/counts --- .../imageio/metadata/tiff/TIFFReader.java | 182 ++++++++++-------- .../imageio/metadata/tiff/TIFFReaderTest.java | 22 +++ .../resources/jpeg/exif-oome-bogus-count.jpg | Bin 0 -> 2009722 bytes .../resources/jpeg/exif-with-nested-exif.jpg | Bin 0 -> 991776 bytes 4 files changed, 120 insertions(+), 84 deletions(-) create mode 100644 imageio/imageio-metadata/src/test/resources/jpeg/exif-oome-bogus-count.jpg create mode 100644 imageio/imageio-metadata/src/test/resources/jpeg/exif-with-nested-exif.jpg diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReader.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReader.java index b4c505b1..687d774f 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReader.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReader.java @@ -43,7 +43,7 @@ import java.io.EOFException; import java.io.File; import java.io.IOException; import java.nio.ByteOrder; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.*; import static com.twelvemonkeys.imageio.metadata.tiff.TIFFEntry.getValueLength; @@ -57,9 +57,28 @@ import static com.twelvemonkeys.imageio.metadata.tiff.TIFFEntry.getValueLength; */ public final class TIFFReader extends MetadataReader { - final static boolean DEBUG = "true".equalsIgnoreCase(System.getProperty("com.twelvemonkeys.imageio.metadata.exif.debug")); + final static boolean DEBUG = "true".equalsIgnoreCase(System.getProperty("com.twelvemonkeys.imageio.metadata.tiff.debug")); - static final Collection KNOWN_IFDS = Collections.unmodifiableCollection(Arrays.asList(TIFF.TAG_EXIF_IFD, TIFF.TAG_GPS_IFD, TIFF.TAG_INTEROP_IFD, TIFF.TAG_SUB_IFD)); + // TODO: Consider leaving to client code what sub-IFDs to parse (but always parse TAG_SUB_IFD). + private static final Collection VALID_TOP_LEVEL_IFDS = Collections.unmodifiableCollection(Arrays.asList(TIFF.TAG_SUB_IFD, TIFF.TAG_EXIF_IFD, TIFF.TAG_GPS_IFD)); + private static final Map> VALID_SUB_IFDS = createSubIFDMap(); + + private static Map> createSubIFDMap() { + HashMap> map = new HashMap>() { + @Override + public Collection get(Object key) { + Collection collection = super.get(key); + return collection != null ? collection : Collections.emptySet(); + } + }; + + map.put(TIFF.TAG_SUB_IFD, Collections.unmodifiableCollection(Collections.singleton(TIFF.TAG_SUB_IFD))); + map.put(TIFF.TAG_EXIF_IFD, Collections.unmodifiableCollection(Collections.singleton(TIFF.TAG_INTEROP_IFD))); + + return Collections.unmodifiableMap(map); + } + + private long length; private boolean longOffsets; private int offsetSize; @@ -92,9 +111,9 @@ public final class TIFFReader extends MetadataReader { offsetSize = 8; // Just validate we're ok - int offsetSize = input.readUnsignedShort(); - if (offsetSize != 8) { - throw new IIOException(String.format("Unexpected BigTIFF offset size: %04x, expected: %04x", offsetSize, 8)); + int offSize = input.readUnsignedShort(); + if (offSize != 8) { + throw new IIOException(String.format("Unexpected BigTIFF offset size: %04x, expected: %04x", offSize, 8)); } int padding = input.readUnsignedShort(); @@ -106,18 +125,26 @@ public final class TIFFReader extends MetadataReader { throw new IIOException(String.format("Wrong TIFF magic in input data: %04x, expected: %04x", magic, TIFF.TIFF_MAGIC)); } + length = getTIFFLength(input); + return readLinkedIFDs(input); } + private long getTIFFLength(final ImageInputStream input) throws IOException { + // TODO: Scan to end, if length is unknown? + // Set to fixed size? 4 GB for TIFF, BigTIFF may be huge... + return input.length(); + } + private TIFFDirectory readLinkedIFDs(final ImageInputStream input) throws IOException { long nextOffset = readOffset(input); List ifds = new ArrayList<>(); // Read linked IFDs - while (nextOffset != 0) { + while (nextOffset != 0 && (length < 0 || length > nextOffset)) { try { - ifds.add(readIFD(input, nextOffset)); + ifds.add(readIFD(input, nextOffset, VALID_TOP_LEVEL_IFDS)); nextOffset = readOffset(input); } @@ -134,7 +161,7 @@ public final class TIFFReader extends MetadataReader { return longOffsets ? input.readLong() : input.readUnsignedInt(); } - private IFD readIFD(final ImageInputStream pInput, final long pOffset) throws IOException { + private IFD readIFD(final ImageInputStream pInput, final long pOffset, Collection subIFDIds) throws IOException { pInput.seek(pOffset); long entryCount = readEntryCount(pInput); @@ -150,14 +177,16 @@ public final class TIFFReader extends MetadataReader { } } catch (IIOException e) { + if (DEBUG) { + e.printStackTrace(); + } + // TODO: Warning listener! + break; } } - // TODO: Consider leaving to client code what sub-IFDs to parse (but always parse TAG_SUB_IFD). - readSubIFDs(pInput, entries, - Arrays.asList(TIFF.TAG_EXIF_IFD, TIFF.TAG_GPS_IFD, TIFF.TAG_INTEROP_IFD, TIFF.TAG_SUB_IFD) - ); + readSubIFDs(pInput, entries, subIFDIds); return new IFD(entries); } @@ -166,7 +195,7 @@ public final class TIFFReader extends MetadataReader { return longOffsets ? pInput.readLong() : pInput.readUnsignedShort(); } - private void readSubIFDs(ImageInputStream input, List entries, List subIFDIds) throws IOException { + private void readSubIFDs(ImageInputStream input, List entries, Collection subIFDIds) throws IOException { if (subIFDIds == null || subIFDIds.isEmpty()) { return; } @@ -179,30 +208,28 @@ public final class TIFFReader extends MetadataReader { if (subIFDIds.contains(tagId)) { try { - if (KNOWN_IFDS.contains(tagId)) { - long[] pointerOffsets = getPointerOffsets(entry); - List subIFDs = new ArrayList<>(pointerOffsets.length); + long[] pointerOffsets = getPointerOffsets(entry); + List subIFDs = new ArrayList<>(pointerOffsets.length); - for (long pointerOffset : pointerOffsets) { - try { - subIFDs.add(readIFD(input, pointerOffset)); - } - catch (EOFException ignore) { - // TODO: Issue warning - if (DEBUG) { - ignore.printStackTrace(); - } + for (long pointerOffset : pointerOffsets) { + try { + subIFDs.add(readIFD(input, pointerOffset, VALID_SUB_IFDS.get(tagId))); + } + catch (EOFException eof) { + // TODO: Issue warning + if (DEBUG) { + eof.printStackTrace(); } } + } - if (subIFDs.size() == 1) { - // Replace the entry with parsed data - entries.set(i, new TIFFEntry(tagId, entry.getType(), subIFDs.get(0))); - } - else if (!subIFDs.isEmpty()) { - // Replace the entry with parsed data - entries.set(i, new TIFFEntry(tagId, entry.getType(), subIFDs.toArray(new IFD[subIFDs.size()]))); - } + if (subIFDs.size() == 1) { + // Replace the entry with parsed data + entries.set(i, new TIFFEntry(tagId, entry.getType(), subIFDs.get(0))); + } + else if (!subIFDs.isEmpty()) { + // Replace the entry with parsed data + entries.set(i, new TIFFEntry(tagId, entry.getType(), subIFDs.toArray(new IFD[0]))); } } catch (IIOException e) { @@ -250,6 +277,7 @@ public final class TIFFReader extends MetadataReader { short type = pInput.readShort(); int count = readValueCount(pInput); // Number of values + // TODO: Move this check into readValueCount? // It's probably a spec violation to have count 0, but we'll be lenient about it if (count < 0) { throw new IIOException(String.format("Illegal count %d for tag %s type %s @%08x", count, tagId, type, pInput.getStreamPosition())); @@ -258,31 +286,31 @@ public final class TIFFReader extends MetadataReader { if (!isValidType(type)) { pInput.skipBytes(4); // read Value - // Invalid tag, this is just for debugging - long offset = pInput.getStreamPosition() - 12L; - if (DEBUG) { - System.err.printf("Bad EXIF data @%08x\n", pInput.getStreamPosition()); + // Invalid tag, this is just for debugging + long offset = pInput.getStreamPosition() - 12L; + + System.err.printf("Bad TIFF data @%08x\n", pInput.getStreamPosition()); System.err.println("tagId: " + tagId + (tagId <= 0 ? " (INVALID)" : "")); System.err.println("type: " + type + " (INVALID)"); System.err.println("count: " + count); pInput.mark(); - pInput.seek(offset); try { + pInput.seek(offset); + byte[] bytes = new byte[8 + Math.min(120, Math.max(24, count))]; int len = pInput.read(bytes); - if (DEBUG) { - System.err.print(HexDump.dump(offset, bytes, 0, len)); - System.err.println(len < count ? "[...]" : ""); - } + System.err.print(HexDump.dump(offset, bytes, 0, len)); + System.err.println(len < count ? "[...]" : ""); } finally { pInput.reset(); } } + return null; } @@ -294,8 +322,14 @@ public final class TIFFReader extends MetadataReader { pInput.skipBytes(offsetSize - valueLength); } else { - long valueOffset = readOffset(pInput); // This is the *value* iff the value size is <= 4 bytes - value = readValueAt(pInput, valueOffset, type, count); + long valueOffset = readOffset(pInput); // This is the *value* iff the value size is <= offsetSize + + if (length > 0 && length < valueOffset + valueLength) { + value = new EOFException(String.format("TIFF value offset or size too large: %d/%d bytes (length: %d bytes)", valueOffset, valueLength, length)); + } + else { + value = readValueAt(pInput, valueOffset, type, count); + } } return new TIFFEntry(tagId, type, value); @@ -485,7 +519,7 @@ public final class TIFFReader extends MetadataReader { } } - private static Rational createSafeRational(final long numerator, final long denominator) throws IOException { + private static Rational createSafeRational(final long numerator, final long denominator) { if (denominator == 0) { // Bad data. return Rational.NaN; @@ -495,46 +529,29 @@ public final class TIFFReader extends MetadataReader { } public static void main(String[] args) throws IOException { -// if (true) { -// ImageInputStream stream = ImageIO.createImageInputStream(new File(args[0])); -// -// byte[] b = new byte[Math.min((int) stream.length(), 1024)]; -// stream.readFully(b); -// -// System.err.println(HexDump.dump(b)); -// -// return; -// } -// TIFFReader reader = new TIFFReader(); - ImageInputStream stream = ImageIO.createImageInputStream(new File(args[0])); - long pos = 0; - if (args.length > 1) { - if (args[1].startsWith("0x")) { - pos = Integer.parseInt(args[1].substring(2), 16); - } - else { - pos = Long.parseLong(args[1]); - } - - stream.setByteOrder(pos < 0 ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN); - - pos = Math.abs(pos); - - stream.seek(pos); - } - - try { - Directory directory; + try (ImageInputStream stream = ImageIO.createImageInputStream(new File(args[0]))) { + long pos = 0; if (args.length > 1) { - directory = reader.readIFD(stream, pos); - } - else { - directory = reader.read(stream); + if (args[1].startsWith("0x")) { + pos = Integer.parseInt(args[1].substring(2), 16); + } + else { + pos = Long.parseLong(args[1]); + } + + stream.setByteOrder(pos < 0 ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN); + pos = Math.abs(pos); + + stream.seek(pos); } + Directory directory = args.length > 1 + ? reader.readIFD(stream, pos, VALID_TOP_LEVEL_IFDS) + : reader.read(stream); + for (Entry entry : directory) { System.err.println(entry); @@ -545,9 +562,6 @@ public final class TIFFReader extends MetadataReader { } } } - finally { - stream.close(); - } } ////////////////////// @@ -613,7 +627,7 @@ public final class TIFFReader extends MetadataReader { } } - return new String(range, Charset.forName("ascii")); + return new String(range, StandardCharsets.US_ASCII); } } } diff --git a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReaderTest.java b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReaderTest.java index 5bc15465..b0bb812e 100644 --- a/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReaderTest.java +++ b/imageio/imageio-metadata/src/test/java/com/twelvemonkeys/imageio/metadata/tiff/TIFFReaderTest.java @@ -322,4 +322,26 @@ public class TIFFReaderTest extends MetadataReaderAbstractTest { assertEquals(15, directory.size()); } } + + @Test + public void testReadNestedExifWithoutOOME() throws IOException { + try (ImageInputStream stream = ImageIO.createImageInputStream(getResource("/jpeg/exif-with-nested-exif.jpg"))) { + stream.seek(30); + CompoundDirectory directory = (CompoundDirectory) createReader().read(new SubImageInputStream(stream, 886)); + assertEquals(1, directory.directoryCount()); + assertEquals(10, directory.size()); + } + } + + @Test + public void testReadExifBogusCountWithoutOOME() throws IOException { + try (ImageInputStream stream = ImageIO.createImageInputStream(getResource("/jpeg/exif-oome-bogus-count.jpg"))) { + stream.seek(30); + CompoundDirectory directory = (CompoundDirectory) createReader().read(new SubImageInputStream(stream, 3503)); + assertEquals(2, directory.directoryCount()); + assertEquals(12, directory.size()); + assertEquals(9, directory.getDirectory(0).size()); + assertEquals(3, directory.getDirectory(1).size()); + } + } } diff --git a/imageio/imageio-metadata/src/test/resources/jpeg/exif-oome-bogus-count.jpg b/imageio/imageio-metadata/src/test/resources/jpeg/exif-oome-bogus-count.jpg new file mode 100644 index 0000000000000000000000000000000000000000..02cc1bb03d8f7fb89f816560dab884921eef3872 GIT binary patch literal 2009722 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 z zJZ3HwRMol<1!gYVVE$S)q(KQs7%!nfltlK$ujde1$wvj?XAw)0fMpxW_R=j&yn1)Px= z=kntRfN@H;k&R~~4lk!Zxx*rACc;?lO0-o*xilti-Y;bs((=MT$zy>Y5!X-b8^Q^! z_i@7VSe02otT1=BtALT>`YWCzL2oB=jPjF2rkW{PM!$a$I%BzunKEezq|*dRlxw9p|I< zEInA7Y;A~k;3$XF*`2{j;EuOld(MHUvHxFpemSh*bA0yFBenj+nFu90M$IbDzN$WQ zb(Ie+6E6u4&Bx}H;;{Eat*>hMtHVSH9gdI>kq6p*XKcZfsub!I^<8BB&sF;wR^7E8 zefItE^Jfq9Plu1ion^?dYM)MuFi+<{%%uBovll#sU!?TW`Y(2Pd3BrVjgcXTn4B$u zKWNH;Sx^Yc>mGdcj&ak!-i3lu(1;SIx>YM?6uf83FrQqCXdz zr$69jO=r@0#rIKNhB*{7v9w$d@J?&hV)5Nb-@%05LVDChMrB1gS^!(`ADY-FnSAN`}}mG@a}=gh<&1y+#FXst3>UDzEUhWkAJ`$ys( z6oDSr;%u9;SIhXcxe)ca*)=YmDe{%NeYA9sefYsNw_wo{>hJT0r73;l#W%ThhsZhq zn_vf^)ld<_CE<;$w>Oh${inMmg`(D6E6>%(vj$L;KdMxW+c+7(-s8ljnDy{uEs5gD zgOPH-OT!>JeakN~$%=+*ge}a~~%hiZTP;IrE@|#TVP(*EMTWS{Eb5!zwiq68V z$@gvJ=vNdJrI8eA=>`P^gBmHF1Ej|oB`}aO03}8Y2ZDrjjD|5`gwl;PY;2Rx(OtiH z@1O7-&+$C>eVx~Ne$MTcg}2_GJfPIYt*@uXjwz)3yvWFC3()Iof?BYkAI8@%Ki&po zeKHx*k*QEiUPoLeV6Iu(U_xVE1$M%d;&P{me+?gW_L}L{Qnw0WO&BkA=MITWr$?yx zk~gdG{7c_ih0K+mtOqvz&_ua#Xcmms*_IgtJrTp|r=N{54KQ!-s-1az=@~q^e_gCv z&uT@alAs>_#+DL3S0H{Wg-eypBjuqhKLvOw3mbUbAo~q%yxr<#7bp1=dh36*4=J1y z0PMk!@Q6<3fxKbnx<_lVRJqSByww*_wa_;BtbbTcqjks!g(lg2&BO*v?32DPOXmKj z-btP?CzkoTmHTbtW?5+P;d5qp(HngfYBrdPBh*FD9rFC?qgfDgya%_rJ3ro$fK*skNUtBkpeBt{iED93QBY ztpy}-h02k-(V)bC_afw%;DSjpH)~(;#mkB^AiI8xv_0wncl9K6YJERE>?_85HN<~g zRTL8~jw(oCE7W##Z+LQ}xpZ;AfG2uf=^JBrw&SBo;UVt`i~;UY_*vTlI+ZAWB1>fZ z-Xmtj&(Pg%RlTNC%B&LEeY)h+&!z|4zgT6;tZF(u+F7&quA0B{>?JMSm+83$XNgd7 zb2(tpo}kg@HCkq5=;rV>w(T`key5{ab$~yknMT*wyR&NC+Gmk{Dkhi&gKMSzaR&qu z={|6*-Yrm=PZ~QqS}*=d{%LH~| z4aA~ZcEHf^jh#uD=6e0{6rqLqF0XDkEe7=+ja^qvbWI6{%E;ZOV9u7;(jEkH`a(KG zBEv1?I2w-Iz35MD7okmlb_JjYd_C@(dUBn3`_jH73LPeU#XM#DS`5xDCyV@~>dEw- zp;VBR^gxxQ)d((?G~FTNFenntk1VFaSGd6Ed^%TIRXglv%@cCsPqo9-q*aHDYF z@g&`9YR(3;B!aZXmJtF(wgmnovp&l+j_x>ubX!rAT^WaQizk>rl%pt?K!h2Xt|UoL&R&tbj-Jh zfaj^LZuLP<*AL|Oc0Rbl)nQ764iI)lt9DA>irf*1_+zLl z=spgT4xf4$@!(@awpk}^QJM`1{|$BiryJ2_go_!KU@YUcke+zY#TbErv@cUoK9m2HlWz3HhnlkIZ^yR>iZ z>al6Ds5Oyu9MV$d19>jCQ#)B@z7=+7m*d~_9IRZHA6#a z9~ns#3Ex9xxH?#7mR5c-;B2l06q7Mh_<{h9{f+YawR#k4ree=&Q4d>G5iqazpAFvQ z{Uey4!-PCiJ6E)nU|pc;&YLRhGp&&NdBEhcC{w&I=B@`{bl#D#aoucH;F6B*PS|tq zquk{N`$wo2Rm-vC_Uk7W10Q)XC{e~C?hH$nBF=I#xI{a*_nyRGQIYQ|Dh0TrbGtG4 zc&)|XME!8Blu(_$$)4CM=j)LK3oruaq+KAZog!sKS=PGDqsSCr_X-o_db}BD^r@H% zS3FN_WC0K-2)hx{;ws|BcspI_olC(JXItur*8Akelh96zK>||%Dq*>~Tz^ISLZ@Ns z%}iwmR5vV4ylv%cHu;bwhr6?;%a8PR2pm_hJ4SLh3SA$b&>1oo&gCxNcJGu4*0AN8 zW);bjp*x%`4YfIHy4W_gMzzT|noH6L#e*KQyJnSEWF0m2@IP#d`sJ>?cQ!I1GiB(8_5A!S_(WY ztbxR6?;@ChzEC%vb$!a8;9FxqA5yhBx8C^Hunn$a`(}dFvD|9QXuYGkl(#Gfxg32_NFbLCFP$n0e`C~t4w z4x4w&V+-QrzW>HoL|&N|yREu;5mU5^cAgZvRgyE9PTU>YTws11{EPiISO10tUK+Z= z?SnMQ8cX=cJVSm7qQ~%wcVH8`O4@YZwGnl89X5OTC0bs3;T}j%oG$VH%pY&DY{|Xn z`{iVFVrV+7GKVQiLjN~`;IB30iw0Bnamw!|)PHNzJO(Nf`?4d!T_!&94;5hj+uOKx ze75W!cpfj#t+uB02gYNeNehX0&})Q4YFUZX*uau3vLX&~l8g;TwLdzJEOo7u|6`ot>Br zVJg6SO*fHqfRjgWNgO)s?iGcT*LwBx#4jnyqNf(7buhKCV_k4A-;nPU2F=kvzm0Zb zzGNuL_K7_P6Wi@uvRpuJhexBslpa!#+cVi%7_Lqv08}~gp5W)NJ6Td}@zUBmi!c(T zpuHBr|2JLt6`cA+?lrv#5^@$LKw>~uja_e!LiQQIasIFtJTy3epC(b?c8A!^(m z3wdg8uAXLu`c+R)mGQi$iPeR_w^zS0%|DXPx=^Rw#v^kB_&lG#VPmR0dlgX71gz>U zR_mDJ7E`niyS|#H7SHPcDu{#glM|s9mXXexUcu3X?yn23DEf>Zz!rm;SiW1UM9C{G6S&j+tjF0yk;|+qXjXh2ADk>g zp7-C`XT0AUskr6}1%G+7I~e}pG)ihhOy$Q9WzpIAT7YBzt=Dq#wH&Fyo#g>`?{r1s zH++>k-<`{pzEw~wWMZB}Yn4ieup>iIo8TkWcY92#Y$?E&+HsZz8*@xL%Q~M_dlI}I zYYt15zB$K*x~7w9ph&JqyH410Om@r6xOWwOi!_cwlzgD{whj zeq-c!FRFnL=32(_6?N5=!PLX%q_CVpyM7MOYdZ`(dw6m|UeqsQNYL1KmM0MWK#xr4 zy;1?@j%|l_v8T9`*QSjPhfO*g_{*NVK09HM2!kmFw{f|PV0M98p`c&!TFPPBY%Zph zd5F0k2C^i~fB6%Fy^(jdQ`B_4G4$+l<+-TMfyjO14nr|WMMY=cd;uAwzehD{>IJ%$ z%k|)1zm-wi-KV+Wh9;|s-`jVM61_FfkHu{_Pb_?2j4W&3rDhNneWG6Mg#7Zz_>OeR zgZLW`0K2#$xeFvIKM;2$JQVgr;`sgMnw!uuY^dwo3dE$Z)eq?pRrOn@>dYU|5=d&; z6-fT!0qZUWhZKe!d6AC?PhH3n>KxbF7Nh5moyTPSo*}dxQmjyybJ{AE$ME*23@|vT zKZb0VsfOjBZj@tDtw#HVb${6vP>c5|adl?=(d|9+qR1{sW6`KzmY2t-DI*Qag$==l zvu>P!waMX$w4tO!50A|Hu@Oj90It;BTcdU4vL4&LMdk|}Q8`*2UA@yCO{V*mVm$Ho zYEBiP?tCFOhWK8BO)B%eQ#sXT9El!%Z+8uC%uI<+yuQ()G2ccO3A*yN7J=*`>C5y2 zbK|MiX8UFc*H$XSj2TlX*|&o^fY_!zF;EOe+pML-eZ2YsnAXyk2$|xq&60xfv6lK& z#rL5uE=o}?lNg(3-^9bjI)!&q2Y5XriSgyjj)d>8%2JG=EBkSi*HJp`LSS;JO*z0d zt%FGAZjGu1Zd&Kex-_QS2H$*MotL(su}r+OmAOpUNE`|{vw@4M*zx+~;(1$Uu8^DS zmF52K!oYrWj5ivXH6$6!Zt!tl7aSxPT$p`e6f|!h^zB6-tB_P=8d#KX)j19W9r!Sl zPib7}-UfPP!TsKF3$+|5vI~=Iw1%`OwKSbEg;FZy=Yhs`3q545v@dQKBuPgD>=ib> znaYMZ;+$1Mh!6WX6_V$|rn!gyCPeHqWs*OJ90}YA`@D;s54d33GmNdQ+`e@}9Z-ag z0NF++-1ZSKPNq%}`lJ;hW%F3NUZ-*WW6#&FJ^=$^%%$OFTKcpO900h?uguuqnK-b= zKEpTbd+_R-0_4`j7Sj3LKWm3}{`%TFwzl+pSkJ9bq$Brfh0lRsEJQifdZ%r{&H7&Y z^UAawVEU4sv?OFcf-=9Sfgl_Zg@*Z+@%>8CZ_1)}|AY3frxFOV@elX%9biz(56o^k z54Z-OXc~z0;Vk^?TgofLx^`WkZL4wwxoSISSh;*!JBwuA=O)RN=P7%7rVPwt2ET4Q zuySLP|1Dl&#|-@u6|^4^tN8*6A zwkgK!cwFuTWd4SrhABYkNewkxGnwxIQ^QH`Gbw2K%+X!Vbgu6?SnoFcymgUaP?3!A;Eb zo^%nr>)4^^#@>OX8Y25J)0o$l{L%DMqVOIi0ai?C8A`2kTfqU-Vi%|#U`22lz58`E z1f#i++4iZdbr`<|G)(mBM+?3RNm_e1oHtsrQ%NZOCLa+`kZ5QNJ_PzroxGl?;QP|4 z$~oOQME%kRQ1Ik1KrFfVW}Pazr%^slPBloin5 z$+`rht};*{p!i>ZXem}QEMzV>tQ?P)jzs?z1yq zbjyv`>&)fOTZk5uz_9Zz7y0R8|ElRDrHC)BDyZG*n60H$DTo9gy@yZRfcxIu0H-h? zMmYBNg97#5Y{zIb4&M&rx|VwA_%IIFJJbcRLFH7vCM;#|XiQZ~Fw+n?_9Tqw*`=SN z8NY9DN#^YrhxqJu|0^-h{Ve5$in1~^uW!Y+{ldmZjYT9hOr29RdksE2qeg0EQli1i;&Ez7$(dQ9m_0n)|G=L1)WgH}oE!wsK>uRgu ze2t<$ad*-gMS~$?g%75?|01)s@VHOx8Bha7uj8gOP*{9$@Dl2MI9Iq{O+cmkJ-9&rw^RsOSlWE`ym5)K8KWj$P-W>`W%$EL7P_pw}od z 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ği)V6%<7}}& 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%0A&n6{~Sf!IBMI3D-22~PCBx>7%=xZpbw(TVC zuYbI5PAT5&rM2uo;1|U!&xhLF7wrnQl<2lvrL>?lcb0^eWW2Ev-&wRkmcQhL6Q*SYp*#0@?TKSN&>cwQ5I@b|{h+x>zl zft@rxVZ4v+9V+56AZs}xybO>usI4r0cx=~ZHw#WMSegksbz8SD*?-FX(O4Wr;^j`G z);m4!y1ygiuN8Poc`Zzmmb9MUVKj4NaohHF4HNGsG?h$B<~4D*wI72-`7TZy}ys6@M7I*{ul7YuB&$PK`qCKuHZ{{)5A=%P5qS8 zTt*a2dVyuQmNF+Bm03n`;?s7$yqbNt9H6D6T4=uG?{9`b6*PYucrwRX)T~%ZWb&le zx<$-hbY3KZV)LT9avF7c_pFgSKah%c^v*D;QD2v%TJQZdbGj`(HC_6Yz9MOQ$HgxT z%YCG1f7r9=cE4+$)!rAsoW~pP1Ik$!cv$y40wZKns;ivWlU`DdNZS0V>hH3@p68>0 zafGGJw~A4@`Fm~R4O;ZyX!^F6@U%}ovnuXJxAOM{3{)_ya1*dGaaCc{wiedV3Bkv52yX@7d!dcs=d zTP%pOO`BpQNY(tncb(Y;4tY32^(V@?b#GU7dta3cl2e~7V%)E$%T=xJ&oIQm1Xl^?ylv*dr_5I|qeUyct%K#^ zcKp>J*{^?T9bfXvFHe}GiL>}!y>Iv)JMovq-Wu_KlX)kH?I(ukQb?BaN#MDLQ8Z}< z$d`udx-)MUDb0l)W9_eI>#HI-q%z|eO=(tBn(|?d7SX?&JHsk`GXiX=3 zKC8>ReN8GtahENZs(pN|x;?L1@y>^r-3FZN06FECV zMfGpAOiKZUQx-!8{b zqx@&_HSN;*n(mirV{oxtf;5O_y^eWVa}vudsfijvpCWQ2DVAIjS^Y-|9UL}Id~^I& z_bclaukn1jWB3ul@f*cfcamP+c=uD9U*BzlIJD~>HK3W*7TO4{tyXEaD}MFooT1y8 z&j%E!U{;QmJv^@8lesdliBeXnHQQ6yegOPPyVm?!<1Hgn)b8%2hRaRVE&l+tr&;`v z(+fs|&5!RQUAw&aUueCYL#kEomq2o z!`d$D^5wUqKGIQXs0M=le7Tg91=yZAWAfu<1~P@EZ#`s^FcBCmL$1@Dcu}bKy|(_n zPfDaLw6}XD^81UHGU`4RxH4EQ*A@`0Lh5J;A8CO@M{uQGkC_~$I)>apR$jHLn@u$D zv+{Zwu31LT$?N`m^g10&!yXv;k83uep~WqY<)yf}j>dU`x=FJeN+Xad3=4wNM8RZe zN%?l>y6I1y`@8o24myd)-ICG09lX1qA+2b4x+=*P#l6hd;n|&9+D2%XhDIl0`>Lo+ zin-gLm!Phg)Nac5eYzPq+f}Okjzw$(Mv}o8j7b<-e5o>Atggaw$t?INTVkt-u-V;; z*PO+*XWyp(06(~?K9wb}m3wZ|yW61LfW~czbSffv+waA^ZVPc66m=Npv{JiIdw0L) zX5Us~6paK8_H@3tf3!5vvZNv~$|9BGJ=u0H8BQFIIIUE#rMeR-Tgmk7{%1#_YZuxL z>=Rna_M0;-D20NRjs!@{L`1S9$YUx?fHJSU9jh!wI98_ND>nWYzboj%ooUjk8OG|? z((hG!zf&9bv((Rs{uuZ}SM%h#m&4v9xU?uG69^&IEMrL;byia=OC`55XUvDoUBo4G zWmKm|t$J-Qc}Htmx^3<2%yi=`s_L6p)0x@y=1S}2es}4Y7`(N+Bm|0KBMXUfEyQmr znI9O4OB`|?jKR;#wQ_dx?ar4pB^%qC5{}zlTJO;1r&U6wI+nVO<0~$_uKFKK+2vr2 zVl@5ia=Cd`%Ec}S#9uO(WW$h45_zwHsV-SgEnAjPS8uZIrMEv$qT7TdzSL7)^!$ELq5r%WnjX z_VP!Kjw6wYlWK6-l_DZs3aFGF+`C!XC%5K{PcuajQxn@G?pGdP%_o?K zMKOQ~P0FG~L?>neZ@Md)uPb+3?rqch(6ejiA}SU#TCRH4_oD5- zm$lbc@3S16+4R@&+d`eZcN0c@krawN!U2^8IaNYK0GKX(r}B}`=3=Y&a4M9W(?_pg zxnH=F(fJRB)UCXVzHG$FB%7Ntv?4;73o6IX&~kxPjm3xEYFF9r-uJf4O&6HE-CO$n z30^c%*9Eo*%EpC|#JlhY3E8&*jvZBmfc@1J`J%4xZi#gJ%Cpg1uU!ctxRBxxD~+if zV9M~7Z<(G=$;n}b{p4t^k@B$Svz))Xqtkm^Tbjo9-|t$MA1E6WvV}$^P%A?rA)`=B zG>Qq@$o~L2c0<%wa%pvTwYe6JvB6=Z@rieg5A z3L<=^RFAv&X(?JOmD#=R=dGBU=+@6p-L$z>E!D%UvO7re0}qhV&LUPoV+^6&%Z!rB z#J7Fl!+}Gbbd&g%)wR+0v71wRZm*`_k8)TF#3PZ5tddWKSqXCTM(Xkf+n+8aSoirc zk0}AH9GiDn{=XxpF|=*Fdf(Msa`whal4TMY*teL>Uvo5^7gm#LY&PX>k*Xsvd~Tvr zd#l^gk22>#p&`7K|bTu-a_jbOvy`P|? z3w$=yt-P*^w(;C=k}$CpxeFV`<%t;Ek{y;tVt`@F4EKyN3@`;pJg(ATFD|3yR!#o^ zPj02xSS`#*>l&pFhLoRB5|wf4^Njj)f%O8mq+|5$#QaW(>++ zK`)eMWl)8P+Ms7@h83LOo!axZoo{{aT8@o$>)!pzS^}FUjLRg6@{r4(3xaS{lq#bV zfOkmT?c0%1q`Ifub*G~98mDC1cV9g%uU(5#T}5pgnM}dnWe*amWcDAitX|AgO0D$IsAjQ#NK4oP^7ScQ_j9nIae)MKvEIblmfK%PE zT5~I1>;4@Uo9X6Dc5Cz6)+1|nkO>XMw^E^L9bXNV&pS^Iu~;?{(D_?dqElKV+kSV| zA#&Z_`Dt#yF_VJcODPONawCyrX4<<{d3j(J*sDg{OJsDbb51u`()LepFPL*{WVG-2 zlTIznvBqY2{{VQ67S;_6QAZjH6-mKhWnVR;X4qRev%uie=OkAZK^=(~UYqsX9H(K9y>1O(R3lj!0 z$s}>e@+&ad-dOW6tUg8Zl!(sY?1Z<>Ic~{L{H@vBT^*h6)d|MeO+MPM*SL!eEb=tV z8WI{NFDmbpK0LD7BoTs}PUd0w=ASj?s$Fcfz3tb~O=*9<+osEYocZTJ3+i{zMlNtF^Rom4(xBV;pi$ zUNu$RphQGXB(ECmRy(Ewu)A_yAA9qBtZLPw{XeG4&Vd#%W>{qeA1y&XT<;i>Gm|im zNh4BPIV4c5n|AiCV>cDPy_cTfGC6fgef{merlgGV+$R}kBNGU4$o^D>xm-ye#UKR{ zHe(oO18A)|-mh+#wXE&Ehiy_{JsRJ=%HrIrn2e%EhD1JEG+A$-aA1ul?1fkPh{^e~ zancigWSd(VE#bVbswu`iUw!YT#8q?yw z`?dO%-KLQ3NRXp2kh?f#c=G6`4dGQ?BRMJt(%ziZ*>c-UJ3n5Fmc+hiEf;?)Tc@bw z3~)g!N?l`F0vv!|Xz`7~71dTj)62r`eB`RsUg_?&O3l4`ZO~R}>YCU3u(KQ6wsbU1ZtkWqg^O z`J~9><}j?Bk_OB+dJ34gDPGz;+Wr20jVENZyM4c{g^TT%DJ=3SmBgR{Hh!&L81vTOoB)AV=LzEb&1Hp4u^3YNQ5qALgD^z zT5*-z=DxZouCJxLlA+!Hq+c?f%HB)P}U!-6WWXM5Sp zP1TmYx?B>H^0oJRYQR~_^2X^ra3J!-k1b^`7X&Lx&4CDV11TE_+}|$RyFESSWpBN7 zEkWxo{#tj~c@Qg^j@4l-v9fu4vl~JbD@cfl(GcVbgKcEMU%OP&v%S71rDc1ock>s$ z(%xI#E&wWLPnaZ27*W1Rm;j0uI!J~lAjuPj-@yC5FHT=|-%r2EH`Nm*H@d&2t*IQo ze9^-jMq`uDS;T1SMCKy9dpj;wLKFZ93w6mgNjqw~-rfAHj9jGOE~}>7EBExN&Jh;`Fm_%k6F_&dxsN4A5J!<15-P%drt#r{dHwjz(wYSLd?~GP28d_cP zFk?5Hw6+y~SCGh6ouF}y$(#angxir{XTud!t6G}3JA@sT^|ZU67sXI&g*m(O^G#j) zUsHzoa}~daf3k(2@=Wmn_fPD^aDPsPuhFsj- z$*8Sdr6l1Orn;XslTJ8KZ-|w>=<;3ZXvOoj^Ekb3;x@i{pd`U5VG&kRizKcJ%#t0V zKtFV5MPadUdg8r|I^?Aaf5{j}OY6$5eRgMui<+%ktyQ9_H$AS`Gr!-c!h>V}*(H5N$hL zxMeT%mQjwLlRI+W-#*&xjcCeT>3>(~c_;S7@juLEo_Lm6cgZnuHj>g9RN+VNz#k)d zt~2*lc)`<+x3=1OdE0h+^ygCPJyo5X(%Nd(_C&VY_2f$%Lv1t5By&HXj7IAtBP&13 zoTPb2Rc+2XXSOn>7p{q2daL$q>x|vBO}DRmdik0$-|N?8#|@jII96cHk(kVYL*{NK zFz0sSyUd$@pw<$e8kV&yLOB=R0#EI{#LWndHMl~g24yr6NiJ9lx4*Ryh6~&cH%7jgNiPY1C={WeT~DHf#n|BO!j!lLzHB z(o1iv(S8LxZyD;EeciUBVAk;8TFV=)!p2kp401A}#$nq8vPP{UDJZ~lyQ#)fi%u=3 zwrfE-H}k)h{Vl!EYSMMP4~dp94fUtkd{Yz8ERJRd+fzn}I;2gyAqB!XK^?hb%%>oV z?23*iFPq((d-Q&H=ruPDe$LHxUTEc|u)5JNmd@%HNTAx^ZjKn|IlCTkiIf&u88?{A zkGdoIe(|nZ!clH5KlpTRo$S`B?dkd%atmadO*yUv>Sl^m`$QWeMYu+Rlg$z2A25L! zWoB@4cACjSdH(=jgKuB!tL}<7S`62>aX}rUO)5#jL}s;ki5pbO5+g?t^%KG#~$=c7Zw)>9a&%rWTM-f=o=tU~LwyrY|422_?8xnRb14NNN=U2SPo*qegaDmKF;D(E9A76eZSRzxkZ?ZUF-a*C-^ zzKY#CYySWY9L@aq)2CC3gGbS{+dI9D6W^?nn^~1NL$s(fhKYa@ljbWHk#efLfgMJ2 zqZp>%vbFo|A_z8JoWi}hMfB&vHst_yW19>VBzCvRy0^p#e^6v4&C@{W_EcqzbB9|Iz79Ox{}jJ zdk$B7E${O5^bo;bkG;PZ@1t0wjG+TW2W%kRHu zZu)r^;_&vrFPR~dSeoKuBr?gktdb1oQ2zihjwNN1J)AAS-rL??S!=GHf3AeK)AQ^9 z00Xd3@Sjuh1Y5$T#rU6ePOwPHBOyL&yn`_-mH?p&amVoF4l1?j!P(Bv{oURCmf)ey z=lJSv=syO$OJ%-$jSk}ZZAMIKbqrT=Fm25oVnUl^Mf*ID`_0bdV61+#L;3FSZ-!gm z-Ay8_wO^@)b#E+wAeK3;UfN_EX4B_DWwZ#mju8tNQ3ehbP_`YuR;}XGSJ9@fpQ_RM zqS9~rzu<7%yIw9M5q#Fx-kojJ z<}OWlx>`S9Bdz#TXBD;0+@J+Zh{PLW2)o)Raxo(oMM&4?WC26O$FhnOQ)w->zOPGO z+K=H^-{o(}`fowfPvfD{tD{0>UqD#sPxS< z!n&V`H4A09md*h4+S{MAdGQo1#6`0%WsW9NQPqp>^Ba+mQwd&5Ud~sP67Qnc%`5DV zdaGu>Ep=UO(f2-0)I2w9uIP4tGw?Q{_K|HWJ;j#aD*pgS3A7J5P35B<0O(!`*v?$+8<6^JmCY{ye=*s zys2%S8)F1{OzIRdFqSGzi0UMi{Hi*SHfg74qq|mjR(orH#_`$yJ=*Q_Eg@*XeRC4Y zH_Gw3P_mfWqE?CIQyY-wScu+FF-|#NaVpNsUy}L!%d=PO>woDVI{at&u@{D{=g~Ba zl#5cli|o>iS6BNSX4o5@?iy4tDk$ADAKgj!x|->whH^@Bx{H45*|+E9XF2leYd5vE zZ_xQ`;irS9_=)0KhNS9avso`LCs)L`##IL_K%8uP2ul_z8QiGQ5=_ZTE!itE(vKQk#puI=P+*)MpfG9mid?E z+s`M}om!mDwHvo`V=TlB8F3nl5>!I-`t$(R_)5J@4uiOiNwa$@!qIME_5jU2y z1Irn0-FC~4iSmW{YpqkVv{P1F>!p!{i<9ru%E!@u7V-DPKLgmCJt}+MPUp-KU3oT+ z(yq_mH0>}&4IRcXq=mP1?xzBWS~&NRa>KCvQ$&La@W$=yS|O}LcEh-uGTrtL-vXB9-%UwH%zm! zW{%*rw?MPTXM=kqMYUJWjzS#}l}6)hD^cttePt_oS^gtamzUhvLz183@5DRrDL>&L zb-K07NG;)t2xLj5k8-0lbIgEXeCs$MsSAzR8>$qy<$pJSAm*2M{dyct_lP_}b9RZS z>R0-VYa+=y8_R~ZxSCl10C@{4h}^H53M*rO`@B}ETSS$Ym9O^#lUpVCb~D;@JNfHr z9Eb^9hMq%+)HVri(Qjr##7PRURU2`F)onXn-7n7NbNOHJCHp?Fc_cHeGcBAl;2^en z7iQ#XB-)!vZOTFK4%n7QJ6p?e$jv&8D~D_+&5xCEFOp8$ zHLsWAx>zo>*YNW5DctIlOrBaKn{C{mDoIg;s3;!c0br&wg`(QT0(d#%lctxRowV1l zt0m2C`2PT12}IIdyGw!Q&k>eT&m-HRl{nsIP-8I}0RWA@PeM7YU%PAV&26nGZT(X& zHZlt93x_UPsCW zcE6u{5UIDLvQNL?@;i+y;4g`F8O)a-Ww&-#oX9mv3;L zI#9N)J*}gEftRD}-?NNTz%9HR;%!F8OZcqYQt>^;o1y74y9wcm_r&tvT&1{lgUoAi z@kzCxoYi7skCIZQG@)y{akn+?(XH?5RT`Lh={@yMQj4?G_9`Mv6bEj&WeuLpHKH6yFj^rVGady`?mbZ4X zZ;*LY2Ay!M*yg>*mr<1`%{ezHzj-ykr)F?Z5j)-4YMV(tb?JAbN7^19_`BfSj|tlN zjz{pur3kT#+fmf~S#^CBW;%d{1n}VYmBMyR98I7@Gj-Ko`GwfAni!jj!AaazRl$hP(|#?n3g?Zdd(3@BbixZI(NmHB&g)TK@|)hc>D7M9&^ z+wRDVl&W*d>#m#q$E*BR@dt@MEcma(zq04R^%r_Rk9iyTk6y8l%ZpLfl`PXyxzzO- zSB*Ns43gZ4hWTV4c~&qgDbb~dr&6V7dD&TL^nD|Lw9P8>)U`Nm)wY*iTYZt8<6nu> ze$4hQ@GIaa!o+fjTs^wNS`^{!9*%QzQC!y2HtTP=`Nzj!v|q%Z9_Tl} z54>IQ+eGkJ%dkw<`cwxSaPqqR<8oYZn$Sroo zl#HqZu_}cf4QqkRFgPo$HX5BP{8C)?$vP>Cb}&YSEM7cvEZ+Z zl4`m#csIr`{jS#YBw9we;y<@qCgCJD)7?!Vn(88O(L4O7qcCHd@0>4py0X*oF@)u` zuj>B&`<+F^+Dh0R6H$M(={k&nB#|s}Pib_h(!Il&4XNyNi^F@ zU#6RDp{%t{TXnXbj}-Bbg{08#Cl-+|p{Ke;EHw*b=OB($LSwpEfqQ$4c^eFcu&>al zHKMB<+na55cIkI#+~k}joz!&l*Y7=d;fkfEn`$NB11+TU$kE2hn~W7@++#vfFyxC-C3z57h$}z#Im1g71qEXXdwC!ffj8t2az1{WoIt?EB?@qs4kpo=b>APUl z;htaga!Wh3vo^+m+(=?`5&4cjR*jyqRUP))+Vs@bw`Hn#^4qS@xs89M_>06^-2N!m zd{=pWtH~_O=fQ5sF&eC1OcLj0cJU{ar3AiP$AYS?#+KD`FC;_@ESqC24&B8SHl3wN4T|UXlDgBcZ;^JpSH7C` z@1ishiS-u_((IQ3Bn9mvb8)^z^CBe!F;671ZOW|_OV@63o2e$-cKfy8ub8i;+S2;> z?e7vxe`KnnPY!7*E5w2+4*Pd_o>?ar<}mO+(1)Gg#z4J+m_@WR0*VHl1yn=-N6oxdvJE_Ktc>~>w3++9r% z!}CWEm34k#nnd$sxY+7|HrJ4YBy1v>`G{j_b}wAGbV5~&lxms+TTi7OPT8i@?Qf$Iymw($F(Sb{f#4hb<{))k z;v*KM+jqb9enjBY%M8rIyz%r2psAh||a2xTz_%xZWpW6s^Xh{>%K z8t&Ti4r^<5>T>h^DAuL7ySwo1tk&AxGQ8IIERw-(a&`&aT1_j63$VD%WtYo$#_zf* zICYJaf1upmtl#11xy}Ci*7bT(L%t=jVO)PE^W%H!{s!Q zs13X3>sqKMeZL;MbnZvAS4z)cOZ~^7T7J$Nrl=qiY8qai(}OU-d&Ro55S@WYc+sPf zH_VQ!GK_({Yj85DS`c<=$@WXFy4>0^=G8qfZ|NO$pR*2|VP_rf&x!4oKFtzcNg^yU z08_S9yke744o<>t8x^>FrR%)$j^l3Mymrq-1+{STnUVWN>ne*+{ z#=G&WS2_>F9}G8#d?_0|mp6A8C6e#Ug;r*{x-i6%kfSjqZUH;D1zwxHRXP;;tIL;{ zr+4Mw&~)ikt)wH(ecHb-n!iKrKZc(J{5SCHO%ErRsp~SL9YayO3o^b0DlO3#CGxG% z!ogHIe>3~NYrw{56>CqHo0U3Ov|_BA*GDew_3+tbBCk>NORBbu%gpt|q3HtJcKbXK z&SFMM*md>VCbmJM6_>5w_T5t zKV*yRY3=?pM}D`ri>P?I0}9@=&PBE^jk_e0`Jy{%G9ra{i7^`V0OQ@w>rS85RXZ!j zZSvh~9$Rg^kG0e|q4>#`FSJ4; z8>7=TxD==Mjf<#wBh(r2ThBFZhdO8ro=}Xf6)u1f>!-wb%STsD*#@c#)u)Cbo4k zNQ$c1Ij>6@gjA&~Tbrv^YD=w}-o{iasmA-MB+_?HY1Kc6^GBul1H?CabSqaLruQ zu%6BHyE&^_YSet~{J~PQYnP{2wfiH&{H6GJYS&kh$9>|<+jbg#v{1(z=(e*%3q02+ z?F=Bjc`)e_K5`N^vUl!W&|9|N%eQkI+g00U_P_a^ufYERfcp2wE6cwVUrz;=g$2#l z-BVJwL8jhnEUV{Dxs=I2lW@uBylsg>va4l?t>{smS*G2SeQ*6UCf=L$*XN<)-yZbO zh?c%9{>|~uon|dG8)&>gqr;)cG=3b4)+z2bTiIGlrZ%{_-e)t#7o9%st%~TVoF~fm zj)~j1USwrCIX!=?9sv4wuFvP$=~LXJ$XXF^Y-43hWoFFi5gnf07_lngDs2n*sYUc| z)?IHU^7A0svhYugZ=q1SSZBFr7UJ#vh(s=nCggqF7>8)(jdBZ`Y2Do^S#{;UzDO?Y zY}))Z@i&krDQo4%7zq|fP_Vh#GOU3XPdX_S6>=0gTn)StrLLBi-?sjqW4r#mjcXr= z{{TD9eX3c?lNjDlv&9kf;9xw@v&o!^qglZMO{Z$H$RBpObX^mD5I5`dI;b@73TgO? z?s+ANAu%jd&Sg!mj$wP`Dt~hmEUbwWZObmrxTk2w{MPw*AH4g&$LC`TJsaWlGUnGu zNn?n@lLlT7I%IwzSs@e8Qj!0!w9y#jS9t?u6XHpHO&CErhxt!v_aBSu%Z@b-e5 zWxVob?kx~o`H)95?+qkR7nqVp(}?#EvxffwXl9eI1pXIy>2qkVRb{33w^FVD0FGx^ zf6?H96((z`KGI`YmE0A~k_9p+mZZGCS@NWej-1rG>iS(@O|JCw^DZ{NzPj!I01h(y z;ts8OjkP^_OXf|&7lxCBhw!OM1=&!J8Z@Jsc)%7#^0?H83IM2O6YqzFS5+T0!7txBR!&g#u3le@anjxoBwd)xFjEVMuE zEl5PVHN(BkpS^hDSYv6MdGj+ND!(EwjlX)8+WvfuArfm6QgZnj;!zUB(} zSZcSojP~~y_Bwfv38c5T-yfb9LvXBq=amRjfu#AiZO<%gc-E3jc{i@Q*>u#2QoDL+ zwtIh8IE&39)(gjmJDBE$q;`P(%F#v@S}+gsNJi9Rk*sD zuX`;M?eZ}v@iwq89_=ru6K;F~@<8fc&i?=;s~~A}jjjkMJk`bu$y(d_>(bAvGjeym z?`^*S0L=R@;8()!KjQwCb+YhSK855-du(mmDYa30!DoFwRzQ;^8x?QSPnwbZ&9rbh z>O-DZy`H+K_&3tWR9tMD`L?{Tr;++);6H^eq0eDqsod!Io*$mt+Q#9mE@HX8eHI&G z98tB*%#*_s+(;cQ*%lr7W(=wgd^UR;_*!nIDf{u2(o)s8(SLcLMU={&TJfh*B?)OJ z_Di?S`A7DQ_&o=Md`WzoE#SJ+^#`6!J>Xw9FgA(S&Uqp!5fO(2D7%O8WMm1+Gx=iU z3^p?Ku?bo&?NgUed--Pn026%ID2*9Twi&6@z1r5v?$mA3A0-`8gb`b;DJ8=!(aRLY zV;*!0{%gMUb@Cxi{{XyM6oH+gdwo)<^wr((ui|{!L;ez-dq9>s{5>_ztkFhdT~|+M zOVGjyjJGK929^*^PY`u+Ayor%^IOKGx-_)kd;b8#lG{sX=#D$Z9wG65wWh%Z=Dp%A zRb`!Km}8RF6LOKwUD6M4a}k`K#a;@*)kH#yKx;Nvz27mGf$=V z`S~+gNkyk++1r2kCwZ>?Z}7eLpEjEmH}@8@!USVh{{TeuWSeYC#Kh99lQM~s;c&t9pN09tmOMJsV7w?qRgJxDrb7%V#9k^FMd61x-24(|x(A9*Lb#BY8_DkveAX zX{FC{_zj_5{3_LTt9?VndITTZt7SHup)R8Ogm+4_PY>^zpmc)a=4his9BXkDZgP89 zJ|;?}2Ci3@K33m$G;J^7_X-A_l2zGmMA2*yqXK=XkbPm z8tJydZs+W=&AwP=kO$x>%LuSC|zT(OjD z&HFWEm9Mq>{O))*o386#6xUZ=(eAGF*)8sOPjg{?HMEf|AjTYAz}9mk#L6A^zsMJB z4Dmyz-i=*LMy<_twYg(faKi^1DsoCTPolN-x032|Dvs^Vr*zxzcdB>tB)0MFT1~aBjn0{% z>NbK1-^>p{v{HKMe?RyqJlpBk`YlXZ z{7d0YPD$S9K^DSXv)owSPY8&Rk@@&}8b&`M5{8@QQSzx(AP#VEmBrom*MH5E6)5kb zzkkT*_35Hz`9XU*CBl*>XNw%57T8?cZ&mZo634 zF53BTzn|iC{uNDV-piBtFQpgyQmpPQBvjZ^w&)~dYaC&mD`THw(j(?<{G7)^fua#k9NglMP#*@ zTp^7D$dbT~DuBW%mysu$S*9C9R`8QmBjnYePex|$>C1hz{Pj6~J74hyr-p8PIe%vq z+FXe&mN2%~+i51^@xue6ppVQ!JX>4$b2eA0Beqb3lAIg6Tf6Ar+Vf`|X3}t$*Z%;A zM+GTy0zx5Ww6?b*-cb(3khaEgAC<8I4Y>wW3hn$Yk~Uhl+_i4@zPfaG>SXu*d-GT;a+e~!x}>#jy{!5TPB8ei zdUxB*@BBC6Ux!s;+d`_`5>_HuD5=#ExRnT&Xe0(wX;KS3Xw9G`#Nsl z(-h%@#5py{`pMnJB%-g>mx!k)qvm~*zujZiz8iQq#oh_{$tH*K2g17NgS2BsW3ma}emBE=(sZNCbquN?UJK49(dwHIYSyn#T z+V}QPe!lheen;9ix{Ji9u`!y?5RJ>Rk~X)FHZs8^gtU@KSrPUs#_|E#YvreF=)d9q zXSb}keYRKMriY+u8mw~ONfc={Mrzpc-bnQs!u9$Ts(Kp^Qlsk;tPG28u;7Li<%!cWub8 zT7_CQ;mK0)t98p!J4a6EomQOazIgl8^}1KOU*?Y`@pr?UtuppmEJ|DNjwb+ljT6N9 zG8j^Qs~h=`D-on z;#3j_X&T(GmdPAOH8RH=2l-QUYCdi7?*bO+@vKI z4=NH$`7@ZVwY?3+0mP^9N%>-k1+NZMb*Y76FOX$3=t!=hBzl;#3rSPj+5tg;I^XxCL ztmg(Vv%R$DIh38`o%`R)xK;AE;|-cvc{+8X-ukUI-D&a%9%R;^ovp3Uh41qP)Nx3X z6)&|LhILp~0v!CvTr$WNf!<{Q0B0n73sv&Iy?nGVYTABB(fW1Fk7HqZxnAB|D=Ua3 zxZDlLn*LEpum;8t8A(g7NX~EU36s_NmXO*^Mf4L!Bx z=)8?YMlK|4e5w7=og9VVwk4Gb2MnwPXP`}?SA{0L*-v!4?!9%f>8QOV^=qU2HRv)U z8_g&%?tn{>4)f+r?)OT3#yd*0uJB82Ncsh$>eqXAw(|Av3AEpPr+&)&7cL1y4Z_Ri zjnGFT{NWZYq2($AAdNi5$q|Mx*+HzQD_i8emYSQ!{!gz>`?BKQNfoTKvPTS3jp8sM zc)@4@ZHx?t8Bx>~+Ev&P*&X@kQpu&I^|FonboDk%tJmlFv{w$kTR|jH1!2BS+mhwX zQ5VB3Y|hNGs1lEnf}ObBMP`+^wYsL7ceio5x1wEsWXtA#pe&0NYi|@HFcwEaEb+;* zDN&J_hB-vcd$)DlM5TQ+Ni8&QUp~a9)4sj^bp(~=k|@~}v=Fv3GKb1WVv`Ie$pgu` zQyWJgbhSfwXhBH&HmVasAf09Ge z&wJ_H=jcfhSrrQ~apy$J#bGP*5+55scpb#7-#VxYp!8l6<=s2ot@YOb0ENm;wC}QA zJuFT^hV>^dBTJQ8BaK9vjyTTP!vgAKDq?IZu#JJ-t4gB#OH02iSajypw!QCfQPC%! z(#NU$Y57CBot?#wBv0+Y)ELT9s95_wMa)LCQDl+tU94@Jm3PtieH&Se#Dr?p=|R z1WzvEx8-IGBm-)vOmmo>OX|Blx_0#%Nh@0ReSc2Hg_b9|jat?a>kpc<7}@5MNZCsp za)htG**TLOp4BR294#+S)?Vlndo~5eBz^GD5Mg{6x^7+@URkV?R3vUziS+ zCY7wZZNFRDl%4kewa|)qPURcdYK_8F3LWBoqsd_y3Z-1QUA(IvdKxb6(@#E+UzlHB zy8fMlNUj3ABITokCGv_SSd$?_B#0tH>ObX~Exj8%vbh818?oAyma)CIOSfm} zON+Jj*7ws@_xB?f(#a{BmC*v(UtcC-7EdU>ExYVO+UYrfuvdv|EQ%&+E| zUPOz}M;|JSW!}zEfT@LY?HUNzZzpvLsHEH0_DwyswUEkIfU#r~$g!1nlZ~1CyFsMnmWnF-Cw8xQ`Hm5CO}E#o*o4Au*vg1nMNtznHsp~E zX%m)kLD{)uWepeyf%5ZKr@i&JW!rYl*`c*ZBxIYa?%K*!p5~x|X`%^ZvIXn6C8mAX}9SETP;ll(ISoB}kGB=uV~)%y)ayXf?H((i3G z?pKy^5NOa4$tx^iV4^Cp^9d$2W|J9YQy#|Jc~S*qCY6$Ut(R+exlP*oH)pqhyRj9` z(@cP`k#H3i)ggu~?lJ<>mJfng%r3)dA~oI9ql}t&(p;&vr=IVz5|Vu_dnUHGTZtq| zXzG!lEgQ;zG;d{hWd=3KVpU@S)B*dlFjOwuwQi5j{(m986|Lpl{vC)ET*#T0LpnJN zl_3aFfrM%iOGpBU*`7`?-@>@99IWi#x9!_oFH$21Etcuq^tjV%R_$FtXNbzmlPqr% z+i$>=ZwlF6!9j2w)y1~mwb;QeGg;P=cXb z)XdC23k)#W^ZX^X_AaCcDQ=C(KdzaSt(O;&i z>^Qsizsq5-HZ(eb1&}I3Iq3B%0+NHN9GdYi4BpFtXj3XZ2a!JU1`{>zmW1} zdx%GwlRGHg5-*s_ofag?KnCBP5mynnU9{Am?e=%G)plM$P6}*}M}eG{F+TK;Fao=U zj5J}4s<|NLe9td$t!SjAw2qpm)5_NBK5kV0{*R`nHr=Lq3acP&i-q$@xA~BHXkE%i z4pnjhjgB+-YLjmLmt9?~?QbISJ!uI`drD$N!#V8WO)Ao#q3F>S(u||pUstr0>>+JFmLy z^E%(Z)+Wt zkQ?nTCb^E?mLia%&Q}sBF?mutL{zI5Mq+n)&Oqb}nLl^#HHMO1K1*}D(tHi!X0f!H zw2-B(;f_G>gm#iJ^UBK;y7>VS#7ZN=553KPSD9xx`C_Z6;wsXNX6gGnb80#^xs&@X z`5&(3`ECXnN*}nVHsKe~I436DZ)bh%Y$u1jJrSKhvTbf{qM0^JI7vQGHyDI(7UXqL zH4sSKho~Jq*kkL-Ki}59_x9B`db=x~lEP3{m$IW|ulzW@yx&7WL#9C|nwF6)3X>H5 z%Elf!pLB47OU7j(0&~{(C4>bmAs5$7t+e!Z|7t3;pBO-@;f&4+^)*gOFl}m zI~1{8F>kw;`FXFvM)6{qB$C7HK}W?)2BKjf-CmUtB84 zB)5P88#2h?ff*TTOknSrZ`?q}&7C`nH7Q2zUvB#L*Hfm`{41o#_G^o~#+A5?+9+t4 zD-xeM-M&Hz$}g9f2j=67(wt)M=KlagMF_oh`_96~e+}ty+v465*8Xe7g?MirgleDY z^Y9}uw#6|_%yG_kk}I+`DAU^4R(m_%{(CZIO_c-QM%=-Hh7i&0M&p`NojS?$K3QvT^FvW^Uhb=ZyQ#xmN2=&@CZBp@V{GKS zbCWDf`^WPfOR$L-19IX+lh4e=*Aq@Hp>s;<{oj8>qtGJP2w8Nj#}~~fnHx#wDu~!f z!d-}4dT-&^AaT1n0-)bT^Sedzx4&)mzn#-JKj9bgUZrm|_cKcjjL1;TJeYBe!t<6@ z@|b~=r0@>{oT^UkUfZwo5{!E4_Wr!h%`@S)tRdYR&u}AR@=ucK+Zgb~c_tjLr3X*x+9gtpdeLSrr(SmSW# zIQ|;WRb4naE}xs*?*zU{EswPA{uF6eGdoEy*q$_GXyCSrRk>AgC5|c8RRTyJQ3(sT z$@zM%a7z(ZS8iL~^;YZhKyF!lKhfhPBvM>kFkd&!np?36k|7&{k{LXpn?~f$$0O-b z>s9MgR$ZOHF05Ake2#+O!~lzDEu(PEJiT0N1b$C6F5t{cn4Dv|5EBPUX% zzTDcnR_2%Ar$JdQ{{SC8_v&rii+fn)VU~=vUQAM3#SlVK1H~*!g=oV=5r~<0Mni60 z+*U1K_x`T89@bXU-;vDtn_kjhqYy@$FcnY?)^We8jf50I`)BMEjiSjNwY+{rvnE8CSlI+>RhKet^BZe( zUW^lhQCit`^w&;^YX1P9*E>%O_-fxxw~JoY(3O165J=WJTH%$1No?L`+kgY2FpXrC zGh=T&CiPoCKbPVsE}mVTwC`=qe~S-xx_*s4%QB0STHetaWhUH!9psG!k|EftrLGl1 z1CNvpRVg*sZ%@o=yKC6&J_=~FYJnk&-JT?fi9t}|nq9}N=y37l%OwjmKXp}4Ow~mj zx23MM+T9CD%S-63^1nmuog+j#YeN>qQn7*+OnbLRN{HDUM2_W8%1mI$KIs8Xanzfr z+kJLgze9M%#>sT~`kf&V#6BMzUpdvIPc2*#Cz8z(5k<+!-OnM17`6Rh{sAA?U)1tXjFRvN@N#(c z{btVNTECx3v6k9 ze7z1Y#}{JjUesl>hzQWMF<(RFq<5_YsY{b=gj?H9JVcNoj{&(ou@x%CyQ{5x?bD%g zjkogC{LfGLeet(f@LrcLovcQ>o{mtgR`N|GS8zrE85aOaBPuc@5M(Mgvhp#vinTb^ zT4^giZGTIyrQGN>kJ=kk*C0gj-i!U0JgVyVisn-kZ?p*^fp-K+7#N#lD->h7Yo4AN zMc#h%Pei^S$8zA_tL{F1)lJ0r5=(ybU0+@1Y3?q8d2=%bXpCT@GN_Tmva-I;eNA=q zbl=Ngkuufm`StZ(in?_3X}8hc*xcUOzs(eqT1e1MIuPhqVHx?Nk8`lym4BD8#Wl@q zC3SwP{{Zm88^zu_HLcd4mqO(CH+S=?)C~HNcaslubu6-NMFm2}%3o_tin1~y?@id~ zaP2PE{{Rh_*^|{c*?L;dafGGXjkX2Djjf&6w5rsJUxE1gA zU)QN=%KK^EbvM_;+J^M=p)pMA5?H{DMI1b~U4B^}M`mXMh7<+C#YZHa^zZ#@P>^^Q z`UxUZ$r3zkDVgr#S)x<5qBEhCOY<3!S|EIZycoxnUP)b*8F`(TC$3$U$)&76wxi8Q0+vaD_;{5{IrE4u3Y1$2t zzmps<{%@-!%8>p*?idqx-h zrWVtXkW<@&pOAMV4gS5=(m|&Erfny z0oplL_WY%Irllv*DQLQXT9ah=@8|jX9d?)Spd-9mmZPNDJY@ueX``J&%vppXmtd35 zjI%{Df~pi}kSVy${iT1O>DZ{nZMMJDyXtPs@YljxIJRs3Wu#`ZX(dY-9_gf1NKsw} zGE2FmM~q7oA2c_9n9agZd4GGSSEZ8K8Y*yBz4Y4OnY$go!worLK2^r0E33xIG*R2z zOdb_6i1$tBB)KlH8x~)>*iMQzMJ4Ufi6w$WXO?XK?j|9y)tZc&@=vwD5**Tcf0@YZ zx4u5nqK-rGzsEPR+mv}_)O<;4Y2oN2g6TfdG|+fr&4XH%b)FXcPUUu0W(8?`4sG;L zTdiBuWW2xOhMQ{XeeHMhJRioMKh^wAr^ly0kD_Q>CSqaHS5#}6q@F0?nh)&@-A-9A z9ph-oWD78pg;vdLPK+V%C4RSd->bJmB>eZjmicujv9z@Kd#0wjbk=vCG}LtKgz&|* z(fz7DBHh5Yj^|KP(!4hUBs0S_%auD+?HQ_%Ea#@l>(O?)T}-5;lG9()(BwQd;olN? z=K1B+?yexv^oUNa;=dB!JhNFui-vfid0IGp$6@5zTR{7azbtCIMmiXp8HMF?3(XJ@TZ3S%MTA(6)FmnqHRKVO|#E)eiA!?%uXX+ zsK6=5WjLiBqbsYudAU~IdYDPO>2$2T;S z*{eHW@EccFYeOp2#-29#V-T0aw%!xB)8j2FYH@f^Ou4^@=RQ*1-d> zwy@b5Si^@^+@m|UKJEZgqZw}&`?lp}W#w%N_OsnJuVkJ3XwRVj99jHO_=0UD@pp?n zLE?1O_Ic6jmqFGTjIe*Av}%#UCYc**zmu5r*P*F$qe3#4k+zmi>#pmX=Jfrfq?PX7 zlfAb2c0TpB&^2ua%E#eH!(As*);=hB);F=dp59p_Uk&LJ+nHr$iY46}{hW#J?ixd} z7DZ+Y7z2meK}pqr4(rXmzG&&4Ic*ntUF)m2{5kU{#*c{Y@DIZJm%vYe2ko9S*P$AJ z#qW&zWR9~%Z*eD^d*KfV-P~Iv>DKd3(_8Brou$W~<8qIf?h^`r-hST@pComoM^>cU z(sQ=ZU->XpoS_eAOXK)uQp?@fURC_h@IO0S!G0r4dEZpHvq&x@Sr%#U+VV}2W+Enx zdF+oLn{W(&cfCqSJRvl_ht7b;RN1lD{)f_HO*m{O{Eo{twX&uB0z^ z%QP_9%N)-vOK%O-sVRuym06ZC8_M2lz}{gi(`cnR%2BkE(oR}C>1$c~i<7gqpRMnq z+x$e(C)H1du>uESx<%$*BrKK?KXkB)BvdO!QsmAcD2rF{Sbn+fDL-ad?V^dJ zjb()+mm#w#3nWAkT0~gb<~D4V%Vdm-hOMIP`&+u-uoh#!)FXlzl4iGFEZQUv(5Q2> zYJwJTB(!^B`8>E?dTu8Y+g48Y>!)xQDd%fs^W~0d0+x{kjILD)^BLO`9k44uM%+eE z%xZ4NyW8)7cBN4B+Yx!?+byt(#O66yd{G$Wo9z)aw&GJXssbxJZ5&{$WK_1+w$j@9 zf0;>NM}05VEqywgo@8%vloAy%+Zo>B!a4&4a;_QUkN1Vs6GX}tK_Pg+r+>@S<~~>Y zXsrC7py4X+V+vq}m10RHb(L8VOh6Bl9_KN~h~mNygyyBmckc9kyZV>@TL};_z;0S_ zZ=OjmB3TYo&5{x4TFB5WVnrENc_l05$((%IsJ*qmt?Vg1Hosqz-&0BCnnqAe3Sp8( zP=(91!G_=8yuMS$9f&C&(}TAe0;>9_b#KSFPUNNOZChI1bm_5dvVxK{aV^q1!tFTo z6C3wSu%je$s{+a#kKLxw-!g$s+Uf6S-)^n^g4XMFuF}6{_*m7kmf+mR(LkYCOj*)a zEfX><3lc{nuwfi6B&IojRwI^df+>GnqF-gU*4OWM*w9dA0`5Sg&4i|8^CZR+Mp>0Z zn1hIeM+!!F6W8w?JFdIG>i%MBt!!-RULV&k9ip+dlKrH?duXANZ`GIgpsXmyS=K=m zLNdoIwUxP|*43>oyShuy;_+}%*|bjtYZB?$-?ijj zLhjZLF;oUK$o~LpFC1NPYeb^fjxX&8@wdfzbvwIR8ZFbRroDgg zuTF~P3w+J}u;_>ajlg7c%Nax3Dp99WQhV!8DgBpaerbP(DX_efdaXTM`_{!>U-lmV z0D=yD5nD@-ia+pKO&{YvupK41@bB!u;d@_+5?y_sBo7kZd@Z;5({pKU<|#jF)HMh# zarc-gHKl1*gkq`TRotxQKW$A$D|X#jQ;fY6Y*3Sy@@vw~{H%Cqh<|8L_#vmm^}M$D zOZz&0*Z%+>uB_TmBUACtt!420LDZ*1{zX#NZ37hf5BwvMZ&uo|`>_SNqD8TWZ|RdD{M#=zP)RkN7B$!I<>>yAOo_0Ps&Qg5C%DUNzUeVdEWN z#+u}Is-id+dq}iBE-5BZh!sYyG>ZG z_?z~f__5-tuBH)q8^Sj7$WqHl@Lz`E(&4v;Bu5ZUB(hx>ZSjqS#H)aRy~gpRqVIO^ zcGG%aYw5WzZ`086i@zCogT!*)OXCN#@k`8IZKS?}6>C$O4s2Otj^@nUtbt=ybGG0& zMZp@`K9~7){{VnTH=eus{{X|BCZnZkjdv^%UFr~9fDF(}dnMJme3EV9U4sNH<*ll1d9zu`puV%E%O#GW#{o-)oQ zw1V#aVvbiij_Y!4i55MqQB_Xioy%PR09(VwY1#ZRNxd{$8^(=R)#c@*dOz0ZW#NC> zTfvauLvi9e{YS)?Q%5MhOM@b$lccf7AD(iM?vmIP1#SG$Rd@B{j;>`U-?OBXjrnCc zH*fJM{{We^aH*xuEB8rTO|5?C(;6m|p!jD@k4f->;hzX(4n-qXIT}jun#B zg)1|#V!*O&5y(DS8}0<%xm%j%<+khZIuzUOuD!JEByuA|eG0TS~t z%Dy0YyI1j@?ToVhk!&Hg^I+1UlJ4MX5=lD;wzONcj!0F?8Qo&dyic9DWgvY^Ymza$ zYAV{jdurL|`YyLF+4!GXy6~OXhORDjq|!BSvow+1!EYz_WyQRSCB5~Gd)j+xvAr%N zMhPGa+iMn};`&?qOXekeyY18Z?s;v7onxh3>6fryyWPif(@7k12@)9+M{UTYF zgGi@>%h%GmTxqMc(|hio{{ZGy*vA%SuJtRqmg41*z2BK1mmxC<@gP=`aV+qxpgb)z zNw?-VwrZ9sZDjVdeq{14?8leH_fbj;*cBdAOKWagFd}JV*ua)WWHH2}%O5uNz}>;Y z^{?*R^z#ly{eE9F67$4Y(n~JwMIworZW1po;R;?gc*KG87%jFy12Ngcqx3>Ll zrQdcwNcQ~72VcJqw!`gH!piEP0IU+@grBEENG1G$1ZQK9l*Y|*ri z1gxM&B#vL+By(dSRCiHH#!u|aU96k+R$JJYe=R!SRoRz@m#k_tqDO0UDy4y%&c;Q&ogCe>A0A#lUr7DZ;%GcGn%dXp%`I|QW1Myy=J2V8lmh?Z21&G1}qsZ!K421!~voRa?B8jna0#-{4$YT{Sv?_)#|-4bHuP zqv>qdA)C&>kIS?LOlTf6ENQ+*e>z3n!#^sL!mVJM{{WYk>D;w6_f{$=!!HC{GXDT> zcr(>JYm_kI{?M28k8dsif->m-%m1JwSMpXA714z z7im8T^iK}z0@GC0FSRlrD@iP^1-wFbc$5n>GN+oi0GRywa`6_}7o3QcC|O!hoxQI5 zYp(6cC-9#L=v* z%wmL{&LRl_$ZwHUGK_AgPF6`J=cT@O>NiqW)3@IL07Q93zmNPyVd1Oa4qiMF+v^us zH#&+YnjoI)dzTV2eW1l3nG|flxPlU-s)3)Bnttt?T)O&xWVYV!=Y!1zkljl2LhUB` z0>mX~uy;9*Fr`-t%2e#Y-M5cnG}V=rt@kY()43Mb`n~P0#e4f1V%kJx&e1K?6SR%8 zlIL=8(ajNfl9lvg*4N3CD7$EzeSZG{%^43HqnO>B?uSx$1}KDW zV1S_t6d$|8KXHyW-)^6Fy0!B&X|4Tr({8rxkD-1Rd|2^MgJ$sNso||%H2dEO-Ym&$ z_9d3e=qt30x3HFpE>>hmjn$hC7;5FI8%|BDUsblP>U7d+q`K{9x3T)y;9rUUF!5K0 z*T$M=hoWfqTKAP6rKibn=D&xv3z*gX<+h4t@*%pDds>GcO2W;#Sf&SujKg8^UeXiQ z-`%y+cY5pHowRCBl$7Ijt>5RV>F=f6uZMN*3&+;FP3^|LX&lxX-RUrCwK>xBaQsR&9uG?E3hlOZZY*3TFz06eH3FYo!0vv zUSXHR+P6Y$-@8ifa_ged@+a`ujr9B3bgNq(MQ*l49u%~>RgM=vbF{B4enKqjqrcSb}TQr#e*KF;41pQl}YPJ+kb zzLPqnXT&-)U0Y&Xg}K&j=D3w0kVY0rG}f9y8Y8(`geoK(a^EH^M^1X#rR0{HcD~G9 zscFBi_UJQE@Lz)TT{bB-zZLnVq>e;7c9$*esLtj{Vu|N?-Pn~ew968#pEw(e(a9v! zyVY5xw%X_^ZRKv;f03m&k?^-qzOjhgc!OJetvc5F+Hm&Td;zD8OT5;v0ez7#m-COE zCeNVSI3)LW-Rs|_`WapH{{V*j`ySQdZwLH4@lS)bo39CYY6$#yqP&x88WyE_CCci$ z2av4ynti-u&yd>OmX`G*LL#->Amcdhp+cQnGn6HIl-2ni?$zyRx7Cr&B=uT9^780< z*TJLUFNq!()jTDm_)AFe{{Y2(D%Eam*3!`o+KOACxx2F>>TSdAPOi}+Dwg?&%Df)z z77q)JqgIbQr;CDegk_?VkJ(;kGp|yMgt>19(w~xhKSQkX&WWk`%fYuA?}Rj;>^~5A zLeyCJk3oVow74x|Lrr+FBFQ4a>lBYHe=z&Za=Z_e#ZjIXtx8o}l5%{HXXyP8ax;Zm zDy2JJCC<0I=+~+8rmf=LaQKSV^b329A<#o@s6jN5UyFv41d8R0$l)!-*Ad9+7=#;X z2TjJJ5R+ObZS=GM0EZ^}Th8a9cz?p)8}OHhZ#;eD+q+17r;+W=+;WTi#*#qM!Yvi! zcDEZC#~>>l+q3(^*sUW*?KgYhuWRY(h;owAXrAx4O-a5R{B_Zv;vBc}o2V@{nHt{e z*6c?HpDYg&u$CKgj1a|d`?OP*&H=+`9)=zA$tf*6X`z)$5|uY*)9<&*FFxnf+J=Fo z>o)f`7dLW$W$QMwNoR3!2H0cX%OS*tV?=9T-NzUoIg91TTI;V#N*+&D{{R5sr%}RA z*SvZ^y63_F01!M2ci{bQ{{Tb%ckSkSaemS(e?8vX9%(JT#MX1@j9UrjYFa8tj9Nrk^Lu33nj}KLSab$8Lf>_P z;*y%TF7I0=nGO<9XZTz3>WXNPy_J-jj8c}8IW3%9BeDsg0f3R)WI}9^*AYO<(kIK* z3VhIdw(WZ>==AS>n7Jj@JHPmC3wm;CT8+Zn+ZbS#ByzAcXLRv^0+I-dF>V={#?h{0 zP!+!DqDn1jy6f5e&_*vsuABZ$&bqW|yh30XNfn~(l$3U#ae*V=u*oLxD853NUz~2- zTd2dCb2QgmZ*^w0)1``(ZEJbo)ob^&tJgKlyM&G6v9_>iri4LpY#+}<7S&l@9ivG1 zs4<0B+RCgHoyQo}eQl-mzSr4(=R_*#td@`Z)1zm${5jW7k*r-qsLcV;{6%kL4zUDQ zjPLe)q7!^c6s2QW-6D}^my2zmG3qOm70oEgQES>oCl}W1-b>B1btKy6UhdAx?Y6@{ zEciWihcj75uW5A}G!sR&(mN^FC=p~s0yCFcGs__0xNKEnaXitCsw+;`o7E*Gtn___ zQEwRCr1aZgyLNe2kKrv-#70!Ivy$QL3?Z!C#Swx>k})fyIgjlY$sB@AM$EAuer>p~ zO=6&u-rk!lZ?5MPruy&czxf*v@E^sq$_>mBTf;KPEO41u2spEU*SRM_LYZn@NA~LF6+N?Tr*u}88K3pO%DmC1(s_m?5=NPJwNpfj#b@IDf z%{Lv*Ddm*l@4fB5$^82qES?&+J|JHh-s*SyuClf;>3?syxw*QYNP$N3gts!RvhQ)U zZe6aO7;QD?;&FBH3Bs(LmG!&ds=3`m45>EYwc6=g+HG^Fw3bG=X1b0gW|fWv(S~@H zfn<1sjOPl^wLxOO_#S+rrk|a zgO)~S1mr>+)KIY!UG%g0CUZ`oGkPmuRc+JqI&CLaTexlX-AqYw0wTq4dm|)jCWm}N zHfALb^1+-Ctmktdl|Zk1F2+-=)eKwrbX4kj^iq8nnc(B_l_)n~4W*Uk1$`G*mt&mq zm&5q3;WxJHy>_6IT%+71$`f!tSY5tiZYT#RxX$jQyAg%2fqvGTl}ZmsW$@o*()=DS~Kn!1aHq%=v zNqOkC->2jpiv52pcJ(_K33X*} zn>gHPg!yM1tvR*yzN~7Scjdk9Z&v>R%>4JbnIw50Q?-^;`@@L%`z4%(n%SZRUcRbf7o9Sz4&!9XbGu(J@Lyj2Bux1(pb6GD-Sg}O z%G{5-YvJ>la^ovDt<5DR)imSK{R1Mb=YgRgw!n`u z10G#l4m;9KYP4^ryL^U~?Z5mozs-&!Z#vOtiJk!-B!W3}^2d;@tG!H&GE6Md=Wg!Y zR&svw=2}_xzS~&ZDO*im*R{Ow|_FO?)kR+Hx02qgTx)^n(x)4q*b_UopcAzeR4F>1!0}a<#R$ziY0& zu3Lr(CBofEuM`{nr3%}kxl$W)NF?%hmUR+FggS*Gu;+OzIy$z-};w@p7WE^VDHkrm|vLaG8P2a$#(+K&4dC!&xV zL7k^HrPPwO?Ap<-?5;zLkFT5m03vXSJ&bq;M`bN6kug~^pu!c-(tOCwcsrL2GtdKA zb2hYEuan=c%^Ox-{!jiGVO9weI19Ekc8qUwU+%9m#y)kB6&qiH@~F!2xvY|R@8{S` z_qN?1mvXd`q%zw9AXf+*a+z0g3>DG7Wn&XYGJt@xe|u_^M>1P)qt@$N+go-j`lqkS zEqt`>X%Z*$qh(UCubm1jh?gz7Ol=vAWmtiL!())A=@NH+ZEZZSsk~EbM7Qhd)Pm;N zWXjJXTmmIYWHEWU+{Ij`)Q&fZ7?l7`%P!?RSCFqAb$uWFKak{}jc??({{V(BlvgX| zvNJEwwh-!z3O_Q0^GSIlLPN+)H<|Np9AI|)HhxKT@9Gx1zPI$h;nYJkVqno9Cu1{6 z>k_)C5;he1ips%X%q4>0DxB60+IL%C`g-~9%WCT1)yJvr!qx8ImF)T_YkbOZ zYhC{T0O^qJXyWpkL}ynM7I|E@8Ch~BRP$W!R|O*=?%X|UcG1gJ?)Oh_<4M}i=&$7ZGSW$HX5Zzn;#3xL zBOGuMm~4%LN#rwO3q!kn#T>VlA}(EbWaEmJJ2!1Ff4S(i@-uL|z4w3c<4w3pkQYZE zXJ~U6Xvf`*gpdX&J2!?x>>PdWgjYgp>s0;Jy6LA?*5-1H*`b-ZDsoPV&!rEnKH}vt9WHzWQH~q8M4v{ z+^+D(FjcUsLdK&wCn1dyn{R!Vt?Kpd<~c<>X?J~BOaB0v(yQde&K&ueW`Mg#BvFL~ zyLphIQW1~HTP^oXDaaa2lG^zsoBbF@FHJn}y7~7eoncZDT1eaXOsX*+@MBgbyw(c2 zPO1)6U{)1X_D{(tuGjm`){FW>A`vuzlz%68k+wq7O&quk&eAk!=#I=6WKr@kK4ViI zZKc-TF1!4NWcn|-i|laS12itN#_a5lks|L@gf!O1G&uf|TtzUQZ*K#+3QP<4@*vbREN?@I0 zbGcOrkSc8}600y~2&5b}Z5Es8-S>;>)6l|Dv%Q*Kw)Giy(vcfWAD&58B~m!C8zU)1 zO}`_@w7aWPw8?XSz^yv9Wwv&0(YG|2lzFej3+M#4zaNw;}m zvPOKod4;fe?NXYzz1Kvo(*FPuLJh0>Ytu$O(c?(A#hk=Lx{gaR4duu83o@W$B?XyS zjvKbAb6KT+@4eqoG*gROb33QI@3-PfHN3AG6I=;Wc$^7glu0V2KmsLPw6U^;V6sTK zkdD9_**SbSx@je&dwxZ9{=X1_?6Zxfc-5rez9E!w(4EB$uNt1XPu;fSNl?Ep0%=E9 zw|yZC|Y!h^YqYb9660^0ht^B^= zZt13$y=|!LQap)}szVf~%$CwA2ois+NXP(#xq%>V892@dYErfA)K^rse<54T@GGP- zMRU3hgwDIuasB4l#>rij03u+5FaV5fmv-+_4oTTxN9C$rZ(}!2YW3H*`5smALfdYa z6sGM6j%gz}Sup5=NjDh7t7pnh=0tD4qm{s~rr|v^3B_Al6VYAYmT_qLZYih#01570 zRaBDy0Jj@&Q{-E@+FYz`$g#~g+1txmA&bn+Wsq!A3IJV3NZFs8rGC2zsKsBhZ*=tN zenUICd0zWnYVC7=@dPHoEQ_(DQsOX*T~W$zkr!!=a;G8wXKmTafmlJed!^FWHI#X6 zYrXdsCfXmV9h%+ZULi^V|zK+B$g-IgdjbRMhMaKdp7N+*ZfhBD|1?T{{WHR zY4Z_nEOFd6pJ7qa00Se z!~%pORFK8Kbyty+G6NHwzT!Fgfyn%GFsFQWF3a6miuSVCN{-6!bM|}%zN3V1;`+S? z+qSayO6}XJ7Gp@65keQ5R}CBQmf_qT@{tmfQ3-N#FzdH(-NkXn3NN<$chhsKR^@BY z{tsTH*6Oia`Ep8;M9H)Q!exNWm)VPvC4Rg1 z`^P(|+Z(09cw=WGNYyZ;tV#z6kCjlsmHpGMdi2pnHm;>~o3d8&{6#q{TInmLzm>?Q zl*ew)Ay82xQX}xxv%QVRq{x4Inqtpq?~0fdRaHRKbloM zc9)#Af6S77{uF0l>Y9AgWZ}(Kv zjr3fcw)4}e*Gd&t`J2~EUB69P%4<5Myi(#gRTu-m%Tx`zLb1P|V{MW%2bGvAD`D}L|SS77x|v8ru-0`#-d9J+DV`$G`+c!IFKtY)z0A7?Uk1p%Emfl1kkZJ z)0OMjx67zW$Is{2)4Aw+SHefOj7-a>+4)fd?`jp#?&J_MJ`q=A>{7#i#gq}WftpgS zEz)mW+oxdm$wkFR?e%>=?b(&${{Vz5b73U*^Fe!i48_sL_+%_q*;IMkcR?Ie6jEZ! zAjwb63s*K1#1zvp70p1b;Wzs&i^;4x{uZ>MGarM8Ct z<7+>fjLi1vk^HgA5jbt;DTmCXkM(A>uP<`lwlSArj!1)x%wKgv}z@NvXd&h zylkpBf`lqOV{Bnrz-_6Yx&rP|Ttyk>$=u;Kxs7e-K{=RCE?!%KAZ|B245~b$;iDgb zrPFKfOOC1b{R_cut;;J&(5xO>-3b{ZRWcQudWp8QlgA&H&(72zFQx>S<)?3#LA8Fr zhn>!E#2z8jbQ>F+`E()S2+1!+krNK;XD$$+CK9biolwzBcdvCww zB%1#KJ6XR|;D3l;5cLlnYpWDXa~*^;rM0z`V4Q7mJjVMo?88VHknO!wrx>qBjR@0@ zzZ+V&(Y=!N8@>F!KdTtfGsCM~M8N5M6#;a6)_C`TBP> zr>gg_<>}D&KiT75(fl!Gsa$KCj+>_}(Zh?2>$Oz3Me<$2Sz?jH8G+8zjlX+qS0zZf z-7n_7mY3*_;dnOpR=xTj)pPNuz!oyeG}@GUl%_Lq{{Un_V#7-U!eqEAQQhHIFqnVR zC1xLnE}XVk``y3c&0^Dcf7esbHDB6CNQO&;rRdieZz#-i+(;lu(NCCVd;u$~#CH74 z=E3u2cXL9+$@Nz2z3f|R-FiN&=HFwEz5S#-OLuV^T6l8CEIMu%4J_qIMs*9iFjfMW zKQUMG;{)$}xUCfwo~^#N{x0{d|r}>*D_aj`bPR;q`y)@n-|Zzhn`^2xyxy zg^c-#{VAI={HC+C}BjOM947*vKM{vZ`P(?%MuXl%m8}BYb!QK4bgb)u-w=4Rq7L z>0+#UY*x<295U0!ll(bwa+oqC}G08)I~^@1A85sFpT& z5rgKpmT;sZsXr>m_iEIVch=w6K<9@oy%ySTVBL7DPWvU$TX|tIq)xXI7Eq1z8B!Al zUR}F(Y-TYqRc5N@T5qr4{W3Y@+3DoHNK?f3liNo2%_Fp?Ap2l=_|3Kgl655t~$I_o?QU?{7`so}*(kE4@`)tNXZ?&t%DWAd&<~OZx=HRpxx?O|pxyxP^euvn&Njsa+o zEUg?W9InJIAZ!M1l`fr0eVIG&WXtx@i`Gehib;93sU5e)KZdF!7yc{LERxbq@!HvV zXIH*^eX+QCZEj?@Xh@S{$QC5?e9g*sdS3mu z>Syg>){|D#cW$4Jj|H{(!)JMaHMfYgdujB@wF{s%=rt?Y^#-&B&8mwVR!d3MaSV;- z+LEU|cGdk|q@Z;!ZYKYE-UW}c-l9*NKtNd?OaRe zTgWzkE9Vlo86!5;C$waxLXa&`BF?kab<5y(*0Tyj0-jX4=xjXB$IdB zvy%Ijk0HCU*KBn|r%HS|b9S!&eWstQ*j!u&Xyb|jH_(zfuNI5a{w-q#8!Ir7Q)TAcrLb0#86HKl@?$7uE=(^b z^2*y)xHUF!ncnv9+iu;2yw~5Mvi|@PyhUYcJ)>)0B)VTO?DvUzcYh>J0|41E+!Cx= z3|oq;Fl8&a_7^vFt$S*(+TNwLXMJp}uCIN+6E{xrCZA)d+h3>>-3yeug|1^*?b>;M zN*6xbru@OF{;qaxGhIHQ! z>6f}31!cdty4AG{d)w_+<&oB3HVIHhh)~_qmm<_P&pM z`kYO{@a6TWmR|?o>A}olS54KebqjcmD;hhM)GX{IL{^QAWX&V995ER+agti8O3SR1 z*S+n1#^rr&8@Bs3=C1k^N27Q$_sfDEUh_+yLSwo*u7fhBC5it4|H2(nLua(W;4E#LTw68x;@cyyjYx_Id2{zaI#e^~ap#qmf zYvM%HZmS6J23Nl{3~R94>7d*1I&dTZX@M{8)3OZw^9Y~Bvkye;B8yX|vJ8XS_c zBQB6_pwTZE5x<)O(*^WXs;rF02!n1L6gSFhJ*1tluVt@)KIFLhTWyt-^YuoCr>5IQ z3qtp{7uJ`raPY0Pa>;5G%^bgHFzOJgf_ElZ)+tpGqPNY3%??lR?XpX=?n_N+t=qPj zwY@r+*{eNz zb-5hATRk+{`FWqDJ`>aYIq)yxh3CaT8NI!;+K8;QEf!3p>iXr#EomLJL`O955~>%YYiRu1HcRot8{jB~fTFK+Nv}dr< zFa9B08%H2RG)ulzYPH+0Pt-aGE z1fZ(Q>;=?t2T>4+`7#i}?Tn7Y%6;+)TxFTp`?V>*my))N&!DWH{{S!Rp;d1D)?+67 zaI56p$DQb|3i)xv=CWWszsG>PbGK*$l<$2zejP>1yMBK^QtYK8iXE=7$F*VHeAv?2 z#x|5xAH8FVRE(AK_P0(#SAXZOm*3Tr;oG{`PoLacwre8F@=k6-i3D(Om7;bmP`G$@ znSXa7J4)nj*a&5#m-Jk->07`Htv- zB%&z!Nn|8|Bl96b1T#2~B=M2*{o2Y>z4Ym|wfoAlw^!EdW%usO5*w#6Eu3#P#&Iqs zNE+A)9!E(A(jGOARx$a5a>Tr~L%x>KolJx%9W7D7!DZ-c9OkTIrh0%Pf#tUKJa6eUX7kS7Nzm zg5{MZj4@pKJD>5TgWdYw)>agw#QwjcoSc^fLsepsb#k@262eQlgA>4 zbhq-u#R9ZmTs}(eGJ?&HMGBm(^}G4}{RJuVw70&R@AC3G%MXOUCX?*&uz_TbKQ`qx zE2v_+hh#!V^I&Cy;8E?@2|-omEb>uU+|f0@OVQ= z@fU|LwJkujv1!&fkzCwLn-W`-XpJ-}FoGnFr6@NfgK=No=AxwIN)B^&f=#ycNp*Uc zMw6>J!XEVG?4p|0zb>~uGsWMtZMVYVAD06bnTYEw3(mJtuUMmQct5TYbmDKEU!RoZe&%1P}H&H&3NoQi$QZM6^b&_2%vW=`;`34#dl&V zR-;0tNK$oY2ugg3UQWvCCEVh}Q>R+JI&~_lQIwQi+p>-Ox3TvZi97}SI(!)LuCd~c zd%~Jlq;x$Z>f+uFYT<4ryOvS1)zUc&TwO~e`5_~Vaya|A1CNKw^W4)m$Gkl_S}ER6 zF;G;Xwv^@3KG(VRd6y62@Hi=Ay|kY!Y@2J|dnlzH`Hzk?AKU)`_KfheiGCKJgZ}^z zZWzd{x@W>|16tIqR4b*dNvdm}V_Z!X1~KOSpA9zem*)9@M~x`Tl7#*DWShH;uDYa; zib+gO&p3y`x*QWd>^dHeJo7^v&v7lCubnJnVrBELCxTm$@`d~FHWFi; z@@gf|C2nToozhZ#zIIDyRpPc<`fH=^b)!v^-e>b&Y~h!AjS=FuMS&I{FvbJ(0-0GQ zkc=M&|aS}$$m{EMWBrm#GB3-D% z3lfa{*fpY~E{U$aep(s2$$hB(_wuvuV`^GNid)N>ZYT1@iEkl{GeIPAI?r)#im4+= zu@(j4-sADD6*jEw@9E@cD$(zE{$J){%cel2iJ*_pV+y3LD@74jiCLqNFUxRYNn~Xc zoI(ev&0Vek01x?@dt3MZy?Yg#OtV9Xm7F|{KG0WWZlyz_ppAl~vozs@0=#bFYNKoF zzg=IiQS;sC_4}EHcV?@(u3}B`#-F`$hgslu@{f{nyLywc+27^w#aANf{a>k~pMSr( z?%x2sTj8$>4-)AbejEs>i%8O5^Ub@zqN$z^8v_&HgDlC#AjX_7AMqdUJi+Z|BhC zF8(Cy(mk}-w;Gi97cwmIy51XhMhM~Knk52I1g0jEC&}`8Z(8YCY%Mt{QlUx{SG1!D z#jcN1B~qmCdC9J-?%#J~$FKEU{{RtOJ?5aEW|?Pl_OaNfkQ(D-Nw#U?-agYCNMjLh zMUFI4v~ilzHR_D)?SA*uu7sBQ#nrXEsdePWjL`^XXz-B4BzRy*);Ne}LjF$ixm+sl z#xqyW{!8**!n1SvESq%?Wi50<(0_%1vhKy;6GozcfBp z_SgEcL2vGkURfqCkcEX$nDH!dF_0McNgQHTXWYYcFdIiC05Iomz1H_y{s>lmzt8S6 zuVL~`&-N9!8C~S z$lxq)JhfGgBTet+03LQi*9;rW8+PsB8m)9oUoEc0?W=b3`FS!qW7Q;zPqPO`g&=u% z#-zzF+9XlsvVg`SvOkxeKp%LpBD8{&*3G77?a-3W$6tT5K^=wt$D8HMWro({$Zy_! zk%u|U;Z;a)-Q*9O2DSEcdq!IAq_uv%5iUt?()DJ#` z@y=$B8B*R2HrcM`o=KwF5ocK9SW&k!nOa;yNO}n<^j*59})8F6wtMR#y*P@-$f0mww zxqbm9`JMHD8hD29cg(iY>Kc`gnBXXk#}%ZXXK7?mzFg961gl}WIPZ>A2OHF>Hng`Y zQD3djdbzB$<))XN+x)C_I#!#{=4 zXf_v-UcQ}sapEltO`JBQ+YDNb*;|DcjPh?}NMdNEFXq}vbI2?!!pC87Fyxgf^2w)k zo$RgGn`<4^YSy1Ow2iFv(%160b2nZ1Yv64n+fcpJJYM(KR(1wff&u%qSpx5S$p@E~ zj$U3+00Eou@!cw4W=>u0b!&R=j>xxrNm*X~_uTpSQMK^CudY~ldJT5k;yvkhuHtB| z;FK6bBN-A!5+ku`0?cEMKbf|+4K)W9%^TU?I^O$j^EI_L?R9+}uhVS~i^Ue#dPb2P zv)$NV`TqcHg3`__i(9D~BOs;D)sdyQOmB3Vq2DubPg6yt?3!tHzi*#W&epf#{d7KW zp5bP?hD(JuvD-RHG~!*~Hp76is*YHhScx|>M}RraZxrn9cPU;xw)}78VC|!B$!mX> z-!onG+nFIZNgLeS-OU`3{g&OX3j}ez83H*Ft4uy`l*WEt-zcP$=&aV7yKBClW4-*= zmbRg(=&5gU=ESdBq~d6l0u_s;}uYIjn;`a-I`vXh@_(K z?DSjr{{V(7Xtwjmc@TzJ5-9?v+0cMS8e%dOsgvcAKyilWrrgmr%(i`d>wPxp5lwZ| z(#O$%4Sp#2kHDJM{5poGE#wkHErm(9d++3Sm?R#IdKI8Dlm#O?%({#!8e~1@%+8FZgW72%s;)*Lt zcDxW?Tg3uPBUwTc6-UD;TreZ<@M38}`@Fi_M{m{jJMhwc&EDQ`&s~c@5WXG#qe-_- z1_-Sq@XEmO#VRM*%8P}Pc6N?9xkgBw`H-_Da%~J3r<3g#8d8koc**N~U)5i^>cX6= zd&+59UrjEP=zP25J%7b_y2STdul!4N_@K72TWbi!cJ|Ex{{Tpp?ioJQbh0d}T2}qs zAScYbPCaZSAmE)fcwM&D_4QA&lI#+Kr;I6HuwRXRkt&TRYb-I7o$nc9ZCY|D4P7N@% zxQXSrXh-iQXp&%KMIk{UT~N7Dpr;%P>T~9y8Ogi!=&$De4rIA%G`#k|<HhLr|^s%kc~E#v}SG8bz(?QU8a&zS!JYEl$B;zFywAi+k}`J)w5Zp)e4_ucl} z<_o8LwYyJ6*U-k&HSK%D9w)N#Pla_GjVHvKee61&t?6+hCApM+rqNVM7Wk)#eVXDg zJ9|KJ^DqEaI*yxiP3opPJYr3(@ybmzWvb>rny>b>7<(dK1bD> zpT|q@5Zq}xw}4{QbPpEmntlG6;?@vE+GO^BX8S$8@!Z4+?6x@kOiYQDCIEhTI#20Ck?;Suq!tE-?N`@+B{~ zELQ{5rCJiC>B`r?y87Dt{Ldb(8Ae>|Ref#K{sHKp5PUCVhMv*kOn<4rB?pFj4I~U2K?c1gyDe4!0Ig5Y4SvpT zHsHcO(6?~3?F-2lkmRY)m*tg73lzwZNPMuW--n$jTFb57o`~s_z23{y^Yc270%?%= zw_MZoY2t?6b$vs9zhZfWVu%+`y3n+;x0&HUd@ z4uj$kg!I1w-`!hV$!#vD3QQkxVLaz>G5ksv0rGhWN#_Pu9kdvkEJB1LOGy~Vx8)ts3lMe|?^e z%F3(7LyK2;==5C|m!RPkpPT;xE$+IV4~72IJi07K1x?z0-IBo3e)4JHfm#WeoNk^2 z<_w11&!4(8j3XPpHEzkLsna!R#q0C@Y<)T5nJqkB;Mx2Yt3;<>&?0NCGU=j#HO`kV z#FE5DixON-X>+}zP5x+uJZ%eDR)eKe+FiPGR+{LfmXc|7E`o(v$}38n$EDKge*XaG zeBY=o_k?x$^;qrMuXKx*TbLS9t8*MXJori}+JGO3yw9<8ZEoV)z)iilY)3rNDZz3`>g-P$3B$gRu-tCB``95b> zjfQ?*#%$(# z%(meRyeL@WIQEGhoMYugGVd}mR8hwpYo1+fy!!Rp=R_Oq{{XG^FT`X<6M5|fj2CH1 z3~22h$B*|T=9DhuButFOP8V>lciXm)^)^kdSM}<2_FBqYi(6~*XRrY66{{SJ@GN!jldVVKVWu>iYKbqgE+%3El*xTRP%WoyDcZ_`4-H-un z?HOUQ%#Po@EOFAZ_Pmm|s?SyZY-1%B?AEP(t>|}p2C^qu^sBdshYAI?$VEm{uKOLC zP?iCfIGm_tUAuw)AFs&sXjQfk6(rQ!jVa09S?S3u{{ZBt%x1ZNvu_cHT5Hb;uZ6F) zt@xAptHBnUjf|2-0y@hWA7__m?&RFCBycL=GAYXz5n)RlwmN&b{EfmM+X)Nn?^8)P z-tqE0tQKgeKV@3>zLI-s{MPDxqvDSV-RPIoL{??D3>$Dnn4=*CB7v|nY$&_cakWRy zk;jCj_LAjmM!fp^9_J#JxgFEhX?^_G=@=7fsjFDeVKOnrTsEUD3>u;xh!Y zB=01a>dE)iQ@>QZ-=ov>HH{}7Z>|1E=C-qA5?tI^UwMXWX|7x=2+3EDQwUjDZ3REk z)#FxdM-dx#;=SxVXYAIuO)Y$$>r>0A2&XQVZ(Vw6dv!fO;qAoBrQO-9l=9UaIx2+0 zllQ?{KYSRnoq|GRk#Xuxe7_M=<*7=4&l#^h9ohAqIQgknrkBAuHMY`Ew`0GFr+bJa zHxA*McKNpPuJGex?wt&4x63lLfW`?6_qQ%<xE*G<_k>cxmAa*pi}nqw-7 z8Z^L0q1p1XEO-J#=6>xL?|=hss*-lw4Vd5}+Wa?s4N%8{#^ zcR_9yqls1zD24z_xnvAtKQP8kWy^gVmagjFwzh?)(tCN`*^YTO7{{AF!gix$Z_J{SQ_#|!HfsuM8_Pa0mA+7AJt=s(i8qvt5l31lK>f{(B*s(`G`8Oxefhw9X|mfD&{FHIHO^t<#LZX#!vMqpAk$}B=M9&OoJWLHw5k}()WD9IU9 zo+=W({I6}V{{RH3OJ863Vv`vJ7VwmafXgiR0$(adXOD83er1Yvk8af>HBE(f=WYba zSt};*X8LsB%(%|iy6e!qRxq}w5_yWtB(K7}Zi)sDS1A;N9HelrSm!%VMRHCTmiyVh zwsyIqsFm%%&0qY9Bs04S37sY}O!2bDis`kG2_o{x&c#FT5-CJgDm|vnce}l`YTEQg zJ2lgEy>#;!vBsA2Zc@X{j!lrcnYI(ik|c=tL~Jk&Fc0wNvzqr?^IC50*62yQ{JN*V zljvFU+|73_vRQeX42=><2)K|WMFL8y2I5Mqr~_%*xX1uuQcBHPFQ0DSg<0OqS8ME+ z`{>1h#E4~93oItbSjep;bgKQMVOSwND2HMjD%ne-qx?G`sBf6V_WUk6rij+|Y4f+OlGo2>3Mnn`eQf*Rzj9}hW%C(4*@w;NO0qO% zz#REdAS(X=Aw&+H(>!(|$v=nvIw@qH&Mc7u`=Xp@GJF_XAuwf95NM|Q8wl;CGOqeNOk{{UEDC{;rB=qX!$Jzm!JeFc4g zN3Y&V98$#4n81meXpER=WN70)ag3nfBkxuqV6jXu_iA0zv{kj%+O2iiYjuBKtFPu+ zdw8b2h_d<6;vn!MoVhG!D5cb-NBv+|Bmm3K3f418x25mBmi=s>V!3Z?T`xV~+%Vgr zXh)dQ$LBCf0*01Mos6PFce(kQzF)hV&BgV-o8Ip2bPiQ}bABC1J)0p=Kr%2w zVwK`V3}auMAKmOA75l?-jl6Bf+@)nCtnbsdyS)eO-oNGf_8q!ONQyt)GY>9NxJ-&6 zWh{>W04P=51MTv*CgQpDHn!cHz0$W=ZN!$1CGT3!{-i5zZdgVz+jw|niX#{)A_p$- zv=s;wXhqxo=3Trr?zCy`+izavsJ88H*YYhoAh>fsnF69LXXQkSD}>xtQ!HdB&v?u1 za&~>(VAZK6-Sm#uUHTewrLNCT@2{5k6)mS|We2aj&xy=ok#eXYy0 zUR@V*(z3H(@ILY>Ox{w=8cCfITlY~TK&;1ZB`8riN0WNC(n9U~$y&L}Np-T`+FyJ6 zp(Sgyw_+^uOAHgjWQu5%Y!UgNXOWW*8H{oWywcz)3jS)3l-%h1^ zKAQLRu&d{+DKX5~NU@iUBgUn~h13w~{;eh~8(_;m0nR9vdbJFHB=BzECg z;TgW^XB(PDm0V?^%!grS{{U3IbH!&DqO^RQ>)qeTi6^HwYjrLpP)!p^%-_3oK^cXW zt2^CZ>s^;i_8Nn`)27#3{{Wj73wwyIdGP81iSGD~8 z3UXR`_R@I_(FbJ{L}3C+ytQPN5<6oYcv$!H&GMbyuxTw)vwF1Fp7ZZz<`Smm(JxJx zPrRBKXEvdNv}*v{Ac@BIMoCw`8wwn!ceJ*);S?+sn@O zBFco3rVYAL8ml=l4ea}rv}Kx9L$HQrZ{4@|cN)?!OFi9^c5BVwu`M+9`?R+9AhnJB z(n7NoE_ZyR3S2%J$x|Xm<=1iC#BTbFO{+bc+4TH(5>3Cnnd7%Ct8pUvu{4fCwsH24 zCP$5;lt_1@ayK?(PEOO!JKsj_-rjvaL$(uSf8ord%et5wdPc=%O^EQu`%#oCjLf-a za%2V3eNQwgJ#MyIJ8k7|w=~1I6TtHooUWGb?#n5*KLz z1y`;(sOD|iX|>h2@9A=7&C9L6M*;CQE$(zym0YQ}xiUoLcYbvCB zh~4SSWc0H8t>oXLDP3!R-F|lRJu(=sZZsGs0ph{)&&e2TSu&)_A|I1v(XPh{{2zO6 z(Nk-~v){JNzILUf)1|!*pTa&e7xS-&^#zX3`r0XDNPOUn4EKIp8(@Hd3lYZJOXx?9H zJ-VKT)~_l~?L12jyfPMM*rVlqz@P>a9j*XftMac#z!mZksNMS|qub3{_ddDBZ)^45 z$c)A#jwqjbg_T)Y7Xc+Z!?-c7;9GM-xsanS)9+eE-p<$CPwTjw(d~78`Yp7-QDco{ zg`O+f<79R7U1B~`m&gd`XjwOpIGz>4uio6Xv|C9vD_PmUF5YN|8@8?K-~JqfYpF29 z=a+w%XISM=GBzQZ8_F)*0`1<#4^Npu8fn`5uA32Ow%cmA)AL8fz7g<-r{gVQY^|b( z*&~sB>EdRR0I{O9%_;!IxQ<0t2lsJs-qri+o!?uZgUShOx8waY>pMSy{ujE^k{ipp zTJs_%xwX4ij^0zZbem&VcE-TUtTN|~-Kjd#PS(+0_rA+}`Lh$`uZmv}ue=wjY@g4) zw76@DBGduhYa}M&CbtX`RU+Ocz)k!O!*|V8szyy|ZzsO5rNH`c;2(`VE3No)4-X}s zuA8iB@G4!}#{#sPoHGs0a)p&7Dj8yFA`gX7-@}1fRF#^$(_4SR^DZmN`K`Cx?TS%OGWBP`q=K3cUG>G}3z<&FIM_4K{Z zH1XfVyDt*iNpTEOwav%ct;`z|Gz{i59EV`}WD>iUWjh^lfLoE@LZ`dQQ&?X|+WY*7 zmDSX5uY2vk$oR_hOz|(m-w?&C=~G=1|`VlX*UTF-oz# z=0L0>i-JMp=Hziyhghu_+5WdR+xq*COZJYrka#A=4jx(Vr4n>8$FWi5B6U%nm{0;0 zA^UPFD1EOazZO(pr_cWYvzDIoc<=2jL@>jpe(@0ti3IbiowDvDbZD+P{{UAbDcr1h zb>F)f`L};X+suxw_p$mC_Y$Z}brL`kN%G{7W;I0$(A+@dVmM%doxbdwuz2H`WD=tO z>7C-W+;=)pG*Ck86s;_7%P2s`B4Y%Pn6KSACndkFdI5*6_`k!ND#;|8_M3BeGZeS~ z07c^N^4 zOtRpqUIMqxmibLbwUxTPm(BT?Z!f^vD!dPaj_YW zIOW`5J+WCza_IE@y6@N>IJI_@`F883=*qjBQM_oy{oU=u%OPUY%Ot*I#J~;fFUpZI zP{}FrTqFDa$Thq+kFzb(yxQ{>DC!zv3Mi$V`)Te>ai;{e<~?H zWS~Y8M#tPAHdn1r)?pnleU_d3dYvCst1Ek|8vUy;nr4;1fOQsx8-bKqeHUe?)|?)6l1zyuaRB+edV(yo|KTy9H!NkeAwREAxM?iS!`m<)=;dhBdn4Nb;Bn7P5k)#J~pD|*0#c>M#!UPqi2Azt7}3Li@i< ze_DwC2eY#b*P7j&N%DsC?yQ=2b!FZfJ>FuLQmG0`Hma`R8lB(ce!39gyT8Nk`Ighe zUK3`GAiTcS<+u?O{he)faSAb&H=XGmi1GPp%LVz0s4RZ%G}kqx_56Nsp**otyMNc2 z=$1Yj(&32BCx>;oBAR0~*LtMTSy@~O3_AoN+9!r7PSY6kvE}ajrHyq(K_zW2toPUc z32Ccpt{t=5gQu5}{NZ9egwg|7_xRY~>XE8UDrbyC7P|l*^SqWjgpc*9$ z-d0|{di4csw(aG&ZiId)_=BYAvCVU7;q6BFEDrD;8%z64X&i19T+MfWlEakp!pu>m z&q2t-l7;lPwy~V%)!whIqkq)L@h8Ub5qP7)+E>Hx53ktlrk-2dq?X#&-&c-PZyZtY zyti1cOsI_U$^koe`jWZ9Hi^hFM{=wv%)&(Z+#gk>lOw1`4E%)W#OI_45A!gVfGdIaeyZ^l!J^k6!p6 zZQ@T8q!Q~FPjWxBl1p1_xJp~>Fsj6h9C08;Hvtu6*jioO3a81ccKv&f3Am>#`RTWl zKSY0SKM-AfDgBvz2m3jAet2y>U*oHE@z=#@>_b5}nDW`lr)U#N9%YswvcQvhhvtqZ zk8e31ZW(jps#JI6i3l%ECk`eQv`E$!%O9?Jm#B z^zttW;(;7N95N8Y%D9mwExAquBM`C1*v`@r65f=Wzk7BxT5Og3y~<7JJ4TF=yn$P4 zC|ux9;Bv)F)$FgfnDMt3UsyQ2v;I&WkX!5;VN}s~tX}z|4&2lTNg0|Yf+GL$A z=2a-3e5nzdIig@m^8gd5Z0+O=aOP<~Sf$#_eR_8?X~OP2&hJL<-=~$2E1Bncq-R+- z$mB^O6XdWyVaX+&x=DeKj8EmdR#sgOXRB_`?{|GRvFIKMyw~)`T|zBmSh2K;x7tB% zb#W9IS20M@?RZ(XVF*?XSLMmTUQKe>P-~S&H+!^|(!X=2im0`2R#&uJZ8y>D)b{Ng z;tJZ|O>^Q&6Hu^*3GQzaTLjf7l673##c#bL$hvVPCu=X3c9WhBai})ZX=?1RYiRYo z_B#31z2*A--fWI7cl$xwOPv=+jc;#cyN6FUvqL?dw8l0_9_A@`j7E_(5F_rllXl!x z$~Jl^wSDd7uH)xh+wb4F?Ns<;D~oN~OuKFbvRz9CqdY!Wl4CHNc%_C%lx`c;yB2ig z?&gwFy{)hGo}k=cPWx%|GscVH`@s~Jn$L?Y=8@m+4fbm``z&CnjQL3*ZTD|&Wi-L(cAw3!cApu5u17~+?Td)?6O7WkM$C* z!MRhGP%=Jj5!SLzt(vyGuPa{N3bp=!*Fv-CJ|m7*wzM`Hkd_x&LR`ZGBBBL~Mg})5 zkjWX!Z$$nsK^S_st3G%@=m->f^Gu;jaGxclFqzec~oI!qMeuS~rL=K69*l6p|tUrdl!; z-y2nzc6g`nyJ@?+*O6hj9T59e0iL143wszZ2jQc0{f75&)qe|W;@n4H9?L3JfCfeTNneA=u zCHqCgh~0s>x|~KM2p&l66h=Z@K=W9E8y)K1c5ZTVTcfKE*8`ou5Yy=9?~Y12-NMsXq%I_=+Wmv2%zuI=rhn%SlE;y}>8%XO9@1knf;PmwHT%W)g+`J`TR z#X{yz$=lCup7$GyOV7T)(km^*yXD;hAjb@>LPI9#lW9bFNXgu{onqmZ;^V?G9ouq3zrOo_p8{As`rK6Sz5X|;#BcrTEbmAglz zo3)*`<$YNSFIB&lyJ_=BplII-{9)nYVq1+GQkzQcMJK0rcQ#+K z*Nbg*pY2U!TGO=aMf*$1b1vy5iYQ{tw*nM#A&wZti6~`h2*E4zn&hFJ<@l+^o?%1~?8>#gAj=>CmSss7bD5)MG7sy>5L@6ChHj8B~0& ztyQk}()ZZy?Z0ME0$LT0Yd4pNJC#-~j?y6;nK!gf!I5 z=6wE-rpIdG>@sTemYcm2+weUm-{6PCtr2Y6)5CDxGE3)+i>EWokak29Eap}O?pUJQ zA8$W48oY|UMVi!an-=5c6&TxF+Q{@FmEaY3VU5_~T3%P-olygz0o zkr2O~r*i zbzNE*Wq8_L$}(x}te&xdiTTa(XI1dtukqu@S801^2Zrx8Ei%T=dpn3ulwgNVwzj&v zgUSL8&o|m6xoGyqF;VjT*{|2~%6O%K!u@%#t@|(EE5C~V>XYj(TVGwz%ki_ryj69E zPwM{Bx?OD>ZRV5mK40+Oo2`5<_{SHBycc(EsLSAA7A~cs>UMIUvFf^Yz3MIF$1G=W z*)O!Io&f_NCONki=NRj+ho_0d*27g_yRA-C=WQ&ct<0MHQSNeK>(s+yX<})=dW}fb zSJp3;-KX74WA=Ai{jB}~>pCdXwOf0;?LS%5B|4Umec}7-n0)!ubk?6VNK$AY_hM)f zf?O`;ZP~BP7YOG#Ok}MWh(V2K{(QLm$O||d9JlN`_Be=x5txP zjbFu=m-f13LfcQXzq^*|%TBhn8={UhF`1Hfk+O;(%{;Hlya-C2DN0a;BIMkr;|Rsc zrS_lNWls@N(~KoK$}ztzT;(Xn``Rzz<~>Klf3o7=>|gEm2+=F~uvy&18a0D?fQyMF zxEC->w%sHL_paN%noAW3LuT6k^8F4sI+FNdr<&LLN6~%}{fqo5sYj=+_lWiTn;5g7 zGAM2C8D(Ip4t9OFY*H$!s$2$=HpkPJwr1(ml%W{PTQ9Y1ZMfTND(S7>uFG%0`cJ`M zu+PCIF+KK=t!gnmQCnU}`rfJ%;3TddI8)DsZKU%z!s}}aI;Y-d`D>5+a}n(MWk#Pn zy{5UXqw5Z@=3?a9cDlCz0PyGAUkkruKiOK<;<3~|1L>Oc+muzF`%=~}vaK>ImJ;3m z^)692vdbwO*D9-u%ARS9j2dry+FX&kyZs8M2~E4ZcILXaozKuO2mZ(3u`Q;Z9EbLB z_)^lc0>b0NYbD7=i2*kZ&ZMrvmAMWXhSqPErRG?s?yFS0?I#uTQ53MMYSM4jG_C1# z)#vyH`#9-Zdk+o#4ESNEBQph7@P3B(HnJpWf@tNA-P`4XlrNN_k#~Hod8t{3DPQ;1 zb?-Sp#gwq|+4D8)rrIAD{?dQ4AHlzl-U+(!R=ME+01S9TTDQ0whlMyO#%=VE)*ZM`sia7NP34;ZLb171DN;#e`l~~DDok*{W6(r>uN2+|^3-d;EqX^&U z)%99f{!{#C@cj4_#vU*5rlEafs>$Ikb5qc6H61(7HdigDTuE$hAu_6Yfy{nlgVrCL zEEr?!Db`hE3X#7g;Tf)N8d6u)cR5;Vo_us!Y_5Ex0>K2xs4amjE?I;B01~Kh9`Gmq4j*jk#ole&3mrS1hrpF+NUX`FC@`&zWhj z;=ijJEA`jR&b+scB)G`9UojSBmNteoPWKQL^OxK&2~054nL&EI0KuDblT zOSQK#T3e6`#?Bg7jwzNDw^ny$*)fJ#!9|WJSQ##WR%hBy>elkw?fxd0DoJhh~$zG1mkfCAlnMci00LXpR@PnfE6np~ayyZz0uRXba^`Tgd`k?=#udi|?vdUl1XO{UyJk{gG% zFj>tCh}6LwOzAqpODx6KEJ+sZouE`T2)$))_x`jWG@hw#*?tV{JU#n1_?yHLX;-$9 zX|`4-Szl9^RK1zzk_2LcTRRw$)q}|kMI4eH*b2%(U@MZoD-BM{_jh_Ff4=)%))Z@0 zi)uDkwz_Y%9{!+%9V0ocjBFy17hHR>WxU3d7 zo$nYsJ8qZHV*aZnuH>)RPrp`SPw;cXx<`t%>pf!EIwq&G+AU!q%(7}EA2UytHmq^A z(OAq4HsI%UdEJ3s_-fRv%FSxG-F3CnM;&<7rLK)@Yjw9rbKR^y5_~?RHqa>hF^KRvo1Jzo`w=XY|7Ph^_X z{n69K@asyliWy(Ra9Bqhqbvq{7O^8DG0by$*z@LM`yEik*S z@oQawGsZq9>Yfnr6hju)AKD8bnj0HAA-Bl~=$Y^jkNjogpB3xZ76L1+KFZD7D|n-VJ9}6@P*cf87!phO zO1x``dHH1KyxNtVo$jCaS50@fW7doz4|Ok_v%hWo9;5J!;0@Nl2-J0ypHI=PjB~r* z2}RbYE2=X!gh&L2L~#3vRDie3^5jt&$Ksrtft&wEqByzUSH+6`qBoX{%$P z_;>73s!e93!yUA(^`Rfx zsr{*~_qR`xDVxN1Rx+mBdt{bYmdbUtd5@PHKa#g{wl|x3Nb^7CsT?ofG@gBU+C06q zjI{grE;(#d)y=NPEE;c$bm%R9$>OV9wq%|}hfw~@hfESiWJ4ji+_yqGU3{}|<}BV& zIod(Q!#J+p<2(GL>w7-N%K=TTB9mUX(_Ign?7lkuO1st{PSlKPV`Vu*>PANUe`HJV+1 z?k2dJa&52fZYD@?P#_UTE!k(1IT~o<$dmv-g;@!%Y2xZi?o}q=Zg$OKPLg^gywbLw zR_Jk>x5Q5eY4A*z)>Gcyt+^JnHOTTUCJE*@GPo`aq|qT{FBu^2$p*M;PES_d_1XOQ z>T4-eS}oSrzvFY~PabMocByY|s9tJe3hK7f+lZ%fV_2mP_N0W!7AZt9vqvc1ER0Iz zEoZFXy4!B?vU{ejc4y9?N8jeQJg>#y6YupM9zP4{kNuP3`6QO(Qb<}ud*Vy&y9L&% zbubefIHFy)R;pIo7|wRLZi-lV!p*D6JFRq!PX7QiIZfGHv%i|Qwr88^m!Dv|x71*g zWq2+ZaZwwX?c0fnhnS~0bvqS6Lb=-5$l6i5<+Ac!Zo76RJ3FTI-pi+F-p8rwdftI~ zb!TN~1>@c7vY+iMtwP~qu(gF(%$DW|QZa)hW9DfN)cfBqb6LtQEtZ-sdf#tS?yuK% z^U&sW37Q>ZRY@8+o6nS~vySnRVP;Em_VYp%G-5DRD~4bW-@GuU?76MBpMI=xyL~%u(4_8*3QUa+0!M zchPUNW{D;EzrVPPM1e_`;zf=*CzKfX$GdX{D&H>@ z=TcH@N2l_x!%(%_*88pP{zsolf2YEJ(w7#~E*3V07_mVUXUtuyv0>M7a0ui3yR$;} zjcn8V-ns+Rub2EW(&@e_i9AE${cJ~PsoC0F&!*g2+@zA)-NSON8hxb@v&rR2DG4j7 znikvg`WBRKrMt7}o}cC9bnuyEOhx{Y>z-qoDj#@XfZpWR|~e zHXmcSvWgg95e&*a>5D7M(*d+cD3yH1KQLy=$DfSB)5JrXD$Q%mwAq~$Yt)90O{@I3 z(OCJ<;~&BCXKyaGXXY5v1QN!eU^`B)B#;GSk@;~fc_d}F1Jba;##l)EH!G&ww?)kQ zUt|?pt0y#)ebe7gz1i{7C)lqfx7A=kE*;s`!;-5@pY71guW`$t?Y%Y zH-B!_{7s{2mR3>R`K;20nn>lA;pB|PG-dqgTWcH;6cM3PX=!csS6`mxxum?j?dze+ z{7m>kt$aW5gIr#C{{X^%G`iF^NM@5w(Y!@%uj=+NnG`gWzn=2N1g|3^hIJ9Pes7o> zDpGOyt)`DnFKr#W4i}Ts&ue*f-JByiELX<)1uLD^?Ut7WWvt` z7S>jhi2R7wE0t@R)n(k@H)_tDRGpo=uFBW8ud%G+(Xn z_dbS>$HCtP{4ocLyis>(Z$e1=4vB0x>N=(W0NG?=6fn7kQqdHJndDzB6LH#`YA1*G zk=IQ&w%5}C03k-AceCG1U2Em$&yRdt@q@*lJA2zHos!Q}xQa;Z5!+-iw2~dR@W7JE zGRA>a#iRF85 zvcHu8m2wFoGv~*Qc|>{f?)$5n&ZZ(VjJaf+PAbky?%HU&*r>wNj=H^5wUYH_x5WPd z2~BBdXX7m{A*g7w#T~A%B-1s;){A*5jcsI;cpEJmS$wGRg(ro}att*^QuN!j_lH$9 zw^#mPt0^aYY1QhjrIeHGL-0?>3*he)TwTR^6}v}jC$NpDSkbO6D_mBXX?eTh&0a=X!}5w(Jt+0DJBKL8@H_M=3GN2Kvv1F>aLvWC#N;N?X`PJe2i$$blj6qmj3S6*Hv}U z`S0VmfUK`P&lqU%B(_?lYpBen%iGyrc}orSL4YR1XCX}bHa zbknIRPTTL?`BOpFZ#*mFD@|SqjLm5*cPncopXi2ILZ}XRZ;4X~4$u>K@hcOKchx;( z*>^i5N_M(WYkk^S(eb{aed29i+SceacN*-;iMMaT)n{adf{&deiDX!nHik!5+QXa* zN)hOxA9?vC?#YxJX?1o<^w&?k`+LH^8@2GqhV;z}+0jmyrr9WF3eJ-`R?7X-GRnSd zxM@o%=aMVt>tZKbtmi_%{}zBxn9k`F6LD!FNtoQ@A!Sk#!Yv1q04)F zY%V6a@cyjYrLWI4cG5u%Mj&k+-R4(FXSi4SRx6Q)<%M)ctBmfG)=6&kPosTJClxAI zlzMO3+k1H*N?04O4&Pa8F~u#0y@^*IoO)rZ22AkrI4i6vrde`jGYRDtFhDE@#zbszv z+C`6I$0?ib1{Y=d-}sw=IdGDd4r(JHEl4egZ#>z?aK>30BeqJk_?Q^=@Up0TY zd5vOGGRokRWBWQfBF7R0^JP?xS!Mg`BmqH;2H>7)Ke=_jyLKm<-4*xSx1kiP0!eH3 zq2;~=n~bUjv@#e>f-rY07K|w&af8Tib4jiB*U>wCyvcG`*ZS;>5f_145RY>SQ12AB zq(0OqVIoM|_mLc9ET?cd``k>UWqbPHubD~q`}It>9F1;-?Um+phFRI&+voFTjgipp zjW>ao%9mwOHm+-)aq7PB)Y=s_wY>ZOJq?6&5su)PiuU(5;HT~v`b|tZ%P|~Y;)^9YE+f5$m)>ZPv!I>1{3jOF? z=B#R{&0VchO8Yzi0Fab#Cv~@Om(^?7^i4kU&r`QiBnxS&qqguFkVuM4uaz`qUPPT? z+bWW(jC$iW&ZjC?<=>;}rn-daMti%fTHlSC?A{CUCAP17XW^}Tew%e~5r<3FeC3rH zqgjJn+{^pd+a6SIxFTK6xNcQA{Ue5WomPx+8HH4)m9X{ae}AHY3&j@5t==~BWROe5 zQcCf%ta3WLKteN_RB_V2VN$8ATpD_coieHRYZ zbn8~8{@Q~}vybY}T#ivFk*)#q<7P)>-EkYn(!?#Wh!tBq!=e@eVlB;l6-4ga>81Yw z;m^<^RVbxx9=iVkz#djYCLs}p$cAPm6`9k@jRb8TG+22K? zUx1voR(f5h^Iw5($~m5W*#Jh$Jo3-5d0_1xPu-eEr}z4lp3d6Y z==}FBNwO7b7T_Cz`wVd_w1tAQ38P)8WQ~&^VzTgC?) zyy-J}W+#qpuvuj>d1K8RjIofV3G(A9lA=X$-A*V@*6(L-+Us@Z8cDxZ>eAEZiEYvw zSk_7LzDW?Oz{AUT+so}K6Um7R$K|kXjrFK)D|x@arS&a({NBi-uoH1J-Mcv0#Z;Z^ z8^#yx+ap(9!I|0QWRvdjs@TZSo4Wh@cF>MS<$Lbe=dqx^OGK@XQ}>a4gh~PwNZMpV z>LfmE`7uQ59F7;EtmP!t+ShfX`Fzb3UG4e(`;Np?ZIa-~vhQfw-QFu?MqtVneo^NU zxU#f+_HZ_`=CN+;ZGL4a*}Xfx_Z$dWVtdyUMkF&uDn}pysl(uH+@s~gGVo4tqjhGM zy0rIc>-lyyy489oeSfQ$VwJ>-z*^hH(Ylg~?4<_S*t2pT6iIbCz3dwb^#}Gwa1#FqhiR7H_FA&PPNb0?S8A|R=%CpzW)H2 z^tFFJHzH|PX&G4yd4VO9bYb3D*W{0CJ9YlLlNxRBzWsIo0EZfu z(Zwg(%H2wmB&!UN#Uiqzsg<{2nO73*jS4OtocoNNlU7&kt@+vRTBPpYzwrKK@Ph$a z9#1YKDk3nCZWtAaM#O=&g8}j@jIZ$LIGewV&0kI5%dpg1(JdFAn)YwGq9Tc1CJ7i- ziBY30(Z;L^R#;athJ3V{R6yH(c�kn%>)Xceb6)ITv<1K@i<;l0zi(50D|1yuGF} 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¤vs=m9OHjSrv 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

      ;b0@~00Kwl`G7NR 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

      P3rf>vdMx_HE^v^lpi<%B{G)S<6W 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%0A{WrR^jPq^R)>}pA(2kb2*4?xkFX*tg(w=** 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Μb;t+)g%x5_%JZ3Gw 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 >J$c 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 <8iT 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 ynYRdcC`=Z>HyRVwQzll6eB!gi2VK_o%S4GGq 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 N9@zl!o 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�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≻B~ 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

    L$6peJA~kH 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

  • 4XY@3Ibj}JmKOlWggJhu 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 z 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 z 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 z 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

    H$**Gxhm}dE(VXsF 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°CXD*`h`?8rJ{&gZnAzbYxi1e*z3XaMy=$J;$ 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