< prev index next >

src/java.desktop/share/classes/javax/imageio/metadata/doc-files/tiff_metadata.html

Print this page
rev 55470 : 8225372: accessibility errors in tables in java.desktop files
Reviewed-by: aivanov

*** 3,13 **** <head> <meta charset="utf-8"/> <title>TIFF Metadata Format Specification and Usage Notes</title> </head> <!-- ! Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. This code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 only, as published by the Free Software Foundation. Oracle designates this --- 3,13 ---- <head> <meta charset="utf-8"/> <title>TIFF Metadata Format Specification and Usage Notes</title> </head> <!-- ! Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. This code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 only, as published by the Free Software Foundation. Oracle designates this
*** 233,354 **** <a href="standard_metadata.html">javax_imageio_1.0</a> elements from <a href="#ImageMetadata">TIFF native image metadata</a> is given in the following table. <table border="1"> <tr> ! <th>Standard Metadata Element</th> ! <th>Derivation from TIFF Fields</th> </tr> <tr> <td>/Chroma/ColorSpaceType@name</td> <td>PhotometricInterpretation: WhiteIsZero, BlackIsZero, TransparencyMask = "GRAY"; RGB, PaletteColor =&gt; "RGB"; CMYK =&gt; "CMYK"; YCbCr =&gt; "YCbCr"; CIELab, ICCLab =&gt; "Lab".</td> </tr> <tr> <td>/Chroma/NumChannels@value</td> <td>SamplesPerPixel</td> </tr> <tr> <td>/Chroma/BlackIsZero@value</td> <td>"TRUE" &lt;=&gt; PhotometricInterpretation =&gt; WhiteIsZero</td> </tr> <tr> <td>/Chroma/Palette</td> <td>ColorMap</td> </tr> <tr> <td>/Compression/CompressionTypeName@value</td> <td>Compression: Uncompressed =&gt; "none"; CCITT 1D =&gt; "CCITT RLE"; Group 3 Fax =&gt; "CCITT T.4"; Group 4 Fax =&gt; "CCITT T.6"; LZW =&gt; "LZW"; JPEG =&gt; "Old JPEG"; New JPEG =&gt; "JPEG"; Zlib =&gt;&gt; "ZLib"; PackBits =&gt; "PackBits"; Deflate =&gt; "Deflate"; Exif JPEG =&gt; "JPEG".</td> </tr> <tr> <td>/Compression/Lossless@value</td> <td>Compression: JPEG or New JPEG =&gt; "FALSE"; otherwise "TRUE".</td> </tr> <tr> <td>/Data/PlanarConfiguration@value</td> <td>Chunky =&gt; "PixelInterleaved"; Planar =&gt; "PlaneInterleaved".</td> </tr> <tr> <td>/Data/SampleFormat@value</td> <td>PhotometricInterpretation PaletteColor =&gt; "Index"; SampleFormat unsigned integer data =&gt; "UnsignedIntegral"; SampleFormat two's complement signed integer data =&gt; "SignedIntegral"; SampleFormat IEEE floating point data =&gt; "Real"; otherwise element not emitted. </td> </tr> <tr> <td>/Data/BitsPerSample@value</td> <td>BitsPerSample as a space-separated list.</td> </tr> <tr> <td>/Data/SampleMSB@value</td> <td>FillOrder: left-to-right =&gt; space-separated list of BitsPerSample-1; right-to-left =&gt; space-separated list of 0s.</td> </tr> <tr> <td>/Dimension/PixelAspectRatio@value</td> <td>(1/XResolution)/(1/YResolution)</td> </tr> <tr> <td>/Dimension/ImageOrientation@value</td> <td>Orientation</td> </tr> <tr> <td>/Dimension/HorizontalPixelSize@value</td> <td>1/XResolution in millimeters if ResolutionUnit is not None.</td> </tr> <tr> <td>/Dimension/VerticalPixelSize@value</td> <td>1/YResolution in millimeters if ResolutionUnit is not None.</td> </tr> <tr> <td>/Dimension/HorizontalPosition@value</td> <td>XPosition in millimeters if ResolutionUnit is not None.</td> </tr> <tr> <td>/Dimension/VerticalPosition@value</td> <td>YPosition in millimeters if ResolutionUnit is not None.</td> </tr> <tr> <td>/Document/FormatVersion@value</td> <td>6.0</td> </tr> <tr> <td>/Document/SubimageInterpretation@value</td> <td>NewSubFileType: transparency =&gt; "TransparencyMask"; reduced-resolution =&gt; "ReducedResolution"; single page =&gt; "SinglePage".</td> </tr> <tr> <td>/Document/ImageCreationTime@value</td> <td>DateTime</td> </tr> <tr> <td>/Text/TextEntry</td> <td>DocumentName, ImageDescription, Make, Model, PageName, Software, Artist, HostComputer, InkNames, Copyright: /Text/TextEntry@keyword = field name, /Text/TextEntry@value = field value.<br> Example: TIFF Software field =&gt; /Text/TextEntry@keyword = "Software", /Text/TextEntry@value = Name and version number of the software package(s) used to create the image.</td> </tr> <tr> <td>/Transparency/Alpha@value</td> <td>ExtraSamples: associated alpha =&gt; "premultiplied"; unassociated alpha =&gt; "nonpremultiplied".</td> </tr> </table> <h3><a id="ExifRead">Reading Exif Images</a></h3> The TIFF reader may be used to read an uncompressed Exif image or the --- 233,380 ---- <a href="standard_metadata.html">javax_imageio_1.0</a> elements from <a href="#ImageMetadata">TIFF native image metadata</a> is given in the following table. <table border="1"> + <thead> <tr> ! <th scope="col">Index</th> ! <th scope="col">Standard Metadata Element</th> ! <th scope="col">Derivation from TIFF Fields</th> </tr> + </thead> + <tbody> <tr> + <th scope="row">1</th> <td>/Chroma/ColorSpaceType@name</td> <td>PhotometricInterpretation: WhiteIsZero, BlackIsZero, TransparencyMask = "GRAY"; RGB, PaletteColor =&gt; "RGB"; CMYK =&gt; "CMYK"; YCbCr =&gt; "YCbCr"; CIELab, ICCLab =&gt; "Lab".</td> </tr> <tr> + <th scope="row">2</th> <td>/Chroma/NumChannels@value</td> <td>SamplesPerPixel</td> </tr> <tr> + <th scope="row">3</th> <td>/Chroma/BlackIsZero@value</td> <td>"TRUE" &lt;=&gt; PhotometricInterpretation =&gt; WhiteIsZero</td> </tr> <tr> + <th scope="row">4</th> <td>/Chroma/Palette</td> <td>ColorMap</td> </tr> <tr> + <th scope="row">5</th> <td>/Compression/CompressionTypeName@value</td> <td>Compression: Uncompressed =&gt; "none"; CCITT 1D =&gt; "CCITT RLE"; Group 3 Fax =&gt; "CCITT T.4"; Group 4 Fax =&gt; "CCITT T.6"; LZW =&gt; "LZW"; JPEG =&gt; "Old JPEG"; New JPEG =&gt; "JPEG"; Zlib =&gt;&gt; "ZLib"; PackBits =&gt; "PackBits"; Deflate =&gt; "Deflate"; Exif JPEG =&gt; "JPEG".</td> </tr> <tr> + <th scope="row">6</th> <td>/Compression/Lossless@value</td> <td>Compression: JPEG or New JPEG =&gt; "FALSE"; otherwise "TRUE".</td> </tr> <tr> + <th scope="row">7</th> <td>/Data/PlanarConfiguration@value</td> <td>Chunky =&gt; "PixelInterleaved"; Planar =&gt; "PlaneInterleaved".</td> </tr> <tr> + <th scope="row">8</th> <td>/Data/SampleFormat@value</td> <td>PhotometricInterpretation PaletteColor =&gt; "Index"; SampleFormat unsigned integer data =&gt; "UnsignedIntegral"; SampleFormat two's complement signed integer data =&gt; "SignedIntegral"; SampleFormat IEEE floating point data =&gt; "Real"; otherwise element not emitted. </td> </tr> <tr> + <th scope="row">9</th> <td>/Data/BitsPerSample@value</td> <td>BitsPerSample as a space-separated list.</td> </tr> <tr> + <th scope="row">10</th> <td>/Data/SampleMSB@value</td> <td>FillOrder: left-to-right =&gt; space-separated list of BitsPerSample-1; right-to-left =&gt; space-separated list of 0s.</td> </tr> <tr> + <th scope="row">11</th> <td>/Dimension/PixelAspectRatio@value</td> <td>(1/XResolution)/(1/YResolution)</td> </tr> <tr> + <th scope="row">12</th> <td>/Dimension/ImageOrientation@value</td> <td>Orientation</td> </tr> <tr> + <th scope="row">13</th> <td>/Dimension/HorizontalPixelSize@value</td> <td>1/XResolution in millimeters if ResolutionUnit is not None.</td> </tr> <tr> + <th scope="row">14</th> <td>/Dimension/VerticalPixelSize@value</td> <td>1/YResolution in millimeters if ResolutionUnit is not None.</td> </tr> <tr> + <th scope="row">15</th> <td>/Dimension/HorizontalPosition@value</td> <td>XPosition in millimeters if ResolutionUnit is not None.</td> </tr> <tr> + <th scope="row">16</th> <td>/Dimension/VerticalPosition@value</td> <td>YPosition in millimeters if ResolutionUnit is not None.</td> </tr> <tr> + <th scope="row">17</th> <td>/Document/FormatVersion@value</td> <td>6.0</td> </tr> <tr> + <th scope="row">18</th> <td>/Document/SubimageInterpretation@value</td> <td>NewSubFileType: transparency =&gt; "TransparencyMask"; reduced-resolution =&gt; "ReducedResolution"; single page =&gt; "SinglePage".</td> </tr> <tr> + <th scope="row">19</th> <td>/Document/ImageCreationTime@value</td> <td>DateTime</td> </tr> <tr> + <th scope="row">20</th> <td>/Text/TextEntry</td> <td>DocumentName, ImageDescription, Make, Model, PageName, Software, Artist, HostComputer, InkNames, Copyright: /Text/TextEntry@keyword = field name, /Text/TextEntry@value = field value.<br> Example: TIFF Software field =&gt; /Text/TextEntry@keyword = "Software", /Text/TextEntry@value = Name and version number of the software package(s) used to create the image.</td> </tr> <tr> + <th scope="row">21</th> <td>/Transparency/Alpha@value</td> <td>ExtraSamples: associated alpha =&gt; "premultiplied"; unassociated alpha =&gt; "nonpremultiplied".</td> </tr> + </tbody> </table> <h3><a id="ExifRead">Reading Exif Images</a></h3> The TIFF reader may be used to read an uncompressed Exif image or the
*** 488,543 **** <code>MODE_EXPLICIT</code>. The set of innately supported compression types is listed in the following table: <table border=1> <caption><b>Supported Compression Types</b></caption> ! <tr><th>Compression Type</th> <th>Description</th> <th>Reference</th></tr> <tr> <td>CCITT RLE</td> <td>Modified Huffman compression</td> <td>TIFF 6.0 Specification, Section 10</td> </tr> <tr> <td>CCITT T.4</td> <td>CCITT T.4 bilevel encoding/Group 3 facsimile compression</td> <td>TIFF 6.0 Specification, Section 11</td> </tr> <tr> <td>CCITT T.6</td> <td>CCITT T.6 bilevel encoding/Group 4 facsimile compression</td> <td>TIFF 6.0 Specification, Section 11</td></tr> <tr> <td>LZW</td> <td>LZW compression</td> <td>TIFF 6.0 Specification, Section 13</td></tr> <tr> <td>JPEG</td> <td>"New" JPEG-in-TIFF compression</td> <td>TIFF Technical Note #2</td></tr> <tr> <td>ZLib</td> <td>"Deflate/Inflate" compression (see note following this table)</td> <td>Adobe Photoshop® TIFF Technical Notes</td> </tr> <tr> <td>PackBits</td> <td>Byte-oriented, run length compression</td> <td>TIFF 6.0 Specification, Section 9</td> </tr> <tr> <td>Deflate</td> <td>"Zip-in-TIFF" compression (see note following this table)</td> <td><a href="https://tools.ietf.org/html/rfc1950"> ZLIB Compressed Data Format Specification</a>, <a href="https://tools.ietf.org/html/rfc1951"> DEFLATE Compressed Data Format Specification</a></td> </tr> <tr> <td>Exif JPEG</td> <td>Exif-specific JPEG compression (see note following this table)</td> <td><a href="http://www.exif.org/Exif2-2.PDF">Exif 2.2 Specification</a> (PDF), section 4.5.5, "Basic Structure of Thumbnail Data"</td> </table> <p> Old-style JPEG compression as described in section 22 of the TIFF 6.0 Specification is <i>not</i> supported. --- 514,586 ---- <code>MODE_EXPLICIT</code>. The set of innately supported compression types is listed in the following table: <table border=1> <caption><b>Supported Compression Types</b></caption> ! <thead> <tr> + <th scope="col">Index</th> + <th scope="col">Compression Type</th> + <th scope="col">Description</th> + <th scope="col">Reference</th></tr> + <tr> + </thead> + <tbody> + <th scope="row">1</th> <td>CCITT RLE</td> <td>Modified Huffman compression</td> <td>TIFF 6.0 Specification, Section 10</td> </tr> <tr> + <th scope="row">2</th> <td>CCITT T.4</td> <td>CCITT T.4 bilevel encoding/Group 3 facsimile compression</td> <td>TIFF 6.0 Specification, Section 11</td> </tr> <tr> + <th scope="row">3</th> <td>CCITT T.6</td> <td>CCITT T.6 bilevel encoding/Group 4 facsimile compression</td> <td>TIFF 6.0 Specification, Section 11</td></tr> <tr> + <th scope="row">4</th> <td>LZW</td> <td>LZW compression</td> <td>TIFF 6.0 Specification, Section 13</td></tr> <tr> + <th scope="row">5</th> <td>JPEG</td> <td>"New" JPEG-in-TIFF compression</td> <td>TIFF Technical Note #2</td></tr> <tr> + <th scope="row">6</th> <td>ZLib</td> <td>"Deflate/Inflate" compression (see note following this table)</td> <td>Adobe Photoshop® TIFF Technical Notes</td> </tr> <tr> + <th scope="row">7</th> <td>PackBits</td> <td>Byte-oriented, run length compression</td> <td>TIFF 6.0 Specification, Section 9</td> </tr> <tr> + <th scope="row">8</th> <td>Deflate</td> <td>"Zip-in-TIFF" compression (see note following this table)</td> <td><a href="https://tools.ietf.org/html/rfc1950"> ZLIB Compressed Data Format Specification</a>, <a href="https://tools.ietf.org/html/rfc1951"> DEFLATE Compressed Data Format Specification</a></td> </tr> <tr> + <th scope="row">9</th> <td>Exif JPEG</td> <td>Exif-specific JPEG compression (see note following this table)</td> <td><a href="http://www.exif.org/Exif2-2.PDF">Exif 2.2 Specification</a> (PDF), section 4.5.5, "Basic Structure of Thumbnail Data"</td> + </tbody> </table> <p> Old-style JPEG compression as described in section 22 of the TIFF 6.0 Specification is <i>not</i> supported.
*** 719,833 **** elements from the standard metadata format <a href="standard_metadata.html">javax_imageio_1.0</a> is given in the following table. <table border="1"> <tr> ! <th>TIFF Field</th> ! <th>Derivation from Standard Metadata Elements</th> </tr> <tr> <td> PhotometricInterpretation </td> <td>/Chroma/ColorSpaceType@name: "GRAY" and /Chroma/BlackIsZero@value = "FALSE" =&gt; WhiteIsZero; "GRAY" and /Document/SubimageInterpretation@value = "TransparencyMask" =&gt; TransparencyMask; "RGB" and /Chroma/Palette present =&gt; PaletteColor; "GRAY" =&gt; BlackIsZero; "RGB" =&gt; RGB; "YCbCr" =&gt; YCbCr; "CMYK" =&gt; CMYK; "Lab" =&gt; CIELab.</td> </tr> <tr> <td>SamplesPerPixel</td> <td>/Chroma/NumChannels@value</td> </tr> <tr> <td>ColorMap</td> <td>/Chroma/Palette</td> </tr> <tr> <td>Compression</td> <td>/Compression/CompressionTypeName@value: "none" =&gt; Uncompressed; "CCITT RLE" =&gt; CCITT 1D; "CCITT T.4" =&gt; Group 3 Fax; "CCITT T.6" =&gt; Group 4 Fax; "LZW" =&gt; LZW; "Old JPEG" =&gt; JPEG; "JPEG" =&gt; New JPEG; "ZLib" =&gt; ZLib; "PackBits" =&gt; PackBits; "Deflate" =&gt; Deflate.</td> </tr> <tr> <td>PlanarConfiguration</td> <td>/Data/PlanarConfiguration@value: "PixelInterleaved" =&gt; Chunky; "PlaneInterleaved" =&gt; Planar.</td> </tr> <tr> <td>SampleFormat</td> <td>/Data/SampleFormat@value: "SignedIntegral" =&gt; two's complement signed integer data; "UnsignedIntegral" =&gt; unsigned integer data; "Real" =&gt; IEEE floating point data; "Index" =&gt; unsigned integer data. </td> </tr> <tr> <td>BitsPerSample</td> <td>/Data/BitsPerSample@value: space-separated list parsed to char array.</td> </tr> <tr> <td>FillOrder</td> <td>/Data/SampleMSB@value: if all values in space-separated list are 0s =&gt; right-to-left; otherwise =&gt; left-to-right. </td> </tr> <tr> <td>XResolution</td> <td>(10 / /Dimension/HorizontalPixelSize@value) or (10 / (/Dimension/VerticalPixelSize@value * /Dimension/PixelAspectRatio@value))</td> </tr> <tr> <td>YResolution</td> <td>(10 / /Dimension/VerticalPixelSize@value) or (10 / (/Dimension/HorizontalPixelSize@value / /Dimension/PixelAspectRatio@value))</td> </tr> <tr> <td>ResolutionUnit</td> <td>Centimeter if XResolution or YResolution set; otherwise None.</td> </tr> <tr> <td>Orientation</td> <td>/Dimension/ImageOrientation@value</td> </tr> <tr> <td>XPosition</td> <td>/Dimension/HorizontalPosition@value / 10</td> </tr> <tr> <td>YPosition</td> <td>/Dimension/VerticalPosition@value / 10</td> </tr> <tr> <td>NewSubFileType</td> <td>/Document/SubimageInterpretation@value: "TransparencyMask" =&gt; transparency mask; "ReducedResolution" =&gt; reduced-resolution; "SinglePage" =&gt; single page.</td> </tr> <tr> <td>DateTime</td> <td>/Document/ImageCreationTime@value</td> </tr> <tr> <td>DocumentName, ImageDescription, Make, Model, PageName, Software, Artist, HostComputer, InkNames, Copyright</td> <td>/Text/TextEntry: if /Text/TextEntry@keyword is the name of any of the TIFF Fields, e.g., "Software", then the field is added with content /Text/TextEntry@value and count 1.</td> </tr> <tr> <td>ExtraSamples</td> <td>/Transparency/Alpha@value: "premultiplied" =&gt; associated alpha, count 1; "nonpremultiplied" =&gt; unassociated alpha, count 1.</td> </tr> ! <tr> ! <td></td> ! <td></td> ! </tr> </table> <h3><a id="ExifWrite">Writing Exif Images</a></h3> The TIFF writer may be used to write an uncompressed Exif image or the --- 762,895 ---- elements from the standard metadata format <a href="standard_metadata.html">javax_imageio_1.0</a> is given in the following table. <table border="1"> + <thead> <tr> ! <th scope="col">Index</th> ! <th scope="col">TIFF Field</th> ! <th scope="col">Derivation from Standard Metadata Elements</th> </tr> + </thead> + <tbody> <tr> + <th scope="row">1</th> <td> PhotometricInterpretation </td> <td>/Chroma/ColorSpaceType@name: "GRAY" and /Chroma/BlackIsZero@value = "FALSE" =&gt; WhiteIsZero; "GRAY" and /Document/SubimageInterpretation@value = "TransparencyMask" =&gt; TransparencyMask; "RGB" and /Chroma/Palette present =&gt; PaletteColor; "GRAY" =&gt; BlackIsZero; "RGB" =&gt; RGB; "YCbCr" =&gt; YCbCr; "CMYK" =&gt; CMYK; "Lab" =&gt; CIELab.</td> </tr> <tr> + <th scope="row">2</th> <td>SamplesPerPixel</td> <td>/Chroma/NumChannels@value</td> </tr> <tr> + <th scope="row">3</th> <td>ColorMap</td> <td>/Chroma/Palette</td> </tr> <tr> + <th scope="row">4</th> <td>Compression</td> <td>/Compression/CompressionTypeName@value: "none" =&gt; Uncompressed; "CCITT RLE" =&gt; CCITT 1D; "CCITT T.4" =&gt; Group 3 Fax; "CCITT T.6" =&gt; Group 4 Fax; "LZW" =&gt; LZW; "Old JPEG" =&gt; JPEG; "JPEG" =&gt; New JPEG; "ZLib" =&gt; ZLib; "PackBits" =&gt; PackBits; "Deflate" =&gt; Deflate.</td> </tr> <tr> + <th scope="row">5</th> <td>PlanarConfiguration</td> <td>/Data/PlanarConfiguration@value: "PixelInterleaved" =&gt; Chunky; "PlaneInterleaved" =&gt; Planar.</td> </tr> <tr> + <th scope="row">6</th> <td>SampleFormat</td> <td>/Data/SampleFormat@value: "SignedIntegral" =&gt; two's complement signed integer data; "UnsignedIntegral" =&gt; unsigned integer data; "Real" =&gt; IEEE floating point data; "Index" =&gt; unsigned integer data. </td> </tr> <tr> + <th scope="row">7</th> <td>BitsPerSample</td> <td>/Data/BitsPerSample@value: space-separated list parsed to char array.</td> </tr> <tr> + <th scope="row">8</th> <td>FillOrder</td> <td>/Data/SampleMSB@value: if all values in space-separated list are 0s =&gt; right-to-left; otherwise =&gt; left-to-right. </td> </tr> <tr> + <th scope="row">9</th> <td>XResolution</td> <td>(10 / /Dimension/HorizontalPixelSize@value) or (10 / (/Dimension/VerticalPixelSize@value * /Dimension/PixelAspectRatio@value))</td> </tr> <tr> + <th scope="row">10</th> <td>YResolution</td> <td>(10 / /Dimension/VerticalPixelSize@value) or (10 / (/Dimension/HorizontalPixelSize@value / /Dimension/PixelAspectRatio@value))</td> </tr> <tr> + <th scope="row">11</th> <td>ResolutionUnit</td> <td>Centimeter if XResolution or YResolution set; otherwise None.</td> </tr> <tr> + <th scope="row">12</th> <td>Orientation</td> <td>/Dimension/ImageOrientation@value</td> </tr> <tr> + <th scope="row">13</th> <td>XPosition</td> <td>/Dimension/HorizontalPosition@value / 10</td> </tr> <tr> + <th scope="row">14</th> <td>YPosition</td> <td>/Dimension/VerticalPosition@value / 10</td> </tr> <tr> + <th scope="row">15</th> <td>NewSubFileType</td> <td>/Document/SubimageInterpretation@value: "TransparencyMask" =&gt; transparency mask; "ReducedResolution" =&gt; reduced-resolution; "SinglePage" =&gt; single page.</td> </tr> <tr> + <th scope="row">16</th> <td>DateTime</td> <td>/Document/ImageCreationTime@value</td> </tr> <tr> + <th scope="row">17</th> <td>DocumentName, ImageDescription, Make, Model, PageName, Software, Artist, HostComputer, InkNames, Copyright</td> <td>/Text/TextEntry: if /Text/TextEntry@keyword is the name of any of the TIFF Fields, e.g., "Software", then the field is added with content /Text/TextEntry@value and count 1.</td> </tr> <tr> + <th scope="row">18</th> <td>ExtraSamples</td> <td>/Transparency/Alpha@value: "premultiplied" =&gt; associated alpha, count 1; "nonpremultiplied" =&gt; unassociated alpha, count 1.</td> </tr> ! </tbody> </table> <h3><a id="ExifWrite">Writing Exif Images</a></h3> The TIFF writer may be used to write an uncompressed Exif image or the
< prev index next >