The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Changes 27153
MANIFEST 010
META.yml 11
README 3734
config_files/ExifTool_config 33
exiftool 116182
html/ExifTool.html 5366
html/Shift.html 22
html/TagNames/Canon.html 1644
html/TagNames/CanonCustom.html 22
html/TagNames/Casio.html 340
html/TagNames/DNG.html 26
html/TagNames/EXIF.html 37
html/TagNames/Extra.html 1020
html/TagNames/FlashPix.html 232
html/TagNames/Font.html 11
html/TagNames/FujiFilm.html 247
html/TagNames/GPS.html 11
html/TagNames/ICC_Profile.html 23
html/TagNames/ID3.html 22
html/TagNames/IPTC.html 29
html/TagNames/Kodak.html 341
html/TagNames/Lytro.html 0122
html/TagNames/MIE.html 22
html/TagNames/MWG.html 11
html/TagNames/Microsoft.html 33
html/TagNames/Minolta.html 3941
html/TagNames/Nikon.html 1126
html/TagNames/Olympus.html 156164
html/TagNames/PNG.html 811
html/TagNames/Palm.html 0388
html/TagNames/Panasonic.html 31107
html/TagNames/Pentax.html 94134
html/TagNames/QuickTime.html 15681583
html/TagNames/Ricoh.html 117
html/TagNames/Shortcuts.html 326
html/TagNames/Sigma.html 3943
html/TagNames/SigmaRaw.html 439
html/TagNames/Sony.html 3951641
html/TagNames/XMP.html 422
html/TagNames/ZIP.html 45
html/TagNames/index.html 79
html/ancient_history.html 2626
html/canon_raw.html 1111
html/commentary.html 22
html/config.html 33
html/data_members.html 55
html/exiftool_pod.html 79100
html/faq.html 2328
html/filename.html 528
html/geotag.html 77
html/history.html 1141
html/htmldump.html 11
html/idiosyncracies.html 25
html/index.html 6445
html/standards.html 11
html/struct.html 11
html/under.html 11
html/writing.html 22
lib/Image/ExifTool/AFCP.pm 11
lib/Image/ExifTool/AIFF.pm 11
lib/Image/ExifTool/APP12.pm 11
lib/Image/ExifTool/Apple.pm 11
lib/Image/ExifTool/BuildTagLookup.pm 1023
lib/Image/ExifTool/Canon.pm 2662
lib/Image/ExifTool/CanonCustom.pm 23
lib/Image/ExifTool/CanonRaw.pm 11
lib/Image/ExifTool/CanonVRD.pm 81119
lib/Image/ExifTool/Casio.pm 347
lib/Image/ExifTool/Exif.pm 56
lib/Image/ExifTool/FLAC.pm 11
lib/Image/ExifTool/FLIR.pm 44
lib/Image/ExifTool/FlashPix.pm 5299
lib/Image/ExifTool/Font.pm 11
lib/Image/ExifTool/FujiFilm.pm 349
lib/Image/ExifTool/GE.pm 01
lib/Image/ExifTool/GIF.pm 11
lib/Image/ExifTool/GPS.pm 419
lib/Image/ExifTool/Geotag.pm 2647
lib/Image/ExifTool/H264.pm 23
lib/Image/ExifTool/HTML.pm 11
lib/Image/ExifTool/ICC_Profile.pm 12
lib/Image/ExifTool/ID3.pm 68
lib/Image/ExifTool/IPTC.pm 1837
lib/Image/ExifTool/Import.pm 22
lib/Image/ExifTool/InDesign.pm 11
lib/Image/ExifTool/JPEG.pm 22
lib/Image/ExifTool/Kodak.pm 530
lib/Image/ExifTool/Lang/de.pm 2121
lib/Image/ExifTool/Lang/es.pm 25
lib/Image/ExifTool/Lang/fi.pm 22
lib/Image/ExifTool/Lang/fr.pm 23
lib/Image/ExifTool/Lang/it.pm 11
lib/Image/ExifTool/Lang/ja.pm 78
lib/Image/ExifTool/Lytro.pm 0217
lib/Image/ExifTool/M2TS.pm 22
lib/Image/ExifTool/MIE.pm 2121
lib/Image/ExifTool/MIEUnits.pod 44
lib/Image/ExifTool/MPEG.pm 11
lib/Image/ExifTool/MWG.pm 33
lib/Image/ExifTool/MakerNotes.pm 440
lib/Image/ExifTool/Microsoft.pm 33
lib/Image/ExifTool/Minolta.pm 6061
lib/Image/ExifTool/MinoltaRaw.pm 11
lib/Image/ExifTool/Nikon.pm 1130
lib/Image/ExifTool/NikonCapture.pm 11
lib/Image/ExifTool/OOXML.pm 11
lib/Image/ExifTool/Olympus.pm 715
lib/Image/ExifTool/PDF.pm 44
lib/Image/ExifTool/PICT.pm 22
lib/Image/ExifTool/PNG.pm 1328
lib/Image/ExifTool/PPM.pm 11
lib/Image/ExifTool/Palm.pm 0403
lib/Image/ExifTool/Panasonic.pm 14150
lib/Image/ExifTool/Pentax.pm 1350
lib/Image/ExifTool/PostScript.pm 23
lib/Image/ExifTool/QuickTime.pm 1846
lib/Image/ExifTool/README 1122
lib/Image/ExifTool/RIFF.pm 55
lib/Image/ExifTool/RTF.pm 11
lib/Image/ExifTool/Ricoh.pm 234
lib/Image/ExifTool/Shift.pl 57
lib/Image/ExifTool/Shortcuts.pm 122
lib/Image/ExifTool/Sigma.pm 6578
lib/Image/ExifTool/SigmaRaw.pm 3551
lib/Image/ExifTool/Sony.pm 240884
lib/Image/ExifTool/TagInfoXML.pm 1931
lib/Image/ExifTool/TagLookup.pm 20412176
lib/Image/ExifTool/TagNames.pod 250689
lib/Image/ExifTool/WriteExif.pl 55
lib/Image/ExifTool/WriteIPTC.pl 1414
lib/Image/ExifTool/WritePNG.pl 014
lib/Image/ExifTool/WriteQuickTime.pl 11
lib/Image/ExifTool/WriteXMP.pl 5384
lib/Image/ExifTool/Writer.pl 2877
lib/Image/ExifTool/XMP.pm 1955
lib/Image/ExifTool/XMPStruct.pl 45
lib/Image/ExifTool/ZIP.pm 1250
lib/Image/ExifTool.pm 2666
lib/Image/ExifTool.pod 9199
perl-Image-ExifTool.spec 3334
t/AFCP_2.out 2323
t/ExifTool_3.out 44
t/FotoStation_2.out 1515
t/FujiFilm_4.out 119
t/Geotag_7.out 77
t/Lytro.t 028
t/Lytro_2.out 0107
t/PGF_2.out 66
t/PNG.t 01
t/PNG_3.out 25
t/Palm.t 027
t/Palm_2.out 031
t/TestLib.pm 11
t/Writer_4.out 33
t/Writer_9.out 66
t/XMP.t 15
t/XMP_10.out 58
t/XMP_11.out 123
t/XMP_2.out 44
t/XMP_3.out 33
t/XMP_9.out 117
t/images/Lytro.lfp --
t/images/Palm.mobi --
t/images/XMP3.xmp 3153
165 files changed (This is a version diff) 645212097
@@ -4,9 +4,135 @@ ExifTool Version History
 
 RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
 
-Note: The most recent production release is Version 9.60. (Other versions are
+Note: The most recent production release is Version 9.70. (Other versions are
 considered development releases, and are not uploaded to CPAN.)
 
+Sept. 3, 2014 - Version 9.70 (production release)
+
+  - Added read support for Pentax 645Z makernotes in MOV videos
+  - Added a new Canon LensType (thanks Norbert Wasser)
+  - Added a new SonyModelID (thanks LibRaw)
+  - Added a new Pentax LensType (thanks Dominique Schrekling)
+  - Added a new PentaxModelID
+  - Added a new Olympus CameraType (thanks LibRaw)
+  - Updated Nikon ISOExpansion values for new models (thanks LibRaw)
+  - Decode a number of new Sony tags and values (thanks Jos Roost)
+  - Decode a new Panasonic tag
+  - Decode another QuickTime tag
+  - Improved verbose dump for LFP images
+  - Patched to repair incorrect list types in XMP structures when writing
+  - Patched to avoid MPEG Layer 3 check for files with a "MUS" extension
+  - Fixed incorrect behaviour of -addTagsFromFile when adding list items from
+    multiple variable-named source files
+
+July 27, 2014 - Version 9.69
+
+  - Added ability to write PNG PhysicalPixel (PNG-pHYs) tags
+  - Added a few new Panasonic ContrastMode values
+  - Added minor warning when creating EXIF or IPTC in PNG images
+  - Decode a few more Sony tags and values (thanks Jos Roost)
+  - Fixed problem writing Olympus:LensType
+  - API Changes:
+      - Shift.pl now autoloads when ShiftTime() is called
+      - The 3rd argument to ShiftTime() is now optional
+
+July 19, 2014 - Version 9.68
+
+  - Added read support for Lytro LFP files
+  - Added a new Olympus LensType (thanks Niels Kristian Bech Jensen)
+  - Added support for the maker notes of some recent Ricoh/Pentax models
+  - Allow Composite tag to have no Require'd or Desire'd tags
+  - Improved -geotag verbose output
+  - Changed so XMP tags take priority when reading QuickTime-format files
+  - Changed PSD file description to "Photoshop Document"
+  - Fixed problem where -geotag option could fail if -v4 was used
+  - Fixed problem writing SonyDateTime2
+
+July 6, 2014 - Version 9.67
+
+  - Added support for Sigma X3F version 4.0 files from the DP2 Quattro
+  - Added support for Sony XAVC video files
+  - Added a new Nikon PhaseDetectAF value
+  - Added conversion for Casio EX-ZR300 BestShotMode (thanks Manfred)
+  - Decode more proprietary information from some Panasonic/Leica MP4 videos
+  - Fixed inaccuracies in decoding some SigmaRaw tags from the X3F header
+
+July 1, 2014 - Version 9.66
+
+  - Added read support for Kodak PixPro S-1 maker notes
+  - Added new Canon, Pentax and Sigma LensTypes (thanks LibRaw for the Canon)
+  - Added support for Sigma DP2 Quattro maker notes
+  - Decode AFMicroAdj for Sony A77M2
+  - Improved decoding of Pentax K-3 AFPointSelected (thanks Dan)
+  - Swap "GPS track start/end" labels in -geotag -v2 output if track is stored
+    in reverse chronological order
+  - Changed handling of IPTC groups so that standard IPTC always has a family 1
+    group name of "IPTC", and takes priority over non-standard IPTC when
+    duplicates are not allowed
+  - Patched to recognize incorrect XMP URI's written by Nikon NX2
+  - Fixed problem with possible duplication of lens names when attempting to
+    identify lens used by a Nikon camera from a Photoshop-mangled image
+  - Fixed problem parsing some NMEA sentences, and added support for GPZDA
+  - Fixed typo in a CanonCustom value
+  - Fixed bug where standard IPTC may be incorrectly written into a proprietary
+    PhotoMechanic IPTC-format SoftEdit record
+
+June 20, 2014 - Version 9.65
+
+  - Added a new Olympus LensType (thanks Niels Kristian Bech Jensen)
+  - Added a print conversion for Unknown ICC_Profile MeasurementGeometry
+  - Added LargeTags shortcut
+  - Avoid loading data for some tags with large binary data values if they were
+    specifically excluded by the command
+  - Improved memory handling when processing CanonVRD information
+  - Patched potential "subscript -1" runtime error when reading EPS files
+
+June 14, 2014 - Version 9.64
+
+  - Added write-only TestName tag for dry-run tests of file renaming feature
+  - Added a few new Olympus CameraType values
+  - Added a new new Nikon LensID's
+  - Added a new Canon LensType
+  - Patched to avoid structure warnings when copying tags from ZIP-based files
+  - Patched to deal with incorrect byte ordering in FlashPix date/time values
+    written by some cameras
+  - Fixed problem using advanced formatting feature in a -if condition
+  - Fixed problem parsing Canon VignettingCorr for some newer PowerShot models
+  - API Changes:
+      - Added 'Test' option to SetFileName()
+
+May 31, 2014 - Version 9.63
+
+  - Added basic read support for EPUB and MOBI electronic books
+  - Added ability to combine -lang option with -listx to extract only one language
+  - Remove leading XML comment from XMP if it exists when writing as a block
+  - Another attempt to patch problem obtaining a consistent "full path" for
+    source files when importing a CSV database in Windows
+
+May 24, 2014 - Version 9.62
+
+  - Added message about SourceFile names to -v2 output when importing a database
+    with -csv= or -json=
+  - Added patch to allow extraction of some incorrectly written FlashPix tags
+  - Extract a couple of new FlashPix tags for some FujiFilm models
+  - Decode a number of new Sony tags (thanks Jos Roost)
+  - Changed -n option for GPSTimeStamp to return nanosecond precision
+
+May 18, 2014 - Version 9.61
+
+  - Added ability to combine -l with -listf, -listr or -listwf to add
+    descriptions of the file type
+  - Added a few new Canon LensType values (thanks Norbert Wasser and Mark)
+  - Extract AE metering segments again for the Pentax K-3
+  - Decode a number of new FujiFilm RAF tags (thanks LibRaw)
+  - Decode a number of new Sony tags (thanks Jos Roost)
+  - Changed the case of some AF point values for consistency
+  - Fixed an incorrect Olympus FocusMode value
+  - Fixed problem introduced in 9.60 where a "LensID argument isn't numeric"
+    warning could occur under some conditions
+  - Fixed quirk where ExifTool could incorrectly report that a file was changed
+    when conditionally deleting a non-existent tag as a block
+
 May 11, 2014 - Version 9.60 (production release)
 
   - Added a few new values for some Pentax tags
@@ -258,7 +384,7 @@ Dec. 1, 2013 - Version 9.42
 Nov. 16, 2013 - Version 9.41
 
   - Added the ability to use multiple group qualifiers on tag names when writing
-    and copying (ie. "-QuickTime:Time:All=now")
+    and copying (eg. "-QuickTime:Time:All=now")
   - Added ability to geotag from Google Location Services KML files
   - Added a new Pentax LensType (thanks Louis Granboulan)
   - Added a new Canon LensType (thanks David Monro)
@@ -270,7 +396,7 @@ Nov. 16, 2013 - Version 9.41
 Nov. 8, 2013 - Version 9.40 - "Write QuickTime"
 
   - Added ability to write XMP and edit date/time tags in QuickTime-format files
-    (ie. MOV, MP4)
+    (eg. MOV, MP4)
   - Added -api option to allow API options to be set via the command line
   - Added ability to specify family 2 group name when writing
   - Added write support for a number of new XMP tags
@@ -830,7 +956,7 @@ Sept. 6, 2012 - Version 9.02
   - Changed names of some PanasonicRaw DistortionInfo tags
   - Changed decoding for a Sony ExposureMode value
   - Fixed hang/crash that could occur when writing to an image with corrupted
-    Sony MoreInfo data (ie. SLT-A55V JPEG corrupted by GIMP)
+    Sony MoreInfo data (eg. SLT-A55V JPEG corrupted by GIMP)
 
 Aug. 25, 2012 - Version 9.01 (production release)
 
@@ -882,7 +1008,7 @@ July 28, 2012 - Version 8.98
   - Decode a number of new Sony tags (thanks Jos Roost)
   - Changed name of Minolta BatteryLevel tag to BatteryState
   - Patched problem with conditional deletion of IPTC string-type tags which are
-    incorrectly null terminated (ie. written by Picasa 2.0)
+    incorrectly null terminated (eg. written by Picasa 2.0)
   - Fixed problem copying Canon 5DmkIII MakerNotes from CR2 to JPEG images
   - Fixed runtime error when writing some images with corrupted EXIF
 
@@ -1732,7 +1858,7 @@ Oct. 31, 2010 - Version 8.37
 Oct. 30, 2010 - Version 8.36
 
   - Added ability to read/write metadata in Sigma X3F images containing a
-    JpgFromRaw (ie. all Sigma models except the SD9 and SD10)
+    JpgFromRaw (eg. all Sigma models except the SD9 and SD10)
   - Added -stay_open option to avoid startup delay when called from other
     applications
   - Added a new Pentax LensType (thanks Hubert Meier)
@@ -1759,7 +1885,7 @@ Oct. 23, 2010 - Version 8.35 - "PDF Encryption"
   - Extract Olympus ZoomedPreviewImage
   - Updated decoding of Olympus AFPoint for recent E-models
   - Avoid writing mandatory IPTC tags unless another IPTC tag actually changes
-    (ie. trying to delete a non-existent IPTC tag will no longer have the side
+    (eg. trying to delete a non-existent IPTC tag will no longer have the side
     effect of generating mandatory IPTC tags)
   - Improved language translations
   - Improved error message when trying to write a file with the wrong extension
@@ -2436,7 +2562,7 @@ Sept. 5, 2009 - Version 7.93
   - Added a few new Pentax LensType's
   - Decode a number of new tags for the Canon EOS 7D
   - Calculate Duration for WAV audio files
-  - Allow exponents when writing GPS coordinates (ie. "-gpslatitude=7.657e+01")
+  - Allow exponents when writing GPS coordinates (eg. "-gpslatitude=7.657e+01")
   - Print available character sets if no CHARSET is given for -charset option
   - Improved -v3 and -htmldump output to show MPF image data
   - Fixed -E option to work with tag descriptions when -lang option used
@@ -2721,7 +2847,7 @@ Mar. 20, 2009 - Version 7.72
   - Changed Composite:LensID to also return a value for Olympus lenses
   - Changed copying behaviour to preserve the specific location (family 1 group)
     when source group is specified and destination group is "all" or "*"
-    (ie. "-exif:all>all:all" now preserves the IFD of each tag)
+    (eg. "-exif:all>all:all" now preserves the IFD of each tag)
   - Fixed a number of incorrect Minolta/Sony lens names (thanks Olaf Ulrich)
   - Fixed bug rewriting MIE trailers on TIFF images
 
@@ -3055,7 +3181,7 @@ Oct. 11, 2008 - Version 7.47 - "Jumbo"
   - Implemented character set translation for MIE information (-L option)
   - Improved speed when scanning unknown file to determine FileType
   - Fixed bug where some writable EXIF tags gave a "not writable" message when
-    reading tag value from a dynamic file (ie. "-TAG<=%f.txt")
+    reading tag value from a dynamic file (eg. "-TAG<=%f.txt")
   - Fixed problem double-escaping characters when -h and -S were used together
   - Fixed decoding of Nikon FlashModel for SU-800 Remote Commander
   - Fixed swapped Nikon FlashGroupBControlMode/FlashGroupCControlMode tags
@@ -3086,7 +3212,7 @@ Oct. 1, 2008 - Version 7.45
   - Updated iptc2xmp.args and xmp2iptc.args to write IPTCDigest as per MWG
     recommendation
   - Allow zone-less date/time values in XMP (as per MWG and upcoming XMP spec)
-  - Allow brackets in $$ and $/ expressions (ie. ${$} and ${/} now work)
+  - Allow brackets in $$ and $/ expressions (eg. ${$} and ${/} now work)
   - Changed decoding of EXIF:Copyright to allow two separate strings as per spec
   - Changed a number of XMP Iptc4xmpCore tag names and added a corresponding set
     of aliases (shortcuts) for backward compatibility
@@ -3326,7 +3452,7 @@ May 21, 2008 - Version 7.26
   - Decode Panasonic Title tag (thanks Jens Duttke)
   - Recognize a few more uncommon top-level QuickTime atoms
   - Changed decoding of some Olympus tags for new E-520
-  - Changed warning when empty PrintIM data is encountered (ie. as written in
+  - Changed warning when empty PrintIM data is encountered (eg. as written in
     Sony A700 ARW files when Adobe RGB color mode is used)
   - Dropped Canon PreviewFocalPlaneX/YResolution tags since they never really
     existed (thanks Ger Vermeulen for pointing out the Canon bug which lead to
@@ -3465,7 +3591,7 @@ Feb. 16, 2008 - Version 7.17
 
   - Extract duplicate tags when -p option is used
   - Fixed bug introduced in 7.00 which broke the use of group family numbers and
-    groups ending with a digit in tag format strings (ie. "$IFD0:Model")
+    groups ending with a digit in tag format strings (eg. "$IFD0:Model")
 
 Feb. 14, 2008 - Version 7.16
 
@@ -3602,7 +3728,7 @@ Dec. 18, 2007 - Version 7.07
     LightSource, MeteringMode and SubjectDistanceRange) instead of handling as a
     truly unknown value (if this makes sense)
   - Extract PreviewImage from newer Panasonic RAW images (thanks Jens Duttke)
-  - Recognize Pentax-type Kodak maker notes (ie. Easyshare 883)
+  - Recognize Pentax-type Kodak maker notes (eg. Easyshare 883)
   - Made "Entries out of sequence" a minor warning since this problem is fixed
   - Allow decimal seconds to be written in time values without needing to use -n
   - Improved parsing of PDF files
@@ -3652,7 +3778,7 @@ Nov. 17, 2007 - Version 7.03
 
 Nov. 16, 2007 - Version 7.02
 
-  - Added ability to delete XMP family 1 groups (ie. "-XMP-crss:all=")
+  - Added ability to delete XMP family 1 groups (eg. "-XMP-crss:all=")
   - Fixed problem writing XMP as a block to XMP file
 
 Nov. 15, 2007 - Version 7.01
@@ -3720,7 +3846,7 @@ Oct. 6, 2007 - Version 6.99
   - Increased precision of 64-bit rational conversion from 7 to 10 digits
   - Fixed problem which caused failed tests with Perl 5.005_05
   - Fixed problem where some groups could not easily be excluded when deleting
-    all other information (ie. "-all= --exif:all" now behaves as expected)
+    all other information (eg. "-all= --exif:all" now behaves as expected)
   - Fixed problem decoding ICC Profile "dtim" format values
   - Fixed typo in a Minolta FlashMetering value (thanks Jens Duttke)
   - Fixed problem in API which could result in a UTF-8 encoded file not being
@@ -3976,7 +4102,7 @@ Mar. 20, 2007 - Version 6.82
 
 Mar. 17, 2007 - Version 6.81
 
-  - Added l/u modifiers for lower/uppercase in filename format codes (ie. "%le")
+  - Added l/u modifiers for lower/uppercase in filename format codes (eg. "%le")
   - Added equivalent IXY names to CanonModelID for PowerShot SD750 and SD1000
   - Added a few new Pentax ModelID's (Optio E30, T30, W30, A30)
   - Allow non-encrypted Nikon ColorBalance values to be written
@@ -3999,7 +4125,7 @@ Mar. 7, 2007 - Version 6.79
 
   - Translate special characters in ID3 information when reading
   - Improved conversions for GPSTimeStamp and GPSDateStamp when writing so they
-    can be set from a normal date/time tag (ie. "-gpstimestamp<createdate")
+    can be set from a normal date/time tag (eg. "-gpstimestamp<createdate")
   - Added support for Nikon D40X plus a new LensID (thanks Robert Rottmerhusen)
   - Added a new Canon LensType (thanks Warren Stockton)
   - Removed D70Boring shortcut tag
@@ -4056,7 +4182,7 @@ Feb. 2, 2007 - Version 6.74
 Jan. 31, 2007 - Version 6.73
 
   - Added read support for meta information in HTML and XHTML documents
-  - Added ability to write certain EXIF tags (ie. UserComment) as Unicode
+  - Added ability to write certain EXIF tags (eg. UserComment) as Unicode
   - Added character set translation for XMP information; the -L option now works
     for all common meta information formats! (see updated FAQ #10 for details)
   - Added a few more XMP-microsoft tags (thanks Kees Moerman)
@@ -4078,7 +4204,7 @@ Jan. 24, 2007 - Version 6.71
   - Patched Microsoft Photo bug in EXIF Unicode text byte ordering
   - Added support for XMP-microsoft tags and 2 new Microsoft EXIF tags
   - Added a few new XMP tags (NativeDigest, ColorMode and ICCProfileName)
-  - Added ability to add or delete copied tags from list (ie. "-SRCTAG+>DSTTAG")
+  - Added ability to add or delete copied tags from list (eg. "-SRCTAG+>DSTTAG")
   - Added a few more Canon EasyMode values (thanks Samson Tai)
   - Added CanonModelID values for new A450, A460 and A550
   - Changed the -if option so the condition automatically fails if the
@@ -4748,7 +4874,7 @@ Mar. 2, 2006 - Version 6.03
 Feb. 26, 2006 - Version 6.02
 
   - Fixed problem rewriting Photoshop IRB resources as written by some
-    applications (ie. PixVue)
+    applications (eg. PixVue)
   - Improved decoding of AVI files to increase speed and extract more tags
   - Added -overwrite_original_in_place option
   - Added a number of new XMP tags and bring XMP support up to new
@@ -5165,7 +5291,7 @@ July 28, 2005 - Version 5.52
 
 July 27, 2005 - Version 5.51
 
-  - Assume '-TagsFromFile @' for any redirected tags (ie. '-SRCTAG>DSTTAG' or
+  - Assume '-TagsFromFile @' for any redirected tags (eg. '-SRCTAG>DSTTAG' or
     '-DSTTAG<SRCTAG') which are specified without a prior '-TagsFromFile'
 
 July 27, 2005 - Version 5.50
@@ -5413,7 +5539,7 @@ May 16, 2005 - Version 5.18 (production release)
 May 14, 2005 - Version 5.17
 
   - Allow 'All' to be used as a group name with '-TagsFromFile' option to
-    preserve original tag groups (ie. '-all:all')
+    preserve original tag groups (eg. '-all:all')
   - PrintIM information is now copied with -TagsFromFile
   - Decode EXIF:Gamma tag
   - Decode Canon 350D FileNumber
@@ -5555,7 +5681,7 @@ Mar. 31, 2005 - Version 4.92
   - Added 'Directory' tag
   - Decode a few more Pentax tags (thanks to John Francis)
   - Allow newlines in tag values on command line when writing
-  - Fixed problem rewriting makernotes with sub directories (ie. Olympus)
+  - Fixed problem rewriting makernotes with sub directories (eg. Olympus)
 
 Mar. 28, 2005 - Version 4.91
 
@@ -5608,7 +5734,7 @@ Mar. 10, 2005 - Version 4.85
   - Fixed problem which caused an error when adding XMP information to a TIFF
     file which didn't previously contain XMP
   - Made '=' optional with -AllTagsFromFile option
-  - Fixed problem with verbose dump of zero-length directory (ie. Sony F717
+  - Fixed problem with verbose dump of zero-length directory (eg. Sony F717
     maker notes)
 
 Mar. 9, 2005 - Version 4.84
@@ -5749,7 +5875,7 @@ Feb. 4, 2005 - Version 4.51
 Feb. 2, 2005 - Version 4.50
 
   - Allow writing to specific IFD
-  - Allow permanent tags (ie. MakerNotes tags) 'deleted' by setting them to an
+  - Allow permanent tags (eg. MakerNotes tags) 'deleted' by setting them to an
     empty string if '' is a valid value for the tag
   - Added test for rewriting Nikon D70 information
   - Added missing inverse conversion routines for GPS tags (now they are all
@@ -5989,7 +6115,7 @@ Dec. 11, 2004 - Version 4.04
 Dec. 6, 2004 - Version 4.03
 
   - Major overhaul of verbose message output
-  - Change -v option to allow verbose level to be specified (ie. -v3 = very very
+  - Change -v option to allow verbose level to be specified (eg. -v3 = very very
     verbose)
   - Added a new Nikon tag (SceneMode)
   - Count images which were unchanged when writing tags
@@ -72,6 +72,7 @@ html/TagNames/Kodak.html
 html/TagNames/KyoceraRaw.html
 html/TagNames/LNK.html
 html/TagNames/Leaf.html
+html/TagNames/Lytro.html
 html/TagNames/M2TS.html
 html/TagNames/MIE.html
 html/TagNames/MIFF.html
@@ -99,6 +100,7 @@ html/TagNames/PICT.html
 html/TagNames/PLIST.html
 html/TagNames/PNG.html
 html/TagNames/PSP.html
+html/TagNames/Palm.html
 html/TagNames/Panasonic.html
 html/TagNames/PanasonicRaw.html
 html/TagNames/Pentax.html
@@ -267,6 +269,7 @@ lib/Image/ExifTool/Lang/tr.pm
 lib/Image/ExifTool/Lang/zh_cn.pm
 lib/Image/ExifTool/Lang/zh_tw.pm
 lib/Image/ExifTool/Leaf.pm
+lib/Image/ExifTool/Lytro.pm
 lib/Image/ExifTool/M2TS.pm
 lib/Image/ExifTool/MIE.pm
 lib/Image/ExifTool/MIEUnits.pod
@@ -297,6 +300,7 @@ lib/Image/ExifTool/PLIST.pm
 lib/Image/ExifTool/PNG.pm
 lib/Image/ExifTool/PPM.pm
 lib/Image/ExifTool/PSP.pm
+lib/Image/ExifTool/Palm.pm
 lib/Image/ExifTool/Panasonic.pm
 lib/Image/ExifTool/PanasonicRaw.pm
 lib/Image/ExifTool/Pentax.pm
@@ -521,6 +525,8 @@ t/Lang_6.out
 t/Lang_7.out
 t/Lang_8.out
 t/Lang_9.out
+t/Lytro.t
+t/Lytro_2.out
 t/M2TS.t
 t/M2TS_2.out
 t/MIE.t
@@ -598,6 +604,8 @@ t/PPM_2.out
 t/PPM_3.out
 t/PSP.t
 t/PSP_2.out
+t/Palm.t
+t/Palm_2.out
 t/Panasonic.t
 t/Panasonic_2.out
 t/Panasonic_3.out
@@ -816,6 +824,7 @@ t/images/Jpeg2000.jp2
 t/images/Kodak.jpg
 t/images/KyoceraRaw.raw
 t/images/LNK.lnk
+t/images/Lytro.lfp
 t/images/M2TS.mts
 t/images/MIE.mie
 t/images/MIFF.miff
@@ -844,6 +853,7 @@ t/images/PLIST-xml.plist
 t/images/PNG.png
 t/images/PPM.ppm
 t/images/PSP.psp
+t/images/Palm.mobi
 t/images/Panasonic.jpg
 t/images/Panasonic.rw2
 t/images/Pentax.avi
@@ -1,6 +1,6 @@
 --- #YAML:1.0
 name:               Image-ExifTool
-version:            9.60
+version:            9.70
 abstract:           Read and write meta information
 author:
     - Phil Harvey (phil@owl.phy.queensu.ca)
@@ -14,38 +14,39 @@ supported by ExifTool (r = read, w = write, c = create):
 
   File Types
   ------------+-------------+-------------+-------------+------------
-  3FR   r     | EIP   r     | LA    r     | OTF   r     | RW2   r/w
-  3G2   r/w   | EPS   r/w   | LNK   r     | PAC   r     | RWL   r/w
-  3GP   r/w   | ERF   r/w   | M2TS  r     | PAGES r     | RWZ   r
-  ACR   r     | EXE   r     | M4A/V r/w   | PBM   r/w   | RM    r
-  AFM   r     | EXIF  r/w/c | MEF   r/w   | PCD   r     | SO    r
-  AI    r/w   | EXR   r     | MIE   r/w/c | PDF   r/w   | SR2   r/w
-  AIFF  r     | EXV   r/w/c | MIFF  r     | PEF   r/w   | SRF   r
-  APE   r     | F4A/V r/w   | MKA   r     | PFA   r     | SRW   r/w
-  ARW   r/w   | FFF   r/w   | MKS   r     | PFB   r     | SVG   r
-  ASF   r     | FLA   r     | MKV   r     | PFM   r     | SWF   r
-  AVI   r     | FLAC  r     | MNG   r/w   | PGF   r     | THM   r/w
-  BMP   r     | FLV   r     | MODD  r     | PGM   r/w   | TIFF  r/w
-  BTF   r     | FPF   r     | MOS   r/w   | PLIST r     | TORRENT r
-  CHM   r     | FPX   r     | MOV   r/w   | PICT  r     | TTC   r
-  COS   r     | GIF   r/w   | MP3   r     | PMP   r     | TTF   r
-  CR2   r/w   | GZ    r     | MP4   r/w   | PNG   r/w   | VRD   r/w/c
-  CRW   r/w   | HDP   r/w   | MPC   r     | PPM   r/w   | VSD   r
-  CS1   r/w   | HDR   r     | MPG   r     | PPT   r     | WAV   r
-  DCM   r     | HTML  r     | MPO   r/w   | PPTX  r     | WDP   r/w
-  DCP   r/w   | ICC   r/w/c | MQV   r/w   | PS    r/w   | WEBP  r
-  DCR   r     | IDML  r     | MRW   r/w   | PSB   r/w   | WEBM  r
-  DFONT r     | IIQ   r/w   | MXF   r     | PSD   r/w   | WMA   r
-  DIVX  r     | IND   r/w   | NEF   r/w   | PSP   r     | WMV   r
-  DJVU  r     | INX   r     | NRW   r/w   | QTIF  r/w   | WV    r
-  DLL   r     | ITC   r     | NUMBERS r   | RA    r     | X3F   r/w
-  DNG   r/w   | J2C   r     | ODP   r     | RAF   r/w   | XCF   r
-  DOC   r     | JNG   r/w   | ODS   r     | RAM   r     | XLS   r
-  DOCX  r     | JP2   r/w   | ODT   r     | RAR   r     | XLSX  r
-  DPX   r     | JPEG  r/w   | OFR   r     | RAW   r/w   | XMP   r/w/c
-  DV    r     | K25   r     | OGG   r     | RIFF  r     | ZIP   r
-  DVB   r/w   | KDC   r     | OGV   r     | RSRC  r     |
-  DYLIB r     | KEY   r     | ORF   r/w   | RTF   r     |
+  3FR   r     | EIP   r     | LA    r     | ORF   r/w   | RTF   r
+  3G2   r/w   | EPS   r/w   | LFP   r     | OTF   r     | RW2   r/w
+  3GP   r/w   | EPUB  r     | LNK   r     | PAC   r     | RWL   r/w
+  ACR   r     | ERF   r/w   | M2TS  r     | PAGES r     | RWZ   r
+  AFM   r     | EXE   r     | M4A/V r/w   | PBM   r/w   | RM    r
+  AI    r/w   | EXIF  r/w/c | MEF   r/w   | PCD   r     | SEQ   r
+  AIFF  r     | EXR   r     | MIE   r/w/c | PDB   r     | SO    r
+  APE   r     | EXV   r/w/c | MIFF  r     | PDF   r/w   | SR2   r/w
+  ARW   r/w   | F4A/V r/w   | MKA   r     | PEF   r/w   | SRF   r
+  ASF   r     | FFF   r/w   | MKS   r     | PFA   r     | SRW   r/w
+  AVI   r     | FLA   r     | MKV   r     | PFB   r     | SVG   r
+  AZW   r     | FLAC  r     | MNG   r/w   | PFM   r     | SWF   r
+  BMP   r     | FLV   r     | MOBI  r     | PGF   r     | THM   r/w
+  BTF   r     | FPF   r     | MODD  r     | PGM   r/w   | TIFF  r/w
+  CHM   r     | FPX   r     | MOS   r/w   | PLIST r     | TORRENT r
+  COS   r     | GIF   r/w   | MOV   r/w   | PICT  r     | TTC   r
+  CR2   r/w   | GZ    r     | MP3   r     | PMP   r     | TTF   r
+  CRW   r/w   | HDP   r/w   | MP4   r/w   | PNG   r/w   | VRD   r/w/c
+  CS1   r/w   | HDR   r     | MPC   r     | PPM   r/w   | VSD   r
+  DCM   r     | HTML  r     | MPG   r     | PPT   r     | WAV   r
+  DCP   r/w   | ICC   r/w/c | MPO   r/w   | PPTX  r     | WDP   r/w
+  DCR   r     | IDML  r     | MQV   r/w   | PS    r/w   | WEBP  r
+  DFONT r     | IIQ   r/w   | MRW   r/w   | PSB   r/w   | WEBM  r
+  DIVX  r     | IND   r/w   | MXF   r     | PSD   r/w   | WMA   r
+  DJVU  r     | INX   r     | NEF   r/w   | PSP   r     | WMV   r
+  DLL   r     | ITC   r     | NRW   r/w   | QTIF  r/w   | WV    r
+  DNG   r/w   | J2C   r     | NUMBERS r   | RA    r     | X3F   r/w
+  DOC   r     | JNG   r/w   | ODP   r     | RAF   r/w   | XCF   r
+  DOCX  r     | JP2   r/w   | ODS   r     | RAM   r     | XLS   r
+  DPX   r     | JPEG  r/w   | ODT   r     | RAR   r     | XLSX  r
+  DV    r     | K25   r     | OFR   r     | RAW   r/w   | XMP   r/w/c
+  DVB   r/w   | KDC   r     | OGG   r     | RIFF  r     | ZIP   r
+  DYLIB r     | KEY   r     | OGV   r     | RSRC  r     |
 
   Meta Information
   ----------------------+----------------------+---------------------
@@ -69,11 +70,7 @@ See html/index.html for more details about ExifTool features.
 
 ExifTool can be downloaded from
 
-  Main server URL:  http://owl.phy.queensu.ca/~phil/exiftool/
-  Alternate URL:    http://130.15.24.87/~phil/exiftool/
-
-Note:  Please do not make links to the alternate URL above, because this
-server is not permanent.
+  http://owl.phy.queensu.ca/~phil/exiftool/
 
 RUNNING
 
@@ -94,7 +94,7 @@
             Writable => 'rational64s',
         },
     },
-    # IPTC tags are added to a specific record type (ie. application record):
+    # IPTC tags are added to a specific record type (eg. application record):
     # (Note: IPTC tag ID's are limited to the range 0-255)
     'Image::ExifTool::IPTC::ApplicationRecord' => {
         # Example 4.  IPTC:NewIPTCTag
@@ -117,7 +117,7 @@
         # Example 7.  XMP-exif:GPSRoll
         GPSRoll  => { Writable => 'rational', Groups => { 2 => 'Location' } },
     },
-    # new XMP namespaces (ie. xxx) must be added to the Main XMP table:
+    # new XMP namespaces (eg. xxx) must be added to the Main XMP table:
     'Image::ExifTool::XMP::Main' => {
         # namespace definition for examples 8 to 11
         xxx => { # <-- must be the same as the NAMESPACE prefix
@@ -244,7 +244,7 @@
     GROUPS        => { 0 => 'XMP', 1 => 'XMP-xxx', 2 => 'Image' },
     NAMESPACE     => { 'xxx' => 'http://ns.myname.com/xxx/1.0/' },
     WRITABLE      => 'string',
-    # replace "NewXMPxxxTag1" with your own tag name (ie. "MyTag")
+    # replace "NewXMPxxxTag1" with your own tag name (eg. "MyTag")
     # Example 8.  XMP-xxx:NewXMPxxxTag1
     NewXMPxxxTag1 => { Writable => 'lang-alt' },
     # Example 9.  XMP-xxx:NewXMPxxxTag2
@@ -12,7 +12,7 @@
 use strict;
 require 5.004;
 
-my $version = '9.60';
+my $version = '9.70';
 
 # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
 my $exeDir;
@@ -35,6 +35,7 @@ sub SigCont();
 sub Cleanup();
 sub GetImageInfo($$);
 sub SetImageInfo($$$);
+sub DoHardLink($$$$);
 sub CleanXML($);
 sub EncodeXML($);
 sub FormatXML($$$);
@@ -55,7 +56,7 @@ sub AbsPath($);
 sub SuggestedExtension($$$);
 sub LoadPrintFormat($);
 sub FilenameSPrintf($;$@);
-sub NextUnusedFilename($;$);
+sub NextUnusedFilename($;$$);
 sub CreateDirectory($);
 sub OpenOutputFile($;@);
 sub AcceptFile($);
@@ -94,6 +95,7 @@ my %preserveTime;   # preserved timestamps for files
 my %printFmt;       # the contents of the print format file
 my %setTags;        # hash of list references for tags to set from files
 my %setTagsList;    # list of other tag lists for multiple -tagsFromFile from the same file
+my %usedFileName;   # lookup for file names we already used in TestName feature
 my %warnedOnce;     # lookup for once-only warnings
 my %wext;           # -W extensions to write
 my $allGroup;       # show group name for all tags
@@ -138,6 +140,7 @@ my $interrupted;    # flag set if CTRL-C is pressed during a critical process
 my $isWriting;      # flag set if we are writing tags
 my $joinLists;      # flag set to join list values into a single string
 my $json;           # flag for JSON/PHP output format (1=JSON, 2=PHP)
+my $langOpt;        # language option
 my $listItem;       # item number for extracting single item from a list
 my $listSep;        # list item separator (', ' by default)
 my $mt;             # main ExifTool object
@@ -353,6 +356,7 @@ undef %printFmt;
 undef %preserveTime;
 undef %setTags;
 undef %setTagsList;
+undef %usedFileName;
 undef %warnedOnce;
 undef %wext;
 undef $allGroup;
@@ -375,6 +379,7 @@ undef $filtered;
 undef $fixLen;
 undef $forcePrint;
 undef $joinLists;
+undef $langOpt;
 undef $listItem;
 undef $multiFile;
 undef $outOpt;
@@ -537,6 +542,7 @@ for (;;) {
                 my %opts;
                 $opts{Flags} = 1 if defined $forcePrint;
                 $opts{NoDesc} = 1 if $outFormat > 0;
+                $opts{Lang} = $langOpt;
                 Image::ExifTool::TagInfoXML::Write(undef, $group, %opts);
                 next;
             }
@@ -841,12 +847,12 @@ for (;;) {
     (/^l$/ or $a eq 'long') and --$outFormat, next;
     (/^L$/ or $a eq 'latin') and $utf8 = 0, $mt->Options(Charset => 'Latin'), next;
     if ($a eq 'lang') {
-        my $lang = (@ARGV and $ARGV[0] !~ /^-/) ? shift : undef;
-        if ($lang) {
-            # make lower case and use underline as a separator (ie. 'en_ca')
-            $lang =~ tr/-A-Z/_a-z/;
-            $mt->Options(Lang => $lang);
-            next if $lang eq $mt->Options('Lang');
+        $langOpt = (@ARGV and $ARGV[0] !~ /^-/) ? shift : undef;
+        if ($langOpt) {
+            # make lower case and use underline as a separator (eg. 'en_ca')
+            $langOpt =~ tr/-A-Z/_a-z/;
+            $mt->Options(Lang => $langOpt);
+            next if $langOpt eq $mt->Options('Lang');
         } else {
             $pass or push(@nextPass, '-lang'), next;
         }
@@ -855,7 +861,7 @@ for (;;) {
         $langs =~ tr/_/-/;  # display dashes instead of underlines in language codes
         $langs = $mt->Decode($langs, 'UTF8');
         $langs = Image::ExifTool::HTML::EscapeHTML($langs) if $escapeHTML;
-        $lang and Error("Invalid or unsupported language '$lang'.\n$langs"), $badCmd=1, next;
+        $langOpt and Error("Invalid or unsupported language '$langOpt'.\n$langs"), $badCmd=1, next;
         print $langs;
         $helped = 1;
         next;
@@ -1502,7 +1508,12 @@ if (@dbKeys and require Cwd) {
     local $SIG{'__WARN__'} = sub { $evalWarning = $_[0] };
     foreach (@dbKeys) {
         my $absPath = AbsPath($_);
-        $database{$absPath} = $database{$_} if defined $absPath and not $database{$absPath};
+        if (defined $absPath) {
+            $database{$absPath} = $database{$_} unless $database{$absPath};
+            if ($verbose and $verbose > 1) {
+                print $vout "Imported entry for '$_' (full path: '$absPath')\n";
+            }
+        }
     }
 }
 
@@ -1754,7 +1765,7 @@ sub GetImageInfo($$)
         $info = $et->ImageInfo(Infile($pipe), \@foundTags);
         $et->Options(Duplicates => $oldDups);
     }
-    # all done now if we already wrote output text file (ie. verbose option)
+    # all done now if we already wrote output text file (eg. verbose option)
     if ($fp) {
         if ($outfile) {
             $et->Options(TextOut => \*STDOUT);
@@ -1886,7 +1897,7 @@ TAG:    foreach $tag (@foundTags) {
             my $val = $$info{$tag};
             if (ref $val) {
                 if (defined $binaryOutput and not $binaryOutput) { # happens with -X -b or -php -b
-                    # avoid extracting Protected binary tags (ie. data blocks) [insider information]
+                    # avoid extracting Protected binary tags (eg. data blocks) [insider information]
                     next if $$et{TAG_INFO}{$tag}{Protected};
                 }
                 $val = ConvertBinary($val); # convert SCALAR references
@@ -2253,7 +2264,7 @@ TAG:    foreach $tag (@foundTags) {
 sub SetImageInfo($$$)
 {
     my ($et, $file, $orig) = @_;
-    my ($outfile, $restored, $isTemporary, $isStdout, $outType, $tagsFromSrc, $hardLink);
+    my ($outfile, $restored, $isTemporary, $isStdout, $outType, $tagsFromSrc, $hardLink, $testName);
     my $infile = $file;    # save infile in case we change it again
 
     undef $tmpFile; # make sure this isn't defined
@@ -2400,7 +2411,7 @@ sub SetImageInfo($$$)
                 unless ($found) {
                     Warn("No SourceFile '$file' in imported $csv database\n");
                     my $absPath = AbsPath($file);
-                    Warn("(absolute path: '$absPath')\n") if defined $absPath;
+                    Warn("(full path: '$absPath')\n") if defined $absPath;
                     return 0;
                 }
             }
@@ -2416,8 +2427,12 @@ sub SetImageInfo($$$)
     } else {
         # get name of hard link if we are creating one
         $hardLink = $et->GetNewValues('HardLink');
+        $testName = $et->GetNewValues('TestName');
         $hardLink = FilenameSPrintf($hardLink, $orig) if defined $hardLink;
-    
+        if (defined $testName) {
+            $testName = FilenameSPrintf($testName, $orig);
+            $testName = Image::ExifTool::GetNewFileName($file, $testName) if $file ne '';
+        }
         # determine what our output file name should be
         my $newFileName = $et->GetNewValues('FileName');
         my $newDir = $et->GetNewValues('Directory');
@@ -2494,14 +2509,9 @@ sub SetImageInfo($$$)
                 } else {
                     ++$countSameWr;
                 }
-                if (defined $hardLink) {
+                if (defined $hardLink or defined $testName) {
                     my $src = (defined $outfile and $r3 > 0) ? $outfile : $file;
-                    $hardLink = NextUnusedFilename($hardLink);
-                    if ($et->SetFileName($src, $hardLink, 'Link') > 0) {
-                        ++$countLink;
-                    } else {
-                        ++$countBadLink;
-                    }
+                    DoHardLink($et, $src, $hardLink, $testName);
                 }
                 return 1;
             }
@@ -2523,14 +2533,9 @@ sub SetImageInfo($$$)
     my $success = $et->WriteInfo(Infile($file), $outfile, $outType);
 
     # create hard link if specified
-    if (defined $hardLink and $success) {
+    if ($success and (defined $hardLink or defined $testName)) {
         my $src = defined $outfile ? $outfile : $file;
-        $hardLink = NextUnusedFilename($hardLink);
-        if ($et->SetFileName($src, $hardLink, 'Link') > 0) {
-            ++$countLink;
-        } else {
-            ++$countBadLink;
-        }
+        DoHardLink($et, $src, $hardLink, $testName);
     }
 
     # get file time if preserving it
@@ -2659,6 +2664,31 @@ sub SetImageInfo($$$)
 }
 
 #------------------------------------------------------------------------------
+# Make hard link and handle TestName if specified
+# Inputs: 0) ExifTool ref, 1) source file name, 2) HardLink name, 3) TestFile name
+sub DoHardLink($$$$)
+{
+    my ($et, $src, $hardLink, $testName) = @_;
+    if (defined $hardLink) {
+        $hardLink = NextUnusedFilename($hardLink);
+        if ($et->SetFileName($src, $hardLink, 'Link') > 0) {
+            ++$countLink;
+        } else {
+            ++$countBadLink;
+        }
+    }
+    if (defined $testName) {
+        $testName = NextUnusedFilename($testName, undef, 1);
+        if ($usedFileName{$testName}) {
+            $et->Warn("File '$testName' would exist");
+        } else {
+            $usedFileName{$testName} = 1;
+            $et->SetFileName($src, $testName, 'Test');
+        }
+    }
+}
+
+#------------------------------------------------------------------------------
 # Clean string for XML (also removes invalid control chars and malformed UTF-8)
 # Inputs: 0) string ref
 # Returns: nothing, but input string is escaped
@@ -2808,6 +2838,10 @@ sub FormatJSON($$$)
 sub FormatCSV($)
 {
     my $val = shift;
+    # currently, the value may contain NULL characters.  It is unclear
+    # whether or not this is valid CSV, but some readers may not like it.
+    # (if this becomes a problem, in the future values may need to be truncated at
+    # the first NULL character, but this would disable the use of CSV for binary data)
     $val = qq{"$val"} if $val =~ s/"/""/g or $val =~ /(^\s+|\s+$)/ or $val =~ /[,\n\r]/;
     return $val;
 }
@@ -3093,9 +3127,12 @@ sub AbsPath($)
     my $path;
     if (defined $file and require Cwd) {
         $path = eval { Cwd::abs_path($file) };
-        # convert to forward slashes if necessary
-        # (abs_path doesn't consistently return one or the other)
-        $path =~ tr/\\/\// if defined $path and $hasBackslash{$^O};
+        # make the delimiters and case consistent
+        # (abs_path is very inconsistent about what it returns in Windows)
+        if (defined $path and $hasBackslash{$^O}) {
+            $path =~ tr/\\/\// ;
+            $path = lc $path;
+        }
     }
     return $path;
 }
@@ -3259,10 +3296,11 @@ sub Num2Alpha($)
 #------------------------------------------------------------------------------
 # Expand '%c' and '%C' codes if filename to get next unused file name
 # Inputs: 0) file name format string, 1) filename ok to use even if it exists
+#         2) dry run (won't really be renaming file)
 # Returns: new file name
-sub NextUnusedFilename($;$)
+sub NextUnusedFilename($;$$)
 {
-    my ($fmt, $okfile) = @_;
+    my ($fmt, $okfile, $dryRun) = @_;
     return $fmt unless $fmt =~ /%[-+]?\d*\.?\d*[lun]?[cC]/;
     my %sep = ( '-' => '-', '+' => '_' );
     my ($copy, $alpha) = (0, 'a');
@@ -3295,7 +3333,7 @@ sub NextUnusedFilename($;$)
         }
         $filename .= substr($fmt, $pos); # add rest of file name
         # return now with filename unless file exists
-        return $filename unless -e $filename;
+        return $filename unless -e $filename or $usedFileName{$filename};
         return $filename if defined $okfile and $filename eq $okfile;
         ++$copy;
         ++$alpha;
@@ -3497,7 +3535,7 @@ sub ReadStayOpen($)
                 last;
             }
         } elsif ($result == 0) {
-            # sysread() didn't block (ie. when reading from a file),
+            # sysread() didn't block (eg. when reading from a file),
             # so wait for a short time (1/100 sec) then try again
             # Note: may break out of this early if SIGCONT is received
             select(undef,undef,undef,0.01);
@@ -3517,9 +3555,15 @@ sub PrintTagList($@)
 {
     my $msg = shift;
     print $msg, ":\n" unless $quiet;
+    my $tag;
+    if ($outFormat < 0 and $msg =~ /file extensions$/ and @_) {
+        foreach $tag (@_) {
+            printf("  %-11s %s\n", $tag, GetFileType($tag, 1));
+        }
+        return;
+    }
     print ' ';
     my $len = 1;
-    my $tag;
     foreach $tag (@_) {
         my $taglen = length($tag);
         if ($len + $taglen > 78) {
@@ -3604,38 +3648,39 @@ supported by ExifTool (r = read, w = write, c = create):
 
   File Types
   ------------+-------------+-------------+-------------+------------
-  3FR   r     | EIP   r     | LA    r     | OTF   r     | RW2   r/w
-  3G2   r/w   | EPS   r/w   | LNK   r     | PAC   r     | RWL   r/w
-  3GP   r/w   | ERF   r/w   | M2TS  r     | PAGES r     | RWZ   r
-  ACR   r     | EXE   r     | M4A/V r/w   | PBM   r/w   | RM    r
-  AFM   r     | EXIF  r/w/c | MEF   r/w   | PCD   r     | SEQ   r
-  AI    r/w   | EXR   r     | MIE   r/w/c | PDF   r/w   | SO    r
-  AIFF  r     | EXV   r/w/c | MIFF  r     | PEF   r/w   | SR2   r/w
-  APE   r     | F4A/V r/w   | MKA   r     | PFA   r     | SRF   r
-  ARW   r/w   | FFF   r/w   | MKS   r     | PFB   r     | SRW   r/w
-  ASF   r     | FLA   r     | MKV   r     | PFM   r     | SVG   r
-  AVI   r     | FLAC  r     | MNG   r/w   | PGF   r     | SWF   r
-  BMP   r     | FLV   r     | MODD  r     | PGM   r/w   | THM   r/w
-  BTF   r     | FPF   r     | MOS   r/w   | PLIST r     | TIFF  r/w
-  CHM   r     | FPX   r     | MOV   r/w   | PICT  r     | TORRENT r
-  COS   r     | GIF   r/w   | MP3   r     | PMP   r     | TTC   r
-  CR2   r/w   | GZ    r     | MP4   r/w   | PNG   r/w   | TTF   r
-  CRW   r/w   | HDP   r/w   | MPC   r     | PPM   r/w   | VRD   r/w/c
-  CS1   r/w   | HDR   r     | MPG   r     | PPT   r     | VSD   r
-  DCM   r     | HTML  r     | MPO   r/w   | PPTX  r     | WAV   r
-  DCP   r/w   | ICC   r/w/c | MQV   r/w   | PS    r/w   | WDP   r/w
-  DCR   r     | IDML  r     | MRW   r/w   | PSB   r/w   | WEBP  r
-  DFONT r     | IIQ   r/w   | MXF   r     | PSD   r/w   | WEBM  r
-  DIVX  r     | IND   r/w   | NEF   r/w   | PSP   r     | WMA   r
-  DJVU  r     | INX   r     | NRW   r/w   | QTIF  r/w   | WMV   r
-  DLL   r     | ITC   r     | NUMBERS r   | RA    r     | WV    r
-  DNG   r/w   | J2C   r     | ODP   r     | RAF   r/w   | X3F   r/w
-  DOC   r     | JNG   r/w   | ODS   r     | RAM   r     | XCF   r
-  DOCX  r     | JP2   r/w   | ODT   r     | RAR   r     | XLS   r
-  DPX   r     | JPEG  r/w   | OFR   r     | RAW   r/w   | XLSX  r
-  DV    r     | K25   r     | OGG   r     | RIFF  r     | XMP   r/w/c
-  DVB   r/w   | KDC   r     | OGV   r     | RSRC  r     | ZIP   r
-  DYLIB r     | KEY   r     | ORF   r/w   | RTF   r     |
+  3FR   r     | EIP   r     | LA    r     | ORF   r/w   | RTF   r
+  3G2   r/w   | EPS   r/w   | LFP   r     | OTF   r     | RW2   r/w
+  3GP   r/w   | EPUB  r     | LNK   r     | PAC   r     | RWL   r/w
+  ACR   r     | ERF   r/w   | M2TS  r     | PAGES r     | RWZ   r
+  AFM   r     | EXE   r     | M4A/V r/w   | PBM   r/w   | RM    r
+  AI    r/w   | EXIF  r/w/c | MEF   r/w   | PCD   r     | SEQ   r
+  AIFF  r     | EXR   r     | MIE   r/w/c | PDB   r     | SO    r
+  APE   r     | EXV   r/w/c | MIFF  r     | PDF   r/w   | SR2   r/w
+  ARW   r/w   | F4A/V r/w   | MKA   r     | PEF   r/w   | SRF   r
+  ASF   r     | FFF   r/w   | MKS   r     | PFA   r     | SRW   r/w
+  AVI   r     | FLA   r     | MKV   r     | PFB   r     | SVG   r
+  AZW   r     | FLAC  r     | MNG   r/w   | PFM   r     | SWF   r
+  BMP   r     | FLV   r     | MOBI  r     | PGF   r     | THM   r/w
+  BTF   r     | FPF   r     | MODD  r     | PGM   r/w   | TIFF  r/w
+  CHM   r     | FPX   r     | MOS   r/w   | PLIST r     | TORRENT r
+  COS   r     | GIF   r/w   | MOV   r/w   | PICT  r     | TTC   r
+  CR2   r/w   | GZ    r     | MP3   r     | PMP   r     | TTF   r
+  CRW   r/w   | HDP   r/w   | MP4   r/w   | PNG   r/w   | VRD   r/w/c
+  CS1   r/w   | HDR   r     | MPC   r     | PPM   r/w   | VSD   r
+  DCM   r     | HTML  r     | MPG   r     | PPT   r     | WAV   r
+  DCP   r/w   | ICC   r/w/c | MPO   r/w   | PPTX  r     | WDP   r/w
+  DCR   r     | IDML  r     | MQV   r/w   | PS    r/w   | WEBP  r
+  DFONT r     | IIQ   r/w   | MRW   r/w   | PSB   r/w   | WEBM  r
+  DIVX  r     | IND   r/w   | MXF   r     | PSD   r/w   | WMA   r
+  DJVU  r     | INX   r     | NEF   r/w   | PSP   r     | WMV   r
+  DLL   r     | ITC   r     | NRW   r/w   | QTIF  r/w   | WV    r
+  DNG   r/w   | J2C   r     | NUMBERS r   | RA    r     | X3F   r/w
+  DOC   r     | JNG   r/w   | ODP   r     | RAF   r/w   | XCF   r
+  DOCX  r     | JP2   r/w   | ODS   r     | RAM   r     | XLS   r
+  DPX   r     | JPEG  r/w   | ODT   r     | RAR   r     | XLSX  r
+  DV    r     | K25   r     | OFR   r     | RAW   r/w   | XMP   r/w/c
+  DVB   r/w   | KDC   r     | OGG   r     | RIFF  r     | ZIP   r
+  DYLIB r     | KEY   r     | OGV   r     | RSRC  r     |
 
   Meta Information
   ----------------------+----------------------+---------------------
@@ -3777,13 +3822,13 @@ L<Advanced options|/Advanced options>
 
 =item B<->I<TAG>
 
-Extract information for the specified tag (ie. C<-CreateDate>).  Multiple
+Extract information for the specified tag (eg. C<-CreateDate>).  Multiple
 tags may be specified in a single command.  A tag name is the handle by
 which a piece of information is referenced.  See
 L<Image::ExifTool::TagNames|Image::ExifTool::TagNames> for documentation on
 available tag names.  A tag name may include leading group names separated
-by colons (ie. C<-EXIF:CreateDate>, or C<-Doc1:XMP:Creator>), and each group
-name may be prefixed by a digit to specify family number (ie.
+by colons (eg. C<-EXIF:CreateDate>, or C<-Doc1:XMP:Creator>), and each group
+name may be prefixed by a digit to specify family number (eg.
 C<-1IPTC:City>).  Use the B<-listg> option to list available group names by
 family.
 
@@ -3811,21 +3856,21 @@ information.  Use the B<-s> option to see the tag names instead.
 =item B<-->I<TAG>
 
 Exclude specified tag from extracted information.  Same as the B<-x> option.
+Group names and wildcards are permitted as described above for B<-TAG>. 
 Once excluded from the output, a tag may not be re-included by a subsequent
 option.  May also be used following a B<-tagsFromFile> option to exclude
 tags from being copied (when redirecting to another tag, it is the source
 tag that should be excluded), or to exclude groups from being deleted when
-deleting all information (ie. C<-all= --exif:all> deletes all but EXIF
+deleting all information (eg. C<-all= --exif:all> deletes all but EXIF
 information).  But note that this will not exclude individual tags from a
-group delete (unless a family 2 group is specified, see note 4 below). 
+group delete (unless a family 2 group is specified, see note 4 below).
 Instead, individual tags may be recovered using the B<-tagsFromFile> option
-(ie. C<-all= -tagsfromfile @ -artist>). Wildcards are permitted as described
-above for B<-TAG>.
+(eg. C<-all= -tagsfromfile @ -artist>).
 
 =item B<->I<TAG>[+-]B<=>[I<VALUE>]
 
-Write a new value for the specified tag (ie. C<-comment=wow>), or delete the
-tag if no I<VALUE> is given (ie. C<-comment=>).  C<+=> and C<-=> are used to
+Write a new value for the specified tag (eg. C<-comment=wow>), or delete the
+tag if no I<VALUE> is given (eg. C<-comment=>).  C<+=> and C<-=> are used to
 add or remove existing entries from a list, or to shift date/time values
 (see L<Image::ExifTool::Shift.pl|Image::ExifTool::Shift.pl> for details).
 C<+=> may also be used to increment numerical values, and C<-=> may be used
@@ -3844,7 +3889,7 @@ value to multiple tags.  When specified with wildcards, "unsafe" tags are
 not written.  A tag name of C<All> is eqivalent to C<*> (except that it
 doesn't require quoting, while arguments with wildcards do on systems with
 shell globbing), and is often used when deleting all metadata (ie. C<-All=>)
-or an entire group (ie. C<-GROUP:All=>, see note 4 below).  Note that not
+or an entire group (eg. C<-GROUP:All=>, see note 4 below).  Note that not
 all groups are deletable, and that the JPEG APP14 "Adobe" group is not
 removed by default with C<-All=> because it may affect the appearance of the
 image.  However, this will remove color space information, so the colors may
@@ -3904,8 +3949,9 @@ may also be given by a I<FMT> string where %d, %f and %e represent the
 directory, file name and extension of the original I<FILE> (see the B<-w>
 option for more details).  Note that quotes are required around this
 argument to prevent shell redirection since it contains a C<E<lt>> symbol.
-C<+E<lt>=> or C<-E<lt>=> may also be used to add or delete specific list
-entries, or to shift date/time values.
+If I<DATFILE>/I<FMT> is not provided, the effect is the same as C<-TAG=>,
+and the tag is simply deleted.  C<+E<lt>=> or C<-E<lt>=> may also be used to
+add or delete specific list entries, or to shift date/time values.
 
 =item B<-tagsFromFile> I<SRCFILE> or I<FMT>
 
@@ -3926,7 +3972,7 @@ to this group (unless redirected to another group, see below).  If C<All> is
 used as a group name, then each tag is written to the same family 1 group it
 had in the source file (ie. the same specific location in the metadata), but
 a different family may be specified by adding a leading family number to the
-group name (ie. C<-0All:all>).
+group name (eg. C<-0All:all>).
 
 I<SRCFILE> may be the same as I<FILE> to move information around within a
 single file.  In this case, C<@> may be used to represent the source file
@@ -3965,7 +4011,8 @@ this syntax.  Strings starting with a C<=> sign must insert a single space
 after the C<E<lt>> to avoid confusion with the C<E<lt>=> operator which sets
 the tag value from the contents of a file.  A single space at the start of
 the string is removed if it exists, but all other whitespace in the string
-is preserved.
+is preserved.  See note 8 below about using shortcuts or wildcards with the
+redirection feature.
 
 See L</COPYING EXAMPLES> for examples using B<-tagsFromFile>.
 
@@ -4004,7 +4051,7 @@ any previous operations on the list.  While this avoids duplicate list items
 when copying groups of tags from a file containing redundant information, it
 also prevents values of different tags from being copied into the same list
 when this is the intent.  So a B<-addTagsFromFile> option is provided which
-allows copying of multiple tags into the same list.  ie)
+allows copying of multiple tags into the same list.  eg)
 
     exiftool -addtagsfromfile @ '-subject<make' '-subject<model' ...
 
@@ -4017,11 +4064,20 @@ tags from I<SRCFILE>.
 7) Structured tags are copied by default when copying tags.  See the
 B<-struct> option for details.
 
+8) With the redirection feature, copying a tag directly (ie.
+E<quot>'-I<DSTTAG>E<lt>I<SRCTAG>'E<quot>) is not the same as interpolating
+its value inside a string (ie. E<quot>'-I<DSTTAG>E<lt>$I<SRCTAG>'E<quot>)
+for L<shortcut tags|Image::ExifTool::Shortcuts> or tag names containing
+wildcards.  When copying directly, the values of each matching source tag
+are copied individually to the destination tag (as if multiple redirection
+arguments were used).  However, when interpolated inside a string, the
+values of shortcut tags are concatenated, and wildcards are not allowed.
+
 =item B<-x> I<TAG> (B<-exclude>)
 
 Exclude the specified tag.  There may be multiple B<-x> options.  This has
-the same effect as --I<TAG> on the command line.  May also be used following
-a B<-tagsFromFile> option to exclude tags from being copied.
+the same effect as --I<TAG> on the command line.  See the --I<TAG>
+documentation above for a complete description.
 
 =back
 
@@ -4081,7 +4137,7 @@ when copying tags using the B<-tagsFromFile> option.
 
 2) If the hemisphere is known, a reference direction (N, S, E or W) is
 appended to each printed coordinate, but adding a C<+> to the format
-specifier (ie. C<%+.6f>) prints a signed coordinate instead.
+specifier (eg. C<%+.6f>) prints a signed coordinate instead.
 
 3) This print formatting may be disabled with the B<-n> option to extract
 coordinates as signed decimal degrees.
@@ -4220,7 +4276,7 @@ may be 0 (general location), 1 (specific location), 2 (category), 3
 specified by separating them with colons.  By default the resulting group
 name is simplified by removing any leading C<Main:> and collapsing adjacent
 identical group names, but this can be avoided by placing a colon before the
-first family number (ie. B<-g:3:1>).  If I<NUM> is not specified, B<-g0> is
+first family number (eg. B<-g:3:1>).  If I<NUM> is not specified, B<-g0> is
 assumed.  Use the B<-listg> option to list group names for a specified
 family.
 
@@ -4266,8 +4322,9 @@ the B<-D> or B<-H> option changes tag values to JSON objects with "val" and
 "id" fields, and adding B<-l> adds a "desc" field, and a "num" field if the
 numerical value is different from the converted "val".  The B<-b> option may
 be added to output binary data, encoded in base64 if necessary (indicated by
-"base64:" as the first 7 bytes of the value).  The B<-L> and B<-charset>
-options have no effect on the JSON output.
+"base64:" as the first 7 bytes of the value).  The JSON output is UTF-8
+regardless of any B<-L> or B<-charset> option setting, but the UTF-8
+validation is disabled if a character set other than UTF-8 is specified.
 
 If I<JSONFILE> is specified, the file is imported and the tag definitions
 from the file are used to set tag values on a per-file basis.  The special
@@ -4282,7 +4339,9 @@ may be suffixed with a C<#> to disable print conversion.
 
 Use long 2-line Canon-style output format.  Adds a description and
 unconverted value (if it is different from the converted value) to the XML,
-JSON or PHP output when B<-X>, B<-j> or B<-php> is used.
+JSON or PHP output when B<-X>, B<-j> or B<-php> is used.  May also be
+combined with B<-listf>, B<-listr> or B<-listwf> to add descriptions of the
+file types.
 
 =item B<-L> (B<-latin>)
 
@@ -4297,7 +4356,8 @@ C<de>, C<fr>, C<ja>, etc.  Use B<-lang> with no other arguments to get a
 list of available languages.  The default language is C<en> if B<-lang> is
 not specified.  Note that tag/group names are always English, independent of
 the B<-lang> setting, and translation of warning/error messages has not yet
-been implemented.
+been implemented.  May also be combined with B<-listx> to output
+descriptions in one language only.
 
 By default, ExifTool uses UTF-8 encoding for special characters, but the
 the B<-L> or B<-charset> option may be used to invoke other encodings.
@@ -4367,7 +4427,7 @@ with this command:
 
 produces output like this:
 
-    -- Generated by ExifTool 9.60 --
+    -- Generated by ExifTool 9.70 --
     File: a.jpg - 2003:10:31 15:44:19
     (f/5.6, 1/60s, ISO 100)
     File: b.jpg - 2006:05:23 11:57:38
@@ -4389,9 +4449,10 @@ semicolon following the tag name.  The expression has access to the value of
 this tag through the default input variable (C<$_>), and the full API
 through the current ExifTool object (C<$self>).  It may contain any valid
 Perl code, including translation (C<tr///>) and substitution (C<s///>)
-operations, but note that braces within the expression must be balanced. The
-example below prints the camera Make with spaces translated to underlines,
-and multiple consecutive underlines replaced by a single underline:
+operations, but note that braces within the expression must be balanced. 
+The example below prints the camera Make with spaces translated to
+underlines, and multiple consecutive underlines replaced by a single
+underline:
 
     exiftool -p '${make;tr/ /_/;s/__+/_/g}' image.jpg
 
@@ -4611,7 +4672,7 @@ are as follows:
 2) B<-W> supports three additional format codes:  %t, %g and %s represent
 the tag name, group name, and suggested extension for the output file (based
 on the format of the data).  The %g code may be followed by a single digit
-to specify the group family number (ie. %g1), otherwise family 0 is assumed.
+to specify the group family number (eg. %g1), otherwise family 0 is assumed.
 The substring width/position/case specifiers may be used with these format
 codes in exactly the same way as with %f and %e.
 
@@ -4687,7 +4748,7 @@ in JPEG and MPO files, streaming metadata in AVCHD videos, and the resource
 fork of Mac OS files.  Implies the B<-a> option.  Use B<-g3> or B<-G3> to
 identify the originating document for extracted information. Embedded
 documents containing sub-documents are indicated with dashes in the family 3
-group name.  (ie. C<Doc2-3> is the 3rd sub-document of the 2nd embedded
+group name.  (eg. C<Doc2-3> is the 3rd sub-document of the 2nd embedded
 document.) Note that this option may increase processing time substantially,
 especially for PDF files with many embedded images.
 
@@ -4720,8 +4781,8 @@ some maker note entries when reading the edited file.  This option allows an
 integer I<OFFSET> to be specified for adjusting the maker notes base offset.
 If no I<OFFSET> is given, ExifTool takes its best guess at the correct base.
 Note that exiftool will automatically fix the offsets for images which store
-original offset information (ie. newer Canon models).  Offsets are fixed
-permanently if B<-F> is used when writing EXIF to an image. ie)
+original offset information (eg. newer Canon models).  Offsets are fixed
+permanently if B<-F> is used when writing EXIF to an image. eg)
 
     exiftool -F -exif:resolutionunit=inches image.jpg
 
@@ -4746,10 +4807,11 @@ I<TAG>.  For example, to process files in order of date:
 Additional B<-fileOrder> options may be added for secondary sort keys. 
 Floating point values are sorted numerically, and all other values are
 sorted alphabetically.  The sort order may be reversed by prefixing the tag
-name with a C<-> (ie. C<-fileOrder -createdate>).  A C<#> may be appended to
-the tag name to disable print conversion for the sorted values.  Note that
-the B<-fileOrder> option has a large performance impact since it involves an
-additional processing pass of each file.
+name with a C<-> (eg. C<-fileOrder -createdate>).  Print conversion of the
+sorted values is disabled with the B<-n> option, or a C<#> appended to the
+tag name.  Other formatting options (eg. B<-d>) have no effect on the sorted
+values.  Note that the B<-fileOrder> option has a large performance impact
+since it involves an additional processing pass of each file.
 
 =item B<-i> I<DIR> (B<-ignore>)
 
@@ -4791,7 +4853,7 @@ Notes:
 2) Some binary data blocks are not extracted unless specified explicitly.
 These tags are not available for use in the B<-if> condition unless they are
 also specified on the command line.  The alternative is to use the
-C<$GROUP:all> syntax. (ie. Use C<$exif:all> instead of C<$exif> in I<EXPR>
+C<$GROUP:all> syntax. (eg. Use C<$exif:all> instead of C<$exif> in I<EXPR>
 to test for the existence of EXIF tags.)
 
 3) Tags in the string are interpolated the same way as with B<-p> before the
@@ -4809,7 +4871,7 @@ the associated NEF:
 
 5) The B<-a> option has no effect on the evaluation of the expression, and
 the values of duplicate tags are accessible only by specifying a group name
-(such as a family 4 instance number, ie. C<$Copy1:TAG>, C<$Copy2:TAG>, etc).
+(such as a family 4 instance number, eg. C<$Copy1:TAG>, C<$Copy2:TAG>, etc).
 
 =item B<-m> (B<-ignoreMinorErrors>)
 
@@ -4899,16 +4961,16 @@ Show file progress count in messages.  The progress count appears in
 brackets after then name of each processed file, and gives the current file
 number and the total number of files to be processed.  Implies the B<-v0>
 option, which prints the name of each processed file when writing.  When
-combined with the [tt]-if[/tt] option, the total count includes all files
-before the condition is applied, but files that fail the condition will not
-have their names printed.
+combined with the B<-if> option, the total count includes all files before
+the condition is applied, but files that fail the condition will not have
+their names printed.
 
 =item B<-q> (B<-quiet>)
 
 Quiet processing.  One B<-q> suppresses normal informational messages, and a
 second B<-q> suppresses warnings as well.  Error messages can not be
 suppressed, although minor errors may be downgraded to warnings with the
-B<-m> option.
+B<-m> option, which may then be suppressed with C<-q -q>.
 
 =item B<-r> (B<-recurse>)
 
@@ -4956,7 +5018,7 @@ for EXIF this is the individual IFD (the family 1 group).
 When reading, causes information to be extracted from .gz and .bz2
 compressed images.  (Only one image per archive.  Requires gzip and bzip2 to
 be installed on the system.)  When writing, causes compressed information to
-be written if supported by the image format.  (ie. The PNG format supports
+be written if supported by the image format.  (eg. The PNG format supports
 compressed text.)  This option also disables the recommended padding in
 embedded XMP, saving 2424 bytes when writing XMP in a file.
 
@@ -5120,7 +5182,10 @@ be followed by an additional argument of the form C<-GROUP:All> to list only
 tags in a specific group, where C<GROUP> is one or more family 0-2 group
 names (excepting EXIF IFD groups) separated by colons.  With B<-listg>,
 I<NUM> may be given to specify the group family, otherwise family 0 is
-assumed.  Here are some examples:
+assumed.  The B<-l> option may be combined with B<-listf>, B<-listr> or
+B<-listwf> to add file descriptions to the list.  The B<-lang> option may be
+combined with B<-listx> to output descriptions in a single language.  Here
+are some examples:
 
     -list               # list all tag names
     -list -EXIF:All     # list all EXIF tags
@@ -5215,7 +5280,7 @@ and the first existing source file is processed.  If none of the source
 files already exist, then exiftool uses the first B<-srcfile> specified.
 
 A I<FMT> of C<@> may be used to represent the original I<FILE>, which may be
-useful when specifying multiple B<-srcfile> options (ie. to fall back to
+useful when specifying multiple B<-srcfile> options (eg. to fall back to
 processing the original I<FILE> if no sidecar exists).
 
 =item B<-stay_open> I<FLAG>
@@ -5373,7 +5438,7 @@ Note that quotes are necessary around arguments which contain certain
 special characters such as C<E<gt>>, C<E<lt>> or any white space.  These
 quoting techniques are shell dependent, but the examples below will work for
 most Unix shells.  With the Windows cmd shell however, double quotes should
-be used (ie. -Comment=E<34>This is a new commentE<34>).
+be used (eg. -Comment=E<34>This is a new commentE<34>).
 
 =over 5
 
@@ -5669,7 +5734,7 @@ file extensions.
 =item exiftool '-Directory<DateTimeOriginal' -d %Y/%m/%d dir
 
 Move all files in C<dir> into a directory hierarchy based on year, month and
-day of C<DateTimeOriginal>.  ie) This command would move the file
+day of C<DateTimeOriginal>.  eg) This command would move the file
 C<dir/image.jpg> with a C<DateTimeOriginal> of C<2005:10:12 16:05:56> to
 C<2005/10/12/image.jpg>.
 
@@ -5817,7 +5882,8 @@ flexibility of ExifTool.)
 =head1 DIAGNOSTICS
 
 The exiftool application exits with a status of 0 on success, or 1 if an
-error occured or if all files failed the B<-if> condition.
+error occured or if all files failed the B<-if> condition (for any of the
+commands if B<-execute> was used).
 
 =head1 AUTHOR
 
@@ -31,7 +31,9 @@ with the proper arguments (with the exception of
 <a href="#SetNewValue">SetNewValue</a> which may send an error message to
 STDERR, but only when called in scalar context).  Error and warning messages
 that occur during processing are stored in the values of the Error and Warning
-tags, and are accessible via <a href="#GetValue">GetValue</a>.</p>
+tags, and are accessible via the <a href="#GetValue">GetValue</a> method to
+retrieve a single Error or Warning message, or <a href="#GetInfo">GetInfo</a> to
+retrieve any number of them.</p>
 
 <p>The ExifTool methods are not thread safe.</p>
 
@@ -238,17 +240,17 @@ reference (SCALAR ref).  The remaining scalar arguments are names of tags for
 requested information.  All tags are returned if no tags are specified.
 <br>&nbsp;<br>
 Tag names are case-insensitive and may be prefixed by optional group names
-separated by colons.  A group name may begin with a family number (ie.
+separated by colons.  A group name may begin with a family number (eg.
 '<code>1IPTC:Keywords</code>'), to restrict matches to a specific family. In the
 tag name, a '<code>?</code>' matches any single character and a '<code>*</code>'
 matches zero or more characters.  Thus '<code>GROUP:*</code>' represents all
 tags in a specific group.  Wildcards may not be used in group names, with the
 exception that a group name of '<code>*</code>' may be used to extract all
 available instances of a tag regardless of the
-<a href="#Duplicates">Duplicates</a> setting (ie. '<code>*:WhiteBalance</code>').
-Multiple groups may be specified (ie. '<code>EXIF:Time:*</code>' extracts all
+<a href="#Duplicates">Duplicates</a> setting (eg. '<code>*:WhiteBalance</code>').
+Multiple groups may be specified (eg. '<code>EXIF:Time:*</code>' extracts all
 EXIF Time tags).  And finally, a leading '<code>-</code>' indicates a tag to be
-excluded (ie. '<code>-IFD1:*</code>'), or a trailing '<code>#</code>' causes the
+excluded (eg. '<code>-IFD1:*</code>'), or a trailing '<code>#</code>' causes the
 ValueConv value to be returned for this tag.
 <br>&nbsp;<br>
 Note that keys in the returned information hash and elements of the returned tag
@@ -269,7 +271,7 @@ at the current file position, and on return the file position is unspecified.
 May be either a standard filehandle or a reference to a File::RandomAccess
 object.
 <br>&nbsp;<br>
-[Advanced:  To allow a non-rewindable stream (ie. a network socket) to be
+[Advanced:  To allow a non-rewindable stream (eg. a network socket) to be
 re-read after processing with ExifTool, first wrap the file reference in a
 File::RandomAccess object, then pass this object to
 <a href="#ImageInfo">ImageInfo</a>.  The File::RandomAccess object will buffer
@@ -358,8 +360,9 @@ details about the encodings.  By default, most returned strings are encoded in
 UTF-8.  For these, Encode::decode_utf8() may be used to convert to a sequence of
 logical Perl characters.</p>
 
-<p>As well as tags representing information extracted from the image,
-the following tags generated by ExifTool may be returned:</p>
+<p>As well as tags representing information extracted from the image, the
+following <a href="TagNames/Extra.html">Extra tags</a> generated by ExifTool may
+be returned:</p>
 
 <blockquote><table class='norm'>
 <tr><td><b>ExifToolVersion</b></td><td>The ExifTool version number</td></tr>
@@ -415,7 +418,7 @@ distribution for examples.</p>
 <tr><th colspan=4 bgcolor='#dddddd'><font size='+1'>ExifTool Options</font></th></tr>
 <tr><th>Option</th><th>Description</th><th>Values</th><th>Default</th></tr>
 <tr><td>Binary</td><td><a name="Binary"></a>Flag to extract the value data for all binary tags.
-    Tag values representing large binary data blocks (ie. ThumbnailImage)
+    Tag values representing large binary data blocks (eg. ThumbnailImage)
     are not necessarily extracted unless this option is set or the tag is
     specifically requested by name.</td>
     <td align=center>0 or 1</td><td align=center>0</td></tr>
@@ -485,7 +488,7 @@ distribution for examples.</p>
     seconds in that order, however minutes and seconds may be omitted.  If the
     hemisphere is known, a reference direction (N, S, E or W) is appended to
     each printed coordinate, but adding a '<code>+</code>' to the format
-    specifier (ie. <code>'%+.6f'</code>) prints a signed coordinate instead.
+    specifier (eg. <code>'%+.6f'</code>) prints a signed coordinate instead.
     The default for reading is equivalent to a format string of
     <code>q{%d&nbsp;deg&nbsp;%d'&nbsp;%.2f"}</code>, but to avoid a loss
     of precision the default for copying tags with
@@ -524,7 +527,7 @@ distribution for examples.</p>
     end of a JPEG image to check for an AFCP, CanonVRD, FotoStation,
     PhotoMechanic, MIE or PreviewImage trailer.  This also stops the parsing
     after the first comment in GIF images, and at the audio/video data with
-    RIFF-format files (AVI, WAV, etc), so any trailing metadata (ie. XMP written
+    RIFF-format files (AVI, WAV, etc), so any trailing metadata (ie.eg. XMP written
     by some utilities) may be missed.  When combined with the ScanForXMP option,
     prevents scanning for XMP in recognized file types.  With a value of 2,
     ExifTool will also avoid extracting any EXIF MakerNote information.</td>
@@ -610,7 +613,7 @@ distribution for examples.</p>
 <tr><td>Lang</td><td><a name="Lang"></a>Localized language for exiftool tag descriptions, etc.  If the
     specified language isn't available, the option is not changed.  May be set to
     undef to select the built-in default language.</td>
-    <td align=left>Image::ExifTool::Lang module name (ie. 'fr', 'zh_cn'), or 'en' or undef for the default language.</td>
+    <td align=left>Image::ExifTool::Lang module name (eg. 'fr', 'zh_cn'), or 'en' or undef for the default language.</td>
     <td align=center>'en'</td></tr>
 <tr><td>LargeFileSupport</td><td><a name="LargeFileSupport"></a>Flag to indicate that 64-bit file offsets are supported on this system.</td>
     <td align=center>0 or 1</td><td align=center>0</td></tr>
@@ -619,7 +622,7 @@ distribution for examples.</p>
 <tr><td>ListSep</td><td><a name="ListSep"></a>Separator string used to join lists of PrintConv values when
     List option is not set.</td><td align=center>Any string</td><td align=center>', '</td></tr>
 <tr><td>ListSplit</td><td><a name="ListSplit"></a>Regular expression used to split values of list-type tags
-    into individual items when writing.  (ie. use ',\\s*' to split a comma-separated list)</td>
+    into individual items when writing.  (eg. use ',\\s*' to split a comma-separated list)</td>
     <td align=center>A regular expression pattern</td><td align=center>undef</td></tr>
 <tr><td>MakerNotes</td><td><a name="MakerNotes"></a>Option to extract MakerNotes and other writable
     subdirectories (such as PrintIM) as a data block.  Normally when the MakerNotes
@@ -735,9 +738,9 @@ distribution for examples.</p>
 </table></blockquote>
 
 <blockquote><table><tr><td valign=top><sup>&dagger;</sup></td><td>The level of
-the group is the SubDirectory level in the metadata structure.  For XMP or IPTC
-this is the full XMP/IPTC block (the family 0 group), but for EXIF this is the
-individual IFD (the family 1 group).</td></tr></table></blockquote>
+the group differs for different types of metadata.  For XMP or IPTC this is the
+full XMP/IPTC block (the family 0 group), but for EXIF this is the individual
+IFD (the family 1 group).</td></tr></table></blockquote>
 
 <p><b>Examples:</b></p>
 <blockquote><table class='box'><tr><td><pre>
@@ -803,8 +806,8 @@ $success = $exifTool-&gt;<b>ExtractInfo</b>('image.jpg', \%options);
 <blockquote>
 Binary, Charset, CharsetEXIF, CharsetID3, CharsetIPTC, CharsetQuickTime,
 Composite, ExtractEmbedded, FastScan, FixBase, HtmlDump, HtmlDumpBase,
-IgnoreMinorErrors, Lang, LargeFileSupport, MakerNotes, ScanForXMP, Struct,
-TextOut, Unknown and Verbose.
+IgnoreMinorErrors, Lang, LargeFileSupport, MakerNotes, PNGEarlyXMP,
+ScanForXMP, Struct, TextOut, Unknown and Verbose.
 </blockquote>
 
 <hr><h2><a name="GetInfo">GetInfo</a></h2>
@@ -824,14 +827,22 @@ This function may be called repeatedly after a single call to
 </table></blockquote>
 <p><b>Examples:</b></p>
 <blockquote><table class='box'><tr><td><pre>
+<span class=com># get image width and height only</span>
 $info = $exifTool-&gt;<b>GetInfo</b>('ImageWidth', 'ImageHeight');
 </pre></td></tr></table></blockquote>
 
 <blockquote><table class='box'><tr><td><pre>
+<span class=com># get all Error and Warning messages</span>
+$info = $exifTool-&gt;<b>GetInfo</b>('Error', 'Warning');
+</pre></td></tr></table></blockquote>
+
+<blockquote><table class='box'><tr><td><pre>
+<span class=com># get information for all tags in list (list updated with tags found)</span>
 $info = $exifTool-&gt;<b>GetInfo</b>(\@ioTagList);
 </pre></td></tr></table></blockquote>
 
 <blockquote><table class='box'><tr><td><pre>
+<span class=com># get all information in Author or Location groups</span>
 $info = $exifTool-&gt;<b>GetInfo</b>({Group2 =&gt; ['Author', 'Location']});
 </pre></td></tr></table></blockquote>
 <p>The following options are effective in the call to <a href="#GetInfo">GetInfo</a>:</p>
@@ -912,7 +923,7 @@ and Warning tags.</p>
 <a href="#WriteInfo">WriteInfo</a>:</p>
 <blockquote>
 ByteOrder, Charset, CharsetEXIF, CharsetIPTC, Compact, Compress, FixBase,
-IgnoreMinorErrors and Verbose.
+IgnoreMinorErrors, PNGEarlyXMP and Verbose.
 </blockquote>
 
 <hr><h2><a name="GetTagList">GetTagList</a></h2>
@@ -1062,10 +1073,10 @@ the same tag name for each value, or call with a reference to the list of values
 <tr><td valign=top><b>Inputs</b></td><td><b>0)</b> ExifTool object reference
  <br><b>1)</b> [<i>optional</i>] Tag key or tag name, or undef to clear all new
     values.  The tag name may be prefixed one or more family 0, 1 or 2 group
-    names with optional leading family numbers, separated by colons (ie.
+    names with optional leading family numbers, separated by colons (eg.
     '<code>EXIF:Artist</code>', '<code>XMP:Time:*</code>'), which is equivalent
     to using a Group option argument.  Also, a '<code>#</code>' may be appended
-    to the tag name (ie. '<code>EXIF:Orientation#</code>'), with the same effect
+    to the tag name (eg. '<code>EXIF:Orientation#</code>'), with the same effect
     as setting Type to 'ValueConv'.  Wildcards ('<code>*</code>' and
     '<code>?</code>') may be used in the tag name to assign multiple tags
     simultaneously A tag name of '<code>*</code>' is special when deleting
@@ -1079,7 +1090,7 @@ the same tag name for each value, or call with a reference to the list of values
      from file. May be a scalar, scalar reference, list reference to set a list
      of values, or hash reference for a structure. Integer values may be
      specified as a hexadecimal string (with a leading '0x'), and simple
-     rational values may be specified in fractional form (ie. '4/10'). Structure
+     rational values may be specified in fractional form (eg. '4/10'). Structure
      tags may be specified either as a hash reference or a serialized string
      (see the last two examples below).
  <br><b>3-N)</b> [<i>optional</i>] SetNewValue option/value pairs (see below).
@@ -1259,25 +1270,25 @@ in a specified file.</p>
  <br><b>2-N)</b> [<i>optional</i>] List of tag names to set or options hash
  references.  All writable tags are set if none are specified.  The tag names
  are not case sensitive, and may be prefixed by one or more family 0, 1 or 2
- group names with optional leading family numbers, separated by colons (ie.
+ group names with optional leading family numbers, separated by colons (eg.
  '<code>exif:iso</code>').  A leading '<code>-</code>' indicates tags to be
- excluded (ie. '<code>-comment</code>'), or a trailing '<code>#</code>' causes
+ excluded (eg. '<code>-comment</code>'), or a trailing '<code>#</code>' causes
  the ValueConv value to be copied (same as setting the Type option to
  'ValueConv' for this tag only).  Wildcards ('<code>*</code>' and
  '<code>?</code>') may be used in the tag name.  A tag name of '<code>*</code>'
- is commonly used when a group is specified to copy all tags in the group (ie.
+ is commonly used when a group is specified to copy all tags in the group (eg.
  '<code>XMP:*</code>').<br>&nbsp;<br> A special feature allows tag names of the
  form '<code>DSTTAG&lt;SRCTAG</code>' (or '<code>SRCTAG&gt;DSTTAG</code>') to be
  specified to copy information to a tag with a different name or a specified
  group.  Both '<code>SRCTAG</code>' and '<code>DSTTAG</code>' may contain
- wildcards and/or be prefixed by a group name (ie.
+ wildcards and/or be prefixed by a group name (eg.
  '<code>fileModifyDate&lt;modifyDate</code>' or '<code>xmp:*&lt;*</code>'),
  and/or suffixed by a '<code>#</code>' to disable print conversion.  Copied tags
  may also be added or deleted from a list with arguments of the form
  '<code>DSTTAG+&lt;SRCTAG</code>' or '<code>DSTTAG-&lt;SRCTAG</code>'.  Tags are
  evaluated in order, so exclusions apply only to tags included earlier in the
  list.  An extension of this feature allows the tag value to be set from an
- expression containing tag names with leading '<code>$</code>' symbols (ie.
+ expression containing tag names with leading '<code>$</code>' symbols (eg.
  '<code>Comment&lt;the file is $filename</code>'). Braces '<code>{}</code>' may
  be used around the tag name to separate it from subsequent text, and a
  '<code>$$</code>' is used to to represent a '<code>$</code>' symbol.  The
@@ -1505,7 +1516,9 @@ takes precedence over any directory specified in FileName.</p>
 <tr><td valign=top><b>Inputs</b></td><td><b>0)</b> ExifTool object reference
  <br><b>1)</b> Current file name
  <br><b>2)</b> [<i>optional</i>] New file name
- <br><b>3)</b> [<i>optional</i>] 'Link' to create a hard link instead of renaming the file
+ <br><b>3)</b> [<i>optional</i>] 'Link' to create a hard link instead of renaming the file,
+ or 'Test' to test renaming feature by printing the old and new names instead of
+ changing anything.
 </td></tr>
 <tr><td valign=top><b>Returns</b></td><td>1 if the file name or directory was changed,
 0 if nothing was done, or -1 if there was an error renaming the file.
@@ -1563,7 +1576,7 @@ priority.  Highest priority first.
 information, the property name in XMP information, or the data offset in a
 binary data block. For some tags, such as Composite tags where there is no ID,
 an empty string is returned.  In list context, also returns a language code for
-the tag if available and different from the default language (ie. with
+the tag if available and different from the default language (eg. with
 alternate language entries for XMP "lang-alt" tags).</p>
 <blockquote><table class='norm'>
 <tr><td><b>Prototype</b></td><td>GetTagID($$)</td></tr>
@@ -1641,7 +1654,7 @@ information refers.</p>
 or 'Main' for tags from the main document.  (See the
 <a href="#Embedded">ExtractEmbedded</a> option for extracting tags from embedded
 documents.)  Nested sub-documents (if they exist) are indicated by numbers
-separated with dashes in the group name, to an arbitrary depth. (ie.
+separated with dashes in the group name, to an arbitrary depth. (eg.
 '<code>Doc2-3-1</code>' is the 1<sup>st</sup> sub-sub-document of the
 3<sup>rd</sup> sub-document of the 2<sup>nd</sup> embedded document of the main
 file.)</p>
@@ -1654,22 +1667,22 @@ of '<code>Copy1</code>', '<code>Copy2</code>', '<code>Copy3</code>', etc.</p>
 
 <p><b>Examples:</b></p>
 <blockquote><table class='box'><tr><td><pre>
-<span class=com># return family 0 group name (ie. 'EXIF')</span>
+<span class=com># return family 0 group name (eg. 'EXIF')</span>
 $group = $exifTool-&gt;<b>GetGroup</b>($tag, 0);
 </pre></td></tr></table></blockquote>
 
 <blockquote><table class='box'><tr><td><pre>
-<span class=com># return all groups (ie. qw{EXIF IFD0 Author Main})</span>
+<span class=com># return all groups (eg. qw{EXIF IFD0 Author Main})</span>
 @groups = $exifTool-&gt;<b>GetGroup</b>($tag);
 </pre></td></tr></table></blockquote>
 
 <blockquote><table class='box'><tr><td><pre>
-<span class=com># return groups as a string (ie. 'Main:IFD0:Author')</span>
+<span class=com># return groups as a string (eg. 'Main:IFD0:Author')</span>
 $group = $exifTool-&gt;<b>GetGroup</b>($tag, ':3:1:2');
 </pre></td></tr></table></blockquote>
 
 <blockquote><table class='box'><tr><td><pre>
-<span class=com># return groups as a simplified string (ie. 'IFD0:Author')</span>
+<span class=com># return groups as a simplified string (eg. 'IFD0:Author')</span>
 $group = $exifTool-&gt;<b>GetGroup</b>($tag, '3:1:2');
 </pre></td></tr></table></blockquote>
 
@@ -1818,11 +1831,11 @@ the specific IFD).
 APP6, APP8, ASF, CanonVRD, Composite, DICOM, DNG, DV, DjVu, Ducky, EXE,
 EXIF, ExifTool, FLAC, FLIR, File, Flash, FlashPix, Font, FotoStation, GIF,
 GIMP, GeoTiff, H264, HTML, ICC_Profile, ID3, IPTC, ITC, JFIF, JPEG,
-Jpeg2000, LNK, Leaf, M2TS, MIE, MIFF, MNG, MPC, MPEG, MPF, MXF, MakerNotes,
-Matroska, Meta, Ogg, OpenEXR, PDF, PICT, PLIST, PNG, PSP, PanasonicRaw,
-PhotoCD, PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF,
-RIFF, RSRC, RTF, Radiance, Rawzor, Real, SVG, SigmaRaw, Stim, Theora,
-Torrent, Vorbis, XML, XMP, ZIP
+Jpeg2000, LNK, Leaf, Lytro, M2TS, MIE, MIFF, MNG, MPC, MPEG, MPF, MXF,
+MakerNotes, Matroska, Meta, Ogg, OpenEXR, PDF, PICT, PLIST, PNG, PSP, Palm,
+PanasonicRaw, PhotoCD, PhotoMechanic, Photoshop, PostScript, PrintIM,
+QuickTime, RAF, RIFF, RSRC, RTF, Radiance, Rawzor, Real, SVG, SigmaRaw,
+Stim, Theora, Torrent, Vorbis, XML, XMP, ZIP
 </td></tr>
 <tr><td><b>1&nbsp;(Specific&nbsp;Location)</b></td>
 <td>AC3, AFCP, AIFF, APE, ASF, AVI1, Adobe, AdobeCM, AdobeDNG, Apple, CIFF,
@@ -1835,21 +1848,21 @@ ICC-header, ICC-meas, ICC-meta, ICC-view, ICC_Profile, ICC_Profile#, ID3,
 ID3v1, ID3v1_Enh, ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ITC,
 InteropIFD, JFIF, JPEG, JPEG-HDR, JVC, Jpeg2000, KDC_IFD, Kodak,
 KodakBordersIFD, KodakEffectsIFD, KodakIFD, KyoceraRaw, LNK, Leaf,
-LeafSubIFD, Leica, M2TS, MAC, MIE-Audio, MIE-Camera, MIE-Canon, MIE-Doc,
-MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo, MIE-Image, MIE-Lens, MIE-Main,
-MIE-MakerNotes, MIE-Meta, MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-UTM,
-MIE-Unknown, MIE-Video, MIFF, MNG, MPC, MPEG, MPF0, MPImage, MXF,
-MakerNotes, MakerUnknown, Matroska, MediaJukebox, MetaIFD, Microsoft,
+LeafSubIFD, Leica, Lytro, M2TS, MAC, MIE-Audio, MIE-Camera, MIE-Canon,
+MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo, MIE-Image, MIE-Lens,
+MIE-Main, MIE-MakerNotes, MIE-Meta, MIE-Orient, MIE-Preview, MIE-Thumbnail,
+MIE-UTM, MIE-Unknown, MIE-Video, MIFF, MNG, MOBI, MPC, MPEG, MPF0, MPImage,
+MXF, MakerNotes, MakerUnknown, Matroska, MediaJukebox, MetaIFD, Microsoft,
 Minolta, MinoltaRaw, NITF, Nikon, NikonCapture, NikonCustom, NikonScan,
-Nintendo, Ocad, Ogg, Olympus, OpenEXR, PDF, PICT, PNG, PSP, Panasonic,
-PanasonicRaw, Pentax, PhaseOne, PhotoCD, PhotoMechanic, Photoshop,
-PictureInfo, PostScript, PreviewIFD, PrintIM, ProfileIFD, Qualcomm,
-QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF, Radiance, Rawzor, Real,
-Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4, Real-RA5, Real-RJMD,
-Reconyx, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#, SVG, Samsung,
-Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD, System,
-Theora, Torrent, Track#, Version0, Vorbis, XML, XMP, XMP-DICOM, XMP-GPano,
-XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album,
+Nintendo, Ocad, Ogg, Olympus, OpenEXR, PDF, PICT, PNG, PNG-pHYs, PSP, Palm,
+Panasonic, PanasonicRaw, Pentax, PhaseOne, PhotoCD, PhotoMechanic,
+Photoshop, PictureInfo, PostScript, PreviewIFD, PrintIM, ProfileIFD,
+Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF, Radiance, Rawzor,
+Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4, Real-RA5,
+Real-RJMD, Reconyx, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#, SVG,
+Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD,
+System, Theora, Torrent, Track#, Version0, Vorbis, XML, XMP, XMP-DICOM,
+XMP-GPano, XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album,
 XMP-apple-fi, XMP-aux, XMP-cc, XMP-cell, XMP-crs, XMP-dc, XMP-dex,
 XMP-digiKam, XMP-dwc, XMP-exif, XMP-exifEX, XMP-expressionmedia,
 XMP-extensis, XMP-fpv, XMP-getty, XMP-ics, XMP-iptcCore, XMP-iptcExt,
@@ -49,9 +49,9 @@ values.</p>
 </p>
 <hr />
 <h1><a name="details">DETAILS</a></h1>
-<p>Time shifts are applied to standard EXIF-formatted date/time values (ie.
+<p>Time shifts are applied to standard EXIF-formatted date/time values (eg.
 <code>2005:03:14 18:55:00</code>).  Date-only and time-only values may also be
-shifted, and an optional timezone (ie. <code>-05:00</code>) is also supported.  Here
+shifted, and an optional timezone (eg. <code>-05:00</code>) is also supported.  Here
 are some general rules and examples to explain how shift strings are
 interpreted:</p>
 <p>Date-only values are shifted using the following formats:</p>
@@ -450,9 +450,13 @@
 <td>--&gt; <a href='Canon.html#AFMicroAdj'>Canon AFMicroAdj Tags</a></td></tr>
 <tr class=b>
 <td title='0x4015 = 16405'>0x4015</td>
-<td>VignettingCorr</td>
-<td class=c>-</td>
-<td>--&gt; <a href='Canon.html#VignettingCorr'>Canon VignettingCorr Tags</a></td></tr>
+<td>VignettingCorr
+  <br>VignettingCorrUnknown1
+  <br>VignettingCorrUnknown2</td>
+<td class=c>-<br>-<br>-</td>
+<td>--&gt; <a href='Canon.html#VignettingCorr'>Canon VignettingCorr Tags</a>
+  <br>--&gt; <a href='Canon.html#VignettingCorrUnknown'>Canon VignettingCorrUnknown Tags</a>
+  <br>--&gt; <a href='Canon.html#VignettingCorrUnknown'>Canon VignettingCorrUnknown Tags</a></td></tr>
 <tr>
 <td title='0x4016 = 16406'>0x4016</td>
 <td>VignettingCorr2</td>
@@ -1348,9 +1352,10 @@ attempting to identify the specific lens model.</p>
 </tr><tr><td>161</td><td>= Canon EF 28-70mm f/2.8L or Sigma or Tamron Lens</td>
 </tr><tr><td>161.1</td><td>= Sigma 24-70mm f/2.8 EX</td>
 </tr><tr><td>161.2</td><td>= Sigma 28-70mm f/2.8 EX</td>
-</tr><tr><td>161.3</td><td>= Tamron AF 17-50mm f/2.8 Di-II LD Aspherical</td>
-</tr><tr><td>161.4</td><td>= Tamron 90mm f/2.8</td>
-</tr><tr><td>161.5</td><td>= Sigma 24-60mm f/2.8 EX DG</td>
+</tr><tr><td>161.3</td><td>= Sigma 24-60mm f/2.8 EX DG</td>
+</tr><tr><td>161.4</td><td>= Tamron AF 17-50mm f/2.8 Di-II LD Aspherical</td>
+</tr><tr><td>161.5</td><td>= Tamron 90mm f/2.8</td>
+</tr><tr><td>161.6</td><td>= Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF</td>
 </tr><tr><td>162</td><td>= Canon EF 200mm f/2.8L</td>
 </tr><tr><td>163</td><td>= Canon EF 300mm f/4L</td>
 </tr><tr><td>164</td><td>= Canon EF 400mm f/5.6L</td>
@@ -1394,7 +1399,7 @@ attempting to identify the specific lens model.</p>
 </tr><tr><td>187</td><td>= Canon EF 70-200mm f/4L + 1.4x</td>
 </tr><tr><td>188</td><td>= Canon EF 70-200mm f/4L + 2x</td>
 </tr><tr><td>189</td><td>= Canon EF 70-200mm f/4L + 2.8x</td>
-</tr><tr><td>190</td><td>= Canon EF 100mm f/2.8 Macro</td>
+</tr><tr><td>190</td><td>= Canon EF 100mm f/2.8 Macro USM</td>
 </tr><tr><td>191</td><td>= Canon EF 400mm f/4 DO IS</td>
 </tr><tr><td>193</td><td>= Canon EF 35-80mm f/4-5.6 USM</td>
 </tr><tr><td>194</td><td>= Canon EF 80-200mm f/4.5-5.6 USM</td>
@@ -1413,7 +1418,8 @@ attempting to identify the specific lens model.</p>
 </tr><tr><td>211</td><td>= Canon EF 28-200mm f/3.5-5.6 USM</td>
 </tr><tr><td>212</td><td>= Canon EF 28-105mm f/4-5.6 USM</td>
 </tr><tr><td>213</td><td>= Canon EF 90-300mm f/4.5-5.6 USM or Tamron Lens</td>
-</tr><tr><td>213.1</td><td>= Tamron SP 150-600mm F/5-6.3 Di VC USD</td>
+</tr><tr><td>213.1</td><td>= Tamron SP 150-600mm f/5-6.3 Di VC USD</td>
+</tr><tr><td>213.2</td><td>= Tamron 16-300mm f/3.5-6.3 Di II VC PZD Macro</td>
 </tr><tr><td>214</td><td>= Canon EF-S 18-55mm f/3.5-5.6 USM</td>
 </tr><tr><td>215</td><td>= Canon EF 55-200mm f/4.5-5.6 II USM</td>
 </tr><tr><td>217</td><td>= Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD</td>
@@ -1448,6 +1454,7 @@ attempting to identify the specific lens model.</p>
 </tr><tr><td>252</td><td>= Canon EF 70-200mm f/2.8L IS II USM + 1.4x</td>
 </tr><tr><td>253</td><td>= Canon EF 70-200mm f/2.8L IS II USM + 2x</td>
 </tr><tr><td>254</td><td>= Canon EF 100mm f/2.8L Macro IS USM</td>
+</tr><tr><td>255</td><td>= Sigma 24-105mm f/4 DG OS HSM | A</td>
 </tr><tr><td>488</td><td>= Canon EF-S 15-85mm f/3.5-5.6 IS USM</td>
 </tr><tr><td>489</td><td>= Canon EF 70-300mm f/4-5.6L IS USM</td>
 </tr><tr><td>490</td><td>= Canon EF 8-15mm f/4L USM</td>
@@ -1462,6 +1469,7 @@ attempting to identify the specific lens model.</p>
 </tr><tr><td>503</td><td>= Canon EF 24mm f/2.8 IS USM</td>
 </tr><tr><td>504</td><td>= Canon EF 24-70mm f/4L IS USM</td>
 </tr><tr><td>505</td><td>= Canon EF 35mm f/2 IS USM</td>
+</tr><tr><td>507</td><td>= Canon EF 16-35mm f/4L IS USM</td>
 </tr><tr><td>4142</td><td>= Canon EF-S 18-135mm f/3.5-5.6 IS STM</td>
 </tr><tr><td>4143</td><td>= Canon EF-M 18-55mm f/3.5-5.6 IS STM</td>
 </tr><tr><td>4144</td><td>= Canon EF 40mm f/2.8 STM</td>
@@ -1469,6 +1477,8 @@ attempting to identify the specific lens model.</p>
 </tr><tr><td>4146</td><td>= Canon EF-S 18-55mm f/3.5-5.6 IS STM</td>
 </tr><tr><td>4147</td><td>= Canon EF-M 11-22mm f/4-5.6 IS STM</td>
 </tr><tr><td>4148</td><td>= Canon EF-S 55-250mm f/4-5.6 IS STM</td>
+</tr><tr><td>4149</td><td>= Canon EF-M 55-200mm f/4.5-6.3 IS STM</td>
+</tr><tr><td>4150</td><td>= Canon EF-S 10-18mm f/4.5-5.6 IS STM</td>
 </tr></table></td></tr></table></blockquote>
 
 <h2><a name='FocalLength'>Canon FocalLength Tags</a></h2>
@@ -8097,48 +8107,66 @@ option is used.</p>
 </table></td></tr></table></blockquote>
 
 <h2><a name='VignettingCorr'>Canon VignettingCorr Tags</a></h2>
-<p>This information is found in images from the 1DmkIV, 5DmkII, 7D, 50D, 60D,
-500D and 550D.</p>
+<p>This information is found in images from newer EOS models.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
 <tr class=h><th>Index2</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
+<td class=r title='0 = 0x0'>0</td>
+<td>VignettingCorrVersion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
 <td class=r title='2 = 0x2'>2</td>
 <td>PeripheralLighting</td>
 <td class=c>int16s</td>
 <td><span class=s>0 = Off
   <br>1 = On</span></td></tr>
-<tr class=b>
+<tr>
 <td class=r title='4 = 0x4'>4</td>
 <td>ChromaticAberrationCorr</td>
 <td class=c>int16s</td>
 <td><span class=s>0 = Off
   <br>1 = On</span></td></tr>
-<tr>
+<tr class=b>
 <td class=r title='5 = 0x5'>5</td>
 <td>ChromaticAberrationCorr</td>
 <td class=c>int16s</td>
 <td><span class=s>0 = Off
   <br>1 = On</span></td></tr>
-<tr class=b>
+<tr>
 <td class=r title='6 = 0x6'>6</td>
 <td>PeripheralLightingValue</td>
 <td class=c>int16s</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td class=r title='11 = 0xb'>11</td>
 <td>OriginalImageWidth</td>
 <td class=c>int16s</td>
 <td><span class=s><span class=n>(full size of original image before being rotated or scaled in camera)</span></span></td></tr>
-<tr class=b>
+<tr>
 <td class=r title='12 = 0xc'>12</td>
 <td>OriginalImageHeight</td>
 <td class=c>int16s</td>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
+<h2><a name='VignettingCorrUnknown'>Canon VignettingCorrUnknown Tags</a></h2>
+<p>Vignetting correction from PowerShot models.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index2</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='0 = 0x0'>0</td>
+<td>VignettingCorrVersion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
 <h2><a name='VignettingCorr2'>Canon VignettingCorr2 Tags</a></h2>
 <blockquote>
 <table class=frame><tr><td>
@@ -8324,7 +8352,7 @@ SX280.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised May 10, 2014</i>
+<br><i>Last revised Jul 30, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -1746,7 +1746,7 @@ well as newer tags and values added by later models.</p>
 <td title='0x0516 = 1302'>0x0516</td>
 <td>OrientationLinkedAFPoint</td>
 <td class=c>int32s</td>
-<td><span class=s>0 = Same for verical and horizontal
+<td><span class=s>0 = Same for vertical and horizontal
   <br>1 = Select different AF points</span></td></tr>
 <tr class=b>
 <td title='0x0517 = 1303'>0x0517</td>
@@ -2043,7 +2043,7 @@ well as newer tags and values added by later models.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Apr 2, 2014</i>
+<br><i>Last revised Jun 26, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -175,9 +175,9 @@
   <br>4 = Near Left/Right of Center
   <br>5 = Far Left/Right of Center
   <br>6 = Far Left/Right of Center/Bottom
-  <br>7 = Top Near-Left
+  <br>7 = Top Near-left
   <br>8 = Near Upper/Left
-  <br>9 = Top Near-Right
+  <br>9 = Top Near-right
   <br>10 = Top Left
   <br>11 = Top Center
   <br>12 = Top Right
@@ -1166,6 +1166,43 @@
   <br>3 = Flower</td><td>&nbsp;&nbsp;</td>
   <td>4 = Night Scene
   <br>5 = Soft Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+<span class=s><span class=n>(EX-ZR300)</span></span><table class=cols><tr>
+  <td>1 = High Speed Night Shot
+  <br>2 = Blurred Background
+  <br>3 = Toy Camera
+  <br>4 = Soft Focus
+  <br>5 = Light Tone
+  <br>6 = Pop
+  <br>7 = Sepia
+  <br>8 = Monochrome
+  <br>9 = Miniature
+  <br>10 = Wide Shot
+  <br>11 = High Speed Best Selection
+  <br>12 = Lag Correction
+  <br>13 = High Speed Night Scene
+  <br>14 = High Speed Night Scene and Portrait
+  <br>15 = High Speed Anti Shake
+  <br>16 = Portrait
+  <br>17 = Scenery
+  <br>18 = Portrait with Scenery</td><td>&nbsp;&nbsp;</td>
+  <td>19 = Children
+  <br>20 = Sports
+  <br>21 = Candlelight Portrait
+  <br>22 = Party
+  <br>23 = Pet
+  <br>24 = Flower
+  <br>25 = Natural Green
+  <br>26 = Autumn Leaves
+  <br>27 = Soft Flowing Water
+  <br>28 = Splashing Water
+  <br>29 = Sundown
+  <br>30 = Fireworks
+  <br>31 = Food
+  <br>32 = Text
+  <br>33 = Collection
+  <br>34 = Auction
+  <br>35 = Prerecord (Movie)
+  <br>36 = For YouTube</td><td>&nbsp;&nbsp;</td></tr></table>
 <span class=s><span class=n>(other models not yet decoded)</span></span></td></tr>
 <tr class=b>
 <td title='0x3008 = 12296'>0x3008</td>
@@ -1563,7 +1600,7 @@ Casio QV-7000SX.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Mar 16, 2012</i>
+<br><i>Last revised Jul 4, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -84,6 +84,7 @@ still proprietary) Adobe format.</p>
   <br>MakerNoteKodak8c
   <br>MakerNoteKodak9
   <br>MakerNoteKodak10
+  <br>MakerNoteKodak11
   <br>MakerNoteKodakUnknown
   <br>MakerNoteKyocera
   <br>MakerNoteMinolta
@@ -111,6 +112,7 @@ still proprietary) Adobe format.</p>
   <br>MakerNotePhaseOne
   <br>MakerNoteReconyx
   <br>MakerNoteRicoh
+  <br>MakerNoteRicoh2
   <br>MakerNoteRicohText
   <br>MakerNoteSamsung1a
   <br>MakerNoteSamsung1b
@@ -129,7 +131,7 @@ still proprietary) Adobe format.</p>
   <br>MakerNoteUnknownText
   <br>MakerNoteUnknownBinary
   <br>MakerNoteUnknown</td>
-<td class=c>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef</td>
+<td class=c>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef</td>
 <td>--&gt; <a href='Apple.html'>Apple Tags</a>
   <br>--&gt; <a href='Nikon.html'>Nikon Tags</a>
   <br>--&gt; <a href='Canon.html'>Canon Tags</a>
@@ -161,6 +163,7 @@ still proprietary) Adobe format.</p>
   <br>--&gt; <a href='Kodak.html#Type8'>Kodak Type8 Tags</a>
   <br>--&gt; <a href='Kodak.html#Type9'>Kodak Type9 Tags</a>
   <br>--&gt; <a href='Kodak.html#Type10'>Kodak Type10 Tags</a>
+  <br>--&gt; <a href='Kodak.html#Type11'>Kodak Type11 Tags</a>
   <br>--&gt; <a href='Kodak.html#Unknown'>Kodak Unknown Tags</a>
   <br>--&gt; <a href='Unknown.html'>Unknown Tags</a>
   <br>--&gt; <a href='Minolta.html'>Minolta Tags</a>
@@ -188,6 +191,7 @@ still proprietary) Adobe format.</p>
   <br>--&gt; <a href='PhaseOne.html'>PhaseOne Tags</a>
   <br>--&gt; <a href='Reconyx.html'>Reconyx Tags</a>
   <br>--&gt; <a href='Ricoh.html'>Ricoh Tags</a>
+  <br>--&gt; <a href='Ricoh.html#Type2'>Ricoh Type2 Tags</a>
   <br>--&gt; <a href='Ricoh.html#Text'>Ricoh Text Tags</a>
   <br><span class=n>(Samsung "STMN" maker notes without PreviewImage)</span>
   <br>--&gt; <a href='Samsung.html'>Samsung Tags</a>
@@ -275,7 +279,7 @@ information.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Mar 25, 2014</i>
+<br><i>Last revised Jul 18, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -1664,6 +1664,7 @@ hours, 2. If present, the time zone offset of ModifyDate)</span></span></td></tr
   <br>MakerNoteKodak8c
   <br>MakerNoteKodak9
   <br>MakerNoteKodak10
+  <br>MakerNoteKodak11
   <br>MakerNoteKodakUnknown
   <br>MakerNoteKyocera
   <br>MakerNoteMinolta
@@ -1691,6 +1692,7 @@ hours, 2. If present, the time zone offset of ModifyDate)</span></span></td></tr
   <br>MakerNotePhaseOne
   <br>MakerNoteReconyx
   <br>MakerNoteRicoh
+  <br>MakerNoteRicoh2
   <br>MakerNoteRicohText
   <br>MakerNoteSamsung1a
   <br>MakerNoteSamsung1b
@@ -1709,8 +1711,8 @@ hours, 2. If present, the time zone offset of ModifyDate)</span></span></td></tr
   <br>MakerNoteUnknownText
   <br>MakerNoteUnknownBinary
   <br><u>MakerNoteUnknown</u></td>
-<td class=c>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef</td>
-<td class=c>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD</td>
+<td class=c>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef<br>undef</td>
+<td class=c>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD<br>ExifIFD</td>
 <td>--&gt; <a href='Apple.html'>Apple Tags</a>
   <br>--&gt; <a href='Nikon.html'>Nikon Tags</a>
   <br>--&gt; <a href='Canon.html'>Canon Tags</a>
@@ -1742,6 +1744,7 @@ hours, 2. If present, the time zone offset of ModifyDate)</span></span></td></tr
   <br>--&gt; <a href='Kodak.html#Type8'>Kodak Type8 Tags</a>
   <br>--&gt; <a href='Kodak.html#Type9'>Kodak Type9 Tags</a>
   <br>--&gt; <a href='Kodak.html#Type10'>Kodak Type10 Tags</a>
+  <br>--&gt; <a href='Kodak.html#Type11'>Kodak Type11 Tags</a>
   <br>--&gt; <a href='Kodak.html#Unknown'>Kodak Unknown Tags</a>
   <br>--&gt; <a href='Unknown.html'>Unknown Tags</a>
   <br>--&gt; <a href='Minolta.html'>Minolta Tags</a>
@@ -1769,6 +1772,7 @@ hours, 2. If present, the time zone offset of ModifyDate)</span></span></td></tr
   <br>--&gt; <a href='PhaseOne.html'>PhaseOne Tags</a>
   <br>--&gt; <a href='Reconyx.html'>Reconyx Tags</a>
   <br>--&gt; <a href='Ricoh.html'>Ricoh Tags</a>
+  <br>--&gt; <a href='Ricoh.html#Type2'>Ricoh Type2 Tags</a>
   <br>--&gt; <a href='Ricoh.html#Text'>Ricoh Text Tags</a>
   <br><span class=n>(Samsung "STMN" maker notes without PreviewImage)</span>
   <br>--&gt; <a href='Samsung.html'>Samsung Tags</a>
@@ -3258,7 +3262,7 @@ these unless they already exist in the file)</span></span></td></tr>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Mar 27, 2014</i>
+<br><i>Last revised Jul 18, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -17,7 +17,8 @@ in this column are write-only.</p>
 they don&#39;t represent real metadata in the file.  Instead, this information
 is stored in the directory structure of the filesystem.  The five writable
 &quot;pseudo&quot; tags (FileName, Directory, FileModifyDate, FileCreateDate and
-HardLink) may be written without modifying the file itself.
+HardLink) may be written without modifying the file itself.  The TestName
+tag is used for dry run testing of writes to FileName.
 </p>
 <blockquote>
 <table class=frame><tr><td>
@@ -128,15 +129,17 @@ system&#39;s standard libraries)</span></span></td></tr>
 <td class=c title=' ! = Unsafe'>Y!</td>
 <td class=c>System</td>
 <td><span class=s><span class=n>(may be written with a full path name to set FileName and Directory in one
-operation.  See <a href="../filename.html">filename.html</a> for more information on
-writing the FileName and Directory tags)</span></span></td></tr>
+operation.  This is such a powerful feature that a TestName tag is provided
+to allow dry-run tests before actually writing the file name. See
+<a href="../filename.html">filename.html</a> for more information on writing the
+FileName, Directory and TestName tags)</span></span></td></tr>
 <tr class=b>
 <td>FilePermissions</td>
 <td class=c>N</td>
 <td class=c>System</td>
 <td><span class=s><span class=n>(r=read, w=write and x=execute permissions for the file owner, group and
 others.  The ValueConv value is an octal number so bit test operations on
-this value should be done in octal, ie. &#39;oct($filePermissions#) &amp; 0200&#39;)</span></span></td></tr>
+this value should be done in octal, eg. &#39;oct($filePermissions#) &amp; 0200&#39;)</span></span></td></tr>
 <tr>
 <td>FileSequence</td>
 <td class=c>N</td>
@@ -240,7 +243,7 @@ generated only if specifically requested)</span></span></td></tr>
 <td>MaxVal</td>
 <td class=c>N</td>
 <td class=c>File</td>
-<td>&nbsp;</td></tr>
+<td><span class=s><span class=n>(maximum pixel value in PPM or PGM image)</span></span></td></tr>
 <tr class=b>
 <td>NewGUID</td>
 <td class=c>N</td>
@@ -254,7 +257,7 @@ unless specifically requested)</span></span></td></tr>
 <td>Now</td>
 <td class=c>N</td>
 <td class=c>ExifTool</td>
-<td><span class=s><span class=n>(the current date/time.  Useful when setting the tag values, ie.
+<td><span class=s><span class=n>(the current date/time.  Useful when setting the tag values, eg.
 <code>&quot;-modifydate&lt;now&quot;</code>.  Not generated unless specifically requested)</span></span></td></tr>
 <tr class=b>
 <td>PreviewImage</td>
@@ -292,6 +295,13 @@ resource-fork information as a sub-document.  When writing, the resource
 fork is preserved by default, but it may be deleted with <code>-rsrc:all=</code> on
 the command line)</span></span></td></tr>
 <tr class=b>
+<td>TestName</td>
+<td class=c>Y</td>
+<td class=c>-</td>
+<td><span class=s><span class=n>(this write-only tag may be used instead of FileName for dry-run tests of the
+file renaming feature.  Writing this tag prints the old and new file names
+to the console, but does not affect the file itself)</span></span></td></tr>
+<tr>
 <td>Warning</td>
 <td class=c>N</td>
 <td class=c>ExifTool</td>
@@ -300,18 +310,18 @@ Use the -a or Duplicates option to see all warnings if more than one
 occurred. Minor warnings may be ignored with the -m or IgnoreMinorErrors
 option.  Minor warnings with a capital &quot;M&quot; in the &quot;[Minor]&quot; designation
 indicate that the processing is affected by ignoring the warning)</span></span></td></tr>
-<tr>
+<tr class=b>
 <td>XMP</td>
 <td class=c title=' ! = Unsafe'>Y!</td>
 <td class=c>XMP</td>
 <td><span class=s><span class=n>(the XMP data block, but note that extended XMP in JPEG images may be split
 into multiple blocks)</span></span></td></tr>
-<tr class=b>
+<tr>
 <td>XResolution</td>
 <td class=c>N</td>
 <td class=c>File</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td>YResolution</td>
 <td class=c>N</td>
 <td class=c>File</td>
@@ -320,7 +330,7 @@ into multiple blocks)</span></span></td></tr>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Mar 27, 2014</i>
+<br><i>Last revised Jul 2, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -13,7 +13,8 @@ that of an old DOS disk with fixed-sized &quot;sectors&quot; (usually 512 bytes)
 &quot;file allocation table&quot; (FAT).  No wonder this image format never became
 popular.  However, some of the structures used in FlashPix streams are part
 of the EXIF specification, and are still being used in the APP2 FPXR segment
-of JPEG images by some Kodak and Hewlett-Packard digital cameras.</p>
+of JPEG images by some digital cameras from manufacturers such as FujiFilm,
+Hewlett-Packard, Kodak and Sanyo.</p>
 
 <p>ExifTool extracts FlashPix information from both FPX images and the APP2
 FPXR segment of JPEG images.  As well, FlashPix information is extracted
@@ -110,6 +111,16 @@ specification.</p>
 <td class=c>-</td>
 <td>--&gt; <a href='ICC_Profile.html'>ICC_Profile Tags</a></td></tr>
 <tr>
+<td>'Preview'</td>
+<td>PreviewImage</td>
+<td class=c>N</td>
+<td><span class=s><span class=n>(written by some FujiFilm models)</span></span></td></tr>
+<tr class=b>
+<td>'Property'</td>
+<td>PreviewInfo</td>
+<td class=c>-</td>
+<td>--&gt; <a href='FlashPix.html#PreviewInfo'>FlashPix PreviewInfo Tags</a></td></tr>
+<tr>
 <td>'Subimage 0000 Header'</td>
 <td>SubimageHdr</td>
 <td class=c>-</td>
@@ -1389,6 +1400,25 @@ property tables, even though they are only listed in the SummaryInfo table.</p>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
+<h2><a name='PreviewInfo'>FlashPix PreviewInfo Tags</a></h2>
+<p>Preview information written by some FujiFilm models.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index1</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='13 = 0xd'>13</td>
+<td>PreviewImageWidth</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='23 = 0x17'>23</td>
+<td>PreviewImageHeight</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
 <h2><a name='SubimageHdr'>FlashPix SubimageHdr Tags</a></h2>
 <blockquote>
 <table class=frame><tr><td>
@@ -1429,7 +1459,7 @@ property tables, even though they are only listed in the SummaryInfo table.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Mar 18, 2011</i>
+<br><i>Last revised Jul 31, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -357,7 +357,7 @@ AFM, ACFM and AMFM font files.</p>
 <h2><a name='Name'>Font Name Tags</a></h2>
 <p>The following tags are extracted from the TrueType font &quot;name&quot; table found
 in OTF, TTF, TTC and DFONT files.  These tags support localized languages by
-adding a hyphen followed by a language code to the end of the tag name (ie.
+adding a hyphen followed by a language code to the end of the tag name (eg.
 &quot;Copyright-fr&quot; or &quot;License-en-US&quot;).  Tags with no language code use the
 default language of &quot;en&quot;.</p>
 <blockquote>
@@ -569,11 +569,56 @@ RAF-format information.</p>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
+<td title='0x2000 = 8192'>0x2000</td>
+<td>WB_GRGBLevelsAuto</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x2100 = 8448'>0x2100</td>
+<td>WB_GRGBLevelsDaylight</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x2200 = 8704'>0x2200</td>
+<td>WB_GRGBLevelsCloudy</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x2300 = 8960'>0x2300</td>
+<td>WB_GRGBLevelsDaylightFluor</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x2301 = 8961'>0x2301</td>
+<td>WB_GRGBLevelsDayWhiteFluor</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x2302 = 8962'>0x2302</td>
+<td>WB_GRGBLevelsWhiteFluorescent</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x2310 = 8976'>0x2310</td>
+<td>WB_GRGBLevelsWarmWhiteFluor</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x2311 = 8977'>0x2311</td>
+<td>WB_GRGBLevelsLivingRoomWarmWhiteFluor</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x2400 = 9216'>0x2400</td>
+<td>WB_GRGBLevelsTungsten</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
 <td title='0x2ff0 = 12272'>0x2ff0</td>
 <td>WB_GRGBLevels</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0xc000 = 49152'>0xc000</td>
 <td>RAFData</td>
 <td class=c>-</td>
@@ -713,7 +758,7 @@ RAF-format information.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Jan 30, 2014</i>
+<br><i>Last revised May 15, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -20,7 +20,7 @@ specification.</p>
 <p>Some GPS tags have values which are fixed-length strings. For these, the
 indicated string lengths include a null terminator which is added
 automatically by ExifTool.  Remember that the descriptive values are used
-when writing (ie. &#39;Above Sea Level&#39;, not &#39;0&#39;) unless the print conversion is
+when writing (eg. &#39;Above Sea Level&#39;, not &#39;0&#39;) unless the print conversion is
 disabled (with &#39;-n&#39; on the command line or the PrintConv option in the API,
 or by suffixing the tag name with a <code>#</code> character).</p>
 
@@ -625,7 +625,8 @@ specification.</p>
 <td class=r title='24 = 0x18'>24</td>
 <td>MeasurementGeometry</td>
 <td class=c>N</td>
-<td><span class=s>1 = 0/45 or 45/0
+<td><span class=s>0 = Unknown
+  <br>1 = 0/45 or 45/0
   <br>2 = 0/d or d/0</span></td></tr>
 <tr class=b>
 <td class=r title='28 = 0x1c'>28</td>
@@ -704,7 +705,7 @@ Metadata tags that exist.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Oct 7, 2010</i>
+<br><i>Last revised Jun 20, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -8,9 +8,9 @@
 <body>
 <h2 class=top>ID3 Tags</h2>
 <p>ExifTool extracts ID3 information from MP3, MPEG, AIFF, OGG, FLAC, APE, MPC
-and RealAudio files.  ID3v2 tags which support multiple languages (ie.
+and RealAudio files.  ID3v2 tags which support multiple languages (eg.
 Comment and Lyrics) are extracted by specifying the tag name, followed by a
-dash (&#39;-&#39;), then a 3-character ISO 639-2 language code (ie. &quot;Comment-spa&quot;).
+dash (&#39;-&#39;), then a 3-character ISO 639-2 language code (eg. &quot;Comment-spa&quot;).
 See <a href="http://www.id3.org/">http://www.id3.org/</a> for the official ID3 specification and
 <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">http://www.loc.gov/standards/iso639-2/php/code_list.php</a> for a list of ISO
 639-2 language codes.</p>
@@ -40,7 +40,14 @@ formats.</p>
 doesn&#39;t include a timezone then the current local timezone offset is used
 (unless written with a combined date/time, in which case the local timezone
 offset at the specified date/time is used, which may be different due to
-changes in daylight savings time).
+changes in daylight savings time).</p>
+
+<p>Note that it is not uncommon for IPTC to be found in non-standard locations
+in JPEG and TIFF-based images.  When reading, the family 1 group name has a
+number added for non-standard IPTC (&quot;IPTC2&quot;, &quot;IPTC3&quot;, etc), but when writing
+only &quot;IPTC&quot; may be specified as the group.  To keep the IPTC consistent,
+ExifTool updates tags in all existing IPTC locations, but will create a new
+IPTC group only in the standard location.
 </p>
 <blockquote>
 <table class=frame><tr><td>
@@ -889,7 +896,7 @@ won&#39;t be able to read these tags as written by ExifTool)</span></span></td><
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Oct 16, 2013</i>
+<br><i>Last revised Jun 23, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -545,8 +545,8 @@ with much duplication), but relatively few tags have so far been decoded.</p>
   <br>25 = Back Light
   <br>28 = Candlelight
   <br>29 = Sunset
-  <br>31 = Panorama Left-Right
-  <br>32 = Panorama Right-Left
+  <br>31 = Panorama Left-right
+  <br>32 = Panorama Right-left
   <br>33 = Smart Scene
   <br>34 = High ISO</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
@@ -936,6 +936,44 @@ indicator instead of a full TIFF header.  These tags are used by the Z980.</p>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
+<h2><a name='Type11'>Kodak Type11 Tags</a></h2>
+<p>These tags are found in models such as the PixPro S-1.  They are not
+writable because the inconsistency of Kodak maker notes is beginning to get
+on my nerves.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td title='0x0203 = 515'>0x0203</td>
+<td>PictureEffect</td>
+<td class=c>N</td>
+<td><span class=s>0 = None
+  <br>3 = Monochrome
+  <br>9 = Kodachrome</span></td></tr>
+<tr class=b>
+<td title='0x0207 = 519'>0x0207</td>
+<td>KodakModel</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x0300 = 768'>0x0300</td>
+<td>KodakMake</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x0308 = 776'>0x0308</td>
+<td>LensSerialNumber</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x0309 = 777'>0x0309</td>
+<td>LensModel</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
 <h2><a name='Unknown'>Kodak Unknown Tags</a></h2>
 <blockquote>
 <table class=frame><tr><td>
@@ -1753,7 +1791,7 @@ such as the P880.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Feb 7, 2013</i>
+<br><i>Last revised Jul 1, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+        "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Lytro Tags</title>
+<link rel=stylesheet type='text/css' href='style.css' title='Style'>
+</head>
+<body>
+<h2 class=top>Lytro Tags</h2>
+<p>Tag definitions for Lytro Light Field Picture (LFP) files.  ExifTool
+extracts the full JSON metadata blocks, as well as breaking them down into
+individual tags.  All available tags are extracted from the JSON metadata,
+even if they don&#39;t appear in the table below.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>FirmwareVersion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>Make</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>Model</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>SerialNumber</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>AccelerometerTime</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>AccelerometerX</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>AccelerometerY</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>AccelerometerZ</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>DateTimeOriginal</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>FNumber</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>FocalLength</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>LensTemperature</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>ISO</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>FocalPlaneXResolution</td>
+<td class=c>N</td>
+<td><span class=s><span class=n>(Y resolution is the same as X resolution)</span></span></td></tr>
+<tr>
+<td>SensorSerialNumber</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>FrameExposureTime</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>ExposureTime</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>SocTemperature</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>EmbeddedImage</td>
+<td class=c>N</td>
+<td><span class=s><span class=n>(JPEG image embedded in LFP files written by Lytro Desktop)</span></span></td></tr>
+<tr class=b>
+<td>ImageLimitExposureBias</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>ImageModulationExposureBias</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>Orientation</td>
+<td class=c>N</td>
+<td><span class=s>1 = Horizontal (normal)</span></td></tr>
+<tr>
+<td>JSONMetadata</td>
+<td class=c title=' + = List'>N+</td>
+<td><span class=s><span class=n>(the full JSON-format metadata blocks)</span></span></td></tr>
+<tr class=b>
+<td>CameraType</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<hr>
+(This document generated automatically by Image::ExifTool::BuildTagLookup)
+<br><i>Last revised Jul 18, 2014</i>
+<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
+</body>
+</html>
@@ -24,13 +24,13 @@ and stored in this format in the file if it is more compact.</p>
 written by adding a language/country code to the tag name in the form
 <code>TAG-xx_YY</code>, where <code>TAG</code> is the tag name, <code>xx</code> is a 2-character lower
 case ISO 639-1 language code, and <code>YY</code> is a 2-character upper case ISO
-3166-1 alpha 2 country code (ie. <code>Title-en_US</code>).  But as usual, the user
+3166-1 alpha 2 country code (eg. <code>Title-en_US</code>).  But as usual, the user
 interface is case-insensitive, and ExifTool will write the correct case to
 the file.</p>
 
 <p>3) Some numerical MIE tags allow units of measurement to be specified.  For
 these tags, units may be added in brackets immediately following the value
-(ie. <code>55(mi/h)</code>).  If no units are specified, the default units are
+(eg. <code>55(mi/h)</code>).  If no units are specified, the default units are
 written.</p>
 
 <p>See <a href="../MIE1.1-20070121.pdf">MIE1.1-20070121.pdf</a> for the
@@ -359,7 +359,7 @@ without the need to load the MWG Composite tags above.  See
 <h2><a name='Extensions'>MWG Extensions Struct</a></h2>
 <p>This structure may contain any top-level XMP tags, but none have been
 pre-defined in ExifTool.  Since no flattened tags have been pre-defined,
-RegionExtensions is writable only as a structure (ie.
+RegionExtensions is writable only as a structure (eg.
 <code>{xmp-dc:creator=me,rating=5}</code>).  Fields for this structure are identified
 using the standard ExifTool tag name (with optional leading group name,
 and/or trailing language code, and/or trailing <code>#</code> symbol to disable print
@@ -51,8 +51,8 @@ namespace prefix is &quot;MicrosoftPhoto&quot;, but ExifTool shortens this to
 <tr>
 <td>RatingPercent</td>
 <td class=c>string</td>
-<td><span class=s><span class=n>(normal Rating values of 1,2,3,4 and 5 stars correspond to RatingPercent
-values of 1,25,50,75 and 99 respectively)</span></span></td></tr>
+<td><span class=s><span class=n>(called Rating by the spec.  XMP-xmp:Rating values of 1,2,3,4 and 5 stars
+correspond to RatingPercent values of 1,25,50,75 and 99 respectively)</span></span></td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='MP1'>Microsoft MP1 Tags</a></h2>
@@ -2063,7 +2063,7 @@ are not shown because some are unruly GUID&#39;s.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Feb 28, 2014</i>
+<br><i>Last revised Jun 23, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -106,6 +106,7 @@ image stabilization is enabled)</span></td></tr>
   <br>26 = Fireworks
   <br>27 = Food
   <br>28 = Pet
+  <br>33 = HDR
   <br>65535 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
 <tr>
@@ -558,24 +559,25 @@ adapter is used.</p>
 </tr><tr><td>65535.14</td><td>= Sony E 20mm F2.8</td>
 </tr><tr><td>65535.15</td><td>= Sony E 35mm F1.8 OSS</td>
 </tr><tr><td>65535.16</td><td>= Sony E PZ 18-105mm F4 G OSS</td>
-</tr><tr><td>65535.17</td><td>= Sony E PZ 18-200mm F3.5-6.3 OSS</td>
-</tr><tr><td>65535.18</td><td>= Sony FE 55mm F1.8 ZA</td>
-</tr><tr><td>65535.19</td><td>= Sony FE 70-200mm F4 G OSS</td>
-</tr><tr><td>65535.20</td><td>= Sony FE 28-70mm F3.5-5.6 OSS</td>
-</tr><tr><td>65535.21</td><td>= Sigma 19mm F2.8 [EX] DN</td>
-</tr><tr><td>65535.22</td><td>= Sigma 30mm F2.8 [EX] DN</td>
-</tr><tr><td>65535.23</td><td>= Sigma 60mm F2.8 DN</td>
-</tr><tr><td>65535.24</td><td>= Tamron 18-200mm F3.5-6.3 Di III VC</td>
-</tr><tr><td>65535.25</td><td>= Zeiss Touit 12mm F2.8</td>
-</tr><tr><td>65535.26</td><td>= Zeiss Touit 32mm F1.8</td>
-</tr><tr><td>65535.27</td><td>= Zeiss Touit 50mm F2.8 Macro</td>
-</tr><tr><td>65535.28</td><td>= Arax MC 35mm F2.8 Tilt+Shift</td>
-</tr><tr><td>65535.29</td><td>= Arax MC 80mm F2.8 Tilt+Shift</td>
-</tr><tr><td>65535.30</td><td>= Zenitar MF 16mm F2.8 Fisheye M42</td>
-</tr><tr><td>65535.31</td><td>= Samyang 500mm Mirror F8.0</td>
-</tr><tr><td>65535.32</td><td>= Pentacon Auto 135mm F2.8</td>
-</tr><tr><td>65535.33</td><td>= Pentacon Auto 29mm F2.8</td>
-</tr><tr><td>65535.34</td><td>= Helios 44-2 58mm F2.0</td>
+</tr><tr><td>65535.17</td><td>= Sony E 18-50mm F4-5.6</td>
+</tr><tr><td>65535.18</td><td>= Sony E PZ 18-200mm F3.5-6.3 OSS</td>
+</tr><tr><td>65535.19</td><td>= Sony FE 55mm F1.8 ZA</td>
+</tr><tr><td>65535.20</td><td>= Sony FE 70-200mm F4 G OSS</td>
+</tr><tr><td>65535.21</td><td>= Sony FE 28-70mm F3.5-5.6 OSS</td>
+</tr><tr><td>65535.22</td><td>= Sigma 19mm F2.8 [EX] DN</td>
+</tr><tr><td>65535.23</td><td>= Sigma 30mm F2.8 [EX] DN</td>
+</tr><tr><td>65535.24</td><td>= Sigma 60mm F2.8 DN</td>
+</tr><tr><td>65535.25</td><td>= Tamron 18-200mm F3.5-6.3 Di III VC</td>
+</tr><tr><td>65535.26</td><td>= Zeiss Touit 12mm F2.8</td>
+</tr><tr><td>65535.27</td><td>= Zeiss Touit 32mm F1.8</td>
+</tr><tr><td>65535.28</td><td>= Zeiss Touit 50mm F2.8 Macro</td>
+</tr><tr><td>65535.29</td><td>= Arax MC 35mm F2.8 Tilt+Shift</td>
+</tr><tr><td>65535.30</td><td>= Arax MC 80mm F2.8 Tilt+Shift</td>
+</tr><tr><td>65535.31</td><td>= Zenitar MF 16mm F2.8 Fisheye M42</td>
+</tr><tr><td>65535.32</td><td>= Samyang 500mm Mirror F8.0</td>
+</tr><tr><td>65535.33</td><td>= Pentacon Auto 135mm F2.8</td>
+</tr><tr><td>65535.34</td><td>= Pentacon Auto 29mm F2.8</td>
+</tr><tr><td>65535.35</td><td>= Helios 44-2 58mm F2.0</td>
 </tr></table></td></tr></table></blockquote>
 
 <h2><a name='CameraSettings'>Minolta CameraSettings Tags</a></h2>
@@ -996,13 +998,13 @@ tags are disabled.</p>
   <td>0x0 = (none)
   <br>Bit 0 = Center
   <br>Bit 1 = Top
-  <br>Bit 2 = Top-Right
+  <br>Bit 2 = Top-right
   <br>Bit 3 = Right</td><td>&nbsp;&nbsp;</td>
-  <td>Bit 4 = Bottom-Right
+  <td>Bit 4 = Bottom-right
   <br>Bit 5 = Bottom
-  <br>Bit 6 = Bottom-Left
+  <br>Bit 6 = Bottom-left
   <br>Bit 7 = Left
-  <br>Bit 8 = Top-Left</td><td>&nbsp;&nbsp;</td></tr></table>
+  <br>Bit 8 = Top-left</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='21 = 0x15'>21</td>
@@ -1137,14 +1139,14 @@ version)</span></span></td></tr>
 <td>AFSensorActive</td>
 <td class=c>int8u</td>
 <td><table class=cols><tr>
-  <td>0 = Top-Right
-  <br>1 = Bottom-Right
+  <td>0 = Top-right
+  <br>1 = Bottom-right
   <br>2 = Bottom
   <br>3 = Middle Horizontal</td><td>&nbsp;&nbsp;</td>
   <td>4 = Center Vertical
   <br>5 = Top
-  <br>6 = Top-Left
-  <br>7 = Bottom-Left</td><td>&nbsp;&nbsp;</td></tr></table>
+  <br>6 = Top-left
+  <br>7 = Bottom-left</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='2 = 0x2'>2</td>
@@ -1157,7 +1159,7 @@ focusing if the image is focused then recomposed)</span></span><table class=cols
 </td></tr>
 <tr>
 <td class=r title='4 = 0x4'>4</td>
-<td>AFStatusTop-Right</td>
+<td>AFStatusTop-right</td>
 <td class=c>int16s</td>
 <td><table class=cols><tr>
   <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
@@ -1165,7 +1167,7 @@ focusing if the image is focused then recomposed)</span></span><table class=cols
 </td></tr>
 <tr class=b>
 <td class=r title='6 = 0x6'>6</td>
-<td>AFStatusBottom-Right</td>
+<td>AFStatusBottom-right</td>
 <td class=c>int16s</td>
 <td><table class=cols><tr>
   <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
@@ -1206,7 +1208,7 @@ Center or Right)</span></span><table class=cols><tr>
 </td></tr>
 <tr>
 <td class=r title='16 = 0x10'>16</td>
-<td>AFStatusTop-Left</td>
+<td>AFStatusTop-left</td>
 <td class=c>int16s</td>
 <td><table class=cols><tr>
   <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
@@ -1214,7 +1216,7 @@ Center or Right)</span></span><table class=cols><tr>
 </td></tr>
 <tr class=b>
 <td class=r title='18 = 0x12'>18</td>
-<td>AFStatusBottom-Left</td>
+<td>AFStatusBottom-left</td>
 <td class=c>int16s</td>
 <td><table class=cols><tr>
   <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
@@ -1236,13 +1238,13 @@ Center or Right)</span></span><table class=cols><tr>
   <td>0 = Auto
   <br>1 = Center
   <br>2 = Top
-  <br>3 = Top-Right
+  <br>3 = Top-right
   <br>4 = Right</td><td>&nbsp;&nbsp;</td>
-  <td>5 = Bottom-Right
+  <td>5 = Bottom-right
   <br>6 = Bottom
-  <br>7 = Bottom-Left
+  <br>7 = Bottom-left
   <br>8 = Left
-  <br>9 = Top-Left</td><td>&nbsp;&nbsp;</td></tr></table>
+  <br>9 = Top-left</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='22 = 0x16'>22</td>
@@ -1982,13 +1984,13 @@ middle cell, which gives the spot metering)</span></span></td></tr>
 <td><table class=cols><tr>
   <td>1 = Center
   <br>2 = Top
-  <br>3 = Top-Right
+  <br>3 = Top-right
   <br>4 = Right
-  <br>5 = Bottom-Right</td><td>&nbsp;&nbsp;</td>
+  <br>5 = Bottom-right</td><td>&nbsp;&nbsp;</td>
   <td>6 = Bottom
-  <br>7 = Bottom-Left
+  <br>7 = Bottom-left
   <br>8 = Left
-  <br>9 = Top-Left</td><td>&nbsp;&nbsp;</td></tr></table>
+  <br>9 = Top-left</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='14 = 0xe'>14</td>
@@ -2569,7 +2571,7 @@ DiMAGE X and Xt.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised May 8, 2014</i>
+<br><i>Last revised Sep 3, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -1003,9 +1003,17 @@ FaceDetectFrameSize)</span></span></td></tr>
   <br>0x103 = Hi 0.7
   <br>0x104 = Hi 1.0
   <br>0x105 = Hi 1.3
-  <br>0x106 = Hi 1.5</td><td>&nbsp;&nbsp;</td>
-  <td>0x107 = Hi 1.7
+  <br>0x106 = Hi 1.5
+  <br>0x107 = Hi 1.7
   <br>0x108 = Hi 2.0
+  <br>0x109 = Hi 2.3
+  <br>0x10a = Hi 2.5</td><td>&nbsp;&nbsp;</td>
+  <td>0x10b = Hi 2.7
+  <br>0x10c = Hi 3.0
+  <br>0x10d = Hi 3.3
+  <br>0x10e = Hi 3.5
+  <br>0x10f = Hi 3.7
+  <br>0x110 = Hi 4.0
   <br>0x201 = Lo 0.3
   <br>0x202 = Lo 0.5
   <br>0x203 = Lo 0.7
@@ -2942,12 +2950,14 @@ D5200, D7000.</p>
 <td class=r title='6 = 0x6'>6</td>
 <td>PhaseDetectAF</td>
 <td class=c>int8u</td>
-<td><span class=s><span class=n>(PrimaryAFPoint and AFPointsUsed below are only valid when this is On)</span>
-  <br>0 = Off
+<td><span class=s><span class=n>(PrimaryAFPoint and AFPointsUsed below are only valid when this is On)</span></span><table class=cols><tr>
+  <td>0 = Off
   <br>1 = On (51-point)
-  <br>2 = On (11-point)
-  <br>3 = On (39-point)
-  <br>4 = On (hybrid)</span></td></tr>
+  <br>2 = On (11-point)</td><td>&nbsp;&nbsp;</td>
+  <td>3 = On (39-point)
+  <br>4 = On (hybrid)
+  <br>5 = On (105-point)</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
 <tr>
 <td class=r title='7 = 0x7'>7</td>
 <td>PrimaryAFPoint</td>
@@ -3523,8 +3533,8 @@ corner points are not used for 41-point AF mode)</span></span></td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='NCDT'>Nikon NCDT Tags</a></h2>
-<p>Nikon-specific QuickTime tags found in the NCDT atom of MOV videos from some
-Nikon cameras such as the Coolpix S8000.</p>
+<p>Nikon-specific QuickTime tags found in the NCDT atom of MOV videos from
+various Nikon models.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
@@ -4134,10 +4144,12 @@ ExifTool to choose in these cases (see the
 </tr><tr><td>'01 00 00 00 00 00 02 00'</td><td>= TC-16A</td>
 </tr><tr><td>'01 00 00 00 00 00 08 00'</td><td>= TC-16A</td>
 </tr><tr><td>'01 58 50 50 14 14 02 00'</td><td>= AF Nikkor 50mm f/1.8</td>
+</tr><tr><td>'01 58 50 50 14 14 05 00'</td><td>= AF Nikkor 50mm f/1.8</td>
 </tr><tr><td>'02 2F 98 98 3D 3D 02 00'</td><td>= Sigma APO 400mm F5.6</td>
 </tr><tr><td>'02 34 A0 A0 44 44 02 00'</td><td>= Sigma APO 500mm F7.2</td>
 </tr><tr><td>'02 37 5E 8E 35 3D 02 00'</td><td>= Sigma 75-300mm F4.5-5.6 APO</td>
 </tr><tr><td>'02 37 A0 A0 34 34 02 00'</td><td>= Sigma APO 500mm F4.5</td>
+</tr><tr><td>'02 3A 37 50 31 3D 02 00'</td><td>= Sigma 24-50mm F4-5.6 UC</td>
 </tr><tr><td>'02 3A 5E 8E 32 3D 02 00'</td><td>= Sigma 75-300mm F4.0-5.6</td>
 </tr><tr><td>'02 3B 44 61 30 3D 02 00'</td><td>= Sigma 35-80mm F4-5.6</td>
 </tr><tr><td>'02 3C B0 B0 3C 3C 02 00'</td><td>= Sigma APO 800mm F5.6</td>
@@ -4322,7 +4334,7 @@ ExifTool to choose in these cases (see the
 </tr><tr><td>'48 44 A0 A0 34 34 4B 02'</td><td>= Sigma APO 500mm F4.5 EX HSM</td>
 </tr><tr><td>'48 48 24 24 24 24 4B 02'</td><td>= Sigma 14mm F2.8 EX Aspherical HSM</td>
 </tr><tr><td>'48 48 2B 44 24 30 4B 06'</td><td>= Sigma 17-35mm F2.8-4 EX DG  Aspherical HSM</td>
-</tr><tr><td>'48 48 68 8E 30 30 4B 02'</td><td>= Sigma 100-300mm F4 EX IF HSM</td>
+</tr><tr><td>'48 48 68 8E 30 30 4B 02'</td><td>= Sigma APO 100-300mm F4 EX IF HSM</td>
 </tr><tr><td>'48 48 76 76 24 24 4B 06'</td><td>= Sigma APO Macro 150mm F2.8 EX DG HSM</td>
 </tr><tr><td>'48 48 8E 8E 24 24 4B 02'</td><td>= AF-S Nikkor 300mm f/2.8D IF-ED</td>
 </tr><tr><td>'48 48 8E 8E 24 24 E1 02'</td><td>= AF-S Nikkor 300mm f/2.8D IF-ED + TC-17E</td>
@@ -4340,6 +4352,7 @@ ExifTool to choose in these cases (see the
 </tr><tr><td>'49 3C A6 A6 30 30 F2 02'</td><td>= AF-S Nikkor 600mm f/4D IF-ED + TC-20E</td>
 </tr><tr><td>'4A 40 11 11 2C 0C 4D 02'</td><td>= Samyang 8mm f/3.5 Fish-Eye CS</td>
 </tr><tr><td>'4A 48 24 24 24 0C 4D 02'</td><td>= Samyang AE 14mm f/2.8 ED AS IF UMC</td>
+</tr><tr><td>'4A 54 29 29 18 0C 4D 02'</td><td>= Samyang 16mm F2.0 ED AS UMC CS</td>
 </tr><tr><td>'4A 54 62 62 0C 0C 4D 02'</td><td>= AF Nikkor 85mm f/1.4D IF</td>
 </tr><tr><td>'4A 60 44 44 0C 0C 4D 02'</td><td>= Samyang 35mm f/1.4 AS UMC</td>
 </tr><tr><td>'4A 60 62 62 0C 0C 4D 02'</td><td>= Samyang AE 85mm f/1.4 AS IF UMC</td>
@@ -4427,6 +4440,7 @@ ExifTool to choose in these cases (see the
 </tr><tr><td>'8D 44 5C 8E 34 3C 8F 0E'</td><td>= AF-S VR Zoom-Nikkor 70-300mm f/4.5-5.6G IF-ED</td>
 </tr><tr><td>'8E 3C 2B 5C 24 30 4B 0E'</td><td>= Sigma 17-70mm F2.8-4 DC Macro OS HSM Contemporary</td>
 </tr><tr><td>'8F 40 2D 72 2C 3C 91 06'</td><td>= AF-S DX Zoom-Nikkor 18-135mm f/3.5-5.6G IF-ED</td>
+</tr><tr><td>'8F 48 2B 50 24 24 4B 0E'</td><td>= Sigma 17-50mm F2.8 EX DC OS HSM</td>
 </tr><tr><td>'90 3B 53 80 30 3C 92 0E'</td><td>= AF-S DX VR Zoom-Nikkor 55-200mm f/4-5.6G IF-ED</td>
 </tr><tr><td>'91 54 44 44 0C 0C 4B 06'</td><td>= Sigma 35mm F1.4 DG HSM</td>
 </tr><tr><td>'92 2C 2D 88 2C 40 4B 0E'</td><td>= Sigma 18-250mm F3.5-6.3 DC Macro OS HSM</td>
@@ -4500,6 +4514,7 @@ ExifTool to choose in these cases (see the
 </tr><tr><td>'E6 41 3C 8E 2C 40 1C 02'</td><td>= Sigma 28-300mm F3.5-6.3 DG Macro</td>
 </tr><tr><td>'E9 54 37 5C 24 24 1C 02'</td><td>= Sigma 24-70mm F2.8 EX DG Macro</td>
 </tr><tr><td>'EA 48 27 27 24 24 1C 02'</td><td>= Sigma 15mm F2.8 EX Diagonal Fisheye</td>
+</tr><tr><td>'EB 40 76 A6 38 40 DF 0E'</td><td>= Tamron SP AF 150-600mm f/5-6.3 VC USD (A011)</td>
 </tr><tr><td>'ED 40 2D 80 2C 40 4B 0E'</td><td>= Sigma 18-200mm F3.5-6.3 DC OS HSM</td>
 </tr><tr><td>'EE 48 5C 80 24 24 4B 06'</td><td>= Sigma 70-200mm F2.8 EX APO DG Macro HSM II</td>
 </tr><tr><td>'F0 38 1F 37 34 3C 4B 06'</td><td>= Sigma 12-24mm F4.5-5.6 EX DG Aspherical HSM</td>
@@ -4537,7 +4552,7 @@ ExifTool to choose in these cases (see the
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised May 8, 2014</i>
+<br><i>Last revised Sep 3, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -68,8 +68,8 @@ Pentax, Ricoh, Samsung, Sanyo, SeaLife, Sony, Supra and Vivitar.
 <td>SpecialMode</td>
 <td class=c title=' ~ = Writable only with -n'>int32u[3]~</td>
 <td><span class=s><span class=n>(3 numbers: 1. Shooting mode: 0=Normal, 2=Fast, 3=Panorama;
-2. Sequence Number; 3. Panorama Direction: 1=Left-Right,
-2=Right-Left, 3=Bottom-Top, 4=Top-Bottom)</span></span></td></tr>
+2. Sequence Number; 3. Panorama Direction: 1=Left-right,
+2=Right-left, 3=Bottom-Top, 4=Top-Bottom)</span></span></td></tr>
 <tr>
 <td title='0x0201 = 513'>0x0201</td>
 <td>Quality</td>
@@ -731,273 +731,279 @@ Vivitar are not listed.</p>
 <table class='inner sep' cellspacing=1>
 <tr class=h><th>Value</th><th>CameraType</th><th>Value</th><th>CameraType</th><th>Value</th><th>CameraType</th></tr>
 <tr><td>'D4028'</td><td>= X-2,C-50Z</td>
-<td class=b>'D4386'</td><td class=b>= FE3000,X890</td>
+<td class=b>'D4388'</td><td class=b>= u550WP,S550WP</td>
 <td>'S0009'</td><td>= E-400</td>
 </tr><tr><td>'D4029'</td><td>= E-20,E-20N,E-20P</td>
-<td class=b>'D4387'</td><td class=b>= FE35,X30</td>
+<td class=b>'D4390'</td><td class=b>= FE5000,X905</td>
 <td>'S0010'</td><td>= E-510</td>
 </tr><tr><td>'D4034'</td><td>= C720UZ</td>
-<td class=b>'D4388'</td><td class=b>= u550WP,S550WP</td>
+<td class=b>'D4391'</td><td class=b>= u5000</td>
 <td>'S0011'</td><td>= E-3</td>
 </tr><tr><td>'D4040'</td><td>= E-1</td>
-<td class=b>'D4390'</td><td class=b>= FE5000,X905</td>
+<td class=b>'D4392'</td><td class=b>= u7000,S7000</td>
 <td>'S0013'</td><td>= E-410</td>
 </tr><tr><td>'D4041'</td><td>= E-300</td>
-<td class=b>'D4391'</td><td class=b>= u5000</td>
+<td class=b>'D4396'</td><td class=b>= FE5010,X915</td>
 <td>'S0016'</td><td>= E-420</td>
 </tr><tr><td>'D4083'</td><td>= C2Z,D520Z,C220Z</td>
-<td class=b>'D4392'</td><td class=b>= u7000,S7000</td>
+<td class=b>'D4397'</td><td class=b>= FE25,X20</td>
 <td>'S0017'</td><td>= E-30</td>
 </tr><tr><td>'D4106'</td><td>= u20D,S400D,u400D</td>
-<td class=b>'D4396'</td><td class=b>= FE5010,X915</td>
+<td class=b>'D4398'</td><td class=b>= FE45,X40</td>
 <td>'S0018'</td><td>= E-520</td>
 </tr><tr><td>'D4120'</td><td>= X-1</td>
-<td class=b>'D4397'</td><td class=b>= FE25,X20</td>
+<td class=b>'D4401'</td><td class=b>= XZ-1</td>
 <td>'S0019'</td><td>= E-P1</td>
 </tr><tr><td>'D4122'</td><td>= u10D,S300D,u300D</td>
-<td class=b>'D4398'</td><td class=b>= FE45,X40</td>
+<td class=b>'D4402'</td><td class=b>= uT6010,ST6010</td>
 <td>'S0023'</td><td>= E-620</td>
 </tr><tr><td>'D4125'</td><td>= AZ-1</td>
-<td class=b>'D4401'</td><td class=b>= XZ-1</td>
+<td class=b>'D4406'</td><td class=b>= u7010,S7010 / u7020,S7020</td>
 <td>'S0026'</td><td>= E-P2</td>
 </tr><tr><td>'D4141'</td><td>= C150,D390</td>
-<td class=b>'D4402'</td><td class=b>= uT6010,ST6010</td>
+<td class=b>'D4407'</td><td class=b>= FE4010,X930</td>
 <td>'S0027'</td><td>= E-PL1</td>
 </tr><tr><td>'D4193'</td><td>= C-5000Z</td>
-<td class=b>'D4406'</td><td class=b>= u7010,S7010 / u7020,S7020</td>
+<td class=b>'D4408'</td><td class=b>= X560WP</td>
 <td>'S0029'</td><td>= E-450</td>
 </tr><tr><td>'D4194'</td><td>= X-3,C-60Z</td>
-<td class=b>'D4407'</td><td class=b>= FE4010,X930</td>
+<td class=b>'D4409'</td><td class=b>= FE26,X21</td>
 <td>'S0030'</td><td>= E-600</td>
 </tr><tr><td>'D4199'</td><td>= u30D,S410D,u410D</td>
-<td class=b>'D4408'</td><td class=b>= X560WP</td>
+<td class=b>'D4410'</td><td class=b>= FE4000,X920,X925</td>
 <td>'S0032'</td><td>= E-P3</td>
 </tr><tr><td>'D4205'</td><td>= X450,D535Z,C370Z</td>
-<td class=b>'D4409'</td><td class=b>= FE26,X21</td>
+<td class=b>'D4411'</td><td class=b>= FE46,X41,X42</td>
 <td>'S0033'</td><td>= E-5</td>
 </tr><tr><td>'D4210'</td><td>= C160,D395</td>
-<td class=b>'D4410'</td><td class=b>= FE4000,X920,X925</td>
+<td class=b>'D4412'</td><td class=b>= FE5020,X935</td>
 <td>'S0034'</td><td>= E-PL2</td>
 </tr><tr><td>'D4211'</td><td>= C725UZ</td>
-<td class=b>'D4411'</td><td class=b>= FE46,X41,X42</td>
+<td class=b>'D4413'</td><td class=b>= uTough-3000</td>
 <td>'S0036'</td><td>= E-M5</td>
 </tr><tr><td>'D4213'</td><td>= FerrariMODEL2003</td>
-<td class=b>'D4412'</td><td class=b>= FE5020,X935</td>
+<td class=b>'D4414'</td><td class=b>= StylusTough-6020</td>
 <td>'S0038'</td><td>= E-PL3</td>
 </tr><tr><td>'D4216'</td><td>= u15D</td>
-<td class=b>'D4413'</td><td class=b>= uTough-3000</td>
+<td class=b>'D4415'</td><td class=b>= StylusTough-8010</td>
 <td>'S0039'</td><td>= E-PM1</td>
 </tr><tr><td>'D4217'</td><td>= u25D</td>
-<td class=b>'D4414'</td><td class=b>= StylusTough-6020</td>
+<td class=b>'D4417'</td><td class=b>= u5010,S5010</td>
 <td>'S0040'</td><td>= E-PL1s</td>
 </tr><tr><td>'D4220'</td><td>= u-miniD,Stylus V</td>
-<td class=b>'D4415'</td><td class=b>= StylusTough-8010</td>
+<td class=b>'D4418'</td><td class=b>= u7040,S7040</td>
 <td>'S0042'</td><td>= E-PL5</td>
 </tr><tr><td>'D4221'</td><td>= u40D,S500,uD500</td>
-<td class=b>'D4417'</td><td class=b>= u5010,S5010</td>
+<td class=b>'D4419'</td><td class=b>= u9010,S9010</td>
 <td>'S0043'</td><td>= E-PM2</td>
 </tr><tr><td>'D4231'</td><td>= FerrariMODEL2004</td>
-<td class=b>'D4418'</td><td class=b>= u7040,S7040</td>
+<td class=b>'D4423'</td><td class=b>= FE4040</td>
 <td>'S0044'</td><td>= E-P5</td>
 </tr><tr><td>'D4240'</td><td>= X500,D590Z,C470Z</td>
-<td class=b>'D4419'</td><td class=b>= u9010,S9010</td>
+<td class=b>'D4424'</td><td class=b>= FE47,X43</td>
 <td>'S0045'</td><td>= E-PL6</td>
 </tr><tr><td>'D4244'</td><td>= uD800,S800</td>
-<td class=b>'D4423'</td><td class=b>= FE4040</td>
-<td>'S0047'</td><td>= E-M1</td>
+<td class=b>'D4426'</td><td class=b>= FE4030,X950</td>
+<td>'S0046'</td><td>= E-PL7</td>
 </tr><tr><td>'D4256'</td><td>= u720SW,S720SW</td>
-<td class=b>'D4424'</td><td class=b>= FE47,X43</td>
-<td>'S0051'</td><td>= E-M10</td>
+<td class=b>'D4428'</td><td class=b>= FE5030,X965,X960</td>
+<td>'S0047'</td><td>= E-M1</td>
 </tr><tr><td>'D4261'</td><td>= X600,D630,FE5500</td>
-<td class=b>'D4426'</td><td class=b>= FE4030,X950</td>
-<td>'SR45'</td><td>= D220</td>
+<td class=b>'D4430'</td><td class=b>= u7030,S7030</td>
+<td>'S0051'</td><td>= E-M10</td>
 </tr><tr><td>'D4262'</td><td>= uD600,S600</td>
-<td class=b>'D4428'</td><td class=b>= FE5030,X965,X960</td>
-<td>'SR55'</td><td>= D320L</td>
+<td class=b>'D4432'</td><td class=b>= SP600UZ</td>
+<td>'SR45'</td><td>= D220</td>
 </tr><tr><td>'D4301'</td><td>= u810/S810</td>
-<td class=b>'D4430'</td><td class=b>= u7030,S7030</td>
-<td>'SR83'</td><td>= D340L</td>
+<td class=b>'D4434'</td><td class=b>= SP800UZ</td>
+<td>'SR55'</td><td>= D320L</td>
 </tr><tr><td>'D4302'</td><td>= u710,S710</td>
-<td class=b>'D4432'</td><td class=b>= SP600UZ</td>
-<td>'SR85'</td><td>= C830L,D340R</td>
+<td class=b>'D4439'</td><td class=b>= FE4020,X940</td>
+<td>'SR83'</td><td>= D340L</td>
 </tr><tr><td>'D4303'</td><td>= u700,S700</td>
-<td class=b>'D4434'</td><td class=b>= SP800UZ</td>
-<td>'SR852'</td><td>= C860L,D360L</td>
+<td class=b>'D4442'</td><td class=b>= FE5035</td>
+<td>'SR85'</td><td>= C830L,D340R</td>
 </tr><tr><td>'D4304'</td><td>= FE100,X710</td>
-<td class=b>'D4439'</td><td class=b>= FE4020,X940</td>
-<td>'SR872'</td><td>= C900Z,D400Z</td>
+<td class=b>'D4448'</td><td class=b>= FE4050,X970</td>
+<td>'SR852'</td><td>= C860L,D360L</td>
 </tr><tr><td>'D4305'</td><td>= FE110,X705</td>
-<td class=b>'D4442'</td><td class=b>= FE5035</td>
-<td>'SR874'</td><td>= C960Z,D460Z</td>
+<td class=b>'D4450'</td><td class=b>= FE5050,X985</td>
+<td>'SR872'</td><td>= C900Z,D400Z</td>
 </tr><tr><td>'D4310'</td><td>= FE-130,X-720</td>
-<td class=b>'D4448'</td><td class=b>= FE4050,X970</td>
-<td>'SR951'</td><td>= C2000Z</td>
+<td class=b>'D4454'</td><td class=b>= u-7050</td>
+<td>'SR874'</td><td>= C960Z,D460Z</td>
 </tr><tr><td>'D4311'</td><td>= FE-140,X-725</td>
-<td class=b>'D4450'</td><td class=b>= FE5050,X985</td>
-<td>'SR952'</td><td>= C21</td>
+<td class=b>'D4464'</td><td class=b>= T10,X27</td>
+<td>'SR951'</td><td>= C2000Z</td>
 </tr><tr><td>'D4312'</td><td>= FE150,X730</td>
-<td class=b>'D4454'</td><td class=b>= u-7050</td>
-<td>'SR953'</td><td>= C21T.commu</td>
+<td class=b>'D4470'</td><td class=b>= FE5040,X980</td>
+<td>'SR952'</td><td>= C21</td>
 </tr><tr><td>'D4313'</td><td>= FE160,X735</td>
-<td class=b>'D4464'</td><td class=b>= T10,X27</td>
-<td>'SR954'</td><td>= C2020Z</td>
+<td class=b>'D4472'</td><td class=b>= TG-310</td>
+<td>'SR953'</td><td>= C21T.commu</td>
 </tr><tr><td>'D4314'</td><td>= u740,S740</td>
-<td class=b>'D4470'</td><td class=b>= FE5040,X980</td>
-<td>'SR955'</td><td>= C990Z,D490Z</td>
+<td class=b>'D4474'</td><td class=b>= TG-610</td>
+<td>'SR954'</td><td>= C2020Z</td>
 </tr><tr><td>'D4315'</td><td>= u750,S750</td>
-<td class=b>'D4472'</td><td class=b>= TG-310</td>
-<td>'SR956'</td><td>= C211Z</td>
+<td class=b>'D4476'</td><td class=b>= TG-810</td>
+<td>'SR955'</td><td>= C990Z,D490Z</td>
 </tr><tr><td>'D4316'</td><td>= u730/S730</td>
-<td class=b>'D4474'</td><td class=b>= TG-610</td>
-<td>'SR959'</td><td>= C990ZS,D490Z</td>
+<td class=b>'D4478'</td><td class=b>= VG145,VG140,D715</td>
+<td>'SR956'</td><td>= C211Z</td>
 </tr><tr><td>'D4317'</td><td>= FE115,X715</td>
-<td class=b>'D4476'</td><td class=b>= TG-810</td>
-<td>'SR95A'</td><td>= C2100UZ</td>
+<td class=b>'D4479'</td><td class=b>= VG130,D710</td>
+<td>'SR959'</td><td>= C990ZS,D490Z</td>
 </tr><tr><td>'D4321'</td><td>= SP550UZ</td>
-<td class=b>'D4478'</td><td class=b>= VG145,VG140,D715</td>
-<td>'SR971'</td><td>= C100,D370</td>
+<td class=b>'D4480'</td><td class=b>= VG120,D705</td>
+<td>'SR95A'</td><td>= C2100UZ</td>
 </tr><tr><td>'D4322'</td><td>= SP510UZ</td>
-<td class=b>'D4479'</td><td class=b>= VG130,D710</td>
-<td>'SR973'</td><td>= C2,D230</td>
+<td class=b>'D4482'</td><td class=b>= VR310,D720</td>
+<td>'SR971'</td><td>= C100,D370</td>
 </tr><tr><td>'D4324'</td><td>= FE170,X760</td>
-<td class=b>'D4480'</td><td class=b>= VG120,D705</td>
-<td>'SX151'</td><td>= E100RS</td>
+<td class=b>'D4484'</td><td class=b>= VR320,D725</td>
+<td>'SR973'</td><td>= C2,D230</td>
 </tr><tr><td>'D4326'</td><td>= FE200</td>
-<td class=b>'D4482'</td><td class=b>= VR310,D720</td>
-<td>'SX351'</td><td>= C3000Z / C3030Z</td>
+<td class=b>'D4486'</td><td class=b>= VR330,D730</td>
+<td>'SX151'</td><td>= E100RS</td>
 </tr><tr><td>'D4327'</td><td>= FE190/X750</td>
-<td class=b>'D4484'</td><td class=b>= VR320,D725</td>
-<td>'SX354'</td><td>= C3040Z</td>
+<td class=b>'D4488'</td><td class=b>= VG110,D700</td>
+<td>'SX351'</td><td>= C3000Z / C3030Z</td>
 </tr><tr><td>'D4328'</td><td>= u760,S760</td>
-<td class=b>'D4486'</td><td class=b>= VR330,D730</td>
-<td>'SX355'</td><td>= C2040Z</td>
+<td class=b>'D4490'</td><td class=b>= SP-610UZ</td>
+<td>'SX354'</td><td>= C3040Z</td>
 </tr><tr><td>'D4330'</td><td>= FE180/X745</td>
-<td class=b>'D4488'</td><td class=b>= VG110,D700</td>
-<td>'SX357'</td><td>= C700UZ</td>
+<td class=b>'D4492'</td><td class=b>= SZ-10</td>
+<td>'SX355'</td><td>= C2040Z</td>
 </tr><tr><td>'D4331'</td><td>= u1000/S1000</td>
-<td class=b>'D4490'</td><td class=b>= SP-610UZ</td>
-<td>'SX358'</td><td>= C200Z,D510Z</td>
+<td class=b>'D4494'</td><td class=b>= SZ-20</td>
+<td>'SX357'</td><td>= C700UZ</td>
 </tr><tr><td>'D4332'</td><td>= u770SW,S770SW</td>
-<td class=b>'D4492'</td><td class=b>= SZ-10</td>
-<td>'SX374'</td><td>= C3100Z,C3020Z</td>
+<td class=b>'D4496'</td><td class=b>= SZ-30MR</td>
+<td>'SX358'</td><td>= C200Z,D510Z</td>
 </tr><tr><td>'D4333'</td><td>= FE240/X795</td>
-<td class=b>'D4494'</td><td class=b>= SZ-20</td>
-<td>'SX552'</td><td>= C4040Z</td>
+<td class=b>'D4498'</td><td class=b>= SP-810UZ</td>
+<td>'SX374'</td><td>= C3100Z,C3020Z</td>
 </tr><tr><td>'D4334'</td><td>= FE210,X775</td>
-<td class=b>'D4496'</td><td class=b>= SZ-30MR</td>
-<td>'SX553'</td><td>= C40Z,D40Z</td>
+<td class=b>'D4500'</td><td class=b>= SZ-11</td>
+<td>'SX552'</td><td>= C4040Z</td>
 </tr><tr><td>'D4336'</td><td>= FE230/X790</td>
-<td class=b>'D4498'</td><td class=b>= SP-810UZ</td>
-<td>'SX556'</td><td>= C730UZ</td>
+<td class=b>'D4504'</td><td class=b>= TG-615</td>
+<td>'SX553'</td><td>= C40Z,D40Z</td>
 </tr><tr><td>'D4337'</td><td>= FE220,X785</td>
-<td class=b>'D4500'</td><td class=b>= SZ-11</td>
-<td>'SX558'</td><td>= C5050Z</td>
+<td class=b>'D4508'</td><td class=b>= TG-620</td>
+<td>'SX556'</td><td>= C730UZ</td>
 </tr><tr><td>'D4338'</td><td>= u725SW,S725SW</td>
-<td class=b>'D4504'</td><td class=b>= TG-615</td>
-<td>'SX571'</td><td>= C120,D380</td>
+<td class=b>'D4510'</td><td class=b>= TG-820</td>
+<td>'SX558'</td><td>= C5050Z</td>
 </tr><tr><td>'D4339'</td><td>= FE250/X800</td>
-<td class=b>'D4508'</td><td class=b>= TG-620</td>
-<td>'SX574'</td><td>= C300Z,D550Z</td>
+<td class=b>'D4512'</td><td class=b>= TG-1</td>
+<td>'SX571'</td><td>= C120,D380</td>
 </tr><tr><td>'D4341'</td><td>= u780,S780</td>
-<td class=b>'D4510'</td><td class=b>= TG-820</td>
-<td>'SX575'</td><td>= C4100Z,C4000Z</td>
+<td class=b>'D4516'</td><td class=b>= SH-21</td>
+<td>'SX574'</td><td>= C300Z,D550Z</td>
 </tr><tr><td>'D4343'</td><td>= u790SW,S790SW</td>
-<td class=b>'D4512'</td><td class=b>= TG-1</td>
-<td>'SX751'</td><td>= X200,D560Z,C350Z</td>
+<td class=b>'D4519'</td><td class=b>= SZ-14</td>
+<td>'SX575'</td><td>= C4100Z,C4000Z</td>
 </tr><tr><td>'D4344'</td><td>= u1020,S1020</td>
-<td class=b>'D4516'</td><td class=b>= SH-21</td>
-<td>'SX752'</td><td>= X300,D565Z,C450Z</td>
+<td class=b>'D4520'</td><td class=b>= SZ-31MR</td>
+<td>'SX751'</td><td>= X200,D560Z,C350Z</td>
 </tr><tr><td>'D4346'</td><td>= FE15,X10</td>
-<td class=b>'D4519'</td><td class=b>= SZ-14</td>
-<td>'SX753'</td><td>= C750UZ</td>
+<td class=b>'D4521'</td><td class=b>= SH-25MR</td>
+<td>'SX752'</td><td>= X300,D565Z,C450Z</td>
 </tr><tr><td>'D4348'</td><td>= FE280,X820,C520</td>
-<td class=b>'D4520'</td><td class=b>= SZ-31MR</td>
-<td>'SX754'</td><td>= C740UZ</td>
+<td class=b>'D4523'</td><td class=b>= SP-720UZ</td>
+<td>'SX753'</td><td>= C750UZ</td>
 </tr><tr><td>'D4349'</td><td>= FE300,X830</td>
-<td class=b>'D4521'</td><td class=b>= SH-25MR</td>
-<td>'SX755'</td><td>= C755UZ</td>
+<td class=b>'D4529'</td><td class=b>= VG170</td>
+<td>'SX754'</td><td>= C740UZ</td>
 </tr><tr><td>'D4350'</td><td>= u820,S820</td>
-<td class=b>'D4523'</td><td class=b>= SP-720UZ</td>
-<td>'SX756'</td><td>= C5060WZ</td>
+<td class=b>'D4531'</td><td class=b>= XZ-2</td>
+<td>'SX755'</td><td>= C755UZ</td>
 </tr><tr><td>'D4351'</td><td>= u1200,S1200</td>
-<td class=b>'D4529'</td><td class=b>= VG170</td>
-<td>'SX757'</td><td>= C8080WZ</td>
+<td class=b>'D4535'</td><td class=b>= SP-620UZ</td>
+<td>'SX756'</td><td>= C5060WZ</td>
 </tr><tr><td>'D4352'</td><td>= FE270,X815,C510</td>
-<td class=b>'D4531'</td><td class=b>= XZ-2</td>
-<td>'SX758'</td><td>= X350,D575Z,C360Z</td>
+<td class=b>'D4536'</td><td class=b>= TG-320</td>
+<td>'SX757'</td><td>= C8080WZ</td>
 </tr><tr><td>'D4353'</td><td>= u795SW,S795SW</td>
-<td class=b>'D4535'</td><td class=b>= SP-620UZ</td>
-<td>'SX759'</td><td>= X400,D580Z,C460Z</td>
+<td class=b>'D4537'</td><td class=b>= VR340,D750</td>
+<td>'SX758'</td><td>= X350,D575Z,C360Z</td>
 </tr><tr><td>'D4354'</td><td>= u1030SW,S1030SW</td>
-<td class=b>'D4536'</td><td class=b>= TG-320</td>
-<td>'SX75A'</td><td>= AZ-2ZOOM</td>
+<td class=b>'D4538'</td><td class=b>= VG160,X990,D745</td>
+<td>'SX759'</td><td>= X400,D580Z,C460Z</td>
 </tr><tr><td>'D4355'</td><td>= SP560UZ</td>
-<td class=b>'D4537'</td><td class=b>= VR340,D750</td>
-<td>'SX75B'</td><td>= D595Z,C500Z</td>
-</tr><tr><td>'D4356'</td><td>= u1010,S1010</td>
 <td class=b>'D4541'</td><td class=b>= SZ-12</td>
-<td>'SX75C'</td><td>= X550,D545Z,C480Z</td>
-</tr><tr><td>'D4357'</td><td>= u830,S830</td>
+<td>'SX75A'</td><td>= AZ-2ZOOM</td>
+</tr><tr><td>'D4356'</td><td>= u1010,S1010</td>
 <td class=b>'D4545'</td><td class=b>= VH410</td>
-<td>'SX75D'</td><td>= IR-300</td>
-</tr><tr><td>'D4359'</td><td>= u840,S840</td>
+<td>'SX75B'</td><td>= D595Z,C500Z</td>
+</tr><tr><td>'D4357'</td><td>= u830,S830</td>
 <td class=b>'D4546'</td><td class=b>= XZ-10</td>
-<td>'SX75F'</td><td>= C55Z,C5500Z</td>
-</tr><tr><td>'D4360'</td><td>= FE350WIDE,X865</td>
+<td>'SX75C'</td><td>= X550,D545Z,C480Z</td>
+</tr><tr><td>'D4359'</td><td>= u840,S840</td>
 <td class=b>'D4547'</td><td class=b>= TG-2</td>
-<td>'SX75G'</td><td>= C170,D425</td>
-</tr><tr><td>'D4361'</td><td>= u850SW,S850SW</td>
+<td>'SX75D'</td><td>= IR-300</td>
+</tr><tr><td>'D4360'</td><td>= FE350WIDE,X865</td>
 <td class=b>'D4548'</td><td class=b>= TG-830</td>
-<td>'SX75J'</td><td>= C180,D435</td>
-</tr><tr><td>'D4362'</td><td>= FE340,X855,C560</td>
+<td>'SX75F'</td><td>= C55Z,C5500Z</td>
+</tr><tr><td>'D4361'</td><td>= u850SW,S850SW</td>
 <td class=b>'D4549'</td><td class=b>= TG-630</td>
-<td>'SX771'</td><td>= C760UZ</td>
-</tr><tr><td>'D4363'</td><td>= FE320,X835,C540</td>
+<td>'SX75G'</td><td>= C170,D425</td>
+</tr><tr><td>'D4362'</td><td>= FE340,X855,C560</td>
 <td class=b>'D4550'</td><td class=b>= SH-50</td>
-<td>'SX772'</td><td>= C770UZ</td>
-</tr><tr><td>'D4364'</td><td>= SP570UZ</td>
+<td>'SX75J'</td><td>= C180,D435</td>
+</tr><tr><td>'D4363'</td><td>= FE320,X835,C540</td>
 <td class=b>'D4553'</td><td class=b>= SZ-16,DZ-105</td>
-<td>'SX773'</td><td>= C745UZ</td>
-</tr><tr><td>'D4366'</td><td>= FE330,X845,C550</td>
+<td>'SX771'</td><td>= C760UZ</td>
+</tr><tr><td>'D4364'</td><td>= SP570UZ</td>
 <td class=b>'D4562'</td><td class=b>= SP-820UZ</td>
-<td>'SX774'</td><td>= X250,D560Z,C350Z</td>
-</tr><tr><td>'D4368'</td><td>= FE310,X840,C530</td>
+<td>'SX772'</td><td>= C770UZ</td>
+</tr><tr><td>'D4366'</td><td>= FE330,X845,C550</td>
 <td class=b>'D4566'</td><td class=b>= SZ-15</td>
-<td>'SX775'</td><td>= X100,D540Z,C310Z</td>
-</tr><tr><td>'D4370'</td><td>= u1050SW,S1050SW</td>
+<td>'SX773'</td><td>= C745UZ</td>
+</tr><tr><td>'D4368'</td><td>= FE310,X840,C530</td>
 <td class=b>'D4572'</td><td class=b>= STYLUS1</td>
-<td>'SX776'</td><td>= C460ZdelSol</td>
+<td>'SX774'</td><td>= X250,D560Z,C350Z</td>
+</tr><tr><td>'D4370'</td><td>= u1050SW,S1050SW</td>
+<td class=b>'D4574'</td><td class=b>= TG-3</td>
+<td>'SX775'</td><td>= X100,D540Z,C310Z</td>
 </tr><tr><td>'D4371'</td><td>= u1060,S1060</td>
 <td class=b>'D4575'</td><td class=b>= TG-850</td>
-<td>'SX777'</td><td>= C765UZ</td>
+<td>'SX776'</td><td>= C460ZdelSol</td>
 </tr><tr><td>'D4372'</td><td>= FE370,X880,C575</td>
 <td class=b>'D4579'</td><td class=b>= SP-100EE</td>
-<td>'SX77A'</td><td>= D555Z,C315Z</td>
+<td>'SX777'</td><td>= C765UZ</td>
 </tr><tr><td>'D4374'</td><td>= SP565UZ</td>
+<td class=b>'D4580'</td><td class=b>= SH-60</td>
+<td>'SX77A'</td><td>= D555Z,C315Z</td>
+</tr><tr><td>'D4377'</td><td>= u1040,S1040</td>
 <td class=b>'D4581'</td><td class=b>= SH-1</td>
 <td>'SX851'</td><td>= C7070WZ</td>
-</tr><tr><td>'D4377'</td><td>= u1040,S1040</td>
-<td class=b>'D4809'</td><td class=b>= C2500L</td>
-<td>'SX852'</td><td>= C70Z,C7000Z</td>
 </tr><tr><td>'D4378'</td><td>= FE360,X875,C570</td>
-<td class=b>'D4842'</td><td class=b>= E-10</td>
-<td>'SX853'</td><td>= SP500UZ</td>
+<td class=b>'D4582'</td><td class=b>= TG-835</td>
+<td>'SX852'</td><td>= C70Z,C7000Z</td>
 </tr><tr><td>'D4379'</td><td>= FE20,X15,C25</td>
-<td class=b>'D4856'</td><td class=b>= C-1</td>
-<td>'SX854'</td><td>= SP310</td>
+<td class=b>'D4809'</td><td class=b>= C2500L</td>
+<td>'SX853'</td><td>= SP500UZ</td>
 </tr><tr><td>'D4380'</td><td>= uT6000,ST6000</td>
-<td class=b>'D4857'</td><td class=b>= C-1Z,D-150Z</td>
-<td>'SX855'</td><td>= SP350</td>
+<td class=b>'D4842'</td><td class=b>= E-10</td>
+<td>'SX854'</td><td>= SP310</td>
 </tr><tr><td>'D4381'</td><td>= uT8000,ST8000</td>
-<td class=b>'DCHC'</td><td class=b>= D500L</td>
-<td>'SX873'</td><td>= SP320</td>
+<td class=b>'D4856'</td><td class=b>= C-1</td>
+<td>'SX855'</td><td>= SP350</td>
 </tr><tr><td>'D4382'</td><td>= u9000,S9000</td>
-<td class=b>'DCHT'</td><td class=b>= D600L / D620L</td>
-<td>'SX875'</td><td>= FE180/X745</td>
+<td class=b>'D4857'</td><td class=b>= C-1Z,D-150Z</td>
+<td>'SX873'</td><td>= SP320</td>
 </tr><tr><td>'D4384'</td><td>= SP590UZ</td>
-<td class=b>'S0003'</td><td class=b>= E-330</td>
-<td>'SX876'</td><td>= FE190/X750</td>
+<td class=b>'DCHC'</td><td class=b>= D500L</td>
+<td>'SX875'</td><td>= FE180/X745</td>
 </tr><tr><td>'D4385'</td><td>= FE3010,X895</td>
+<td class=b>'DCHT'</td><td class=b>= D600L / D620L</td>
+<td>'SX876'</td><td>= FE190/X750</td>
+</tr><tr><td>'D4386'</td><td>= FE3000,X890</td>
+<td class=b>'S0003'</td><td class=b>= E-330</td>
+<td>&nbsp;</td><td>&nbsp;</td>
+</tr><tr><td>'D4387'</td><td>= FE35,X30</td>
 <td class=b>'S0004'</td><td class=b>= E-500</td>
 <td>&nbsp;</td><td>&nbsp;</td>
 </tr></table></td></tr></table></blockquote>
@@ -1275,8 +1281,10 @@ the Make and Model are used to identify the extender)</span>
 </tr><tr><td>'2 19 10'</td><td>= Lumix G Vario 14-140mm F3.5-5.6 Asph. Power OIS</td>
 </tr><tr><td>'2 20 10'</td><td>= Lumix G Vario 12-32mm F3.5-5.6 Asph. Mega OIS</td>
 </tr><tr><td>'2 21 10'</td><td>= Leica DG Nocticron 42.5mm F1.2 Asph. Power OIS</td>
+</tr><tr><td>'2 22 10'</td><td>= Leica DG Summilux 15mm F1.7 Asph.</td>
 </tr><tr><td>'3 01 00'</td><td>= Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph.</td>
 </tr><tr><td>'3 02 00'</td><td>= Leica D Summilux 25mm F1.4 Asph.</td>
+</tr><tr><td>'5 01 10'</td><td>= Tamron 14-150mm F3.5-5.8 Di III</td>
 </tr></table></td></tr></table></blockquote>
 
 <h2><a name='CameraSettings'>Olympus CameraSettings Tags</a></h2>
@@ -1361,7 +1369,7 @@ the Make and Model are used to identify the extender)</span>
   <br>1 = Sequential shooting AF
   <br>2 = Continuous AF
   <br>3 = Multi AF
-  <br>5 = Face detect
+  <br>4 = Face detect
   <br>10 = MF</td><td>&nbsp;&nbsp;</td></tr></table>
 <span class=s>[Value 1]</span><table class=cols><tr>
   <td>0x0 = (none)
@@ -2669,7 +2677,7 @@ information remains unknown.</p>
 </table></td></tr></table></blockquote>
 
 <h2><a name='RawInfo'>Olympus RawInfo Tags</a></h2>
-<p>These tags are found only in ORF images of some models (ie. C8080WZ).</p>
+<p>These tags are found only in ORF images of some models (eg. C8080WZ).</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
@@ -3421,7 +3429,7 @@ like the LS-5, LS-10, LS-11.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised May 10, 2014</i>
+<br><i>Last revised Sep 3, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -275,7 +275,7 @@ information is always created as compressed zTXt if Compress::Zlib is
 available, or tEXt otherwise.  Standard XMP is written as uncompressed iTXt.</p>
 
 <p>Alternate languages are accessed by suffixing the tag name with a &#39;-&#39;,
-followed by an RFC 3066 language code (ie. &quot;PNG:Comment-fr&quot;, or
+followed by an RFC 3066 language code (eg. &quot;PNG:Comment-fr&quot;, or
 &quot;Title-en-US&quot;).  See <a href="http://www.ietf.org/rfc/rfc3066.txt">http://www.ietf.org/rfc/rfc3066.txt</a> for the RFC 3066
 specification.</p>
 
@@ -437,6 +437,9 @@ image didn't already contain XMP)</span></td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='PhysicalPixel'>PNG PhysicalPixel Tags</a></h2>
+<p>These tags are found in the PNG pHYs chunk and belong to the PNG-pHYs family
+1 group.  They are all created together with default values if necessary
+when any of these tags is written, and may only be deleted as a group.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
@@ -445,19 +448,19 @@ image didn't already contain XMP)</span></td></tr>
 <tr>
 <td class=r title='0 = 0x0'>0</td>
 <td>PixelsPerUnitX</td>
-<td class=c>N</td>
+<td class=c>int32u</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
 <td class=r title='4 = 0x4'>4</td>
 <td>PixelsPerUnitY</td>
-<td class=c>N</td>
+<td class=c>int32u</td>
 <td>&nbsp;</td></tr>
 <tr>
 <td class=r title='8 = 0x8'>8</td>
 <td>PixelUnits</td>
-<td class=c>N</td>
+<td class=c>int8u</td>
 <td><span class=s>0 = Unknown
-  <br>1 = Meters</span></td></tr>
+  <br>1 = meters</span></td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='SubjectScale'>PNG SubjectScale Tags</a></h2>
@@ -470,8 +473,8 @@ image didn't already contain XMP)</span></td></tr>
 <td class=r title='0 = 0x0'>0</td>
 <td>SubjectUnits</td>
 <td class=c>N</td>
-<td><span class=s>1 = Meters
-  <br>2 = Radians</span></td></tr>
+<td><span class=s>1 = meters
+  <br>2 = radians</span></td></tr>
 <tr class=b>
 <td class=r title='1 = 0x1'>1</td>
 <td>SubjectPixelWidth</td>
@@ -523,7 +526,7 @@ image didn't already contain XMP)</span></td></tr>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Apr 21, 2014</i>
+<br><i>Last revised Jul 23, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -0,0 +1,388 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+        "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Palm Tags</title>
+<link rel=stylesheet type='text/css' href='style.css' title='Style'>
+</head>
+<body>
+<h2 class=top>Palm Tags</h2>
+<p>Information extracted from Palm database files (PDB and PRC extensions),
+Mobipocket electronic books (MOBI), and Amazon Kindle KF7 and KF8 books (AZW
+and AZW3).</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index4</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='0 = 0x0'>0</td>
+<td>DatabaseName</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='9 = 0x9'>9</td>
+<td>CreateDate</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td class=r title='10 = 0xa'>10</td>
+<td>ModifyDate</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='11 = 0xb'>11</td>
+<td>LastBackupDate</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td class=r title='12 = 0xc'>12</td>
+<td>ModificationNumber</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='15 = 0xf'>15</td>
+<td>PalmFileType</td>
+<td class=c>N</td>
+<td><table class=cols><tr>
+  <td>&#39;.pdfADBE&#39; = Adobe Reader
+  <br>&#39;BDOCWrdS&#39; = WordSmith
+  <br>&#39;BOOKMOBI&#39; = Mobipocket
+  <br>&#39;BVokBDIC&#39; = BDicty
+  <br>&#39;DATALSdb&#39; = LIST
+  <br>&#39;DB99DBOS&#39; = DB (Database program)
+  <br>&#39;DataPPrs&#39; = eReader
+  <br>&#39;DataPlkr&#39; = Plucker
+  <br>&#39;DataSprd&#39; = QuickSheet
+  <br>&#39;DataTlMl&#39; = TealMeal
+  <br>&#39;DataTlPt&#39; = TealPaint
+  <br>&#39;InfoINDB&#39; = InfoView
+  <br>&#39;InfoTlIf&#39; = TealInfo
+  <br>&#39;JbDbJBas&#39; = JFile
+  <br>&#39;JfDbJFil&#39; = JFile Pro
+  <br>&#39;Mdb1Mdb1&#39; = MobileDB
+  <br>&#39;PNRdPPrs&#39; = eReader
+  <br>&#39;PmDBPmDB&#39; = HanDBase
+  <br>&#39;SDocSilX&#39; = iSilo 3
+  <br>&#39;SM01SMem&#39; = SuperMemo
+  <br>&#39;TEXtREAd&#39; = PalmDOC
+  <br>&#39;TEXtTlDc&#39; = TealDoc
+  <br>&#39;TdatTide&#39; = Tides
+  <br>&#39;ToGoToGo&#39; = iSilo
+  <br>&#39;ToRaTRPW&#39; = TomeRaider
+  <br>&#39;dataTDBP&#39; = ThinkDB
+  <br>&#39;vIMGView&#39; = FireViewer (ImageViewer)
+  <br>&#39;zTXTGPlm&#39; = Weasel</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='MOBI'>Palm MOBI Tags</a></h2>
+<p>Information extracted from the MOBI header of Mobipocket and Amazon Kindle
+KF7 and KF8 files.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index4</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='0 = 0x0'>0</td>
+<td>Compression</td>
+<td class=c>N</td>
+<td><span class=s>1 = None
+  <br>2 = PalmDOC
+  <br>17480 = HUFF/CDIC</span></td></tr>
+<tr class=b>
+<td class=r title='1 = 0x1'>1</td>
+<td>UncompressedTextLength</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td class=r title='3 = 0x3'>3</td>
+<td>Encryption</td>
+<td class=c>N</td>
+<td><span class=s>0 = None
+  <br>1 = Old Mobipocket
+  <br>2 = Mobipocket</span></td></tr>
+<tr class=b>
+<td class=r title='6 = 0x6'>6</td>
+<td>MobiType</td>
+<td class=c>N</td>
+<td><table class=cols><tr>
+  <td>2 = Mobipocket Book
+  <br>3 = PalmDoc Book
+  <br>4 = Audio
+  <br>232 = mobipocket? generated by kindlegen1.2
+  <br>248 = KF8: generated by kindlegen2
+  <br>257 = News
+  <br>258 = News_Feed
+  <br>259 = News_Magazine
+  <br>513 = PICS
+  <br>514 = WORD
+  <br>515 = XLS
+  <br>516 = PPT
+  <br>517 = TEXT
+  <br>518 = HTML</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='7 = 0x7'>7</td>
+<td>CodePage</td>
+<td class=c>N</td>
+<td><span class=s>1252 = Windows Latin 1 (Western European)
+  <br>65001 = Unicode (UTF-8)</span></td></tr>
+<tr class=b>
+<td class=r title='9 = 0x9'>9</td>
+<td>MobiVersion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td class=r title='21 = 0x15'>21</td>
+<td>BookName</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='26 = 0x1a'>26</td>
+<td>MinimumVersion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='EXTH'>Palm EXTH Tags</a></h2>
+<p>Information extracted from the MOBI extended header.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td title='0x0001 = 1'>0x0001</td>
+<td>DRMServerID</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x0002 = 2'>0x0002</td>
+<td>DRMCommerceID</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x0003 = 3'>0x0003</td>
+<td>DRM_E-BookBaseID</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x0064 = 100'>0x0064</td>
+<td>Author</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x0065 = 101'>0x0065</td>
+<td>Publisher</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x0066 = 102'>0x0066</td>
+<td>Imprint</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x0067 = 103'>0x0067</td>
+<td>Description</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x0068 = 104'>0x0068</td>
+<td>ISBN</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x0069 = 105'>0x0069</td>
+<td>Subject</td>
+<td class=c title=' + = List'>N+</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x006a = 106'>0x006a</td>
+<td>PublishDate</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x006b = 107'>0x006b</td>
+<td>Review</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x006c = 108'>0x006c</td>
+<td>Contributor</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x006d = 109'>0x006d</td>
+<td>Rights</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x006e = 110'>0x006e</td>
+<td>SubjectCode</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x006f = 111'>0x006f</td>
+<td>BookType</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x0070 = 112'>0x0070</td>
+<td>Source</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x0071 = 113'>0x0071</td>
+<td>ASIN</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x0072 = 114'>0x0072</td>
+<td>BookVersion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x0073 = 115'>0x0073</td>
+<td>SampleFlag</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x0074 = 116'>0x0074</td>
+<td>StartReading</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x0075 = 117'>0x0075</td>
+<td>Adult</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x0076 = 118'>0x0076</td>
+<td>RetailPrice</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x0077 = 119'>0x0077</td>
+<td>RetailPriceCurrency</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x007d = 125'>0x007d</td>
+<td>ResourceCount</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x0081 = 129'>0x0081</td>
+<td>KF8CoverURI</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x00c8 = 200'>0x00c8</td>
+<td>DictionaryShortName</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x00cc = 204'>0x00cc</td>
+<td>CreatorSoftware</td>
+<td class=c>N</td>
+<td><span class=s>1 = Mobigen
+  <br>2 = Mobipocket
+  <br>200 = Kindlegen (Windows)
+  <br>201 = Kindlegen (Linux)
+  <br>202 = Kindlegen (Mac)</span></td></tr>
+<tr class=b>
+<td title='0x00cd = 205'>0x00cd</td>
+<td>CreatorMajorVersion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x00ce = 206'>0x00ce</td>
+<td>CreatorMinorVersion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x00cf = 207'>0x00cf</td>
+<td>CreatorBuildNumber</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x00d0 = 208'>0x00d0</td>
+<td>Watermark</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x00d1 = 209'>0x00d1</td>
+<td>Tamper-proofKeys</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x0191 = 401'>0x0191</td>
+<td>ClippingLimit</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x0192 = 402'>0x0192</td>
+<td>PublisherLimit</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x0194 = 404'>0x0194</td>
+<td>TextToSpeech</td>
+<td class=c>N</td>
+<td><span class=s>0 = Enabled
+  <br>1 = Disabled</span></td></tr>
+<tr class=b>
+<td title='0x0195 = 405'>0x0195</td>
+<td>RentalFlag</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x0196 = 406'>0x0196</td>
+<td>RentalExpirationDate</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x01f5 = 501'>0x01f5</td>
+<td>CDEType</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x01f6 = 502'>0x01f6</td>
+<td>LastUpdateTime</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x01f7 = 503'>0x01f7</td>
+<td>UpdatedTitle</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x01f8 = 504'>0x01f8</td>
+<td>ASIN2</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x020c = 524'>0x020c</td>
+<td>Language</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x020d = 525'>0x020d</td>
+<td>Alignment</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x0217 = 535'>0x0217</td>
+<td>CreatorBuildNumber2</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<hr>
+(This document generated automatically by Image::ExifTool::BuildTagLookup)
+<br><i>Last revised May 31, 2014</i>
+<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
+</body>
+</html>
@@ -296,8 +296,24 @@ L10 and LC80)</span></span><table class=cols><tr>
   <br>47 = Dynamic Mono
   <br>50 = Impressive Art
   <br>51 = Cross Process
+  <br>100 = High Dynamic 2
+  <br>101 = Retro 2
+  <br>102 = High Key 2
+  <br>103 = Low Key 2
+  <br>104 = Toy Effect 2
   <br>107 = Expressive 2
+  <br>112 = Sepia
+  <br>117 = Miniature
   <br>122 = Dynamic Monochrome
+  <br>127 = Old Days
+  <br>132 = Dynamic Monochrome 2
+  <br>135 = Impressive Art 2
+  <br>136 = Cross Process 2
+  <br>137 = Toy Pop
+  <br>138 = Fantasy
+  <br>256 = Normal 3
+  <br>272 = Standard
+  <br>288 = High
   <br><span class=n>(these values are used by the TZ10 and ZS7)</span>
   <br>0 = Normal
   <br>1 = -2
@@ -583,7 +599,7 @@ L10 and LC80)</span></span><table class=cols><tr>
 <td title='0x006d = 109'>0x006d</td>
 <td>City</td>
 <td class=c>undef</td>
-<td>&nbsp;</td></tr>
+<td><span class=s><span class=n>(City/Town as stored by some models, or County/Township for others)</span></span></td></tr>
 <tr>
 <td title='0x006f = 111'>0x006f</td>
 <td>Landmark</td>
@@ -618,11 +634,16 @@ L10 and LC80)</span></span><table class=cols><tr>
 <td><span class=s>0 = Off
   <br>1 = On</span></td></tr>
 <tr class=b>
+<td title='0x0080 = 128'>0x0080</td>
+<td>City2</td>
+<td class=c>undef</td>
+<td><span class=s><span class=n>(City/Town/Village as stored by some models)</span></span></td></tr>
+<tr>
 <td title='0x0086 = 134'>0x0086</td>
 <td>ManometerPressure</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x0089 = 137'>0x0089</td>
 <td>PhotoStyle</td>
 <td class=c>int16u</td>
@@ -635,28 +656,28 @@ L10 and LC80)</span></span><table class=cols><tr>
   <br>5 = Scenery
   <br>6 = Portrait</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0x008a = 138'>0x008a</td>
 <td>ShadingCompensation</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Off
   <br>1 = On</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x008c = 140'>0x008c</td>
 <td>AccelerometerZ</td>
 <td class=c>int16u</td>
 <td><span class=s><span class=n>(positive is acceleration upwards)</span></span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x008d = 141'>0x008d</td>
 <td>AccelerometerX</td>
 <td class=c>int16u</td>
 <td><span class=s><span class=n>(positive is acceleration to the left)</span></span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x008e = 142'>0x008e</td>
 <td>AccelerometerY</td>
 <td class=c>int16u</td>
 <td><span class=s><span class=n>(positive is acceleration backwards)</span></span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x008f = 143'>0x008f</td>
 <td>CameraOrientation</td>
 <td class=c>int8u</td>
@@ -668,17 +689,17 @@ L10 and LC80)</span></span><table class=cols><tr>
   <br>4 = Tilt Upwards
   <br>5 = Tilt Downwards</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0x0090 = 144'>0x0090</td>
 <td>RollAngle</td>
 <td class=c>int16u</td>
 <td><span class=s><span class=n>(degrees of clockwise camera rotation)</span></span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x0091 = 145'>0x0091</td>
 <td>PitchAngle</td>
 <td class=c>int16u</td>
 <td><span class=s><span class=n>(degrees of upward camera tilt)</span></span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x0093 = 147'>0x0093</td>
 <td>SweepPanoramaDirection</td>
 <td class=c>int8u</td>
@@ -687,24 +708,24 @@ L10 and LC80)</span></span><table class=cols><tr>
   <br>2 = Right to Left
   <br>3 = Top to Bottom
   <br>4 = Bottom to Top</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x0094 = 148'>0x0094</td>
 <td>SweepPanoramaFieldOfView</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x0096 = 150'>0x0096</td>
 <td>TimerRecording</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = Off
   <br>1 = Time Lapse
   <br>2 = Stop-motion Animation</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x009d = 157'>0x009d</td>
 <td>InternalNDFilter</td>
 <td class=c>rational64u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x009e = 158'>0x009e</td>
 <td>HDR</td>
 <td class=c>int16u</td>
@@ -717,35 +738,35 @@ L10 and LC80)</span></span><table class=cols><tr>
   <br>32968 = 2 EV (Auto)
   <br>33068 = 3 EV (Auto)</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0x009f = 159'>0x009f</td>
 <td>ShutterType</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Mechanical
   <br>1 = Electronic
   <br>2 = Hybrid</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x00a3 = 163'>0x00a3</td>
 <td>ClearRetouchValue</td>
 <td class=c>rational64u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x00ab = 171'>0x00ab</td>
 <td>TouchAE</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Off
   <br>1 = On</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x0e00 = 3584'>0x0e00</td>
 <td>PrintIM</td>
 <td class=c>-</td>
 <td>--&gt; <a href='PrintIM.html'>PrintIM Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x8000 = 32768'>0x8000</td>
 <td>MakerNoteVersion</td>
 <td class=c>undef</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x8001 = 32769'>0x8001</td>
 <td>SceneMode</td>
 <td class=c>int16u</td>
@@ -829,45 +850,45 @@ L10 and LC80)</span></span><table class=cols><tr>
   <br>89 = Monochrome
   <br>90 = Creative Control</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0x8004 = 32772'>0x8004</td>
 <td>WBRedLevel</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x8005 = 32773'>0x8005</td>
 <td>WBGreenLevel</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x8006 = 32774'>0x8006</td>
 <td>WBBlueLevel</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x8007 = 32775'>0x8007</td>
 <td>FlashFired</td>
 <td class=c>int16u</td>
 <td><span class=s>1 = No
   <br>2 = Yes</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x8008 = 32776'>0x8008</td>
 <td>TextStamp</td>
 <td class=c>int16u</td>
 <td><span class=s>1 = Off
   <br>2 = On</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x8009 = 32777'>0x8009</td>
 <td>TextStamp</td>
 <td class=c>int16u</td>
 <td><span class=s>1 = Off
   <br>2 = On</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x8010 = 32784'>0x8010</td>
 <td>BabyAge</td>
 <td class=c>string</td>
 <td><span class=s><span class=n>(or pet age)</span></span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x8012 = 32786'>0x8012</td>
 <td>Transform</td>
 <td class=c>undef[4]</td>
@@ -1480,18 +1501,48 @@ iPalm.</p>
 </table></td></tr></table></blockquote>
 
 <h2><a name='PANA'>Panasonic PANA Tags</a></h2>
-<p>Tags extracted from the PANA user data found in MP4 videos from models such
-as the DMC-FT20.</p>
+<p>Tags extracted from the PANA and LEIC user data found in MP4 videos from
+various Panasonic and Leica models.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
 <tr class=h><th>Index1</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
+<td class=r title='0 = 0x0'>0</td>
+<td>Make</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
 <td class=r title='4 = 0x4'>4</td>
 <td>Model</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
+<tr>
+<td class=r title='12 = 0xc'>12</td>
+<td>Model</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='22 = 0x16'>22</td>
+<td>Model</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td class=r title='52 = 0x34'>52</td>
+<td>Version1</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='62 = 0x3e'>62</td>
+<td>Version2</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td class=r title='80 = 0x50'>80</td>
+<td>MakerNoteLeica5</td>
+<td class=c>-</td>
+<td>--&gt; <a href='Panasonic.html#Leica5'>Panasonic Leica5 Tags</a></td></tr>
 <tr class=b>
 <td class=r title='88 = 0x58'>88</td>
 <td>ThumbnailWidth</td>
@@ -1528,10 +1579,35 @@ as the DMC-FT20.</p>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
+<td class=r title='1358 = 0x54e'>1358</td>
+<td>ThumbnailWidth</td>
+<td class=c>N</td>
+<td><span class=s><span class=n>(Leica X Vario)</span></span></td></tr>
+<tr class=b>
+<td class=r title='1362 = 0x552'>1362</td>
+<td>ThumbnailHeight</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td class=r title='1366 = 0x556'>1366</td>
+<td>ThumbnailLength</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='1374 = 0x55e'>1374</td>
+<td>ThumbnailImage</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
 <td class=r title='16488 = 0x4068'>16488</td>
 <td>ExifData</td>
 <td class=c>-</td>
 <td>--&gt; <a href='EXIF.html'>EXIF Tags</a></td></tr>
+<tr class=b>
+<td class=r title='16512 = 0x4080'>16512</td>
+<td>ExifData</td>
+<td class=c>-</td>
+<td>--&gt; <a href='EXIF.html'>EXIF Tags</a></td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='AdvancedSceneMode'>Panasonic AdvancedSceneMode Values</a></h2>
@@ -1602,7 +1678,7 @@ as the DMC-FT20.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Apr 28, 2014</i>
+<br><i>Last revised Aug 22, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -233,7 +233,8 @@ different from other models)</span>
 <td title='0x000e = 14'>0x000e</td>
 <td>AFPointSelected</td>
 <td class=c>int16u</td>
-<td><span class=s>[Value 0]</span><table class=cols><tr>
+<td><span class=s><span class=n>(all models but the K-3)</span>
+  <br>[Value 0]</span><table class=cols><tr>
   <td>0 = None
   <br>1 = Upper-left
   <br>2 = Top
@@ -251,7 +252,8 @@ different from other models)</span>
   <br>65533 = Automatic Tracking AF
   <br>65534 = Fixed Center
   <br>65535 = Auto</td><td>&nbsp;&nbsp;</td></tr></table>
-<span class=s>[Value 0]</span><table class=cols><tr>
+<span class=s><span class=n>(K-3)</span>
+  <br>[Value 0]</span><table class=cols><tr>
   <td>0 = None
   <br>1 = Top-left
   <br>2 = Top Near-left
@@ -260,7 +262,7 @@ different from other models)</span>
   <br>5 = Top-right
   <br>6 = Upper-left
   <br>7 = Upper Near-left
-  <br>8 = Upper-midle
+  <br>8 = Upper-middle
   <br>9 = Upper Near-right
   <br>10 = Upper-right
   <br>11 = Far Left
@@ -268,8 +270,8 @@ different from other models)</span>
   <br>13 = Near-left
   <br>14 = Center
   <br>15 = Near-right
-  <br>16 = Right</td><td>&nbsp;&nbsp;</td>
-  <td>17 = Far Right
+  <br>16 = Right
+  <br>17 = Far Right
   <br>18 = Lower-left
   <br>19 = Lower Near-left
   <br>20 = Lower-middle
@@ -280,11 +282,43 @@ different from other models)</span>
   <br>25 = Bottom
   <br>26 = Bottom Near-right
   <br>27 = Bottom-right
+  <br>257 = Zone Select Top-left
+  <br>258 = Zone Select Top Near-left</td><td>&nbsp;&nbsp;</td>
+  <td>259 = Zone Select Top
+  <br>260 = Zone Select Top Near-right
+  <br>261 = Zone Select Top-right
+  <br>262 = Zone Select Upper-left
+  <br>263 = Zone Select Upper Near-left
+  <br>264 = Zone Select Upper-middle
+  <br>265 = Zone Select Upper Near-right
+  <br>266 = Zone Select Upper-right
+  <br>267 = Zone Select Far Left
+  <br>268 = Zone Select Left
+  <br>269 = Zone Select Near-left
+  <br>270 = Zone Select Center
+  <br>271 = Zone Select Near-right
+  <br>272 = Zone Select Right
+  <br>273 = Zone Select Far Right
+  <br>274 = Zone Select Lower-left
+  <br>275 = Zone Select Lower Near-left
+  <br>276 = Zone Select Lower-middle
+  <br>277 = Zone Select Lower Near-right
+  <br>278 = Zone Select Lower-right
+  <br>279 = Zone Select Bottom-left
+  <br>280 = Zone Select Bottom Near-left
+  <br>281 = Zone Select Bottom
+  <br>282 = Zone Select Bottom Near-right
+  <br>283 = Zone Select Bottom-right
   <br>65531 = AF Select
   <br>65532 = Face Detect AF
   <br>65533 = Automatic Tracking AF
   <br>65534 = Fixed Center
   <br>65535 = Auto</td><td>&nbsp;&nbsp;</td></tr></table>
+<span class=s>[Value 1]</span><table class=cols><tr>
+  <td>0 = Single Point
+  <br>1 = Expanded Area 9-point (S)</td><td>&nbsp;&nbsp;</td>
+  <td>3 = Expanded Area 25-point (M)
+  <br>5 = Expanded Area 27-point (L)</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
 <tr>
 <td title='0x000f = 15'>0x000f</td>
@@ -312,7 +346,7 @@ different from other models)</span>
   <br>Bit 4 = Top-right
   <br>Bit 5 = Upper-left
   <br>Bit 6 = Upper Near-left
-  <br>Bit 7 = Upper-midle
+  <br>Bit 7 = Upper-middle
   <br>Bit 8 = Upper Near-right
   <br>Bit 9 = Upper-right
   <br>Bit 10 = Far Left
@@ -418,7 +452,7 @@ different from other models)</span>
 <td>LightReading</td>
 <td class=c>int16u</td>
 <td><span class=s><span class=n>(calibrated differently for different models.  For the Optio WP, add 6 to get
-approximate Light Value.  May not be valid for some models, ie. Optio S)</span></span></td></tr>
+approximate Light Value.  May not be valid for some models, eg. Optio S)</span></span></td></tr>
 <tr>
 <td title='0x0016 = 22'>0x0016</td>
 <td>ExposureCompensation</td>
@@ -1222,7 +1256,8 @@ other models)</span>
 <td>AEMeteringSegments</td>
 <td class=c>int8u[n]</td>
 <td><span class=s><span class=n>(measurements from each of the 16 AE metering segments for models such as the
-K10D, and 77 metering segments for models such as the K-5, converted to LV)</span></span></td></tr>
+K10D, 77 metering segments for models such as the K-5, and 4050 metering
+segments for the K-3, converted to LV)</span></span></td></tr>
 <tr class=b>
 <td title='0x020a = 522'>0x020a</td>
 <td>FlashMeteringSegments</td>
@@ -1419,131 +1454,134 @@ are left, top, width and height in a 720x480 frame, with Y downwards)</span></sp
 <table class='inner sep' cellspacing=1>
 <tr class=h><th>Value</th><th>PentaxModelID</th><th>Value</th><th>PentaxModelID</th><th>Value</th><th>PentaxModelID</th></tr>
 <tr><td class=r>0xd</td><td>= Optio 330/430</td>
-<td class='r b'>0x12bb0</td><td class=b>= Optio T10/T20</td>
-<td class=r>0x12db8</td><td>= K-7</td>
-</tr><tr><td class=r>0x12926</td><td>= Optio 230</td>
 <td class='r b'>0x12be2</td><td class=b>= Optio W10</td>
-<td class=r>0x12dcc</td><td>= Optio W80</td>
-</tr><tr><td class=r>0x12958</td><td>= Optio 330GS</td>
-<td class='r b'>0x12bf6</td><td class=b>= Optio M10</td>
 <td class=r>0x12dea</td><td>= Optio P80</td>
-</tr><tr><td class=r>0x12962</td><td>= Optio 450/550</td>
-<td class='r b'>0x12c1e</td><td class=b>= K10D</td>
+</tr><tr><td class=r>0x12926</td><td>= Optio 230</td>
+<td class='r b'>0x12bf6</td><td class=b>= Optio M10</td>
 <td class=r>0x12df4</td><td>= Optio WS80</td>
-</tr><tr><td class=r>0x1296c</td><td>= Optio S</td>
-<td class='r b'>0x12c20</td><td class=b>= Samsung GX10</td>
+</tr><tr><td class=r>0x12958</td><td>= Optio 330GS</td>
+<td class='r b'>0x12c1e</td><td class=b>= K10D</td>
 <td class=r>0x12dfe</td><td>= K-x</td>
-</tr><tr><td class=r>0x12971</td><td>= Optio S V1.01</td>
-<td class='r b'>0x12c28</td><td class=b>= Optio S7</td>
+</tr><tr><td class=r>0x12962</td><td>= Optio 450/550</td>
+<td class='r b'>0x12c20</td><td class=b>= Samsung GX10</td>
 <td class=r>0x12e08</td><td>= 645D</td>
-</tr><tr><td class=r>0x12994</td><td>= *ist D</td>
-<td class='r b'>0x12c2d</td><td class=b>= Optio L20</td>
+</tr><tr><td class=r>0x1296c</td><td>= Optio S</td>
+<td class='r b'>0x12c28</td><td class=b>= Optio S7</td>
 <td class=r>0x12e12</td><td>= Optio E80</td>
-</tr><tr><td class=r>0x129b2</td><td>= Optio 33L</td>
-<td class='r b'>0x12c32</td><td class=b>= Optio M20</td>
+</tr><tr><td class=r>0x12971</td><td>= Optio S V1.01</td>
+<td class='r b'>0x12c2d</td><td class=b>= Optio L20</td>
 <td class=r>0x12e30</td><td>= Optio W90</td>
-</tr><tr><td class=r>0x129bc</td><td>= Optio 33LF</td>
-<td class='r b'>0x12c3c</td><td class=b>= Optio W20</td>
+</tr><tr><td class=r>0x12994</td><td>= *ist D</td>
+<td class='r b'>0x12c32</td><td class=b>= Optio M20</td>
 <td class=r>0x12e3a</td><td>= Optio I-10</td>
-</tr><tr><td class=r>0x129c6</td><td>= Optio 33WR/43WR/555</td>
-<td class='r b'>0x12c46</td><td class=b>= Optio A20</td>
+</tr><tr><td class=r>0x129b2</td><td>= Optio 33L</td>
+<td class='r b'>0x12c3c</td><td class=b>= Optio W20</td>
 <td class=r>0x12e44</td><td>= Optio H90</td>
-</tr><tr><td class=r>0x129d5</td><td>= Optio S4</td>
-<td class='r b'>0x12c78</td><td class=b>= Optio E30</td>
+</tr><tr><td class=r>0x129bc</td><td>= Optio 33LF</td>
+<td class='r b'>0x12c46</td><td class=b>= Optio A20</td>
 <td class=r>0x12e4e</td><td>= Optio E90</td>
-</tr><tr><td class=r>0x12a02</td><td>= Optio MX</td>
-<td class='r b'>0x12c7d</td><td class=b>= Optio E35</td>
+</tr><tr><td class=r>0x129c6</td><td>= Optio 33WR/43WR/555</td>
+<td class='r b'>0x12c78</td><td class=b>= Optio E30</td>
 <td class=r>0x12e58</td><td>= X90</td>
-</tr><tr><td class=r>0x12a0c</td><td>= Optio S40</td>
-<td class='r b'>0x12c82</td><td class=b>= Optio T30</td>
+</tr><tr><td class=r>0x129d5</td><td>= Optio S4</td>
+<td class='r b'>0x12c7d</td><td class=b>= Optio E35</td>
 <td class=r>0x12e6c</td><td>= K-r</td>
-</tr><tr><td class=r>0x12a16</td><td>= Optio S4i</td>
-<td class='r b'>0x12c8c</td><td class=b>= Optio M30</td>
+</tr><tr><td class=r>0x12a02</td><td>= Optio MX</td>
+<td class='r b'>0x12c82</td><td class=b>= Optio T30</td>
 <td class=r>0x12e76</td><td>= K-5</td>
-</tr><tr><td class=r>0x12a34</td><td>= Optio 30</td>
-<td class='r b'>0x12c91</td><td class=b>= Optio L30</td>
+</tr><tr><td class=r>0x12a0c</td><td>= Optio S40</td>
+<td class='r b'>0x12c8c</td><td class=b>= Optio M30</td>
 <td class=r>0x12e8a</td><td>= Optio RS1000/RS1500</td>
-</tr><tr><td class=r>0x12a52</td><td>= Optio S30</td>
-<td class='r b'>0x12c96</td><td class=b>= Optio W30</td>
+</tr><tr><td class=r>0x12a16</td><td>= Optio S4i</td>
+<td class='r b'>0x12c91</td><td class=b>= Optio L30</td>
 <td class=r>0x12e94</td><td>= Optio RZ10</td>
-</tr><tr><td class=r>0x12a66</td><td>= Optio 750Z</td>
-<td class='r b'>0x12ca0</td><td class=b>= Optio A30</td>
+</tr><tr><td class=r>0x12a34</td><td>= Optio 30</td>
+<td class='r b'>0x12c96</td><td class=b>= Optio W30</td>
 <td class=r>0x12e9e</td><td>= Optio LS1000</td>
-</tr><tr><td class=r>0x12a70</td><td>= Optio SV</td>
-<td class='r b'>0x12cb4</td><td class=b>= Optio E40</td>
+</tr><tr><td class=r>0x12a52</td><td>= Optio S30</td>
+<td class='r b'>0x12ca0</td><td class=b>= Optio A30</td>
 <td class=r>0x12ebc</td><td>= Optio WG-1 GPS</td>
-</tr><tr><td class=r>0x12a75</td><td>= Optio SVi</td>
-<td class='r b'>0x12cbe</td><td class=b>= Optio M40</td>
+</tr><tr><td class=r>0x12a66</td><td>= Optio 750Z</td>
+<td class='r b'>0x12cb4</td><td class=b>= Optio E40</td>
 <td class=r>0x12ed0</td><td>= Optio S1</td>
-</tr><tr><td class=r>0x12a7a</td><td>= Optio X</td>
-<td class='r b'>0x12cc3</td><td class=b>= Optio L40</td>
+</tr><tr><td class=r>0x12a70</td><td>= Optio SV</td>
+<td class='r b'>0x12cbe</td><td class=b>= Optio M40</td>
 <td class=r>0x12ee4</td><td>= Q</td>
-</tr><tr><td class=r>0x12a8e</td><td>= Optio S5i</td>
-<td class='r b'>0x12cc5</td><td class=b>= Optio L36</td>
+</tr><tr><td class=r>0x12a75</td><td>= Optio SVi</td>
+<td class='r b'>0x12cc3</td><td class=b>= Optio L40</td>
 <td class=r>0x12ef8</td><td>= K-01</td>
-</tr><tr><td class=r>0x12a98</td><td>= Optio S50</td>
-<td class='r b'>0x12cc8</td><td class=b>= Optio Z10</td>
+</tr><tr><td class=r>0x12a7a</td><td>= Optio X</td>
+<td class='r b'>0x12cc5</td><td class=b>= Optio L36</td>
 <td class=r>0x12f0c</td><td>= Optio RZ18</td>
-</tr><tr><td class=r>0x12aa2</td><td>= *ist DS</td>
-<td class='r b'>0x12cd2</td><td class=b>= K20D</td>
+</tr><tr><td class=r>0x12a8e</td><td>= Optio S5i</td>
+<td class='r b'>0x12cc8</td><td class=b>= Optio Z10</td>
 <td class=r>0x12f16</td><td>= Optio VS20</td>
-</tr><tr><td class=r>0x12ab6</td><td>= Optio MX4</td>
-<td class='r b'>0x12cd4</td><td class=b>= Samsung GX20</td>
+</tr><tr><td class=r>0x12a98</td><td>= Optio S50</td>
+<td class='r b'>0x12cd2</td><td class=b>= K20D</td>
 <td class=r>0x12f2a</td><td>= Optio WG-2 GPS</td>
-</tr><tr><td class=r>0x12ac0</td><td>= Optio S5n</td>
-<td class='r b'>0x12cdc</td><td class=b>= Optio S10</td>
+</tr><tr><td class=r>0x12aa2</td><td>= *ist DS</td>
+<td class='r b'>0x12cd4</td><td class=b>= Samsung GX20</td>
 <td class=r>0x12f48</td><td>= Optio LS465</td>
-</tr><tr><td class=r>0x12aca</td><td>= Optio WP</td>
-<td class='r b'>0x12ce6</td><td class=b>= Optio A40</td>
+</tr><tr><td class=r>0x12ab6</td><td>= Optio MX4</td>
+<td class='r b'>0x12cdc</td><td class=b>= Optio S10</td>
 <td class=r>0x12f52</td><td>= K-30</td>
-</tr><tr><td class=r>0x12afc</td><td>= Optio S55</td>
-<td class='r b'>0x12cf0</td><td class=b>= Optio V10</td>
+</tr><tr><td class=r>0x12ac0</td><td>= Optio S5n</td>
+<td class='r b'>0x12ce6</td><td class=b>= Optio A40</td>
 <td class=r>0x12f5c</td><td>= X-5</td>
-</tr><tr><td class=r>0x12b10</td><td>= Optio S5z</td>
-<td class='r b'>0x12cfa</td><td class=b>= K200D</td>
+</tr><tr><td class=r>0x12aca</td><td>= Optio WP</td>
+<td class='r b'>0x12cf0</td><td class=b>= Optio V10</td>
 <td class=r>0x12f66</td><td>= Q10</td>
-</tr><tr><td class=r>0x12b1a</td><td>= *ist DL</td>
-<td class='r b'>0x12d04</td><td class=b>= Optio S12</td>
+</tr><tr><td class=r>0x12afc</td><td>= Optio S55</td>
+<td class='r b'>0x12cfa</td><td class=b>= K200D</td>
 <td class=r>0x12f70</td><td>= K-5 II</td>
-</tr><tr><td class=r>0x12b24</td><td>= Optio S60</td>
-<td class='r b'>0x12d0e</td><td class=b>= Optio E50</td>
+</tr><tr><td class=r>0x12b10</td><td>= Optio S5z</td>
+<td class='r b'>0x12d04</td><td class=b>= Optio S12</td>
 <td class=r>0x12f71</td><td>= K-5 II s</td>
-</tr><tr><td class=r>0x12b2e</td><td>= Optio S45</td>
-<td class='r b'>0x12d18</td><td class=b>= Optio M50</td>
+</tr><tr><td class=r>0x12b1a</td><td>= *ist DL</td>
+<td class='r b'>0x12d0e</td><td class=b>= Optio E50</td>
 <td class=r>0x12f7a</td><td>= Q7</td>
-</tr><tr><td class=r>0x12b38</td><td>= Optio S6</td>
-<td class='r b'>0x12d22</td><td class=b>= Optio L50</td>
+</tr><tr><td class=r>0x12b24</td><td>= Optio S60</td>
+<td class='r b'>0x12d18</td><td class=b>= Optio M50</td>
 <td class=r>0x12f84</td><td>= MX-1</td>
-</tr><tr><td class=r>0x12b4c</td><td>= Optio WPi</td>
-<td class='r b'>0x12d2c</td><td class=b>= Optio V20</td>
+</tr><tr><td class=r>0x12b2e</td><td>= Optio S45</td>
+<td class='r b'>0x12d22</td><td class=b>= Optio L50</td>
 <td class=r>0x12f8e</td><td>= WG-3 GPS</td>
-</tr><tr><td class=r>0x12b56</td><td>= BenQ DC X600</td>
-<td class='r b'>0x12d40</td><td class=b>= Optio W60</td>
+</tr><tr><td class=r>0x12b38</td><td>= Optio S6</td>
+<td class='r b'>0x12d2c</td><td class=b>= Optio V20</td>
 <td class=r>0x12f98</td><td>= WG-3</td>
-</tr><tr><td class=r>0x12b60</td><td>= *ist DS2</td>
-<td class='r b'>0x12d4a</td><td class=b>= Optio M60</td>
+</tr><tr><td class=r>0x12b4c</td><td>= Optio WPi</td>
+<td class='r b'>0x12d40</td><td class=b>= Optio W60</td>
 <td class=r>0x12fa2</td><td>= WG-10</td>
-</tr><tr><td class=r>0x12b62</td><td>= Samsung GX-1S</td>
-<td class='r b'>0x12d68</td><td class=b>= Optio E60/M90</td>
+</tr><tr><td class=r>0x12b56</td><td>= BenQ DC X600</td>
+<td class='r b'>0x12d4a</td><td class=b>= Optio M60</td>
 <td class=r>0x12fb6</td><td>= K-50</td>
-</tr><tr><td class=r>0x12b6a</td><td>= Optio A10</td>
-<td class='r b'>0x12d72</td><td class=b>= K2000</td>
+</tr><tr><td class=r>0x12b60</td><td>= *ist DS2</td>
+<td class='r b'>0x12d68</td><td class=b>= Optio E60/M90</td>
 <td class=r>0x12fc0</td><td>= K-3</td>
-</tr><tr><td class=r>0x12b7e</td><td>= *ist DL2</td>
-<td class='r b'>0x12d73</td><td class=b>= K-m</td>
+</tr><tr><td class=r>0x12b62</td><td>= Samsung GX-1S</td>
+<td class='r b'>0x12d72</td><td class=b>= K2000</td>
 <td class=r>0x12fca</td><td>= K-500</td>
-</tr><tr><td class=r>0x12b80</td><td>= Samsung GX-1L</td>
-<td class='r b'>0x12d86</td><td class=b>= Optio P70</td>
+</tr><tr><td class=r>0x12b6a</td><td>= Optio A10</td>
+<td class='r b'>0x12d73</td><td class=b>= K-m</td>
 <td class=r>0x12fde</td><td>= WG-4 GPS</td>
-</tr><tr><td class=r>0x12b9c</td><td>= K100D</td>
-<td class='r b'>0x12d90</td><td class=b>= Optio L70</td>
+</tr><tr><td class=r>0x12b7e</td><td>= *ist DL2</td>
+<td class='r b'>0x12d86</td><td class=b>= Optio P70</td>
 <td class=r>0x12fe8</td><td>= WG-4</td>
-</tr><tr><td class=r>0x12b9d</td><td>= K110D</td>
-<td class='r b'>0x12d9a</td><td class=b>= Optio E70</td>
+</tr><tr><td class=r>0x12b80</td><td>= Samsung GX-1L</td>
+<td class='r b'>0x12d90</td><td class=b>= Optio L70</td>
 <td class=r>0x13006</td><td>= WG-20</td>
-</tr><tr><td class=r>0x12ba2</td><td>= K100D Super</td>
-<td class='r b'>0x12dae</td><td class=b>= X70</td>
+</tr><tr><td class=r>0x12b9c</td><td>= K100D</td>
+<td class='r b'>0x12d9a</td><td class=b>= Optio E70</td>
 <td class=r>0x13010</td><td>= 645Z</td>
+</tr><tr><td class=r>0x12b9d</td><td>= K110D</td>
+<td class='r b'>0x12dae</td><td class=b>= X70</td>
+<td class=r>0x1301a</td><td>= K-S1</td>
+</tr><tr><td class=r>0x12ba2</td><td>= K100D Super</td>
+<td class='r b'>0x12db8</td><td class=b>= K-7</td>
+<td class=r>&nbsp;</td><td>&nbsp;</td>
+</tr><tr><td class=r>0x12bb0</td><td>= Optio T10/T20</td>
+<td class='r b'>0x12dcc</td><td class=b>= Optio W80</td>
+<td class=r>&nbsp;</td><td>&nbsp;</td>
 </tr></table></td></tr></table></blockquote>
 
 <h2><a name='City'>Pentax City Values</a></h2>
@@ -1876,6 +1914,7 @@ identify the specific lens model.</p>
 </tr><tr><td>'8 28'</td><td>= Sigma 18-250mm F3.5-6.3 DC Macro HSM</td>
 </tr><tr><td>'8 29'</td><td>= Sigma 35mm F1.4 DG HSM</td>
 </tr><tr><td>'8 30'</td><td>= Sigma 17-70mm F2.8-4 DC Macro HSM Contemporary</td>
+</tr><tr><td>'8 31'</td><td>= Sigma 18-35mm F1.8 DC HSM</td>
 </tr><tr><td>'8 32'</td><td>= Sigma 30mm F1.4 DC HSM | A</td>
 </tr><tr><td>'8 209'</td><td>= HD PENTAX-DA 20-40mm F2.8-4 ED Limited DC WR</td>
 </tr><tr><td>'8 210'</td><td>= smc PENTAX-DA 18-270mm F3.5-6.3 ED SDM</td>
@@ -1914,6 +1953,7 @@ identify the specific lens model.</p>
 </tr><tr><td>'13 18'</td><td>= smc PENTAX-D FA 645 55mm F2.8 AL [IF] SDM AW</td>
 </tr><tr><td>'13 19'</td><td>= smc PENTAX-D FA 645 25mm F4 AL [IF] SDM AW</td>
 </tr><tr><td>'13 20'</td><td>= HD PENTAX-D FA 645 90mm F2.8 ED AW SR</td>
+</tr><tr><td>'13 253'</td><td>= HD PENTAX-DA 645 28-45mm F4.5 ED AW SR</td>
 </tr><tr><td>'21 0'</td><td>= Pentax Q Manual Lens</td>
 </tr><tr><td>'21 1'</td><td>= 01 Standard Prime 8.5mm F1.9</td>
 </tr><tr><td>'21 2'</td><td>= 02 Standard Zoom 5-15mm F2.8-4.5</td>
@@ -2181,7 +2221,7 @@ with positive Y downwards)</span></span></td></tr>
 <td class=r title='2 = 0x2'>2.1</td>
 <td>MeteringMode2</td>
 <td class=c>int8u</td>
-<td><span class=s><span class=n>(may not be valid for some models, ie. *ist D)</span>
+<td><span class=s><span class=n>(may not be valid for some models, eg. *ist D)</span>
   <br>[Mask 0x0f]
   <br>0x0 = Multi-segment
   <br>Bit 0 = Center-weighted average
@@ -4536,7 +4576,7 @@ stored as ASCII text in a format very similar to some HP models.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised May 11, 2014</i>
+<br><i>Last revised Sep 3, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -80,43 +80,48 @@ for the official specification.</p>
 <td><span class=s><span class=n>(not a real tag ID, this tag represents the size of the &#39;mdat&#39; data in bytes
 and is used in the AvgBitrate calculation)</span></span></td></tr>
 <tr class=b>
+<td>'meta'</td>
+<td>Meta</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#Meta'>QuickTime Meta Tags</a></td></tr>
+<tr>
 <td>'moov'</td>
 <td>Movie</td>
 <td class=c>-</td>
 <td>--&gt; <a href='QuickTime.html#Movie'>QuickTime Movie Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td>'pict'</td>
 <td>PreviewPICT</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td>'pnot'</td>
 <td>Preview</td>
 <td class=c>-</td>
 <td>--&gt; <a href='QuickTime.html#Preview'>QuickTime Preview Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td>'prrt'</td>
 <td>ARDroneTelemetry</td>
 <td class=c>N</td>
 <td><span class=s><span class=n>(telemetry information for each video frame: status1, status2, time, pitch,
 roll, yaw, speed, altitude)</span></span></td></tr>
-<tr class=b>
+<tr>
 <td>'skip'</td>
 <td>CanonSkip
   <br>Skip?</td>
 <td class=c>-<br>N</td>
 <td>--&gt; <a href='Canon.html#Skip'>Canon Skip Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td>'thum'</td>
 <td>ThumbnailImage</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td>'udta'</td>
 <td>UserData</td>
 <td class=c>-</td>
 <td>--&gt; <a href='FLIR.html#UserData'>FLIR UserData Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td>'uuid'</td>
 <td>UUID-XMP
   <br>UUID-PROF
@@ -126,7 +131,7 @@ roll, yaw, speed, altitude)</span></span></td></tr>
 <td>--&gt; <a href='XMP.html'>XMP Tags</a>
   <br>--&gt; <a href='QuickTime.html#Profile'>QuickTime Profile Tags</a>
   <br>--&gt; <a href='QuickTime.html#Flip'>QuickTime Flip Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td>'wide'</td>
 <td>Wide?</td>
 <td class=c>N</td>
@@ -199,6 +204,7 @@ roll, yaw, speed, altitude)</span></span></td></tr>
   <br>&#39;NDXP&#39; = H.264/MPEG-4 AVC (.MP4) Nero Portable Profile
   <br>&#39;NDXS&#39; = H.264/MPEG-4 AVC (.MP4) Nero Standard Profile
   <br>&#39;ROSS&#39; = Ross Video
+  <br>&#39;XAVC&#39; = Sony XAVC
   <br>&#39;avc1&#39; = MP4 Base w/ AVC ext [ISO 14496-12:2005]
   <br>&#39;caqv&#39; = Casio Digital Camera
   <br>&#39;da0a&#39; = DMB MAF w/ MPEG Layer II aud, MOT slides, DLS, JPG/PNG/MNG images
@@ -253,136 +259,72 @@ roll, yaw, speed, altitude)</span></span></td></tr>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
-<h2><a name='Movie'>QuickTime Movie Tags</a></h2>
+<h2><a name='Meta'>QuickTime Meta Tags</a></h2>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
 <tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'cmov'</td>
-<td>CompressedMovie</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#CMovie'>QuickTime CMovie Tags</a></td></tr>
-<tr class=b>
-<td>'htka'</td>
-<td>HTCTrack</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#Track'>QuickTime Track Tags</a></td></tr>
-<tr>
-<td>'iods'</td>
-<td>InitialObjectDescriptor?</td>
+<td>'bxml'</td>
+<td>BinaryXML?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'meta'</td>
-<td>Meta</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#Meta'>QuickTime Meta Tags</a></td></tr>
+<td>'dinf'</td>
+<td>DataInformation?</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr>
-<td>'mvhd'</td>
-<td>MovieHeader</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#MovieHeader'>QuickTime MovieHeader Tags</a></td></tr>
+<td>'free'</td>
+<td>Free?</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr class=b>
-<td>'trak'</td>
-<td>Track</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#Track'>QuickTime Track Tags</a></td></tr>
-<tr>
-<td>'udta'</td>
-<td>UserData</td>
+<td>'hdlr'</td>
+<td>Handler</td>
 <td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#UserData'>QuickTime UserData Tags</a></td></tr>
-<tr class=b>
-<td>'uuid'</td>
-<td>UUID-USMT
-  <br>UUID-Canon
-  <br>UUID-Unknown?</td>
-<td class=c>-<br>-<br>N</td>
-<td>--&gt; <a href='QuickTime.html#UserMedia'>QuickTime UserMedia Tags</a>
-  <br>--&gt; <a href='Canon.html#uuid'>Canon uuid Tags</a></td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='CMovie'>QuickTime CMovie Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<td>--&gt; <a href='QuickTime.html#Handler'>QuickTime Handler Tags</a></td></tr>
 <tr>
-<td>'dcom'</td>
-<td>Compression</td>
+<td>'iinf'</td>
+<td>ItemInformation?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='Track'>QuickTime Track Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td>'mdia'</td>
-<td>Media</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#Media'>QuickTime Media Tags</a></td></tr>
 <tr class=b>
-<td>'meta'</td>
-<td>Meta</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#Meta'>QuickTime Meta Tags</a></td></tr>
+<td>'iloc'</td>
+<td>ItemLocation?</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr>
-<td>'tapt'</td>
-<td>TrackAperture</td>
+<td>'ilst'</td>
+<td>ItemList</td>
 <td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#TrackAperture'>QuickTime TrackAperture Tags</a></td></tr>
+<td>--&gt; <a href='QuickTime.html#ItemList'>QuickTime ItemList Tags</a></td></tr>
 <tr class=b>
-<td>'tkhd'</td>
-<td>TrackHeader</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#TrackHeader'>QuickTime TrackHeader Tags</a></td></tr>
+<td>'ipmc'</td>
+<td>IPMPControl?</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr>
-<td>'tref'</td>
-<td>TrackRef</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#TrackRef'>QuickTime TrackRef Tags</a></td></tr>
+<td>'ipro'</td>
+<td>ItemProtection?</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr class=b>
-<td>'udta'</td>
-<td>UserData</td>
+<td>'keys'</td>
+<td>Keys</td>
 <td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#UserData'>QuickTime UserData Tags</a></td></tr>
-<tr>
-<td>'uuid'</td>
-<td>UUID-USMT
-  <br>UUID-Unknown?</td>
-<td class=c>-<br>N</td>
-<td>--&gt; <a href='QuickTime.html#UserMedia'>QuickTime UserMedia Tags</a></td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='Media'>QuickTime Media Tags</a></h2>
-<p>MP4 media box.</p>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<td>--&gt; <a href='QuickTime.html#Keys'>QuickTime Keys Tags</a></td></tr>
 <tr>
-<td>'hdlr'</td>
-<td>Handler</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#Handler'>QuickTime Handler Tags</a></td></tr>
+<td>'pitm'</td>
+<td>PrimaryItemReference?</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr class=b>
-<td>'mdhd'</td>
-<td>MediaHeader</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#MediaHeader'>QuickTime MediaHeader Tags</a></td></tr>
-<tr>
-<td>'minf'</td>
-<td>MediaInfo</td>
+<td>'xml '</td>
+<td>XML</td>
 <td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#MediaInfo'>QuickTime MediaInfo Tags</a></td></tr>
+<td>--&gt; <a href='XMP.html#XML'>XMP XML Tags</a></td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Handler'>QuickTime Handler Tags</a></h2>
@@ -411,8 +353,9 @@ roll, yaw, speed, altitude)</span></span></td></tr>
   <br>&#39;mdta&#39; = Metadata Tags
   <br>&#39;meta&#39; = NRT Metadata
   <br>&#39;mjsm&#39; = MPEG-J
-  <br>&#39;ocsm&#39; = Object Content</td><td>&nbsp;&nbsp;</td>
-  <td>&#39;odsm&#39; = Object Descriptor
+  <br>&#39;nrtm&#39; = Non-Real Time Metadata</td><td>&nbsp;&nbsp;</td>
+  <td>&#39;ocsm&#39; = Object Content
+  <br>&#39;odsm&#39; = Object Descriptor
   <br>&#39;priv&#39; = Private
   <br>&#39;sdsm&#39; = Scene Description
   <br>&#39;soun&#39; = Audio Track
@@ -459,1286 +402,372 @@ roll, yaw, speed, altitude)</span></span></td></tr>
 <td>'sany'</td><td>= Sanyo</td>
 </tr></table></td></tr></table></blockquote>
 
-<h2><a name='MediaHeader'>QuickTime MediaHeader Tags</a></h2>
+<h2><a name='ItemList'>QuickTime ItemList Tags</a></h2>
+<p>As well as these tags, the &#39;mdta&#39; handler uses numerical tag ID&#39;s which are
+added dynamically to this table after processing the Meta Keys information.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
-<tr class=h><th>Index4</th><th>Tag Name</th>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td class=r title='0 = 0x0'>0</td>
-<td>MediaHeaderVersion</td>
+<td>'----'</td>
+<td>iTunesInfo</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#iTunesInfo'>QuickTime iTunesInfo Tags</a></td></tr>
+<tr class=b>
+<td>'aART'</td>
+<td>AlbumArtist</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
-<td class=r title='1 = 0x1'>1</td>
-<td>MediaCreateDate</td>
-<td class=c>int32u</td>
-<td><span class=s><span class=n>(converted from UTC to local time if the QuickTimeUTC option is set)</span></span></td></tr>
 <tr>
-<td class=r title='2 = 0x2'>2</td>
-<td>MediaModifyDate</td>
-<td class=c>int32u</td>
-<td><span class=s><span class=n>(converted from UTC to local time if the QuickTimeUTC option is set)</span></span></td></tr>
+<td>'akID'</td>
+<td>AppleStoreAccountType</td>
+<td class=c>N</td>
+<td><span class=s>0 = iTunes
+  <br>1 = AOL</span></td></tr>
 <tr class=b>
-<td class=r title='3 = 0x3'>3</td>
-<td>MediaTimeScale</td>
+<td>'albm'</td>
+<td>Album</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td class=r title='4 = 0x4'>4</td>
-<td>MediaDuration</td>
+<td>'apID'</td>
+<td>AppleStoreAccount</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td class=r title='5 = 0x5'>5</td>
-<td>MediaLanguageCode</td>
+<td>'atID'</td>
+<td>AlbumTitleID</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='MediaInfo'>QuickTime MediaInfo Tags</a></h2>
-<p>MP4 media info box.</p>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td>'dinf'</td>
-<td>DataInfo</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#DataInfo'>QuickTime DataInfo Tags</a></td></tr>
-<tr class=b>
-<td>'gmhd'</td>
-<td>GenMediaHeader</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#GenMediaHeader'>QuickTime GenMediaHeader Tags</a></td></tr>
 <tr>
-<td>'hdlr'</td>
-<td>Handler</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#Handler'>QuickTime Handler Tags</a></td></tr>
+<td>'auth'</td>
+<td>Author</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr class=b>
-<td>'hmhd'</td>
-<td>HintHeader</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#HintHeader'>QuickTime HintHeader Tags</a></td></tr>
+<td>'catg'</td>
+<td>Category</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr>
-<td>'nmhd'</td>
-<td>NullMediaHeader?</td>
+<td>'cnID'</td>
+<td>AppleStoreCatalogID</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'smhd'</td>
-<td>AudioHeader</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#AudioHeader'>QuickTime AudioHeader Tags</a></td></tr>
+<td>'covr'</td>
+<td>CoverArt</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr>
-<td>'stbl'</td>
-<td>SampleTable</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#SampleTable'>QuickTime SampleTable Tags</a></td></tr>
+<td>'cpil'</td>
+<td>Compilation</td>
+<td class=c>N</td>
+<td><span class=s>0 = No
+  <br>1 = Yes</span></td></tr>
 <tr class=b>
-<td>'vmhd'</td>
-<td>VideoHeader</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#VideoHeader'>QuickTime VideoHeader Tags</a></td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='DataInfo'>QuickTime DataInfo Tags</a></h2>
-<p>MP4 data information box.</p>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td>'dref'</td>
-<td>DataRef</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#DataRef'>QuickTime DataRef Tags</a></td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='DataRef'>QuickTime DataRef Tags</a></h2>
-<p>MP4 data reference box.</p>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<td>'cprt'</td>
+<td>Copyright</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr>
-<td>'url '</td>
-<td>URL</td>
+<td>'desc'</td>
+<td>Description</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'urn '</td>
-<td>URN</td>
+<td>'disk'</td>
+<td>DiskNumber</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='GenMediaHeader'>QuickTime GenMediaHeader Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'gmin'</td>
-<td>GenMediaInfo</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#GenMediaInfo'>QuickTime GenMediaInfo Tags</a></td></tr>
+<td>'dscp'</td>
+<td>Description</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr class=b>
-<td>'text'</td>
-<td>Text?</td>
+<td>'egid'</td>
+<td>EpisodeGlobalUniqueID</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'tmcd'</td>
-<td>TimeCode</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#TimeCode'>QuickTime TimeCode Tags</a></td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='GenMediaInfo'>QuickTime GenMediaInfo Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Index1</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<td>'geID'</td>
+<td>GenreID</td>
+<td class=c>N</td>
+<td>--&gt; <a href='QuickTime.html#GenreID'>QuickTime GenreID Values</a></td></tr>
+<tr class=b>
+<td>'gnre'</td>
+<td>Genre</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr>
-<td class=r title='0 = 0x0'>0</td>
-<td>GenMediaVersion</td>
+<td>'grup'</td>
+<td>Grouping</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td class=r title='1 = 0x1'>1</td>
-<td>GenFlags</td>
+<td>'gshh'</td>
+<td>GoogleHostHeader</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td class=r title='4 = 0x4'>4</td>
-<td>GenGraphicsMode</td>
+<td>'gspm'</td>
+<td>GooglePingMessage</td>
 <td class=c>N</td>
-<td>--&gt; <a href='QuickTime.html#GraphicsMode'>QuickTime GraphicsMode Values</a></td></tr>
+<td>&nbsp;</td></tr>
 <tr class=b>
-<td class=r title='6 = 0x6'>6</td>
-<td>GenOpColor</td>
+<td>'gspu'</td>
+<td>GooglePingURL</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td class=r title='12 = 0xc'>12</td>
-<td>GenBalance</td>
+<td>'gssd'</td>
+<td>GoogleSourceData</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'gsst'</td>
+<td>GoogleStartTime</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='GraphicsMode'>QuickTime GraphicsMode Values</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class='inner sep' cellspacing=1>
-<tr class=h><th>Value</th><th>GraphicsMode</th><th>Value</th><th>GraphicsMode</th><th>Value</th><th>GraphicsMode</th></tr>
-<tr><td class=r>0x0</td><td>= srcCopy</td>
-<td class='r b'>0xb</td><td class=b>= patBic</td>
-<td class=r>0x26</td><td>= subOver</td>
-</tr><tr><td class=r>0x1</td><td>= srcOr</td>
-<td class='r b'>0xc</td><td class=b>= notPatCopy</td>
-<td class=r>0x27</td><td>= addMin</td>
-</tr><tr><td class=r>0x2</td><td>= srcXor</td>
-<td class='r b'>0xd</td><td class=b>= notPatOr</td>
-<td class=r>0x31</td><td>= grayishTextOr</td>
-</tr><tr><td class=r>0x3</td><td>= srcBic</td>
-<td class='r b'>0xe</td><td class=b>= notPatXor</td>
-<td class=r>0x32</td><td>= hilite</td>
-</tr><tr><td class=r>0x4</td><td>= notSrcCopy</td>
-<td class='r b'>0xf</td><td class=b>= notPatBic</td>
-<td class=r>0x40</td><td>= ditherCopy</td>
-</tr><tr><td class=r>0x5</td><td>= notSrcOr</td>
-<td class='r b'>0x20</td><td class=b>= blend</td>
-<td class=r>0x100</td><td>= Alpha</td>
-</tr><tr><td class=r>0x6</td><td>= notSrcXor</td>
-<td class='r b'>0x21</td><td class=b>= addPin</td>
-<td class=r>0x101</td><td>= White Alpha</td>
-</tr><tr><td class=r>0x7</td><td>= notSrcBic</td>
-<td class='r b'>0x22</td><td class=b>= addOver</td>
-<td class=r>0x102</td><td>= Pre-multiplied Black Alpha</td>
-</tr><tr><td class=r>0x8</td><td>= patCopy</td>
-<td class='r b'>0x23</td><td class=b>= subPin</td>
-<td class=r>0x110</td><td>= Component Alpha</td>
-</tr><tr><td class=r>0x9</td><td>= patOr</td>
-<td class='r b'>0x24</td><td class=b>= transparent</td>
-<td class=r>&nbsp;</td><td>&nbsp;</td>
-</tr><tr><td class=r>0xa</td><td>= patXor</td>
-<td class='r b'>0x25</td><td class=b>= addMax</td>
-<td class=r>&nbsp;</td><td>&nbsp;</td>
-</tr></table></td></tr></table></blockquote>
-
-<h2><a name='TimeCode'>QuickTime TimeCode Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td>'tcmi'</td>
-<td>TCMediaInfo</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#TCMediaInfo'>QuickTime TCMediaInfo Tags</a></td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='TCMediaInfo'>QuickTime TCMediaInfo Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Index1</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td class=r title='4 = 0x4'>4</td>
-<td>TextFont</td>
+<td>'gstd'</td>
+<td>GoogleTrackDuration</td>
 <td class=c>N</td>
-<td><span class=s>0 = System</span></td></tr>
+<td>&nbsp;</td></tr>
 <tr class=b>
-<td class=r title='6 = 0x6'>6</td>
-<td>TextFace</td>
+<td>'hdvd'</td>
+<td>HDVideo</td>
 <td class=c>N</td>
-<td><table class=cols><tr>
-  <td>0x0 = Plain
-  <br>Bit 0 = Bold
-  <br>Bit 1 = Italic
-  <br>Bit 2 = Underline</td><td>&nbsp;&nbsp;</td>
-  <td>Bit 3 = Outline
-  <br>Bit 4 = Shadow
-  <br>Bit 5 = Condense
-  <br>Bit 6 = Extend</td><td>&nbsp;&nbsp;</td></tr></table>
-</td></tr>
+<td><span class=s>0 = No
+  <br>1 = Yes</span></td></tr>
 <tr>
-<td class=r title='8 = 0x8'>8</td>
-<td>TextSize</td>
+<td>'itnu'</td>
+<td>iTunesU</td>
 <td class=c>N</td>
-<td>&nbsp;</td></tr>
+<td><span class=s>0 = No
+  <br>1 = Yes</span></td></tr>
 <tr class=b>
-<td class=r title='12 = 0xc'>12</td>
-<td>TextColor</td>
+<td>'keyw'</td>
+<td>Keyword</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td class=r title='18 = 0x12'>18</td>
-<td>BackgroundColor</td>
+<td>'ldes'</td>
+<td>LongDescription</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td class=r title='24 = 0x18'>24</td>
-<td>FontName</td>
+<td>'pcst'</td>
+<td>Podcast</td>
 <td class=c>N</td>
-<td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='HintHeader'>QuickTime HintHeader Tags</a></h2>
-<p>MP4 hint media header.</p>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Index2</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<td><span class=s>0 = No
+  <br>1 = Yes</span></td></tr>
 <tr>
-<td class=r title='2 = 0x2'>2</td>
-<td>MaxPDUSize</td>
+<td>'perf'</td>
+<td>Performer</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td class=r title='3 = 0x3'>3</td>
-<td>AvgPDUSize</td>
+<td>'pgap'</td>
+<td>PlayGap</td>
 <td class=c>N</td>
-<td>&nbsp;</td></tr>
+<td><span class=s>0 = Insert Gap
+  <br>1 = No Gap</span></td></tr>
 <tr>
-<td class=r title='4 = 0x4'>4</td>
-<td>MaxBitrate</td>
+<td>'plID'</td>
+<td>PlayListID</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td class=r title='6 = 0x6'>6</td>
-<td>AvgBitrate</td>
+<td>'purd'</td>
+<td>PurchaseDate</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='AudioHeader'>QuickTime AudioHeader Tags</a></h2>
-<p>MP4 audio media header.</p>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Index2</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td class=r title='2 = 0x2'>2</td>
-<td>Balance</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='SampleTable'>QuickTime SampleTable Tags</a></h2>
-<p>MP4 sample table box.</p>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td>'co64'</td>
-<td>ChunkOffset64?</td>
+<td>'purl'</td>
+<td>PodcastURL</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'cslg'</td>
-<td>CompositionToDecodeTimelineMapping?</td>
+<td>'rtng'</td>
+<td>Rating</td>
 <td class=c>N</td>
-<td>&nbsp;</td></tr>
+<td><span class=s>0 = none
+  <br>1 = Explicit
+  <br>2 = Clean
+  <br>4 = Explicit (old)</span></td></tr>
 <tr>
-<td>'ctts'</td>
-<td>CompositionTimeToSample?</td>
+<td>'sfID'</td>
+<td>AppleStoreCountry</td>
 <td class=c>N</td>
-<td>&nbsp;</td></tr>
+<td>--&gt; <a href='QuickTime.html#AppleStoreCountry'>QuickTime AppleStoreCountry Values</a></td></tr>
 <tr class=b>
-<td>'padb'</td>
-<td>SamplePaddingBits?</td>
+<td>'soaa'</td>
+<td>SortAlbumArtist</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'sbgp'</td>
-<td>SampleToGroup?</td>
+<td>'soal'</td>
+<td>SortAlbum</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'sdtp'</td>
-<td>IdependentAndDisposableSamples?</td>
+<td>'soar'</td>
+<td>SortArtist</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'sgpd'</td>
-<td>SampleGroupDescription?</td>
+<td>'soco'</td>
+<td>SortComposer</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'stco'</td>
-<td>ChunkOffset?</td>
+<td>'sonm'</td>
+<td>SortName</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'stdp'</td>
-<td>SampleDegradationPriority?</td>
+<td>'sosn'</td>
+<td>SortShow</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'stps'</td>
-<td>PartialSyncSamples</td>
+<td>'stik'</td>
+<td>MediaType</td>
 <td class=c>N</td>
-<td>&nbsp;</td></tr>
+<td><table class=cols><tr>
+  <td>0 = Movie
+  <br>1 = Normal (Music)
+  <br>2 = Audiobook
+  <br>5 = Whacked Bookmark
+  <br>6 = Music Video</td><td>&nbsp;&nbsp;</td>
+  <td>9 = Short Film
+  <br>10 = TV Show
+  <br>11 = Booklet
+  <br>14 = Ringtone
+  <br>21 = Podcast</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
 <tr>
-<td>'stsc'</td>
-<td>SampleToChunk?</td>
+<td>'titl'</td>
+<td>Title</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'stsd'</td>
-<td>AudioSampleDesc
-  <br>VideoSampleDesc
-  <br>HintSampleDesc
-  <br>OtherSampleDesc</td>
-<td class=c>-<br>-<br>-<br>-</td>
-<td>--&gt; <a href='QuickTime.html#AudioSampleDesc'>QuickTime AudioSampleDesc Tags</a>
-  <br>--&gt; <a href='QuickTime.html#ImageDesc'>QuickTime ImageDesc Tags</a>
-  <br>--&gt; <a href='QuickTime.html#HintSampleDesc'>QuickTime HintSampleDesc Tags</a>
-  <br>--&gt; <a href='QuickTime.html#OtherSampleDesc'>QuickTime OtherSampleDesc Tags</a></td></tr>
+<td>'tmpo'</td>
+<td>BeatsPerMinute</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr>
-<td>'stsh'</td>
-<td>ShadowSyncSampleTable?</td>
+<td>'trkn'</td>
+<td>TrackNumber</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'stss'</td>
-<td>SyncSampleTable?</td>
+<td>'tven'</td>
+<td>TVEpisodeID</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'stsz'</td>
-<td>SampleSizes?</td>
+<td>'tves'</td>
+<td>TVEpisode</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'stts'</td>
-<td>VideoFrameRate
-  <br>TimeToSampleTable?</td>
-<td class=c>N<br>N</td>
-<td><span class=s><span class=n>(average rate calculated from time-to-sample table for video media)</span></span></td></tr>
+<td>'tvnn'</td>
+<td>TVNetworkName</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr>
-<td>'stz2'</td>
-<td>CompactSampleSizes?</td>
+<td>'tvsh'</td>
+<td>TVShow</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'subs'</td>
-<td>Sub-sampleInformation?</td>
+<td>'tvsn'</td>
+<td>TVSeason</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='AudioSampleDesc'>QuickTime AudioSampleDesc Tags</a></h2>
-<p>MP4 audio sample description.  This hybrid atom contains both data and child
-atoms.</p>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>ID/Index</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td class=r title='4 = 0x4'>4</td>
-<td>AudioFormat</td>
+<td>'yrrc'</td>
+<td>Year</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td class=r title='20 = 0x14'>20</td>
-<td>AudioVendorID</td>
+<td>"&copy;ART"</td>
+<td>Artist</td>
 <td class=c>N</td>
-<td>--&gt; <a href='QuickTime.html#VendorID'>QuickTime VendorID Values</a></td></tr>
+<td>&nbsp;</td></tr>
 <tr>
-<td class=r title='24 = 0x18'>24</td>
-<td>AudioChannels</td>
+<td>"&copy;alb"</td>
+<td>Album</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td class=r title='26 = 0x1a'>26</td>
-<td>AudioBitsPerSample</td>
+<td>"&copy;cmt"</td>
+<td>Comment</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td class=r title='32 = 0x20'>32</td>
-<td>AudioSampleRate</td>
+<td>"&copy;com"</td>
+<td>Composer</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'damr'</td>
-<td>DecodeConfig</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#DecodeConfig'>QuickTime DecodeConfig Tags</a></td></tr>
-<tr>
-<td>'pinf'</td>
-<td>PurchaseInfo</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#ProtectionInfo'>QuickTime ProtectionInfo Tags</a></td></tr>
-<tr class=b>
-<td>'sinf'</td>
-<td>ProtectionInfo</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#ProtectionInfo'>QuickTime ProtectionInfo Tags</a></td></tr>
-<tr>
-<td>'wave'</td>
-<td>Wave</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#Wave'>QuickTime Wave Tags</a></td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='DecodeConfig'>QuickTime DecodeConfig Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Index1</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<td>"&copy;day"</td>
+<td>ContentCreateDate</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr>
-<td class=r title='0 = 0x0'>0</td>
-<td>EncoderVendor</td>
+<td>"&copy;des"</td>
+<td>Description</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td class=r title='4 = 0x4'>4</td>
-<td>EncoderVersion</td>
+<td>"&copy;enc"</td>
+<td>EncodedBy</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='ProtectionInfo'>QuickTime ProtectionInfo Tags</a></h2>
-<p>Child atoms found in &quot;sinf&quot; and/or &quot;pinf&quot; atoms.</p>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'frma'</td>
-<td>OriginalFormat</td>
+<td>"&copy;gen"</td>
+<td>Genre</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'schi'</td>
-<td>SchemeInfo</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#SchemeInfo'>QuickTime SchemeInfo Tags</a></td></tr>
-<tr>
-<td>'schm'</td>
-<td>SchemeType</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#SchemeType'>QuickTime SchemeType Tags</a></td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='SchemeInfo'>QuickTime SchemeInfo Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<td>"&copy;grp"</td>
+<td>Grouping</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr>
-<td>'cert'</td>
-<td>Certificate</td>
+<td>"&copy;lyr"</td>
+<td>Lyrics</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'iviv'</td>
-<td>InitializationVector</td>
+<td>"&copy;nam"</td>
+<td>Title</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'key '</td>
-<td>KeyID</td>
+<td>"&copy;too"</td>
+<td>Encoder</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'name'</td>
-<td>UserName</td>
+<td>"&copy;trk"</td>
+<td>Track</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'righ'</td>
-<td>Rights</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#Rights'>QuickTime Rights Tags</a></td></tr>
-<tr class=b>
-<td>'user'</td>
-<td>UserID</td>
+<td>"&copy;wrt"</td>
+<td>Composer</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
-<h2><a name='Rights'>QuickTime Rights Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td>'aver'</td>
-<td>VersionRestrictions</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'medi'</td>
-<td>MediaFlags</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'mode'</td>
-<td>ModeFlags</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'plat'</td>
-<td>Platform</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'song'</td>
-<td>ItemID</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'tool'</td>
-<td>ItemTool</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'tran'</td>
-<td>TransactionID</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'veID'</td>
-<td>ItemVendorID</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='SchemeType'>QuickTime SchemeType Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Index1</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td class=r title='4 = 0x4'>4</td>
-<td>SchemeType</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td class=r title='8 = 0x8'>8</td>
-<td>SchemeVersion</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td class=r title='10 = 0xa'>10</td>
-<td>SchemeURL</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='Wave'>QuickTime Wave Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td>'frma'</td>
-<td>PurchaseFileFormat</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='ImageDesc'>QuickTime ImageDesc Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>ID/Index</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td class=r title='2 = 0x2'>2</td>
-<td>CompressorID</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td class=r title='10 = 0xa'>10</td>
-<td>VendorID</td>
-<td class=c>N</td>
-<td>--&gt; <a href='QuickTime.html#VendorID'>QuickTime VendorID Values</a></td></tr>
-<tr>
-<td class=r title='16 = 0x10'>16</td>
-<td>SourceImageWidth</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td class=r title='17 = 0x11'>17</td>
-<td>SourceImageHeight</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td class=r title='18 = 0x12'>18</td>
-<td>XResolution</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td class=r title='20 = 0x14'>20</td>
-<td>YResolution</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td class=r title='25 = 0x19'>25</td>
-<td>CompressorName</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td class=r title='41 = 0x29'>41</td>
-<td>BitDepth</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'btrt'</td>
-<td>BitrateInfo</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#Bitrate'>QuickTime Bitrate Tags</a></td></tr>
-<tr class=b>
-<td>'clap'</td>
-<td>CleanAperture</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#CleanAperture'>QuickTime CleanAperture Tags</a></td></tr>
-<tr>
-<td>'colr'</td>
-<td>ColorRepresentation</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'fiel'</td>
-<td>VideoFieldOrder</td>
-<td class=c>N</td>
-<td><span class=s>[Value 0]
-  <br>1 = Progressive
-  <br>2 = 2:1 Interlaced</span></td></tr>
-<tr>
-<td>'gama'</td>
-<td>Gamma</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'pasp'</td>
-<td>PixelAspectRatio</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='Bitrate'>QuickTime Bitrate Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Index4</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td class=r title='0 = 0x0'>0</td>
-<td>BufferSize</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td class=r title='1 = 0x1'>1</td>
-<td>MaxBitrate</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td class=r title='2 = 0x2'>2</td>
-<td>AverageBitrate</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='CleanAperture'>QuickTime CleanAperture Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Index8</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td class=r title='0 = 0x0'>0</td>
-<td>CleanApertureWidth</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td class=r title='1 = 0x1'>1</td>
-<td>CleanApertureHeight</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td class=r title='2 = 0x2'>2</td>
-<td>CleanApertureOffsetX</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td class=r title='3 = 0x3'>3</td>
-<td>CleanApertureOffsetY</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='HintSampleDesc'>QuickTime HintSampleDesc Tags</a></h2>
-<p>MP4 hint sample description.</p>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>ID/Index</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td class=r title='4 = 0x4'>4</td>
-<td>HintFormat</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td class=r title='16 = 0x10'>16</td>
-<td>HintTrackVersion</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td class=r title='20 = 0x14'>20</td>
-<td>MaxPacketSize</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'snro'</td>
-<td>SequenceNumberRandomOffset</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'tims'</td>
-<td>RTPTimeScale</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'tsro'</td>
-<td>TimestampRandomOffset</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='OtherSampleDesc'>QuickTime OtherSampleDesc Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td title='0x0004 = 4'>0x0004</td>
-<td>OtherFormat</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='VideoHeader'>QuickTime VideoHeader Tags</a></h2>
-<p>MP4 video media header.</p>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Index2</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td class=r title='2 = 0x2'>2</td>
-<td>GraphicsMode</td>
-<td class=c>N</td>
-<td>--&gt; <a href='QuickTime.html#GraphicsMode'>QuickTime GraphicsMode Values</a></td></tr>
-<tr class=b>
-<td class=r title='3 = 0x3'>3</td>
-<td>OpColor</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='Meta'>QuickTime Meta Tags</a></h2>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td>'bxml'</td>
-<td>BinaryXML?</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'dinf'</td>
-<td>DataInformation?</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'free'</td>
-<td>Free?</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'hdlr'</td>
-<td>Handler</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#Handler'>QuickTime Handler Tags</a></td></tr>
-<tr>
-<td>'iinf'</td>
-<td>ItemInformation?</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'iloc'</td>
-<td>ItemLocation?</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'ilst'</td>
-<td>ItemList</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#ItemList'>QuickTime ItemList Tags</a></td></tr>
-<tr class=b>
-<td>'ipmc'</td>
-<td>IPMPControl?</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'ipro'</td>
-<td>ItemProtection?</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'keys'</td>
-<td>Keys</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#Keys'>QuickTime Keys Tags</a></td></tr>
-<tr>
-<td>'pitm'</td>
-<td>PrimaryItemReference?</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'xml '</td>
-<td>XML</td>
-<td class=c>-</td>
-<td>--&gt; <a href='XMP.html'>XMP Tags</a></td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='ItemList'>QuickTime ItemList Tags</a></h2>
-<p>As well as these tags, the &#39;mdta&#39; handler uses numerical tag ID&#39;s which are
-added dynamically to this table after processing the Meta Keys information.</p>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td>'----'</td>
-<td>iTunesInfo</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#iTunesInfo'>QuickTime iTunesInfo Tags</a></td></tr>
-<tr class=b>
-<td>'aART'</td>
-<td>AlbumArtist</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'akID'</td>
-<td>AppleStoreAccountType</td>
-<td class=c>N</td>
-<td><span class=s>0 = iTunes
-  <br>1 = AOL</span></td></tr>
-<tr class=b>
-<td>'albm'</td>
-<td>Album</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'apID'</td>
-<td>AppleStoreAccount</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'atID'</td>
-<td>AlbumTitleID</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'auth'</td>
-<td>Author</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'catg'</td>
-<td>Category</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'cnID'</td>
-<td>AppleStoreCatalogID</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'covr'</td>
-<td>CoverArt</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'cpil'</td>
-<td>Compilation</td>
-<td class=c>N</td>
-<td><span class=s>0 = No
-  <br>1 = Yes</span></td></tr>
-<tr class=b>
-<td>'cprt'</td>
-<td>Copyright</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'desc'</td>
-<td>Description</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'disk'</td>
-<td>DiskNumber</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'dscp'</td>
-<td>Description</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'egid'</td>
-<td>EpisodeGlobalUniqueID</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'geID'</td>
-<td>GenreID</td>
-<td class=c>N</td>
-<td>--&gt; <a href='QuickTime.html#GenreID'>QuickTime GenreID Values</a></td></tr>
-<tr class=b>
-<td>'gnre'</td>
-<td>Genre</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'grup'</td>
-<td>Grouping</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'gshh'</td>
-<td>GoogleHostHeader</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'gspm'</td>
-<td>GooglePingMessage</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'gspu'</td>
-<td>GooglePingURL</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'gssd'</td>
-<td>GoogleSourceData</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'gsst'</td>
-<td>GoogleStartTime</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'gstd'</td>
-<td>GoogleTrackDuration</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'hdvd'</td>
-<td>HDVideo</td>
-<td class=c>N</td>
-<td><span class=s>0 = No
-  <br>1 = Yes</span></td></tr>
-<tr>
-<td>'itnu'</td>
-<td>iTunesU</td>
-<td class=c>N</td>
-<td><span class=s>0 = No
-  <br>1 = Yes</span></td></tr>
-<tr class=b>
-<td>'keyw'</td>
-<td>Keyword</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'ldes'</td>
-<td>LongDescription</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'pcst'</td>
-<td>Podcast</td>
-<td class=c>N</td>
-<td><span class=s>0 = No
-  <br>1 = Yes</span></td></tr>
-<tr>
-<td>'perf'</td>
-<td>Performer</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'pgap'</td>
-<td>PlayGap</td>
-<td class=c>N</td>
-<td><span class=s>0 = Insert Gap
-  <br>1 = No Gap</span></td></tr>
-<tr>
-<td>'plID'</td>
-<td>PlayListID</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'purd'</td>
-<td>PurchaseDate</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'purl'</td>
-<td>PodcastURL</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'rtng'</td>
-<td>Rating</td>
-<td class=c>N</td>
-<td><span class=s>0 = none
-  <br>1 = Explicit
-  <br>2 = Clean
-  <br>4 = Explicit (old)</span></td></tr>
-<tr>
-<td>'sfID'</td>
-<td>AppleStoreCountry</td>
-<td class=c>N</td>
-<td>--&gt; <a href='QuickTime.html#AppleStoreCountry'>QuickTime AppleStoreCountry Values</a></td></tr>
-<tr class=b>
-<td>'soaa'</td>
-<td>SortAlbumArtist</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'soal'</td>
-<td>SortAlbum</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'soar'</td>
-<td>SortArtist</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'soco'</td>
-<td>SortComposer</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'sonm'</td>
-<td>SortName</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'sosn'</td>
-<td>SortShow</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'stik'</td>
-<td>MediaType</td>
-<td class=c>N</td>
-<td><table class=cols><tr>
-  <td>0 = Movie
-  <br>1 = Normal (Music)
-  <br>2 = Audiobook
-  <br>5 = Whacked Bookmark
-  <br>6 = Music Video</td><td>&nbsp;&nbsp;</td>
-  <td>9 = Short Film
-  <br>10 = TV Show
-  <br>11 = Booklet
-  <br>14 = Ringtone
-  <br>21 = Podcast</td><td>&nbsp;&nbsp;</td></tr></table>
-</td></tr>
-<tr>
-<td>'titl'</td>
-<td>Title</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'tmpo'</td>
-<td>BeatsPerMinute</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'trkn'</td>
-<td>TrackNumber</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'tven'</td>
-<td>TVEpisodeID</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'tves'</td>
-<td>TVEpisode</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'tvnn'</td>
-<td>TVNetworkName</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'tvsh'</td>
-<td>TVShow</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>'tvsn'</td>
-<td>TVSeason</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>'yrrc'</td>
-<td>Year</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>"&copy;ART"</td>
-<td>Artist</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>"&copy;alb"</td>
-<td>Album</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>"&copy;cmt"</td>
-<td>Comment</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>"&copy;com"</td>
-<td>Composer</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>"&copy;day"</td>
-<td>ContentCreateDate</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>"&copy;des"</td>
-<td>Description</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>"&copy;enc"</td>
-<td>EncodedBy</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>"&copy;gen"</td>
-<td>Genre</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>"&copy;grp"</td>
-<td>Grouping</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>"&copy;lyr"</td>
-<td>Lyrics</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>"&copy;nam"</td>
-<td>Title</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>"&copy;too"</td>
-<td>Encoder</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td>"&copy;trk"</td>
-<td>Track</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td>"&copy;wrt"</td>
-<td>Composer</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='GenreID'>QuickTime GenreID Values</a></h2>
+<h2><a name='GenreID'>QuickTime GenreID Values</a></h2>
 <blockquote>
 <table class=frame><tr><td>
 <table class='inner sep' cellspacing=1>
@@ -3658,562 +2687,1545 @@ added dynamically to this table after processing the Meta Keys information.</p>
 </tr><tr><td class=r>50000089</td><td>= Books|Comics &amp; Graphic Novels|Manga|Horror</td>
 </tr></table></td></tr></table></blockquote>
 
-<h2><a name='AppleStoreCountry'>QuickTime AppleStoreCountry Values</a></h2>
+<h2><a name='AppleStoreCountry'>QuickTime AppleStoreCountry Values</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class='inner sep' cellspacing=1>
+<tr class=h><th>Value</th><th>AppleStoreCountry</th><th>Value</th><th>AppleStoreCountry</th></tr>
+<tr><td class=r>143441</td><td>= United States</td>
+<td class='r b'>143523</td><td class=b>= Moldova</td>
+</tr><tr><td class=r>143442</td><td>= France</td>
+<td class='r b'>143524</td><td class=b>= Armenia</td>
+</tr><tr><td class=r>143443</td><td>= Germany</td>
+<td class='r b'>143525</td><td class=b>= Botswana</td>
+</tr><tr><td class=r>143444</td><td>= United Kingdom</td>
+<td class='r b'>143526</td><td class=b>= Bulgaria</td>
+</tr><tr><td class=r>143445</td><td>= Austria</td>
+<td class='r b'>143528</td><td class=b>= Jordan</td>
+</tr><tr><td class=r>143446</td><td>= Belgium</td>
+<td class='r b'>143529</td><td class=b>= Kenya</td>
+</tr><tr><td class=r>143447</td><td>= Finland</td>
+<td class='r b'>143530</td><td class=b>= Macedonia</td>
+</tr><tr><td class=r>143448</td><td>= Greece</td>
+<td class='r b'>143531</td><td class=b>= Madagascar</td>
+</tr><tr><td class=r>143449</td><td>= Ireland</td>
+<td class='r b'>143532</td><td class=b>= Mali</td>
+</tr><tr><td class=r>143450</td><td>= Italy</td>
+<td class='r b'>143533</td><td class=b>= Mauritius</td>
+</tr><tr><td class=r>143451</td><td>= Luxembourg</td>
+<td class='r b'>143534</td><td class=b>= Niger</td>
+</tr><tr><td class=r>143452</td><td>= Netherlands</td>
+<td class='r b'>143535</td><td class=b>= Senegal</td>
+</tr><tr><td class=r>143453</td><td>= Portugal</td>
+<td class='r b'>143536</td><td class=b>= Tunisia</td>
+</tr><tr><td class=r>143454</td><td>= Spain</td>
+<td class='r b'>143537</td><td class=b>= Uganda</td>
+</tr><tr><td class=r>143455</td><td>= Canada</td>
+<td class='r b'>143538</td><td class=b>= Anguilla</td>
+</tr><tr><td class=r>143456</td><td>= Sweden</td>
+<td class='r b'>143539</td><td class=b>= Bahamas</td>
+</tr><tr><td class=r>143457</td><td>= Norway</td>
+<td class='r b'>143540</td><td class=b>= Antigua and Barbuda</td>
+</tr><tr><td class=r>143458</td><td>= Denmark</td>
+<td class='r b'>143541</td><td class=b>= Barbados</td>
+</tr><tr><td class=r>143459</td><td>= Switzerland</td>
+<td class='r b'>143542</td><td class=b>= Bermuda</td>
+</tr><tr><td class=r>143460</td><td>= Australia</td>
+<td class='r b'>143543</td><td class=b>= British Virgin Islands</td>
+</tr><tr><td class=r>143461</td><td>= New Zealand</td>
+<td class='r b'>143544</td><td class=b>= Cayman Islands</td>
+</tr><tr><td class=r>143462</td><td>= Japan</td>
+<td class='r b'>143545</td><td class=b>= Dominica</td>
+</tr><tr><td class=r>143463</td><td>= Hong Kong</td>
+<td class='r b'>143546</td><td class=b>= Grenada</td>
+</tr><tr><td class=r>143464</td><td>= Singapore</td>
+<td class='r b'>143547</td><td class=b>= Montserrat</td>
+</tr><tr><td class=r>143465</td><td>= China</td>
+<td class='r b'>143548</td><td class=b>= St. Kitts and Nevis</td>
+</tr><tr><td class=r>143466</td><td>= Republic of Korea</td>
+<td class='r b'>143549</td><td class=b>= St. Lucia</td>
+</tr><tr><td class=r>143467</td><td>= India</td>
+<td class='r b'>143550</td><td class=b>= St. Vincent and The Grenadines</td>
+</tr><tr><td class=r>143468</td><td>= Mexico</td>
+<td class='r b'>143551</td><td class=b>= Trinidad and Tobago</td>
+</tr><tr><td class=r>143469</td><td>= Russia</td>
+<td class='r b'>143552</td><td class=b>= Turks and Caicos</td>
+</tr><tr><td class=r>143470</td><td>= Taiwan</td>
+<td class='r b'>143553</td><td class=b>= Guyana</td>
+</tr><tr><td class=r>143471</td><td>= Vietnam</td>
+<td class='r b'>143554</td><td class=b>= Suriname</td>
+</tr><tr><td class=r>143472</td><td>= South Africa</td>
+<td class='r b'>143555</td><td class=b>= Belize</td>
+</tr><tr><td class=r>143473</td><td>= Malaysia</td>
+<td class='r b'>143556</td><td class=b>= Bolivia</td>
+</tr><tr><td class=r>143474</td><td>= Philippines</td>
+<td class='r b'>143557</td><td class=b>= Cyprus</td>
+</tr><tr><td class=r>143475</td><td>= Thailand</td>
+<td class='r b'>143558</td><td class=b>= Iceland</td>
+</tr><tr><td class=r>143476</td><td>= Indonesia</td>
+<td class='r b'>143559</td><td class=b>= Bahrain</td>
+</tr><tr><td class=r>143477</td><td>= Pakistan</td>
+<td class='r b'>143560</td><td class=b>= Brunei Darussalam</td>
+</tr><tr><td class=r>143478</td><td>= Poland</td>
+<td class='r b'>143561</td><td class=b>= Nigeria</td>
+</tr><tr><td class=r>143479</td><td>= Saudi Arabia</td>
+<td class='r b'>143562</td><td class=b>= Oman</td>
+</tr><tr><td class=r>143480</td><td>= Turkey</td>
+<td class='r b'>143563</td><td class=b>= Algeria</td>
+</tr><tr><td class=r>143481</td><td>= United Arab Emirates</td>
+<td class='r b'>143564</td><td class=b>= Angola</td>
+</tr><tr><td class=r>143482</td><td>= Hungary</td>
+<td class='r b'>143565</td><td class=b>= Belarus</td>
+</tr><tr><td class=r>143483</td><td>= Chile</td>
+<td class='r b'>143566</td><td class=b>= Uzbekistan</td>
+</tr><tr><td class=r>143484</td><td>= Nepal</td>
+<td class='r b'>143568</td><td class=b>= Azerbaijan</td>
+</tr><tr><td class=r>143485</td><td>= Panama</td>
+<td class='r b'>143571</td><td class=b>= Yemen</td>
+</tr><tr><td class=r>143486</td><td>= Sri Lanka</td>
+<td class='r b'>143572</td><td class=b>= Tanzania</td>
+</tr><tr><td class=r>143487</td><td>= Romania</td>
+<td class='r b'>143573</td><td class=b>= Ghana</td>
+</tr><tr><td class=r>143489</td><td>= Czech Republic</td>
+<td class='r b'>143575</td><td class=b>= Albania</td>
+</tr><tr><td class=r>143491</td><td>= Israel</td>
+<td class='r b'>143576</td><td class=b>= Benin</td>
+</tr><tr><td class=r>143492</td><td>= Ukraine</td>
+<td class='r b'>143577</td><td class=b>= Bhutan</td>
+</tr><tr><td class=r>143493</td><td>= Kuwait</td>
+<td class='r b'>143578</td><td class=b>= Burkina Faso</td>
+</tr><tr><td class=r>143494</td><td>= Croatia</td>
+<td class='r b'>143579</td><td class=b>= Cambodia</td>
+</tr><tr><td class=r>143495</td><td>= Costa Rica</td>
+<td class='r b'>143580</td><td class=b>= Cape Verde</td>
+</tr><tr><td class=r>143496</td><td>= Slovakia</td>
+<td class='r b'>143581</td><td class=b>= Chad</td>
+</tr><tr><td class=r>143497</td><td>= Lebanon</td>
+<td class='r b'>143582</td><td class=b>= Republic of the Congo</td>
+</tr><tr><td class=r>143498</td><td>= Qatar</td>
+<td class='r b'>143583</td><td class=b>= Fiji</td>
+</tr><tr><td class=r>143499</td><td>= Slovenia</td>
+<td class='r b'>143584</td><td class=b>= Gambia</td>
+</tr><tr><td class=r>143501</td><td>= Colombia</td>
+<td class='r b'>143585</td><td class=b>= Guinea-Bissau</td>
+</tr><tr><td class=r>143502</td><td>= Venezuela</td>
+<td class='r b'>143586</td><td class=b>= Kyrgyzstan</td>
+</tr><tr><td class=r>143503</td><td>= Brazil</td>
+<td class='r b'>143587</td><td class=b>= Lao People&#39;s Democratic Republic</td>
+</tr><tr><td class=r>143504</td><td>= Guatemala</td>
+<td class='r b'>143588</td><td class=b>= Liberia</td>
+</tr><tr><td class=r>143505</td><td>= Argentina</td>
+<td class='r b'>143589</td><td class=b>= Malawi</td>
+</tr><tr><td class=r>143506</td><td>= El Salvador</td>
+<td class='r b'>143590</td><td class=b>= Mauritania</td>
+</tr><tr><td class=r>143507</td><td>= Peru</td>
+<td class='r b'>143591</td><td class=b>= Federated States of Micronesia</td>
+</tr><tr><td class=r>143508</td><td>= Dominican Republic</td>
+<td class='r b'>143592</td><td class=b>= Mongolia</td>
+</tr><tr><td class=r>143509</td><td>= Ecuador</td>
+<td class='r b'>143593</td><td class=b>= Mozambique</td>
+</tr><tr><td class=r>143510</td><td>= Honduras</td>
+<td class='r b'>143594</td><td class=b>= Namibia</td>
+</tr><tr><td class=r>143511</td><td>= Jamaica</td>
+<td class='r b'>143595</td><td class=b>= Palau</td>
+</tr><tr><td class=r>143512</td><td>= Nicaragua</td>
+<td class='r b'>143597</td><td class=b>= Papua New Guinea</td>
+</tr><tr><td class=r>143513</td><td>= Paraguay</td>
+<td class='r b'>143598</td><td class=b>= Sao Tome and Principe</td>
+</tr><tr><td class=r>143514</td><td>= Uruguay</td>
+<td class='r b'>143599</td><td class=b>= Seychelles</td>
+</tr><tr><td class=r>143515</td><td>= Macau</td>
+<td class='r b'>143600</td><td class=b>= Sierra Leone</td>
+</tr><tr><td class=r>143516</td><td>= Egypt</td>
+<td class='r b'>143601</td><td class=b>= Solomon Islands</td>
+</tr><tr><td class=r>143517</td><td>= Kazakhstan</td>
+<td class='r b'>143602</td><td class=b>= Swaziland</td>
+</tr><tr><td class=r>143518</td><td>= Estonia</td>
+<td class='r b'>143603</td><td class=b>= Tajikistan</td>
+</tr><tr><td class=r>143519</td><td>= Latvia</td>
+<td class='r b'>143604</td><td class=b>= Turkmenistan</td>
+</tr><tr><td class=r>143520</td><td>= Lithuania</td>
+<td class='r b'>143605</td><td class=b>= Zimbabwe</td>
+</tr><tr><td class=r>143521</td><td>= Malta</td>
+<td class='r b'>&nbsp;</td><td class=b>&nbsp;</td>
+</tr></table></td></tr></table></blockquote>
+
+<h2><a name='iTunesInfo'>QuickTime iTunesInfo Tags</a></h2>
+<p>ExifTool will extract any iTunesInfo tags that exist, even if they are not
+defined in this table.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'Encoding Params'</td>
+<td>EncodingParams</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#EncodingParams'>QuickTime EncodingParams Tags</a></td></tr>
+<tr class=b>
+<td>'iTunEXTC'</td>
+<td>ContentRating</td>
+<td class=c>N</td>
+<td><span class=s><span class=n>(standard | rating | score | reasons)</span></span></td></tr>
+<tr>
+<td>'iTunMOVI'</td>
+<td>iTunMOVI</td>
+<td class=c>-</td>
+<td>--&gt; <a href='PLIST.html'>PLIST Tags</a></td></tr>
+<tr class=b>
+<td>'iTunNORM'</td>
+<td>VolumeNormalization</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'iTunSMPB'</td>
+<td>iTunSMPB</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'iTunes_CDDB_1'</td>
+<td>CDDB1Info</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'iTunes_CDDB_TrackNumber'</td>
+<td>CDDBTrackNumber</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'tool'</td>
+<td>iTunTool</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='EncodingParams'>QuickTime EncodingParams Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'abrt'</td>
+<td>AudioAvailableBitRateRange</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'acbf'</td>
+<td>AudioBitRateControlMode</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'acef'</td>
+<td>AudioExtendFrequencies</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'brat'</td>
+<td>AudioCurrentTargetBitRate</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'cdcv'</td>
+<td>AudioComponentVersion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'cmnc'</td>
+<td>AudioAvailableNumberChannels</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'init'</td>
+<td>AudioIsInitialized</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'lmrc'</td>
+<td>AudioDoesSampleRateConversion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'mdel'</td>
+<td>AudioMinimumDelayMode</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'mnip'</td>
+<td>AudioMinimumNumberInputPackets</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'mnop'</td>
+<td>AudioMinimumNumberOutputPackets</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'oppr'</td>
+<td>AudioOutputPrecedence</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'pad0'</td>
+<td>AudioZeroFramesPadded</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'pakb'</td>
+<td>AudioMaximumPacketByteSize</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'pakd'</td>
+<td>AudioRequiresPacketDescription</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'pakf'</td>
+<td>AudioPacketFrameSize</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'prmm'</td>
+<td>AudioCodecPrimeMethod</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'srcq'</td>
+<td>AudioQualitySetting</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'tbuf'</td>
+<td>AudioInputBufferSize</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'ubuf'</td>
+<td>AudioUsedInputBufferSize</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'ursr'</td>
+<td>AudioUseRecommendedSampleRate</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'vbrq'</td>
+<td>AudioVBRQuality</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'vers'</td>
+<td>AudioEncodingParamsVersion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'vpk?'</td>
+<td>AudioHasVariablePacketByteSizes</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='Keys'>QuickTime Keys Tags</a></h2>
+<p>This directory contains a list of key names which are used to decode
+ItemList tags written by the &quot;mdta&quot; handler.  The prefix of
+&quot;com.apple.quicktime.&quot; has been removed from all TagID&#39;s below.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'Encoded_With'</td>
+<td>EncodedWith</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'album'</td>
+<td>Album</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'artist'</td>
+<td>Artist</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'artwork'</td>
+<td>Artwork</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'author'</td>
+<td>Author</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'camera.framereadouttimeinmicroseconds'</td>
+<td>FrameReadoutTime</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'camera.identifier'</td>
+<td>CameraIdentifier</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'comment'</td>
+<td>Comment</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'copyright'</td>
+<td>Copyright</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'creationdate'</td>
+<td>CreationDate</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'description'</td>
+<td>Description</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'direction.facing'</td>
+<td>CameraDirection</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'direction.motion'</td>
+<td>CameraMotion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'director'</td>
+<td>Director</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'genre'</td>
+<td>Genre</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'information'</td>
+<td>Information</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'keywords'</td>
+<td>Keywords</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'location.ISO6709'</td>
+<td>GPSCoordinates</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'location.body'</td>
+<td>LocationBody</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'location.date'</td>
+<td>LocationDate</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'location.name'</td>
+<td>LocationName</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'location.note'</td>
+<td>LocationNote</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'location.role'</td>
+<td>LocationRole</td>
+<td class=c>N</td>
+<td><span class=s>0 = Shooting Location
+  <br>1 = Real Location
+  <br>2 = Fictional Location</span></td></tr>
+<tr class=b>
+<td>'make'</td>
+<td>Make</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'model'</td>
+<td>Model</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'player.movie.audio.balance'</td>
+<td>Balance</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'player.movie.audio.bass'</td>
+<td>Bass</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'player.movie.audio.gain'</td>
+<td>AudioGain</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'player.movie.audio.mute'</td>
+<td>Mute</td>
+<td class=c>N</td>
+<td><span class=s>0 = Off
+  <br>1 = On</span></td></tr>
+<tr class=b>
+<td>'player.movie.audio.pitchshift'</td>
+<td>PitchShift</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'player.movie.audio.treble'</td>
+<td>Trebel</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'player.movie.visual.brightness'</td>
+<td>Brightness</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'player.movie.visual.color'</td>
+<td>Color</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'player.movie.visual.contrast'</td>
+<td>Contrast</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'player.movie.visual.tint'</td>
+<td>Tint</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'player.version'</td>
+<td>PlayerVersion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'publisher'</td>
+<td>Publisher</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'rating.user'</td>
+<td>UserRating</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'software'</td>
+<td>Software</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'version'</td>
+<td>Version</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'year'</td>
+<td>Year</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='Movie'>QuickTime Movie Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'cmov'</td>
+<td>CompressedMovie</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#CMovie'>QuickTime CMovie Tags</a></td></tr>
+<tr class=b>
+<td>'htka'</td>
+<td>HTCTrack</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#Track'>QuickTime Track Tags</a></td></tr>
+<tr>
+<td>'iods'</td>
+<td>InitialObjectDescriptor?</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'meta'</td>
+<td>Meta</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#Meta'>QuickTime Meta Tags</a></td></tr>
+<tr>
+<td>'mvhd'</td>
+<td>MovieHeader</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#MovieHeader'>QuickTime MovieHeader Tags</a></td></tr>
+<tr class=b>
+<td>'trak'</td>
+<td>Track</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#Track'>QuickTime Track Tags</a></td></tr>
+<tr>
+<td>'udta'</td>
+<td>UserData</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#UserData'>QuickTime UserData Tags</a></td></tr>
+<tr class=b>
+<td>'uuid'</td>
+<td>UUID-USMT
+  <br>UUID-Canon
+  <br>UUID-Unknown?</td>
+<td class=c>-<br>-<br>N</td>
+<td>--&gt; <a href='QuickTime.html#UserMedia'>QuickTime UserMedia Tags</a>
+  <br>--&gt; <a href='Canon.html#uuid'>Canon uuid Tags</a></td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='CMovie'>QuickTime CMovie Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'dcom'</td>
+<td>Compression</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='Track'>QuickTime Track Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'mdia'</td>
+<td>Media</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#Media'>QuickTime Media Tags</a></td></tr>
+<tr class=b>
+<td>'meta'</td>
+<td>Meta</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#Meta'>QuickTime Meta Tags</a></td></tr>
+<tr>
+<td>'tapt'</td>
+<td>TrackAperture</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#TrackAperture'>QuickTime TrackAperture Tags</a></td></tr>
+<tr class=b>
+<td>'tkhd'</td>
+<td>TrackHeader</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#TrackHeader'>QuickTime TrackHeader Tags</a></td></tr>
+<tr>
+<td>'tref'</td>
+<td>TrackRef</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#TrackRef'>QuickTime TrackRef Tags</a></td></tr>
+<tr class=b>
+<td>'udta'</td>
+<td>UserData</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#UserData'>QuickTime UserData Tags</a></td></tr>
+<tr>
+<td>'uuid'</td>
+<td>UUID-USMT
+  <br>UUID-Unknown?</td>
+<td class=c>-<br>N</td>
+<td>--&gt; <a href='QuickTime.html#UserMedia'>QuickTime UserMedia Tags</a></td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='Media'>QuickTime Media Tags</a></h2>
+<p>MP4 media box.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'hdlr'</td>
+<td>Handler</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#Handler'>QuickTime Handler Tags</a></td></tr>
+<tr class=b>
+<td>'mdhd'</td>
+<td>MediaHeader</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#MediaHeader'>QuickTime MediaHeader Tags</a></td></tr>
+<tr>
+<td>'minf'</td>
+<td>MediaInfo</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#MediaInfo'>QuickTime MediaInfo Tags</a></td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='MediaHeader'>QuickTime MediaHeader Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index4</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='0 = 0x0'>0</td>
+<td>MediaHeaderVersion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='1 = 0x1'>1</td>
+<td>MediaCreateDate</td>
+<td class=c>int32u</td>
+<td><span class=s><span class=n>(converted from UTC to local time if the QuickTimeUTC option is set)</span></span></td></tr>
+<tr>
+<td class=r title='2 = 0x2'>2</td>
+<td>MediaModifyDate</td>
+<td class=c>int32u</td>
+<td><span class=s><span class=n>(converted from UTC to local time if the QuickTimeUTC option is set)</span></span></td></tr>
+<tr class=b>
+<td class=r title='3 = 0x3'>3</td>
+<td>MediaTimeScale</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td class=r title='4 = 0x4'>4</td>
+<td>MediaDuration</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='5 = 0x5'>5</td>
+<td>MediaLanguageCode</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='MediaInfo'>QuickTime MediaInfo Tags</a></h2>
+<p>MP4 media info box.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'dinf'</td>
+<td>DataInfo</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#DataInfo'>QuickTime DataInfo Tags</a></td></tr>
+<tr class=b>
+<td>'gmhd'</td>
+<td>GenMediaHeader</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#GenMediaHeader'>QuickTime GenMediaHeader Tags</a></td></tr>
+<tr>
+<td>'hdlr'</td>
+<td>Handler</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#Handler'>QuickTime Handler Tags</a></td></tr>
+<tr class=b>
+<td>'hmhd'</td>
+<td>HintHeader</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#HintHeader'>QuickTime HintHeader Tags</a></td></tr>
+<tr>
+<td>'nmhd'</td>
+<td>NullMediaHeader?</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'smhd'</td>
+<td>AudioHeader</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#AudioHeader'>QuickTime AudioHeader Tags</a></td></tr>
+<tr>
+<td>'stbl'</td>
+<td>SampleTable</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#SampleTable'>QuickTime SampleTable Tags</a></td></tr>
+<tr class=b>
+<td>'vmhd'</td>
+<td>VideoHeader</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#VideoHeader'>QuickTime VideoHeader Tags</a></td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='DataInfo'>QuickTime DataInfo Tags</a></h2>
+<p>MP4 data information box.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'dref'</td>
+<td>DataRef</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#DataRef'>QuickTime DataRef Tags</a></td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='DataRef'>QuickTime DataRef Tags</a></h2>
+<p>MP4 data reference box.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'url '</td>
+<td>URL</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'urn '</td>
+<td>URN</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='GenMediaHeader'>QuickTime GenMediaHeader Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'gmin'</td>
+<td>GenMediaInfo</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#GenMediaInfo'>QuickTime GenMediaInfo Tags</a></td></tr>
+<tr class=b>
+<td>'text'</td>
+<td>Text?</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'tmcd'</td>
+<td>TimeCode</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#TimeCode'>QuickTime TimeCode Tags</a></td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='GenMediaInfo'>QuickTime GenMediaInfo Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index1</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='0 = 0x0'>0</td>
+<td>GenMediaVersion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='1 = 0x1'>1</td>
+<td>GenFlags</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td class=r title='4 = 0x4'>4</td>
+<td>GenGraphicsMode</td>
+<td class=c>N</td>
+<td>--&gt; <a href='QuickTime.html#GraphicsMode'>QuickTime GraphicsMode Values</a></td></tr>
+<tr class=b>
+<td class=r title='6 = 0x6'>6</td>
+<td>GenOpColor</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td class=r title='12 = 0xc'>12</td>
+<td>GenBalance</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='GraphicsMode'>QuickTime GraphicsMode Values</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class='inner sep' cellspacing=1>
+<tr class=h><th>Value</th><th>GraphicsMode</th><th>Value</th><th>GraphicsMode</th><th>Value</th><th>GraphicsMode</th></tr>
+<tr><td class=r>0x0</td><td>= srcCopy</td>
+<td class='r b'>0xb</td><td class=b>= patBic</td>
+<td class=r>0x26</td><td>= subOver</td>
+</tr><tr><td class=r>0x1</td><td>= srcOr</td>
+<td class='r b'>0xc</td><td class=b>= notPatCopy</td>
+<td class=r>0x27</td><td>= addMin</td>
+</tr><tr><td class=r>0x2</td><td>= srcXor</td>
+<td class='r b'>0xd</td><td class=b>= notPatOr</td>
+<td class=r>0x31</td><td>= grayishTextOr</td>
+</tr><tr><td class=r>0x3</td><td>= srcBic</td>
+<td class='r b'>0xe</td><td class=b>= notPatXor</td>
+<td class=r>0x32</td><td>= hilite</td>
+</tr><tr><td class=r>0x4</td><td>= notSrcCopy</td>
+<td class='r b'>0xf</td><td class=b>= notPatBic</td>
+<td class=r>0x40</td><td>= ditherCopy</td>
+</tr><tr><td class=r>0x5</td><td>= notSrcOr</td>
+<td class='r b'>0x20</td><td class=b>= blend</td>
+<td class=r>0x100</td><td>= Alpha</td>
+</tr><tr><td class=r>0x6</td><td>= notSrcXor</td>
+<td class='r b'>0x21</td><td class=b>= addPin</td>
+<td class=r>0x101</td><td>= White Alpha</td>
+</tr><tr><td class=r>0x7</td><td>= notSrcBic</td>
+<td class='r b'>0x22</td><td class=b>= addOver</td>
+<td class=r>0x102</td><td>= Pre-multiplied Black Alpha</td>
+</tr><tr><td class=r>0x8</td><td>= patCopy</td>
+<td class='r b'>0x23</td><td class=b>= subPin</td>
+<td class=r>0x110</td><td>= Component Alpha</td>
+</tr><tr><td class=r>0x9</td><td>= patOr</td>
+<td class='r b'>0x24</td><td class=b>= transparent</td>
+<td class=r>&nbsp;</td><td>&nbsp;</td>
+</tr><tr><td class=r>0xa</td><td>= patXor</td>
+<td class='r b'>0x25</td><td class=b>= addMax</td>
+<td class=r>&nbsp;</td><td>&nbsp;</td>
+</tr></table></td></tr></table></blockquote>
+
+<h2><a name='TimeCode'>QuickTime TimeCode Tags</a></h2>
 <blockquote>
 <table class=frame><tr><td>
-<table class='inner sep' cellspacing=1>
-<tr class=h><th>Value</th><th>AppleStoreCountry</th><th>Value</th><th>AppleStoreCountry</th></tr>
-<tr><td class=r>143441</td><td>= United States</td>
-<td class='r b'>143523</td><td class=b>= Moldova</td>
-</tr><tr><td class=r>143442</td><td>= France</td>
-<td class='r b'>143524</td><td class=b>= Armenia</td>
-</tr><tr><td class=r>143443</td><td>= Germany</td>
-<td class='r b'>143525</td><td class=b>= Botswana</td>
-</tr><tr><td class=r>143444</td><td>= United Kingdom</td>
-<td class='r b'>143526</td><td class=b>= Bulgaria</td>
-</tr><tr><td class=r>143445</td><td>= Austria</td>
-<td class='r b'>143528</td><td class=b>= Jordan</td>
-</tr><tr><td class=r>143446</td><td>= Belgium</td>
-<td class='r b'>143529</td><td class=b>= Kenya</td>
-</tr><tr><td class=r>143447</td><td>= Finland</td>
-<td class='r b'>143530</td><td class=b>= Macedonia</td>
-</tr><tr><td class=r>143448</td><td>= Greece</td>
-<td class='r b'>143531</td><td class=b>= Madagascar</td>
-</tr><tr><td class=r>143449</td><td>= Ireland</td>
-<td class='r b'>143532</td><td class=b>= Mali</td>
-</tr><tr><td class=r>143450</td><td>= Italy</td>
-<td class='r b'>143533</td><td class=b>= Mauritius</td>
-</tr><tr><td class=r>143451</td><td>= Luxembourg</td>
-<td class='r b'>143534</td><td class=b>= Niger</td>
-</tr><tr><td class=r>143452</td><td>= Netherlands</td>
-<td class='r b'>143535</td><td class=b>= Senegal</td>
-</tr><tr><td class=r>143453</td><td>= Portugal</td>
-<td class='r b'>143536</td><td class=b>= Tunisia</td>
-</tr><tr><td class=r>143454</td><td>= Spain</td>
-<td class='r b'>143537</td><td class=b>= Uganda</td>
-</tr><tr><td class=r>143455</td><td>= Canada</td>
-<td class='r b'>143538</td><td class=b>= Anguilla</td>
-</tr><tr><td class=r>143456</td><td>= Sweden</td>
-<td class='r b'>143539</td><td class=b>= Bahamas</td>
-</tr><tr><td class=r>143457</td><td>= Norway</td>
-<td class='r b'>143540</td><td class=b>= Antigua and Barbuda</td>
-</tr><tr><td class=r>143458</td><td>= Denmark</td>
-<td class='r b'>143541</td><td class=b>= Barbados</td>
-</tr><tr><td class=r>143459</td><td>= Switzerland</td>
-<td class='r b'>143542</td><td class=b>= Bermuda</td>
-</tr><tr><td class=r>143460</td><td>= Australia</td>
-<td class='r b'>143543</td><td class=b>= British Virgin Islands</td>
-</tr><tr><td class=r>143461</td><td>= New Zealand</td>
-<td class='r b'>143544</td><td class=b>= Cayman Islands</td>
-</tr><tr><td class=r>143462</td><td>= Japan</td>
-<td class='r b'>143545</td><td class=b>= Dominica</td>
-</tr><tr><td class=r>143463</td><td>= Hong Kong</td>
-<td class='r b'>143546</td><td class=b>= Grenada</td>
-</tr><tr><td class=r>143464</td><td>= Singapore</td>
-<td class='r b'>143547</td><td class=b>= Montserrat</td>
-</tr><tr><td class=r>143465</td><td>= China</td>
-<td class='r b'>143548</td><td class=b>= St. Kitts and Nevis</td>
-</tr><tr><td class=r>143466</td><td>= Republic of Korea</td>
-<td class='r b'>143549</td><td class=b>= St. Lucia</td>
-</tr><tr><td class=r>143467</td><td>= India</td>
-<td class='r b'>143550</td><td class=b>= St. Vincent and The Grenadines</td>
-</tr><tr><td class=r>143468</td><td>= Mexico</td>
-<td class='r b'>143551</td><td class=b>= Trinidad and Tobago</td>
-</tr><tr><td class=r>143469</td><td>= Russia</td>
-<td class='r b'>143552</td><td class=b>= Turks and Caicos</td>
-</tr><tr><td class=r>143470</td><td>= Taiwan</td>
-<td class='r b'>143553</td><td class=b>= Guyana</td>
-</tr><tr><td class=r>143471</td><td>= Vietnam</td>
-<td class='r b'>143554</td><td class=b>= Suriname</td>
-</tr><tr><td class=r>143472</td><td>= South Africa</td>
-<td class='r b'>143555</td><td class=b>= Belize</td>
-</tr><tr><td class=r>143473</td><td>= Malaysia</td>
-<td class='r b'>143556</td><td class=b>= Bolivia</td>
-</tr><tr><td class=r>143474</td><td>= Philippines</td>
-<td class='r b'>143557</td><td class=b>= Cyprus</td>
-</tr><tr><td class=r>143475</td><td>= Thailand</td>
-<td class='r b'>143558</td><td class=b>= Iceland</td>
-</tr><tr><td class=r>143476</td><td>= Indonesia</td>
-<td class='r b'>143559</td><td class=b>= Bahrain</td>
-</tr><tr><td class=r>143477</td><td>= Pakistan</td>
-<td class='r b'>143560</td><td class=b>= Brunei Darussalam</td>
-</tr><tr><td class=r>143478</td><td>= Poland</td>
-<td class='r b'>143561</td><td class=b>= Nigeria</td>
-</tr><tr><td class=r>143479</td><td>= Saudi Arabia</td>
-<td class='r b'>143562</td><td class=b>= Oman</td>
-</tr><tr><td class=r>143480</td><td>= Turkey</td>
-<td class='r b'>143563</td><td class=b>= Algeria</td>
-</tr><tr><td class=r>143481</td><td>= United Arab Emirates</td>
-<td class='r b'>143564</td><td class=b>= Angola</td>
-</tr><tr><td class=r>143482</td><td>= Hungary</td>
-<td class='r b'>143565</td><td class=b>= Belarus</td>
-</tr><tr><td class=r>143483</td><td>= Chile</td>
-<td class='r b'>143566</td><td class=b>= Uzbekistan</td>
-</tr><tr><td class=r>143484</td><td>= Nepal</td>
-<td class='r b'>143568</td><td class=b>= Azerbaijan</td>
-</tr><tr><td class=r>143485</td><td>= Panama</td>
-<td class='r b'>143571</td><td class=b>= Yemen</td>
-</tr><tr><td class=r>143486</td><td>= Sri Lanka</td>
-<td class='r b'>143572</td><td class=b>= Tanzania</td>
-</tr><tr><td class=r>143487</td><td>= Romania</td>
-<td class='r b'>143573</td><td class=b>= Ghana</td>
-</tr><tr><td class=r>143489</td><td>= Czech Republic</td>
-<td class='r b'>143575</td><td class=b>= Albania</td>
-</tr><tr><td class=r>143491</td><td>= Israel</td>
-<td class='r b'>143576</td><td class=b>= Benin</td>
-</tr><tr><td class=r>143492</td><td>= Ukraine</td>
-<td class='r b'>143577</td><td class=b>= Bhutan</td>
-</tr><tr><td class=r>143493</td><td>= Kuwait</td>
-<td class='r b'>143578</td><td class=b>= Burkina Faso</td>
-</tr><tr><td class=r>143494</td><td>= Croatia</td>
-<td class='r b'>143579</td><td class=b>= Cambodia</td>
-</tr><tr><td class=r>143495</td><td>= Costa Rica</td>
-<td class='r b'>143580</td><td class=b>= Cape Verde</td>
-</tr><tr><td class=r>143496</td><td>= Slovakia</td>
-<td class='r b'>143581</td><td class=b>= Chad</td>
-</tr><tr><td class=r>143497</td><td>= Lebanon</td>
-<td class='r b'>143582</td><td class=b>= Republic of the Congo</td>
-</tr><tr><td class=r>143498</td><td>= Qatar</td>
-<td class='r b'>143583</td><td class=b>= Fiji</td>
-</tr><tr><td class=r>143499</td><td>= Slovenia</td>
-<td class='r b'>143584</td><td class=b>= Gambia</td>
-</tr><tr><td class=r>143501</td><td>= Colombia</td>
-<td class='r b'>143585</td><td class=b>= Guinea-Bissau</td>
-</tr><tr><td class=r>143502</td><td>= Venezuela</td>
-<td class='r b'>143586</td><td class=b>= Kyrgyzstan</td>
-</tr><tr><td class=r>143503</td><td>= Brazil</td>
-<td class='r b'>143587</td><td class=b>= Lao People&#39;s Democratic Republic</td>
-</tr><tr><td class=r>143504</td><td>= Guatemala</td>
-<td class='r b'>143588</td><td class=b>= Liberia</td>
-</tr><tr><td class=r>143505</td><td>= Argentina</td>
-<td class='r b'>143589</td><td class=b>= Malawi</td>
-</tr><tr><td class=r>143506</td><td>= El Salvador</td>
-<td class='r b'>143590</td><td class=b>= Mauritania</td>
-</tr><tr><td class=r>143507</td><td>= Peru</td>
-<td class='r b'>143591</td><td class=b>= Federated States of Micronesia</td>
-</tr><tr><td class=r>143508</td><td>= Dominican Republic</td>
-<td class='r b'>143592</td><td class=b>= Mongolia</td>
-</tr><tr><td class=r>143509</td><td>= Ecuador</td>
-<td class='r b'>143593</td><td class=b>= Mozambique</td>
-</tr><tr><td class=r>143510</td><td>= Honduras</td>
-<td class='r b'>143594</td><td class=b>= Namibia</td>
-</tr><tr><td class=r>143511</td><td>= Jamaica</td>
-<td class='r b'>143595</td><td class=b>= Palau</td>
-</tr><tr><td class=r>143512</td><td>= Nicaragua</td>
-<td class='r b'>143597</td><td class=b>= Papua New Guinea</td>
-</tr><tr><td class=r>143513</td><td>= Paraguay</td>
-<td class='r b'>143598</td><td class=b>= Sao Tome and Principe</td>
-</tr><tr><td class=r>143514</td><td>= Uruguay</td>
-<td class='r b'>143599</td><td class=b>= Seychelles</td>
-</tr><tr><td class=r>143515</td><td>= Macau</td>
-<td class='r b'>143600</td><td class=b>= Sierra Leone</td>
-</tr><tr><td class=r>143516</td><td>= Egypt</td>
-<td class='r b'>143601</td><td class=b>= Solomon Islands</td>
-</tr><tr><td class=r>143517</td><td>= Kazakhstan</td>
-<td class='r b'>143602</td><td class=b>= Swaziland</td>
-</tr><tr><td class=r>143518</td><td>= Estonia</td>
-<td class='r b'>143603</td><td class=b>= Tajikistan</td>
-</tr><tr><td class=r>143519</td><td>= Latvia</td>
-<td class='r b'>143604</td><td class=b>= Turkmenistan</td>
-</tr><tr><td class=r>143520</td><td>= Lithuania</td>
-<td class='r b'>143605</td><td class=b>= Zimbabwe</td>
-</tr><tr><td class=r>143521</td><td>= Malta</td>
-<td class='r b'>&nbsp;</td><td class=b>&nbsp;</td>
-</tr></table></td></tr></table></blockquote>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'tcmi'</td>
+<td>TCMediaInfo</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#TCMediaInfo'>QuickTime TCMediaInfo Tags</a></td></tr>
+</table></td></tr></table></blockquote>
 
-<h2><a name='iTunesInfo'>QuickTime iTunesInfo Tags</a></h2>
-<p>ExifTool will extract any iTunesInfo tags that exist, even if they are not
-defined in this table.</p>
+<h2><a name='TCMediaInfo'>QuickTime TCMediaInfo Tags</a></h2>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
-<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<tr class=h><th>Index1</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'Encoding Params'</td>
-<td>EncodingParams</td>
-<td class=c>-</td>
-<td>--&gt; <a href='QuickTime.html#EncodingParams'>QuickTime EncodingParams Tags</a></td></tr>
+<td class=r title='4 = 0x4'>4</td>
+<td>TextFont</td>
+<td class=c>N</td>
+<td><span class=s>0 = System</span></td></tr>
 <tr class=b>
-<td>'iTunEXTC'</td>
-<td>ContentRating</td>
+<td class=r title='6 = 0x6'>6</td>
+<td>TextFace</td>
 <td class=c>N</td>
-<td><span class=s><span class=n>(standard | rating | score | reasons)</span></span></td></tr>
+<td><table class=cols><tr>
+  <td>0x0 = Plain
+  <br>Bit 0 = Bold
+  <br>Bit 1 = Italic
+  <br>Bit 2 = Underline</td><td>&nbsp;&nbsp;</td>
+  <td>Bit 3 = Outline
+  <br>Bit 4 = Shadow
+  <br>Bit 5 = Condense
+  <br>Bit 6 = Extend</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
 <tr>
-<td>'iTunMOVI'</td>
-<td>iTunMOVI</td>
-<td class=c>-</td>
-<td>--&gt; <a href='PLIST.html'>PLIST Tags</a></td></tr>
+<td class=r title='8 = 0x8'>8</td>
+<td>TextSize</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr class=b>
-<td>'iTunNORM'</td>
-<td>VolumeNormalization</td>
+<td class=r title='12 = 0xc'>12</td>
+<td>TextColor</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td class=r title='18 = 0x12'>18</td>
+<td>BackgroundColor</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='24 = 0x18'>24</td>
+<td>FontName</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='HintHeader'>QuickTime HintHeader Tags</a></h2>
+<p>MP4 hint media header.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index2</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'iTunSMPB'</td>
-<td>iTunSMPB</td>
+<td class=r title='2 = 0x2'>2</td>
+<td>MaxPDUSize</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'iTunes_CDDB_1'</td>
-<td>CDDB1Info</td>
+<td class=r title='3 = 0x3'>3</td>
+<td>AvgPDUSize</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'iTunes_CDDB_TrackNumber'</td>
-<td>CDDBTrackNumber</td>
+<td class=r title='4 = 0x4'>4</td>
+<td>MaxBitrate</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'tool'</td>
-<td>iTunTool</td>
+<td class=r title='6 = 0x6'>6</td>
+<td>AvgBitrate</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
-<h2><a name='EncodingParams'>QuickTime EncodingParams Tags</a></h2>
+<h2><a name='AudioHeader'>QuickTime AudioHeader Tags</a></h2>
+<p>MP4 audio media header.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index2</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='2 = 0x2'>2</td>
+<td>Balance</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='SampleTable'>QuickTime SampleTable Tags</a></h2>
+<p>MP4 sample table box.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
 <tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'abrt'</td>
-<td>AudioAvailableBitRateRange</td>
+<td>'co64'</td>
+<td>ChunkOffset64?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'acbf'</td>
-<td>AudioBitRateControlMode</td>
+<td>'cslg'</td>
+<td>CompositionToDecodeTimelineMapping?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'acef'</td>
-<td>AudioExtendFrequencies</td>
+<td>'ctts'</td>
+<td>CompositionTimeToSample?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'brat'</td>
-<td>AudioCurrentTargetBitRate</td>
+<td>'padb'</td>
+<td>SamplePaddingBits?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'cdcv'</td>
-<td>AudioComponentVersion</td>
+<td>'sbgp'</td>
+<td>SampleToGroup?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'cmnc'</td>
-<td>AudioAvailableNumberChannels</td>
+<td>'sdtp'</td>
+<td>IdependentAndDisposableSamples?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'init'</td>
-<td>AudioIsInitialized</td>
+<td>'sgpd'</td>
+<td>SampleGroupDescription?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'lmrc'</td>
-<td>AudioDoesSampleRateConversion</td>
+<td>'stco'</td>
+<td>ChunkOffset?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'mdel'</td>
-<td>AudioMinimumDelayMode</td>
+<td>'stdp'</td>
+<td>SampleDegradationPriority?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'mnip'</td>
-<td>AudioMinimumNumberInputPackets</td>
+<td>'stps'</td>
+<td>PartialSyncSamples</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'mnop'</td>
-<td>AudioMinimumNumberOutputPackets</td>
+<td>'stsc'</td>
+<td>SampleToChunk?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'oppr'</td>
-<td>AudioOutputPrecedence</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
+<td>'stsd'</td>
+<td>AudioSampleDesc
+  <br>VideoSampleDesc
+  <br>HintSampleDesc
+  <br>OtherSampleDesc</td>
+<td class=c>-<br>-<br>-<br>-</td>
+<td>--&gt; <a href='QuickTime.html#AudioSampleDesc'>QuickTime AudioSampleDesc Tags</a>
+  <br>--&gt; <a href='QuickTime.html#ImageDesc'>QuickTime ImageDesc Tags</a>
+  <br>--&gt; <a href='QuickTime.html#HintSampleDesc'>QuickTime HintSampleDesc Tags</a>
+  <br>--&gt; <a href='QuickTime.html#OtherSampleDesc'>QuickTime OtherSampleDesc Tags</a></td></tr>
 <tr>
-<td>'pad0'</td>
-<td>AudioZeroFramesPadded</td>
+<td>'stsh'</td>
+<td>ShadowSyncSampleTable?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'pakb'</td>
-<td>AudioMaximumPacketByteSize</td>
+<td>'stss'</td>
+<td>SyncSampleTable?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'pakd'</td>
-<td>AudioRequiresPacketDescription</td>
+<td>'stsz'</td>
+<td>SampleSizes?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'pakf'</td>
-<td>AudioPacketFrameSize</td>
-<td class=c>N</td>
-<td>&nbsp;</td></tr>
+<td>'stts'</td>
+<td>VideoFrameRate
+  <br>TimeToSampleTable?</td>
+<td class=c>N<br>N</td>
+<td><span class=s><span class=n>(average rate calculated from time-to-sample table for video media)</span></span></td></tr>
 <tr>
-<td>'prmm'</td>
-<td>AudioCodecPrimeMethod</td>
+<td>'stz2'</td>
+<td>CompactSampleSizes?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'srcq'</td>
-<td>AudioQualitySetting</td>
+<td>'subs'</td>
+<td>Sub-sampleInformation?</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='AudioSampleDesc'>QuickTime AudioSampleDesc Tags</a></h2>
+<p>MP4 audio sample description.  This hybrid atom contains both data and child
+atoms.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>ID/Index</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'tbuf'</td>
-<td>AudioInputBufferSize</td>
+<td class=r title='4 = 0x4'>4</td>
+<td>AudioFormat</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'ubuf'</td>
-<td>AudioUsedInputBufferSize</td>
+<td class=r title='20 = 0x14'>20</td>
+<td>AudioVendorID</td>
 <td class=c>N</td>
-<td>&nbsp;</td></tr>
+<td>--&gt; <a href='QuickTime.html#VendorID'>QuickTime VendorID Values</a></td></tr>
 <tr>
-<td>'ursr'</td>
-<td>AudioUseRecommendedSampleRate</td>
+<td class=r title='24 = 0x18'>24</td>
+<td>AudioChannels</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'vbrq'</td>
-<td>AudioVBRQuality</td>
+<td class=r title='26 = 0x1a'>26</td>
+<td>AudioBitsPerSample</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'vers'</td>
-<td>AudioEncodingParamsVersion</td>
+<td class=r title='32 = 0x20'>32</td>
+<td>AudioSampleRate</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'vpk?'</td>
-<td>AudioHasVariablePacketByteSizes</td>
+<td>'damr'</td>
+<td>DecodeConfig</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#DecodeConfig'>QuickTime DecodeConfig Tags</a></td></tr>
+<tr>
+<td>'pinf'</td>
+<td>PurchaseInfo</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#ProtectionInfo'>QuickTime ProtectionInfo Tags</a></td></tr>
+<tr class=b>
+<td>'sinf'</td>
+<td>ProtectionInfo</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#ProtectionInfo'>QuickTime ProtectionInfo Tags</a></td></tr>
+<tr>
+<td>'wave'</td>
+<td>Wave</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#Wave'>QuickTime Wave Tags</a></td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='DecodeConfig'>QuickTime DecodeConfig Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index1</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='0 = 0x0'>0</td>
+<td>EncoderVendor</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='4 = 0x4'>4</td>
+<td>EncoderVersion</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
-<h2><a name='Keys'>QuickTime Keys Tags</a></h2>
-<p>This directory contains a list of key names which are used to decode
-ItemList tags written by the &quot;mdta&quot; handler.  The prefix of
-&quot;com.apple.quicktime.&quot; has been removed from all TagID&#39;s below.</p>
+<h2><a name='ProtectionInfo'>QuickTime ProtectionInfo Tags</a></h2>
+<p>Child atoms found in &quot;sinf&quot; and/or &quot;pinf&quot; atoms.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
 <tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'Encoded_With'</td>
-<td>EncodedWith</td>
+<td>'frma'</td>
+<td>OriginalFormat</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'album'</td>
-<td>Album</td>
+<td>'schi'</td>
+<td>SchemeInfo</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#SchemeInfo'>QuickTime SchemeInfo Tags</a></td></tr>
+<tr>
+<td>'schm'</td>
+<td>SchemeType</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#SchemeType'>QuickTime SchemeType Tags</a></td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='SchemeInfo'>QuickTime SchemeInfo Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'cert'</td>
+<td>Certificate</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'iviv'</td>
+<td>InitializationVector</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'artist'</td>
-<td>Artist</td>
+<td>'key '</td>
+<td>KeyID</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td>'name'</td>
+<td>UserName</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'righ'</td>
+<td>Rights</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#Rights'>QuickTime Rights Tags</a></td></tr>
+<tr class=b>
+<td>'user'</td>
+<td>UserID</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='Rights'>QuickTime Rights Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'aver'</td>
+<td>VersionRestrictions</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'artwork'</td>
-<td>Artwork</td>
+<td>'medi'</td>
+<td>MediaFlags</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'author'</td>
-<td>Author</td>
+<td>'mode'</td>
+<td>ModeFlags</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'camera.framereadouttimeinmicroseconds'</td>
-<td>FrameReadoutTime</td>
+<td>'plat'</td>
+<td>Platform</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'camera.identifier'</td>
-<td>CameraIdentifier</td>
+<td>'song'</td>
+<td>ItemID</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'comment'</td>
-<td>Comment</td>
+<td>'tool'</td>
+<td>ItemTool</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'copyright'</td>
-<td>Copyright</td>
+<td>'tran'</td>
+<td>TransactionID</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'creationdate'</td>
-<td>CreationDate</td>
+<td>'veID'</td>
+<td>ItemVendorID</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='SchemeType'>QuickTime SchemeType Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index1</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'description'</td>
-<td>Description</td>
+<td class=r title='4 = 0x4'>4</td>
+<td>SchemeType</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'direction.facing'</td>
-<td>CameraDirection</td>
+<td class=r title='8 = 0x8'>8</td>
+<td>SchemeVersion</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'direction.motion'</td>
-<td>CameraMotion</td>
+<td class=r title='10 = 0xa'>10</td>
+<td>SchemeURL</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
-<td>'director'</td>
-<td>Director</td>
+</table></td></tr></table></blockquote>
+
+<h2><a name='Wave'>QuickTime Wave Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'frma'</td>
+<td>PurchaseFileFormat</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='ImageDesc'>QuickTime ImageDesc Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>ID/Index</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'genre'</td>
-<td>Genre</td>
+<td class=r title='2 = 0x2'>2</td>
+<td>CompressorID</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'information'</td>
-<td>Information</td>
+<td class=r title='10 = 0xa'>10</td>
+<td>VendorID</td>
 <td class=c>N</td>
-<td>&nbsp;</td></tr>
+<td>--&gt; <a href='QuickTime.html#VendorID'>QuickTime VendorID Values</a></td></tr>
 <tr>
-<td>'keywords'</td>
-<td>Keywords</td>
+<td class=r title='16 = 0x10'>16</td>
+<td>SourceImageWidth</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'location.ISO6709'</td>
-<td>GPSCoordinates</td>
+<td class=r title='17 = 0x11'>17</td>
+<td>SourceImageHeight</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'location.body'</td>
-<td>LocationBody</td>
+<td class=r title='18 = 0x12'>18</td>
+<td>XResolution</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'location.date'</td>
-<td>LocationDate</td>
+<td class=r title='20 = 0x14'>20</td>
+<td>YResolution</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'location.name'</td>
-<td>LocationName</td>
+<td class=r title='25 = 0x19'>25</td>
+<td>CompressorName</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'location.note'</td>
-<td>LocationNote</td>
+<td class=r title='41 = 0x29'>41</td>
+<td>BitDepth</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'location.role'</td>
-<td>LocationRole</td>
-<td class=c>N</td>
-<td><span class=s>0 = Shooting Location
-  <br>1 = Real Location
-  <br>2 = Fictional Location</span></td></tr>
+<td>'btrt'</td>
+<td>BitrateInfo</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#Bitrate'>QuickTime Bitrate Tags</a></td></tr>
 <tr class=b>
-<td>'make'</td>
-<td>Make</td>
+<td>'clap'</td>
+<td>CleanAperture</td>
+<td class=c>-</td>
+<td>--&gt; <a href='QuickTime.html#CleanAperture'>QuickTime CleanAperture Tags</a></td></tr>
+<tr>
+<td>'colr'</td>
+<td>ColorRepresentation</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
+<tr class=b>
+<td>'fiel'</td>
+<td>VideoFieldOrder</td>
+<td class=c>N</td>
+<td><span class=s>[Value 0]
+  <br>1 = Progressive
+  <br>2 = 2:1 Interlaced</span></td></tr>
 <tr>
-<td>'model'</td>
-<td>Model</td>
+<td>'gama'</td>
+<td>Gamma</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'player.movie.audio.balance'</td>
-<td>Balance</td>
+<td>'pasp'</td>
+<td>PixelAspectRatio</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='Bitrate'>QuickTime Bitrate Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index4</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'player.movie.audio.bass'</td>
-<td>Bass</td>
+<td class=r title='0 = 0x0'>0</td>
+<td>BufferSize</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'player.movie.audio.gain'</td>
-<td>AudioGain</td>
+<td class=r title='1 = 0x1'>1</td>
+<td>MaxBitrate</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'player.movie.audio.mute'</td>
-<td>Mute</td>
+<td class=r title='2 = 0x2'>2</td>
+<td>AverageBitrate</td>
 <td class=c>N</td>
-<td><span class=s>0 = Off
-  <br>1 = On</span></td></tr>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='CleanAperture'>QuickTime CleanAperture Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index8</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='0 = 0x0'>0</td>
+<td>CleanApertureWidth</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr class=b>
-<td>'player.movie.audio.pitchshift'</td>
-<td>PitchShift</td>
+<td class=r title='1 = 0x1'>1</td>
+<td>CleanApertureHeight</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'player.movie.audio.treble'</td>
-<td>Trebel</td>
+<td class=r title='2 = 0x2'>2</td>
+<td>CleanApertureOffsetX</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'player.movie.visual.brightness'</td>
-<td>Brightness</td>
+<td class=r title='3 = 0x3'>3</td>
+<td>CleanApertureOffsetY</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='HintSampleDesc'>QuickTime HintSampleDesc Tags</a></h2>
+<p>MP4 hint sample description.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>ID/Index</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'player.movie.visual.color'</td>
-<td>Color</td>
+<td class=r title='4 = 0x4'>4</td>
+<td>HintFormat</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'player.movie.visual.contrast'</td>
-<td>Contrast</td>
+<td class=r title='16 = 0x10'>16</td>
+<td>HintTrackVersion</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'player.movie.visual.tint'</td>
-<td>Tint</td>
+<td class=r title='20 = 0x14'>20</td>
+<td>MaxPacketSize</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'player.version'</td>
-<td>PlayerVersion</td>
+<td>'snro'</td>
+<td>SequenceNumberRandomOffset</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'publisher'</td>
-<td>Publisher</td>
+<td>'tims'</td>
+<td>RTPTimeScale</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'rating.user'</td>
-<td>UserRating</td>
+<td>'tsro'</td>
+<td>TimestampRandomOffset</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='OtherSampleDesc'>QuickTime OtherSampleDesc Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'software'</td>
-<td>Software</td>
+<td title='0x0004 = 4'>0x0004</td>
+<td>OtherFormat</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'version'</td>
-<td>Version</td>
+<td>'ftab'</td>
+<td>FontTable</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='VideoHeader'>QuickTime VideoHeader Tags</a></h2>
+<p>MP4 video media header.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index2</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'year'</td>
-<td>Year</td>
+<td class=r title='2 = 0x2'>2</td>
+<td>GraphicsMode</td>
+<td class=c>N</td>
+<td>--&gt; <a href='QuickTime.html#GraphicsMode'>QuickTime GraphicsMode Values</a></td></tr>
+<tr class=b>
+<td class=r title='3 = 0x3'>3</td>
+<td>OpColor</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
@@ -4425,9 +4437,12 @@ multi-language user data tags found, even if they don&#39;t exist in this table.
 <td>--&gt; <a href='Pentax.html#PENT'>Pentax PENT Tags</a></td></tr>
 <tr>
 <td>'PXMN'</td>
-<td>MakerNotePentax5b</td>
-<td class=c>-</td>
-<td>--&gt; <a href='Pentax.html'>Pentax Tags</a></td></tr>
+<td>MakerNotePentax5b
+  <br>MakerNotePentax5c
+  <br>MakerNotePentaxUnknown</td>
+<td class=c>-<br>-<br>N</td>
+<td>--&gt; <a href='Pentax.html'>Pentax Tags</a>
+  <br>--&gt; <a href='Pentax.html'>Pentax Tags</a></td></tr>
 <tr class=b>
 <td>'PXTH'</td>
 <td>PentaxPreview</td>
@@ -5534,7 +5549,7 @@ multi-language user data tags found, even if they don&#39;t exist in this table.
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised May 7, 2014</i>
+<br><i>Last revised Aug 22, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -623,6 +623,22 @@ FaceDetectFrameSize with increasing Y downwards)</span></span></td></tr>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
+<h2><a name='Type2'>Ricoh Type2 Tags</a></h2>
+<p>Tags written by models such as the Ricoh HZ15 and the Pentax XG-1.  These
+are not writable due to numerous formatting errors as written by these
+cameras.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td title='0x0300 = 768'>0x0300</td>
+<td>RicohMake</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
 <h2><a name='Text'>Ricoh Text Tags</a></h2>
 <p>Some Ricoh DC and RDC models use a text-based format for their maker notes
 instead of the IFD format used by the Caplio models.  Below is a list of known
@@ -772,7 +788,7 @@ model names have already been scaled to include the 35mm crop factor.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Mar 17, 2014</i>
+<br><i>Last revised Jul 18, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -114,6 +114,27 @@ color space when deleting all other metadata)</span></span></td></tr>
 deletion of all metadata from these images.  See
 <a href="../faq.html#Q7">FAQ number 7</a> for details)</span></span></td></tr>
 <tr class=b>
+<td>LargeTags</td>
+<td class=c>Y</td>
+<td class=n>CanonVRD
+  <br>DLOData
+  <br>EXIF
+  <br>ICC_Profile
+  <br>IDCPreviewImage
+  <br>ImageData
+  <br>IPTC
+  <br>JpgFromRaw
+  <br>OriginalRawImage
+  <br>OtherImage
+  <br>PreviewImage
+  <br>ThumbnailImage
+  <br>TIFFPreview
+  <br>XML
+  <br>XMP
+  <br>ZoomedPreviewImage</td>
+<td><span class=s><span class=n>(large binary data tags which may be excluded to reduce memory usage if
+memory limitations are a problem)</span></span></td></tr>
+<tr>
 <td>MakerNotes</td>
 <td class=c>Y</td>
 <td class=n>MakerNotes
@@ -147,6 +168,7 @@ deletion of all metadata from these images.  See
   <br>MakerNoteKodak8c
   <br>MakerNoteKodak9
   <br>MakerNoteKodak10
+  <br>MakerNoteKodak11
   <br>MakerNoteKodakUnknown
   <br>MakerNoteKyocera
   <br>MakerNoteMinolta
@@ -175,6 +197,7 @@ deletion of all metadata from these images.  See
   <br>MakerNotePhaseOne
   <br>MakerNoteReconyx
   <br>MakerNoteRicoh
+  <br>MakerNoteRicoh2
   <br>MakerNoteRicohText
   <br>MakerNoteSamsung1a
   <br>MakerNoteSamsung1b
@@ -195,7 +218,7 @@ deletion of all metadata from these images.  See
   <br>MakerNoteUnknown</td>
 <td><span class=s><span class=n>(useful when copying tags between files to either copy the maker notes as a
 block or prevent it from being copied)</span></span></td></tr>
-<tr>
+<tr class=b>
 <td>Nikon</td>
 <td class=c>Y</td>
 <td class=n>Model
@@ -227,7 +250,7 @@ block or prevent it from being copied)</span></span></td></tr>
   <br>FlashMode
   <br>FlashExposureComp</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td>Unsafe</td>
 <td class=c>Y</td>
 <td class=n>IFD0:YCbCrPositioning
@@ -245,7 +268,7 @@ as a shortcut to use when rebuilding JPEG EXIF from scratch)</span></span></td><
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Mar 25, 2014</i>
+<br><i>Last revised Jul 18, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -163,15 +163,15 @@ this for PreviewImageLength)</span></span></td></tr>
 <td>PreviewImageSize
   <br>PreviewImageStart</td>
 <td class=c title=' * = Protected'>int16u[2]<br>int32u*</td>
-<td><span class=s><span class=n>(PreviewImageStart for the SD1 and Merrill models, and PreviewImageSize for
-others)</span></span></td></tr>
+<td><span class=s><span class=n>(PreviewImageStart for the SD1 and Merrill/Quattro models, and
+PreviewImageSize for others)</span></span></td></tr>
 <tr>
 <td title='0x001d = 29'>0x001d</td>
 <td>MakerNoteVersion
   <br>PreviewImageLength</td>
 <td class=c title=' * = Protected'>undef<br>int32u*</td>
-<td><span class=s><span class=n>(PreviewImageLength for the SD1 and Merrill models, and MakerNoteVersion for
-others)</span></span></td></tr>
+<td><span class=s><span class=n>(PreviewImageLength for the SD1 and Merrill/Quattro models, and
+MakerNoteVersion for others)</span></span></td></tr>
 <tr class=b>
 <td title='0x001e = 30'>0x001e</td>
 <td>PreviewImageSize</td>
@@ -182,38 +182,39 @@ others)</span></span></td></tr>
 <td>AFPoint
   <br>MakerNoteVersion</td>
 <td class=c>string<br>undef</td>
-<td><span class=s><span class=n>(MakerNoteVersion for the SD1 and Merrill models, and AFPoint for others)</span></span></td></tr>
+<td><span class=s><span class=n>(MakerNoteVersion for the SD1 and Merrill/Quattro models, and AFPoint for
+others)</span></span></td></tr>
 <tr class=b>
 <td title='0x0022 = 34'>0x0022</td>
 <td>FileFormat</td>
 <td class=c>string</td>
-<td><span class=s><span class=n>(models other than the SD1 and Merrill models)</span></span></td></tr>
+<td><span class=s><span class=n>(models other than the SD1 and Merrill/Quattro models)</span></span></td></tr>
 <tr>
 <td title='0x0024 = 36'>0x0024</td>
 <td>Calibration</td>
 <td class=c>string</td>
-<td><span class=s><span class=n>(models other than the SD1 and Merrill models)</span></span></td></tr>
+<td><span class=s><span class=n>(models other than the SD1 and Merrill/Quattro models)</span></span></td></tr>
 <tr class=b>
 <td title='0x0026 = 38'>0x0026</td>
 <td>FileFormat</td>
 <td class=c>string</td>
-<td><span class=s><span class=n>(SD1 and Merrill models only)</span></span></td></tr>
+<td><span class=s><span class=n>(SD1 and Merrill/Quattro models only)</span></span></td></tr>
 <tr>
 <td title='0x0027 = 39'>0x0027</td>
 <td>LensType</td>
 <td class=c>string</td>
 <td>--&gt; <a href='Sigma.html#LensType'>Sigma LensType Values</a>
-  <br><span class='n s'>(SD1 and Merrill models only)</span></td></tr>
+  <br><span class='n s'>(SD1 and Merrill/Quattro models only)</span></td></tr>
 <tr class=b>
 <td title='0x002a = 42'>0x002a</td>
 <td>LensFocalRange</td>
 <td class=c>rational64u[2]</td>
-<td><span class=s><span class=n>(SD1 and Merrill models only)</span></span></td></tr>
+<td><span class=s><span class=n>(SD1 and Merrill/Quattro models only)</span></span></td></tr>
 <tr>
 <td title='0x002b = 43'>0x002b</td>
 <td>LensMaxApertureRange</td>
 <td class=c>rational64u[2]</td>
-<td><span class=s><span class=n>(SD1 and Merrill models only)</span></span></td></tr>
+<td><span class=s><span class=n>(SD1 and Merrill/Quattro models only)</span></span></td></tr>
 <tr class=b>
 <td title='0x002c = 44'>0x002c</td>
 <td>ColorMode</td>
@@ -234,54 +235,54 @@ others)</span></span></td></tr>
 <td>LensApertureRange
   <br>Calibration</td>
 <td class=c>string<br>string</td>
-<td><span class=s><span class=n>(Calibration for the SD1 and Merrill models, and LensApertureRange for
-others. Note that LensApertureRange changes with focal length, and some
+<td><span class=s><span class=n>(Calibration for the SD1 and Merrill/Quattro models, and LensApertureRange
+for others. Note that LensApertureRange changes with focal length, and some
 models report the maximum aperture here)</span></span></td></tr>
 <tr class=b>
 <td title='0x0031 = 49'>0x0031</td>
 <td>FNumber</td>
 <td class=c>rational64u</td>
-<td><span class=s><span class=n>(models other than the SD1 and Merrill models)</span></span></td></tr>
+<td><span class=s><span class=n>(models other than the SD1 and Merrill/Quattro models)</span></span></td></tr>
 <tr>
 <td title='0x0032 = 50'>0x0032</td>
 <td>ExposureTime</td>
 <td class=c>rational64u</td>
-<td><span class=s><span class=n>(models other than the SD1 and Merrill models)</span></span></td></tr>
+<td><span class=s><span class=n>(models other than the SD1 and Merrill/Quattro models)</span></span></td></tr>
 <tr class=b>
 <td title='0x0033 = 51'>0x0033</td>
 <td>ExposureTime2</td>
 <td class=c>string</td>
-<td><span class=s><span class=n>(models other than the SD1, SD9, SD15 and Merrill models)</span></span></td></tr>
+<td><span class=s><span class=n>(models other than the SD1, SD9, SD15 and Merrill/Quattro models)</span></span></td></tr>
 <tr>
 <td title='0x0034 = 52'>0x0034</td>
 <td>BurstShot</td>
 <td class=c>int32u</td>
-<td><span class=s><span class=n>(models other than the SD1 and Merrill models)</span></span></td></tr>
+<td><span class=s><span class=n>(models other than the SD1 and Merrill/Quattro models)</span></span></td></tr>
 <tr class=b>
 <td title='0x0035 = 53'>0x0035</td>
 <td>ExposureCompensation</td>
 <td class=c>rational64s</td>
-<td><span class=s><span class=n>(models other than the SD1 and Merrill models)</span></span></td></tr>
+<td><span class=s><span class=n>(models other than the SD1 and Merrill/Quattro models)</span></span></td></tr>
 <tr>
 <td title='0x0039 = 57'>0x0039</td>
 <td>SensorTemperature</td>
 <td class=c>string</td>
-<td><span class=s><span class=n>(models other than the SD1 and Merrill models)</span></span></td></tr>
+<td><span class=s><span class=n>(models other than the SD1 and Merrill/Quattro models)</span></span></td></tr>
 <tr class=b>
 <td title='0x003a = 58'>0x003a</td>
 <td>FlashExposureComp</td>
 <td class=c>rational64s</td>
-<td><span class=s><span class=n>(models other than the SD1 and Merrill models)</span></span></td></tr>
+<td><span class=s><span class=n>(models other than the SD1 and Merrill/Quattro models)</span></span></td></tr>
 <tr>
 <td title='0x003b = 59'>0x003b</td>
 <td>Firmware</td>
 <td class=c>string</td>
-<td><span class=s><span class=n>(models other than the SD1 and Merrill models)</span></span></td></tr>
+<td><span class=s><span class=n>(models other than the SD1 and Merrill/Quattro models)</span></span></td></tr>
 <tr class=b>
 <td title='0x003c = 60'>0x003c</td>
 <td>WhiteBalance</td>
 <td class=c>string</td>
-<td><span class=s><span class=n>(models other than the SD1 and Merrill models)</span></span></td></tr>
+<td><span class=s><span class=n>(models other than the SD1 and Merrill/Quattro models)</span></span></td></tr>
 <tr>
 <td title='0x003d = 61'>0x003d</td>
 <td>PictureMode</td>
@@ -291,52 +292,53 @@ models report the maximum aperture here)</span></span></td></tr>
 <td title='0x0048 = 72'>0x0048</td>
 <td>LensApertureRange</td>
 <td class=c>string</td>
-<td><span class=s><span class=n>(SD1 and Merrill models only)</span></span></td></tr>
+<td><span class=s><span class=n>(SD1 and Merrill/Quattro models only)</span></span></td></tr>
 <tr>
 <td title='0x0049 = 73'>0x0049</td>
 <td>FNumber</td>
 <td class=c>rational64u</td>
-<td><span class=s><span class=n>(SD1 and Merrill models only)</span></span></td></tr>
+<td><span class=s><span class=n>(SD1 and Merrill/Quattro models only)</span></span></td></tr>
 <tr class=b>
 <td title='0x004a = 74'>0x004a</td>
 <td>ExposureTime</td>
 <td class=c>rational64u</td>
-<td><span class=s><span class=n>(SD1 and Merrill models only)</span></span></td></tr>
+<td><span class=s><span class=n>(SD1 and Merrill/Quattro models only)</span></span></td></tr>
 <tr>
 <td title='0x004b = 75'>0x004b</td>
 <td>ExposureTime2</td>
 <td class=c>string</td>
-<td><span class=s><span class=n>(SD1 and Merrill models only)</span></span></td></tr>
+<td><span class=s><span class=n>(SD1 and Merrill/Quattro models only)</span>
+  <br><span class=n>(SD1 and Merrill/Quattro models only)</span></span></td></tr>
 <tr class=b>
 <td title='0x004d = 77'>0x004d</td>
 <td>ExposureCompensation</td>
 <td class=c>rational64s</td>
-<td><span class=s><span class=n>(SD1 and Merrill models only)</span></span></td></tr>
+<td><span class=s><span class=n>(SD1 and Merrill/Quattro models only)</span></span></td></tr>
 <tr>
 <td title='0x0055 = 85'>0x0055</td>
 <td>SensorTemperature</td>
 <td class=c>string</td>
-<td><span class=s><span class=n>(SD1 and Merrill models only)</span></span></td></tr>
+<td><span class=s><span class=n>(SD1 and Merrill/Quattro models only)</span></span></td></tr>
 <tr class=b>
 <td title='0x0056 = 86'>0x0056</td>
 <td>FlashExposureComp</td>
 <td class=c>rational64s</td>
-<td><span class=s><span class=n>(SD1 and Merrill models only)</span></span></td></tr>
+<td><span class=s><span class=n>(SD1 and Merrill/Quattro models only)</span></span></td></tr>
 <tr>
 <td title='0x0057 = 87'>0x0057</td>
 <td>Firmware</td>
 <td class=c>string</td>
-<td><span class=s><span class=n>(SD1 and Merrill models only)</span></span></td></tr>
+<td><span class=s><span class=n>(SD1 and Merrill/Quattro models only)</span></span></td></tr>
 <tr class=b>
 <td title='0x0058 = 88'>0x0058</td>
 <td>WhiteBalance</td>
 <td class=c>string</td>
-<td><span class=s><span class=n>(SD1 and Merrill models only)</span></span></td></tr>
+<td><span class=s><span class=n>(SD1 and Merrill/Quattro models only)</span></span></td></tr>
 <tr>
 <td title='0x0059 = 89'>0x0059</td>
 <td>DigitalFilter</td>
 <td class=c>string</td>
-<td><span class=s><span class=n>(SD1 and Merrill models only)</span></span></td></tr>
+<td><span class=s><span class=n>(SD1 and Merrill/Quattro models only)</span></span></td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='LensType'>Sigma LensType Values</a></h2>
@@ -348,26 +350,28 @@ attempting to identify the specific lens model.</p>
 <table class='inner sep' cellspacing=1>
 <tr class=h><th>Value</th><th>LensType</th><th>Value</th><th>LensType</th></tr>
 <tr><td>16</td><td>= Sigma 18-50mm F3.5-5.6 DC</td>
-<td class=b>169</td><td class=b>= Sigma 18-50mm F2.8 EX DC</td>
-</tr><tr><td>129</td><td>= Sigma 14mm F2.8 EX Aspherical</td>
 <td class=b>581</td><td class=b>= Sigma 18-50mm F2.8 EX DC Macro</td>
-</tr><tr><td>131</td><td>= Sigma 17-70mm F2.8-4.5 DC Macro</td>
+</tr><tr><td>129</td><td>= Sigma 14mm F2.8 EX Aspherical</td>
 <td class=b>583</td><td class=b>= Sigma 17-50mm F2.8 EX DC OS</td>
-</tr><tr><td>145</td><td>= Sigma Lens (145)</td>
+</tr><tr><td>131</td><td>= Sigma 17-70mm F2.8-4.5 DC Macro</td>
 <td class=b>1003</td><td class=b>= Sigma 19mm F2.8</td>
-</tr><tr><td>145.1</td><td>= Sigma 15-30mm F3.5-4.5 EX DG Aspherical</td>
+</tr><tr><td>145</td><td>= Sigma Lens (145)</td>
 <td class=b>1004</td><td class=b>= Sigma 30mm F2.8</td>
-</tr><tr><td>145.2</td><td>= Sigma 18-50mm F2.8 EX DG</td>
+</tr><tr><td>145.1</td><td>= Sigma 15-30mm F3.5-4.5 EX DG Aspherical</td>
 <td class=b>1005</td><td class=b>= Sigma 50mm F2.8 Macro</td>
+</tr><tr><td>145.2</td><td>= Sigma 18-50mm F2.8 EX DG</td>
+<td class=b>1007</td><td class=b>= Sigma 30mm F2.8</td>
 </tr><tr><td>145.3</td><td>= Sigma 20-40mm F2.8 EX DG</td>
 <td class=b>8900</td><td class=b>= Sigma 70-300mm F4-5.6 DG OS</td>
 </tr><tr><td>165</td><td>= Sigma 70-200mm F2.8 EX</td>
 <td class=b>'A100'</td><td class=b>= Sigma 24-70mm F2.8 DG Macro</td>
+</tr><tr><td>169</td><td>= Sigma 18-50mm F2.8 EX DC</td>
+<td class=b>&nbsp;</td><td class=b>&nbsp;</td>
 </tr></table></td></tr></table></blockquote>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Apr 4, 2014</i>
+<br><i>Last revised Jun 26, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -21,22 +21,27 @@ SD10).  Currently, metadata may only be written to the embedded JpgFromRaw.</p>
 <td class=c>-</td>
 <td>--&gt; <a href='SigmaRaw.html#Header'>SigmaRaw Header Tags</a></td></tr>
 <tr class=b>
+<td>'Header4'</td>
+<td>Header4</td>
+<td class=c>-</td>
+<td>--&gt; <a href='SigmaRaw.html#Header4'>SigmaRaw Header4 Tags</a></td></tr>
+<tr>
 <td>'HeaderExt'</td>
 <td>HeaderExt</td>
 <td class=c>-</td>
 <td>--&gt; <a href='SigmaRaw.html#HeaderExt'>SigmaRaw HeaderExt Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td>'IMA2'</td>
 <td>PreviewImage
   <br>JpgFromRaw</td>
 <td class=c>N<br>N</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td>'IMAG'</td>
 <td>PreviewImage</td>
 <td class=c>N</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td>'PROP'</td>
 <td>Properties</td>
 <td class=c>-</td>
@@ -44,6 +49,7 @@ SD10).  Currently, metadata may only be written to the embedded JpgFromRaw.</p>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Header'>SigmaRaw Header Tags</a></h2>
+<p>Information extracted from the header of an X3F file.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
@@ -91,6 +97,35 @@ SD10).  Currently, metadata may only be written to the embedded JpgFromRaw.</p>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
+<h2><a name='Header4'>SigmaRaw Header4 Tags</a></h2>
+<p>Header information for version 4.0 or greater X3F.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index4</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='1 = 0x1'>1</td>
+<td>FileVersion</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='10 = 0xa'>10</td>
+<td>ImageWidth</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td class=r title='11 = 0xb'>11</td>
+<td>ImageHeight</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='12 = 0xc'>12</td>
+<td>Rotation</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
 <h2><a name='HeaderExt'>SigmaRaw HeaderExt Tags</a></h2>
 <p>Extended header data found in version 2.1 and 2.2 files</p>
 <blockquote>
@@ -397,7 +432,7 @@ SD10).  Currently, metadata may only be written to the embedded JpgFromRaw.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Feb 22, 2013</i>
+<br><i>Last revised Jul 2, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -18,10 +18,14 @@ MakerNotes.</p>
 <tr>
 <td title='0x0010 = 16'>0x0010</td>
 <td>CameraInfo
-  <br>CameraInfo2</td>
-<td class=c>-<br>-</td>
+  <br>CameraInfo2
+  <br>CameraInfo3
+  <br>CameraInfoUnknown</td>
+<td class=c>-<br>-<br>-<br>-</td>
 <td>--&gt; <a href='Sony.html#CameraInfo'>Sony CameraInfo Tags</a>
-  <br>--&gt; <a href='Sony.html#CameraInfo2'>Sony CameraInfo2 Tags</a></td></tr>
+  <br>--&gt; <a href='Sony.html#CameraInfo2'>Sony CameraInfo2 Tags</a>
+  <br>--&gt; <a href='Sony.html#CameraInfo3'>Sony CameraInfo3 Tags</a>
+  <br>--&gt; <a href='Sony.html#CameraInfoUnknown'>Sony CameraInfoUnknown Tags</a></td></tr>
 <tr class=b>
 <td title='0x0020 = 32'>0x0020</td>
 <td>FocusInfo
@@ -302,7 +306,7 @@ MakerNotes.</p>
   <br>4294967295 = n/a</span></td></tr>
 <tr class=b>
 <td title='0x2013 = 8211'>0x2013</td>
-<td>DistortionCorrection</td>
+<td>DistortionCorrectionSetting</td>
 <td class=c>int32u</td>
 <td><span class=s>0 = Off
   <br>2 = Auto
@@ -341,11 +345,17 @@ toward magenta)</span></span></td></tr>
   <br>4 = Local
   <br>8 = Zone
   <br>9 = Spot
-  <br><span class=n>(NEX models)</span>
+  <br><span class=n>(NEX and ILCE models)</span>
   <br>0 = Multi
   <br>1 = Center
   <br>3 = Flexible Spot
-  <br>11 = Zone</span></td></tr>
+  <br>11 = Zone
+  <br><span class=n>(ILCA models)</span>
+  <br>0 = Wide
+  <br>4 = Flexible Spot
+  <br>8 = Zone
+  <br>9 = Center
+  <br>12 = Expanded Flexible Spot</span></td></tr>
 <tr>
 <td title='0x201d = 8221'>0x201d</td>
 <td>FlexibleSpotPosition</td>
@@ -377,7 +387,9 @@ Spot)</span></span></td></tr>
   <br>17 = Lower Far Right
   <br>18 = Lower Far Left
   <br>19 = Upper Far Left</td><td>&nbsp;&nbsp;</td></tr></table>
-</td></tr>
+<span class=s><span class=n>(ILCA models)</span>
+  <br>0 = Auto
+  <br>40 = Center</span></td></tr>
 <tr>
 <td title='0x2020 = 8224'>0x2020</td>
 <td>AFInfo2</td>
@@ -418,33 +430,40 @@ Spot)</span></span></td></tr>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag9403'>Sony Tag9403 Tags</a></td></tr>
 <tr class=b>
+<td title='0x9404 = 37892'>0x9404</td>
+<td>Tag9404a
+  <br>Tag9404b</td>
+<td class=c>-<br>-</td>
+<td>--&gt; <a href='Sony.html#Tag9404a'>Sony Tag9404a Tags</a>
+  <br>--&gt; <a href='Sony.html#Tag9404b'>Sony Tag9404b Tags</a></td></tr>
+<tr>
 <td title='0x9405 = 37893'>0x9405</td>
 <td>Tag9405a
   <br>Tag9405b</td>
 <td class=c>-<br>-</td>
 <td>--&gt; <a href='Sony.html#Tag9405a'>Sony Tag9405a Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9405b'>Sony Tag9405b Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x9406 = 37894'>0x9406</td>
 <td>Tag9406</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag9406'>Sony Tag9406 Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x940a = 37898'>0x940a</td>
 <td>Tag940a</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag940a'>Sony Tag940a Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x940c = 37900'>0x940c</td>
 <td>Tag940c</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag940c'>Sony Tag940c Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x940e = 37902'>0x940e</td>
 <td>AFInfo</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#AFInfo'>Sony AFInfo Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb000 = 45056'>0xb000</td>
 <td>FileFormat</td>
 <td class=c>int8u[4]</td>
@@ -458,7 +477,7 @@ Spot)</span></span></td></tr>
   <br>&#39;3 3 0 0&#39; = ARW 2.3
   <br>&#39;3 3 1 0&#39; = ARW 2.3.1</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0xb001 = 45057'>0xb001</td>
 <td>SonyModelID</td>
 <td class=c>int16u</td>
@@ -489,9 +508,9 @@ Spot)</span></span></td></tr>
   <br>284 = NEX-C3
   <br>285 = SLT-A35
   <br>286 = SLT-A65 / SLT-A65V
-  <br>287 = SLT-A77 / SLT-A77V</td><td>&nbsp;&nbsp;</td>
-  <td>288 = NEX-5N
-  <br>289 = NEX-7
+  <br>287 = SLT-A77 / SLT-A77V
+  <br>288 = NEX-5N</td><td>&nbsp;&nbsp;</td>
+  <td>289 = NEX-7
   <br>290 = NEX-VG20E
   <br>291 = SLT-A37
   <br>292 = SLT-A57
@@ -503,7 +522,7 @@ Spot)</span></span></td></tr>
   <br>298 = DSC-RX1
   <br>299 = NEX-VG900
   <br>300 = NEX-VG30E
-  <br>302 = ILCE-3000
+  <br>302 = ILCE-3000 / ILCE-3500
   <br>303 = SLT-A58
   <br>305 = NEX-3N
   <br>306 = ILCE-7
@@ -514,10 +533,12 @@ Spot)</span></span></td></tr>
   <br>311 = ILCE-7R
   <br>312 = ILCE-6000
   <br>313 = ILCE-5000
+  <br>317 = DSC-RX100M3
   <br>318 = ILCE-7S
-  <br>319 = ILCA-77M2</td><td>&nbsp;&nbsp;</td></tr></table>
+  <br>319 = ILCA-77M2
+  <br>339 = ILCE-5100</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb020 = 45088'>0xb020</td>
 <td>CreativeStyle</td>
 <td class=c>string</td>
@@ -539,17 +560,17 @@ Spot)</span></span></td></tr>
   <br>&#39;Sunset&#39; = Sunset
   <br>&#39;Vivid&#39; = Vivid</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0xb021 = 45089'>0xb021</td>
 <td>ColorTemperature</td>
 <td class=c>int32u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0xb022 = 45090'>0xb022</td>
 <td>ColorCompensationFilter</td>
 <td class=c>int32u</td>
 <td><span class=s><span class=n>(negative is green, positive is magenta)</span></span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb023 = 45091'>0xb023</td>
 <td>SceneMode</td>
 <td class=c>int32u</td>
@@ -565,9 +586,9 @@ Spot)</span></span></td></tr>
   <br>8 = Macro
   <br>9 = Super Macro
   <br>16 = Auto
-  <br>17 = Night View/Portrait</td><td>&nbsp;&nbsp;</td>
-  <td>18 = Sweep Panorama
-  <br>19 = Handheld Night Shot
+  <br>17 = Night View/Portrait
+  <br>18 = Sweep Panorama</td><td>&nbsp;&nbsp;</td>
+  <td>19 = Handheld Night Shot
   <br>20 = Anti Motion Blur
   <br>21 = Cont. Priority AE
   <br>22 = Auto+
@@ -577,16 +598,17 @@ Spot)</span></span></td></tr>
   <br>26 = Fireworks
   <br>27 = Food
   <br>28 = Pet
+  <br>33 = HDR
   <br>65535 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb024 = 45092'>0xb024</td>
 <td>ZoneMatching</td>
 <td class=c>int32u</td>
 <td><span class=s>0 = ISO Setting Used
   <br>1 = High Key
   <br>2 = Low Key</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb025 = 45093'>0xb025</td>
 <td>DynamicRangeOptimizer</td>
 <td class=c>int32u</td>
@@ -606,24 +628,24 @@ Spot)</span></span></td></tr>
   <br>19 = Lv4
   <br>20 = Lv5</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb026 = 45094'>0xb026</td>
 <td>ImageStabilization</td>
 <td class=c>int32u</td>
 <td><span class=s>0 = Off
   <br>1 = On
   <br>4294967295 = n/a</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb027 = 45095'>0xb027</td>
 <td>LensType</td>
 <td class=c>int32u</td>
 <td>--&gt; <a href='Sony.html#LensType'>Sony LensType Values</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb028 = 45096'>0xb028</td>
 <td>MinoltaMakerNote</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Minolta.html'>Minolta Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb029 = 45097'>0xb029</td>
 <td>ColorMode</td>
 <td class=c>int32u</td>
@@ -650,23 +672,23 @@ Spot)</span></span></td></tr>
   <br>105 = Autumn Leaves
   <br>4294967295 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb02a = 45098'>0xb02a</td>
 <td>LensSpec</td>
 <td class=c>int8u[8]</td>
 <td><span class=s><span class=n>(like LensInfo, but also specifies lens features: DT, E, ZA, G, SSM, SAM,
 OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb02b = 45099'>0xb02b</td>
 <td>FullImageSize</td>
 <td class=c>int32u[2]</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0xb02c = 45100'>0xb02c</td>
 <td>PreviewImageSize</td>
 <td class=c>int32u[2]</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0xb040 = 45120'>0xb040</td>
 <td>Macro</td>
 <td class=c>int16u</td>
@@ -674,7 +696,7 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>1 = On
   <br>2 = Close Focus
   <br>65535 = n/a</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb041 = 45121'>0xb041</td>
 <td>ExposureMode</td>
 <td class=c>int16u</td>
@@ -711,7 +733,7 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>42 = 3D Image
   <br>65535 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0xb042 = 45122'>0xb042</td>
 <td>FocusMode</td>
 <td class=c>int16u</td>
@@ -720,7 +742,7 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>2 = AF-C
   <br>4 = Permanent-AF
   <br>65535 = n/a</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb043 = 45123'>0xb043</td>
 <td>AFAreaMode</td>
 <td class=c>int16u</td>
@@ -744,14 +766,14 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>15 = Face Tracking
   <br>255 = Manual</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0xb044 = 45124'>0xb044</td>
 <td>AFIlluminator</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Off
   <br>1 = Auto
   <br>65535 = n/a</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb047 = 45127'>0xb047</td>
 <td>JPEGQuality</td>
 <td class=c>int16u</td>
@@ -759,7 +781,7 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>1 = Fine
   <br>2 = Extra Fine
   <br>65535 = n/a</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb048 = 45128'>0xb048</td>
 <td>FlashLevel</td>
 <td class=c>int16s</td>
@@ -781,7 +803,7 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>128 = n/a
   <br>32767 = High</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb049 = 45129'>0xb049</td>
 <td>ReleaseMode</td>
 <td class=c>int16u</td>
@@ -790,14 +812,14 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>5 = Exposure Bracketing
   <br>6 = White Balance Bracketing
   <br>65535 = n/a</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb04a = 45130'>0xb04a</td>
 <td>SequenceNumber</td>
 <td class=c>int16u</td>
 <td><span class=s><span class=n>(shot number in continuous burst)</span>
   <br>0 = Single
   <br>65535 = n/a</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb04b = 45131'>0xb04b</td>
 <td>Anti-Blur</td>
 <td class=c>int16u</td>
@@ -805,7 +827,7 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>1 = On (Continuous)
   <br>2 = On (Shooting)
   <br>65535 = n/a</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb04e = 45134'>0xb04e</td>
 <td>FocusMode</td>
 <td class=c>int16u</td>
@@ -815,14 +837,14 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>3 = AF-C
   <br>5 = Semi-manual
   <br>6 = DMF</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb04f = 45135'>0xb04f</td>
 <td>DynamicRangeOptimizer</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Off
   <br>1 = Standard
   <br>2 = Plus</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb050 = 45136'>0xb050</td>
 <td>HighISONoiseReduction2</td>
 <td class=c>int16u</td>
@@ -832,14 +854,14 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>2 = Low
   <br>3 = Off
   <br>65535 = n/a</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb052 = 45138'>0xb052</td>
 <td>IntelligentAuto</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Off
   <br>1 = On
   <br>2 = Advanced</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb054 = 45140'>0xb054</td>
 <td>WhiteBalance</td>
 <td class=c>int16u</td>
@@ -1128,32 +1150,33 @@ adapter is used.</p>
 </tr><tr><td>6553.6</td><td>= Sony E 20mm F2.8</td>
 </tr><tr><td>6553.7</td><td>= Sony E 35mm F1.8 OSS</td>
 </tr><tr><td>6553.8</td><td>= Sony E PZ 18-105mm F4 G OSS</td>
-</tr><tr><td>6553.9</td><td>= Sony E PZ 18-200mm F3.5-6.3 OSS</td>
-</tr><tr><td>6553.10</td><td>= Sony FE 55mm F1.8 ZA</td>
-</tr><tr><td>6553.11</td><td>= Sony FE 70-200mm F4 G OSS</td>
-</tr><tr><td>6553.12</td><td>= Sony FE 28-70mm F3.5-5.6 OSS</td>
+</tr><tr><td>6553.9</td><td>= Sony E 18-50mm F4-5.6</td>
+</tr><tr><td>6553.10</td><td>= Sony E PZ 18-200mm F3.5-6.3 OSS</td>
+</tr><tr><td>6553.11</td><td>= Sony FE 55mm F1.8 ZA</td>
+</tr><tr><td>6553.12</td><td>= Sony FE 70-200mm F4 G OSS</td>
 </tr><tr><td>6553.13</td><td>= Sony E 18-55mm F3.5-5.6 OSS</td>
-</tr><tr><td>6553.14</td><td>= Sigma 19mm F2.8 [EX] DN</td>
-</tr><tr><td>6553.15</td><td>= Sigma 30mm F2.8 [EX] DN</td>
-</tr><tr><td>6553.16</td><td>= Sigma 60mm F2.8 DN</td>
-</tr><tr><td>6553.17</td><td>= Tamron 18-200mm F3.5-6.3 Di III VC</td>
-</tr><tr><td>6553.18</td><td>= Zeiss Touit 12mm F2.8</td>
-</tr><tr><td>6553.19</td><td>= Zeiss Touit 32mm F1.8</td>
-</tr><tr><td>6553.20</td><td>= Zeiss Touit 50mm F2.8 Macro</td>
-</tr><tr><td>6553.21</td><td>= Arax MC 35mm F2.8 Tilt+Shift</td>
-</tr><tr><td>6553.22</td><td>= Arax MC 80mm F2.8 Tilt+Shift</td>
+</tr><tr><td>6553.14</td><td>= Sony FE 28-70mm F3.5-5.6 OSS</td>
+</tr><tr><td>6553.15</td><td>= Sigma 19mm F2.8 [EX] DN</td>
+</tr><tr><td>6553.16</td><td>= Sigma 30mm F2.8 [EX] DN</td>
+</tr><tr><td>6553.17</td><td>= Sigma 60mm F2.8 DN</td>
+</tr><tr><td>6553.18</td><td>= Tamron 18-200mm F3.5-6.3 Di III VC</td>
+</tr><tr><td>6553.19</td><td>= Zeiss Touit 12mm F2.8</td>
+</tr><tr><td>6553.20</td><td>= Zeiss Touit 32mm F1.8</td>
+</tr><tr><td>6553.21</td><td>= Zeiss Touit 50mm F2.8 Macro</td>
+</tr><tr><td>6553.22</td><td>= Arax MC 35mm F2.8 Tilt+Shift</td>
 </tr><tr><td>6553.23</td><td>= Sony E 55-210mm F4.5-6.3 OSS</td>
-</tr><tr><td>6553.24</td><td>= Zenitar MF 16mm F2.8 Fisheye M42</td>
-</tr><tr><td>6553.25</td><td>= Samyang 500mm Mirror F8.0</td>
-</tr><tr><td>6553.26</td><td>= Pentacon Auto 135mm F2.8</td>
-</tr><tr><td>6553.27</td><td>= Pentacon Auto 29mm F2.8</td>
-</tr><tr><td>6553.28</td><td>= Helios 44-2 58mm F2.0</td>
-</tr><tr><td>6553.29</td><td>= Sony E 18-200mm F3.5-6.3 OSS</td>
-</tr><tr><td>6553.30</td><td>= Sony E 30mm F3.5 Macro</td>
-</tr><tr><td>6553.31</td><td>= Sony E 24mm F1.8 ZA</td>
-</tr><tr><td>6553.32</td><td>= Sony E 50mm F1.8 OSS</td>
-</tr><tr><td>6553.33</td><td>= Sony E 16-70mm F4 ZA OSS</td>
-</tr><tr><td>6553.34</td><td>= Sony E 10-18mm F4 OSS</td>
+</tr><tr><td>6553.24</td><td>= Arax MC 80mm F2.8 Tilt+Shift</td>
+</tr><tr><td>6553.25</td><td>= Zenitar MF 16mm F2.8 Fisheye M42</td>
+</tr><tr><td>6553.26</td><td>= Samyang 500mm Mirror F8.0</td>
+</tr><tr><td>6553.27</td><td>= Pentacon Auto 135mm F2.8</td>
+</tr><tr><td>6553.28</td><td>= Pentacon Auto 29mm F2.8</td>
+</tr><tr><td>6553.29</td><td>= Helios 44-2 58mm F2.0</td>
+</tr><tr><td>6553.30</td><td>= Sony E 18-200mm F3.5-6.3 OSS</td>
+</tr><tr><td>6553.31</td><td>= Sony E 30mm F3.5 Macro</td>
+</tr><tr><td>6553.32</td><td>= Sony E 24mm F1.8 ZA</td>
+</tr><tr><td>6553.33</td><td>= Sony E 50mm F1.8 OSS</td>
+</tr><tr><td>6553.34</td><td>= Sony E 16-70mm F4 ZA OSS</td>
+</tr><tr><td>6553.35</td><td>= Sony E 10-18mm F4 OSS</td>
 </tr><tr><td>25501</td><td>= Minolta AF 50mm F1.7</td>
 </tr><tr><td>25511</td><td>= Minolta AF 35-70mm F4 or Other Lens</td>
 </tr><tr><td>25511.1</td><td>= Sigma UC AF 28-70mm F3.5-4.5</td>
@@ -1289,143 +1312,29 @@ adapter is used.</p>
 </tr><tr><td>65535.14</td><td>= Sony E 20mm F2.8</td>
 </tr><tr><td>65535.15</td><td>= Sony E 35mm F1.8 OSS</td>
 </tr><tr><td>65535.16</td><td>= Sony E PZ 18-105mm F4 G OSS</td>
-</tr><tr><td>65535.17</td><td>= Sony E PZ 18-200mm F3.5-6.3 OSS</td>
-</tr><tr><td>65535.18</td><td>= Sony FE 55mm F1.8 ZA</td>
-</tr><tr><td>65535.19</td><td>= Sony FE 70-200mm F4 G OSS</td>
-</tr><tr><td>65535.20</td><td>= Sony FE 28-70mm F3.5-5.6 OSS</td>
-</tr><tr><td>65535.21</td><td>= Sigma 19mm F2.8 [EX] DN</td>
-</tr><tr><td>65535.22</td><td>= Sigma 30mm F2.8 [EX] DN</td>
-</tr><tr><td>65535.23</td><td>= Sigma 60mm F2.8 DN</td>
-</tr><tr><td>65535.24</td><td>= Tamron 18-200mm F3.5-6.3 Di III VC</td>
-</tr><tr><td>65535.25</td><td>= Zeiss Touit 12mm F2.8</td>
-</tr><tr><td>65535.26</td><td>= Zeiss Touit 32mm F1.8</td>
-</tr><tr><td>65535.27</td><td>= Zeiss Touit 50mm F2.8 Macro</td>
-</tr><tr><td>65535.28</td><td>= Arax MC 35mm F2.8 Tilt+Shift</td>
-</tr><tr><td>65535.29</td><td>= Arax MC 80mm F2.8 Tilt+Shift</td>
-</tr><tr><td>65535.30</td><td>= Zenitar MF 16mm F2.8 Fisheye M42</td>
-</tr><tr><td>65535.31</td><td>= Samyang 500mm Mirror F8.0</td>
-</tr><tr><td>65535.32</td><td>= Pentacon Auto 135mm F2.8</td>
-</tr><tr><td>65535.33</td><td>= Pentacon Auto 29mm F2.8</td>
-</tr><tr><td>65535.34</td><td>= Helios 44-2 58mm F2.0</td>
+</tr><tr><td>65535.17</td><td>= Sony E 18-50mm F4-5.6</td>
+</tr><tr><td>65535.18</td><td>= Sony E PZ 18-200mm F3.5-6.3 OSS</td>
+</tr><tr><td>65535.19</td><td>= Sony FE 55mm F1.8 ZA</td>
+</tr><tr><td>65535.20</td><td>= Sony FE 70-200mm F4 G OSS</td>
+</tr><tr><td>65535.21</td><td>= Sony FE 28-70mm F3.5-5.6 OSS</td>
+</tr><tr><td>65535.22</td><td>= Sigma 19mm F2.8 [EX] DN</td>
+</tr><tr><td>65535.23</td><td>= Sigma 30mm F2.8 [EX] DN</td>
+</tr><tr><td>65535.24</td><td>= Sigma 60mm F2.8 DN</td>
+</tr><tr><td>65535.25</td><td>= Tamron 18-200mm F3.5-6.3 Di III VC</td>
+</tr><tr><td>65535.26</td><td>= Zeiss Touit 12mm F2.8</td>
+</tr><tr><td>65535.27</td><td>= Zeiss Touit 32mm F1.8</td>
+</tr><tr><td>65535.28</td><td>= Zeiss Touit 50mm F2.8 Macro</td>
+</tr><tr><td>65535.29</td><td>= Arax MC 35mm F2.8 Tilt+Shift</td>
+</tr><tr><td>65535.30</td><td>= Arax MC 80mm F2.8 Tilt+Shift</td>
+</tr><tr><td>65535.31</td><td>= Zenitar MF 16mm F2.8 Fisheye M42</td>
+</tr><tr><td>65535.32</td><td>= Samyang 500mm Mirror F8.0</td>
+</tr><tr><td>65535.33</td><td>= Pentacon Auto 135mm F2.8</td>
+</tr><tr><td>65535.34</td><td>= Pentacon Auto 29mm F2.8</td>
+</tr><tr><td>65535.35</td><td>= Helios 44-2 58mm F2.0</td>
 </tr></table></td></tr></table></blockquote>
 
 <h2><a name='CameraInfo'>Sony CameraInfo Tags</a></h2>
-<p>Camera information stored by the A33, A35, A55, A450, A500, A550, A560,
-A580, NEX-3/5/5C/C3 and VG10E.  Some tags are valid only for some of these
-models.</p>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Index1</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
-<tr>
-<td class=r title='0 = 0x0'>0</td>
-<td>LensSpec</td>
-<td class=c>undef[8]</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td class=r title='14 = 0xe'>14</td>
-<td>FocalLength</td>
-<td class=c>int16u</td>
-<td>&nbsp;</td></tr>
-<tr>
-<td class=r title='16 = 0x10'>16</td>
-<td>FocalLengthTeleZoom</td>
-<td class=c>int16u</td>
-<td>&nbsp;</td></tr>
-<tr class=b>
-<td class=r title='20 = 0x14'>20</td>
-<td>AFPointSelected</td>
-<td class=c>int8u</td>
-<td><table class=cols><tr>
-  <td>0 = Auto
-  <br>1 = Center
-  <br>2 = Top
-  <br>3 = Upper-right
-  <br>4 = Right</td><td>&nbsp;&nbsp;</td>
-  <td>5 = Lower-right
-  <br>6 = Bottom
-  <br>7 = Lower-left
-  <br>8 = Left
-  <br>9 = Upper-left</td><td>&nbsp;&nbsp;</td></tr></table>
-</td></tr>
-<tr>
-<td class=r title='21 = 0x15'>21</td>
-<td>FocusMode</td>
-<td class=c>int8u</td>
-<td><span class=s>0 = Manual
-  <br>1 = AF-S
-  <br>2 = AF-C
-  <br>3 = AF-A</span></td></tr>
-<tr class=b>
-<td class=r title='25 = 0x19'>25</td>
-<td>FocusStatus</td>
-<td class=c>int8u</td>
-<td><span class=s><span class=n>(not valid with Contrast AF or for NEX models)</span>
-  <br>0 = Manual - Not confirmed (0)
-  <br>4 = Manual - Not confirmed (4)
-  <br>16 = AF-C - Confirmed
-  <br>24 = AF-C - Not Confirmed
-  <br>64 = AF-S - Confirmed</span></td></tr>
-<tr>
-<td class=r title='28 = 0x1c'>28</td>
-<td>AFPointSelected</td>
-<td class=c>int8u</td>
-<td><span class=s><span class=n>(not valid for Contrast AF)</span></span><table class=cols><tr>
-  <td>0 = Auto
-  <br>1 = Center
-  <br>2 = Top
-  <br>3 = Upper-right
-  <br>4 = Right
-  <br>5 = Lower-right
-  <br>6 = Bottom
-  <br>7 = Lower-left</td><td>&nbsp;&nbsp;</td>
-  <td>8 = Left
-  <br>9 = Upper-left
-  <br>10 = Far Right
-  <br>11 = Far Left
-  <br>12 = Upper-middle
-  <br>13 = Near Right
-  <br>14 = Lower-middle
-  <br>15 = Near Left</td><td>&nbsp;&nbsp;</td></tr></table>
-</td></tr>
-<tr class=b>
-<td class=r title='29 = 0x1d'>29</td>
-<td>FocusMode</td>
-<td class=c>int8u</td>
-<td><span class=s>0 = Manual
-  <br>1 = AF-S
-  <br>2 = AF-C
-  <br>3 = AF-A</span></td></tr>
-<tr>
-<td class=r title='32 = 0x20'>32</td>
-<td>AFPoint</td>
-<td class=c>int8u</td>
-<td><span class=s><span class=n>(the AF sensor used for focusing. Not valid for Contrast AF)</span></span><table class=cols><tr>
-  <td>0 = Upper-left
-  <br>1 = Left
-  <br>2 = Lower-left
-  <br>3 = Far Left
-  <br>4 = Top (horizontal)
-  <br>5 = Near Right
-  <br>6 = Center (horizontal)
-  <br>7 = Near Left
-  <br>8 = Bottom (horizontal)
-  <br>9 = Top (vertical)</td><td>&nbsp;&nbsp;</td>
-  <td>10 = Center (vertical)
-  <br>11 = Bottom (vertical)
-  <br>12 = Far Right
-  <br>13 = Upper-right
-  <br>14 = Right
-  <br>15 = Lower-right
-  <br>16 = Upper-middle
-  <br>17 = Lower-middle
-  <br>255 = (none)</td><td>&nbsp;&nbsp;</td></tr></table>
-</td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='CameraInfo2'>Sony CameraInfo2 Tags</a></h2>
-<p>Camera information for other DSLR and NEX models.</p>
+<p>Camera information for the A700, A850 and A900.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
@@ -1440,7 +1349,8 @@ models.</p>
 <td class=r title='20 = 0x14'>20</td>
 <td>FocusModeSetting</td>
 <td class=c>int8u</td>
-<td><span class=s>0 = Manual
+<td><span class=s><span class=n>(FocusModeSetting for the A700, A850 and A900)</span>
+  <br>0 = Manual
   <br>1 = AF-S
   <br>2 = AF-C
   <br>3 = AF-A
@@ -1493,59 +1403,791 @@ models.</p>
   <br>22 = Center F2.8</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
 <tr>
-<td class=r title='304 = 0x130'>304</td>
-<td>AFMicroAdjValue</td>
-<td class=c>int8u</td>
-<td>&nbsp;</td></tr>
+<td class=r title='30 = 0x1e'>30</td>
+<td>AFStatusActiveSensor</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
 <tr class=b>
-<td class=r title='305 = 0x131'>305</td>
-<td>AFMicroAdjMode</td>
-<td class=c>int8u</td>
-<td><span class=s>[Mask 0x80]
-  <br>0x0 = Off
-  <br>0x80 = On</span></td></tr>
-<tr>
-<td class=r title='305 = 0x131'>305.1</td>
-<td>AFMicroAdjRegisteredLenses</td>
-<td class=c>int8u</td>
-<td><span class=s><span class=n>(number of registered lenses with a non-zero AFMicroAdjValue)</span>
-  <br>[Mask 0x7f]</span></td></tr>
-</table></td></tr></table></blockquote>
-
-<h2><a name='FocusInfo'>Sony FocusInfo Tags</a></h2>
-<p>More camera settings and focus information decoded for models such as the
-A200, A230, A290, A300, A330, A350, A380, A390, A700, A850 and A900.</p>
-<blockquote>
-<table class=frame><tr><td>
-<table class=inner cellspacing=1>
-<tr class=h><th>Index1</th><th>Tag Name</th>
-<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<td class=r title='32 = 0x20'>32</td>
+<td>AFStatusUpper-left</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
 <tr>
-<td class=r title='14 = 0xe'>14</td>
-<td>DriveMode2</td>
-<td class=c>int8u</td>
-<td><span class=s><span class=n>(A230, A290, A330, A380 and A390)</span></span><table class=cols><tr>
-  <td>0x1 = Single Frame
-  <br>0x2 = Continuous High
-  <br>0x4 = Self-timer 10 sec
-  <br>0x5 = Self-timer 2 sec, Mirror Lock-up
-  <br>0x7 = Continuous Bracketing
-  <br>0xa = Remote Commander
-  <br>0xb = Continuous Self-timer</td><td>&nbsp;&nbsp;</td></tr></table>
-<span class=s><span class=n>(A200, A300, A350, A700, A850 and A900)</span></span><table class=cols><tr>
-  <td>0x1 = Single Frame
-  <br>0x2 = Continuous High
-  <br>0x4 = Self-timer 10 sec
-  <br>0x5 = Self-timer 2 sec, Mirror Lock-up
-  <br>0x6 = Single-frame Bracketing
-  <br>0x7 = Continuous Bracketing
-  <br>0xa = Remote Commander
-  <br>0xb = Mirror Lock-up
-  <br>0x12 = Continuous Low
-  <br>0x18 = White Balance Bracketing Low
-  <br>0x19 = D-Range Optimizer Bracketing Low
-  <br>0x28 = White Balance Bracketing High
-  <br>0x29 = D-Range Optimizer Bracketing High</td><td>&nbsp;&nbsp;</td></tr></table>
+<td class=r title='34 = 0x22'>34</td>
+<td>AFStatusLeft</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='36 = 0x24'>36</td>
+<td>AFStatusLower-left</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='38 = 0x26'>38</td>
+<td>AFStatusFarLeft</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='40 = 0x28'>40</td>
+<td>AFStatusBottomAssist-left</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='42 = 0x2a'>42</td>
+<td>AFStatusBottom</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='44 = 0x2c'>44</td>
+<td>AFStatusBottomAssist-right</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='46 = 0x2e'>46</td>
+<td>AFStatusCenter-7</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='48 = 0x30'>48</td>
+<td>AFStatusCenter-horizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='50 = 0x32'>50</td>
+<td>AFStatusCenter-9</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='52 = 0x34'>52</td>
+<td>AFStatusCenter-10</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='54 = 0x36'>54</td>
+<td>AFStatusCenter-11</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='56 = 0x38'>56</td>
+<td>AFStatusCenter-12</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='58 = 0x3a'>58</td>
+<td>AFStatusCenter-vertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='60 = 0x3c'>60</td>
+<td>AFStatusCenter-14</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='62 = 0x3e'>62</td>
+<td>AFStatusTopAssist-left</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='64 = 0x40'>64</td>
+<td>AFStatusTop</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='66 = 0x42'>66</td>
+<td>AFStatusTopAssist-right</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='68 = 0x44'>68</td>
+<td>AFStatusFarRight</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='70 = 0x46'>70</td>
+<td>AFStatusUpper-right</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='72 = 0x48'>72</td>
+<td>AFStatusRight</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='74 = 0x4a'>74</td>
+<td>AFStatusLower-right</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='76 = 0x4c'>76</td>
+<td>AFStatusCenterF2-8</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='304 = 0x130'>304</td>
+<td>AFMicroAdjValue</td>
+<td class=c>int8u</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='305 = 0x131'>305</td>
+<td>AFMicroAdjMode</td>
+<td class=c>int8u</td>
+<td><span class=s>[Mask 0x80]
+  <br>0x0 = Off
+  <br>0x80 = On</span></td></tr>
+<tr>
+<td class=r title='305 = 0x131'>305.1</td>
+<td>AFMicroAdjRegisteredLenses</td>
+<td class=c>int8u</td>
+<td><span class=s><span class=n>(number of registered lenses with a non-zero AFMicroAdjValue)</span>
+  <br>[Mask 0x7f]</span></td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='CameraInfo2'>Sony CameraInfo2 Tags</a></h2>
+<p>Camera information for the DSLR-A200, A230, A290, A300, A330, A350, A380 and
+A390.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index1</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='0 = 0x0'>0</td>
+<td>LensSpec</td>
+<td class=c>undef[8]</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='20 = 0x14'>20</td>
+<td>AFPointSelected</td>
+<td class=c>int8u</td>
+<td><table class=cols><tr>
+  <td>0 = Auto
+  <br>1 = Center
+  <br>2 = Top
+  <br>3 = Upper-right
+  <br>4 = Right</td><td>&nbsp;&nbsp;</td>
+  <td>5 = Lower-right
+  <br>6 = Bottom
+  <br>7 = Lower-left
+  <br>8 = Left
+  <br>9 = Upper-left</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='21 = 0x15'>21</td>
+<td>FocusModeSetting</td>
+<td class=c>int8u</td>
+<td><span class=s><span class=n>(FocusModeSetting for other models)</span>
+  <br>0 = Manual
+  <br>1 = AF-S
+  <br>2 = AF-C
+  <br>3 = AF-A
+  <br>4 = DMF</span></td></tr>
+<tr class=b>
+<td class=r title='24 = 0x18'>24</td>
+<td>AFPoint</td>
+<td class=c>int8u</td>
+<td><table class=cols><tr>
+  <td>0 = Top-right
+  <br>1 = Bottom-right
+  <br>2 = Bottom
+  <br>3 = Middle Horizontal</td><td>&nbsp;&nbsp;</td>
+  <td>4 = Center Vertical
+  <br>5 = Top
+  <br>6 = Top-left
+  <br>7 = Bottom-left</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='27 = 0x1b'>27</td>
+<td>AFStatusActiveSensor</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='29 = 0x1d'>29</td>
+<td>AFStatusTop-right</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='31 = 0x1f'>31</td>
+<td>AFStatusBottom-right</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='33 = 0x21'>33</td>
+<td>AFStatusBottom</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='35 = 0x23'>35</td>
+<td>AFStatusMiddleHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='37 = 0x25'>37</td>
+<td>AFStatusCenterVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='39 = 0x27'>39</td>
+<td>AFStatusTop</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='41 = 0x29'>41</td>
+<td>AFStatusTop-left</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='43 = 0x2b'>43</td>
+<td>AFStatusBottom-left</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='45 = 0x2d'>45</td>
+<td>AFStatusLeft</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='47 = 0x2f'>47</td>
+<td>AFStatusCenterHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='49 = 0x31'>49</td>
+<td>AFStatusRight</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='CameraInfo3'>Sony CameraInfo3 Tags</a></h2>
+<p>Camera information stored by the A33, A35, A55, A450, A500, A550, A560,
+A580, NEX-3/5/5C/C3 and VG10E.  Some tags are valid only for some of these
+models.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index1</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='0 = 0x0'>0</td>
+<td>LensSpec</td>
+<td class=c>undef[8]</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='14 = 0xe'>14</td>
+<td>FocalLength</td>
+<td class=c>int16u</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td class=r title='16 = 0x10'>16</td>
+<td>FocalLengthTeleZoom</td>
+<td class=c>int16u</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='20 = 0x14'>20</td>
+<td>AFPointSelected</td>
+<td class=c>int8u</td>
+<td><table class=cols><tr>
+  <td>0 = Auto
+  <br>1 = Center
+  <br>2 = Top
+  <br>3 = Upper-right
+  <br>4 = Right</td><td>&nbsp;&nbsp;</td>
+  <td>5 = Lower-right
+  <br>6 = Bottom
+  <br>7 = Lower-left
+  <br>8 = Left
+  <br>9 = Upper-left</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='21 = 0x15'>21</td>
+<td>FocusMode</td>
+<td class=c>int8u</td>
+<td><span class=s>0 = Manual
+  <br>1 = AF-S
+  <br>2 = AF-C
+  <br>3 = AF-A</span></td></tr>
+<tr class=b>
+<td class=r title='24 = 0x18'>24</td>
+<td>AFPoint</td>
+<td class=c>int8u</td>
+<td><table class=cols><tr>
+  <td>0 = Top-right
+  <br>1 = Bottom-right
+  <br>2 = Bottom
+  <br>3 = Middle Horizontal</td><td>&nbsp;&nbsp;</td>
+  <td>4 = Center Vertical
+  <br>5 = Top
+  <br>6 = Top-left
+  <br>7 = Bottom-left</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='25 = 0x19'>25</td>
+<td>FocusStatus</td>
+<td class=c>int8u</td>
+<td><span class=s><span class=n>(not valid with Contrast AF or for NEX models)</span>
+  <br>0 = Manual - Not confirmed (0)
+  <br>4 = Manual - Not confirmed (4)
+  <br>16 = AF-C - Confirmed
+  <br>24 = AF-C - Not Confirmed
+  <br>64 = AF-S - Confirmed</span></td></tr>
+<tr class=b>
+<td class=r title='27 = 0x1b'>27</td>
+<td>AFStatusActiveSensor</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='28 = 0x1c'>28</td>
+<td>AFPointSelected</td>
+<td class=c>int8u</td>
+<td><span class=s><span class=n>(not valid for Contrast AF)</span></span><table class=cols><tr>
+  <td>0 = Auto
+  <br>1 = Center
+  <br>2 = Top
+  <br>3 = Upper-right
+  <br>4 = Right
+  <br>5 = Lower-right
+  <br>6 = Bottom
+  <br>7 = Lower-left</td><td>&nbsp;&nbsp;</td>
+  <td>8 = Left
+  <br>9 = Upper-left
+  <br>10 = Far Right
+  <br>11 = Far Left
+  <br>12 = Upper-middle
+  <br>13 = Near Right
+  <br>14 = Lower-middle
+  <br>15 = Near Left</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='29 = 0x1d'>29</td>
+<td>FocusMode
+  <br>AFStatusTop-right</td>
+<td class=c>int8u<br>int16s</td>
+<td><span class=s>0 = Manual
+  <br>1 = AF-S
+  <br>2 = AF-C
+  <br>3 = AF-A</span><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='31 = 0x1f'>31</td>
+<td>AFStatusBottom-right</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='32 = 0x20'>32</td>
+<td>AFPoint</td>
+<td class=c>int8u</td>
+<td><span class=s><span class=n>(the AF sensor used for focusing. Not valid for Contrast AF)</span></span><table class=cols><tr>
+  <td>0 = Upper-left
+  <br>1 = Left
+  <br>2 = Lower-left
+  <br>3 = Far Left
+  <br>4 = Top (horizontal)
+  <br>5 = Near Right
+  <br>6 = Center (horizontal)
+  <br>7 = Near Left
+  <br>8 = Bottom (horizontal)
+  <br>9 = Top (vertical)</td><td>&nbsp;&nbsp;</td>
+  <td>10 = Center (vertical)
+  <br>11 = Bottom (vertical)
+  <br>12 = Far Right
+  <br>13 = Upper-right
+  <br>14 = Right
+  <br>15 = Lower-right
+  <br>16 = Upper-middle
+  <br>17 = Lower-middle
+  <br>255 = (none)</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='33 = 0x21'>33</td>
+<td>AFStatusActiveSensor
+  <br>AFStatusBottom</td>
+<td class=c>int16s<br>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+<table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='35 = 0x23'>35</td>
+<td>AFStatus15
+  <br>AFStatusMiddleHorizontal</td>
+<td class=c>-<br>int16s</td>
+<td>--&gt; <a href='Sony.html#AFStatus15'>Sony AFStatus15 Tags</a>
+  <br><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='37 = 0x25'>37</td>
+<td>AFStatusCenterVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='39 = 0x27'>39</td>
+<td>AFStatusTop</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='41 = 0x29'>41</td>
+<td>AFStatusTop-left</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='43 = 0x2b'>43</td>
+<td>AFStatusBottom-left</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='45 = 0x2d'>45</td>
+<td>AFStatusLeft</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='47 = 0x2f'>47</td>
+<td>AFStatusCenterHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='49 = 0x31'>49</td>
+<td>AFStatusRight</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='AFStatus15'>Sony AFStatus15 Tags</a></h2>
+<p>AF Status information for models with 15-point AF.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index1</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='0 = 0x0'>0</td>
+<td>AFStatusUpper-left</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='2 = 0x2'>2</td>
+<td>AFStatusLeft</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='4 = 0x4'>4</td>
+<td>AFStatusLower-left</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='6 = 0x6'>6</td>
+<td>AFStatusFarLeft</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='8 = 0x8'>8</td>
+<td>AFStatusTopHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='10 = 0xa'>10</td>
+<td>AFStatusNearRight</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='12 = 0xc'>12</td>
+<td>AFStatusCenterHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='14 = 0xe'>14</td>
+<td>AFStatusNearLeft</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='16 = 0x10'>16</td>
+<td>AFStatusBottomHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='18 = 0x12'>18</td>
+<td>AFStatusTopVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='20 = 0x14'>20</td>
+<td>AFStatusCenterVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='22 = 0x16'>22</td>
+<td>AFStatusBottomVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='24 = 0x18'>24</td>
+<td>AFStatusFarRight</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='26 = 0x1a'>26</td>
+<td>AFStatusUpper-right</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='28 = 0x1c'>28</td>
+<td>AFStatusRight</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='30 = 0x1e'>30</td>
+<td>AFStatusLower-right</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='32 = 0x20'>32</td>
+<td>AFStatusUpper-middle</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='34 = 0x22'>34</td>
+<td>AFStatusLower-middle</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='CameraInfoUnknown'>Sony CameraInfoUnknown Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index1</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr><td colspan=4 class=c><i>[no tags known]</i></td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='FocusInfo'>Sony FocusInfo Tags</a></h2>
+<p>More camera settings and focus information decoded for models such as the
+A200, A230, A290, A300, A330, A350, A380, A390, A700, A850 and A900.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index1</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='14 = 0xe'>14</td>
+<td>DriveMode2</td>
+<td class=c>int8u</td>
+<td><span class=s><span class=n>(A230, A290, A330, A380 and A390)</span></span><table class=cols><tr>
+  <td>0x1 = Single Frame
+  <br>0x2 = Continuous High
+  <br>0x4 = Self-timer 10 sec
+  <br>0x5 = Self-timer 2 sec, Mirror Lock-up
+  <br>0x7 = Continuous Bracketing
+  <br>0xa = Remote Commander
+  <br>0xb = Continuous Self-timer</td><td>&nbsp;&nbsp;</td></tr></table>
+<span class=s><span class=n>(A200, A300, A350, A700, A850 and A900)</span></span><table class=cols><tr>
+  <td>0x1 = Single Frame
+  <br>0x2 = Continuous High
+  <br>0x4 = Self-timer 10 sec
+  <br>0x5 = Self-timer 2 sec, Mirror Lock-up
+  <br>0x6 = Single-frame Bracketing
+  <br>0x7 = Continuous Bracketing
+  <br>0xa = Remote Commander
+  <br>0xb = Mirror Lock-up
+  <br>0x12 = Continuous Low
+  <br>0x18 = White Balance Bracketing Low
+  <br>0x19 = D-Range Optimizer Bracketing Low
+  <br>0x28 = White Balance Bracketing High
+  <br>0x29 = D-Range Optimizer Bracketing High</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='16 = 0x10'>16</td>
@@ -1623,6 +2265,19 @@ A200, A230, A290, A300, A330, A350, A380, A390, A700, A850 and A900.</p>
   <br>16 = Sepia</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
 <tr class=b>
+<td class=r title='119 = 0x77'>119</td>
+<td>DynamicRangeOptimizerMode</td>
+<td class=c>int8u</td>
+<td><span class=s>0 = Off
+  <br>1 = Standard
+  <br>2 = Advanced Auto
+  <br>3 = Advanced Level</span></td></tr>
+<tr>
+<td class=r title='121 = 0x79'>121</td>
+<td>DynamicRangeOptimizerLevel</td>
+<td class=c>int8u</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
 <td class=r title='2118 = 0x846'>2118</td>
 <td>ShutterCount</td>
 <td class=c>int32u</td>
@@ -2461,11 +3116,20 @@ increasing Y downwards)</span></span></td></tr>
   <br>3 = AF-A
   <br>4 = DMF</span></td></tr>
 <tr>
+<td class=r title='80 = 0x50'>80</td>
+<td>BatteryState</td>
+<td class=c>int16u</td>
+<td><span class=s>2 = Empty
+  <br>3 = Very Low
+  <br>4 = Low
+  <br>5 = Sufficient
+  <br>6 = Full</span></td></tr>
+<tr class=b>
 <td class=r title='81 = 0x51'>81</td>
 <td>BatteryLevel</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td class=r title='83 = 0x53'>83</td>
 <td>FocusStatus</td>
 <td class=c>int16u</td>
@@ -2474,20 +3138,20 @@ increasing Y downwards)</span></span></td></tr>
   <br>Bit 0 = Confirmed
   <br>Bit 1 = Failed
   <br>Bit 2 = Tracking</span></td></tr>
-<tr>
+<tr class=b>
 <td class=r title='84 = 0x54'>84</td>
 <td>SonyImageSize</td>
 <td class=c>int16u</td>
 <td><span class=s>1 = Large
   <br>2 = Medium
   <br>3 = Small</span></td></tr>
-<tr class=b>
+<tr>
 <td class=r title='85 = 0x55'>85</td>
 <td>AspectRatio</td>
 <td class=c>int16u</td>
 <td><span class=s>1 = 3:2
   <br>2 = 16:9</span></td></tr>
-<tr>
+<tr class=b>
 <td class=r title='86 = 0x56'>86</td>
 <td>Quality</td>
 <td class=c>int16u</td>
@@ -2500,18 +3164,18 @@ increasing Y downwards)</span></span></td></tr>
   <br>35 = CRAW + JPEG
   <br>48 = Standard</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td class=r title='88 = 0x58'>88</td>
 <td>ExposureLevelIncrements</td>
 <td class=c>int16u</td>
 <td><span class=s>33 = 1/3 EV
   <br>50 = 1/2 EV</span></td></tr>
-<tr>
+<tr class=b>
 <td class=r title='154 = 0x9a'>154</td>
 <td>FolderNumber</td>
 <td class=c>int16u</td>
 <td><span class=s>[Mask 0x3ff]</span></td></tr>
-<tr class=b>
+<tr>
 <td class=r title='155 = 0x9b'>155</td>
 <td>ImageNumber</td>
 <td class=c>int16u</td>
@@ -3230,25 +3894,25 @@ multi-frame noise reduction)</span></span></td></tr>
 <table class='inner sep' cellspacing=1>
 <tr class=h><th>Value</th><th>LensType2</th><th>Value</th><th>LensType2</th></tr>
 <tr><td class=r>0</td><td>= Unknown E-mount lens or other lens</td>
-<td class='r b'>32790</td><td class=b>= Sony E 50mm F1.8 OSS</td>
-</tr><tr><td class=r>1</td><td>= Sony LA-EA1 Adapter</td>
 <td class='r b'>32791</td><td class=b>= Sony E 16-70mm F4 ZA OSS</td>
-</tr><tr><td class=r>2</td><td>= Sony LA-EA2 Adapter</td>
+</tr><tr><td class=r>1</td><td>= Sony LA-EA1 Adapter</td>
 <td class='r b'>32792</td><td class=b>= Sony E 10-18mm F4 OSS</td>
-</tr><tr><td class=r>3</td><td>= Sony LA-EA3 Adapter</td>
+</tr><tr><td class=r>2</td><td>= Sony LA-EA2 Adapter</td>
 <td class='r b'>32793</td><td class=b>= Sony E PZ 16-50mm F3.5-5.6 OSS</td>
-</tr><tr><td class=r>6</td><td>= Sony LA-EA4 Adapter</td>
+</tr><tr><td class=r>3</td><td>= Sony LA-EA3 Adapter</td>
 <td class='r b'>32794</td><td class=b>= Sony FE 35mm F2.8 ZA</td>
-</tr><tr><td class=r>44</td><td>= Metabones Canon EF Smart Adapter</td>
+</tr><tr><td class=r>6</td><td>= Sony LA-EA4 Adapter</td>
 <td class='r b'>32795</td><td class=b>= Sony FE 24-70mm F4 ZA OSS</td>
-</tr><tr><td class=r>78</td><td>= Metabones Canon EF Smart Adapter Mark III</td>
+</tr><tr><td class=r>44</td><td>= Metabones Canon EF Smart Adapter</td>
 <td class='r b'>32797</td><td class=b>= Sony E 18-200mm F3.5-6.3 OSS LE</td>
-</tr><tr><td class=r>239</td><td>= Metabones Canon EF Speed Booster</td>
+</tr><tr><td class=r>78</td><td>= Metabones Canon EF Smart Adapter Mark III</td>
 <td class='r b'>32798</td><td class=b>= Sony E 20mm F2.8</td>
-</tr><tr><td class=r>32784</td><td>= Sony E 16mm F2.8</td>
+</tr><tr><td class=r>239</td><td>= Metabones Canon EF Speed Booster</td>
 <td class='r b'>32799</td><td class=b>= Sony E 35mm F1.8 OSS</td>
-</tr><tr><td class=r>32785</td><td>= Sony E 18-55mm F3.5-5.6 OSS</td>
+</tr><tr><td class=r>32784</td><td>= Sony E 16mm F2.8</td>
 <td class='r b'>32800</td><td class=b>= Sony E PZ 18-105mm F4 G OSS</td>
+</tr><tr><td class=r>32785</td><td>= Sony E 18-55mm F3.5-5.6 OSS</td>
+<td class='r b'>32803</td><td class=b>= Sony E 18-50mm F4-5.6</td>
 </tr><tr><td class=r>32786</td><td>= Sony E 55-210mm F4.5-6.3 OSS</td>
 <td class='r b'>32807</td><td class=b>= Sony E PZ 18-200mm F3.5-6.3 OSS</td>
 </tr><tr><td class=r>32787</td><td>= Sony E 18-200mm F3.5-6.3 OSS</td>
@@ -3257,6 +3921,8 @@ multi-frame noise reduction)</span></span></td></tr>
 <td class='r b'>32810</td><td class=b>= Sony FE 70-200mm F4 G OSS</td>
 </tr><tr><td class=r>32789</td><td>= Sony E 24mm F1.8 ZA</td>
 <td class='r b'>32813</td><td class=b>= Sony FE 28-70mm F3.5-5.6 OSS</td>
+</tr><tr><td class=r>32790</td><td>= Sony E 50mm F1.8 OSS</td>
+<td class='r b'>&nbsp;</td><td class=b>&nbsp;</td>
 </tr></table></td></tr></table></blockquote>
 
 <h2><a name='CameraSettingsUnknown'>Sony CameraSettingsUnknown Tags</a></h2>
@@ -3550,8 +4216,10 @@ rotation -- the width is always the longer dimension.</p>
 <td><table class=cols><tr>
   <td>0 = Off
   <br>1 = HDR Auto
-  <br>7 = HDR 3 EV</td><td>&nbsp;&nbsp;</td>
-  <td>9 = HDR 4 EV
+  <br>3 = HDR 1 EV
+  <br>5 = HDR 2 EV</td><td>&nbsp;&nbsp;</td>
+  <td>7 = HDR 3 EV
+  <br>9 = HDR 4 EV
   <br>11 = HDR 5 EV
   <br>13 = HDR 6 EV</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
@@ -3800,11 +4468,25 @@ option is used.</p>
 <td class=c>undef[7]</td>
 <td>&nbsp;</td></tr>
 <tr>
+<td title='0x0324 = 804'>0x0324</td>
+<td>DynamicRangeOptimizer</td>
+<td class=c>int8u</td>
+<td><table class=cols><tr>
+  <td>0 = Off
+  <br>1 = Auto
+  <br>3 = Lv1
+  <br>4 = Lv2</td><td>&nbsp;&nbsp;</td>
+  <td>5 = Lv3
+  <br>6 = Lv4
+  <br>7 = Lv5
+  <br>8 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
 <td title='0x04b4 = 1204'>0x04b4</td>
 <td>MeterInfo?</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#MeterInfo'>Sony MeterInfo Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x1128 = 4392'>0x1128</td>
 <td>ReleaseMode3</td>
 <td class=c>int8u</td>
@@ -3812,22 +4494,22 @@ option is used.</p>
   <br>1 = Continuous
   <br>2 = Continuous - Bracketing
   <br>5 = Continuous - Speed/Advance Priority</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x112c = 4396'>0x112c</td>
 <td>ReleaseMode2</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#ReleaseMode2'>Sony ReleaseMode2 Values</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x113e = 4414'>0x113e</td>
 <td>StopsAboveBaseISO</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x1140 = 4416'>0x1140</td>
 <td>BrightnessValue</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x1144 = 4420'>0x1144</td>
 <td>DynamicRangeOptimizer</td>
 <td class=c>int8u</td>
@@ -3841,52 +4523,64 @@ option is used.</p>
   <br>7 = Lv5
   <br>8 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0x1148 = 4424'>0x1148</td>
 <td>HDRSetting</td>
 <td class=c>int8u</td>
 <td><table class=cols><tr>
   <td>0 = Off
   <br>1 = HDR Auto
-  <br>7 = HDR 3 EV</td><td>&nbsp;&nbsp;</td>
-  <td>9 = HDR 4 EV
+  <br>3 = HDR 1 EV
+  <br>5 = HDR 2 EV</td><td>&nbsp;&nbsp;</td>
+  <td>7 = HDR 3 EV
+  <br>9 = HDR 4 EV
   <br>11 = HDR 5 EV
   <br>13 = HDR 6 EV</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0x114c = 4428'>0x114c</td>
 <td>ExposureCompensation</td>
 <td class=c>int16s</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x1167 = 4455'>0x1167</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#PictureEffect2'>Sony PictureEffect2 Values</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x1174 = 4468'>0x1174</td>
 <td>Quality2</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = JPEG
   <br>1 = RAW
   <br>2 = RAW + JPEG</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x1178 = 4472'>0x1178</td>
 <td>MeteringMode</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = Multi-segment
   <br>2 = Center-weighted average
   <br>3 = Spot</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x1179 = 4473'>0x1179</td>
 <td>ExposureProgram</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#ExposureProgram3'>Sony ExposureProgram3 Values</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x1180 = 4480'>0x1180</td>
 <td>WB_RGBLevels</td>
 <td class=c>int16u[3]</td>
 <td>&nbsp;</td></tr>
+<tr>
+<td title='0x1218 = 4632'>0x1218</td>
+<td>SonyISO</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x1a23 = 6691'>0x1a23</td>
+<td>LensParameters</td>
+<td class=c title=' ~ = Writable only with -n'>int16s[16]~</td>
+<td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag2010c'>Sony Tag2010c Tags</a></h2>
@@ -3922,11 +4616,25 @@ option is used.</p>
 <td class=c>undef[7]</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
+<td title='0x0300 = 768'>0x0300</td>
+<td>DynamicRangeOptimizer</td>
+<td class=c>int8u</td>
+<td><table class=cols><tr>
+  <td>0 = Off
+  <br>1 = Auto
+  <br>3 = Lv1
+  <br>4 = Lv2</td><td>&nbsp;&nbsp;</td>
+  <td>5 = Lv3
+  <br>6 = Lv4
+  <br>7 = Lv5
+  <br>8 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
 <td title='0x0490 = 1168'>0x0490</td>
 <td>MeterInfo?</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#MeterInfo'>Sony MeterInfo Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x1104 = 4356'>0x1104</td>
 <td>ReleaseMode3</td>
 <td class=c>int8u</td>
@@ -3934,22 +4642,22 @@ option is used.</p>
   <br>1 = Continuous
   <br>2 = Continuous - Bracketing
   <br>5 = Continuous - Speed/Advance Priority</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x1108 = 4360'>0x1108</td>
 <td>ReleaseMode2</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#ReleaseMode2'>Sony ReleaseMode2 Values</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x111a = 4378'>0x111a</td>
 <td>StopsAboveBaseISO</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x111c = 4380'>0x111c</td>
 <td>BrightnessValue</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x1120 = 4384'>0x1120</td>
 <td>DynamicRangeOptimizer</td>
 <td class=c>int8u</td>
@@ -3963,52 +4671,59 @@ option is used.</p>
   <br>7 = Lv5
   <br>8 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0x1124 = 4388'>0x1124</td>
 <td>HDRSetting</td>
 <td class=c>int8u</td>
 <td><table class=cols><tr>
   <td>0 = Off
   <br>1 = HDR Auto
-  <br>7 = HDR 3 EV</td><td>&nbsp;&nbsp;</td>
-  <td>9 = HDR 4 EV
+  <br>3 = HDR 1 EV
+  <br>5 = HDR 2 EV</td><td>&nbsp;&nbsp;</td>
+  <td>7 = HDR 3 EV
+  <br>9 = HDR 4 EV
   <br>11 = HDR 5 EV
   <br>13 = HDR 6 EV</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0x1128 = 4392'>0x1128</td>
 <td>ExposureCompensation</td>
 <td class=c>int16s</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x1143 = 4419'>0x1143</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#PictureEffect2'>Sony PictureEffect2 Values</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x1150 = 4432'>0x1150</td>
 <td>Quality2</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = JPEG
   <br>1 = RAW
   <br>2 = RAW + JPEG</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x1154 = 4436'>0x1154</td>
 <td>MeteringMode</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = Multi-segment
   <br>2 = Center-weighted average
   <br>3 = Spot</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x1155 = 4437'>0x1155</td>
 <td>ExposureProgram</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#ExposureProgram3'>Sony ExposureProgram3 Values</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x115c = 4444'>0x115c</td>
 <td>WB_RGBLevels</td>
 <td class=c>int16u[3]</td>
 <td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x11f4 = 4596'>0x11f4</td>
+<td>SonyISO</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag2010d'>Sony Tag2010d Tags</a></h2>
@@ -4040,11 +4755,25 @@ not valid for panorama images.</p>
 <td class=c>undef[7]</td>
 <td>&nbsp;</td></tr>
 <tr>
+<td title='0x037c = 892'>0x037c</td>
+<td>DynamicRangeOptimizer</td>
+<td class=c>int8u</td>
+<td><table class=cols><tr>
+  <td>0 = Off
+  <br>1 = Auto
+  <br>3 = Lv1
+  <br>4 = Lv2</td><td>&nbsp;&nbsp;</td>
+  <td>5 = Lv3
+  <br>6 = Lv4
+  <br>7 = Lv5
+  <br>8 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
 <td title='0x050c = 1292'>0x050c</td>
 <td>MeterInfo?</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#MeterInfo'>Sony MeterInfo Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x1180 = 4480'>0x1180</td>
 <td>ReleaseMode3</td>
 <td class=c>int8u</td>
@@ -4052,22 +4781,22 @@ not valid for panorama images.</p>
   <br>1 = Continuous
   <br>2 = Continuous - Bracketing
   <br>5 = Continuous - Speed/Advance Priority</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x1184 = 4484'>0x1184</td>
 <td>ReleaseMode2</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#ReleaseMode2'>Sony ReleaseMode2 Values</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x1196 = 4502'>0x1196</td>
 <td>StopsAboveBaseISO</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x1198 = 4504'>0x1198</td>
 <td>BrightnessValue</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x119c = 4508'>0x119c</td>
 <td>DynamicRangeOptimizer</td>
 <td class=c>int8u</td>
@@ -4081,44 +4810,51 @@ not valid for panorama images.</p>
   <br>7 = Lv5
   <br>8 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0x11a0 = 4512'>0x11a0</td>
 <td>HDRSetting</td>
 <td class=c>int8u</td>
 <td><table class=cols><tr>
   <td>0 = Off
   <br>1 = HDR Auto
-  <br>7 = HDR 3 EV</td><td>&nbsp;&nbsp;</td>
-  <td>9 = HDR 4 EV
+  <br>3 = HDR 1 EV
+  <br>5 = HDR 2 EV</td><td>&nbsp;&nbsp;</td>
+  <td>7 = HDR 3 EV
+  <br>9 = HDR 4 EV
   <br>11 = HDR 5 EV
   <br>13 = HDR 6 EV</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0x11bf = 4543'>0x11bf</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#PictureEffect2'>Sony PictureEffect2 Values</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x11d0 = 4560'>0x11d0</td>
 <td>MeteringMode</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = Multi-segment
   <br>2 = Center-weighted average
   <br>3 = Spot</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x11d1 = 4561'>0x11d1</td>
 <td>ExposureProgram</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#ExposureProgram3'>Sony ExposureProgram3 Values</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x11d8 = 4568'>0x11d8</td>
 <td>WB_RGBLevels</td>
 <td class=c>int16u[3]</td>
 <td>&nbsp;</td></tr>
+<tr>
+<td title='0x1270 = 4720'>0x1270</td>
+<td>SonyISO</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag2010e'>Sony Tag2010e Tags</a></h2>
-<p>Valid for SLT-A58/A99, ILCE-3000, NEX-3N/5R/5T/6/VG30E/VG900, DSC-RX100,
+<p>Valid for SLT-A58/A99, ILCE-3000/3500, NEX-3N/5R/5T/6/VG30E/VG900, DSC-RX100,
 DSC-RX1/RX1R. Also valid for DSC-HX300/HX50V/TX30/WX60/WX200/WX300, but not
 for panorama images.</p>
 <blockquote>
@@ -4152,11 +4888,25 @@ for panorama images.</p>
 <td class=c>undef[7]</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
+<td title='0x0328 = 808'>0x0328</td>
+<td>DynamicRangeOptimizer</td>
+<td class=c>int8u</td>
+<td><table class=cols><tr>
+  <td>0 = Off
+  <br>1 = Auto
+  <br>3 = Lv1
+  <br>4 = Lv2</td><td>&nbsp;&nbsp;</td>
+  <td>5 = Lv3
+  <br>6 = Lv4
+  <br>7 = Lv5
+  <br>8 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
 <td title='0x04b8 = 1208'>0x04b8</td>
 <td>MeterInfo?</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#MeterInfo'>Sony MeterInfo Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x115c = 4444'>0x115c</td>
 <td>ReleaseMode3</td>
 <td class=c>int8u</td>
@@ -4164,22 +4914,22 @@ for panorama images.</p>
   <br>1 = Continuous
   <br>2 = Continuous - Bracketing
   <br>5 = Continuous - Speed/Advance Priority</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x1160 = 4448'>0x1160</td>
 <td>ReleaseMode2</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#ReleaseMode2'>Sony ReleaseMode2 Values</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x1172 = 4466'>0x1172</td>
 <td>StopsAboveBaseISO</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x1174 = 4468'>0x1174</td>
 <td>BrightnessValue</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x1178 = 4472'>0x1178</td>
 <td>DynamicRangeOptimizer</td>
 <td class=c>int8u</td>
@@ -4193,67 +4943,113 @@ for panorama images.</p>
   <br>7 = Lv5
   <br>8 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0x117c = 4476'>0x117c</td>
 <td>HDRSetting</td>
 <td class=c>int8u</td>
 <td><table class=cols><tr>
   <td>0 = Off
   <br>1 = HDR Auto
-  <br>7 = HDR 3 EV</td><td>&nbsp;&nbsp;</td>
-  <td>9 = HDR 4 EV
+  <br>3 = HDR 1 EV
+  <br>5 = HDR 2 EV</td><td>&nbsp;&nbsp;</td>
+  <td>7 = HDR 3 EV
+  <br>9 = HDR 4 EV
   <br>11 = HDR 5 EV
   <br>13 = HDR 6 EV</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0x1180 = 4480'>0x1180</td>
 <td>ExposureCompensation</td>
 <td class=c>int16s</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x119b = 4507'>0x119b</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#PictureEffect2'>Sony PictureEffect2 Values</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x11a8 = 4520'>0x11a8</td>
 <td>Quality2</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = JPEG
   <br>1 = RAW
   <br>2 = RAW + JPEG</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x11ac = 4524'>0x11ac</td>
 <td>MeteringMode</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = Multi-segment
   <br>2 = Center-weighted average
   <br>3 = Spot</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x11ad = 4525'>0x11ad</td>
 <td>ExposureProgram</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#ExposureProgram3'>Sony ExposureProgram3 Values</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x11b4 = 4532'>0x11b4</td>
 <td>WB_RGBLevels</td>
 <td class=c>int16u[3]</td>
 <td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x1254 = 4692'>0x1254</td>
+<td>SonyISO</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr>
+<td title='0x1258 = 4696'>0x1258</td>
+<td>SonyISO</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
 <td title='0x1278 = 4728'>0x1278</td>
 <td>FocalLength</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x127a = 4730'>0x127a</td>
 <td>MinFocalLength</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x127c = 4732'>0x127c</td>
 <td>MaxFocalLength</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
+<tr>
+<td title='0x1280 = 4736'>0x1280</td>
+<td>SonyISO</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x1870 = 6256'>0x1870</td>
+<td>LensParameters?</td>
+<td class=c title=' ~ = Writable only with -n'>int16s[16]~</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x1891 = 6289'>0x1891</td>
+<td>LensFormat</td>
+<td class=c>int8u</td>
+<td><span class=s>0 = Unknown
+  <br>1 = APS-C
+  <br>2 = Full-frame</span></td></tr>
+<tr class=b>
+<td title='0x1892 = 6290'>0x1892</td>
+<td>LensMount</td>
+<td class=c>int8u</td>
+<td><span class=s>0 = Unknown
+  <br>1 = A-mount
+  <br>2 = E-mount</span></td></tr>
+<tr>
+<td title='0x1893 = 6291'>0x1893</td>
+<td>LensType2</td>
+<td class=c>int16u</td>
+<td>--&gt; <a href='Sony.html#LensType2'>Sony LensType2 Values</a></td></tr>
+<tr class=b>
+<td title='0x1896 = 6294'>0x1896</td>
+<td>LensType</td>
+<td class=c>int16u</td>
+<td>--&gt; <a href='Sony.html#LensType'>Sony LensType Values</a></td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag2010f'>Sony Tag2010f Tags</a></h2>
@@ -4269,11 +5065,25 @@ for panorama images.</p>
 <td class=c>int32u</td>
 <td>--&gt; <a href='Sony.html#ReleaseMode2'>Sony ReleaseMode2 Values</a></td></tr>
 <tr class=b>
+<td title='0x0050 = 80'>0x0050</td>
+<td>DynamicRangeOptimizer</td>
+<td class=c>int8u</td>
+<td><table class=cols><tr>
+  <td>0 = Off
+  <br>1 = Auto
+  <br>3 = Lv1
+  <br>4 = Lv2</td><td>&nbsp;&nbsp;</td>
+  <td>5 = Lv3
+  <br>6 = Lv4
+  <br>7 = Lv5
+  <br>8 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
 <td title='0x01e0 = 480'>0x01e0</td>
 <td>MeterInfo?</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#MeterInfo'>Sony MeterInfo Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x1014 = 4116'>0x1014</td>
 <td>ReleaseMode3</td>
 <td class=c>int8u</td>
@@ -4281,22 +5091,22 @@ for panorama images.</p>
   <br>1 = Continuous
   <br>2 = Continuous - Bracketing
   <br>5 = Continuous - Speed/Advance Priority</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x1018 = 4120'>0x1018</td>
 <td>ReleaseMode2</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#ReleaseMode2'>Sony ReleaseMode2 Values</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x102a = 4138'>0x102a</td>
 <td>StopsAboveBaseISO</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x102c = 4140'>0x102c</td>
 <td>BrightnessValue</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x1030 = 4144'>0x1030</td>
 <td>DynamicRangeOptimizer</td>
 <td class=c>int8u</td>
@@ -4310,71 +5120,79 @@ for panorama images.</p>
   <br>7 = Lv5
   <br>8 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0x1034 = 4148'>0x1034</td>
 <td>HDRSetting</td>
 <td class=c>int8u</td>
 <td><table class=cols><tr>
   <td>0 = Off
   <br>1 = HDR Auto
-  <br>7 = HDR 3 EV</td><td>&nbsp;&nbsp;</td>
-  <td>9 = HDR 4 EV
+  <br>3 = HDR 1 EV
+  <br>5 = HDR 2 EV</td><td>&nbsp;&nbsp;</td>
+  <td>7 = HDR 3 EV
+  <br>9 = HDR 4 EV
   <br>11 = HDR 5 EV
   <br>13 = HDR 6 EV</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0x1038 = 4152'>0x1038</td>
 <td>ExposureCompensation</td>
 <td class=c>int16s</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x1053 = 4179'>0x1053</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#PictureEffect2'>Sony PictureEffect2 Values</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x1060 = 4192'>0x1060</td>
 <td>Quality2</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = JPEG
   <br>1 = RAW
   <br>2 = RAW + JPEG</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x1064 = 4196'>0x1064</td>
 <td>MeteringMode</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = Multi-segment
   <br>2 = Center-weighted average
   <br>3 = Spot</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x1065 = 4197'>0x1065</td>
 <td>ExposureProgram</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#ExposureProgram3'>Sony ExposureProgram3 Values</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x106c = 4204'>0x106c</td>
 <td>WB_RGBLevels</td>
 <td class=c>int16u[3]</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x1134 = 4404'>0x1134</td>
 <td>FocalLength</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x1136 = 4406'>0x1136</td>
 <td>MinFocalLength</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x1138 = 4408'>0x1138</td>
 <td>MaxFocalLength</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
+<tr>
+<td title='0x113c = 4412'>0x113c</td>
+<td>SonyISO</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag2010g'>Sony Tag2010g Tags</a></h2>
-<p>Valid for DSC-RX10/HX60V/HX400V, ILCE-7/7R/7S/5000/6000, ILCA-77M2.</p>
+<p>Valid for DSC-RX10/RX100M3/HX60V/HX400V/WX220, ILCE-7/7R/7S/5000/5100/6000,
+ILCA-77M2.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
@@ -4386,6 +5204,20 @@ for panorama images.</p>
 <td class=c>int32u</td>
 <td>--&gt; <a href='Sony.html#ReleaseMode2'>Sony ReleaseMode2 Values</a></td></tr>
 <tr class=b>
+<td title='0x0050 = 80'>0x0050</td>
+<td>DynamicRangeOptimizer</td>
+<td class=c>int8u</td>
+<td><table class=cols><tr>
+  <td>0 = Off
+  <br>1 = Auto
+  <br>3 = Lv1
+  <br>4 = Lv2</td><td>&nbsp;&nbsp;</td>
+  <td>5 = Lv3
+  <br>6 = Lv4
+  <br>7 = Lv5
+  <br>8 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
 <td title='0x020c = 524'>0x020c</td>
 <td>ReleaseMode3</td>
 <td class=c>int8u</td>
@@ -4393,22 +5225,22 @@ for panorama images.</p>
   <br>1 = Continuous
   <br>2 = Continuous - Bracketing
   <br>5 = Continuous - Speed/Advance Priority</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x0210 = 528'>0x0210</td>
 <td>ReleaseMode2</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#ReleaseMode2'>Sony ReleaseMode2 Values</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x0222 = 546'>0x0222</td>
 <td>StopsAboveBaseISO</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x0224 = 548'>0x0224</td>
 <td>BrightnessValue</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x0228 = 552'>0x0228</td>
 <td>DynamicRangeOptimizer</td>
 <td class=c>int8u</td>
@@ -4422,72 +5254,108 @@ for panorama images.</p>
   <br>7 = Lv5
   <br>8 = n/a</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0x022c = 556'>0x022c</td>
 <td>HDRSetting</td>
 <td class=c>int8u</td>
 <td><table class=cols><tr>
   <td>0 = Off
   <br>1 = HDR Auto
-  <br>7 = HDR 3 EV</td><td>&nbsp;&nbsp;</td>
-  <td>9 = HDR 4 EV
+  <br>3 = HDR 1 EV
+  <br>5 = HDR 2 EV</td><td>&nbsp;&nbsp;</td>
+  <td>7 = HDR 3 EV
+  <br>9 = HDR 4 EV
   <br>11 = HDR 5 EV
   <br>13 = HDR 6 EV</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0x0230 = 560'>0x0230</td>
 <td>ExposureCompensation</td>
 <td class=c>int16s</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x024b = 587'>0x024b</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#PictureEffect2'>Sony PictureEffect2 Values</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x0258 = 600'>0x0258</td>
 <td>Quality2</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = JPEG
   <br>1 = RAW
   <br>2 = RAW + JPEG</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x025c = 604'>0x025c</td>
 <td>MeteringMode</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = Multi-segment
   <br>2 = Center-weighted average
   <br>3 = Spot</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x025d = 605'>0x025d</td>
 <td>ExposureProgram</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#ExposureProgram3'>Sony ExposureProgram3 Values</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x0264 = 612'>0x0264</td>
 <td>WB_RGBLevels</td>
 <td class=c>int16u[3]</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x032c = 812'>0x032c</td>
 <td>FocalLength</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x032e = 814'>0x032e</td>
 <td>MinFocalLength</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x0330 = 816'>0x0330</td>
 <td>MaxFocalLength</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x0344 = 836'>0x0344</td>
+<td>SonyISO</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
 <tr>
 <td title='0x0388 = 904'>0x0388</td>
 <td>MeterInfo?</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#MeterInfo'>Sony MeterInfo Tags</a></td></tr>
+<tr class=b>
+<td title='0x189c = 6300'>0x189c</td>
+<td>LensParameters?</td>
+<td class=c title=' ~ = Writable only with -n'>int16s[16]~</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x18bd = 6333'>0x18bd</td>
+<td>LensFormat</td>
+<td class=c>int8u</td>
+<td><span class=s>0 = Unknown
+  <br>1 = APS-C
+  <br>2 = Full-frame</span></td></tr>
+<tr class=b>
+<td title='0x18be = 6334'>0x18be</td>
+<td>LensMount</td>
+<td class=c>int8u</td>
+<td><span class=s>0 = Unknown
+  <br>1 = A-mount
+  <br>2 = E-mount</span></td></tr>
+<tr>
+<td title='0x18bf = 6335'>0x18bf</td>
+<td>LensType2</td>
+<td class=c>int16u</td>
+<td>--&gt; <a href='Sony.html#LensType2'>Sony LensType2 Values</a></td></tr>
+<tr class=b>
+<td title='0x18c2 = 6338'>0x18c2</td>
+<td>LensType</td>
+<td class=c>int16u</td>
+<td>--&gt; <a href='Sony.html#LensType'>Sony LensType Values</a></td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='AFInfo2'>Sony AFInfo2 Tags</a></h2>
@@ -4498,8 +5366,9 @@ for panorama images.</p>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
 <td class=r title='0 = 0x0'>0</td>
-<td>AFPointsUsed</td>
-<td class=c>int32u</td>
+<td>AFPointsUsed
+  <br>AFPointsUsed</td>
+<td class=c>int32u<br>int8u[10]</td>
 <td><span class=s><span class=n>(SLT models only)</span></span><table class=cols><tr>
   <td>0x0 = (none)
   <br>Bit 0 = Center
@@ -4521,7 +5390,9 @@ for panorama images.</p>
   <br>Bit 16 = Lower Far Right
   <br>Bit 17 = Lower Far Left
   <br>Bit 18 = Upper Far Left</td><td>&nbsp;&nbsp;</td></tr></table>
-</td></tr>
+<span class=s><span class=n>(ILCA models)</span>
+  <br>0x0 = (none)
+  <br>Bit 39 = Center</span></td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='ShotInfo'>Sony ShotInfo Tags</a></h2>
@@ -4726,11 +5597,15 @@ substitution cipher, but the deciphered values are listed below.</p>
 <td title='0x0031 = 49'>0x0031</td>
 <td>FlashStatus</td>
 <td class=c>int8u</td>
-<td><span class=s>0 = No Flash present
+<td><table class=cols><tr>
+  <td>0 = No Flash present
+  <br>2 = Flash Inhibited
   <br>64 = Built-in Flash present
-  <br>65 = Built-in Flash present and fired
+  <br>65 = Built-in Flash Fired
+  <br>66 = Built-in Flash Inhibited
   <br>128 = External Flash present
-  <br>129 = External Flash present and fired</span></td></tr>
+  <br>129 = External Flash Fired</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
 <tr class=b>
 <td title='0x0032 = 50'>0x0032</td>
 <td>ImageCount</td>
@@ -4866,7 +5741,7 @@ substitution cipher, but the deciphered values are listed below.</p>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag9400b'>Sony Tag9400b Tags</a></h2>
-<p>Valid for NEX-3N, ILCE-3000, SLT-A58, DSC-WX60, DSC-WX300, DSC-RX100M2,
+<p>Valid for NEX-3N, ILCE-3000/3500, SLT-A58, DSC-WX60, DSC-WX300, DSC-RX100M2,
 DSC-HX50V, DSC-QX10/QX100.</p>
 <blockquote>
 <table class=frame><tr><td>
@@ -4944,7 +5819,7 @@ DSC-HX50V, DSC-QX10/QX100.</p>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag9400c'>Sony Tag9400c Tags</a></h2>
-<p>Valid for DSC-RX10/HX60V/HX400V, ILCE-7/7R/7S/5000/6000, ILCA-77M2.</p>
+<p>Valid for DSC-RX10/RX100M3/HX60V/HX400V, ILCE-7/7R/7S/5000/5100/6000, ILCA-77M2.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
@@ -4993,7 +5868,8 @@ DSC-HX50V, DSC-QX10/QX100.</p>
 <td><span class=s>0 = Continuous
   <br>1 = 1 file
   <br>2 = 2 files
-  <br>3 = 3 files</span></td></tr>
+  <br>3 = 3 files
+  <br>5 = 5 files</span></td></tr>
 <tr>
 <td title='0x0029 = 41'>0x0029</td>
 <td>CameraOrientation</td>
@@ -5055,91 +5931,151 @@ DSC-HX50V, DSC-QX10/QX100.</p>
 </td></tr>
 </table></td></tr></table></blockquote>
 
-<h2><a name='Tag9403'>Sony Tag9403 Tags</a></h2>
+<h2><a name='Tag9403'>Sony Tag9403 Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td title='0x0005 = 5'>0x0005</td>
+<td>CameraTemperature</td>
+<td class=c>int8s</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='Tag9404a'>Sony Tag9404a Tags</a></h2>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
 <tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td title='0x0005 = 5'>0x0005</td>
-<td>CameraTemperature</td>
-<td class=c>int8s</td>
+<td title='0x0019 = 25'>0x0019</td>
+<td>LensZoomPosition</td>
+<td class=c>int16u</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
+<h2><a name='Tag9404b'>Sony Tag9404b Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td title='0x001e = 30'>0x001e</td>
+<td>LensZoomPosition</td>
+<td class=c>int16u</td>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag9405a'>Sony Tag9405a Tags</a></h2>
-<p>Valid for SLT, NEX, ILCE-3000 and several DSC models.</p>
+<p>Valid for SLT, NEX, ILCE-3000/3500 and several DSC models.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
 <tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
+<td title='0x0601 = 1537'>0x0601</td>
+<td>DistortionCorrection</td>
+<td class=c>int8u</td>
+<td><span class=s>0 = None
+  <br>1 = Applied</span></td></tr>
+<tr class=b>
 <td title='0x0603 = 1539'>0x0603</td>
 <td>LensFormat</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = Unknown
   <br>1 = APS-C
   <br>2 = Full-frame</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x0604 = 1540'>0x0604</td>
 <td>LensMount</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = Unknown
   <br>1 = A-mount
   <br>2 = E-mount</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0x0605 = 1541'>0x0605</td>
 <td>LensType2</td>
 <td class=c>int16u</td>
 <td>--&gt; <a href='Sony.html#LensType2'>Sony LensType2 Values</a>
   <br><span class='n s'>(E-mount lenses)</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x0608 = 1544'>0x0608</td>
 <td>LensType</td>
 <td class=c>int16u</td>
 <td>--&gt; <a href='Sony.html#LensType'>Sony LensType Values</a>
   <br><span class='n s'>(A-mount lenses on SLT and NEX)</span></td></tr>
+<tr class=b>
+<td title='0x06ca = 1738'>0x06ca</td>
+<td>LensParameters?</td>
+<td class=c title=' ~ = Writable only with -n'>int16s[16]~</td>
+<td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag9405b'>Sony Tag9405b Tags</a></h2>
-<p>Valid for the DSC-RX10/HX60V/HX400V/WX220, ILCE-7/7R/7S/5000/6000, ILCA-77M2.</p>
+<p>Valid for the DSC-RX10/RX100M3/HX60V/HX400V/WX220, ILCE-7/7R/7S/5000/5100/6000, ILCA-77M2.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
 <tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
+<td title='0x0004 = 4'>0x0004</td>
+<td>SonyISO</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x0006 = 6'>0x0006</td>
+<td>BaseISO</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x000a = 10'>0x000a</td>
+<td>StopsAboveBaseISO</td>
+<td class=c>int16u</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
 <td title='0x000e = 14'>0x000e</td>
 <td>SonyExposureTime2</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x0010 = 16'>0x0010</td>
 <td>ExposureTime</td>
 <td class=c>rational32u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x0014 = 20'>0x0014</td>
 <td>SonyFNumber</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0x0016 = 22'>0x0016</td>
 <td>SonyMaxApertureValue</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0x0024 = 36'>0x0024</td>
 <td>SequenceImageNumber</td>
 <td class=c>int32u</td>
 <td><span class=s><span class=n>(number of images captured in burst sequence)</span></span></td></tr>
-<tr class=b>
+<tr>
 <td title='0x0034 = 52'>0x0034</td>
 <td>ReleaseMode2</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#ReleaseMode2'>Sony ReleaseMode2 Values</a></td></tr>
+<tr class=b>
+<td title='0x0042 = 66'>0x0042</td>
+<td>HighISONoiseReduction</td>
+<td class=c>int8u</td>
+<td><span class=s>0 = Off
+  <br>1 = Low
+  <br>2 = Normal
+  <br>3 = High</span></td></tr>
 <tr>
 <td title='0x0044 = 68'>0x0044</td>
 <td>LongExposureNoiseReduction</td>
@@ -5175,6 +6111,17 @@ DSC-HX50V, DSC-QX10/QX100.</p>
   <br>13 = Sepia</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
 <tr>
+<td title='0x0052 = 82'>0x0052</td>
+<td>Sharpness</td>
+<td class=c>int8s</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x005b = 91'>0x005b</td>
+<td>DistortionCorrection</td>
+<td class=c>int8u</td>
+<td><span class=s>0 = None
+  <br>1 = Applied</span></td></tr>
+<tr>
 <td title='0x005d = 93'>0x005d</td>
 <td>LensFormat</td>
 <td class=c>int8u</td>
@@ -5200,6 +6147,16 @@ DSC-HX50V, DSC-QX10/QX100.</p>
 <td class=c>int16u</td>
 <td>--&gt; <a href='Sony.html#LensType'>Sony LensType Values</a>
   <br><span class='n s'>(A-mount lenses on SLT and NEX)</span></td></tr>
+<tr>
+<td title='0x0064 = 100'>0x0064</td>
+<td>LensParameters?</td>
+<td class=c title=' ~ = Writable only with -n'>int16s[16]~</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x0342 = 834'>0x0342</td>
+<td>LensZoomPosition</td>
+<td class=c>int16u</td>
+<td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag9406'>Sony Tag9406 Tags</a></h2>
@@ -5270,6 +6227,7 @@ DSC-HX50V, DSC-QX10/QX100.</p>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag940c'>Sony Tag940c Tags</a></h2>
+<p>NEX and ILCE models only.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
@@ -5302,7 +6260,25 @@ DSC-HX50V, DSC-QX10/QX100.</p>
 <td>AFType</td>
 <td class=c>int8u</td>
 <td><span class=s>1 = 15-point
-  <br>2 = 19-point</span></td></tr>
+  <br>2 = 19-point
+  <br>3 = 79-point</span></td></tr>
+<tr class=b>
+<td title='0x0004 = 4'>0x0004</td>
+<td>AFStatusActiveSensor</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td title='0x0005 = 5'>0x0005</td>
+<td>FocusMode</td>
+<td class=c>int8u</td>
+<td><span class=s><span class=n>(ILCA models only)</span>
+  <br>0 = Manual
+  <br>2 = AF-S
+  <br>3 = AF-C
+  <br>4 = AF-A</span></td></tr>
 <tr class=b>
 <td title='0x0007 = 7'>0x0007</td>
 <td>AFPoint</td>
@@ -5493,17 +6469,287 @@ DSC-HX50V, DSC-QX10/QX100.</p>
   <br>7 = AF-D</td><td>&nbsp;&nbsp;</td></tr></table>
 </td></tr>
 <tr>
-<td title='0x017d = 381'>0x017d</td>
+<td title='0x0011 = 17'>0x0011</td>
+<td>AFStatus15
+  <br>AFStatus19</td>
+<td class=c>-<br>-</td>
+<td>--&gt; <a href='Sony.html#AFStatus15'>Sony AFStatus15 Tags</a>
+  <br>--&gt; <a href='Sony.html#AFStatus19'>Sony AFStatus19 Tags</a></td></tr>
+<tr class=b>
+<td title='0x003a = 58'>0x003a</td>
+<td>AFAreaMode</td>
+<td class=c>int8u</td>
+<td><span class=s>0 = Wide
+  <br>1 = Center
+  <br>2 = Flexible Spot
+  <br>3 = Zone
+  <br>4 = Expanded Flexible Spot</span></td></tr>
+<tr>
+<td title='0x0050 = 80'>0x0050</td>
 <td>AFMicroAdj</td>
 <td class=c>int8s</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
+<td title='0x017d = 381'>0x017d</td>
+<td>AFMicroAdj</td>
+<td class=c>int8s</td>
+<td>&nbsp;</td></tr>
+<tr>
 <td title='0x017e = 382'>0x017e</td>
 <td>ExposureProgram</td>
 <td class=c>int8u</td>
 <td>--&gt; <a href='Sony.html#ExposureProgram3'>Sony ExposureProgram3 Values</a></td></tr>
 </table></td></tr></table></blockquote>
 
+<h2><a name='AFStatus19'>Sony AFStatus19 Tags</a></h2>
+<p>AF Status information for models with 19-point AF.</p>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Index1</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td class=r title='0 = 0x0'>0</td>
+<td>AFStatusUpperFarLeft</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='2 = 0x2'>2</td>
+<td>AFStatusUpper-leftHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='4 = 0x4'>4</td>
+<td>AFStatusFarLeftHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='6 = 0x6'>6</td>
+<td>AFStatusLeftHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='8 = 0x8'>8</td>
+<td>AFStatusLowerFarLeft</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='10 = 0xa'>10</td>
+<td>AFStatusLower-leftHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='12 = 0xc'>12</td>
+<td>AFStatusUpper-leftVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='14 = 0xe'>14</td>
+<td>AFStatusLeftVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='16 = 0x10'>16</td>
+<td>AFStatusLower-leftVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='18 = 0x12'>18</td>
+<td>AFStatusFarLeftVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='20 = 0x14'>20</td>
+<td>AFStatusTopHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='22 = 0x16'>22</td>
+<td>AFStatusNearRight</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='24 = 0x18'>24</td>
+<td>AFStatusCenterHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='26 = 0x1a'>26</td>
+<td>AFStatusNearLeft</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='28 = 0x1c'>28</td>
+<td>AFStatusBottomHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='30 = 0x1e'>30</td>
+<td>AFStatusTopVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='32 = 0x20'>32</td>
+<td>AFStatusUpper-middle</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='34 = 0x22'>34</td>
+<td>AFStatusCenterVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='36 = 0x24'>36</td>
+<td>AFStatusLower-middle</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='38 = 0x26'>38</td>
+<td>AFStatusBottomVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='40 = 0x28'>40</td>
+<td>AFStatusUpperFarRight</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='42 = 0x2a'>42</td>
+<td>AFStatusUpper-rightHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='44 = 0x2c'>44</td>
+<td>AFStatusFarRightHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='46 = 0x2e'>46</td>
+<td>AFStatusRightHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='48 = 0x30'>48</td>
+<td>AFStatusLowerFarRight</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='50 = 0x32'>50</td>
+<td>AFStatusLower-rightHorizontal</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='52 = 0x34'>52</td>
+<td>AFStatusFarRightVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='54 = 0x36'>54</td>
+<td>AFStatusUpper-rightVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr>
+<td class=r title='56 = 0x38'>56</td>
+<td>AFStatusRightVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+<tr class=b>
+<td class=r title='58 = 0x3a'>58</td>
+<td>AFStatusLower-rightVertical</td>
+<td class=c>int16s</td>
+<td><table class=cols><tr>
+  <td>-32768 = Out of Focus</td><td>&nbsp;&nbsp;</td>
+  <td>0 = In Focus</td><td>&nbsp;&nbsp;</td></tr></table>
+</td></tr>
+</table></td></tr></table></blockquote>
+
 <h2><a name='PIC'>Sony PIC Tags</a></h2>
 <p>The TextInfo data is extracted as a block to preserve the formatting, and
 some of the more interesting information is extracted as separate tags.</p>
@@ -5909,7 +7155,7 @@ the JPEG image from a PMP file)</span></span></td></tr>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised May 10, 2014</i>
+<br><i>Last revised Sep 3, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -44,12 +44,12 @@ has no effect, and both structured and flattened tags may be written.  See
 <a href="../struct.html">struct.html</a> for more details.</p>
 
 <p>Individual languages for <code>lang-alt</code> tags are accessed by suffixing the tag
-name with a &#39;-&#39;, followed by an RFC 3066 language code (ie. &quot;XMP:Title-fr&quot;,
+name with a &#39;-&#39;, followed by an RFC 3066 language code (eg. &quot;XMP:Title-fr&quot;,
 or &quot;Rights-en-US&quot;).  (See <a href="http://www.ietf.org/rfc/rfc3066.txt">http://www.ietf.org/rfc/rfc3066.txt</a> for the RFC
 3066 specification.)  A <code>lang-alt</code> tag with no language code accesses the
 &quot;x-default&quot; language, but causes other languages for this tag to be deleted
 when writing.  The &quot;x-default&quot; language code may be specified when writing
-to preserve other existing languages (ie. &quot;XMP-dc:Description-x-default&quot;). 
+to preserve other existing languages (eg. &quot;XMP-dc:Description-x-default&quot;). 
 When reading, &quot;x-default&quot; is not specified.</p>
 
 <p>The XMP tags are organized according to schema <b>Namespace</b> in the following
@@ -58,7 +58,7 @@ been shortened for convenience (since the family 1 group names are derived
 from these by adding a leading &quot;XMP-&quot;).  In cases where a tag name exists in
 more than one namespace, less common namespaces are avoided when writing.
 However, any namespace may be written by specifying a family 1 group name
-for the tag, ie) XMP-exif:Contrast or XMP-crs:Contrast.  When deciding on
+for the tag, eg) XMP-exif:Contrast or XMP-crs:Contrast.  When deciding on
 which tags to add to an image, using standard schemas such as
 <a href="#dc">dc</a>, <a href="#xmp">xmp</a>, <a href="#iptcCore">iptcCore</a>
 and <a href="#iptcExt">iptcExt</a> is recommended if possible.</p>
@@ -7875,6 +7875,24 @@ XMP properties.</p>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
+<h2><a name='XML'>XMP XML Tags</a></h2>
+<blockquote>
+<table class=frame><tr><td>
+<table class=inner cellspacing=1>
+<tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
+<th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
+<tr>
+<td>'dc'</td>
+<td>dc</td>
+<td class=c>-</td>
+<td>--&gt; <a href='XMP.html#dc'>XMP dc Tags</a></td></tr>
+<tr class=b>
+<td>'lastUpdate'</td>
+<td>LastUpdate</td>
+<td class=c>N</td>
+<td>&nbsp;</td></tr>
+</table></td></tr></table></blockquote>
+
 <h2><a name='SVG'>XMP SVG Tags</a></h2>
 <p>SVG (Scalable Vector Graphics) image tags.  By default, only the top-level
 SVG and Metadata tags are extracted from these images, but all graphics tags
@@ -7947,7 +7965,7 @@ XMP module for convenience.  (see <a href="http://www.w3.org/TR/SVG11/">http://w
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Feb 19, 2014</i>
+<br><i>Last revised Jul 3, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -10,9 +10,10 @@
 <p>The following tags are extracted from ZIP archives.  ExifTool also extracts
 additional meta information from compressed documents inside some ZIP-based
 files such Office Open XML (DOCX, PPTX and XLSX), Open Document (ODB, ODC,
-ODF, ODG, ODI, ODP, ODS and ODT), iWork (KEY, PAGES, NUMBERS), and Capture
-One Enhanced Image Package (EIP).  The ExifTool family 3 groups may be used
-to organize the output by embedded document number (ie. the exiftool <code>-g3</code>
+ODF, ODG, ODI, ODP, ODS and ODT), iWork (KEY, PAGES, NUMBERS), Capture One
+Enhanced Image Package (EIP), Adobe InDesign Markup Language (IDML), and
+Electronic Publication (EPUB).  The ExifTool family 3 groups may be used to
+organize ZIP tags by embedded document number (ie. the exiftool <code>-g3</code>
 option).</p>
 <blockquote>
 <table class=frame><tr><td>
@@ -198,7 +199,7 @@ for the first file in the archive.</p>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Aug 24, 2011</i>
+<br><i>Last revised May 26, 2014</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
@@ -59,6 +59,7 @@ The tables listed below give the names of all tags recognized by ExifTool.
 <a href='MinoltaRaw.html'>MinoltaRaw</a><br>
 <a href='PanasonicRaw.html'>PanasonicRaw</a><br>
 <a href='SigmaRaw.html'>SigmaRaw</a><br>
+<a href='Lytro.html'>Lytro</a><br>
 <a href='JFIF.html'>JFIF</a><br>
 <a href='FlashPix.html'>FlashPix</a><br>
 <a href='MPF.html'>MPF</a><br>
@@ -70,8 +71,8 @@ The tables listed below give the names of all tags recognized by ExifTool.
 <a href='DarwinCore.html'>DarwinCore</a><br>
 <a href='FotoStation.html'>FotoStation</a><br>
 <a href='PhotoMechanic.html'>PhotoMechanic</a><br>
-<a href='Microsoft.html'>Microsoft</a><br>
-<a href='GIMP.html'>GIMP</a></td><td width='16%'>
+<a href='Microsoft.html'>Microsoft</a></td><td width='16%'>
+<a href='GIMP.html'>GIMP</a><br>
 <a href='MIE.html'>MIE</a><br>
 <a href='Jpeg2000.html'>Jpeg2000</a><br>
 <a href='GIF.html'>GIF</a><br>
@@ -89,8 +90,8 @@ The tables listed below give the names of all tags recognized by ExifTool.
 <a href='Radiance.html'>Radiance</a><br>
 <a href='PDF.html'>PDF</a><br>
 <a href='PostScript.html'>PostScript</a><br>
-<a href='ID3.html'>ID3</a><br>
-<a href='ITC.html'>ITC</a></td><td width='16%'>
+<a href='ID3.html'>ID3</a></td><td width='16%'>
+<a href='ITC.html'>ITC</a><br>
 <a href='Ogg.html'>Ogg</a><br>
 <a href='Vorbis.html'>Vorbis</a><br>
 <a href='FLAC.html'>FLAC</a><br>
@@ -108,10 +109,11 @@ The tables listed below give the names of all tags recognized by ExifTool.
 <a href='Flash.html'>Flash</a><br>
 <a href='Real.html'>Real</a><br>
 <a href='RIFF.html'>RIFF</a><br>
-<a href='AIFF.html'>AIFF</a><br>
-<a href='ASF.html'>ASF</a></td><td width='16%'>
+<a href='AIFF.html'>AIFF</a></td><td width='16%'>
+<a href='ASF.html'>ASF</a><br>
 <a href='DICOM.html'>DICOM</a><br>
 <a href='HTML.html'>HTML</a><br>
+<a href='Palm.html'>Palm</a><br>
 <a href='Torrent.html'>Torrent</a><br>
 <a href='EXE.html'>EXE</a><br>
 <a href='LNK.html'>LNK</a><br>
@@ -199,7 +201,7 @@ and complete as possible, and feed back any new discoveries to the source.)
 </p>
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Apr 4, 2014</i>
+<br><i>Last revised Jul 17, 2014</i>
 <p class=lf><a href='../index.html'>&lt;-- Back to ExifTool home page</a></p>
 </body>
 </html>
@@ -66,7 +66,7 @@
 <a name='v9.41'><b>Nov. 16, 2013 - Version 9.41</b></a>
 <ul>
 <li>Added the ability to use multiple group qualifiers on tag names when writing
-    and copying (ie. "-QuickTime:Time:All=now")
+    and copying (eg. "-QuickTime:Time:All=now")
 <li>Added ability to geotag from Google Location Services KML files
 <li>Added a new Pentax LensType (thanks Louis Granboulan)
 <li>Added a new Canon LensType (thanks David Monro)
@@ -79,7 +79,7 @@
 <a name='v9.40'><b>Nov. 8, 2013 - Version 9.40</b> - "Write QuickTime"</a>
 <ul>
 <li>Added ability to write XMP and edit date/time tags in QuickTime-format files
-    (ie. MOV, MP4)
+    (eg. MOV, MP4)
 <li>Added -api option to allow API options to be set via the command line
 <li>Added ability to specify family 2 group name when writing
 <li>Added write support for a number of new XMP tags
@@ -701,7 +701,7 @@
 <li>Changed names of some PanasonicRaw DistortionInfo tags
 <li>Changed decoding for a Sony ExposureMode value
 <li>Fixed hang/crash that could occur when writing to an image with corrupted
-    Sony MoreInfo data (ie. SLT-A55V JPEG corrupted by GIMP)
+    Sony MoreInfo data (eg. SLT-A55V JPEG corrupted by GIMP)
 </ul>
 
 <a name='v9.01'><b>Aug. 25, 2012 - Version 9.01</b></a> <span class=grn>(production release)</span>
@@ -757,7 +757,7 @@
 <li>Decode a number of new Sony tags (thanks Jos Roost)
 <li>Changed name of Minolta BatteryLevel tag to BatteryState
 <li>Patched problem with conditional deletion of IPTC string-type tags which are
-    incorrectly null terminated (ie. written by Picasa 2.0)
+    incorrectly null terminated (eg. written by Picasa 2.0)
 <li>Fixed problem copying Canon 5DmkIII MakerNotes from CR2 to JPEG images
 <li>Fixed runtime error when writing some images with corrupted EXIF
 </ul>
@@ -1695,7 +1695,7 @@
 <a name='v8.36'><b>Oct. 30, 2010 - Version 8.36</b></a>
 <ul>
 <li>Added ability to read/write metadata in Sigma X3F images containing a
-    JpgFromRaw (ie. all Sigma models except the SD9 and SD10)
+    JpgFromRaw (eg. all Sigma models except the SD9 and SD10)
 <li>Added -stay_open option to avoid startup delay when called from other
     applications
 <li>Added a new Pentax LensType (thanks Hubert Meier)
@@ -1723,7 +1723,7 @@
 <li>Extract Olympus ZoomedPreviewImage
 <li>Updated decoding of Olympus AFPoint for recent E-models
 <li>Avoid writing mandatory IPTC tags unless another IPTC tag actually changes
-    (ie. trying to delete a non-existent IPTC tag will no longer have the side
+    (eg. trying to delete a non-existent IPTC tag will no longer have the side
     effect of generating mandatory IPTC tags)
 <li>Improved language translations
 <li>Improved error message when trying to write a file with the wrong extension
@@ -2462,7 +2462,7 @@
 <li>Added a few new Pentax LensType's
 <li>Decode a number of new tags for the Canon EOS 7D
 <li>Calculate Duration for WAV audio files
-<li>Allow exponents when writing GPS coordinates (ie. "-gpslatitude=7.657e+01")
+<li>Allow exponents when writing GPS coordinates (eg. "-gpslatitude=7.657e+01")
 <li>Print available character sets if no CHARSET is given for -charset option
 <li>Improved -v3 and -htmldump output to show MPF image data
 <li>Fixed -E option to work with tag descriptions when -lang option used
@@ -2786,7 +2786,7 @@
 <li>Changed Composite:LensID to also return a value for Olympus lenses
 <li>Changed copying behaviour to preserve the specific location (family 1 group)
     when source group is specified and destination group is "all" or "*"
-    (ie. "-exif:all>all:all" now preserves the IFD of each tag)
+    (eg. "-exif:all>all:all" now preserves the IFD of each tag)
 <li>Fixed a number of incorrect Minolta/Sony lens names (thanks Olaf Ulrich)
 <li>Fixed bug rewriting MIE trailers on TIFF images
 </ul>
@@ -3161,7 +3161,7 @@
 <li>Implemented character set translation for MIE information (-L option)
 <li>Improved speed when scanning unknown file to determine FileType
 <li>Fixed bug where some writable EXIF tags gave a "not writable" message when
-    reading tag value from a dynamic file (ie. "-TAG&lt;=%f.txt")
+    reading tag value from a dynamic file (eg. "-TAG&lt;=%f.txt")
 <li>Fixed problem double-escaping characters when -h and -S were used together
 <li>Fixed decoding of Nikon FlashModel for SU-800 Remote Commander
 <li>Fixed swapped Nikon FlashGroupBControlMode/FlashGroupCControlMode tags
@@ -3196,7 +3196,7 @@
 <li>Updated iptc2xmp.args and xmp2iptc.args to write IPTCDigest as per MWG
     recommendation
 <li>Allow zone-less date/time values in XMP (as per MWG and upcoming XMP spec)
-<li>Allow brackets in $$ and $/ expressions (ie. ${$} and ${/} now work)
+<li>Allow brackets in $$ and $/ expressions (eg. ${$} and ${/} now work)
 <li>Changed decoding of EXIF:Copyright to allow two separate strings as per spec
 <li>Changed a number of XMP Iptc4xmpCore tag names and added a corresponding set
     of aliases (shortcuts) for backward compatibility
@@ -3461,7 +3461,7 @@
 <li>Decode Panasonic Title tag (thanks Jens Duttke)
 <li>Recognize a few more uncommon top-level QuickTime atoms
 <li>Changed decoding of some Olympus tags for new E-520
-<li>Changed warning when empty PrintIM data is encountered (ie. as written in
+<li>Changed warning when empty PrintIM data is encountered (eg. as written in
     Sony A700 ARW files when Adobe RGB color mode is used)
 <li>Dropped Canon PreviewFocalPlaneX/YResolution tags since they never really
     existed (thanks Ger Vermeulen for pointing out the Canon bug which lead to
@@ -3611,7 +3611,7 @@
 <ul>
 <li>Extract duplicate tags when -p option is used
 <li>Fixed bug introduced in 7.00 which broke the use of group family numbers and
-    groups ending with a digit in tag format strings (ie. "$IFD0:Model")
+    groups ending with a digit in tag format strings (eg. "$IFD0:Model")
 </ul>
 
 <a name='v7.16'><b>Feb. 14, 2008 - Version 7.16</b></a>
@@ -3758,7 +3758,7 @@
     LightSource, MeteringMode and SubjectDistanceRange) instead of handling as a
     truly unknown value (if this makes sense)
 <li>Extract PreviewImage from newer Panasonic RAW images (thanks Jens Duttke)
-<li>Recognize Pentax-type Kodak maker notes (ie. Easyshare 883)
+<li>Recognize Pentax-type Kodak maker notes (eg. Easyshare 883)
 <li>Made "Entries out of sequence" a minor warning since this problem is fixed
 <li>Allow decimal seconds to be written in time values without needing to use -n
 <li>Improved parsing of PDF files
@@ -3815,7 +3815,7 @@
 
 <a name='v7.02'><b>Nov. 16, 2007 - Version 7.02</b></a>
 <ul>
-<li>Added ability to delete XMP family 1 groups (ie. "-XMP-crss:all=")
+<li>Added ability to delete XMP family 1 groups (eg. "-XMP-crss:all=")
 <li>Fixed problem writing XMP as a block to XMP file
 </ul>
 
@@ -3886,7 +3886,7 @@
 <li>Increased precision of 64-bit rational conversion from 7 to 10 digits
 <li>Fixed problem which caused failed tests with Perl 5.005_05
 <li>Fixed problem where some groups could not easily be excluded when deleting
-    all other information (ie. "-all= --exif:all" now behaves as expected)
+    all other information (eg. "-all= --exif:all" now behaves as expected)
 <li>Fixed problem decoding ICC Profile "dtim" format values
 <li>Fixed typo in a Minolta FlashMetering value (thanks Jens Duttke)
 <li>Fixed problem in API which could result in a UTF-8 encoded file not being
@@ -4164,7 +4164,7 @@
 
 <a name='v6.81'><b>Mar. 17, 2007 - Version 6.81</b></a>
 <ul>
-<li>Added l/u modifiers for lower/uppercase in filename format codes (ie. "%le")
+<li>Added l/u modifiers for lower/uppercase in filename format codes (eg. "%le")
 <li>Added equivalent IXY names to CanonModelID for PowerShot SD750 and SD1000
 <li>Added a few new Pentax ModelID's (Optio E30, T30, W30, A30)
 <li>Allow non-encrypted Nikon ColorBalance values to be written
@@ -4189,7 +4189,7 @@
 <ul>
 <li>Translate special characters in ID3 information when reading
 <li>Improved conversions for GPSTimeStamp and GPSDateStamp when writing so they
-    can be set from a normal date/time tag (ie. "-gpstimestamp&lt;createdate")
+    can be set from a normal date/time tag (eg. "-gpstimestamp&lt;createdate")
 <li>Added support for Nikon D40X plus a new LensID (thanks Robert Rottmerhusen)
 <li>Added a new Canon LensType (thanks Warren Stockton)
 <li>Removed D70Boring shortcut tag
@@ -4252,7 +4252,7 @@
 <a name='v6.73'><b>Jan. 31, 2007 - Version 6.73</b></a>
 <ul>
 <li>Added read support for meta information in HTML and XHTML documents
-<li>Added ability to write certain EXIF tags (ie. UserComment) as Unicode
+<li>Added ability to write certain EXIF tags (eg. UserComment) as Unicode
 <li>Added character set translation for XMP information; the -L option now works
     for all common meta information formats! (see updated <a href="faq.html#Q10">FAQ #10</a> for details)
 <li>Added a few more XMP-microsoft tags (thanks Kees Moerman)
@@ -4276,7 +4276,7 @@
 <li>Patched Microsoft Photo bug in EXIF Unicode text byte ordering
 <li>Added support for XMP-microsoft tags and 2 new Microsoft EXIF tags
 <li>Added a few new XMP tags (NativeDigest, ColorMode and ICCProfileName)
-<li>Added ability to add or delete copied tags from list (ie. "-SRCTAG+&gt;DSTTAG")
+<li>Added ability to add or delete copied tags from list (eg. "-SRCTAG+&gt;DSTTAG")
 <li>Added a few more Canon EasyMode values (thanks Samson Tai)
 <li>Added CanonModelID values for new A450, A460 and A550
 <li>Changed the -if option so the condition automatically fails if the
@@ -5045,7 +5045,7 @@
 <a name='v6.02'><b>Feb. 26, 2006 - Version 6.02</b></a>
 <ul>
 <li>Fixed problem rewriting Photoshop IRB resources as written by some
-    applications (ie. PixVue)
+    applications (eg. PixVue)
 <li>Improved decoding of AVI files to increase speed and extract more tags
 <li>Added -overwrite_original_in_place option
 <li>Added a number of new XMP tags and bring XMP support up to new
@@ -5521,7 +5521,7 @@
 
 <a name='v5.51'><b>July 27, 2005 - Version 5.51</b></a>
 <ul>
-<li>Assume '-TagsFromFile @' for any redirected tags (ie. '-SRCTAG&gt;DSTTAG' or
+<li>Assume '-TagsFromFile @' for any redirected tags (eg. '-SRCTAG&gt;DSTTAG' or
     '-DSTTAG&lt;SRCTAG') which are specified without a prior '-TagsFromFile'
 </ul>
 
@@ -5809,7 +5809,7 @@
 <a name='v5.17'><b>May 14, 2005 - Version 5.17</b></a>
 <ul>
 <li>Allow 'All' to be used as a group name with '-TagsFromFile' option to
-    preserve original tag groups (ie. '-all:all')
+    preserve original tag groups (eg. '-all:all')
 <li>PrintIM information is now copied with -TagsFromFile
 <li>Decode EXIF:Gamma tag
 <li>Decode Canon 350D FileNumber
@@ -5968,7 +5968,7 @@
 <li>Added 'Directory' tag
 <li>Decode a few more Pentax tags (thanks to John Francis)
 <li>Allow newlines in tag values on command line when writing
-<li>Fixed problem rewriting makernotes with sub directories (ie. Olympus)
+<li>Fixed problem rewriting makernotes with sub directories (eg. Olympus)
 </ul>
 
 <a name='v4.91'><b>Mar. 28, 2005 - Version 4.91</b></a>
@@ -6028,7 +6028,7 @@
 <li>Fixed problem which caused an error when adding XMP information to a TIFF
     file which didn't previously contain XMP
 <li>Made '=' optional with -AllTagsFromFile option
-<li>Fixed problem with verbose dump of zero-length directory (ie. Sony F717
+<li>Fixed problem with verbose dump of zero-length directory (eg. Sony F717
     maker notes)
 </ul>
 
@@ -6193,7 +6193,7 @@
 <a name='v4.50'><b>Feb. 2, 2005 - Version 4.50</b></a>
 <ul>
 <li>Allow writing to specific IFD
-<li>Allow permanent tags (ie. MakerNotes tags) 'deleted' by setting them to an
+<li>Allow permanent tags (eg. MakerNotes tags) 'deleted' by setting them to an
     empty string if '' is a valid value for the tag
 <li>Added test for rewriting Nikon D70 information
 <li>Added missing inverse conversion routines for GPS tags (now they are all
@@ -6465,7 +6465,7 @@
 <a name='v4.03'><b>Dec. 6, 2004 - Version 4.03</b></a>
 <ul>
 <li>Major overhaul of verbose message output
-<li>Change -v option to allow verbose level to be specified (ie. -v3 = very very
+<li>Change -v option to allow verbose level to be specified (eg. -v3 = very very
     verbose)
 <li>Added a new Nikon tag (SceneMode)
 <li>Count images which were unchanged when writing tags
@@ -110,7 +110,7 @@ contain sub-subdirectories...).  For these subdirectories, <b>BlockSize</b> is
 given by the <b>Size</b> specified in the corresponding directory entry.  For
 the root directory, <b>BlockSize</b> is the length of the file.</p>
 
-<p>The <b>OtherData</b> normally does not exist (ie. the <b>DirEntries</b>
+<p>The <b>OtherData</b> normally does not exist (eg. the <b>DirEntries</b>
 usually end at the <b>DirStart</b> pointer), but this is not always the case:
 Canon Digital Photo Professional uses this area in the root directory block to
 store VRD data in edited CRW images.  (Note that VRD supports embedded XMP,
@@ -213,25 +213,25 @@ remain constant for all camera models.</p>
 <tr><th class='lt' colspan=6>ASCII Strings</th></tr>
 <tr align='center'><td>0x0805</td><td>-</td><td>0x2804</td><td>CanonFileDescription</td><td>32</td>
     <td align='left'>Description of the file format.
-    ie) "EOS DIGITAL REBEL CMOS RAW"</td></tr>
+    eg) "EOS DIGITAL REBEL CMOS RAW"</td></tr>
 <tr align='center'><td>0x0805</td><td>-</td><td>0x300a</td><td>UserComment</td><td>256</td>
     <td align='left'>User comment (usually blank)</td></tr>
 <tr align='center'><td>0x080a</td><td>-</td><td>0x2807</td><td>CanonRawMakeModel</td><td>32</td>
     <td align='left'>Two end-to-end null-terminated ASCII strings giving the camera make and model.
-    ie) "Canon","Canon EOS DIGITAL REBEL"</td></tr>
+    eg) "Canon","Canon EOS DIGITAL REBEL"</td></tr>
 <tr align='center'><td>0x080b</td><td>0x07</td><td>0x3004</td><td>CanonFirmwareVersion</td><td>32</td>
-    <td align='left'>Firmware version. ie) "Firmware Version 1.1.1"</td></tr>
+    <td align='left'>Firmware version. eg) "Firmware Version 1.1.1"</td></tr>
 <tr align='center'><td>0x080c</td><td>-</td><td>?</td><td>ComponentVersion</td><td>?</td><td align='left'>-</td></tr>
 <tr align='center'><td>0x080d</td><td>-</td><td>0x3004</td><td>ROMOperationMode</td><td>4</td>
-    <td align='left'>ie) The string "USA" for 300D's sold in North America</td></tr>
+    <td align='left'>eg) The string "USA" for 300D's sold in North America</td></tr>
 <tr align='center'><td>0x0810</td><td>0x09</td><td>0x2807</td><td>OwnerName</td><td>32</td>
-    <td align='left'>Owner's name. ie) "Phil Harvey"</td></tr>
+    <td align='left'>Owner's name. eg) "Phil Harvey"</td></tr>
 <tr align='center'><td>0x0815</td><td>0x06</td><td>0x2804</td><td>CanonImageType</td><td>32</td>
-    <td align='left'>Type of file. ie) "CRW:EOS DIGITAL REBEL CMOS RAW"</td></tr>
+    <td align='left'>Type of file. eg) "CRW:EOS DIGITAL REBEL CMOS RAW"</td></tr>
 <tr align='center'><td>0x0816</td><td>-</td><td>0x300a</td><td>OriginalFileName</td><td>32</td>
-    <td align='left'>Original file name. ie) "CRW_1834.CRW"</td></tr>
+    <td align='left'>Original file name. eg) "CRW_1834.CRW"</td></tr>
 <tr align='center'><td>0x0817</td><td>-</td><td>0x300a</td><td>ThumbnailFileName</td><td>32</td>
-    <td align='left'>Thumbnail file name. ie) "CRW_1834.THM"</td></tr>
+    <td align='left'>Thumbnail file name. eg) "CRW_1834.THM"</td></tr>
 <tr><th class='lt' colspan=6>2-Byte Alignment</th></tr>
 <tr align='center'><td>0x100a</td><td>-</td><td>0x300a</td><td>TargetImageType</td><td>2</td>
     <td align='left'>0=real-world subject, 1=written document</td></tr>
@@ -299,7 +299,7 @@ remain constant for all camera models.</p>
 <tr align='center'><td>0x1807</td><td>-</td><td>0x3002</td><td>TargetDistanceSetting</td><td>4</td>
     <td align='left'>32-bit float giving target distance in mm</td></tr>
 <tr align='center'><td>0x180b</td><td>0x0c</td><td>0x3004</td><td>SerialNumber</td><td>4</td>
-    <td align='left'>The camera body number for EOS models. ie) 00560012345</td></tr>
+    <td align='left'>The camera body number for EOS models. eg) 00560012345</td></tr>
 <tr align='center'><td>0x180e</td><td>-</td><td>0x300a</td><td>TimeStamp</td><td>12</td>
     <td align='left'>32-bit integer giving the time in seconds when the picture was taken,
     followed by a 32-bit timezone in seconds</td></tr>
@@ -311,7 +311,7 @@ remain constant for all camera models.</p>
 <tr align='center'><td>0x1814</td><td>-</td><td>0x3003</td><td>MeasuredEV</td><td>4</td>
     <td align='left'>32-bit float giving the measured EV</td></tr>
 <tr align='center'><td>0x1817</td><td>0x08</td><td>0x300a</td><td>FileNumber</td><td>4</td>
-    <td align='left'>32-bit integer giving the number of this file. ie) 1181834</td></tr>
+    <td align='left'>32-bit integer giving the number of this file. eg) 1181834</td></tr>
 <tr align='center'><td>0x1818</td><td>-</td><td>0x3002</td><td>ExposureInfo</td><td>12</td>
     <td align='left'>Three 32-bit floats: Exposure compensation, Tv, Av</td></tr>
 <tr align='center'><td>0x1819</td><td>-</td><td>0x300b</td><td>-</td><td>64</td><td align='left'>-</td></tr>
@@ -163,7 +163,7 @@ and security issues with leaving old metadata in the file.]</i></p>
 <a name='PNG'></a>
 <h3>PNG</h3>
 <p>PNG sucks because meta information can be stored only in text format.
-This was a huge mistake, and as a work-around software (ie. ImageMagick)
+This was a huge mistake, and as a work-around software (eg. ImageMagick)
 must encode binary information in ASCII-hex, then compress it to offset the
 increase in size, and store it as a compressed text block.  This adds
 unnecessary complexity, greatly slows down processing, and makes it much
@@ -262,7 +262,7 @@ information added by 3rd parties to be useful.</p>
 <p>I only have 2 problems with the QuickTime specification:</p>
 
 <p>1) The metadata organization is a mess because tags may be stored in more
-than one location (ie. UserData vs. InfoList), and conflicting metadata
+than one location (eg. UserData vs. InfoList), and conflicting metadata
 directories may exist, even in the same location (as written by iTunes).</p>
 
 <p>2) The length of 'udta' text strings with language codes is written
@@ -102,7 +102,7 @@
             Writable =&gt; 'rational64s',
         },
     },
-    <span class=com># IPTC tags are added to a specific record type (ie. application record):
+    <span class=com># IPTC tags are added to a specific record type (eg. application record):
     # (Note: IPTC tag ID's are limited to the range 0-255)</span>
     'Image::ExifTool::IPTC::ApplicationRecord' =&gt; {
         <span class=com># Example 4.  IPTC:NewIPTCTag</span>
@@ -125,7 +125,7 @@
         <span class=com># Example 7.  XMP-exif:GPSRoll</span>
         GPSRoll  =&gt; { Writable =&gt; 'rational', Groups =&gt; { 2 =&gt; 'Location' } },
     },
-    <span class=com># new XMP namespaces (ie. xxx) must be added to the Main XMP table:</span>
+    <span class=com># new XMP namespaces (eg. xxx) must be added to the Main XMP table:</span>
     'Image::ExifTool::XMP::Main' =&gt; {
         <span class=com># namespace definition for examples 8 to 11</span>
         xxx =&gt; { <span class=com># &lt;-- must be the same as the NAMESPACE prefix</span>
@@ -252,7 +252,7 @@
     GROUPS =&gt; { 0 =&gt; 'XMP', 1 =&gt; 'XMP-xxx', 2 =&gt; 'Image' },
     NAMESPACE =&gt; { 'xxx' =&gt; 'http://ns.myname.com/xxx/1.0/' },
     WRITABLE =&gt; 'string',
-    <span class=com># replace "NewXMPxxxTag1" with your own tag name (ie. "MyTag")</span>
+    <span class=com># replace "NewXMPxxxTag1" with your own tag name (eg. "MyTag")</span>
     <span class=com># Example 8.  XMP-xxx:NewXMPxxxTag1</span>
     NewXMPxxxTag1 =&gt; { Writable => 'lang-alt' },
     <span class=com># Example 9.  XMP-xxx:NewXMPxxxTag2</span>
@@ -118,7 +118,7 @@ value.</p>
     Not used during when writing.</td></tr>
 
 <tr><td>LOW_PRIORITY_DIR</td><td>Lookup based on directory name for directories where
-    undefined Priority tags get set to Priority 0 (ie. PreviewIFD in all images,
+    undefined Priority tags get set to Priority 0 (eg. PreviewIFD in all images,
     and IFD1 in JPEG images).  This is equivalent to setting PRIORITY to 0 for
     the tag table only for a specific directory name.</td></tr>
 
@@ -164,7 +164,7 @@ value.</p>
     set a TAG_EXTRA "NoListDel" flag for tags that wouldn't have been created).</td></tr>
 
 <tr><td>NO_STRUCT</td><td>Set if structures shouldn't be restored for this metadata.  Used
-    to avoid restoring structures for non-XMP (ie. XML) information.</td></tr>
+    to avoid restoring structures for non-XMP (eg. XML) information.</td></tr>
 
 <tr><td>NO_UNKNOWN</td><td>Don't generate unknown tags automatically even if Unknown option is set</td></tr>
 
@@ -176,7 +176,7 @@ value.</p>
 
 <tr><td>OPTIONS</td><td>ExifTool options</td></tr>
 
-<tr><td>PATH</td><td>List reference to SubDirectory path.  ie)
+<tr><td>PATH</td><td>List reference to SubDirectory path.  eg)
     [qw(JPEG APP13 Photoshop IPTC)]</td></tr>
 
 <tr><td>PDF_CAPTURE</td><td>Used by PDF module to store information when writing</td></tr>
@@ -236,9 +236,9 @@ value.</p>
 information may include:
     <table class='clear'>
     <tr valign='top'><td>G0</td><td>-</td><td>override for family 0 group name</td></tr>
-    <tr valign='top'><td>G1</td><td>-</td><td>dynamic family 1 group name (ie. IFD name or XMP
+    <tr valign='top'><td>G1</td><td>-</td><td>dynamic family 1 group name (eg. IFD name or XMP
         namespace), with a leading '+' to add value to the existing group 1 name</td></tr>
-    <tr valign='top'><td>G3</td><td>-</td><td>number for embedded documents (ie. 1, 2, etc)</td></tr>
+    <tr valign='top'><td>G3</td><td>-</td><td>number for embedded documents (eg. 1, 2, etc)</td></tr>
     </table></td></tr>
 
 <tr><td>TAG_INFO</td><td>Hash of tagInfo hash references, keyed by tag key</td></tr>
@@ -104,38 +104,39 @@ supported by ExifTool (r = read, w = write, c = create):</p>
 <pre>
   File Types
   ------------+-------------+-------------+-------------+------------
-  3FR   r     | EIP   r     | LA    r     | OTF   r     | RW2   r/w
-  3G2   r/w   | EPS   r/w   | LNK   r     | PAC   r     | RWL   r/w
-  3GP   r/w   | ERF   r/w   | M2TS  r     | PAGES r     | RWZ   r
-  ACR   r     | EXE   r     | M4A/V r/w   | PBM   r/w   | RM    r
-  AFM   r     | EXIF  r/w/c | MEF   r/w   | PCD   r     | SEQ   r
-  AI    r/w   | EXR   r     | MIE   r/w/c | PDF   r/w   | SO    r
-  AIFF  r     | EXV   r/w/c | MIFF  r     | PEF   r/w   | SR2   r/w
-  APE   r     | F4A/V r/w   | MKA   r     | PFA   r     | SRF   r
-  ARW   r/w   | FFF   r/w   | MKS   r     | PFB   r     | SRW   r/w
-  ASF   r     | FLA   r     | MKV   r     | PFM   r     | SVG   r
-  AVI   r     | FLAC  r     | MNG   r/w   | PGF   r     | SWF   r
-  BMP   r     | FLV   r     | MODD  r     | PGM   r/w   | THM   r/w
-  BTF   r     | FPF   r     | MOS   r/w   | PLIST r     | TIFF  r/w
-  CHM   r     | FPX   r     | MOV   r/w   | PICT  r     | TORRENT r
-  COS   r     | GIF   r/w   | MP3   r     | PMP   r     | TTC   r
-  CR2   r/w   | GZ    r     | MP4   r/w   | PNG   r/w   | TTF   r
-  CRW   r/w   | HDP   r/w   | MPC   r     | PPM   r/w   | VRD   r/w/c
-  CS1   r/w   | HDR   r     | MPG   r     | PPT   r     | VSD   r
-  DCM   r     | HTML  r     | MPO   r/w   | PPTX  r     | WAV   r
-  DCP   r/w   | ICC   r/w/c | MQV   r/w   | PS    r/w   | WDP   r/w
-  DCR   r     | IDML  r     | MRW   r/w   | PSB   r/w   | WEBP  r
-  DFONT r     | IIQ   r/w   | MXF   r     | PSD   r/w   | WEBM  r
-  DIVX  r     | IND   r/w   | NEF   r/w   | PSP   r     | WMA   r
-  DJVU  r     | INX   r     | NRW   r/w   | QTIF  r/w   | WMV   r
-  DLL   r     | ITC   r     | NUMBERS r   | RA    r     | WV    r
-  DNG   r/w   | J2C   r     | ODP   r     | RAF   r/w   | X3F   r/w
-  DOC   r     | JNG   r/w   | ODS   r     | RAM   r     | XCF   r
-  DOCX  r     | JP2   r/w   | ODT   r     | RAR   r     | XLS   r
-  DPX   r     | JPEG  r/w   | OFR   r     | RAW   r/w   | XLSX  r
-  DV    r     | K25   r     | OGG   r     | RIFF  r     | XMP   r/w/c
-  DVB   r/w   | KDC   r     | OGV   r     | RSRC  r     | ZIP   r
-  DYLIB r     | KEY   r     | ORF   r/w   | RTF   r     |</pre>
+  3FR   r     | EIP   r     | LA    r     | ORF   r/w   | RTF   r
+  3G2   r/w   | EPS   r/w   | LFP   r     | OTF   r     | RW2   r/w
+  3GP   r/w   | EPUB  r     | LNK   r     | PAC   r     | RWL   r/w
+  ACR   r     | ERF   r/w   | M2TS  r     | PAGES r     | RWZ   r
+  AFM   r     | EXE   r     | M4A/V r/w   | PBM   r/w   | RM    r
+  AI    r/w   | EXIF  r/w/c | MEF   r/w   | PCD   r     | SEQ   r
+  AIFF  r     | EXR   r     | MIE   r/w/c | PDB   r     | SO    r
+  APE   r     | EXV   r/w/c | MIFF  r     | PDF   r/w   | SR2   r/w
+  ARW   r/w   | F4A/V r/w   | MKA   r     | PEF   r/w   | SRF   r
+  ASF   r     | FFF   r/w   | MKS   r     | PFA   r     | SRW   r/w
+  AVI   r     | FLA   r     | MKV   r     | PFB   r     | SVG   r
+  AZW   r     | FLAC  r     | MNG   r/w   | PFM   r     | SWF   r
+  BMP   r     | FLV   r     | MOBI  r     | PGF   r     | THM   r/w
+  BTF   r     | FPF   r     | MODD  r     | PGM   r/w   | TIFF  r/w
+  CHM   r     | FPX   r     | MOS   r/w   | PLIST r     | TORRENT r
+  COS   r     | GIF   r/w   | MOV   r/w   | PICT  r     | TTC   r
+  CR2   r/w   | GZ    r     | MP3   r     | PMP   r     | TTF   r
+  CRW   r/w   | HDP   r/w   | MP4   r/w   | PNG   r/w   | VRD   r/w/c
+  CS1   r/w   | HDR   r     | MPC   r     | PPM   r/w   | VSD   r
+  DCM   r     | HTML  r     | MPG   r     | PPT   r     | WAV   r
+  DCP   r/w   | ICC   r/w/c | MPO   r/w   | PPTX  r     | WDP   r/w
+  DCR   r     | IDML  r     | MQV   r/w   | PS    r/w   | WEBP  r
+  DFONT r     | IIQ   r/w   | MRW   r/w   | PSB   r/w   | WEBM  r
+  DIVX  r     | IND   r/w   | MXF   r     | PSD   r/w   | WMA   r
+  DJVU  r     | INX   r     | NEF   r/w   | PSP   r     | WMV   r
+  DLL   r     | ITC   r     | NRW   r/w   | QTIF  r/w   | WV    r
+  DNG   r/w   | J2C   r     | NUMBERS r   | RA    r     | X3F   r/w
+  DOC   r     | JNG   r/w   | ODP   r     | RAF   r/w   | XCF   r
+  DOCX  r     | JP2   r/w   | ODS   r     | RAM   r     | XLS   r
+  DPX   r     | JPEG  r/w   | ODT   r     | RAR   r     | XLSX  r
+  DV    r     | K25   r     | OFR   r     | RAW   r/w   | XMP   r/w/c
+  DVB   r/w   | KDC   r     | OGG   r     | RIFF  r     | ZIP   r
+  DYLIB r     | KEY   r     | OGV   r     | RSRC  r     |</pre>
 <pre>
   Meta Information
   ----------------------+----------------------+---------------------
@@ -273,13 +274,13 @@ options may appear after source file names on the exiftool command line.</p>
 <dt><strong><a name="tag" class="item"><strong>-</strong><em>TAG</em></a></strong></dt>
 
 <dd>
-<p>Extract information for the specified tag (ie. <code>-CreateDate</code>).  Multiple
+<p>Extract information for the specified tag (eg. <code>-CreateDate</code>).  Multiple
 tags may be specified in a single command.  A tag name is the handle by
 which a piece of information is referenced.  See
 <a href="TagNames/index.html">Image::ExifTool::TagNames</a> for documentation on
 available tag names.  A tag name may include leading group names separated
-by colons (ie. <code>-EXIF:CreateDate</code>, or <code>-Doc1:XMP:Creator</code>), and each group
-name may be prefixed by a digit to specify family number (ie.
+by colons (eg. <code>-EXIF:CreateDate</code>, or <code>-Doc1:XMP:Creator</code>), and each group
+name may be prefixed by a digit to specify family number (eg.
 <code>-1IPTC:City</code>).  Use the <strong>-listg</strong> option to list available group names by
 family.</p>
 <p>A special tag name of <code>All</code> may be used to indicate all meta information.
@@ -304,22 +305,22 @@ information.  Use the <strong>-s</strong> option to see the tag names instead.</
 
 <dd>
 <p>Exclude specified tag from extracted information.  Same as the <strong>-x</strong> option.
+Group names and wildcards are permitted as described above for <strong>-TAG</strong>. 
 Once excluded from the output, a tag may not be re-included by a subsequent
 option.  May also be used following a <strong>-tagsFromFile</strong> option to exclude
 tags from being copied (when redirecting to another tag, it is the source
 tag that should be excluded), or to exclude groups from being deleted when
-deleting all information (ie. <code>-all= --exif:all</code> deletes all but EXIF
+deleting all information (eg. <code>-all= --exif:all</code> deletes all but EXIF
 information).  But note that this will not exclude individual tags from a
-group delete (unless a family 2 group is specified, see note 4 below). 
+group delete (unless a family 2 group is specified, see note 4 below).
 Instead, individual tags may be recovered using the <strong>-tagsFromFile</strong> option
-(ie. <code>-all= -tagsfromfile @ -artist</code>). Wildcards are permitted as described
-above for <strong>-TAG</strong>.</p>
+(eg. <code>-all= -tagsfromfile @ -artist</code>).</p>
 </dd>
 <dt><strong><a name="tag_value" class="item"><strong>-</strong><em>TAG</em>[+-]<strong>=</strong>[<em>VALUE</em>]</a></strong></dt>
 
 <dd>
-<p>Write a new value for the specified tag (ie. <code>-comment=wow</code>), or delete the
-tag if no <em>VALUE</em> is given (ie. <code>-comment=</code>).  <code>+=</code> and <code>-=</code> are used to
+<p>Write a new value for the specified tag (eg. <code>-comment=wow</code>), or delete the
+tag if no <em>VALUE</em> is given (eg. <code>-comment=</code>).  <code>+=</code> and <code>-=</code> are used to
 add or remove existing entries from a list, or to shift date/time values
 (see <a href="Shift.html">Image::ExifTool::Shift.pl</a> for details).
 <code>+=</code> may also be used to increment numerical values, and <code>-=</code> may be used
@@ -336,7 +337,7 @@ value to multiple tags.  When specified with wildcards, &quot;unsafe&quot; tags
 not written.  A tag name of <code>All</code> is eqivalent to <code>*</code> (except that it
 doesn't require quoting, while arguments with wildcards do on systems with
 shell globbing), and is often used when deleting all metadata (ie. <code>-All=</code>)
-or an entire group (ie. <code>-GROUP:All=</code>, see note 4 below).  Note that not
+or an entire group (eg. <code>-GROUP:All=</code>, see note 4 below).  Note that not
 all groups are deletable, and that the JPEG APP14 &quot;Adobe&quot; group is not
 removed by default with <code>-All=</code> because it may affect the appearance of the
 image.  However, this will remove color space information, so the colors may
@@ -390,8 +391,9 @@ may also be given by a <em>FMT</em> string where %d, %f and %e represent the
 directory, file name and extension of the original <em>FILE</em> (see the <strong>-w</strong>
 option for more details).  Note that quotes are required around this
 argument to prevent shell redirection since it contains a <code>&lt;</code> symbol.
-<code>+&lt;=</code> or <code>-&lt;=</code> may also be used to add or delete specific list
-entries, or to shift date/time values.</p>
+If <em>DATFILE</em>/<em>FMT</em> is not provided, the effect is the same as <a href="#tag"><code>-TAG=</code></a>,
+and the tag is simply deleted.  <code>+&lt;=</code> or <code>-&lt;=</code> may also be used to
+add or delete specific list entries, or to shift date/time values.</p>
 </dd>
 <dt><strong><a name="tagsfromfile_srcfile_or_fmt" class="item"><strong>-tagsFromFile</strong> <em>SRCFILE</em> or <em>FMT</em></a></strong></dt>
 
@@ -412,7 +414,7 @@ to this group (unless redirected to another group, see below).  If <code>All</co
 used as a group name, then each tag is written to the same family 1 group it
 had in the source file (ie. the same specific location in the metadata), but
 a different family may be specified by adding a leading family number to the
-group name (ie. <code>-0All:all</code>).</p>
+group name (eg. <code>-0All:all</code>).</p>
 <p><em>SRCFILE</em> may be the same as <em>FILE</em> to move information around within a
 single file.  In this case, <code>@</code> may be used to represent the source file
 (ie. <code>-tagsFromFile @</code>), permitting this feature to be used for batch
@@ -448,7 +450,8 @@ this syntax.  Strings starting with a <code>=</code> sign must insert a single s
 after the <code>&lt;</code> to avoid confusion with the <code>&lt;=</code> operator which sets
 the tag value from the contents of a file.  A single space at the start of
 the string is removed if it exists, but all other whitespace in the string
-is preserved.</p>
+is preserved.  See note 8 below about using shortcuts or wildcards with the
+redirection feature.</p>
 <p>See <a href="#copying_examples">COPYING EXAMPLES</a> for examples using <strong>-tagsFromFile</strong>.</p>
 <p>Notes:</p>
 <p>1) Some tags (generally tags which may affect the appearance of the image)
@@ -479,7 +482,7 @@ any previous operations on the list.  While this avoids duplicate list items
 when copying groups of tags from a file containing redundant information, it
 also prevents values of different tags from being copied into the same list
 when this is the intent.  So a <strong>-addTagsFromFile</strong> option is provided which
-allows copying of multiple tags into the same list.  ie)</p>
+allows copying of multiple tags into the same list.  eg)</p>
 <pre>
     exiftool -addtagsfromfile @ '-subject&lt;make' '-subject&lt;model' ...</pre>
 <p>Other than this difference, the <strong>-tagsFromFile</strong> and <strong>-addTagsFromFile</strong>
@@ -488,13 +491,21 @@ options are equivalent.</p>
 tags from <em>SRCFILE</em>.</p>
 <p>7) Structured tags are copied by default when copying tags.  See the
 <strong>-struct</strong> option for details.</p>
+<p>8) With the redirection feature, copying a tag directly (ie.
+&quot;'-<em>DSTTAG</em>&lt;<em>SRCTAG</em>'&quot;) is not the same as interpolating
+its value inside a string (ie. &quot;'-<em>DSTTAG</em>&lt;$<em>SRCTAG</em>'&quot;)
+for <a href="http://search.cpan.org/dist/Image-ExifTool/lib/Image/ExifTool/Shortcuts.pm">shortcut tags</a> or tag names containing
+wildcards.  When copying directly, the values of each matching source tag
+are copied individually to the destination tag (as if multiple redirection
+arguments were used).  However, when interpolated inside a string, the
+values of shortcut tags are concatenated, and wildcards are not allowed.</p>
 </dd>
 <dt><strong><strong>-x</strong> <em>TAG</em> (<strong>-exclude</strong>)</strong></dt>
 
 <dd>
 <p>Exclude the specified tag.  There may be multiple <strong>-x</strong> options.  This has
-the same effect as --<em>TAG</em> on the command line.  May also be used following
-a <strong>-tagsFromFile</strong> option to exclude tags from being copied.</p>
+the same effect as --<em>TAG</em> on the command line.  See the --<em>TAG</em>
+documentation above for a complete description.</p>
 </dd>
 </dl>
 <p>
@@ -551,7 +562,7 @@ various formats:</p>
 when copying tags using the <strong>-tagsFromFile</strong> option.</p>
 <p>2) If the hemisphere is known, a reference direction (N, S, E or W) is
 appended to each printed coordinate, but adding a <code>+</code> to the format
-specifier (ie. <code>%+.6f</code>) prints a signed coordinate instead.</p>
+specifier (eg. <code>%+.6f</code>) prints a signed coordinate instead.</p>
 <p>3) This print formatting may be disabled with the <strong>-n</strong> option to extract
 coordinates as signed decimal degrees.</p>
 </dd>
@@ -688,7 +699,7 @@ may be 0 (general location), 1 (specific location), 2 (category), 3
 specified by separating them with colons.  By default the resulting group
 name is simplified by removing any leading <code>Main:</code> and collapsing adjacent
 identical group names, but this can be avoided by placing a colon before the
-first family number (ie. <strong>-g:3:1</strong>).  If <em>NUM</em> is not specified, <strong>-g0</strong> is
+first family number (eg. <strong>-g:3:1</strong>).  If <em>NUM</em> is not specified, <strong>-g0</strong> is
 assumed.  Use the <strong>-listg</strong> option to list group names for a specified
 family.</p>
 </dd>
@@ -739,8 +750,9 @@ the <strong>-D</strong> or <strong>-H</strong> option changes tag values to JSON
 &quot;id&quot; fields, and adding <strong>-l</strong> adds a &quot;desc&quot; field, and a &quot;num&quot; field if the
 numerical value is different from the converted &quot;val&quot;.  The <strong>-b</strong> option may
 be added to output binary data, encoded in base64 if necessary (indicated by
-&quot;base64:&quot; as the first 7 bytes of the value).  The <strong>-L</strong> and <strong>-charset</strong>
-options have no effect on the JSON output.</p>
+&quot;base64:&quot; as the first 7 bytes of the value).  The JSON output is UTF-8
+regardless of any <strong>-L</strong> or <strong>-charset</strong> option setting, but the UTF-8
+validation is disabled if a character set other than UTF-8 is specified.</p>
 <p>If <em>JSONFILE</em> is specified, the file is imported and the tag definitions
 from the file are used to set tag values on a per-file basis.  The special
 &quot;SourceFile&quot; entry in each JSON object associates the information with a
@@ -755,7 +767,9 @@ may be suffixed with a <code>#</code> to disable print conversion.</p>
 <dd>
 <p>Use long 2-line Canon-style output format.  Adds a description and
 unconverted value (if it is different from the converted value) to the XML,
-JSON or PHP output when <strong>-X</strong>, <strong>-j</strong> or <strong>-php</strong> is used.</p>
+JSON or PHP output when <strong>-X</strong>, <strong>-j</strong> or <strong>-php</strong> is used.  May also be
+combined with <strong>-listf</strong>, <strong>-listr</strong> or <strong>-listwf</strong> to add descriptions of the
+file types.</p>
 </dd>
 <dt><strong><a name="l" class="item"><strong>-L</strong> (<strong>-latin</strong>)</a></strong></dt>
 
@@ -772,7 +786,8 @@ Latin1 instead of UTF-8.  Equivalent to <code>-charset latin</code>.</p>
 list of available languages.  The default language is <code>en</code> if <strong>-lang</strong> is
 not specified.  Note that tag/group names are always English, independent of
 the <strong>-lang</strong> setting, and translation of warning/error messages has not yet
-been implemented.</p>
+been implemented.  May also be combined with <strong>-listx</strong> to output
+descriptions in one language only.</p>
 <p>By default, ExifTool uses UTF-8 encoding for special characters, but the
 the <strong>-L</strong> or <strong>-charset</strong> option may be used to invoke other encodings.</p>
 <p>Currently, the language support is not complete, but users are welcome to
@@ -839,7 +854,7 @@ are ignored.  For example, this format file:</p>
     exiftool -p test.fmt a.jpg b.jpg</pre>
 <p>produces output like this:</p>
 <pre>
-    -- Generated by ExifTool 9.60 --
+    -- Generated by ExifTool 9.70 --
     File: a.jpg - 2003:10:31 15:44:19
     (f/5.6, 1/60s, ISO 100)
     File: b.jpg - 2006:05:23 11:57:38
@@ -858,9 +873,10 @@ semicolon following the tag name.  The expression has access to the value of
 this tag through the default input variable (<code>$_</code>), and the full API
 through the current ExifTool object (<code>$self</code>).  It may contain any valid
 Perl code, including translation (<code>tr///</code>) and substitution (<code>s///</code>)
-operations, but note that braces within the expression must be balanced. The
-example below prints the camera Make with spaces translated to underlines,
-and multiple consecutive underlines replaced by a single underline:</p>
+operations, but note that braces within the expression must be balanced. 
+The example below prints the camera Make with spaces translated to
+underlines, and multiple consecutive underlines replaced by a single
+underline:</p>
 <pre>
     exiftool -p '${make;tr/ /_/;s/__+/_/g}' image.jpg</pre>
 <p>A default expression of <code>tr(/\\?*:|&quot;&lt;&gt;\0)()d</code> is assumed if the
@@ -1073,7 +1089,7 @@ are as follows:</p>
 <p>2) <strong>-W</strong> supports three additional format codes:  %t, %g and %s represent
 the tag name, group name, and suggested extension for the output file (based
 on the format of the data).  The %g code may be followed by a single digit
-to specify the group family number (ie. %g1), otherwise family 0 is assumed.
+to specify the group family number (eg. %g1), otherwise family 0 is assumed.
 The substring width/position/case specifiers may be used with these format
 codes in exactly the same way as with %f and %e.</p>
 <p>3) The argument for <strong>-W</strong> is interpreted as a file name if it contains no
@@ -1149,7 +1165,7 @@ in JPEG and MPO files, streaming metadata in AVCHD videos, and the resource
 fork of Mac OS files.  Implies the <strong>-a</strong> option.  Use <strong>-g3</strong> or <strong>-G3</strong> to
 identify the originating document for extracted information. Embedded
 documents containing sub-documents are indicated with dashes in the family 3
-group name.  (ie. <code>Doc2-3</code> is the 3rd sub-document of the 2nd embedded
+group name.  (eg. <code>Doc2-3</code> is the 3rd sub-document of the 2nd embedded
 document.) Note that this option may increase processing time substantially,
 especially for PDF files with many embedded images.</p>
 </dd>
@@ -1182,8 +1198,8 @@ some maker note entries when reading the edited file.  This option allows an
 integer <em>OFFSET</em> to be specified for adjusting the maker notes base offset.
 If no <em>OFFSET</em> is given, ExifTool takes its best guess at the correct base.
 Note that exiftool will automatically fix the offsets for images which store
-original offset information (ie. newer Canon models).  Offsets are fixed
-permanently if <strong>-F</strong> is used when writing EXIF to an image. ie)</p>
+original offset information (eg. newer Canon models).  Offsets are fixed
+permanently if <strong>-F</strong> is used when writing EXIF to an image. eg)</p>
 <pre>
     exiftool -F -exif:resolutionunit=inches image.jpg</pre>
 </dd>
@@ -1209,10 +1225,11 @@ extracting any EXIF MakerNote information.</p>
 <p>Additional <strong>-fileOrder</strong> options may be added for secondary sort keys. 
 Floating point values are sorted numerically, and all other values are
 sorted alphabetically.  The sort order may be reversed by prefixing the tag
-name with a <code>-</code> (ie. <code>-fileOrder -createdate</code>).  A <code>#</code> may be appended to
-the tag name to disable print conversion for the sorted values.  Note that
-the <strong>-fileOrder</strong> option has a large performance impact since it involves an
-additional processing pass of each file.</p>
+name with a <code>-</code> (eg. <code>-fileOrder -createdate</code>).  Print conversion of the
+sorted values is disabled with the <strong>-n</strong> option, or a <code>#</code> appended to the
+tag name.  Other formatting options (eg. <strong>-d</strong>) have no effect on the sorted
+values.  Note that the <strong>-fileOrder</strong> option has a large performance impact
+since it involves an additional processing pass of each file.</p>
 </dd>
 <dt><strong><a name="dir" class="item"><strong>-i</strong> <em>DIR</em> (<strong>-ignore</strong>)</a></strong></dt>
 
@@ -1253,7 +1270,7 @@ conditions must be satisfied to process the file.  Returns an exit status of
 <p>2) Some binary data blocks are not extracted unless specified explicitly.
 These tags are not available for use in the <strong>-if</strong> condition unless they are
 also specified on the command line.  The alternative is to use the
-<code>$GROUP:all</code> syntax. (ie. Use <code>$exif:all</code> instead of <code>$exif</code> in <em>EXPR</em>
+<code>$GROUP:all</code> syntax. (eg. Use <code>$exif:all</code> instead of <code>$exif</code> in <em>EXPR</em>
 to test for the existence of EXIF tags.)</p>
 <p>3) Tags in the string are interpolated the same way as with <strong>-p</strong> before the
 expression is evaluated.  In this interpolation, <code>$/</code> is converted to a
@@ -1268,7 +1285,7 @@ the associated NEF:</p>
     exiftool -@ nef.txt -srcfile %d%f.xmp ...</pre>
 <p>5) The <strong>-a</strong> option has no effect on the evaluation of the expression, and
 the values of duplicate tags are accessible only by specifying a group name
-(such as a family 4 instance number, ie. <code>$Copy1:TAG</code>, <code>$Copy2:TAG</code>, etc).</p>
+(such as a family 4 instance number, eg. <code>$Copy1:TAG</code>, <code>$Copy2:TAG</code>, etc).</p>
 </dd>
 <dt><strong><a name="m" class="item"><strong>-m</strong> (<strong>-ignoreMinorErrors</strong>)</a></strong></dt>
 
@@ -1361,9 +1378,9 @@ document is not processed.  Ignored if a password is not required.</p>
 brackets after then name of each processed file, and gives the current file
 number and the total number of files to be processed.  Implies the <strong>-v0</strong>
 option, which prints the name of each processed file when writing.  When
-combined with the [tt]-if[/tt] option, the total count includes all files
-before the condition is applied, but files that fail the condition will not
-have their names printed.</p>
+combined with the <strong>-if</strong> option, the total count includes all files before
+the condition is applied, but files that fail the condition will not have
+their names printed.</p>
 </dd>
 <dt><strong><a name="q" class="item"><strong>-q</strong> (<strong>-quiet</strong>)</a></strong></dt>
 
@@ -1371,7 +1388,7 @@ have their names printed.</p>
 <p>Quiet processing.  One <strong>-q</strong> suppresses normal informational messages, and a
 second <strong>-q</strong> suppresses warnings as well.  Error messages can not be
 suppressed, although minor errors may be downgraded to warnings with the
-<strong>-m</strong> option.</p>
+<strong>-m</strong> option, which may then be suppressed with <code>-q -q</code>.</p>
 </dd>
 <dt><strong><a name="r" class="item"><strong>-r</strong> (<strong>-recurse</strong>)</a></strong></dt>
 
@@ -1424,7 +1441,7 @@ for EXIF this is the individual IFD (the family 1 group).</p>
 <p>When reading, causes information to be extracted from .gz and .bz2
 compressed images.  (Only one image per archive.  Requires gzip and bzip2 to
 be installed on the system.)  When writing, causes compressed information to
-be written if supported by the image format.  (ie. The PNG format supports
+be written if supported by the image format.  (eg. The PNG format supports
 compressed text.)  This option also disables the recommended padding in
 embedded XMP, saving 2424 bytes when writing XMP in a file.</p>
 </dd>
@@ -1584,7 +1601,10 @@ be followed by an additional argument of the form <code>-GROUP:All</code> to lis
 tags in a specific group, where <code>GROUP</code> is one or more family 0-2 group
 names (excepting EXIF IFD groups) separated by colons.  With <strong>-listg</strong>,
 <em>NUM</em> may be given to specify the group family, otherwise family 0 is
-assumed.  Here are some examples:</p>
+assumed.  The <strong>-l</strong> option may be combined with <strong>-listf</strong>, <strong>-listr</strong> or
+<strong>-listwf</strong> to add file descriptions to the list.  The <strong>-lang</strong> option may be
+combined with <strong>-listx</strong> to output descriptions in a single language.  Here
+are some examples:</p>
 <pre>
     -list               # list all tag names
     -list -EXIF:All     # list all EXIF tags
@@ -1679,7 +1699,7 @@ line, not the name of the source file specified by <strong>-srcfile</strong>.</p
 and the first existing source file is processed.  If none of the source
 files already exist, then exiftool uses the first <strong>-srcfile</strong> specified.</p>
 <p>A <em>FMT</em> of <code>@</code> may be used to represent the original <em>FILE</em>, which may be
-useful when specifying multiple <strong>-srcfile</strong> options (ie. to fall back to
+useful when specifying multiple <strong>-srcfile</strong> options (eg. to fall back to
 processing the original <em>FILE</em> if no sidecar exists).</p>
 </dd>
 <dt><strong><a name="stay_open_flag" class="item"><strong>-stay_open</strong> <em>FLAG</em></a></strong></dt>
@@ -1848,7 +1868,7 @@ ExifTool family 3 embedded document number for the image.</p>
 special characters such as <code>&gt;</code>, <code>&lt;</code> or any white space.  These
 quoting techniques are shell dependent, but the examples below will work for
 most Unix shells.  With the Windows cmd shell however, double quotes should
-be used (ie. -Comment=&#34;This is a new comment&#34;).</p>
+be used (eg. -Comment=&#34;This is a new comment&#34;).</p>
 <dl>
 <dt><strong><a name="exiftool_comment_this_is_a_new_comment_dst_jpg" class="item">exiftool -Comment='This is a new comment' dst.jpg</a></strong></dt>
 
@@ -2188,7 +2208,7 @@ file extensions.</p>
 
 <dd>
 <p>Move all files in <code>dir</code> into a directory hierarchy based on year, month and
-day of <code>DateTimeOriginal</code>.  ie) This command would move the file
+day of <code>DateTimeOriginal</code>.  eg) This command would move the file
 <code>dir/image.jpg</code> with a <code>DateTimeOriginal</code> of <code>2005:10:12 16:05:56</code> to
 <code>2005/10/12/image.jpg</code>.</p>
 </dd>
@@ -2358,7 +2378,8 @@ flexibility of ExifTool.)</p>
 <hr />
 <h1><a name="diagnostics">DIAGNOSTICS</a></h1>
 <p>The exiftool application exits with a status of 0 on success, or 1 if an
-error occured or if all files failed the <strong>-if</strong> condition.</p>
+error occured or if all files failed the <strong>-if</strong> condition (for any of the
+commands if <strong>-execute</strong> was used).</p>
 <p>
 </p>
 <hr />
@@ -61,11 +61,12 @@ ExifTool issues can be discussed on the ExifTool forum at
 <blockquote>When you run exiftool, by default it prints descriptions, not tag
 names, for the information it extracts.  These descriptions are in English
 unless the <code>-lang</code> option is used to select another language. Note
-that descriptions often contain spaces between words but tag names never do. To
-print the tag names instead instead of descriptions, use the <code>-s</code>
-option when extracting information.  Valid characters in tag names are
-<code>A-Z</code>, <code>a-z</code>, <code>0-9</code>, <code>_</code> and
-<code>-</code>.  See the <a href="TagNames/index.html">tag name
+that descriptions often contain spaces between words, but tag names never do.
+Also, tag names are always English, regardless of the <code>-lang</code>
+setting. To print the tag names instead instead of descriptions, use the
+<code>-s</code> option when extracting information.  Valid characters in tag
+names are <code>A-Z</code>, <code>a-z</code>, <code>0-9</code>, <code>_</code>
+and <code>-</code>.  See the <a href="TagNames/index.html">tag name
 documentation</a> for a complete list of available tag names.</blockquote>
 
 <blockquote>Tag names may be optionally prefixed by a family 0 or 1 group name
@@ -115,7 +116,7 @@ then use ExifTool (with the <code>-a</code> and <code>-G1</code> options) to
 determine where the information was written. Once you know where it should go,
 you can use ExifTool to write to this location. You can read or write
 information in a specific location by prefixing the tag name on the command line
-with the desired group name.  ie) "<code>-ExifIFD:DateTimeOriginal</code>"
+with the desired group name.  eg.) "<code>-ExifIFD:DateTimeOriginal</code>"
 </blockquote>
 
 <blockquote>This problem may also occur if contradictory information exists in
@@ -190,7 +191,7 @@ command
 
 will set the common date/time tags from the file name for all images in the
 directory "<code>c:\images</code>".  This will work for any file name which
-matches the above criteria (ie. "IMG_20110927_103000.jpg").
+matches the above criteria (eg. "IMG_20110927_103000.jpg").
 <i class=lt>[AllDates is a shortcut for 3 tag names: DateTimeOriginal,
 CreateDate and ModifyDate.  See the <a href="TagNames/Shortcuts.html">Shortcuts
 Tags documentation</a> for more information.]</i></blockquote>
@@ -232,7 +233,7 @@ that form.  (In other words, the inverse print conversion is applied when writin
 values.)  For example, to write GPSAltitudeRef you can type:
 <pre>exiftool -gpsaltituderef="Above Sea Level" image.jpg
 </pre>
-or any unambiguous short form may be used and ExifTool will know what you mean, ie)
+or any unambiguous short form may be used and ExifTool will know what you mean, eg)
 <pre>exiftool -gpsaltituderef=above image.jpg
 </pre>
 Alternatively, the print conversion can be disabled for all tags with the
@@ -302,7 +303,7 @@ exiftool -make= -model= -makernotes= image.jpg
 </pre>
 For the same reason, maker notes can not be copied to an image with an
 incompatible Make or Model.  To do this, the Make and Model tags must also be
-copied.  ie)
+copied.  eg)
 <pre>exiftool -tagsfromfile src.jpg -makernotes -make -model dst.jpg
 </pre>
 (Note that in this case the "<code>-makernotes:all</code>" syntax does not work
@@ -1092,7 +1093,7 @@ change the the Windows console to UTF&#8209;8, follow these steps:
 
 <ol><li>Run "cmd.exe" to open a Windows console (select "Run..." from the
 Start menu and enter "cmd").</li>
-<li>Change the font in the console Properties to any True Type font (ie. "TT
+<li>Change the font in the console Properties to any True Type font (eg. "TT
 Lucida Console").</li>
 <li>Type "<code>chcp 65001</code>" then press RETURN at the command prompt.</li>
 </ol>
@@ -1208,8 +1209,11 @@ without errors, but note that <u>some metadata from the original image may have
 been lost in the process</u>.</blockquote>
 
 <blockquote><b>Note</b>: ExifTool will not modify the JPEG image data, so if the
-image itself is corrupted (ie. if you get a message saying "Not a valid JPEG"),
-then ExifTool can not be used to repair the image.</blockquote>
+image itself is corrupted (eg. if you get a message saying "Not a valid JPEG"),
+then ExifTool can not be used to repair the image.  Also, TIFF-based files may
+not be repaired like this because the image is stored in the same IFD as the
+metadata in these files, which makes the risk of corrupting the image too
+great.</blockquote>
 
 <blockquote>If there are also MakerNote problems in the file, you may want to
 add the <code>-F</code> option to the command.  See <a href='#Q15'>FAQ 15</a>
@@ -1226,7 +1230,7 @@ not copied with <code>-exif:all</code> above (but would be copied with
 then the byte order is determined by the ordering of the MakerNotes if they are
 copied, otherwise big-endian ("MM") byte order is used by default. 
 ExifByteOrder may be set to a specific value to force a particular byte order
-when creating new EXIF (ie. "<code>-ExifByteOrder=II</code>" for little-endian).
+when creating new EXIF (eg. "<code>-ExifByteOrder=II</code>" for little-endian).
 </blockquote>
 
 <a name="Q21"></a>
@@ -1286,9 +1290,9 @@ processing pass to read tags from the file.)
 applied together as each target file is processed.  In general, assignments
 later on the command line override earlier assignments, but there are
 exceptions:
-<ol><li>When writing list-type tags (ie. <code>-keywords=one</code>), new values
+<ol><li>When writing list-type tags (eg. <code>-keywords=one</code>), new values
 are accumulated rather than overriding earlier assignments.<br>&nbsp;</li>
-<li>When copying values to list-type tags (ie.
+<li>When copying values to list-type tags (eg.
 <code>"-keywords&lt;filename"</code>), new values are accumulated only if
 <code>-addTagsFromFile</code> is used, otherwise they override earlier
 assigments if <code>-tagsFromFile</code> is used or implied.<br>&nbsp;</li>
@@ -1335,7 +1339,7 @@ formats.</blockquote>
 
 <blockquote>Tags are not written if the format of the target file doesn't
 support the specific type of meta information.  For example, CRW images do not
-support EXIF or IPTC metdata.  Follow the links in the
+support EXIF or IPTC metdata.  See the
 <a href="index.html#supported">Supported File Types</a> table for an indication
 of the tags supported by your file.  If the tags aren't supported for your file
 type, then a <a href='metafiles.html'>metadata sidecar file</a> is an
@@ -1373,14 +1377,15 @@ and should give an output something like this:
 
 The <code>-G0:1</code> option causes the family 0 and 1 group names to be
 reported in square brackets for each tag.  Tags labelled "File:System" are
-stored in the filesystem, while other tags are stored in the location indicated
-inside the metadata of the file itself.</blockquote>
+"pseudo" tags stored in the filesystem, while the others are "real" tags stored
+in the metadata of the file.</blockquote>
 
 <blockquote>ExifTool's <b>default behaviour is to set all filesystem times to
-the current date/time when writing</b>, but the <code>-P</code> option may be
-used to preserve the original FileModifyDate. FileAccessDate represents the time
-the file was last accessed, and is set to the current date/time whenever any
-software (including ExifTool) accesses the file.</blockquote>
+the current date/time when any "real" tag is written</b>, but the
+<code>-P</code> option may be used to preserve the original FileModifyDate.
+FileAccessDate represents the time the file was last accessed, and is set to the
+current date/time whenever any software (including ExifTool) accesses the
+file.</blockquote>
 
 <blockquote>On systems where a filesystem creation date is maintained, ExifTool
 also sets this to the current date/time when the file is edited.  On Windows the
@@ -1476,7 +1481,7 @@ importing.</blockquote>
 for more details.</blockquote>
 
 <hr>
-<i>Last revised Jan. 24, 2014</i>
+<i>Last revised Jul 20, 2014</i>
 <p class='lf'><a href="index.html">&lt;-- Back to ExifTool home page</a></p>
 </body>
 </html>
@@ -29,6 +29,10 @@ the file is also moved to the specified directory (see
 <a href="#ex6">example 6</a> below).  Existing files will not be overwritten
 (but see "Warning" below).</p>
 
+<p>The <b>TestName</b> tag provides a mechanism for dry-run testing of the
+rename feature.  Writing <b>TestName</b> displays the old and new names without
+making any changes to the files.</p>
+
 <p>The <code>%d</code>, <code>%f</code>, <code>%e</code> file name format codes
 may be used to represent the directory, name and extension of the original file
 when specifying <b>FileName</b> and <b>Directory</b> tags via the command-line
@@ -94,6 +98,24 @@ of any tag value used in a format string.  See the <code>-p</code> option in the
 
 <h2>Examples</h2>
 
+<a name="ex0"></a><table cellpadding=6>
+<tr><td valign='top'>&nbsp;0.</td><td bgcolor='#dddddd'><code class='blk'>
+exiftool -d %Y%m%d_%H%M%%-c.%%e "-testname&lt;CreateDate" DIR
+</code></td></tr></table>
+<blockquote>
+The <b>TestName</b> tag is used for dry-run testing of the file renaming
+feature.  The above command is identical to that of example 1 except that
+<b>TestName</b> is written instead of <b>FileName</b>.  So instead of renaming
+the files, this command prints the old and new file names without actually
+changing anything.  For example:
+<blockquote><pre>&gt; <span class=code>exiftool -d %Y%m%d_%H%M%%-c.%%e "-testname&lt;CreateDate" tmp</span>
+'tmp/a.jpg' --&gt; 'tmp/20031031_1544.jpg'
+'tmp/b.jpg' --&gt; 'tmp/20010519_1836.jpg'
+    1 directories scanned
+    0 image files updated
+    2 image files unchanged</pre></blockquote>
+</blockquote>
+
 <a name="ex1"></a><table cellpadding=6>
 <tr><td valign='top'>&nbsp;1.</td><td bgcolor='#dddddd'><code class='blk'>
 exiftool -d %Y%m%d_%H%M%%-c.%%e "-filename&lt;CreateDate" DIR
@@ -103,7 +125,7 @@ Rename all images in directory '<code>DIR</code>' to names like
 '<code>20060327_1058-2.jpg</code>', with individual file names derived from the
 value of the CreateDate (plus a copy number with a leading '<code>-</code>' if a
 file with the same name already exists), and with the same extension as the
-original image.  <i class=lt>[Note that copying tag values with '<code><</code>' implies
+original image.  <i class=lt>[Note that copying tag values with '<code>&lt;</code>' implies
 '<code>-tagsfromfile @</code>' unless otherwise specified.  See the
 <code>-tagsFromFile</code> description in the
 <a href="exiftool_pod.html">application documentation</a> for details.]</i>
@@ -112,11 +134,12 @@ original image.  <i class=lt>[Note that copying tag values with '<code><</code>'
 <p>a) When a directory name is specified, this command will only rename "writable"
 files in the directory.  Use '<code>exiftool -listwf</code>' to list the
 extensions of currently writable file types.  The <code>-ext</code> option may
-be used to rename other file types (ie. '<code>-ext avi</code>').</p>
+be used to rename other file types (eg. '<code>-ext avi</code>').</p>
 <p>b) For this command to work, the CreateDate tag must exist in the source
 file. Use '<code>exiftool -createdate FILE</code>' to see if a file contains
 this information.  If it doesn't, you may need to use another date/time tag such
-as DateTimeOriginal or FileModifyDate.</p>
+as DateTimeOriginal or FileModifyDate.  To see all available date/time tags in a
+file (and their locations), use '<code>exiftool -a -G1 -s -time:all FILE</code>'.</p>
 </blockquote>
 
 <a name="ex2"></a><table cellpadding=6>
@@ -162,7 +185,7 @@ images are copied instead of moved since the <code>-o</code> option was used. In
 the second command the trailing '<code>/</code>' on '<code>dummy/</code>' is
 necessary because otherwise '<code>dummy</code>' would be interpreted as a file
 name.  This technique of using <code>-o</code> with a dummy directory name is
-necessary when the directory name is derived from the value of other tags (ie.
+necessary when the directory name is derived from the value of other tags (eg.
 '<code>-directory&lt;createDate</code>') and you want the files to be copied
 instead of moved.  (Because the values of other tags may not be used with the
 <code>-o</code> option.)
@@ -271,7 +294,7 @@ to most systems, but additional codes may be available on your specific system
 <tr><th>%x</th><td>- preferred locale date representation</td></tr>
 <tr><th>%X</th><td>- preferred locale time representation</td></tr>
 <tr><th>%y</th><td>- 2-digit year (00-99)</td></tr>
-<tr><th>%Y</th><td>- 4-digit year (ie. 2006)</td></tr>
+<tr><th>%Y</th><td>- 4-digit year (eg. 2006)</td></tr>
 <tr><th>%z</th><td>- time zone in the form +/-hhmm (see note 1 below)</td></tr>
 <tr><th>%Z</th><td>- system time zone name (see note 2 below)</td></tr>
 <tr><th>%%</th><td>- a literal '%' character</td></tr>
@@ -115,7 +115,7 @@ position in the track log.  This time difference may be of the form "SS",
 "MM:SS", "HH:MM:SS" or "DD HH:MM:SS" (where SS=seconds, MM=minutes, HH=hours and
 DD=days), and a leading "+" or "-" may be added for positive or negative
 differences (negative if the camera clock was ahead of GPS time).  Fractional
-seconds are allowed (ie. "SS.ss").</p>
+seconds are allowed (eg. "SS.ss").</p>
 
 <p>For example, "<code>-geosync=-1:20</code>" specifies that synchronization
 with GPS time is achieved by subtracting 1 minute and 20 seconds from the
@@ -145,12 +145,12 @@ more than one synchronization point is provided.  For this, the value written to
 <tr><th>Format</th><th>Notes</th></tr>
 <tr><td><i>FILE</i></td>
 <td>Both GPS and image timestamps are extracted from the
-specified file. ie) <code>-geosync=image.jpg</code></td></tr>
+specified file. eg) <code>-geosync=image.jpg</code></td></tr>
 <tr><td><i>GPSTIME</i>@<i>FILE</i></td><td>GPS time is taken from the
 <code>Geosync</code> value and the image timestamp is extracted from the
-specified file. ie) <code>-geosync="12:58:05@image.jpg"</code></td></tr>
+specified file. eg) <code>-geosync="12:58:05@image.jpg"</code></td></tr>
 <tr><td><i>GPSTIME</i>@<i>IMGTIME</i></td><td>Both GPS and image timestamps are
-taken from the <code>Geosync</code> value.  ie)
+taken from the <code>Geosync</code> value.  eg)
 <code>-geosync="12:58:05@2010:01:02 12:25:26"</code></td></tr>
 </table></blockquote>
 
@@ -192,9 +192,9 @@ groups.  If a value for <code>Geotime</code> is not given, it is taken from
 may be copied from any other date/time tag or set directly from a date/time
 string.</p>
 
-<p>If the date/time tag does not include a timezone then one may be added (ie.
+<p>If the date/time tag does not include a timezone then one may be added (eg.
 <code>"-Geotime&lt;${CreateDate}-05:00"</code>), otherwise the local system time
-is assumed.</p>
+is assumed.  Decimal seconds are supported in the time value.</p>
 
 <p>By default, GPS tags are created in EXIF and the corresponding
 XMP tags are updated only if they already exist.  However, an EXIF or XMP group
@@ -646,7 +646,7 @@ the full ExifTool distribution.</p>
 
 <hr>
 <i>Created Apr. 2, 2009</i><br>
-<i>Last revised Sept. 30, 2013</i>
+<i>Last revised May 14, 2014</i>
 <p class='lf'><a href="index.html">&lt;-- Back to ExifTool home page</a></p>
 </body>
 </html>
@@ -11,12 +11,152 @@
 
 <p>RSS feed: <a href="http://owl.phy.queensu.ca/~phil/exiftool/rss.xml">http://owl.phy.queensu.ca/~phil/exiftool/rss.xml</a></p>
 
-<p><b>Note:</b> The most recent production release is <a href="Image-ExifTool-9.60.tar.gz">Version 9.60</a>. (Other versions are
+<p><b>Note:</b> The most recent production release is <a href="Image-ExifTool-9.70.tar.gz">Version 9.70</a>. (Other versions are
 considered development releases, and are not uploaded to <a href="http://search.cpan.org/dist/Image-ExifTool/">CPAN</a>.)</p>
 
 <!-- Use line width of 80 -->
 <!-- *********************************************************************** -->
 
+<a name='v9.70'><b>Sept. 3, 2014 - Version 9.70</b></a> <span class=grn>(production release)</span>
+<ul>
+<li>Added read support for Pentax 645Z makernotes in MOV videos
+<li>Added a new Canon LensType (thanks Norbert Wasser)
+<li>Added a new SonyModelID (thanks LibRaw)
+<li>Added a new Pentax LensType (thanks Dominique Schrekling)
+<li>Added a new PentaxModelID
+<li>Added a new Olympus CameraType (thanks LibRaw)
+<li>Updated Nikon ISOExpansion values for new models (thanks LibRaw)
+<li>Decode a number of new Sony tags and values (thanks Jos Roost)
+<li>Decode a new Panasonic tag
+<li>Decode another QuickTime tag
+<li>Improved verbose dump for LFP images
+<li>Patched to repair incorrect list types in XMP structures when writing
+<li>Patched to avoid MPEG Layer 3 check for files with a "MUS" extension
+<li>Fixed incorrect behaviour of -addTagsFromFile when adding list items from
+    multiple variable-named source files
+</ul>
+
+<a name='v9.69'><b>July 27, 2014 - Version 9.69</b></a>
+<ul>
+<li>Added ability to write PNG PhysicalPixel (PNG-pHYs) tags
+<li>Added a few new Panasonic ContrastMode values
+<li>Added minor warning when creating EXIF or IPTC in PNG images
+<li>Decode a few more Sony tags and values (thanks Jos Roost)
+<li>Fixed problem writing Olympus:LensType
+<li>API Changes:
+    <ul>
+    <li>Shift.pl now autoloads when ShiftTime() is called
+    <li>The 3rd argument to ShiftTime() is now optional
+    </ul>
+</ul>
+
+<a name='v9.68'><b>July 19, 2014 - Version 9.68</b></a>
+<ul>
+<li>Added read support for Lytro LFP files
+<li>Added a new Olympus LensType (thanks Niels Kristian Bech Jensen)
+<li>Added support for the maker notes of some recent Ricoh/Pentax models
+<li>Allow Composite tag to have no Require'd or Desire'd tags
+<li>Improved -geotag verbose output
+<li>Changed so XMP tags take priority when reading QuickTime-format files
+<li>Changed PSD file description to "Photoshop Document"
+<li>Fixed problem where -geotag option could fail if -v4 was used
+<li>Fixed problem writing SonyDateTime2
+</ul>
+
+<a name='v9.67'><b>July 6, 2014 - Version 9.67</b></a>
+<ul>
+<li>Added support for Sigma X3F version 4.0 files from the DP2 Quattro
+<li>Added support for Sony XAVC video files
+<li>Added a new Nikon PhaseDetectAF value
+<li>Added conversion for Casio EX-ZR300 BestShotMode (thanks Manfred)
+<li>Decode more proprietary information from some Panasonic/Leica MP4 videos
+<li>Fixed inaccuracies in decoding some SigmaRaw tags from the X3F header
+</ul>
+
+<a name='v9.66'><b>July 1, 2014 - Version 9.66</b></a>
+<ul>
+<li>Added read support for Kodak PixPro S-1 maker notes
+<li>Added new Canon, Pentax and Sigma LensTypes (thanks LibRaw for the Canon)
+<li>Added support for Sigma DP2 Quattro maker notes
+<li>Decode AFMicroAdj for Sony A77M2
+<li>Improved decoding of Pentax K-3 AFPointSelected (thanks Dan)
+<li>Swap "GPS track start/end" labels in -geotag -v2 output if track is stored
+    in reverse chronological order
+<li>Changed handling of IPTC groups so that standard IPTC always has a family 1
+    group name of "IPTC", and takes priority over non-standard IPTC when
+    duplicates are not allowed
+<li>Patched to recognize incorrect XMP URI's written by Nikon NX2
+<li>Fixed problem with possible duplication of lens names when attempting to
+    identify lens used by a Nikon camera from a Photoshop-mangled image
+<li>Fixed problem parsing some NMEA sentences, and added support for GPZDA
+<li>Fixed typo in a CanonCustom value
+<li>Fixed bug where standard IPTC may be incorrectly written into a proprietary
+    PhotoMechanic IPTC-format SoftEdit record
+</ul>
+
+<a name='v9.65'><b>June 20, 2014 - Version 9.65</b></a>
+<ul>
+<li>Added a new Olympus LensType (thanks Niels Kristian Bech Jensen)
+<li>Added a print conversion for Unknown ICC_Profile MeasurementGeometry
+<li>Added LargeTags shortcut
+<li>Avoid loading data for some tags with large binary data values if they were
+    specifically excluded by the command
+<li>Improved memory handling when processing CanonVRD information
+<li>Patched potential "subscript -1" runtime error when reading EPS files
+</ul>
+
+<a name='v9.64'><b>June 14, 2014 - Version 9.64</b></a>
+<ul>
+<li>Added write-only <a href="TagNames/Extra.html">TestName tag</a> for dry-run tests of file renaming feature
+<li>Added a few new Olympus CameraType values
+<li>Added a new new Nikon LensID's
+<li>Added a new Canon LensType
+<li>Patched to avoid structure warnings when copying tags from ZIP-based files
+<li>Patched to deal with incorrect byte ordering in FlashPix date/time values
+    written by some cameras
+<li>Fixed problem using advanced formatting feature in a -if condition
+<li>Fixed problem parsing Canon VignettingCorr for some newer PowerShot models
+<li>API Changes:
+    <ul>
+    <li>Added 'Test' option to SetFileName()
+    </ul>
+</ul>
+
+<a name='v9.63'><b>May 31, 2014 - Version 9.63</b></a>
+<ul>
+<li>Added basic read support for EPUB and MOBI electronic books
+<li>Added ability to combine -lang option with -listx to extract only one language
+<li>Remove leading XML comment from XMP if it exists when writing as a block
+<li>Another attempt to patch problem obtaining a consistent "full path" for
+    source files when importing a CSV database in Windows
+</ul>
+
+<a name='v9.62'><b>May 24, 2014 - Version 9.62</b></a>
+<ul>
+<li>Added message about SourceFile names to -v2 output when importing a database
+    with -csv= or -json=
+<li>Added patch to allow extraction of some incorrectly written FlashPix tags
+<li>Extract a couple of new FlashPix tags for some FujiFilm models
+<li>Decode a number of new Sony tags (thanks Jos Roost)
+<li>Changed -n option for GPSTimeStamp to return nanosecond precision
+</ul>
+
+<a name='v9.61'><b>May 18, 2014 - Version 9.61</b></a>
+<ul>
+<li>Added ability to combine -l with -listf, -listr or -listwf to add
+    descriptions of the file type
+<li>Added a few new Canon LensType values (thanks Norbert Wasser and Mark)
+<li>Extract AE metering segments again for the Pentax K-3
+<li>Decode a number of new FujiFilm RAF tags (thanks LibRaw)
+<li>Decode a number of new Sony tags (thanks Jos Roost)
+<li>Changed the case of some AF point values for consistency
+<li>Fixed an incorrect Olympus FocusMode value
+<li>Fixed problem introduced in 9.60 where a "LensID argument isn't numeric"
+    warning could occur under some conditions
+<li>Fixed quirk where ExifTool could incorrectly report that a file was changed
+    when conditionally deleting a non-existent tag as a block
+</ul>
+
 <a name='v9.60'><b>May 11, 2014 - Version 9.60</b></a> <span class=grn>(production release)</span>
 <ul>
 <li>Added a few new values for some Pentax tags
@@ -210,7 +210,7 @@ maker notes value block is <a name=XE class='W M'>underlined</a>.</span></p>
 column of the output gives the offset in hex relative to the start of the TIFF
 header (by default).  For a TIFF image this is at the start of the file, but for
 a JPEG image it is 10 bytes after the start of the APP1 EXIF segment.  However,
-this base offset can be specified on the command line with "-htmlDump#" (ie.
+this base offset can be specified on the command line with "-htmlDump#" (eg.
 "-htmlDump0" for absolute offsets), or via the API with the "HtmlDumpBase"
 option.</p>
 
@@ -168,7 +168,10 @@ of the EXIF data), but for the RR1 the offsets are relative to the start of the
 subdirectory.  The G700 uses MPF offsets relative to the start of the file,
 instead of the start of the MPF segment as per the MPF spec.  The HX15 uses
 a standard EXIF maker note structure, but there are 2 extra padding bytes
-between the IFD entry count and the 1st IFD entry.</p>
+between the IFD entry count and the 1st IFD entry.  The HZ15 and Pentax XG-1 (by
+Ricoh) both have an extra 2 bytes after the IFD entry counts.  All value offsets
+are erroneously 0 for the HZ15, and there are other problems with the offsets
+stored by the XG-1.</p>
 
 <p><a name="Rollei"><b>Rollei:</b></a> The DK4010 writes all maker notes offsets relative to the
 start of the individual IFD entry.</p>
@@ -257,7 +260,7 @@ WB2000] [2013-07-25: Add the NX2000 to this list]</i>)</p>
 
 <hr>
 <i>Created Mar. 25, 2005</i>
-<br><i>Last revised Oct. 22, 2013</i>
+<br><i>Last revised Jul. 21, 2014</i>
 <p class='lf'><a href="index.html">&lt;-- Back to ExifTool home page</a></p>
 </body>
 </html>
@@ -74,9 +74,9 @@ span.sup        { font-size: 0.8em; font-weight: normal; position: relative; top
 </div>
 
 <blockquote><table class='dl lg'><tr><td><b>
-<a href="Image-ExifTool-9.60.tar.gz">
-Download        Version 9.60</a> (3.6 MB) -
-<a href="history.html">May 11, 2014</a></b></td></tr></table></blockquote>
+<a href="Image-ExifTool-9.70.tar.gz">
+Download        Version 9.70</a> (3.7 MB) -
+<a href="history.html">Sept 3, 2014</a></b></td></tr></table></blockquote>
 
 <p><b>ExifTool is a platform-independent <a href="ExifTool.html">Perl
 library</a> plus a <a href="exiftool_pod.html">command-line application</a> for
@@ -125,8 +125,8 @@ distribution above.)</i></p>
 
 <blockquote><table class='dl lg'><tr><td><b>
 <a name="alone">Windows Executable:</a>
-<a href="exiftool-9.60.zip">
-         exiftool-9.60.zip</a> (3.7 MB)</b></td></tr></table></blockquote>
+<a href="exiftool-9.70.zip">
+         exiftool-9.70.zip</a> (3.7 MB)</b></td></tr></table></blockquote>
 
 <p><b>The stand-alone Windows executable</b> does not require Perl. Just
 download and un-zip the archive then double-click on
@@ -137,8 +137,8 @@ of Windows (including Windows 7).</p>
 
 <blockquote><table class='dl lg'><tr><td><b>
 Mac OS X Package:
-<a href="ExifTool-9.60.dmg">
-         ExifTool-9.60.dmg</a> (2.4 MB)</b></td></tr></table></blockquote>
+<a href="ExifTool-9.70.dmg">
+         ExifTool-9.70.dmg</a> (2.4 MB)</b></td></tr></table></blockquote>
 
 <p><b>The OS X package</b> installs the ExifTool command-line application and
 libraries in /usr/bin. After installing, type "<code>exiftool</code>" in a
@@ -216,7 +216,7 @@ haven't discovered the full power of ExifTool.  Read about the <code>-ext</code>
 Phil Harvey's exiftool ... I've never seen anything that's in the same ballpark for power."</i>
 - <a href="http://forums.dpreview.com/forums/read.asp?forum=1034&amp;message=16582684">dpreview forum</a></blockquote>
 <blockquote><i>"While there are a lot of image tools available, nothing comes close for accessing/updating
-the metadata like ExifTool"</i> - <a href="http://blog.merg.be/?p=242">merg's blog</a></blockquote>
+the metadata like ExifTool"</i> - <a href="http://web.archive.org/web/20080307105031/http://blog.merg.be/?p=242">merg's blog</a></blockquote>
 <blockquote><i>"Fast, reliable and amazingly comprehensive ..."</i>
 - <a href="http://cpanratings.perl.org/dist/Image-ExifTool">CPAN ratings</a></blockquote>
 <blockquote><i>"... the one piece of free software that gets the most
@@ -283,6 +283,7 @@ for each file format.</p>
 <tr><td>DVB</td><td>R/W</td><td>Digital Video Broadcasting (<a href="TagNames/QuickTime.html">QuickTime</a>-based)</td><td>R<span class=sup>2</span></td><td>R<span class=sup>2</span></td><td>R/W/C</td><td>-</td><td>R/W <a href="TagNames/QuickTime.html">QuickTime</a><span class=sup>3</span></td></tr>
 <tr><td>EIP</td><td>R</td><td>Capture One Enhanced Image Package (<a href="TagNames/ZIP.html">ZIP</a>-based)</td><td>R</td><td>-</td><td>-</td><td>-</td><td>R XML <a href="TagNames/ZIP.html">ZIP</a></td></tr>
 <tr><td><a href="TagNames/PostScript.html">EPS, EPSF, PS</a></td><td>R/W</td><td>[Encapsulated] PostScript Format</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C <a href="TagNames/PostScript.html">PostScript</a>, R <a href="TagNames/Photoshop.html">Photoshop</a></td></tr>
+<tr><td>EPUB</td><td>R</td><td>Electronic Publication (ZIP/XML-based)</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R XML <a href="TagNames/ZIP.html">ZIP</a></td></tr>
 <tr><td>ERF</td><td>R/W</td><td>Epson RAW Format (<a href="TagNames/EXIF.html">TIFF</a>-based)</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R/W <a href="TagNames/Olympus.html">Olympus</a></td></tr>
 <tr><td><a href="TagNames/EXE.html">EXE, DLL</a></td><td>R</td><td>DOS/Windows executable and library files</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/EXE.html">EXE</a></td></tr>
 <tr><td><a href="TagNames/EXIF.html">EXIF</a></td><td>R/W/C</td><td>Exchangable Image File Format metadata (<a href="TagNames/EXIF.html">TIFF</a>-based)</td><td>R/W/C</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
@@ -314,6 +315,7 @@ for each file format.</p>
 <tr><td>KDC</td><td>R</td><td>Kodak Digital Camera RAW (<a href="TagNames/EXIF.html">TIFF</a>-based)</td><td>R</td><td>R</td><td>R</td><td>R</td><td>R <a href="TagNames/Kodak.html">Kodak</a></td></tr>
 <tr><td><a href="TagNames/iWork.html">KEY, KTH</a></td><td>R</td><td>Apple iWork '09 Keynote presentation/Theme</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/iWork.html">XML</a> <a href="TagNames/ZIP.html">ZIP</a></td></tr>
 <tr><td>LA</td><td>R</td><td>Lossless Audio (<a href="TagNames/RIFF.html">RIFF</a>-based)</td><td>R<span class=sup>2</span></td><td>-</td><td>R</td><td>-</td><td>R <a href="TagNames/RIFF.html">RIFF</a></td></tr>
+<tr><td><a href="TagNames/Lytro.html">LFP</a></td><td>R</td><td>Lytro Light Field Picture</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/Lytro.html">Lytro</a></td></tr>
 <tr><td><a href="TagNames/LNK.html">LNK</a></td><td>R</td><td>Microsoft Shell Link (Windows shortcut)</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/LNK.html">LNK</a></td></tr>
 <tr><td><a href="TagNames/M2TS.html">M2TS, MTS, M2T, TS</a></td><td>R</td><td>MPEG-2 Transport Stream (used for AVCHD video)</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/M2TS.html">M2TS</a> <a href="TagNames/H264.html">H264</a></td></tr>
 <tr><td>M4A, M4B, M4P, M4V</td><td>R/W</td><td>MPEG-4 Audio/Video (<a href="TagNames/QuickTime.html">QuickTime</a>-based)</td><td>R<span class=sup>2</span></td><td>R<span class=sup>2</span></td><td>R/W/C</td><td>-</td><td>R/W <a href="TagNames/QuickTime.html">QuickTime</a><span class=sup>3</span></td></tr>
@@ -321,6 +323,7 @@ for each file format.</p>
 <tr><td><a href="TagNames/MIE.html">MIE</a></td><td>R/W/C</td><td>Meta Information Encapsulation (<a href="MIE1.1-20070121.pdf">MIE specification</a>)</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C <a href="TagNames/MIE.html">MIE</a></td></tr>
 <tr><td><a href="TagNames/MIFF.html">MIFF, MIF</a></td><td>R</td><td>Magick Image File Format</td><td>R</td><td>R</td><td>R</td><td>R</td><td>R <a href="TagNames/MIFF.html">MIFF</a> <a href="TagNames/Photoshop.html">Photoshop</a></td></tr>
 <tr><td><a href="TagNames/Matroska.html">MKA, MKV, MKS</a></td><td>R</td><td>Matroska Audio/Video/Subtitle</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/Matroska.html">Matroska</a></td></tr>
+<tr><td><a href="TagNames/Palm.html">MOBI, AZW, AZW3</a></td><td>R</td><td>Mobipocket electronic book (<a href="TagNames/Palm.html">Palm</a>-based)</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/Palm.html">Palm</a> <a href="TagNames/Palm.html#MOBI">MOBI</a></td></tr>
 <tr><td>MODD</td><td>R</td><td>Sony Picture Motion metadata (XML <a href="TagNames/PLIST.html">PLIST</a>-based)</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/PLIST.html">PLIST</a></td></tr>
 <tr><td><a href="TagNames/Leaf.html">MOS</a></td><td>R/W</td><td>Creo Leaf Mosaic (<a href="TagNames/EXIF.html">TIFF</a>-based)</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R <a href="TagNames/Leaf.html">Leaf</a></td></tr>
 <tr><td><a href="TagNames/QuickTime.html">MOV, QT</a></td><td>R/W</td><td>Apple QuickTime Movie</td><td>R</td><td>R</td><td>R/W/C</td><td>-</td><td>R/W <a href="TagNames/QuickTime.html">QuickTime</a><span class=sup>3</span></td></tr>
@@ -344,6 +347,7 @@ for each file format.</p>
 <tr><td>PAC</td><td>R</td><td>Lossless Predictive Audio Compression (<a href="TagNames/RIFF.html">RIFF</a>-based)</td><td>R<span class=sup>2</span></td><td>-</td><td>R</td><td>-</td><td>R <a href="TagNames/RIFF.html">RIFF</a></td></tr>
 <tr><td><a href="TagNames/iWork.html">PAGES</a></td><td>R</td><td>Apple iWork '09 Pages document</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/iWork.html">XML</a> <a href="TagNames/ZIP.html">ZIP</a></td></tr>
 <tr><td><a href="TagNames/PhotoCD.html">PCD</a></td><td>R</td><td>Kodak Photo CD Image Pac</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/PhotoCD.html">PhotoCD</a></td></tr>
+<tr><td><a href="TagNames/Palm.html">PDB, PRC</a></td><td>R</td><td>Palm Database</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/Palm.html">Palm</a></td></tr>
 <tr><td><a href="TagNames/PDF.html">PDF</a></td><td>R/W</td><td>Adobe Portable Document Format</td><td>R<span class=sup>2</span></td><td>R<span class=sup>2</span></td><td>R/W/C</td><td>R<span class=sup>2</span></td><td>R/W/C <a href="TagNames/PDF.html">PDF</a>, R <a href="TagNames/Photoshop.html">Photoshop</a></td></tr>
 <tr><td>PEF</td><td>R/W</td><td>Pentax (RAW) Electronic Format (<a href="TagNames/EXIF.html">TIFF</a>-based)</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R/W <a href="TagNames/Pentax.html">Pentax</a></td></tr>
 <tr><td><a href="TagNames/Font.html">PFA, PFB</a></td><td>R</td><td>PostScript Font ASCII/Binary</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/Font.html">Font</a></td></tr>
@@ -358,7 +362,7 @@ for each file format.</p>
 <tr><td><a href="TagNames/OOXML.html">POTX, POTM</a></td><td>R</td><td>Office Open XML Presentation Template [Macro-enabled]</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/OOXML.html">XML</a> <a href="TagNames/ZIP.html">ZIP</a></td></tr>
 <tr><td><a href="TagNames/OOXML.html">PPSX, PPSM</a></td><td>R</td><td>Office Open XML Presentation Slideshow [Macro-enabled]</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/OOXML.html">XML</a> <a href="TagNames/ZIP.html">ZIP</a></td></tr>
 <tr><td><a href="TagNames/OOXML.html">PPTX, PPTM</a></td><td>R</td><td>Office Open XML Presentation [Macro-enabled]</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/OOXML.html">XML</a> <a href="TagNames/ZIP.html">ZIP</a></td></tr>
-<tr><td><a href="TagNames/Photoshop.html">PSD, PSB</a></td><td>R/W</td><td>PhotoShop Drawing / Large Document</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R <a href="TagNames/Photoshop.html">Photoshop</a></td></tr>
+<tr><td><a href="TagNames/Photoshop.html">PSD, PSB</a></td><td>R/W</td><td>PhotoShop Document / Large Document</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R/W/C</td><td>R <a href="TagNames/Photoshop.html">Photoshop</a></td></tr>
 <tr><td><a href="TagNames/PSP.html">PSP, PSPIMAGE</a></td><td>R</td><td>Paint Shop Pro</td><td>R</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/PSP.html">PSP</a></td></tr>
 <tr><td><a href="TagNames/QuickTime.html">QTIF, QTI, QIF</a></td><td>R/W</td><td>QuickTime Image File</td><td>R<span class=sup>2</span></td><td>R<span class=sup>2</span></td><td>R/W/C</td><td>-</td><td>R/W <a href="TagNames/QuickTime.html">QuickTime</a><span class=sup>3</span></td></tr>
 <tr><td><a href="TagNames/Real.html#Audio">RA</a></td><td>R</td><td>Real Audio</td><td>-</td><td>-</td><td>-</td><td>-</td><td>R <a href="TagNames/Real.html#Audio">Real</a> <a href="TagNames/ID3.html">ID3</a></td></tr>
@@ -404,7 +408,7 @@ for each file format.</p>
 </table><span class=sm><span class=sup>1</span> Block write only,
 <span class=sup>2</span> Non-standard format,
 <span class=sup>3</span> Writes only some date/time tags,
-<span class=sup>4</span> Only for PostScript-format file type</span></blockquote>
+<span class=sup>4</span> Only writable for PostScript-format file type</span></blockquote>
 <h3><a name="JPEG">Supported JPEG Meta Information</a></h3>
 <p>ExifTool can <b>R</b>ead, <b>W</b>rite and/or <b>C</b>reate the following types
 of meta information in JPEG images:</p>
@@ -506,7 +510,7 @@ renamed to "<code>exiftool.exe</code>" to allow it to be run by typing
 
 <p>If the exiftool executable ("<code>exiftool.pl</code>" or
 "<code>exiftool.exe</code>") is not in the current directory or your system
-PATH, then its directory must be specified on the command line (ie. by typing
+PATH, then its directory must be specified on the command line (eg. by typing
 "<code>c:\path_to_exiftool\exiftool.pl</code>" or
 "<code>c:\path_to_exiftool\exiftool</code>").</p>
 
@@ -704,11 +708,11 @@ These groups are:</p>
 APP6, APP8, ASF, CanonVRD, Composite, DICOM, DNG, DV, DjVu, Ducky, EXE,
 EXIF, ExifTool, FLAC, FLIR, File, Flash, FlashPix, Font, FotoStation, GIF,
 GIMP, GeoTiff, H264, HTML, ICC_Profile, ID3, IPTC, ITC, JFIF, JPEG,
-Jpeg2000, LNK, Leaf, M2TS, MIE, MIFF, MNG, MPC, MPEG, MPF, MXF, MakerNotes,
-Matroska, Meta, Ogg, OpenEXR, PDF, PICT, PLIST, PNG, PSP, PanasonicRaw,
-PhotoCD, PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF,
-RIFF, RSRC, RTF, Radiance, Rawzor, Real, SVG, SigmaRaw, Stim, Theora,
-Torrent, Vorbis, XML, XMP, ZIP
+Jpeg2000, LNK, Leaf, Lytro, M2TS, MIE, MIFF, MNG, MPC, MPEG, MPF, MXF,
+MakerNotes, Matroska, Meta, Ogg, OpenEXR, PDF, PICT, PLIST, PNG, PSP, Palm,
+PanasonicRaw, PhotoCD, PhotoMechanic, Photoshop, PostScript, PrintIM,
+QuickTime, RAF, RIFF, RSRC, RTF, Radiance, Rawzor, Real, SVG, SigmaRaw,
+Stim, Theora, Torrent, Vorbis, XML, XMP, ZIP
 </td></tr>
 <tr><td><b>1&nbsp;(Specific&nbsp;Location)</b></td>
 <td class=sm>AC3, AFCP, AIFF, APE, ASF, AVI1, Adobe, AdobeCM, AdobeDNG, Apple, CIFF,
@@ -721,21 +725,21 @@ ICC-header, ICC-meas, ICC-meta, ICC-view, ICC_Profile, ICC_Profile#, ID3,
 ID3v1, ID3v1_Enh, ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ITC,
 InteropIFD, JFIF, JPEG, JPEG-HDR, JVC, Jpeg2000, KDC_IFD, Kodak,
 KodakBordersIFD, KodakEffectsIFD, KodakIFD, KyoceraRaw, LNK, Leaf,
-LeafSubIFD, Leica, M2TS, MAC, MIE-Audio, MIE-Camera, MIE-Canon, MIE-Doc,
-MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo, MIE-Image, MIE-Lens, MIE-Main,
-MIE-MakerNotes, MIE-Meta, MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-UTM,
-MIE-Unknown, MIE-Video, MIFF, MNG, MPC, MPEG, MPF0, MPImage, MXF,
-MakerNotes, MakerUnknown, Matroska, MediaJukebox, MetaIFD, Microsoft,
+LeafSubIFD, Leica, Lytro, M2TS, MAC, MIE-Audio, MIE-Camera, MIE-Canon,
+MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo, MIE-Image, MIE-Lens,
+MIE-Main, MIE-MakerNotes, MIE-Meta, MIE-Orient, MIE-Preview, MIE-Thumbnail,
+MIE-UTM, MIE-Unknown, MIE-Video, MIFF, MNG, MOBI, MPC, MPEG, MPF0, MPImage,
+MXF, MakerNotes, MakerUnknown, Matroska, MediaJukebox, MetaIFD, Microsoft,
 Minolta, MinoltaRaw, NITF, Nikon, NikonCapture, NikonCustom, NikonScan,
-Nintendo, Ocad, Ogg, Olympus, OpenEXR, PDF, PICT, PNG, PSP, Panasonic,
-PanasonicRaw, Pentax, PhaseOne, PhotoCD, PhotoMechanic, Photoshop,
-PictureInfo, PostScript, PreviewIFD, PrintIM, ProfileIFD, Qualcomm,
-QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF, Radiance, Rawzor, Real,
-Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4, Real-RA5, Real-RJMD,
-Reconyx, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#, SVG, Samsung,
-Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD, System,
-Theora, Torrent, Track#, Version0, Vorbis, XML, XMP, XMP-DICOM, XMP-GPano,
-XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album,
+Nintendo, Ocad, Ogg, Olympus, OpenEXR, PDF, PICT, PNG, PNG-pHYs, PSP, Palm,
+Panasonic, PanasonicRaw, Pentax, PhaseOne, PhotoCD, PhotoMechanic,
+Photoshop, PictureInfo, PostScript, PreviewIFD, PrintIM, ProfileIFD,
+Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF, Radiance, Rawzor,
+Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4, Real-RA5,
+Real-RJMD, Reconyx, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#, SVG,
+Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD,
+System, Theora, Torrent, Track#, Version0, Vorbis, XML, XMP, XMP-DICOM,
+XMP-GPano, XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album,
 XMP-apple-fi, XMP-aux, XMP-cc, XMP-cell, XMP-crs, XMP-dc, XMP-dex,
 XMP-digiKam, XMP-dwc, XMP-exif, XMP-exifEX, XMP-expressionmedia,
 XMP-extensis, XMP-fpv, XMP-getty, XMP-ics, XMP-iptcCore, XMP-iptcExt,
@@ -889,20 +893,20 @@ Camera Raw 6.3 and LR 3.3]</i></li>
 
 <h2><font color='#cc6600'><a name="security">Security Issues</a></font></h2>
 <p>Some ExifTool options (<code>-if</code>, <code>-p</code>, and copying
-arguments like <code>"-DSTTAG&lt;SRCTAG"</code>) have the ability to execute
-Perl code from within command-line arguments.  This may be a security problem if
+arguments like <code>"-DSTTAG&lt;STR"</code>) have the ability to execute Perl
+code from within command-line arguments.  This may be a security problem if
 ExifTool is executed from another application that blindly passes untrusted file
 names on the command line (since they may be interpreted as ExifTool options if
-they have a leading dash).  To be secure, the calling application must ensure
-that input file names do not start with a dash (U+002D) or a Unicode minus sign
+they begin with a dash).  To be secure, the calling application must ensure that
+input file names do not start with a dash (U+002D) or a Unicode minus sign
 (U+2212).  The easiest way to accomplish this is to prefix input file names with
-a known directory name, ie) <code>"./FILENAME"</code>.</p>
+a known directory name, eg.) <code>"./FILENAME"</code>.</p>
 
 <h2><a name="shift">Date/Time Shift Feature</a></h2>
 
 <p>Have you ever forgotten to set the date/time on your digital camera before
 taking a bunch of pictures?  ExifTool has a time shift feature that makes it
-easy to apply a batch fix to the timestamps of the images (ie. change the "Date
+easy to apply a batch fix to the timestamps of the images (eg. change the "Date
 Picture Taken" reported by Windows Explorer).  Say for example that your camera
 clock was reset to 2000:01:01&nbsp;00:00:00 when you put in a new battery at
 2005:11:03&nbsp;10:48:00.  Then all of the pictures you took subsequently have
@@ -1113,6 +1117,7 @@ three droplets to extract information [exiftool must be installed] (thanks to Ro
 <li><a href="http://hugin.sourceforge.net/">Hugin</a>: Panorama photo stitcher</li>
 <li><a href="https://savannah.nongnu.org/projects/fotopreprocessor/">FotoPreProcessor</a>: PyQt4-based frontend for exiftool to graphically edit metadata</li>
 <li><a href="http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4715.0.html">ExZenToo</a>: Script for basic ExifTool GUI using Zenity</li>
+<li><a href="https://github.com/Glutanimate/PDFMtEd">PDFMted</a>: A set of bash scripts for easy viewing and editing of PDF metadata</li>
 </ul>
 
 <p><b><a name="related_multi">Multi-Platform</a></b></p>
@@ -1146,7 +1151,7 @@ three droplets to extract information [exiftool must be installed] (thanks to Ro
 <li><a href="http://regex.info/blog/lightroom-goodies/metadata-wrangler/">Metadata Wrangler</a>: Strip selected metadata components from images as they are exported</li>
 <li><a href="http://www.robcole.com/Rob/ProductsAndServices/ExifMetaLrPlugin/">ExifMeta</a>: Make all exif metadata available in Lightroom for lib filtering and smart collections</li>
 <li><a href="http://chaoliu12.wordpress.com/fullmetaexport-lightroom-plugin/">FullMetaExport</a>: Export JPEG images from Lightroom with full metadata</li>
-<li><a href="http://www.essl.de/wp/2012/05/24/lenstagger-now-with-analog-camera-film-support/">LensTagger</a>:  Add EXIF information like aperture and focal length for manual lenses</li>
+<li><a href="http://www.essl.de/wp/software/lenstagger-lightroom-plugin/">LensTagger</a>:  Add EXIF information like aperture and focal length for manual lenses</li>
 <li><a href="http://tim.jagenberg.info/projects/deaspect/">DeAspect:</a> Remove aspect ratio information from DNG, CR2 and ORF images to restore full image</li>
 </ul>
 
@@ -1158,10 +1163,11 @@ three droplets to extract information [exiftool must be installed] (thanks to Ro
 <li><a href="http://owl.phy.queensu.ca/~phil/exiftool/ExifToolWrapper_cs.zip">Download</a> C# version of simple exiftool wrapper (thanks Willem Semmelink)</li>
 <li><a href="http://owl.phy.queensu.ca/~phil/exiftool/modExiftool_101.zip">Download</a> Visual Basic 6.0 example script v1.01 for reading tags with exiftool (thanks Michael Wandel)</li>
 <li><a href="http://owl.phy.queensu.ca/~phil/exiftool/vb_sample.html">Sample VB.NET subroutine</a> to extract a preview image (thanks Claus Beckmann)</li>
+<li><a href="http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,5857.0.html">ExifToolIO</a>: .NET wrapper for ExifTool, optimized for speed (using VB.NET)</li>
+<li><a href="http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,5262.0.html">ExifToolWrapper</a>: .NET wrapper for ExifTool (using C#)</li>
 <li><a href="http://gitorious.org/mini_exiftool">MiniExiftool</a>: Ruby library wrapper for ExifTool</li>
-<li><a href="https://github.com/mceachen/exiftoolr">exiftoolr</a>: Another Ruby wrapper for ExifTool</li>
+<li><a href="https://github.com/mceachen/exiftoolr">exiftoolr</a>: Ruby wrapper for ExifTool</li>
 <li><a href="http://smarnach.github.com/pyexiftool/">pyexiftool</a>: Python wrapper for ExifTool</li>
-<li><a href="http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,5262.0.html">ExifToolWrapper</a>: .NET wrapper for ExifTool</li>
 <li><a href="https://github.com/romainneutron/PHPExiftool">PHPExiftool</a>: PHP wrapper for ExifTool (in development)</li>
 <li><a href="http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,5381.0.html">ExifTool_PHP_StayOpen</a>: ExifTool PHP fast processing script using -stayOpen and Gearman</li>
 <li><a href="http://sourceforge.net/projects/moss/">Moss</a>: Collection of Java utilities which includes an exiftool interface</li>
@@ -1171,31 +1177,6 @@ three droplets to extract information [exiftool must be installed] (thanks to Ro
 <li><a href="http://u88.n24.queensu.ca/~bogdan/articles/delphi01.html">How to call ExifTool from Delphi</a>, by Bogdan Hrastnik</li>
 </ul>
 
-<h3><a name="references">References</a></h3>
-
-<p>The following sources were very useful in helping to decode various types of
-information:</p>
-
-<ul>
-<li><a href="http://wtwf.com/wwwis/">wwwis Perl utilites</a> by Alex Knowles</li>
-<li><a href="http://park2.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html">http://park2.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html</a></li>
-<li><a href="http://johnst.org/sw/exiftags/">http://johnst.org/sw/exiftags/</a></li>
-<li><a href="http://search.cpan.org/dist/Image-Info/">http://search.cpan.org/dist/Image-Info/</a></li>
-<li><a href="http://www.sentex.net/~mwandel/jhead/">http://www.sentex.net/~mwandel/jhead/</a></li>
-<li><a href="http://cvs.sourceforge.net/viewcvs.py/libexif/libexif/">http://cvs.sourceforge.net/viewcvs.py/libexif/libexif/</a></li>
-<li><a href="http://neuemuenze.heim1.tu-clausthal.de/~sven/crwinfo/">http://neuemuenze.heim1.tu-clausthal.de/~sven/crwinfo/</a></li>
-<li><a href="http://www.cybercom.net/~dcoffin/dcraw/">http://www.cybercom.net/~dcoffin/dcraw/</a></li>
-<li><a href="http://www.dalibor.cz/minolta/makernote.htm">http://www.dalibor.cz/minolta/makernote.htm</a></li>
-<li><a href="http://www.exif.org/Exif2-2.PDF">http://www.exif.org/Exif2-2.PDF</a></li>
-<li><a href="http://www.x3f.info/technotes/FileDocs/MakerNoteDoc.html">http://www.x3f.info/technotes/FileDocs/MakerNoteDoc.html</a></li>
-<li><a href="http://search.cpan.org/dist/Image-MetaData-JPEG/">http://search.cpan.org/dist/Image-MetaData-JPEG/</a></li>
-<li><a href="http://www.adobe.com/products/dng/main.html">http://www.adobe.com/products/dng/main.html</a></li>
-<li><a href="http://www.awaresystems.be/imaging/tiff/tifftags.html">http://www.awaresystems.be/imaging/tiff/tifftags.html</a></li>
-<li><a href="http://homepage3.nifty.com/kamisaka/makernote/index.htm">http://homepage3.nifty.com/kamisaka/makernote/index.htm</a>
-   (<a href="http://www.google.com/translate?u=http%3A%2F%2Fhomepage3.nifty.com%2Fkamisaka%2Fmakernote%2Findex.htm&amp;langpair=ja%7Cen&amp;hl=en&amp;ie=UTF8">in english</a>)</li>
-<li><a href="http://www.gvsoft.homedns.org/exif/">http://www.gvsoft.homedns.org/exif/</a></li>
-</ul>
-
 <h3><a name="other_links">Other Links</a></h3>
 <ul>
 <li><a href="http://www.ebv4linux.de/modules.php?name=News&file=article&sid=26">An interview with Phil Harvey</a> (in German), (<a href="http://owl.phy.queensu.ca/~phil/exiftool/PhilHarveyInterview.pdf">English translation in PDF format</a>)</li>
@@ -116,7 +116,7 @@ varies across the zoom range.  Some manufacturers (Canon, Nikon, Sony) store the
 maximum aperture at the specific focal length, but others (Olympus, Pentax)
 store the absolute maximum aperture of the lens.</li>
 <li>EXIF is not extensible, and is missing definitions for storing some
-information that could be very useful to camera owners (ie. camera orientation,
+information that could be very useful to camera owners (eg. camera orientation,
 sensor temperature, face detection, auto-focus points, image stabilization,
 flash exposure compensation, etc).</li>
 </ol>
@@ -243,7 +243,7 @@ between tag names and structure field names:</p>
 <td class=grn>Yes</td><td class=red>No<sup>&dagger;</sup></td></tr>
 </table>
 <sup class=red>&dagger;</sup> Except that group name prefixes are
-allowed in structures which support arbitrary XMP fields (ie.
+allowed in structures which support arbitrary XMP fields (eg.
 <a href='TagNames/MWG.html#Extensions'>Region Extensions</a>)
 </blockquote>
 
@@ -58,7 +58,7 @@ translate numbers into words for better readability.  The <code>-lang</code>
 this formatting for GPS coordinates and date/time values.</li></ol>
 
 <ol start=2><li>The "<b>ValueConv</b>" value is a numerical value, suitable for
-use in calculations.  Typically, this value is converted to standard units (ie.
+use in calculations.  Typically, this value is converted to standard units (eg.
 degrees, meters, or seconds) to make calculations simpler.  This value is
 returned for all tags when the <code>-n</code> option is used, or for individual
 tags by suffixing the tag name with a <code>#</code> character.</li></ol>
@@ -79,7 +79,7 @@ regular expressions.</p>
 <h3>Current Implementation</h3>
 <p>Currently, ExifTool can write most of the EXIF tags that anyone could reasonably
 want to change (but some tags are protected because they describe physical
-characteristics of the image that you can not change with ExifTool, ie.
+characteristics of the image that you can not change with ExifTool, eg.
 Compression).  Also, all of the GPS, IPTC and XMP information and most of the
 MakerNotes information can be edited.  This gives you great power, but with
 great power, comes great responsibility...</p>
@@ -174,7 +174,7 @@ will simply remove a preview like this when rewriting the file.</p>
 <p>However, as of ExifTool version 5, the preview images are handled properly
 when writing EXIF information in JPEG files.  But for reasons of efficiency, the
 EXIF segment is not edited when writing information if no EXIF tags are being
-changed (ie. if only XMP or IPTC information is being edited).  In this case,
+changed (eg. if only XMP or IPTC information is being edited).  In this case,
 the preview image pointers could be invalidated because the length of the data
 between the EXIF segment (which comes near the start of the file) and the
 preview image (at the end of the file) is likely to change.  ExifTool gets
@@ -147,7 +147,7 @@ NoAFCP: for (;;) {
         if ($verbose > 2 and not $outfile) {
             my $dat = $buff . $dir;
             print $out "  AFCP Directory:\n";
-            Image::ExifTool::HexDump(\$dat, undef,
+            HexDump(\$dat, undef,
                 Addr   => $$dirInfo{DataPos},
                 Width  => 12,
                 Prefix => $$et{INDENT},
@@ -232,7 +232,7 @@ sub ProcessAIFF($$)
             );
         } elsif ($verbose > 2 and $len2 < 1024000) {
             $raf->Read($buff, $len2) == $len2 or $err = 1, last;
-            Image::ExifTool::HexDump(\$buff, undef, MaxLen => 512);
+            HexDump(\$buff, undef, MaxLen => 512);
         } else {
             $raf->Seek($len2, 1) or $err=1, last;
         }
@@ -256,7 +256,7 @@ sub ProcessAPP12($$$)
     pos($$dataPt) = 0;
 
     # this regular expression is a bit complex, but basically we are looking for
-    # section headers (ie. "[Camera Info]") and tag/value pairs (ie. "tag=value",
+    # section headers (eg. "[Camera Info]") and tag/value pairs (eg. "tag=value",
     # where "value" may contain white space), separated by spaces or CR/LF.
     # (APP12 uses CR/LF, but Olympus TextualInfo is similar and uses spaces)
     while ($$dataPt =~ /(\[.*?\]|[\w#-]+=[\x20-\x7e]+?(?=\s*([\n\r\0]|[\w#-]+=|\[|$)))/g) {
@@ -28,7 +28,7 @@ $VERSION = '1.01';
     },
     # 0x0004 - int32s: normally 1, but 0 for low-light images
     # 0x0005 - int32s: seen values 147-247, and 100 for blank images
-    # 0x0006 - int32s: seen values 186-241, and 20 for blank images
+    # 0x0006 - int32s: seen values 129-241, and 20 for blank images
     # 0x0007 - int32s: seen 1
     # 0x0009 - int32s: seen 19
     0x000a => {
@@ -32,7 +32,7 @@ use Image::ExifTool::XMP;
 use Image::ExifTool::Canon;
 use Image::ExifTool::Nikon;
 
-$VERSION = '2.76';
+$VERSION = '2.80';
 @ISA = qw(Exporter);
 
 sub NumbersFirst;
@@ -84,6 +84,7 @@ my %tweakOrder = (
     MinoltaRaw => 'KyoceraRaw',
     KyoceraRaw => 'CanonRaw',
     SigmaRaw => 'PanasonicRaw',
+    Lytro   => 'SigmaRaw',
     PhotoMechanic => 'FotoStation',
     Microsoft     => 'PhotoMechanic',
    'Microsoft::MP'=> 'Microsoft::MP1',
@@ -256,7 +257,7 @@ specification.
 Some GPS tags have values which are fixed-length strings. For these, the
 indicated string lengths include a null terminator which is added
 automatically by ExifTool.  Remember that the descriptive values are used
-when writing (ie. 'Above Sea Level', not '0') unless the print conversion is
+when writing (eg. 'Above Sea Level', not '0') unless the print conversion is
 disabled (with '-n' on the command line or the PrintConv option in the API,
 or by suffixing the tag name with a C<#> character).
 
@@ -303,12 +304,12 @@ has no effect, and both structured and flattened tags may be written.  See
 L<http://owl.phy.queensu.ca/~phil/exiftool/struct.html> for more details.
 
 Individual languages for C<lang-alt> tags are accessed by suffixing the tag
-name with a '-', followed by an RFC 3066 language code (ie. "XMP:Title-fr",
+name with a '-', followed by an RFC 3066 language code (eg. "XMP:Title-fr",
 or "Rights-en-US").  (See L<http://www.ietf.org/rfc/rfc3066.txt> for the RFC
 3066 specification.)  A C<lang-alt> tag with no language code accesses the
 "x-default" language, but causes other languages for this tag to be deleted
 when writing.  The "x-default" language code may be specified when writing
-to preserve other existing languages (ie. "XMP-dc:Description-x-default"). 
+to preserve other existing languages (eg. "XMP-dc:Description-x-default"). 
 When reading, "x-default" is not specified.
 
 The XMP tags are organized according to schema B<Namespace> in the following
@@ -317,7 +318,7 @@ been shortened for convenience (since the family 1 group names are derived
 from these by adding a leading "XMP-").  In cases where a tag name exists in
 more than one namespace, less common namespaces are avoided when writing.
 However, any namespace may be written by specifying a family 1 group name
-for the tag, ie) XMP-exif:Contrast or XMP-crs:Contrast.  When deciding on
+for the tag, eg) XMP-exif:Contrast or XMP-crs:Contrast.  When deciding on
 which tags to add to an image, using standard schemas such as
 L<dc|/XMP dc Tags>, L<xmp|/XMP xmp Tags>, L<iptcCore|/XMP iptcCore Tags>
 and L<iptcExt|/XMP iptcExt Tags> is recommended if possible.
@@ -374,6 +375,13 @@ doesn't include a timezone then the current local timezone offset is used
 (unless written with a combined date/time, in which case the local timezone
 offset at the specified date/time is used, which may be different due to
 changes in daylight savings time).
+
+Note that it is not uncommon for IPTC to be found in non-standard locations
+in JPEG and TIFF-based images.  When reading, the family 1 group name has a
+number added for non-standard IPTC ("IPTC2", "IPTC3", etc), but when writing
+only "IPTC" may be specified as the group.  To keep the IPTC consistent,
+ExifTool updates tags in all existing IPTC locations, but will create a new
+IPTC group only in the standard location.
 },
     Photoshop => q{
 Photoshop tags are found in PSD and PSB files, as well as inside embedded
@@ -495,7 +503,8 @@ Tags in the family 1 "System" group are referred to as "pseudo" tags because
 they don't represent real metadata in the file.  Instead, this information
 is stored in the directory structure of the filesystem.  The five writable
 "pseudo" tags (FileName, Directory, FileModifyDate, FileCreateDate and
-HardLink) may be written without modifying the file itself.
+HardLink) may be written without modifying the file itself.  The TestName
+tag is used for dry run testing of writes to FileName.
 },
     Composite => q{
 The values of the composite tags are B<Derived From> the values of other
@@ -567,6 +576,10 @@ my %shortcutNotes = (
         "unsafe" tags in JPEG images which are normally not copied.  Defined here
         as a shortcut to use when rebuilding JPEG EXIF from scratch
     },
+    LargeTags => q{
+        large binary data tags which may be excluded to reduce memory usage if
+        memory limitations are a problem
+    },
 );
 
 
@@ -1344,7 +1357,7 @@ TagID:  foreach $tagID (@keys) {
 #------------------------------------------------------------------------------
 # Rewrite this file to build the lookup tables
 # Inputs: 0) BuildTagLookup object reference
-#         1) output tag lookup module name (ie. 'lib/Image/ExifTool/TagLookup.pm')
+#         1) output tag lookup module name (eg. 'lib/Image/ExifTool/TagLookup.pm')
 # Returns: true on success
 sub WriteTagLookup($$)
 {
@@ -1813,8 +1826,8 @@ sub CloseHtmlFiles($)
 #------------------------------------------------------------------------------
 # Write the TagName HTML and POD documentation
 # Inputs: 0) BuildTagLookup object reference
-#         1) output pod file (ie. 'lib/Image/ExifTool/TagNames.pod')
-#         2) output html directory (ie. 'html')
+#         1) output pod file (eg. 'lib/Image/ExifTool/TagNames.pod')
+#         2) output html directory (eg. 'html')
 # Returns: true on success
 # Notes: My apologies for the patchwork code, but this is only used to generate the docs.
 sub WriteTagNames($$)
@@ -2074,7 +2087,7 @@ sub WriteTagNames($$)
         $line .= sprintf " %-${wGrp}s", 'Group' if $showGrp;
         $line .= ' Writable';
         print PODFILE $line;
-        $line =~ s/^(\s*\w.{6}\w) /$1\t/;   # change space to tab after long ID label (ie. "Sequence")
+        $line =~ s/^(\s*\w.{6}\w) /$1\t/;   # change space to tab after long ID label (eg. "Sequence")
         $line =~ s/\S/-/g;
         $line =~ s/- -/---/g;
         $line =~ tr/\t/ /;                  # change tab back to space
@@ -82,7 +82,7 @@ sub ProcessSerialData($$$);
 sub ProcessFilters($$$);
 sub SwapWords($);
 
-$VERSION = '3.31';
+$VERSION = '3.35';
 
 # Note: Removed 'USM' from 'L' lenses since it is redundant - PH
 # (or is it?  Ref 32 shows 5 non-USM L-type lenses)
@@ -109,7 +109,7 @@ $VERSION = '3.31';
      6.4 => 'Sigma 28-80mm f/3.5-5.6 II Macro', #47
      7 => 'Canon EF 100-300mm f/5.6L', #15
      8 => 'Canon EF 100-300mm f/5.6 or Sigma or Tokina Lens', #32
-     8.1 => 'Sigma 70-300mm f/4-5.6 [APO] DG Macro', #15 (both APO and non-APO, ref http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,2947.0.html)
+     8.1 => 'Sigma 70-300mm f/4-5.6 [APO] DG Macro', #15 (both APO and non-APO, ref forum2947)
      8.2 => 'Tokina AT-X 242 AF 24-200mm f/3.5-5.6', #15
      9 => 'Canon EF 70-210mm f/4', #32
      9.1 => 'Sigma 55-200mm f/4-5.6 DC', #34
@@ -168,7 +168,7 @@ $VERSION = '3.31';
     37.1 => 'Tamron 70-200mm f/2.8 Di LD IF Macro', #PH
     37.2 => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro Model A20', #38
     37.3 => 'Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical [IF]', #34
-    37.4 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical [IF] Macro', #http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,2937.0.html
+    37.4 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical [IF] Macro', #forum2937
     38 => 'Canon EF 80-200mm f/4.5-5.6', #32
     39 => 'Canon EF 75-300mm f/4-5.6',
     40 => 'Canon EF 28-80mm f/3.5-5.6',
@@ -214,10 +214,10 @@ $VERSION = '3.31';
     137.3 => 'Sigma 18-250mm f/3.5-6.3 DC OS HSM', #PH (also Sigma 18-250mm f/3.5-6.3 DC Macro OS HSM)
     137.4 => 'Sigma 24-70mm f/2.8 IF EX DG HSM', #PH
     137.5 => 'Sigma 18-125mm f/3.8-5.6 DC OS HSM', #PH
-    137.6 => 'Sigma 17-70mm f/2.8-4 DC Macro OS HSM', #http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,2819.0.html (Contemporary version has this ID - PH)
+    137.6 => 'Sigma 17-70mm f/2.8-4 DC Macro OS HSM', #forum2819 (Contemporary version has this ID - PH)
     137.7 => 'Sigma 17-50mm f/2.8 OS HSM', #47
     137.8 => 'Sigma 18-200mm f/3.5-6.3 II DC OS HSM', #PH
-    137.9 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD', #(model B008)http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,3090.0.html
+    137.9 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD', #(model B008)forum3090
    '137.10' => 'Sigma 8-16mm f/4.5-5.6 DC HSM', #50-Zwielicht
    '137.11' => 'Tamron SP 17-50mm f/2.8 XR Di II VC', #50 (model B005)
    '137.12' => 'Tamron SP 60mm f/2 Macro Di II', #50 (model G005)
@@ -259,13 +259,14 @@ $VERSION = '3.31';
     160.1 => 'Tamron AF 19-35mm f/3.5-4.5', #44
     160.2 => 'Tokina AT-X 124 AF Pro DX 12-24mm f/4', #49
     160.3 => 'Tokina AT-X 107 AF DX 10-17mm f/3.5-4.5 Fisheye', #PH (http://osdir.com/ml/digikam-devel/2011-04/msg00275.html)
-    160.4 => 'Tokina AT-X 116 AF Pro DX 11-16mm f/2.8', #http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,3967.0.html
+    160.4 => 'Tokina AT-X 116 AF Pro DX 11-16mm f/2.8', #forum3967
     161 => 'Canon EF 28-70mm f/2.8L or Sigma or Tamron Lens',
     161.1 => 'Sigma 24-70mm f/2.8 EX',
     161.2 => 'Sigma 28-70mm f/2.8 EX', #PH (http://www.breezesys.com/forum/showthread.php?t=3718)
-    161.3 => 'Tamron AF 17-50mm f/2.8 Di-II LD Aspherical', #40
-    161.4 => 'Tamron 90mm f/2.8',
-    161.5 => 'Sigma 24-60mm f/2.8 EX DG', #PH (http://www.lensrentals.com/blog/2012/08/canon-illumination-correction-and-third-party-lenses)
+    161.3 => 'Sigma 24-60mm f/2.8 EX DG', #PH (http://www.lensrentals.com/blog/2012/08/canon-illumination-correction-and-third-party-lenses)
+    161.4 => 'Tamron AF 17-50mm f/2.8 Di-II LD Aspherical', #40
+    161.5 => 'Tamron 90mm f/2.8',
+    161.6 => 'Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF', #52 (A05)
     162 => 'Canon EF 200mm f/2.8L', #32
     163 => 'Canon EF 300mm f/4L', #32
     164 => 'Canon EF 400mm f/5.6L', #32
@@ -280,7 +281,7 @@ $VERSION = '3.31';
     169.4 => 'Sigma 50mm f/1.4 EX DG HSM', #PH
     169.5 => 'Sigma 85mm f/1.4 EX DG HSM', #Rolando Ruzic
     169.6 => 'Sigma 30mm f/1.4 EX DC HSM', #Rodolfo Borges
-    169.7 => 'Sigma 35mm f/1.4 DG HSM', #PH
+    169.7 => 'Sigma 35mm f/1.4 DG HSM', #PH (also "| A" version, ref forum3833)
     170 => 'Canon EF 200mm f/2.8L II', #9
     171 => 'Canon EF 300mm f/4L', #15
     172 => 'Canon EF 400mm f/5.6L', #32
@@ -289,7 +290,7 @@ $VERSION = '3.31';
     173.2 => 'Sigma APO Macro 150mm f/2.8 EX DG HSM', #14
     174 => 'Canon EF 135mm f/2L or Sigma Lens', #9
     174.1 => 'Sigma 70-200mm f/2.8 EX DG APO OS HSM', #PH (probably version II of this lens)
-    174.2 => 'Sigma 50-500mm f/4.5-6.3 APO DG OS HSM', #http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4031.0.html
+    174.2 => 'Sigma 50-500mm f/4.5-6.3 APO DG OS HSM', #forum4031
     174.3 => 'Sigma 150-500mm f/5-6.3 APO DG OS HSM', #47
     175 => 'Canon EF 400mm f/2.8L', #32
     176 => 'Canon EF 24-85mm f/3.5-4.5 USM',
@@ -309,7 +310,7 @@ $VERSION = '3.31';
     187 => 'Canon EF 70-200mm f/4L + 1.4x', #26
     188 => 'Canon EF 70-200mm f/4L + 2x', #PH
     189 => 'Canon EF 70-200mm f/4L + 2.8x', #32
-    190 => 'Canon EF 100mm f/2.8 Macro',
+    190 => 'Canon EF 100mm f/2.8 Macro USM', # (+USM ref 42)
     191 => 'Canon EF 400mm f/4 DO IS', #9
     193 => 'Canon EF 35-80mm f/4-5.6 USM', #32
     194 => 'Canon EF 80-200mm f/4.5-5.6 USM', #32
@@ -328,7 +329,8 @@ $VERSION = '3.31';
     211 => 'Canon EF 28-200mm f/3.5-5.6 USM', #15
     212 => 'Canon EF 28-105mm f/4-5.6 USM', #15
     213 => 'Canon EF 90-300mm f/4.5-5.6 USM or Tamron Lens',
-    213.1 => 'Tamron SP 150-600mm F/5-6.3 Di VC USD', #topic5565 (Model A011)
+    213.1 => 'Tamron SP 150-600mm f/5-6.3 Di VC USD', #topic5565 (model A011)
+    213.2 => 'Tamron 16-300mm f/3.5-6.3 Di II VC PZD Macro', #PH (model B016)
     214 => 'Canon EF-S 18-55mm f/3.5-5.6 USM', #PH/34
     215 => 'Canon EF 55-200mm f/4.5-5.6 II USM',
     217 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD', #47
@@ -363,6 +365,7 @@ $VERSION = '3.31';
     252 => 'Canon EF 70-200mm f/2.8L IS II USM + 1.4x', #50 (1.4x Mk II)
     253 => 'Canon EF 70-200mm f/2.8L IS II USM + 2x', #PH (NC)
     254 => 'Canon EF 100mm f/2.8L Macro IS USM', #42
+    255 => 'Sigma 24-105mm f/4 DG OS HSM | A', #50
     # Note: LensType 488 (0x1e8) is reported as 232 (0xe8) in 7D CameraSettings
     488 => 'Canon EF-S 15-85mm f/3.5-5.6 IS USM', #PH
     489 => 'Canon EF 70-300mm f/4-5.6L IS USM', #Gerald Kapounek
@@ -378,6 +381,7 @@ $VERSION = '3.31';
     503 => 'Canon EF 24mm f/2.8 IS USM', #PH
     504 => 'Canon EF 24-70mm f/4L IS USM', #PH
     505 => 'Canon EF 35mm f/2 IS USM', #PH
+    507 => 'Canon EF 16-35mm f/4L IS USM', #42
     # (STM lenses seem to start with 0x10xx)
     4142 => 'Canon EF-S 18-135mm f/3.5-5.6 IS STM',
     4143 => 'Canon EF-M 18-55mm f/3.5-5.6 IS STM',
@@ -386,6 +390,8 @@ $VERSION = '3.31';
     4146 => 'Canon EF-S 18-55mm f/3.5-5.6 IS STM', #PH
     4147 => 'Canon EF-M 11-22mm f/4-5.6 IS STM', #42
     4148 => 'Canon EF-S 55-250mm f/4-5.6 IS STM', #42
+    4149 => 'Canon EF-M 55-200mm f/4.5-6.3 IS STM', #42
+    4150 => 'Canon EF-S 10-18mm f/4.5-5.6 IS STM', #42
 );
 
 # Canon model ID numbers (PH)
@@ -1584,7 +1590,7 @@ my %binaryDataAttrs = (
         Unknown => 1,
     },
     # 0x4009 (BasePictStyleOfPC)
-    0x4010 => { #http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,2933.0.html
+    0x4010 => { #forum2933
         Name => 'CustomPictureStyleFileName', # (PictStyleCaption)
         Writable => 'string',
     },
@@ -1600,15 +1606,31 @@ my %binaryDataAttrs = (
         },
     },
     # 0x4014 (similar to 0x83?)
-    0x4015 => {
+    0x4015 => [{
         Name => 'VignettingCorr', # (LensPacket)
-        Condition => '$$valPt !~ /^\0\0\0\0/', # (data may be all zeros for 60D)
+        Condition => '$$valPt =~ /^\0/ and $$valPt !~ /^\0\0\0\0/', # (data may be all zeros for 60D)
         SubDirectory => {
             # (the size word is at byte 2 in this structure)
             Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart+2,$size)',
             TagTable => 'Image::ExifTool::Canon::VignettingCorr',
         },
-    },
+    },{
+        Name => 'VignettingCorrUnknown1',
+        Condition => '$$valPt =~ /^[\x01\x02]/ and $$valPt !~ /^\0\0\0\0/',
+        SubDirectory => {
+            # (the size word is at byte 2 in this structure)
+            Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart+2,$size)',
+            TagTable => 'Image::ExifTool::Canon::VignettingCorrUnknown',
+        },
+    },{
+        Name => 'VignettingCorrUnknown2',
+        Condition => '$$valPt !~ /^\0\0\0\0/',
+        SubDirectory => {
+            # (the size word is at byte 4 for version 3 of this structure)
+            Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart+4,$size)',
+            TagTable => 'Image::ExifTool::Canon::VignettingCorrUnknown',
+        },
+    }],
     0x4016 => {
         Name => 'VignettingCorr2', # (ImageCorrectActual)
         SubDirectory => {
@@ -2255,7 +2277,7 @@ my %binaryDataAttrs = (
     9 => {
         Name => 'SequenceNumber',
         Description => 'Shot Number In Continuous Burst',
-        Notes => 'valid only for some models', #PH (ie. not the 5DmkIII)
+        Notes => 'valid only for some models', #PH (eg. not the 5DmkIII)
     },
     10 => { #PH/17
         Name => 'OpticalZoomCode',
@@ -6128,7 +6150,7 @@ my %ciMaxFocal = (
     # (could use better names for these, or the Crop tags above, or both)
     1 => 'CroppedImageWidth',
     2 => 'CroppedImageHeight',
-    3 => 'CroppedImageLeft', #http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4138.0.html
+    3 => 'CroppedImageLeft', #forum4138
     4 => 'CroppedImageTop', #ditto
 );
 
@@ -7050,11 +7072,12 @@ my %ciMaxFocal = (
     FORMAT => 'int16s',
     FIRST_ENTRY => 1,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
-    NOTES => q{
-        This information is found in images from the 1DmkIV, 5DmkII, 7D, 50D, 60D,
-        500D and 550D.
+    NOTES => 'This information is found in images from newer EOS models.',
+    0 => {
+        Name => 'VignettingCorrVersion',
+        Format => 'int8u',
+        Writable => 0,
     },
-    # 0 => 'PeripheralLightingVersion', value = 0x1000
     2 => {
         Name => 'PeripheralLighting',
         PrintConv => { 0 => 'Off', 1 => 'On' },
@@ -7076,6 +7099,19 @@ my %ciMaxFocal = (
     12 => 'OriginalImageHeight',
 );
 
+%Image::ExifTool::Canon::VignettingCorrUnknown = (
+    %binaryDataAttrs,
+    FORMAT => 'int16s',
+    FIRST_ENTRY => 1,
+    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
+    NOTES => 'Vignetting correction from PowerShot models.',
+    0 => {
+        Name => 'VignettingCorrVersion',
+        Format => 'int8u',
+        Writable => 0,
+    },
+);
+
 # More Vignetting correction information (MakerNotes tag 0x4016)
 %Image::ExifTool::Canon::VignettingCorr2 = (
     %binaryDataAttrs,
@@ -7116,7 +7152,7 @@ my %ciMaxFocal = (
     %binaryDataAttrs,
     FIRST_ENTRY => 0,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
-    0 => { # this doesn't seem to be valid for some models (ie. 550D, 7D?, 1DmkIV?)
+    0 => { # this doesn't seem to be valid for some models (eg. 550D, 7D?, 1DmkIV?)
         Name => 'LensSerialNumber',
         Notes => q{
             apparently this is an internal serial number because it doesn't correspond
@@ -7469,7 +7505,7 @@ sub PrintLensID(@)
 {
     my ($printConv, $lensType, $shortFocal, $longFocal, $maxAperture, $lensModel) = @_;
     my $lens;
-    $lens = $$printConv{$lensType} unless $lensType < 0;
+    $lens = $$printConv{$lensType} unless $lensType eq '-1';
     if ($lens) {
         # return this lens unless other lenses have the same LensType
         return LensWithTC($lens, $shortFocal) unless $$printConv{"$lensType.1"};
@@ -7882,7 +7918,7 @@ sub PrintAFPoints1D($)
 #------------------------------------------------------------------------------
 # Convert Canon hex-based EV (modulo 0x20) to real number
 # Inputs: 0) value to convert
-# ie) 0x00 -> 0
+# eg) 0x00 -> 0
 #     0x0c -> 0.33333
 #     0x10 -> 0.5
 #     0x14 -> 0.66666
@@ -19,7 +19,7 @@ use Image::ExifTool qw(:DataAccess);
 use Image::ExifTool::Canon;
 use Image::ExifTool::Exif;
 
-$VERSION = '1.48';
+$VERSION = '1.49';
 
 sub ProcessCanonCustom($$$);
 sub ProcessCanonCustom2($$$);
@@ -1533,6 +1533,7 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
             PrintConv => \%enableDisable,
         },
     ],
+    # 0x0205 - Added in 5DmkII firmware update
     #### 2b) Flash exposure
     0x0304 => {
         Name => 'ETTLII',
@@ -1862,7 +1863,7 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
     0x0516 => { # new for 7D and 1DmkIV
         Name => 'OrientationLinkedAFPoint',
         PrintConv => {
-            0 => 'Same for verical and horizontal',
+            0 => 'Same for vertical and horizontal',
             1 => 'Select different AF points',
         },
     },
@@ -814,7 +814,7 @@ sub ProcessCRW($$)
     # initialize maker note data if building maker notes
     $buildMakerNotes and InitMakerNotes($et);
 
-    # set the FileType tag unless already done (ie. APP0 CIFF record in JPEG image)
+    # set the FileType tag unless already done (eg. APP0 CIFF record in JPEG image)
     $et->SetFileType();
 
     # build directory information for main raw directory
@@ -20,7 +20,7 @@ use strict;
 use vars qw($VERSION);
 use Image::ExifTool qw(:DataAccess :Utils);
 
-$VERSION = '1.22';
+$VERSION = '1.23';
 
 sub ProcessCanonVRD($$;$);
 sub WriteCanonVRD($$;$);
@@ -956,9 +956,11 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
     },
     0xea => {
         Name => 'DLOData',
+        LargeTag => 1, # large tag, so avoid storing unnecessarily
         Notes => 'variable-length Digital Lens Optimizer data, stored in JPEG-like format',
         Format => 'var_undef[$val{0xdf}]',
         Writable => 0,
+        Binary => 1,
         RawConv => 'length($val) ? \$val : undef', # (don't extract if zero length)
     },
 );
@@ -1038,7 +1040,7 @@ sub ProcessEditData($$$)
                     Prefix => $$et{INDENT},
                 );
                 $parms{MaxLen} = $verbose == 3 ? 96 : 2048 if $verbose < 5;
-                Image::ExifTool::HexDump($dataPt, $recLen, %parms);
+                HexDump($dataPt, $recLen, %parms);
             }
         }
 
@@ -1048,52 +1050,53 @@ sub ProcessEditData($$$)
         # process VRD edit information
         my $subTablePtr = GetTagTable('Image::ExifTool::CanonVRD::Edit');
         my $index;
-        my $editData = substr($$dataPt, $pos, $recLen);
         my %subdirInfo = (
-            DataPt => \$editData,
-            DataPos => $dataPos + $pos,
+            DataPt   => $dataPt,
+            DataPos  => $dataPos,
+            DirStart => $pos,
+            DirLen   => $recLen,
         );
-        my $start = 0;
+        my $subStart = 0;
         # loop through various sections of the VRD edit data
         for ($index=0; ; ++$index) {
             my $tagInfo = $$subTablePtr{$index} or last;
-            my $dirLen;
-            my $maxLen = $recLen - $start;
+            my $subLen;
+            my $maxLen = $recLen - $subStart;
             if ($$tagInfo{Size}) {
-                $dirLen = $$tagInfo{Size};
+                $subLen = $$tagInfo{Size};
             } elsif (defined $$tagInfo{Size}) {
-                # get size from int32u at $start
-                last unless $start + 4 <= $recLen;
-                $dirLen = Get32u(\$editData, $start);
-                $start += 4; # skip the length word
+                # get size from int32u at $subStart
+                last unless $subStart + 4 <= $recLen;
+                $subLen = Get32u($dataPt, $subStart + $pos);
+                $subStart += 4; # skip the length word
             } else {
-                $dirLen = $maxLen;
+                $subLen = $maxLen;
             }
-            $dirLen > $maxLen and $dirLen = $maxLen;
-            if ($dirLen) {
+            $subLen > $maxLen and $subLen = $maxLen;
+            if ($subLen) {
                 my $subTable = GetTagTable($tagInfo->{SubDirectory}->{TagTable});
                 my $subName = $$tagInfo{Name};
-                $subdirInfo{DirStart} = $start;
-                $subdirInfo{DirLen} = $dirLen;
+                $subdirInfo{DirStart} = $subStart + $pos;
+                $subdirInfo{DirLen} = $subLen;
                 $subdirInfo{DirName} = $subName;
                 if ($outfile) {
                     # rewrite this section of the VRD edit information
                     $verbose and print $out "  Rewriting Canon $subName\n";
                     my $newVal = $et->WriteDirectory(\%subdirInfo, $subTable);
-                    substr($$dataPt, $pos+$start, $dirLen) = $newVal if $newVal;
+                    substr($$dataPt, $pos+$subStart, $subLen) = $newVal if $newVal;
                 } else {
                     $et->VPrint(0, "$$et{INDENT}$subName (SubDirectory) -->\n");
-                    $et->VerboseDump(\$editData,
-                        Start => $start,
-                        Addr  => $dataPos + $pos + $start,
-                        Len   => $dirLen,
+                    $et->VerboseDump($dataPt,
+                        Start => $pos + $subStart,
+                        Addr  => $dataPos + $pos + $subStart,
+                        Len   => $subLen,
                     );
                     # extract tags from this section of the VRD edit information
                     $et->ProcessDirectory(\%subdirInfo, $subTable);
                 }
             }
             # next section starts at the end of this one
-            $start += $dirLen;
+            $subStart += $subLen;
         }
     }
     if ($outfile) {
@@ -1227,57 +1230,84 @@ sub WriteCanonVRD($$;$)
 # Inputs: 0) ExifTool object reference, 1) dirInfo reference
 # Returns: 1 on success, 0 not valid VRD, or -1 error writing
 # - updates DataPos to point to start of CanonVRD information
-# - updates DirLen to trailer length
+# - updates DirLen to existing trailer length
 sub ProcessCanonVRD($$;$)
 {
     my ($et, $dirInfo, $tagTablePtr) = @_;
     my $raf = $$dirInfo{RAF};
     my $offset = $$dirInfo{Offset} || 0;
     my $outfile = $$dirInfo{OutFile};
+    my $dataPt = $$dirInfo{DataPt};
     my $verbose = $et->Options('Verbose');
     my $out = $et->Options('TextOut');
-    my ($buff, $footer, $header, $created, $err);
-    my ($blockLen, $blockType, $size, %didDir);
-
-    if (not $raf) {
-        my $vrdPt = $$dirInfo{DataPt};
-        unless ($vrdPt) {
+    my ($buff, $created, $err, $blockLen, $blockType, %didDir, $fromFile);
+#
+# The CanonVRD trailer has a 0x1c-byte header and a 0x40-byte footer,
+# each beginning with "CANON OPTIONAL DATA\0" and containing an int32u
+# giving the size of the contained data (at byte 0x18 and 0x14 respectively)
+#
+    if ($raf) {
+        $fromFile = 1;
+    } else {
+        unless ($dataPt) {
             return 1 unless $outfile;
             # create blank VRD data from scratch
             my $blank = "CANON OPTIONAL DATA\0\0\x01\0\0\0\0\0\0" .
                         "CANON OPTIONAL DATA\0" . ("\0" x 42) . "\xff\xd9";
-            $vrdPt = \$blank;
+            $dataPt = \$blank;
             $verbose and printf $out "  Creating CanonVRD trailer\n";
             $created = 1;
         }
-        $raf = new File::RandomAccess($vrdPt);
+        $raf = new File::RandomAccess($dataPt);
     }
-    # read and validate the trailer footer
-    $raf->Seek(-64-$offset, 2)    or return 0;
-    $raf->Read($footer, 64) == 64 or return 0;
-    $footer =~ /^CANON OPTIONAL DATA\0(.{4})/s or return 0;
-    $size = unpack('N', $1);
+    # read and validate the footer
+    $raf->Seek(-0x40-$offset, 2)    or return 0;
+    $raf->Read($buff, 0x40) == 0x40 or return 0;
+    $buff =~ /^CANON OPTIONAL DATA\0(.{4})/s or return 0;
+    my $dirLen = unpack('N', $1) + 0x5c;  # size including header+footer
 
-    # read and validate the header too
-    # (header is 0x1c bytes and footer is 0x40 bytes)
-    unless (($size & 0x80000000) == 0 and
-            $raf->Seek(-$size-0x5c, 1) and
-            $raf->Read($header, 0x1c) == 0x1c and
-            $header =~ /^CANON OPTIONAL DATA\0/ and
-            $raf->Read($buff, $size) == $size)
+    # read and validate the header
+    unless ($dirLen < 0x80000000 and
+            $raf->Seek(-$dirLen, 1) and
+            $raf->Read($buff, 0x1c) == 0x1c and
+            $buff =~ /^CANON OPTIONAL DATA\0/ and
+            $raf->Seek(-0x1c, 1))
     {
         $et->Warn('Bad CanonVRD trailer');
         return 0;
     }
+    # set variables returned in dirInfo hash
+    $$dirInfo{DataPos} = $raf->Tell();
+    $$dirInfo{DirLen} = $dirLen;
+
+    if ($outfile and ref $outfile eq 'SCALAR' and not length $$outfile) {
+        # write directly to outfile to avoid duplicating data in memory
+        $$outfile = $$dataPt unless $fromFile;
+        # TRICKY! -- copy to outfile memory buffer and edit in place
+        # (so we must disable all Write() calls for this case)
+        $dataPt = $outfile;
+    }
+    if ($fromFile) {
+        $dataPt = \$buff unless $dataPt;
+        # read VRD data into memory if necessary
+        unless ($raf->Read($$dataPt, $dirLen) == $dirLen) {
+            $$dataPt = '' if $outfile eq $dataPt;
+            $et->Warn('Error reading CanonVRD data');
+            return 0;
+        }
+    }
+    # exit quickly if writing and no CanonVRD tags are being edited
+    if ($outfile and not exists $$et{EDIT_DIRS}{CanonVRD}) {
+        print $out "$$et{INDENT}  [nothing changed]\n" if $verbose;
+        return 1 if $outfile eq $dataPt;
+        return Write($outfile, $$dataPt) ? 1 : -1;
+    }
     # extract CanonVRD block if copying tags, or if requested
     if (($$et{TAGS_FROM_FILE} and not $$et{EXCL_TAG_LOOKUP}{canonvrd}) or
         $$et{REQ_TAG_LOOKUP}{canonvrd})
     {
-        $et->FoundTag('CanonVRD', $header . $buff . $footer);
+        $et->FoundTag('CanonVRD', $buff);
     }
-    # set variables returned in dirInfo hash
-    $$dirInfo{DataPos} = $raf->Tell() - $size - 0x1c;
-    $$dirInfo{DirLen} = $size + 0x5c;
 
     if ($outfile) {
         $verbose and not $created and printf $out "  Rewriting CanonVRD trailer\n";
@@ -1290,13 +1320,18 @@ sub ProcessCanonVRD($$;$)
                 my $newVal = $et->GetNewValues('CanonVRD');
                 if ($newVal) {
                     $verbose and printf $out "  Writing CanonVRD as a block\n";
-                    Write($outfile, $newVal) or return -1;
+                    if ($outfile eq $dataPt) {
+                        $$outfile = $newVal;
+                    } else {
+                        Write($outfile, $newVal) or return -1;
+                    }
                     ++$$et{CHANGED};
                 } else {
                     $et->Error("Can't delete all CanonVRD information from a VRD file");
                 }
             } else {
                 $verbose and printf $out "  Deleting CanonVRD trailer\n";
+                $$outfile = '' if $outfile eq $dataPt;
                 ++$$et{CHANGED};
             }
             return 1;
@@ -1305,7 +1340,11 @@ sub ProcessCanonVRD($$;$)
         my $val = $et->GetNewValues('CanonVRD');
         if ($val) {
             $verbose and print $out "  Writing CanonVRD as a block\n";
-            Write($outfile, $val) or return -1;
+            if ($outfile eq $dataPt) {
+                $$outfile = $val;
+            } else {
+                Write($outfile, $val) or return -1;
+            }
             ++$$et{CHANGED};
             return 1;
         }
@@ -1317,36 +1356,35 @@ sub ProcessCanonVRD($$;$)
 
     # validate VRD trailer and get position and length of edit record
     SetByteOrder('MM');
-    my $pos = 0;
-    my $vrdPos = $$dirInfo{DataPos} + length($header);
-    my $dataPt = \$buff;
+    my $pos = 0x1c; # start at end of header
 
     # loop through the VRD blocks
     for (;;) {
-        if ($pos + 8 > $size) {
-            last if $pos == $size;
-            $blockLen = $size;  # mark as invalid
+        my $end = $dirLen - 0x40;   # end of last VRD block (and start of footer)
+        if ($pos + 8 > $end) {
+            last if $pos == $end;
+            $blockLen = $end;       # mark as invalid
         } else {
             $blockType = Get32u($dataPt, $pos);
             $blockLen = Get32u($dataPt, $pos + 4);
         }
-        $pos += 8;          # move to start of block
-        if ($pos + $blockLen > $size) {
+        $pos += 8;  # move to start of block
+        if ($pos + $blockLen > $end) {
             $et->Warn('Possibly corrupt CanonVRD block');
             last;
         }
         if ($verbose > 1 and not $outfile) {
             printf $out "  CanonVRD block 0x%.8x ($blockLen bytes at offset 0x%x)\n",
-                $blockType, $pos + $vrdPos;
+                $blockType, $pos + $$dirInfo{DataPos};
             if ($verbose > 2) {
                 my %parms = (
                     Start  => $pos,
-                    Addr   => $pos + $vrdPos,
+                    Addr   => $pos + $$dirInfo{DataPos},
                     Out    => $out,
                     Prefix => $$et{INDENT},
                 );
                 $parms{MaxLen} = $verbose == 3 ? 96 : 2048 if $verbose < 5;
-                Image::ExifTool::HexDump($dataPt, $blockLen, %parms);
+                HexDump($dataPt, $blockLen, %parms);
             }
         }
         my $tagInfo = $$tagTablePtr{$blockType};
@@ -1370,7 +1408,7 @@ sub ProcessCanonVRD($$;$)
             my %subdirInfo = (
                 DataPt   => $dataPt,
                 DataLen  => length $$dataPt,
-                DataPos  => $vrdPos,
+                DataPos  => $$dirInfo{DataPos},
                 DirStart => $pos,
                 DirLen   => $blockLen,
                 DirName  => $$tagInfo{Name},
@@ -1380,7 +1418,7 @@ sub ProcessCanonVRD($$;$)
             if ($outfile) {
                 # set flag indicating we did this directory
                 $didDir{$$tagInfo{Name}} = 1;
-                my $dat;
+                my ($dat, $diff);
                 if ($$et{NEW_VALUE}{$tagInfo}) {
                     # write as a block
                     $et->VPrint(0, "Writing $$tagInfo{Name} as a block\n");
@@ -1392,23 +1430,21 @@ sub ProcessCanonVRD($$;$)
                 }
                 # update data with new directory
                 if (defined $dat) {
-                    my $buf2;
                     if (length $dat or $$et{FILE_TYPE} !~ /^(CRW|VRD)$/) {
                         # replace with new block (updating the block length word)
-                        $buf2 = substr($$dataPt, 0, $pos - 4) . Set32u(length $dat) . $dat;
+                        substr($$dataPt, $pos-4, $blockLen+4) = Set32u(length $dat) . $dat;
                     } else {
                         # remove block totally (CRW/VRD files only)
-                        $buf2 = substr($$dataPt, 0, $pos - 8);
+                        substr($$dataPt, $pos-8, $blockLen+8) = '';
+                    }
+                    # make necessary adjustments if block changes length
+                    if (($diff = length($$dataPt) - $dirLen) != 0) {
+                        $pos += $diff;
+                        $dirLen += $diff;
+                        # update the new VRD length in the header/footer
+                        Set32u($dirLen - 0x5c, $dataPt, 0x18);
+                        Set32u($dirLen - 0x5c, $dataPt, $dirLen - 0x2c);
                     }
-                    my $oldBlockEnd = $pos + $blockLen;
-                    $pos = length $$dataPt; # set to start of next block
-                    $buf2 .= substr($$dataPt, $oldBlockEnd);
-                    undef $$dataPt;         # free the memory
-                    $dataPt = \$buf2;
-                    # update the new VRD length in the header/footer
-                    Set32u(length($buf2), \$header, 0x18);
-                    Set32u(length($buf2), \$footer, 0x14);
-                    next;
                 }
             } else {
                 # extract as a block if requested
@@ -1425,20 +1461,22 @@ sub ProcessCanonVRD($$;$)
             my $subTablePtr = GetTagTable('Image::ExifTool::XMP::Main');
             my $dat = $et->WriteDirectory({ Parent => 'CanonVRD' }, $subTablePtr);
             if ($dat) {
-                $$dataPt .= Set32u(0xffff00f6) . Set32u(length $dat) . $dat;
+                my $blockLen = length $dat;
+                substr($$dataPt, -0x40, 0) = Set32u(0xffff00f6) . Set32u(length $dat) . $dat;
+                $dirLen = length $$dataPt;
                 # update the new VRD length in the header/footer
-                Set32u(length($$dataPt), \$header, 0x18);
-                Set32u(length($$dataPt), \$footer, 0x14);
+                Set32u($dirLen - 0x5c, $dataPt, 0x18);
+                Set32u($dirLen - 0x5c, $dataPt, $dirLen - 0x2c);
             }
         }
         # write CanonVRD trailer unless it is empty
         if (length $$dataPt) {
-            Write($outfile, $header, $$dataPt, $footer) or $err = 1;
+            Write($outfile, $$dataPt) or $err = 1 unless $outfile eq $dataPt;
         } else {
             $verbose and printf $out "  Deleting CanonVRD trailer\n";
         }
     }
-    undef $$dataPt;
+    undef $buff;
     return $err ? -1 : 1;
 }
 
@@ -21,7 +21,7 @@ use strict;
 use vars qw($VERSION);
 use Image::ExifTool::Exif;
 
-$VERSION = '1.34';
+$VERSION = '1.36';
 
 # older Casio maker notes (ref 1)
 %Image::ExifTool::Casio::Main = (
@@ -236,9 +236,9 @@ $VERSION = '1.34';
             4 => 'Near Left/Right of Center',
             5 => 'Far Left/Right of Center',
             6 => 'Far Left/Right of Center/Bottom',
-            7 => 'Top Near-Left',
+            7 => 'Top Near-left',
             8 => 'Near Upper/Left',
-            9 => 'Top Near-Right',
+            9 => 'Top Near-right',
             10 => 'Top Left',
             11 => 'Top Center',
             12 => 'Top Right',
@@ -1510,6 +1510,50 @@ $VERSION = '1.34';
             # this camera also supports 100 modes that you can apparently load
             # from a CD-ROM, but I don't know how these map into these numbers
         },
+    },{ #Manfred, email
+        Name => 'BestShotMode',
+        Writable => 'int16u',
+        Condition => '$$self{Model} eq "EX-ZR300"',
+        Notes => 'EX-ZR300',
+        PrintConvColumns => 2,
+        PrintConv => {
+            1 => 'High Speed Night Shot',
+            2 => 'Blurred Background',
+            3 => 'Toy Camera',
+            4 => 'Soft Focus',
+            5 => 'Light Tone',
+            6 => 'Pop',
+            7 => 'Sepia',
+            8 => 'Monochrome',
+            9 => 'Miniature',
+            10 => 'Wide Shot',
+            11 => 'High Speed Best Selection',
+            12 => 'Lag Correction',
+            13 => 'High Speed Night Scene',
+            14 => 'High Speed Night Scene and Portrait',
+            15 => 'High Speed Anti Shake',
+            16 => 'Portrait',
+            17 => 'Scenery',
+            18 => 'Portrait with Scenery',
+            19 => 'Children',
+            20 => 'Sports',
+            21 => 'Candlelight Portrait',
+            22 => 'Party',
+            23 => 'Pet',
+            24 => 'Flower',
+            25 => 'Natural Green',
+            26 => 'Autumn Leaves',
+            27 => 'Soft Flowing Water',
+            28 => 'Splashing Water',
+            29 => 'Sundown',
+            30 => 'Fireworks',
+            31 => 'Food',
+            32 => 'Text',
+            33 => 'Collection',
+            34 => 'Auction',
+            35 => 'Prerecord (Movie)',
+            36 => 'For YouTube',
+        },
     },{
         Name => 'BestShotMode',
         Writable => 'int16u',
@@ -51,7 +51,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::MakerNotes;
 
-$VERSION = '3.64';
+$VERSION = '3.65';
 
 sub ProcessExif($$$);
 sub WriteExif($$$);
@@ -1556,6 +1556,7 @@ my %sampleFormat = (
         },
     },
     0x9102 => 'CompressedBitsPerPixel',
+    # 0x9103 - int16u: 1 (found in Pentax XG-1 samples)
     0x9201 => {
         Name => 'ShutterSpeedValue',
         Notes => 'displayed in seconds, but stored as an APEX value',
@@ -3199,7 +3200,7 @@ sub CalcScaleFactor35efl
             my %lkup = ( 3=>10, 4=>1, 5=>0.001 , cm=>10, mm=>1, um=>0.001 );
             my $units = $lkup{ shift() || $res || '' } || 25.4;
             my $x_res = shift || return undef;
-            my $y_res = shift || return undef;
+            my $y_res = shift || $x_res;
             Image::ExifTool::IsFloat($x_res) and $x_res != 0 or return undef;
             Image::ExifTool::IsFloat($y_res) and $y_res != 0 or return undef;
             my ($w, $h);
@@ -3655,7 +3656,7 @@ sub PrintLensID($$@)
     return join(' or ', @best) if @best;
     return join(' or ', @matches) if @matches;
     $lens = $$printConv{$lensType};
-    return $lensModel if $lensModel and $lens =~ / or /; # (ie. Sony NEX-5N)
+    return $lensModel if $lensModel and $lens =~ / or /; # (eg. Sony NEX-5N)
     return $lens;
 }
 
@@ -3681,7 +3682,7 @@ sub ExifDate($)
 # Returns: time in format '10:30:55'
 # - bad formats recognized: '10 30 55', '103055', '103055+0500'
 # - removes null terminator if it exists
-# - leaves time zone intact if specified (ie. '10:30:55+05:00')
+# - leaves time zone intact if specified (eg. '10:30:55+05:00')
 sub ExifTime($)
 {
     my $time = shift;
@@ -3949,7 +3950,7 @@ sub ProcessExif($$$)
                 my $buff;
                 if ($raf) {
                     # avoid loading large binary data unless necessary
-                    # (ie. ImageSourceData -- layers in Photoshop TIFF image)
+                    # (eg. ImageSourceData -- layers in Photoshop TIFF image)
                     while ($size > BINARY_DATA_LIMIT) {
                         if ($tagInfo) {
                             # make large unknown blocks binary data
@@ -136,7 +136,7 @@ Image::ExifTool::AddCompositeTags('Image::ExifTool::FLAC');
 # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
 # Notes: Byte order is used to determine the ordering of bits in the stream:
 # 'MM' = bit 0 is most significant, 'II' = bit 0 is least significant
-# - can handle arbitrarily wide values (ie. 8-byte or larger integers)
+# - can handle arbitrarily wide values (eg. 8-byte or larger integers)
 sub ProcessBitStream($$$)
 {
     my ($et, $dirInfo, $tagTablePtr) = @_;
@@ -429,7 +429,7 @@ my %float8g = ( Format => 'float', PrintConv => 'sprintf("%.8g",$val)' );
     0x114 => { Name => 'CameraSoftware',    Format => 'string[16]' }, #1/PH (NC)
     0x170 => { Name => 'LensModel',         Format => 'string[32]' },
     # note: it seems that FLIR updated their lenses at some point, so lenses with the same
-    # name may have different part numbers (ie. the FOL38 is either 1196456 or T197089)
+    # name may have different part numbers (eg. the FOL38 is either 1196456 or T197089)
     0x190 => { Name => 'LensPartNumber',    Format => 'string[16]' },
     0x1a0 => { Name => 'LensSerialNumber',  Format => 'string[16]' },
     0x1b4 => { Name => 'FieldOfView',       Format => 'float', PrintConv => 'sprintf("%.1f deg", $val)' }, #1
@@ -1238,7 +1238,7 @@ sub GetImageType($$$)
 sub UnescapeFLIR($)
 {
     my $char = shift;
-    return $char unless length $char eq 4; # escaped ASCII char (ie. '\\')
+    return $char unless length $char eq 4; # escaped ASCII char (eg. '\\')
     my $val = hex $char;
     return chr($val) if $val < 0x80;   # simple ASCII
     return pack('C0U', $val) if $] >= 5.006001;
@@ -1310,7 +1310,7 @@ sub ProcessMeasInfo($$$)
         my $pre = 'Meas' . $i;
         $et->VerboseDir("MeasInfo $i", undef, $recLen);
         if ($verbose > 2) {
-            Image::ExifTool::HexDump($dataPt, $recLen,
+            HexDump($dataPt, $recLen,
                 Start=>$pos, Prefix=>$$et{INDENT}, DataPos=>$dataPos);
         }
         my $coordLen = Get16u($dataPt, $pos+4);
@@ -1445,7 +1445,7 @@ sub ProcessFLIR($$;$)
         } elsif ($verbose > 2) {
             my %parms = ( DataPos => $recPos, Prefix => $$et{INDENT} );
             $parms{MaxLen} = 96 if $verbose < 4;
-            Image::ExifTool::HexDump(\$rec, $recLen, %parms);
+            HexDump(\$rec, $recLen, %parms);
         }
     }
     delete $$et{SET_GROUP0};
@@ -19,7 +19,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 use Image::ExifTool::ASF;   # for GetGUID()
 
-$VERSION = '1.22';
+$VERSION = '1.25';
 
 sub ProcessFPX($$);
 sub ProcessFPXR($$$);
@@ -298,7 +298,8 @@ my %fpxFileType = (
         "file allocation table" (FAT).  No wonder this image format never became
         popular.  However, some of the structures used in FlashPix streams are part
         of the EXIF specification, and are still being used in the APP2 FPXR segment
-        of JPEG images by some Kodak and Hewlett-Packard digital cameras.
+        of JPEG images by some digital cameras from manufacturers such as FujiFilm,
+        Hewlett-Packard, Kodak and Sanyo.
 
         ExifTool extracts FlashPix information from both FPX images and the APP2
         FPXR segment of JPEG images.  As well, FlashPix information is extracted
@@ -370,20 +371,20 @@ my %fpxFileType = (
         },
     },
 #   'Subimage 0000 Data'
-    "\x05Data Object" => {  # plus instance number (ie. " 000000")
+    "\x05Data Object" => {  # plus instance number (eg. " 000000")
         Name => 'DataObject',
         SubDirectory => {
             TagTable => 'Image::ExifTool::FlashPix::DataObject',
         },
     },
-#   "\x05Data Object Store" => { # plus instance number (ie. " 000000")
-    "\x05Transform" => {    # plus instance number (ie. " 000000")
+#   "\x05Data Object Store" => { # plus instance number (eg. " 000000")
+    "\x05Transform" => {    # plus instance number (eg. " 000000")
         Name => 'Transform',
         SubDirectory => {
             TagTable => 'Image::ExifTool::FlashPix::Transform',
         },
     },
-    "\x05Operation" => {    # plus instance number (ie. " 000000")
+    "\x05Operation" => {    # plus instance number (eg. " 000000")
         Name => 'Operation',
         SubDirectory => {
             TagTable => 'Image::ExifTool::FlashPix::Operation',
@@ -395,7 +396,7 @@ my %fpxFileType = (
             TagTable => 'Image::ExifTool::FlashPix::GlobalInfo',
         },
     },
-    "\x05Screen Nail" => { # plus class ID (ie. "_bd0100609719a180")
+    "\x05Screen Nail" => { # plus class ID (eg. "_bd0100609719a180")
         Name => 'ScreenNail',
         Groups => { 2 => 'Other' },
         # strip off stream header
@@ -407,7 +408,7 @@ my %fpxFileType = (
             TagTable => 'Image::ExifTool::FlashPix::AudioInfo',
         },
     },
-    'Audio Stream' => { # plus instance number (ie. " 000000")
+    'Audio Stream' => { # plus instance number (eg. " 000000")
         Name => 'AudioStream',
         Groups => { 2 => 'Audio' },
         # strip off stream header
@@ -424,6 +425,24 @@ my %fpxFileType = (
             return substr($val, 8 + $pos, $len);
         },
     },
+    Preview => {
+        Name => 'PreviewImage',
+        Binary => 1,
+        Notes => 'written by some FujiFilm models',
+        # skip 47-byte Fuji header
+        RawConv => q{
+            return undef unless length $val > 47;
+            $val = substr($val, 47);
+            return $val =~ /^\xff\xd8\xff/ ? $val : undef;
+        },
+    },
+    Property => {
+        Name => 'PreviewInfo',
+        SubDirectory => {
+            TagTable => 'Image::ExifTool::FlashPix::PreviewInfo',
+            ByteOrder => 'BigEndian',
+        },
+    },
 );
 
 # Summary Information properties
@@ -984,6 +1003,26 @@ my %fpxFileType = (
     },
 );
 
+# FujiFilm "Property" information (ref PH)
+%Image::ExifTool::FlashPix::PreviewInfo = (
+    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
+    GROUPS => { 2 => 'Image' },
+    NOTES => 'Preview information written by some FujiFilm models.',
+    FIRST_ENTRY => 0,
+    # values are all constant for for my samples except the two decoded tags
+    # 0x0000: 01 01 00 00 02 01 00 00 00 00 00 00 00 xx xx 01
+    # 0x0010: 01 00 00 00 00 00 00 xx xx 00 00 00 00 00 00 00
+    # 0x0020: 00 00 00 00 00
+    0x0d => {
+        Name => 'PreviewImageWidth',
+        Format => 'int16u',
+    },
+    0x17 => {
+        Name => 'PreviewImageHeight',
+        Format => 'int16u',
+    },
+);
+
 # composite FlashPix tags
 %Image::ExifTool::FlashPix::Composite = (
     GROUPS => { 2 => 'Image' },
@@ -1085,9 +1124,24 @@ sub ReadFPXValue($$$$$;$$)
                 # convert from time in 100 ns increments to time in seconds
                 $val = 1e-7 * Image::ExifTool::Get64u($dataPt, $valPos);
                 # print as date/time if value is greater than one year (PH hack)
-                if ($val > 365 * 24 * 3600) {
+                my $secDay = 24 * 3600;
+                if ($val > 365 * $secDay) {
                     # shift from Jan 1, 1601 to Jan 1, 1970
-                    $val -= 134774 * 24 * 3600;
+                    my $unixTimeZero = 134774 * $secDay;
+                    $val -= $unixTimeZero;
+                    # there are a lot of bad programmers out there...
+                    my $sec100yr = 100 * 365 * $secDay;
+                    if ($val < 0 || $val > $sec100yr) {
+                        # some software writes the wrong byte order (but the proper word order)
+                        my @w = unpack("x${valPos}NN", $$dataPt);
+                        my $v2 = ($w[0] + $w[1] * 4294967296) * 1e-7 - $unixTimeZero;
+                        if ($v2 > 0 && $v2 < $sec100yr) {
+                            $val = $v2;
+                        # also check for wrong time base
+                        } elsif ($val < 0 && $val + $unixTimeZero > 0) {
+                            $val += $unixTimeZero;
+                        }
+                    }
                     $val = Image::ExifTool::ConvertUnixTime($val);
                 }
             } elsif ($format eq 'VT_DATE') {
@@ -1412,6 +1466,14 @@ sub ProcessFPXR($$$)
                 # unpack class ID in case we want to use it sometime
                 $classID = Image::ExifTool::ASF::GetGUID($1);
             }
+            # find the tagInfo if available
+            my $tagInfo;
+            unless ($$tagTablePtr{$name}) {
+                # remove instance number or class ID from tag if necessary
+                $tagInfo = $et->GetTagInfo($tagTablePtr, $1) if
+                    ($name =~ /(.*) \d{6}$/s and $$tagTablePtr{$1}) or
+                    ($name =~ /(.*)_[0-9a-f]{16}$/s and $$tagTablePtr{$1});
+            }
             # update position in list
             $pos = pos($$dataPt);
             # add to our contents list
@@ -1420,6 +1482,7 @@ sub ProcessFPXR($$$)
                 Size => $size,
                 Default => $default,
                 ClassID => $classID,
+                TagInfo => $tagInfo,
             };
         }
         # save contents list as $et member variable
@@ -1439,47 +1502,31 @@ sub ProcessFPXR($$$)
                 # (in my sample images, this isn't always zero as one would expect)
                 $$obj{Stream} = substr($$dataPt, $dirStart+13);
             } else {
-                # add data to the stream at the proper offset
-                my $pad = $offset - length($$obj{Stream});
-                if ($pad >= 0) {
-                    if ($pad) {
-                        if ($pad > 0x10000) {
-                            $et->Warn("Bad FPXR stream offset ($offset)");
-                        } else {
-                            # pad with default value to specified offset
-                            $et->Warn("Padding FPXR stream with $pad default bytes",1);
-                            $$obj{Stream} .= ($$obj{Default} x $pad);
-                        }
-                    }
-                    # concatenate data with this stream
-                    $$obj{Stream} .= substr($$dataPt, $dirStart+13);
+                # add data at the proper offset to the stream
+                my $overlap = length($$obj{Stream}) - $offset;
+                my $start = $dirStart + 13;
+                if ($overlap < 0 or $dirLen - $overlap < 13) {
+                    $et->WarnOnce("Bad FPXR stream $index offset",1);
                 } else {
-                    $et->Warn("Duplicate FPXR stream data at offset $offset");
-                    substr($$obj{Stream}, $offset, -$pad) = substr($$dataPt, $dirStart+13);
+                    # ignore any overlapping data in this segment
+                    # (this seems to be the convention)
+                    $start += $overlap;
                 }
+                # concatenate data with this stream
+                $$obj{Stream} .= substr($$dataPt, $start);
             }
             # save value for this tag if stream is complete
             my $len = length $$obj{Stream};
             if ($len >= $$obj{Size}) {
-                if ($verbose) {
-                    $et->VPrint(0, "  + [FPXR stream, Contents index $index, $len bytes]\n");
-                }
+                $et->VPrint(0, "  + [FPXR stream $index, $len bytes]\n") if $verbose;
                 if ($len > $$obj{Size}) {
                     $et->Warn('Extra data in FPXR segment (truncated)');
                     $$obj{Stream} = substr($$obj{Stream}, 0, $$obj{Size});
                 }
-                my $tag = $$obj{Name};
-                my $tagInfo;
-                unless ($$tagTablePtr{$tag}) {
-                    # remove instance number or class ID from tag if necessary
-                    $tagInfo = $et->GetTagInfo($tagTablePtr, $1) if
-                        ($tag =~ /(.*) \d{6}$/s and $$tagTablePtr{$1}) or
-                        ($tag =~ /(.*)_[0-9a-f]{16}$/s and $$tagTablePtr{$1});
-                }
-                # save the data for this tag
-                $et->HandleTag($tagTablePtr, $tag, $$obj{Stream},
+                # handle this tag
+                $et->HandleTag($tagTablePtr, $$obj{Name}, $$obj{Stream},
                     DataPt => \$$obj{Stream},
-                    TagInfo => $tagInfo,
+                    TagInfo => $$obj{TagInfo},
                 );
                 delete $$obj{Stream}; # done with this stream
             }
@@ -1487,12 +1534,9 @@ sub ProcessFPXR($$$)
         } elsif ($index == 512 and $dirLen > 60 and ($$et{FujiPreview} or
             ($dirLen > 64 and substr($$dataPt, $dirStart+60, 4) eq "\xff\xd8\xff\xdb")))
         {
-            # recombine PreviewImage, skipping unknown 60 byte header
-            if ($$et{FujiPreview}) {
-                $$et{FujiPreview} .= substr($$dataPt, $dirStart+60);
-            } else {
-                $$et{FujiPreview} = substr($$dataPt, $dirStart+60);
-            }
+            $$et{FujiPreview} = '' unless defined $$et{FujiPreview};
+            # recombine PreviewImage, skipping 13-byte FPXR header + 47-byte Fuji header
+            $$et{FujiPreview} .= substr($$dataPt, $dirStart+60);
         } else {
             # (Kodak uses index 255 for a free segment in images from some cameras)
             $et->Warn("Unlisted FPXR segment (index $index)") if $index != 255;
@@ -1508,10 +1552,13 @@ sub ProcessFPXR($$$)
     if ($$dirInfo{LastFPXR}) {
         if ($$et{FPXR}) {
             my $obj;
-            my $i = 0;
             foreach $obj (@{$$et{FPXR}}) {
-                $et->Warn("Missing stream for FPXR object $i") if defined $$obj{Stream};
-                ++$i;
+                next unless defined $$obj{Stream} and length $$obj{Stream};
+                # parse it even though it isn't the proper length
+                $et->HandleTag($tagTablePtr, $$obj{Name}, $$obj{Stream},
+                    DataPt => \$$obj{Stream},
+                    TagInfo => $$obj{TagInfo},
+                );
             }
             delete $$et{FPXR};    # delete our temporary variables
         }
@@ -1647,11 +1694,11 @@ sub ProcessFPX($$)
     }
     if ($verbose) {
         print $out "  FAT [",length($fat)," bytes]:\n";
-        Image::ExifTool::HexDump(\$fat, undef, %dumpParms) if $verbose > 2;
+        HexDump(\$fat, undef, %dumpParms) if $verbose > 2;
         print $out "  Mini-FAT [",length($miniFat)," bytes]:\n";
-        Image::ExifTool::HexDump(\$miniFat, undef, %dumpParms) if $verbose > 2;
+        HexDump(\$miniFat, undef, %dumpParms) if $verbose > 2;
         print $out "  Directory [",length($dir)," bytes]:\n";
-        Image::ExifTool::HexDump(\$dir, undef, %dumpParms) if $verbose > 2;
+        HexDump(\$dir, undef, %dumpParms) if $verbose > 2;
     }
 #
 # process the directory
@@ -215,7 +215,7 @@ my %ttCharset = (
     NOTES => q{
         The following tags are extracted from the TrueType font "name" table found
         in OTF, TTF, TTC and DFONT files.  These tags support localized languages by
-        adding a hyphen followed by a language code to the end of the tag name (ie.
+        adding a hyphen followed by a language code to the end of the tag name (eg.
         "Copyright-fr" or "License-en-US").  Tags with no language code use the
         default language of "en".
     },
@@ -79,7 +79,7 @@ my %faceCategories = (
             this number is unique, and contains the date of manufacture, but doesn't
             necessarily correspond to the camera body number -- this needs to be checked
         },
-        # ie)  "FPX20017035 592D31313034060427796060110384"
+        # eg)  "FPX20017035 592D31313034060427796060110384"
         # "FPX 20495643     592D313335310701318AD010110047" (F40fd)
         #                               yymmdd
         PrintConv => q{
@@ -396,7 +396,7 @@ my %faceCategories = (
     0x1304 => { #PH
         Name => 'GEImageSize',
         Condition => '$$self{Make} =~ /^GENERAL IMAGING/',
-        Format => 'string',
+        Writable => 'string',
         Notes => 'GE models only',
     },
     0x1400 => { #2
@@ -484,7 +484,7 @@ my %faceCategories = (
     },
     0x1436 => { #8
         Name => 'ImageGeneration',
-        Format => 'int16u',
+        Writable => 'int16u',
         PrintConv => {
             0 => 'Original Image',
             1 => 'Re-developed from RAW',
@@ -635,6 +635,52 @@ my %faceCategories = (
             return $val;
         },
     },
+    0x2000 => { #9
+        Name => 'WB_GRGBLevelsAuto',
+        Format => 'int16u',
+        Count => 4, # (ignore the duplicate values)
+    },
+    0x2100 => { #9
+        Name => 'WB_GRGBLevelsDaylight',
+        Format => 'int16u',
+        Count => 4,
+    },
+    0x2200 => { #9
+        Name => 'WB_GRGBLevelsCloudy',
+        Format => 'int16u',
+        Count => 4,
+    },
+    0x2300 => { #9
+        Name => 'WB_GRGBLevelsDaylightFluor',
+        Format => 'int16u',
+        Count => 4,
+    },
+    0x2301 => { #9
+        Name => 'WB_GRGBLevelsDayWhiteFluor',
+        Format => 'int16u',
+        Count => 4,
+    },
+    0x2302 => { #9
+        Name => 'WB_GRGBLevelsWhiteFluorescent',
+        Format => 'int16u',
+        Count => 4,
+    },
+    0x2310 => { #9
+        Name => 'WB_GRGBLevelsWarmWhiteFluor',
+        Format => 'int16u',
+        Count => 4,
+    },
+    0x2311 => { #9
+        Name => 'WB_GRGBLevelsLivingRoomWarmWhiteFluor',
+        Format => 'int16u',
+        Count => 4,
+    },
+    0x2400 => { #9
+        Name => 'WB_GRGBLevelsTungsten',
+        Format => 'int16u',
+        Count => 4,
+    },
+    # 0x2f00 => WB_GRGBLevelsCustom: int32u count, then count * (int16u GRGBGRGB), ref 9
     0x2ff0 => {
         Name => 'WB_GRGBLevels',
         Format => 'int16u',
@@ -18,6 +18,7 @@ $VERSION = '1.00';
 sub ProcessGE2($$$);
 
 # GE type 1 maker notes (ref PH)
+# (similar to Kodak::Type11 and Ricoh::Type2)
 %Image::ExifTool::GE::Main = (
     WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
     CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
@@ -276,7 +276,7 @@ Block:
             while ($length) {
                 last unless $raf->Read($buff, $length) == $length;
                 if ($verbose > 2 and not $outfile) {
-                    Image::ExifTool::HexDump(\$buff, undef, Out => $out);
+                    HexDump(\$buff, undef, Out => $out);
                 }
                 # add buffer to comment string
                 $comment .= $buff;
@@ -129,6 +129,7 @@ my %coordConv = (
         },
         ValueConv => 'Image::ExifTool::GPS::ConvertTimeStamp($val)',
         ValueConvInv => '$val=~tr/:/ /;$val',
+        PrintConv => 'Image::ExifTool::GPS::PrintTimeStamp($val)',
         # pull time out of any format date/time string
         # (converting to UTC if a timezone is given)
         PrintConvInv => sub {
@@ -333,7 +334,8 @@ my %coordConv = (
         PrintConvInv => '$val=~s/\s*m$//; $val',
         Writable => 'rational64u',
     },
-    # 0xea1c - Nokia Lumina 1020 writes this (padding) in GPS IFD - PH
+    # 0xea1c - Nokia Lumina 1020, Samsung GT-I8750, and other Windows 8
+    #          phones write this (padding) in GPS IFD - PH
 );
 
 # Composite GPS tags
@@ -408,13 +410,26 @@ sub ConvertTimeStamp($)
     $h = int($f / 3600); $f -= $h * 3600;
     $m = int($f / 60);   $f -= $m * 60;
     $s = int($f);        $f -= $s;
-    $f = int($f * 1000000 + 0.5);
+    $f = int($f * 1000000000 + 0.5);
     if ($f) {
-        ($f = sprintf(".%.6d", $f)) =~ s/0+$//;
+        ($f = sprintf(".%.9d", $f)) =~ s/0+$//;
     } else {
         $f = ''
     }
-    return sprintf("%.2d:%.2d:%.2d$f",$h,$m,$s);
+    return sprintf("%.2d:%.2d:%.2d%s",$h,$m,$s,$f);
+}
+
+#------------------------------------------------------------------------------
+# Print GPS timestamp
+# Inputs: 0) EXIF-formatted time string
+# Returns: time rounded to the nearest microsecond
+sub PrintTimeStamp($)
+{
+    my $val = shift;
+    return $val unless $val =~ s/:(\d{2}\.\d+)$//;
+    my $s = int($1 * 1000000 + 0.5) / 1000000;
+    $s = "0$s" if $s < 10;
+    return "${val}:$s";
 }
 
 #------------------------------------------------------------------------------
@@ -22,11 +22,12 @@ use strict;
 use vars qw($VERSION);
 use Image::ExifTool qw(:Public);
 
-$VERSION = '1.41';
+$VERSION = '1.44';
 
 sub JITTER() { return 2 }       # maximum time jitter
 
 sub SetGeoValues($$;$);
+sub PrintFixTime($);
 sub PrintFix($@);
 
 # XML tags that we recognize (keys are forced to lower case)
@@ -176,8 +177,8 @@ sub LoadTrackLog($$;$)
             if (/^<(\?xml|gpx)[\s>]/) { # look for XML or GPX header
                 $format = 'XML';
             # check for NMEA sentence
-            # (must ONLY start with ones that have timestamps! ie. not GSA or PTNTHPR!)
-            } elsif (/^\$(GP(RMC|GGA|GLL)|PMGNTRK),/) {
+            # (must ONLY start with ones that have timestamps! eg. not GSA or PTNTHPR!)
+            } elsif (/^\$(GP(RMC|GGA|GLL|ZDA)|PMGNTRK),/) {
                 $format = 'NMEA';
                 $nmeaStart = $2 || $1;    # save type of first sentence
             } elsif (/^A(FLA|XSY|FIL)/) {
@@ -211,7 +212,7 @@ sub LoadTrackLog($$;$)
             # lat/lon/alt are space-separated; we want commas.
             s{(\S+)\s+(\S+)\s+(\S+)(</gx:coord>)}{$1,$2,$3$4};
             foreach $arg (split) {
-                # parse attributes (ie. GPX 'lat' and 'lon')
+                # parse attributes (eg. GPX 'lat' and 'lon')
                 # (note: ignore namespace prefixes if they exist)
                 if ($arg =~ /^(\w+:)?(\w+)=(['"])(.*?)\3/g) {
                     my $tag = $xmlTag{lc $2};
@@ -306,7 +307,7 @@ sub LoadTrackLog($$;$)
         my (%fix, $secs, $date, $nmea);
         if ($format eq 'NMEA') {
             # ignore unrecognized NMEA sentences
-            next unless /^\$(GP(RMC|GGA|GLL|GSA)|PMGNTRK|PTNTHPR),/;
+            next unless /^\$(GP(RMC|GGA|GLL|GSA|ZDA)|PMGNTRK|PTNTHPR),/;
             $nmea = $2 || $1;
         }
 #
@@ -333,8 +334,9 @@ sub LoadTrackLog($$;$)
 #
         } elsif ($nmea eq 'RMC') {
             #  $GPRMC,092204.999,A,4250.5589,S,14718.5084,E,0.00,89.68,211200,,*25
+            #  $GPRMC,093657.007,,3652.835020,N,01053.104094,E,1.642,,290913,,,A*0F
             #  $GPRMC,hhmmss.sss,A/V,ddmm.mmmm,N/S,ddmmm.mmmm,E/W,spd(knots),dir(deg),DDMMYY,,*cs
-            /^\$GPRMC,(\d{2})(\d{2})(\d+)(\.\d+)?,A,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/ or next;
+            /^\$GPRMC,(\d{2})(\d{2})(\d+(\.\d*)?),A?,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/ or next;
             next if $13 > 31 or $14 > 12 or $15 > 99;   # validate day/month/year
             $fix{lat} = (($5 || 0) + $6/60) * ($7 eq 'N' ? 1 : -1);
             $fix{lon} = (($8 || 0) + $9/60) * ($10 eq 'E' ? 1 : -1);
@@ -342,22 +344,21 @@ sub LoadTrackLog($$;$)
             $fix{track} = $12 if length $12;
             my $year = $15 + ($15 >= 70 ? 1900 : 2000);
             $secs = (($1 * 60) + $2) * 60 + $3;
-            $secs += $4 if $4;      # add fractional seconds
             $date = Time::Local::timegm(0,0,0,$13,$14-1,$year-1900);
 #
 # NMEA GGA sentence (no date)
 #
         } elsif ($nmea eq 'GGA') {
             #  $GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,19.7,M,,,,0000*1F
+            #  $GPGGA,093657.000,3652.835020,N,01053.104094,E,,8,,166.924,M,40.9,M,,*77
             #  $GPGGA,hhmmss.sss,ddmm.mmmm,N/S,dddmm.mmmm,E/W,0=invalid,sats,hdop,alt,M,...
-            /^\$GPGGA,(\d{2})(\d{2})(\d+)(\.\d+)?,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),[1-6],(\d+)?,(\.\d+|\d+\.?\d*)?,(-?\d+\.?\d*)?,M?,/ or next;
+            /^\$GPGGA,(\d{2})(\d{2})(\d+(\.\d*)?),(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),[1-6]?,(\d+)?,(\.\d+|\d+\.?\d*)?,(-?\d+\.?\d*)?,M?,/ or next;
             $fix{lat} = (($5 || 0) + $6/60) * ($7 eq 'N' ? 1 : -1);
             $fix{lon} = (($8 || 0) + $9/60) * ($10 eq 'E' ? 1 : -1);
             $fix{nsats} = $11;
             $fix{hdop} = $12;
             $fix{alt} = $13;
             $secs = (($1 * 60) + $2) * 60 + $3;
-            $secs += $4 if $4;      # add fractional seconds
             $canCut = 1;
 #
 # NMEA GLL sentence (no date)
@@ -365,11 +366,10 @@ sub LoadTrackLog($$;$)
         } elsif ($nmea eq 'GLL') {
             #  $GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D
             #  $GPGLL,ddmm.mmmm,N/S,dddmm.mmmm,E/W,hhmmss.sss,A/V*cs
-            /^\$GPGLL,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),(\d{2})(\d{2})(\d+)(\.\d+),A/ or next;
+            /^\$GPGLL,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),(\d{2})(\d{2})(\d+(\.\d*)?),A/ or next;
             $fix{lat} = (($1 || 0) + $2/60) * ($3 eq 'N' ? 1 : -1);
             $fix{lon} = (($4 || 0) + $5/60) * ($6 eq 'E' ? 1 : -1);
             $secs = (($7 * 60) + $8) * 60 + $9;
-            $secs += $10 if $10;    # add fractional seconds
 #
 # NMEA GSA sentence (satellite status, no date)
 #
@@ -382,17 +382,25 @@ sub LoadTrackLog($$;$)
             $fix{nsats} = scalar @a;
             $canCut = 1;
 #
+# NMEA ZDA sentence (date/time, contains date)
+#
+        } elsif ($nmea eq 'ZDA') {
+            #  $GPZDA,093655.000,29,09,2013,,*58
+            #  $GPZDA,hhmmss.ss,DD,MM,YYYY,tzh,tzm (hhmmss in UTC)
+            /^\$GPZDA,(\d{2})(\d{2})(\d{2}(\.\d*)?),(\d+),(\d+),(\d+)/ or next;
+            $secs = (($1 * 60) + $2) * 60 + $3;
+            $date = Time::Local::timegm(0,0,0,$5,$6-1,$7-1900);
+#
 # Magellan eXplorist PMGNTRK (Proprietary MaGellaN TRacK) sentence (optional date)
 #
         } elsif ($nmea eq 'PMGNTRK') {
             # $PMGNTRK,4415.026,N,07631.091,W,00092,M,185031.06,A,,020409*65
             # $PMGNTRK,ddmm.mmm,N/S,dddmm.mmm,E/W,alt,F/M,hhmmss.ss,A/V,trkname,DDMMYY*cs
-            /^\$PMGNTRK,(\d+)(\d{2}\.\d+),([NS]),(\d+)(\d{2}\.\d+),([EW]),(-?\d+\.?\d*),([MF]),(\d{2})(\d{2})(\d+)(\.\d+)?,A,(?:[^,]*,(\d{2})(\d{2})(\d+))?/ or next;
+            /^\$PMGNTRK,(\d+)(\d{2}\.\d+),([NS]),(\d+)(\d{2}\.\d+),([EW]),(-?\d+\.?\d*),([MF]),(\d{2})(\d{2})(\d+(\.\d*)?),A,(?:[^,]*,(\d{2})(\d{2})(\d+))?/ or next;
             $fix{lat} = ($1 + $2/60) * ($3 eq 'N' ? 1 : -1);
             $fix{lon} = ($4 + $5/60) * ($6 eq 'E' ? 1 : -1);
             $fix{alt} = $8 eq 'M' ? $7 : $7 * 12 * 0.0254;
             $secs = (($9 * 60) + $10) * 60 + $11;
-            $secs += $12 if $12;    # add fractional seconds
             if (defined $15) {
                 next if $13 > 31 or $14 > 12 or $15 > 99;   # validate day/month/year
                 # optional date is available in PMGNTRK sentence
@@ -555,11 +563,14 @@ sub LoadTrackLog($$;$)
         print $out "Ignored $cutHDOP points due to GeoMaxHDOP cut\n" if $cutHDOP;
         print $out "Ignored $cutSats points due to GeoMinSats cut\n" if $cutSats;
         if ($numPoints and $verbose > 1) {
-            print $out '  GPS track start: ' . Image::ExifTool::ConvertUnixTime($fixTimes[0]) . " UTC\n";
+            my @lbl = ('start:', 'end:  ');
+            # (fixes may be in reverse order in GPX files)
+            @lbl = reverse @lbl if $fixTimes[0] > $fixTimes[-1];
+            print $out "  GPS track $lbl[0] " . PrintFixTime($fixTimes[0]) . "\n";
             if ($verbose > 3) {
                 print $out PrintFix($points, $_) foreach @fixTimes;
             }
-            print $out '  GPS track end:   ' . Image::ExifTool::ConvertUnixTime($fixTimes[-1]) . " UTC\n";
+            print $out "  GPS track $lbl[1] " . PrintFixTime($fixTimes[-1]) . "\n";
         }
     }
     if ($numPoints) {
@@ -753,18 +764,19 @@ sub SetGeoValues($$;$)
 
         if ($et->Options('Verbose') > 1 and not $secondTry) {
             my $out = $et->Options('TextOut');
-            my $str = "$fsec UTC";
+            my $str = '';
             $str .= sprintf(" (incl. Geosync offset of %+.3f sec)", $sync) if defined $sync;
             unless ($tz) {
                 my $tzs = Image::ExifTool::TimeZoneString([$sec,$min,$hr,$day,$mon-1,$year-1900],$time);
                 $str .= " (local timezone is $tzs)";
             }
-            print $out '  Geotime value:   ' . Image::ExifTool::ConvertUnixTime(int $time) . "$str\n";
+            print $out '  Geotime value:   ' . PrintFixTime($time) . "$str\n";
         }
         # interpolate GPS track at $time
         if ($time < $$times[0]) {
             if ($time < $$times[0] - $geoMaxExtSecs) {
                 $err or $err = 'Time is too far before track';
+                $et->VPrint(2, '  Track start:     ', PrintFixTime($$times[0]), "\n") if $verbose > 2;
             } else {
                 $fix = $$points{$$times[0]};
                 $iExt = 0;  $iDir = 1;
@@ -774,6 +786,7 @@ sub SetGeoValues($$;$)
         } elsif ($time > $$times[-1]) {
             if ($time > $$times[-1] + $geoMaxExtSecs) {
                 $err or $err = 'Time is too far beyond track';
+                $et->VPrint(2, '  Track end:       ', PrintFixTime($$times[-1]), "\n") if $verbose > 2;
             } else {
                 $fix = $$points{$$times[-1]};
                 $iExt = $#$times;  $iDir = -1;
@@ -810,6 +823,7 @@ sub SetGeoValues($$;$)
                 }
                 if (abs($time - $tn) > $geoMaxExtSecs) {
                     $err or $err = 'Time is too far from nearest GPS fix';
+                    $et->VPrint(2, '  Nearest fix:     ', PrintFixTime($tn), "\n") if $verbose > 2;
                 } else {
                     $fix = $$points{$tn};
                     $et->VPrint(2, "  Taking pos from fix:\n",
@@ -818,7 +832,7 @@ sub SetGeoValues($$;$)
             } else {
                 my $f0 = $t1 == $t0 ? 0 : ($time - $t0) / ($t1 - $t0);
                 my $p0 = $$points{$t0};
-                $et->VPrint(2, "  Interpolating pos between fixes (f=$f0):\n",
+                $et->VPrint(2, "  Interpolating between fixes (f=$f0):\n",
                     PrintFix($points, $t0, $t1)) if $verbose > 2;
                 $fix = { };
                 # loop through available fix information categories
@@ -1063,13 +1077,9 @@ sub ConvertGeosync($$)
             # print verbose output
             if ($et->Options('Verbose') > 1) {
                 # print GPS and image timestamps in UTC
-                my $gps = Image::ExifTool::ConvertUnixTime($gpsSecs);
-                my $img = Image::ExifTool::ConvertUnixTime($imgSecs);
-                $gps .= $1 if $gpsTime =~ /(\.\d+)/;
-                $img .= $1 if $imgTime =~ /(\.\d+)/;
                 $et->VPrint(1, "Added Geosync point:\n",
-                               "  GPS time stamp:  $gps UTC\n",
-                               "  Image date/time: $img UTC\n");
+                               '  GPS time stamp:  ', PrintFixTime($gpsSecs), "\n",
+                               '  Image date/time: ', PrintFixTime($imgSecs), "\n");
             }
             # save sorted list of image sync times if we have more than one
             my @times = keys %{$$sync{Points}};
@@ -1095,6 +1105,17 @@ sub ConvertGeosync($$)
 }
 
 #------------------------------------------------------------------------------
+# Print fix time
+# Inputs: 0) time since the epoch
+# Returns: UTC time string with fractional seconds
+sub PrintFixTime($)
+{
+    my $time = $_[0] + 0.0005;  # round off to nearest ms
+    my $fsec = int(($time - int($time)) * 1000);
+    return sprintf('%s.%.3d UTC', Image::ExifTool::ConvertUnixTime($time), $fsec);
+}
+
+#------------------------------------------------------------------------------
 # Print fix information
 # Inputs: 0) lookup for all fix points, 1-n) list of fix times
 # Returns: fix string (including leading indent and trailing newline)
@@ -1105,11 +1126,11 @@ sub PrintFix($@)
     my $str = '';
     while (@_) {
         my $time = shift;
-        $str .= '    ' . Image::ExifTool::ConvertUnixTime($time) . ' UTC -';
+        $str .= '    ' . PrintFixTime($time) . ' -';
         my $fix = $$points{$time};
         if ($fix) {
             foreach (sort keys %$fix) {
-                $str .= " $_=$$fix{$_}" unless $_ eq 'time';
+                $str .= " $_=$$fix{$_}" unless $_ eq 'time' or not defined $$fix{$_};
             }
         }
         $str .= "\n";
@@ -24,7 +24,7 @@ use vars qw($VERSION %convMake);
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 
-$VERSION = '1.11';
+$VERSION = '1.12';
 
 sub ProcessSEI($$);
 
@@ -297,6 +297,7 @@ my $parsePictureTiming; # flag to enable parsing of picture timing information (
         Combine => 2,    # the next tags (0xbc/0xbd) contain the minutes/seconds
         Notes => 'combined with tags 0xbc and 0xbd',
         ValueConv => 'Image::ExifTool::GPS::ConvertTimeStamp($val)',
+        PrintConv => 'Image::ExifTool::GPS::PrintTimeStamp($val)',
     },
     0xbe => {
         Name => 'GPSStatus',
@@ -1032,7 +1033,7 @@ sub ParseH264Video($$)
             printf $out "  NAL Unit Type: 0x%x (%d bytes)\n",$nal_unit_type, length $buff;
             my %parms = ( Out => $out );
             $parms{MaxLen} = 96 if $verbose < 4;
-            Image::ExifTool::HexDump(\$buff, undef, %parms) if $verbose > 2;
+            HexDump(\$buff, undef, %parms) if $verbose > 2;
         }
         pos($$dataPt) = $pos = $nextPos;
 
@@ -344,7 +344,7 @@ sub SetHTMLCharset($$)
 #------------------------------------------------------------------------------
 # Convert single UTF-8 character to HTML character reference
 # Inputs: 0) UTF-8 character sequence
-# Returns: HTML character reference (ie. "&quot;");
+# Returns: HTML character reference (eg. "&quot;");
 # Note: Must be called via EscapeHTML to load name lookup
 sub EscapeChar($)
 {
@@ -23,7 +23,7 @@ use strict;
 use vars qw($VERSION);
 use Image::ExifTool qw(:DataAccess :Utils);
 
-$VERSION = '1.28';
+$VERSION = '1.29';
 
 sub ProcessICC($$);
 sub ProcessICC_Profile($$$);
@@ -409,6 +409,7 @@ my %profileClass = (
         Name => 'MeasurementGeometry',
         Format => 'int32u',
         PrintConv => {
+            0 => 'Unknown',
             1 => '0/45 or 45/0',
             2 => '0/d or d/0',
         },
@@ -16,7 +16,7 @@ use strict;
 use vars qw($VERSION);
 use Image::ExifTool qw(:DataAccess :Utils);
 
-$VERSION = '1.41';
+$VERSION = '1.42';
 
 sub ProcessID3v2($$$);
 sub ProcessPrivate($$$);
@@ -69,9 +69,9 @@ my %dateTimeConv = (
     VARS => { NO_ID => 1 },
     NOTES => q{
         ExifTool extracts ID3 information from MP3, MPEG, AIFF, OGG, FLAC, APE, MPC
-        and RealAudio files.  ID3v2 tags which support multiple languages (ie.
+        and RealAudio files.  ID3v2 tags which support multiple languages (eg.
         Comment and Lyrics) are extracted by specifying the tag name, followed by a
-        dash ('-'), then a 3-character ISO 639-2 language code (ie. "Comment-spa").
+        dash ('-'), then a 3-character ISO 639-2 language code (eg. "Comment-spa").
         See L<http://www.id3.org/> for the official ID3 specification and
         L<http://www.loc.gov/standards/iso639-2/php/code_list.php> for a list of ISO
         639-2 language codes.
@@ -804,8 +804,8 @@ sub ConvertID3v1Text($$)
 
 #------------------------------------------------------------------------------
 # Re-format time stamp in synchronized lyrics
-# Inputs: 0) synchronized lyrics entry (ie. "[84.030]Da do do do")
-# Returns: entry with formatted timestamp (ie. "[01:24.03]Da do do do")
+# Inputs: 0) synchronized lyrics entry (eg. "[84.030]Da do do do")
+# Returns: entry with formatted timestamp (eg. "[01:24.03]Da do do do")
 sub ConvertTimeStamp($)
 {
     my $val = shift;
@@ -1471,7 +1471,9 @@ sub ProcessMP3($$)
             } else {
                 # look for audio frame sync in first $scanLen bytes
                 # (set MP3 flag to 1 so this will fail unless layer 3 audio)
-                $rtnVal = 1 if Image::ExifTool::MPEG::ParseMPEGAudio($et, \$buff, 1);
+                my $ext = $$et{FILE_EXT} || '';
+                my $mp3 = ($ext eq 'MUS') ? 0 : 1;  # MUS files are MP2
+                $rtnVal = 1 if Image::ExifTool::MPEG::ParseMPEGAudio($et, \$buff, $mp3);
             }
         }
     }
@@ -15,7 +15,7 @@ use strict;
 use vars qw($VERSION $AUTOLOAD %iptcCharset);
 use Image::ExifTool qw(:DataAccess :Utils);
 
-$VERSION = '1.51';
+$VERSION = '1.52';
 
 %iptcCharset = (
     "\x1b%G"  => 'UTF8',
@@ -43,6 +43,14 @@ my %isStandardIPTC = (
     'EPS-Photoshop-IPTC'        => 1,
     'PS-Photoshop-IPTC'         => 1,
     'EXV-APP13-Photoshop-IPTC'  => 1,
+    # set file types to 0 if they have a standard location
+    JPEG => 0,
+    TIFF => 0,
+    PSD  => 0,
+    MIE  => 0,
+    EPS  => 0,
+    PS   => 0,
+    EXV  => 0,
 );
 
 my %fileFormat = (
@@ -1016,11 +1024,14 @@ sub TranslateCodedString($$$$)
 #------------------------------------------------------------------------------
 # Is this IPTC in a standard location?
 # Inputs: 0) Current metadata path string
-# Returns: true if path is standard
+# Returns: true if path is standard, 0 if file type doesn't have standard IPTC,
+#          or undef if IPTC is non-standard
 sub IsStandardIPTC($)
 {
     my $path = shift;
-    return $isStandardIPTC{$path};
+    return 1 if $isStandardIPTC{$path};
+    return 0 unless $path =~ /^(\w+)/ and defined $isStandardIPTC{$1};
+    return undef;   # non-standard
 }
 
 #------------------------------------------------------------------------------
@@ -1042,30 +1053,37 @@ sub ProcessIPTC($$$)
     $verbose and $dirInfo and $et->VerboseDir('IPTC', 0, $$dirInfo{DirLen});
 
     if ($tagTablePtr eq \%Image::ExifTool::IPTC::Main) {
-        # calculate MD5 if Digest::MD5 is available (for standard IPTC only)
         my $path = $et->MetadataPath();
-        if (IsStandardIPTC($path)) {
-            my $md5;
-            if (eval { require Digest::MD5 }) {
-                if ($pos or $dirLen != length($$dataPt)) {
-                    $md5 = Digest::MD5::md5(substr $$dataPt, $pos, $dirLen);
+        my $isStd = IsStandardIPTC($path);
+        if (defined $isStd and not $$et{DIR_COUNT}{STD_IPTC}) {
+            # set flag to ensure we only have one family 1 "IPTC" group
+            $$et{DIR_COUNT}{STD_IPTC} = 1;
+            # calculate MD5 if Digest::MD5 is available (truly standard IPTC only)
+            if ($isStd) {
+                my $md5;
+                if (eval { require Digest::MD5 }) {
+                    if ($pos or $dirLen != length($$dataPt)) {
+                        $md5 = Digest::MD5::md5(substr $$dataPt, $pos, $dirLen);
+                    } else {
+                        $md5 = Digest::MD5::md5($$dataPt);
+                    }
                 } else {
-                    $md5 = Digest::MD5::md5($$dataPt);
+                    # a zero digest indicates IPTC exists but we don't have Digest::MD5
+                    $md5 = "\0" x 16;
                 }
-            } else {
-                # a zero digest indicates IPTC exists but we don't have Digest::MD5
-                $md5 = "\0" x 16;
+                $et->FoundTag('CurrentIPTCDigest', $md5);
             }
-            $et->FoundTag('CurrentIPTCDigest', $md5);
         } elsif ($Image::ExifTool::MWG::strict and $$et{FILE_TYPE} =~ /^(JPEG|TIFF|PSD)$/) {
             # ignore non-standard IPTC while in strict MWG compatibility mode
             $et->Warn("Ignored non-standard IPTC at $path");
             return 1;
+        } else {
+            # extract non-standard IPTC
+            my $count = ($$et{DIR_COUNT}{IPTC} || 0) + 1;  # count non-standard IPTC
+            $$et{DIR_COUNT}{IPTC} = $count;
+            $$et{LOW_PRIORITY_DIR}{IPTC} = 1;       # lower priority of non-standard IPTC
+            $$et{SET_GROUP1} = '+' . ($count + 1);  # add number to family 1 group name
         }
-        # set family 1 group name if multiple IPTC directories
-        my $dirCount = ($$et{DIR_COUNT}{IPTC} || 0) + 1;
-        $$et{DIR_COUNT}{IPTC} = $dirCount;
-        $$et{SET_GROUP1} = '+' . $dirCount if $dirCount > 1;
     }
     # begin by assuming default IPTC encoding
     my $xlat = $et->Options('CharsetIPTC');
@@ -1200,6 +1218,7 @@ sub ProcessIPTC($$$)
         $pos += $len;   # increment to next field
     }
     delete $$et{SET_GROUP1};
+    delete $$et{LOW_PRIORITY_DIR}{IPTC};
     return $success;
 }
 
@@ -83,7 +83,7 @@ sub ReadCSV($$;$)
         } else {
             # the first row should be the tag names
             foreach (@vals) {
-                # terminate at first blank tag name (ie. extra comma at end of line)
+                # terminate at first blank tag name (eg. extra comma at end of line)
                 last unless length $_;
                 @tags or s/^\xef\xbb\xbf//; # remove UTF-8 BOM if it exists
                 /^[-\w]+(:[-\w+]+)?#?$/ or $err = "Invalid tag name '$_'", last;
@@ -132,7 +132,7 @@ Tok: for (;;) {
             # read another 64kB and add to unparsed data
             my $offset = length($$buffPt) - $pos;
             $$buffPt = substr($$buffPt, $pos) if $offset;
-            read $fp, $$buffPt, 65536, $offset or $$buffPt = '', last;
+            ($fp and read $fp, $$buffPt, 65536, $offset) or $$buffPt = '', last;
             unless ($didBOM) {
                 $$buffPt =~ s/^\xef\xbb\xbf//;  # remove UTF-8 BOM if it exists
                 $didBOM = 1;
@@ -109,7 +109,7 @@ sub ProcessIND($$)
                 my %parms = (Addr => $raf->Tell());
                 $parms{MaxLen} = $verbose > 3 ? 1024 : 96 if $verbose < 5;
                 $raf->Seek(-$raf->Read($buff, $len2), 1) or $err = 1;
-                Image::ExifTool::HexDump(\$buff, undef, %parms);
+                HexDump(\$buff, undef, %parms);
             }
         }
         # check for XMP if stream data is long enough
@@ -100,7 +100,7 @@ sub ProcessJPEG_HDR($$$);
         Condition => '$$valPt =~ /^FPXR\0/',
         SubDirectory => { TagTable => 'Image::ExifTool::FlashPix::Main' },
       }, {
-        Name => 'PreviewImage', # (ie. Samsung S1060)
+        Name => 'PreviewImage', # (eg. Samsung S1060)
         Notes => 'continued from APP3',
     }],
     APP5 => [{
@@ -108,7 +108,7 @@ sub ProcessJPEG_HDR($$$);
         Condition => '$$valPt =~ /^RMETA\0/',
         SubDirectory => { TagTable => 'Image::ExifTool::Ricoh::RMETA' },
       }, {
-        Name => 'PreviewImage', # (ie. BenQ DC E1050)
+        Name => 'PreviewImage', # (eg. BenQ DC E1050)
         Notes => 'continued from APP4',
     }],
     APP6 => [{
@@ -23,7 +23,7 @@ use vars qw($VERSION);
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 
-$VERSION = '1.33';
+$VERSION = '1.35';
 
 sub ProcessKodakIFD($$$);
 sub ProcessKodakText($$$);
@@ -750,7 +750,7 @@ sub WriteKodakIFD($$$);
         Notes => 'Kodak only',
     },
     0xa8 => {
-        Name => 'UnknownNumber', # (was SerialNumber, but not unique for all cameras. ie C1013)
+        Name => 'UnknownNumber', # (was SerialNumber, but not unique for all cameras. eg. C1013)
         Condition => '$$self{Make} =~ /Kodak/i and $$valPt =~ /^([A-Z0-9]{1,11}\0|[A-Z0-9]{12})/i',
         Format => 'string[12]',
         Notes => 'Kodak only',
@@ -845,6 +845,31 @@ sub WriteKodakIFD($$$);
     # 0x3fe undef[2540]
 );
 
+# Kodak PixPro S-1 maker notes (ref PH)
+# (similar to Ricoh::Type2 and GE::Main)
+%Image::ExifTool::Kodak::Type11 = (
+    # (can't currently write these)
+    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
+    NOTES =>q{
+        These tags are found in models such as the PixPro S-1.  They are not
+        writable because the inconsistency of Kodak maker notes is beginning to get
+        on my nerves.
+    },
+    0x0203 => {
+        Name => 'PictureEffect',
+        PrintConv => {
+            0 => 'None',
+            3 => 'Monochrome',
+            9 => 'Kodachrome',
+        },
+    },
+    # 0x0204 - ExposureComp or FlashExposureComp maybe?
+    0x0207 => 'KodakModel',
+    0x0300 => 'KodakMake',
+    0x0308 => 'LensSerialNumber',
+    0x0309 => 'LensModel',
+);
+
 # Kodak SubIFD0 tags (ref PH)
 %Image::ExifTool::Kodak::SubIFD0 = (
     WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
@@ -854,7 +879,7 @@ sub WriteKodakIFD($$$);
     0xfa02 => {
         Name => 'SceneMode',
         Writable => 'int16u',
-        Notes => 'may not be valid for some models', # ie. M580?
+        Notes => 'may not be valid for some models', # eg. M580?
         PrintConvColumns => 2,
         PrintConv => {
             1 => 'Sport',
@@ -876,8 +901,8 @@ sub WriteKodakIFD($$$);
             25 => 'Back Light',
             28 => 'Candlelight',
             29 => 'Sunset',
-            31 => 'Panorama Left-Right',
-            32 => 'Panorama Right-Left',
+            31 => 'Panorama Left-right',
+            32 => 'Panorama Right-left',
             33 => 'Smart Scene',
             34 => 'High ISO',
         },
@@ -378,8 +378,8 @@ $VERSION = '1.29';
         'Bottom Center' => 'Unten Mitte',
         'Bottom Left' => 'Unten Links',
         'Bottom Right' => 'Unten Rechts',
-        'Bottom-Left' => 'Unten Links',
-        'Bottom-Right' => 'Unten Rechts',
+        'Bottom-left' => 'Unten Links',
+        'Bottom-right' => 'Unten Rechts',
         'Bottom-center (horizontal)' => 'Unten Mitte (horizontal)',
         'Bottom-center (vertical)' => 'Unten Mitte (vertikal)',
         'Bottom-left (horizontal)' => 'Unten Links (horizontal)',
@@ -434,11 +434,11 @@ $VERSION = '1.29';
         'Top (vertical)' => 'Oben (vertikal)',
         'Top Center' => 'Oben Mitte',
         'Top Left' => 'Oben Links',
-        'Top Near-Left' => 'Oben nahe-Links',
-        'Top Near-Right' => 'Nahe Rechts-oben',
+        'Top Near-left' => 'Oben nahe-Links',
+        'Top Near-right' => 'Nahe Rechts-oben',
         'Top Right' => 'Oben Rechts',
-        'Top-Left' => 'Oben Links',
-        'Top-Right' => 'Oben Rechts',
+        'Top-left' => 'Oben Links',
+        'Top-right' => 'Oben Rechts',
         'Top-center (horizontal)' => 'Oben Mitte (horizontal)',
         'Top-center (vertical)' => 'Oben Mitte (vertikal)',
         'Top-left (horizontal)' => 'Oben Links (horizontal)',
@@ -622,8 +622,8 @@ $VERSION = '1.29';
         'Auto' => 'Automatisch',
         'Automatic Tracking AF' => 'Nachführ AF',
         'Bottom' => 'Unten',
-        'Bottom-Left' => 'Unten-links',
-        'Bottom-Right' => 'Unten-rechts',
+        'Bottom-left' => 'Unten-links',
+        'Bottom-right' => 'Unten-rechts',
         'Center' => 'Mitte',
         'Face Detect AF' => 'Gesichtserkennungs-AF',
         'Far Left' => 'Weit links',
@@ -641,8 +641,8 @@ $VERSION = '1.29';
         'Near Right' => 'Nahe Rechts',
         'Right' => 'Rechts',
         'Top' => 'Oben',
-        'Top-Left' => 'Oben-links',
-        'Top-Right' => 'Oben-rechts',
+        'Top-left' => 'Oben-links',
+        'Top-right' => 'Oben-rechts',
         'Upper Far Left' => 'Oben weit Links',
         'Upper Far Right' => 'Oben weit Rechts',
         'Upper-left' => 'Links oben',
@@ -817,13 +817,13 @@ $VERSION = '1.29';
       Description => 'Aktiver AF Sensor',
       PrintConv => {
         'Bottom' => 'Unten',
-        'Bottom-Left' => 'Unten Links',
-        'Bottom-Right' => 'Unten Rechts',
+        'Bottom-left' => 'Unten Links',
+        'Bottom-right' => 'Unten Rechts',
         'Center Vertical' => 'Mitte vertikal',
         'Middle Horizontal' => 'Mitte horizontal',
         'Top' => 'Oben',
-        'Top-Left' => 'Oben Links',
-        'Top-Right' => 'Rechts Oben',
+        'Top-left' => 'Oben Links',
+        'Top-right' => 'Rechts Oben',
       },
     },
    'AFStatusActiveSensor' => {
@@ -840,14 +840,14 @@ $VERSION = '1.29';
         'Out of Focus' => 'Nicht im Fokus',
       },
     },
-   'AFStatusBottom-Left' => {
+   'AFStatusBottom-left' => {
       Description => 'AF Status Unten Links',
       PrintConv => {
         'In Focus' => 'Im Fokus',
         'Out of Focus' => 'Nicht im Fokus',
       },
     },
-   'AFStatusBottom-Right' => {
+   'AFStatusBottom-right' => {
       Description => 'AF Status Unten Rechts',
       PrintConv => {
         'In Focus' => 'Im Fokus',
@@ -896,14 +896,14 @@ $VERSION = '1.29';
         'Out of Focus' => 'Nicht im Fokus',
       },
     },
-   'AFStatusTop-Left' => {
+   'AFStatusTop-left' => {
       Description => 'AF Status Oben Links',
       PrintConv => {
         'In Focus' => 'Im Fokus',
         'Out of Focus' => 'Nicht im Fokus',
       },
     },
-   'AFStatusTop-Right' => {
+   'AFStatusTop-right' => {
       Description => 'AF Status Oben Rechts',
       PrintConv => {
         'In Focus' => 'Im Fokus',
@@ -6386,7 +6386,7 @@ $VERSION = '1.29';
    'PixelUnits' => {
       Description => 'Pixel Einheit',
       PrintConv => {
-        'Meters' => 'Meter',
+        'meters' => 'Meter',
         'Unknown' => 'Unbekannt',
       },
     },
@@ -7723,8 +7723,8 @@ $VERSION = '1.29';
    'SubjectReference' => 'Themencode',
    'SubjectUnits' => {
       PrintConv => {
-        'Meters' => 'Meter',
-        'Radians' => 'Winkelgrade',
+        'meters' => 'Meter',
+        'radians' => 'Winkelgrade',
       },
     },
    'Subsystem' => {
@@ -11,7 +11,7 @@ package Image::ExifTool::Lang::es;
 use strict;
 use vars qw($VERSION);
 
-$VERSION = '1.12';
+$VERSION = '1.13';
 
 %Image::ExifTool::Lang::es::Translate = (
    'AEAperture' => 'Aperture AE',
@@ -874,6 +874,7 @@ $VERSION = '1.12';
    'Country' => 'País',
    'Country-PrimaryLocationCode' => 'Código País ISO',
    'Country-PrimaryLocationName' => 'País',
+   'CountryCode' => 'Código País',
    'CreateDate' => 'Fecha y Hora de Datos Digital',
    'CreationDate' => 'Fecha Creación',
    'CreativeStyle' => {
@@ -903,6 +904,7 @@ $VERSION = '1.12';
    'Creator' => 'Creador',
    'CreatorAddress' => 'Creador - Dirección',
    'CreatorCity' => 'Creador - Ciudad',
+   'CreatorContactInfo' => 'Contacto Creador',
    'CreatorCountry' => 'Creador - País',
    'CreatorPostalCode' => 'Creador - Código Postal',
    'CreatorRegion' => 'Creador - Estado/Provincia',
@@ -2215,6 +2217,7 @@ $VERSION = '1.12';
    'JPEGRestartInterval' => 'Intervalo Reinicio JPEG',
    'JPEGTables' => 'Tablas JPEG',
    'JobID' => 'ID del Trabajo',
+   'JobTitle' => 'Cargo',
    'Keyword' => 'Palabras Clave',
    'Keywords' => 'Clave',
    'LCDIllumination' => {
@@ -3492,7 +3495,6 @@ $VERSION = '1.12';
    'SubSecTimeOriginal' => 'Subsegundos DateTimeOriginal',
    'SubTileBlockSize' => 'Tamaño Bloque Submosaico',
    'SubTitle' => 'Subtitulo',
-   'Subtitle' => 'Subtitulo',
    'SubTitleDescription' => 'Descripción Subtitulo',
    'SubfileType' => 'Nuevo Tipo Subarchivo',
    'SubimageColor' => {
@@ -3524,6 +3526,7 @@ $VERSION = '1.12';
         'Unknown' => 'Desconocido',
       },
     },
+   'Subtitle' => 'Subtitulo',
    'SuperimposedDisplay' => {
       PrintConv => {
         'Off' => 'Desactivado',
@@ -78,8 +78,8 @@ $VERSION = '1.01';
         'Near Upper/Left' => 'Hieman ylhäällä/vasemmalla',
         'Top Center' => 'Ylhäällä keskellä',
         'Top Left' => 'Ylävasemmalla',
-        'Top Near-Left' => 'Hieman ylävasemmalla',
-        'Top Near-Right' => 'Hieman yläoikealla',
+        'Top Near-left' => 'Hieman ylävasemmalla',
+        'Top Near-right' => 'Hieman yläoikealla',
         'Top Right' => 'Yläoikealla',
         'Upper Left' => 'Ylävasemmalla',
         'Upper Right' => 'Yläoikealla',
@@ -11,7 +11,7 @@ package Image::ExifTool::Lang::fr;
 use strict;
 use vars qw($VERSION);
 
-$VERSION = '1.27';
+$VERSION = '1.28';
 
 %Image::ExifTool::Lang::fr::Translate = (
    'AEAperture' => 'Ouverture AE',
@@ -1161,6 +1161,7 @@ $VERSION = '1.27';
    'Creator' => 'Créateur',
    'CreatorAddress' => 'Adresse du créateur',
    'CreatorCity' => 'Lieu d\'Habitation du créateur',
+   'CreatorContactInfo' => 'Contact créateur',
    'CreatorCountry' => 'Pays du créateur',
    'CreatorPostalCode' => 'Code postal du créateur',
    'CreatorRegion' => 'Région du créateur',
@@ -4518,9 +4519,9 @@ $VERSION = '1.27';
     },
    'WBAdjLighting' => {
       PrintConv => {
+        'Daylight (cloudy)' => 'Lumière du jour (2)',
         'Daylight (direct sunlight)' => 'Lumière du jour (0)',
         'Daylight (shade)' => 'Lumière du jour (1)',
-        'Daylight (cloudy)' => 'Lumière du jour (2)',
         'None' => 'Aucune',
       },
     },
@@ -7103,7 +7103,7 @@ $VERSION = '1.11';
    'SubjectReference' => 'Codice Soggetto',
    'SubjectUnits' => {
       PrintConv => {
-        'Radians' => 'Radianti',
+        'radians' => 'Radianti',
       },
     },
    'Subsystem' => {
@@ -11,7 +11,7 @@ package Image::ExifTool::Lang::ja;
 use strict;
 use vars qw($VERSION);
 
-$VERSION = '1.20';
+$VERSION = '1.21';
 
 %Image::ExifTool::Lang::ja::Translate = (
    'AEAperture' => 'AE絞り',
@@ -1377,6 +1377,7 @@ $VERSION = '1.20';
    'Country' => '国名',
    'Country-PrimaryLocationCode' => 'ISO国コード',
    'Country-PrimaryLocationName' => '国',
+   'CountryCode' => '撮影国コード',
    'CreateDate' => 'デジタルデータ作成日時',
    'CreationDate' => '作成日時',
    'CreativeStyle' => {
@@ -1401,6 +1402,7 @@ $VERSION = '1.20';
    'Creator' => '製作者',
    'CreatorAddress' => 'クリエーター - 住所',
    'CreatorCity' => 'クリエーター - 街',
+   'CreatorContactInfo' => '作成者のコン タクト先',
    'CreatorCountry' => 'クリエーター - 国',
    'CreatorPostalCode' => 'クリエーター - 郵便番号',
    'CreatorRegion' => 'クリエーター - 国/州',
@@ -5080,6 +5082,7 @@ $VERSION = '1.20';
     },
    'Subject' => 'サブジェクト',
    'SubjectArea' => '対象領域',
+   'SubjectCode' => 'サブジェクトコード',
    'SubjectDistance' => '対象距離',
    'SubjectDistanceRange' => {
       Description => '被写体距離範囲',
@@ -5504,22 +5507,20 @@ $VERSION = '1.20';
       Description => 'ホワイトバランス調整、ライティング',
       PrintConv => {
         'Daylight' => '昼光',
-        'Daylight' => '昼光',
-        'Daylight' => '昼光',
         'Flash' => 'ストロボ',
-        'High Color Rendering Fluorescent (warm white)' => 'ハイカラーレンダリング蛍光灯 (0)',
         'High Color Rendering Fluorescent (3700K)' => 'ハイカラーレンダリング蛍光灯 (1)',
-        'High Color Rendering Fluorescent (cool white)' => 'ハイカラーレンダリング蛍光灯 (2)',
         'High Color Rendering Fluorescent (5000K)' => 'ハイカラーレンダリング蛍光灯 (3)',
+        'High Color Rendering Fluorescent (cool white)' => 'ハイカラーレンダリング蛍光灯 (2)',
         'High Color Rendering Fluorescent (daylight)' => 'ハイカラーレンダリング蛍光灯 (4)',
+        'High Color Rendering Fluorescent (warm white)' => 'ハイカラーレンダリング蛍光灯 (0)',
         'Incandescent' => '電球',
         'None' => '無し',
-        'Standard Fluorescent (warm white)' => '標準蛍光灯 (0)',
         'Standard Fluorescent (3700K)' => '標準蛍光灯 (1)',
-        'Standard Fluorescent (cool white)' => '標準蛍光灯 (2)',
         'Standard Fluorescent (5000K)' => '標準蛍光灯 (3)',
         'Standard Fluorescent (6500K)' => '標準蛍光灯 (4)',
+        'Standard Fluorescent (cool white)' => '標準蛍光灯 (2)',
         'Standard Fluorescent (high temperature mercury vapor)' => '標準蛍光灯 (5)',
+        'Standard Fluorescent (warm white)' => '標準蛍光灯 (0)',
       },
     },
    'WBAdjMode' => {
@@ -0,0 +1,217 @@
+#------------------------------------------------------------------------------
+# File:         Lytro.pm
+#
+# Description:  Read Lytro LFP files
+#
+# Revisions:    2014-07-17 - P. Harvey Created
+#
+# References:   1) http://optics.miloush.net/lytro/TheFileFormat.aspx
+#------------------------------------------------------------------------------
+
+package Image::ExifTool::Lytro;
+
+use strict;
+use vars qw($VERSION);
+use Image::ExifTool qw(:DataAccess :Utils);
+use Image::ExifTool::Import;
+
+$VERSION = '1.01';
+
+sub ExtractTags($$$);
+
+# Lytro LFP tags (ref PH)
+%Image::ExifTool::Lytro::Main = (
+    GROUPS => { 2 => 'Camera' },
+    VARS => { NO_ID => 1 },
+    NOTES => q{
+        Tag definitions for Lytro Light Field Picture (LFP) files.  ExifTool
+        extracts the full JSON metadata blocks, as well as breaking them down into
+        individual tags.  All available tags are extracted from the JSON metadata,
+        even if they don't appear in the table below.
+    },
+    JSONMetadata => {
+        Notes => 'the full JSON-format metadata blocks',
+        Binary => 1,
+        List => 1,
+    },
+    EmbeddedImage => {
+        Notes => 'JPEG image embedded in LFP files written by Lytro Desktop',
+        Groups => { 2 => 'Image' },
+        Binary => 1,
+    },
+    Type                => { Name => 'CameraType' },
+    CameraMake          => { Name => 'Make' },
+    CameraModel         => { Name => 'Model', Description => 'Camera Model Name' },
+    CameraSerialNumber  => { Name => 'SerialNumber'},
+    CameraFirmware      => { Name => 'FirmwareVersion'},
+    DevicesAccelerometerSampleArrayTime => { Name => 'AccelerometerTime'},
+    DevicesAccelerometerSampleArrayX    => { Name => 'AccelerometerX'},
+    DevicesAccelerometerSampleArrayY    => { Name => 'AccelerometerY'},
+    DevicesAccelerometerSampleArrayZ    => { Name => 'AccelerometerZ'},
+    DevicesClockZuluTime => {
+        Name => 'DateTimeOriginal',
+        Groups => { 2 => 'Time' },
+        ValueConv => 'require Image::ExifTool::XMP; Image::ExifTool::XMP::ConvertXMPDate($val)',
+        PrintConv => '$self->ConvertDateTime($val)',
+    },
+    DevicesLensFNumber => {
+        Name => 'FNumber',
+        PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
+    },
+    DevicesLensFocalLength => {
+        Name => 'FocalLength',
+        ValueConv => '$val * 1000', # convert from metres to mm
+        PrintConv => 'sprintf("%.1f mm",$val)',
+    },
+    DevicesLensTemperature => {
+        Name => 'LensTemperature',
+        PrintConv => 'sprintf("%.1f C",$val)',
+    },
+    DevicesSocTemperature => {
+        Name => 'SocTemperature',
+        PrintConv => 'sprintf("%.1f C",$val)',
+    },
+    DevicesShutterFrameExposureDuration => {
+        Name => 'FrameExposureTime',
+        PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
+    },
+    DevicesShutterPixelExposureDuration => {
+        Name => 'ExposureTime',
+        PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
+    },
+    DevicesSensorPixelPitch => {
+        Name => 'FocalPlaneXResolution',
+        Notes => 'Y resolution is the same as X resolution',
+        ValueConv => '25.4 / $val / 1000',  # convert from metres to pixels/inch
+    },
+    DevicesSensorSensorSerial   => { Name => 'SensorSerialNumber'},
+    DevicesSensorIso            => { Name => 'ISO' },
+    ImageLimitExposureBias      => { Groups => { 2 => 'Image' }, PrintConv => 'sprintf("%+.1f", $val)' },
+    ImageModulationExposureBias => { Groups => { 2 => 'Image' }, PrintConv => 'sprintf("%+.1f", $val)' },
+    ImageOrientation => {
+        Name => 'Orientation',
+        Groups => { 2 => 'Image' },
+        PrintConv => {
+            1 => 'Horizontal (normal)',
+        },
+    },
+);
+
+#------------------------------------------------------------------------------
+# Extract tags from a parsed JSON hash
+# Inputs: 0) ExifTool ref, 1) tag hash ref, 2) base tag name
+sub ExtractTags($$$)
+{
+    my ($et, $meta, $parent) = @_;
+    ref $meta eq 'HASH' or $et->Warn('Invalid LFP metadata'), return;
+    my ($key, $val, $name, $tagTablePtr);
+    foreach $key (sort keys %$meta) {
+        my $tag = $parent . ucfirst($key);
+        foreach $val (ref $$meta{$key} eq 'ARRAY' ? @{$$meta{$key}} : $$meta{$key}) {
+            ref $val eq 'HASH' and ExtractTags($et, $val, $tag), next;
+            $tagTablePtr or $tagTablePtr = GetTagTable('Image::ExifTool::Lytro::Main');
+            unless ($$tagTablePtr{$tag}) {
+                ($name = $tag) =~ s/[^-_a-zA-Z0-9](.?)/\U$1/g;
+                $name =~ s/ParametersVendorContentComLytroTags//; 
+                my %tagInfo;
+                $tagInfo{Groups} = { 2 => 'Image' } unless $name =~ s/^Devices//;
+                $tagInfo{List} = 1 if ref $$meta{$key} eq 'ARRAY';
+                $tagInfo{Name} = $name;
+                my $str = $tag eq $name ? '' : " as $name";
+                $et->VPrint(0, "  [adding $tag$str]\n");
+                AddTagToTable($tagTablePtr, $tag, \%tagInfo);
+            }
+            $et->HandleTag($tagTablePtr, $tag, $val);
+        }
+    }
+}
+
+#------------------------------------------------------------------------------
+# Process segments from a Lytro LFP image
+# Inputs: 0) ExifTool object reference, 1) dirInfo reference
+# Returns: 1 on success, 0 if this wasn't a valid Lytro image
+sub ProcessLFP($$)
+{
+    my ($et, $dirInfo) = @_;
+    my $raf = $$dirInfo{RAF};
+    my $verbose = $et->Options('Verbose');
+    my ($buff, $id, %dumpParms);
+
+    # validate the Lytro file header
+    return 0 unless $raf->Read($buff, 16) == 16 and $buff =~ /^\x89LFP\x0d\x0a\x1a\x0a/;
+    $et->SetFileType();   # set the FileType tag
+    SetByteOrder('MM');
+    if ($verbose > 2) {
+        %dumpParms = ( Out => $$et{OPTIONS}{TextOut} );
+        $dumpParms{MaxLen} = 128 if $verbose < 4;
+    }
+    my $tagTablePtr = GetTagTable('Image::ExifTool::Lytro::Main');
+    while ($raf->Read($buff, 16) == 16) {
+        $buff =~ /^\x89LF/ or $et->Warn('LFP format error'), last;
+        my $size = Get32u(\$buff, 12);
+        $size & 0x80000000 and $et->Warn('Invalid LFP segment size'), last;
+        $raf->Read($id, 80) == 80 or $et->Warn('Truncated LFP segment'), last;  # ignore the sha1
+        if ($verbose) {
+            $id =~ s/\0.*//s;
+            $et->VPrint(0, substr($buff,1,3), " segment ($size bytes, $id)\n");
+        }
+        if ($size > 20000000) {
+            $raf->Seek($size, 1) or $et->Warn('Seek error in LFP file'), last;
+        } else {
+            $raf->Read($buff,$size) == $size or $et->Warn('Truncated LFP data'), last;
+            HexDump(\$buff, undef, %dumpParms, Addr=>$raf->Tell()-$size) if $verbose > 2;
+            if ($buff =~ /^\{\s+"/) { # JSON metadata?
+                pos($buff) = 0;
+                $et->HandleTag($tagTablePtr, 'JSONMetadata', $buff);
+                my $meta = Image::ExifTool::Import::ReadJSONObject(undef, \$buff);
+                ExtractTags($et, $meta, '');
+            } elsif ($buff =~ /^\xff\xd8\xff/) { # embedded JPEG image?
+                $et->HandleTag($tagTablePtr, 'EmbeddedImage', $buff);
+            }
+        }
+        # skip padding if necessary
+        my $pad = 16 - ($size % 16);
+        $raf->Seek($pad, 1) if $pad != 16;
+    }
+    return 1;
+}
+
+1;  # end
+
+__END__
+
+=head1 NAME
+
+Image::ExifTool::Lytro - Read Lytro LFP files
+
+=head1 SYNOPSIS
+
+This module is used by Image::ExifTool
+
+=head1 DESCRIPTION
+
+This module contains routines required by Image::ExifTool to read metadata
+from Lytro Light Field Picture (LFP) files.
+
+=head1 AUTHOR
+
+Copyright 2003-2014, Phil Harvey (phil at owl.phy.queensu.ca)
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=head1 REFERENCES
+
+=over 4
+
+=item L<http://optics.miloush.net/lytro/TheFileFormat.aspx>
+
+=back
+
+=head1 SEE ALSO
+
+L<Image::ExifTool::TagNames/Lytro Tags>,
+L<Image::ExifTool(3pm)|Image::ExifTool>
+
+=cut
+
@@ -277,7 +277,7 @@ sub ParsePID($$$$$)
         printf $out "Parsing stream 0x%.4x (%s)\n", $pid, $pidName;
         my %parms = ( Out => $out );
         $parms{MaxLen} = 96 if $verbose < 4;
-        Image::ExifTool::HexDump($dataPt, undef, %parms) if $verbose > 2;
+        HexDump($dataPt, undef, %parms) if $verbose > 2;
     }
     my $more = 0;
     if ($type == 0x01 or $type == 0x02) {
@@ -400,7 +400,7 @@ sub ProcessM2TS($$)
         if ($verbose > 1) {
             print  $out "Transport packet $i:\n";
             ++$i;
-            Image::ExifTool::HexDump(\$buff, $pLen, Addr => $i * $pLen, Out => $out,
+            HexDump(\$buff, $pLen, Addr => $i * $pLen, Out => $out,
                 Start => $pos - $prePos) if $verbose > 2;
             my $str = $pidName{$pid} ? " ($pidName{$pid})" : '';
             printf $out "  Timecode:   0x%.4x\n", Get32u(\$buff, 0) if $pLen == 192;
@@ -143,13 +143,13 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
         written by adding a language/country code to the tag name in the form
         C<TAG-xx_YY>, where C<TAG> is the tag name, C<xx> is a 2-character lower
         case ISO 639-1 language code, and C<YY> is a 2-character upper case ISO
-        3166-1 alpha 2 country code (ie. C<Title-en_US>).  But as usual, the user
+        3166-1 alpha 2 country code (eg. C<Title-en_US>).  But as usual, the user
         interface is case-insensitive, and ExifTool will write the correct case to
         the file.
 
         3) Some numerical MIE tags allow units of measurement to be specified.  For
         these tags, units may be added in brackets immediately following the value
-        (ie. C<55(mi/h)>).  If no units are specified, the default units are
+        (eg. C<55(mi/h)>).  If no units are specified, the default units are
         written.
 
         See L<http://owl.phy.queensu.ca/~phil/exiftool/MIE1.1-20070121.pdf> for the
@@ -784,7 +784,7 @@ sub UpdateMieMap()
 
 #------------------------------------------------------------------------------
 # Get localized version of tagInfo hash
-# Inputs: 0) tagInfo hash ref, 1) locale code (ie. "en_CA")
+# Inputs: 0) tagInfo hash ref, 1) locale code (eg. "en_CA")
 # Returns: new tagInfo hash ref, or undef if invalid
 sub GetLangInfo($$)
 {
@@ -930,14 +930,14 @@ sub WriteMIEGroup($$$)
     } else {
         ($grp1 = $grp) =~ s/MIE-/MIE$n-/;
         my $m = $$cnt{$grp1} = ($$cnt{$grp1} || 0) + 1;
-        $isWriting{"$grp$m"} = 1;   # ie. 'MIE-Doc2'
-        $isWriting{$grp1} = 1;      # ie. 'MIE1-Doc'
+        $isWriting{"$grp$m"} = 1;   # eg. 'MIE-Doc2'
+        $isWriting{$grp1} = 1;      # eg. 'MIE1-Doc'
         $grp1 .= $m;
     }
     # build lookup for all valid group names for this MIE group
-    $isWriting{$grp} = 1;           # ie. 'MIE-Doc'
-    $isWriting{$grp1} = 1;          # ie. 'MIE1-Doc2'
-    $isWriting{"MIE$n"} = 1;        # ie. 'MIE1'
+    $isWriting{$grp} = 1;           # eg. 'MIE-Doc'
+    $isWriting{$grp1} = 1;          # eg. 'MIE1-Doc2'
+    $isWriting{"MIE$n"} = 1;        # eg. 'MIE1'
 
     # determine if we are deleting this group
     if (%{$$et{DEL_GROUP}}) {
@@ -1442,8 +1442,8 @@ sub ProcessMIEGroup($$$)
     my ($msg, $buff, $ok, $oldIndent, $mime);
     my $lastTag = '';
 
-    # get group 1 names: $grp doesn't have numbers (ie. 'MIE-Doc'),
-    # and $grp1 does (ie. 'MIE1-Doc1')
+    # get group 1 names: $grp doesn't have numbers (eg. 'MIE-Doc'),
+    # and $grp1 does (eg. 'MIE1-Doc1')
     my $cnt = $$et{MIE_COUNT};
     my $grp1 = $tagTablePtr->{GROUPS}->{1};
     my $n = $$cnt{'MIE-Main'} || 0;
@@ -2070,7 +2070,7 @@ FormatSize 0x01).
 =item 2.
 
 The TagName of a string element may have an 6-character suffix to indicate a
-specific locale. (ie. "Title-en_US", or "Keywords-de_DE").
+specific locale. (eg. "Title-en_US", or "Keywords-de_DE").
 
 =item 3.
 
@@ -2099,7 +2099,7 @@ null character is 2 or 4 zero bytes respectively.
 both 32-bit words and bytes within these words.  For instance, the high
 order byte is always the first byte if big-endian, and the eighth byte if
 little-endian.  This means that some swapping is always necessary for these
-values on systems where the byte order differs from the word order (ie. some
+values on systems where the byte order differs from the word order (eg. some
 ARM systems), regardless of the endian-ness of the stored values.
 
 =item 7.
@@ -2107,13 +2107,13 @@ ARM systems), regardless of the endian-ness of the stored values.
 Rational values are treated as two separate integers.  The numerator always
 comes first regardless of the byte ordering.  In a signed rational value,
 only the numerator is signed.  The denominator of all rational values is
-unsigned (ie. a signed 64-bit rational of 0x80000000/0x80000000 evaluates to
+unsigned (eg. a signed 64-bit rational of 0x80000000/0x80000000 evaluates to
 -1, not +1).
 
 =item 8.
 
 32-bit fixed point values are converted to floating point by treating them
-as an integer and dividing by an appropriate value.  ie)
+as an integer and dividing by an appropriate value.  eg)
 
     16-bit fixed value = 16-bit integer value / 256.0
     32-bit fixed value = 32-bit integer value / 65536.0
@@ -2162,7 +2162,7 @@ TagNames should be meaningful.  Case is significant.  Words should be
 lowercase with an uppercase first character, and acronyms should be all
 upper case.  The underline ("_") is provided to allow separation of two
 acronyms or two numbers, but it shouldn't be used unless necessary.  No
-separation is necessary between an acronym and a word (ie. "ISOSetting").
+separation is necessary between an acronym and a word (eg. "ISOSetting").
 
 All TagNames should start with an uppercase letter.  An exception to this
 rule allows tags to begin with a digit (0-9) if they must come before other
@@ -2174,7 +2174,7 @@ meta information tags in the main "0MIE" group.
 Tag names for localized text strings have an 6-character suffix with the
 following format:  The first character is a dash ('-'), followed by a
 2-character lower case ISO 639-1 language code, then an underline ('_'), and
-ending with a 2-character upper case ISO 3166-1 alpha 2 country code.  (ie.
+ending with a 2-character upper case ISO 3166-1 alpha 2 country code.  (eg.
 "-en_US", "-en_GB", "-de_DE" or "-fr_FR".  Note that "GB", and not "UK" is
 the code for Great Britain, although "UK" should be recognized for
 compatibility reasons.)  The suffix is included when sorting the tags
@@ -2185,7 +2185,7 @@ should be used.
 Tags with numerical values may allow units of measurement to be specified.
 The units string is stored in brackets at the end of the tag name, and is
 composed of zero or more ASCII characters in the range 0x21 to 0x7d,
-excluding the bracket characters 0x28 and 0x29.  (ie. "Resolution(/cm)" or
+excluding the bracket characters 0x28 and 0x29.  (eg. "Resolution(/cm)" or
 "SpecificHeat(J/kg.K)".)  See L<Image::ExifTool::MIEUnits> for details. Unit
 strings are not localized, and may not be used in combination with localized
 text strings.
@@ -2378,10 +2378,10 @@ allows a more reasonable interpretation of unrecognized values.
 
 Integer and floating point numbers may be represented in binary or string
 form.  In string form, integers are a series of digits with an optional
-leading sign (ie. "[+|-]DDDDDD"), and multiple values are separated by a
-single space character (ie. "23 128 -32").  Floating point numbers are
+leading sign (eg. "[+|-]DDDDDD"), and multiple values are separated by a
+single space character (eg. "23 128 -32").  Floating point numbers are
 similar but may also contain a decimal point and/or a signed exponent with a
-leading 'e' character (ie. "[+|-]DD[.DDDDDD][e(+|-)EEE]").  The string "inf"
+leading 'e' character (eg. "[+|-]DD[.DDDDDD][e(+|-)EEE]").  The string "inf"
 is used to represent infinity.  One advantage of numerical strings is that
 they can have an arbitrarily high precision because the possible number of
 significant digits is virtually unlimited.
@@ -2429,7 +2429,7 @@ groups, but should be able to process the remaining information.
 Some software may limit the maximum size of a MIE group or element.
 Historically, a limit of 2GB may be imposed by some systems.  However,
 8-byte data lengths should be supported by all applications provided the
-value doesn't exceed the system limit.  (ie. For systems with a 2GB limit,
+value doesn't exceed the system limit.  (eg. For systems with a 2GB limit,
 8-byte data lengths should be supported if the upper 17 bits are all zero.)
 If a data length above the system limit is encountered, it may be necessary
 for the application to stop processing if it can not seek to the next
@@ -6,7 +6,7 @@ Image::ExifTool::MIEUnits - MIE units documentation
 =head1 DESCRIPTION
 
 The MIE format allows units of measurement to be specified in brackets at
-the end of a MIE tag name (ie. "Volume(m3)"). This document describes the
+the end of a MIE tag name (eg. "Volume(m3)"). This document describes the
 standard MIE units abbreviations.
 
 =head1 SYNTAX
@@ -18,13 +18,13 @@ units|/STANDARD UNITS> should be used where possible.  In the standard
 units, an underline ('_') is used to indicate a subscript, and multiple
 words may be separated with a hyphen ('-').
 
-Exponents should be positive, and require no separator (ie. "m2" for square
-meters).  L<Prefixes|/PREFIXES> may be added to the standard units (ie.
+Exponents should be positive, and require no separator (eg. "m2" for square
+meters).  L<Prefixes|/PREFIXES> may be added to the standard units (eg.
 "cm") except when the resulting name conflicts with another standard unit.
 
 Multiplication is indicated by '.', and division by '/'.  Reciprocal units
 (ie. the multiplicative inverse) are obtained through division rather than
-the use of negative exponents (ie. "/in", not "in-1").  In MIE units,
+the use of negative exponents (eg. "/in", not "in-1").  In MIE units,
 multiplication has precedence over division, so everything to the right of a
 '/' is in the denominator.  (See L</EXAMPLES> for a few examples.)
 
@@ -638,7 +638,7 @@ sub ParseMPEGAudioVideo($$)
     while ($$buffPt =~ /\0\0\x01(\xb3|\xc0)/g) {
         my $type = $1 eq "\xb3" ? 'video' : 'audio';
         unless ($didHdr) {
-            # make sure we didn't miss an audio frame sync before this (ie. MP3 file)
+            # make sure we didn't miss an audio frame sync before this (eg. MP3 file)
             # (the last byte of the 4-byte MP3 audio frame header word may be zero,
             # but the 2nd last must be non-zero, so we need only check to pos-3)
             my $buff = substr($$buffPt, 0, pos($$buffPt) - 3);
@@ -84,7 +84,7 @@ my $mwgLoaded;  # flag set if we alreaded Load()ed the MWG tags
         DelCheck   => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
         WriteCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
         WriteAlso  => {
-            # only write Keywords if IPTC exists (ie. set EditGroup option)
+            # only write Keywords if IPTC exists (eg. set EditGroup option)
             'IPTC:Keywords'  => '$opts{EditGroup} = 1; $val',
             'XMP-dc:Subject' => '$val',
         },
@@ -391,7 +391,7 @@ my %sExtensions = (
     NOTES => q{
         This structure may contain any top-level XMP tags, but none have been
         pre-defined in ExifTool.  Since no flattened tags have been pre-defined,
-        RegionExtensions is writable only as a structure (ie.
+        RegionExtensions is writable only as a structure (eg.
         C<{xmp-dc:creator=me,rating=5}>).  Fields for this structure are identified
         using the standard ExifTool tag name (with optional leading group name,
         and/or trailing language code, and/or trailing C<#> symbol to disable print
@@ -717,7 +717,7 @@ By default, loading the MWG Composite tags enables "strict MWG conformance"
 unless previously enabled or disabled by the user.  In this mode, ExifTool
 will generate a Warning instead of extracting EXIF, IPTC and XMP from
 non-standard locations.  The strict mode may be disabled or enabled at any
-time by setting the MWG "strict" flag to 0 or 1.  ie)
+time by setting the MWG "strict" flag to 0 or 1.  eg)
 
     $Image::ExifTool::MWG::strict = 0;
 
@@ -21,7 +21,7 @@ sub ProcessKodakPatch($$$);
 sub WriteUnknownOrPreview($$$);
 sub FixLeicaBase($$;$);
 
-$VERSION = '1.91';
+$VERSION = '1.93';
 
 my $debug;          # set to 1 to enable debugging code
 
@@ -411,6 +411,22 @@ my $debug;          # set to 1 to enable debugging code
         },
     },
     {
+        Name => 'MakerNoteKodak11',
+        # these maker notes have an extra 2 bytes after the entry count
+        # - written by the PixPro S-1 (Note: Make is "JK Imaging, Ltd.", so check Model for "Kodak")
+        Condition => q{
+            $$self{Model}=~/Kodak/i and
+            $$valPt =~ /^II\x2a\0\x08\0\0\0.\0\0\0/
+        },
+        SubDirectory => {
+            TagTable => 'Image::ExifTool::Kodak::Type11',
+            ProcessProc => \&ProcessKodakPatch,
+            ByteOrder => 'LittleEndian',
+            Start => '$valuePtr + 8',
+            Base => '$start - 8',
+        },
+    },
+    {
         Name => 'MakerNoteKodakUnknown',
         Condition => '$$self{Make}=~/Kodak/i and $$valPt!~/^AOC\0/',
         NotIFD => 1,
@@ -727,9 +743,11 @@ my $debug;          # set to 1 to enable debugging code
     {
         Name => 'MakerNoteRicoh',
         # (my test R50 image starts with "      \x02\x01" - PH)
-        # (the HZ15 starts with "MM\0\x2a" but an extra 2 bytes of padding after
-        #  the IFD entry count prevents these from being processed as a standard IFD)
-        Condition => '$$self{Make}=~/^(PENTAX )?RICOH/ and $$valPt=~/^(Ricoh|      |MM\0\x2a|II\x2a\0)/i',
+        Condition => q{
+            $$self{Make} =~ /^(PENTAX )?RICOH/ and
+            $$valPt =~ /^(Ricoh|      |MM\0\x2a|II\x2a\0)/i and
+            $$valPt !~ /^(MM\0\x2a\0\0\0\x08\0.\0\0|II\x2a\0\x08\0\0\0.\0\0\0)/s
+        },
         SubDirectory => {
             TagTable => 'Image::ExifTool::Ricoh::Main',
             Start => '$valuePtr + 8',
@@ -737,6 +755,24 @@ my $debug;          # set to 1 to enable debugging code
         },
     },
     {
+        Name => 'MakerNoteRicoh2',
+        # (the Ricoh HZ15 starts with "MM\0\x2a" and the Pentax XG-1 starts with "II\x2a\0",
+        # but an extra 2 bytes of padding after the IFD entry count prevents these from
+        # being processed as a standard IFD.  Note that the offsets for the HZ15 are all
+        # zeros, but they seem to be mostly OK for the XG-1)
+        Condition => q{
+            $$self{Make} =~ /^(PENTAX )?RICOH/ and
+            $$valPt =~ /^(MM\0\x2a\0\0\0\x08\0.\0\0|II\x2a\0\x08\0\0\0.\0\0\0)/s
+        },
+        SubDirectory => {
+            TagTable => 'Image::ExifTool::Ricoh::Type2',
+            Start => '$valuePtr + 8',
+            Base => '$start - 8',
+            ByteOrder => 'Unknown',
+            ProcessProc => \&ProcessKodakPatch,
+        },
+    },
+    {
         Name => 'MakerNoteRicohText',
         Condition => '$$self{Make}=~/^RICOH/',
         NotIFD => 1,
@@ -16,7 +16,7 @@ use vars qw($VERSION);
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::XMP;
 
-$VERSION = '1.12';
+$VERSION = '1.13';
 
 sub ProcessXtra($$$);
 
@@ -88,8 +88,8 @@ sub ProcessXtra($$$);
     Rating => {
         Name => 'RatingPercent',
         Notes => q{
-            normal Rating values of 1,2,3,4 and 5 stars correspond to RatingPercent
-            values of 1,25,50,75 and 99 respectively
+            called Rating by the spec.  XMP-xmp:Rating values of 1,2,3,4 and 5 stars
+            correspond to RatingPercent values of 1,25,50,75 and 99 respectively
         },
     },
 );
@@ -48,11 +48,11 @@ package Image::ExifTool::Minolta;
 
 use strict;
 use vars qw($VERSION %minoltaLensTypes %minoltaTeleconverters %minoltaColorMode
-            %sonyColorMode %minoltaSceneMode);
+            %sonyColorMode %minoltaSceneMode %afStatusInfo);
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 
-$VERSION = '2.13';
+$VERSION = '2.15';
 
 # Full list of product codes for Sony-compatible Minolta lenses
 # (ref http://www.kb.sony.com/selfservice/documentLink.do?externalId=C1000570)
@@ -500,31 +500,31 @@ my %metabonesID = (
    '65535.14' => 'Sony E 20mm F2.8',                #PH (SEL20F28   - 32798)
    '65535.15' => 'Sony E 35mm F1.8 OSS',            #25 (SEL35F18   - 32799)
    '65535.16' => 'Sony E PZ 18-105mm F4 G OSS',     #25 (SELP18105G - 32800)
-   '65535.17' => 'Sony E PZ 18-200mm F3.5-6.3 OSS', #25 (SELP18200  - 32807)
-   '65535.18' => 'Sony FE 55mm F1.8 ZA',            #25 (SEL55F18Z  - 32808)
-   '65535.19' => 'Sony FE 70-200mm F4 G OSS',       #25 (SEL70200G  - 32810)
-   '65535.20' => 'Sony FE 28-70mm F3.5-5.6 OSS',    #25 (SEL2870    - 32813)
+   '65535.17' => 'Sony E 18-50mm F4-5.6',           #25 (SEL1850    - 32803)
+   '65535.18' => 'Sony E PZ 18-200mm F3.5-6.3 OSS', #25 (SELP18200  - 32807)
+   '65535.19' => 'Sony FE 55mm F1.8 ZA',            #25 (SEL55F18Z  - 32808)
+   '65535.20' => 'Sony FE 70-200mm F4 G OSS',       #25 (SEL70200G  - 32810)
+   '65535.21' => 'Sony FE 28-70mm F3.5-5.6 OSS',    #25 (SEL2870    - 32813)
 #
 # 3rd party E lenses
 #
-   '65535.21' => 'Sigma 19mm F2.8 [EX] DN', #25
-   '65535.22' => 'Sigma 30mm F2.8 [EX] DN', #25
-   '65535.23' => 'Sigma 60mm F2.8 DN', #25
-   '65535.24' => 'Tamron 18-200mm F3.5-6.3 Di III VC', #25 (Model B011)
-   '65535.25' => 'Zeiss Touit 12mm F2.8', #25
-   '65535.26' => 'Zeiss Touit 32mm F1.8', #25
-   '65535.27' => 'Zeiss Touit 50mm F2.8 Macro', #25 
-# 
-# other lenses 
-# 
-   '65535.28' => 'Arax MC 35mm F2.8 Tilt+Shift', #JD 
-   '65535.29' => 'Arax MC 80mm F2.8 Tilt+Shift', #JD 
-   '65535.30' => 'Zenitar MF 16mm F2.8 Fisheye M42', #JD 
-   '65535.31' => 'Samyang 500mm Mirror F8.0', #19 
-   '65535.32' => 'Pentacon Auto 135mm F2.8', #19 
-   '65535.33' => 'Pentacon Auto 29mm F2.8', #19 
-   '65535.34' => 'Helios 44-2 58mm F2.0', #19 
-
+   '65535.22' => 'Sigma 19mm F2.8 [EX] DN', #25
+   '65535.23' => 'Sigma 30mm F2.8 [EX] DN', #25
+   '65535.24' => 'Sigma 60mm F2.8 DN', #25
+   '65535.25' => 'Tamron 18-200mm F3.5-6.3 Di III VC', #25 (Model B011)
+   '65535.26' => 'Zeiss Touit 12mm F2.8', #25
+   '65535.27' => 'Zeiss Touit 32mm F1.8', #25
+   '65535.28' => 'Zeiss Touit 50mm F2.8 Macro', #25
+#
+# other lenses
+#
+   '65535.29' => 'Arax MC 35mm F2.8 Tilt+Shift', #JD
+   '65535.30' => 'Arax MC 80mm F2.8 Tilt+Shift', #JD
+   '65535.31' => 'Zenitar MF 16mm F2.8 Fisheye M42', #JD
+   '65535.32' => 'Samyang 500mm Mirror F8.0', #19
+   '65535.33' => 'Pentacon Auto 135mm F2.8', #19
+   '65535.34' => 'Pentacon Auto 29mm F2.8', #19
+   '65535.35' => 'Helios 44-2 58mm F2.0', #19
 );
 
 %minoltaTeleconverters = (
@@ -607,9 +607,26 @@ my %metabonesID = (
     26 => 'Fireworks', #28
     27 => 'Food', #28
     28 => 'Pet', #28
+    33 => 'HDR', #25
     0xffff => 'n/a', #PH
 );
 
+# tag information for AFStatus tags (ref 20)
+%afStatusInfo = (
+    Format => 'int16s',
+    # 0=in focus, -32768=out of focus, -ve=front focus, +ve=back focus
+    PrintConvColumns => 2,
+    PrintConv => {
+        0 => 'In Focus',
+        -32768 => 'Out of Focus',
+        OTHER => sub {
+            my ($val, $inv) = @_;
+            $inv and $val =~ /([-+]?\d+)/, return $1;
+            return $val < 0 ? "Front Focus ($val)" : "Back Focus (+$val)";
+        },
+    },
+);
+
 my %exposureIndicator = (
     0 => 'Not Indicated',
     1 => 'Under Scale',
@@ -638,22 +655,6 @@ my %exposureIndicator = (
 my %onOff = ( 0 => 'On', 1 => 'Off' );
 my %offOn = ( 0 => 'Off', 1 => 'On' );
 
-# tag information for AFStatus tags (ref 20)
-my %afStatusInfo = (
-    Format => 'int16s',
-    # 0=in focus, -32768=out of focus, -ve=front focus, +ve=back focus
-    PrintConvColumns => 2,
-    PrintConv => {
-        0 => 'In Focus',
-        -32768 => 'Out of Focus',
-        OTHER => sub {
-            my ($val, $inv) = @_;
-            $inv and $val =~ /([-+]?\d+)/, return $1;
-            return $val < 0 ? "Front Focus ($val)" : "Back Focus (+$val)";
-        },
-    },
-);
-
 # Minolta tag table
 %Image::ExifTool::Minolta::Main = (
     WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
@@ -1370,13 +1371,13 @@ my %afStatusInfo = (
             BITMASK => {
                 0 => 'Center',
                 1 => 'Top',
-                2 => 'Top-Right',
+                2 => 'Top-right',
                 3 => 'Right',
-                4 => 'Bottom-Right',
+                4 => 'Bottom-right',
                 5 => 'Bottom',
-                6 => 'Bottom-Left',
+                6 => 'Bottom-left',
                 7 => 'Left',
-                8 => 'Top-Left',
+                8 => 'Top-left',
             },
         },
     },
@@ -1724,14 +1725,14 @@ my %afStatusInfo = (
     0x01 => { #PH
         Name => 'AFSensorActive',
         PrintConv => {
-            0 => 'Top-Right',
-            1 => 'Bottom-Right',
+            0 => 'Top-right',
+            1 => 'Bottom-right',
             2 => 'Bottom',
             3 => 'Middle Horizontal',
             4 => 'Center Vertical',
             5 => 'Top',
-            6 => 'Top-Left',
-            7 => 'Bottom-Left',
+            6 => 'Top-left',
+            7 => 'Bottom-left',
         },
     },
     0x02 => {
@@ -1742,8 +1743,8 @@ my %afStatusInfo = (
             focusing if the image is focused then recomposed
         },
     },
-    0x04 => { Name => 'AFStatusTop-Right',      %afStatusInfo },
-    0x06 => { Name => 'AFStatusBottom-Right',   %afStatusInfo },
+    0x04 => { Name => 'AFStatusTop-right',      %afStatusInfo },
+    0x06 => { Name => 'AFStatusBottom-right',   %afStatusInfo },
     0x08 => { Name => 'AFStatusBottom',         %afStatusInfo },
     0x0a => {
         Name => 'AFStatusMiddleHorizontal',
@@ -1755,8 +1756,8 @@ my %afStatusInfo = (
     },
     0x0c => { Name => 'AFStatusCenterVertical', %afStatusInfo },
     0x0e => { Name => 'AFStatusTop',            %afStatusInfo },
-    0x10 => { Name => 'AFStatusTop-Left',       %afStatusInfo },
-    0x12 => { Name => 'AFStatusBottom-Left',    %afStatusInfo },
+    0x10 => { Name => 'AFStatusTop-left',       %afStatusInfo },
+    0x12 => { Name => 'AFStatusBottom-left',    %afStatusInfo },
     0x14 => {
         Name => 'FocusLocked',
         # (Focus can be locked in all modes other than Manual and Continuous,
@@ -1775,13 +1776,13 @@ my %afStatusInfo = (
             0 => 'Auto',
             1 => 'Center',
             2 => 'Top',
-            3 => 'Top-Right',
+            3 => 'Top-right',
             4 => 'Right',
-            5 => 'Bottom-Right',
+            5 => 'Bottom-right',
             6 => 'Bottom',
-            7 => 'Bottom-Left',
+            7 => 'Bottom-left',
             8 => 'Left',
-            9 => 'Top-Left',
+            9 => 'Top-left',
         },
     },
     0x16 => {
@@ -1944,13 +1945,13 @@ my %afStatusInfo = (
         PrintConv => {
             1 => 'Center',
             2 => 'Top',
-            3 => 'Top-Right',
+            3 => 'Top-right',
             4 => 'Right',
-            5 => 'Bottom-Right',
+            5 => 'Bottom-right',
             6 => 'Bottom',
-            7 => 'Bottom-Left',
+            7 => 'Bottom-left',
             8 => 'Left',
-            9 => 'Top-Left',
+            9 => 'Top-left',
         },
     },
     0x0e => { #20
@@ -369,7 +369,7 @@ sub ConvertWBMode($)
 }
 
 #------------------------------------------------------------------------------
-# Write MRW directory (ie. in ARW images)
+# Write MRW directory (eg. in ARW images)
 # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) optional tag table ref
 # Returns: new MRW data or undef on error
 sub WriteMRW($$;$)
@@ -56,7 +56,7 @@ use vars qw($VERSION %nikonLensIDs %nikonTextEncoding);
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 
-$VERSION = '2.88';
+$VERSION = '2.92';
 
 sub LensIDConv($$$);
 sub ProcessNikonAVI($$$);
@@ -84,6 +84,7 @@ sub PrintAFPointsInv($$;$);
     # http://www.rottmerhusen.com/objektives/lensid/files/exif/fmountlens.p.txt
     # (hex digits must be uppercase in keys below)
     '01 58 50 50 14 14 02 00' => 'AF Nikkor 50mm f/1.8',
+    '01 58 50 50 14 14 05 00' => 'AF Nikkor 50mm f/1.8',
     '02 42 44 5C 2A 34 02 00' => 'AF Zoom-Nikkor 35-70mm f/3.3-4.5',
     '02 42 44 5C 2A 34 08 00' => 'AF Zoom-Nikkor 35-70mm f/3.3-4.5',
     '03 48 5C 81 30 30 02 00' => 'AF Zoom-Nikkor 70-210mm f/4',
@@ -343,6 +344,7 @@ sub PrintAFPointsInv($$;$);
     '48 48 2B 44 24 30 4B 06' => 'Sigma 17-35mm F2.8-4 EX DG  Aspherical HSM',
     '26 54 2B 44 24 30 1C 02' => 'Sigma 17-35mm F2.8-4 EX Aspherical',
     '9D 48 2B 50 24 24 4B 0E' => 'Sigma 17-50mm F2.8 EX DC OS HSM',
+    '8F 48 2B 50 24 24 4B 0E' => 'Sigma 17-50mm F2.8 EX DC OS HSM', #http://dev.exiv2.org/boards/3/topics/1747
     '7A 47 2B 5C 24 34 4B 06' => 'Sigma 17-70mm F2.8-4.5 DC Macro Asp. IF HSM',
     '7A 48 2B 5C 24 34 4B 06' => 'Sigma 17-70mm F2.8-4.5 DC Macro Asp. IF HSM',
     '7F 48 2B 5C 24 34 1C 06' => 'Sigma 17-70mm F2.8-4.5 DC Macro Asp. IF',
@@ -382,6 +384,7 @@ sub PrintAFPointsInv($$;$);
   # '92 3E 2D 88 2C 40 4B 0E' (22mm)
   # '92 40 2D 88 2C 40 4B 0E' (18mm)
     '26 48 31 49 24 24 1C 02' => 'Sigma 20-40mm F2.8',
+    '02 3A 37 50 31 3D 02 00' => 'Sigma 24-50mm F4-5.6 UC',
     '26 48 37 56 24 24 1C 02' => 'Sigma 24-60mm F2.8 EX DG',
     'B6 48 37 56 24 24 1C 02' => 'Sigma 24-60mm F2.8 EX DG',
     'A6 48 37 5C 24 24 4B 06' => 'Sigma 24-70mm F2.8 IF EX DG HSM', #JD
@@ -428,7 +431,7 @@ sub PrintAFPointsInv($$;$);
     '02 37 5E 8E 35 3D 02 00' => 'Sigma 75-300mm F4.5-5.6 APO',
     '02 3A 5E 8E 32 3D 02 00' => 'Sigma 75-300mm F4.0-5.6',
     '77 44 61 98 34 3C 7B 0E' => 'Sigma 80-400mm F4.5-5.6 EX OS',
-    '48 48 68 8E 30 30 4B 02' => 'Sigma 100-300mm F4 EX IF HSM',
+    '48 48 68 8E 30 30 4B 02' => 'Sigma APO 100-300mm F4 EX IF HSM',
     'F3 48 68 8E 30 30 4B 02' => 'Sigma APO 100-300mm F4 EX IF HSM',
     '48 54 6F 8E 24 24 4B 02' => 'Sigma APO 120-300mm F2.8 EX DG HSM',
     '7A 54 6E 8E 24 24 4B 02' => 'Sigma APO 120-300mm F2.8 EX DG HSM',
@@ -495,6 +498,7 @@ sub PrintAFPointsInv($$;$);
     '69 47 5C 8E 30 3C 00 02' => 'Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2 (A17N)',
     '00 48 5C 8E 30 3C 00 06' => 'Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2 (A17NII)', #JD
     'F1 47 5C 8E 30 3C DF 0E' => 'Tamron SP 70-300mm f/4-5.6 Di VC USD (A005)',
+    'EB 40 76 A6 38 40 DF 0E' => 'Tamron SP AF 150-600mm f/5-6.3 VC USD (A011)',
     '20 3C 80 98 3D 3D 1E 02' => 'Tamron AF 200-400mm f/5.6 LD IF (75D)',
     '00 3E 80 A0 38 3F 00 02' => 'Tamron SP AF 200-500mm f/5-6.3 Di LD (IF) (A08)',
     '00 3F 80 A0 38 3F 00 02' => 'Tamron SP AF 200-500mm f/5-6.3 Di (A08)',
@@ -558,6 +562,7 @@ sub PrintAFPointsInv($$;$);
     '4A 48 24 24 24 0C 4D 02' => 'Samyang AE 14mm f/2.8 ED AS IF UMC', #http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,3150.0.html
     '4A 60 44 44 0C 0C 4D 02' => 'Samyang 35mm f/1.4 AS UMC',
     '4A 60 62 62 0C 0C 4D 02' => 'Samyang AE 85mm f/1.4 AS IF UMC', #http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,2888.0.html
+    '4A 54 29 29 18 0C 4D 02' => 'Samyang 16mm F2.0 ED AS UMC CS', #Jon Bloom (by email)
 #
     '02 40 44 5C 2C 34 02 00' => 'Exakta AF 35-70mm 1:3.5-4.5 MC',
 #
@@ -681,7 +686,7 @@ my %retouchValues = ( #PH
     40 => 'Drawing', # (S9200)
 );
 
-# AF point indices for models with 51 focus points, ie. D3 (ref JD/PH)
+# AF point indices for models with 51 focus points, eg. D3 (ref JD/PH)
 #        A1  A2  A3  A4  A5  A6  A7  A8  A9
 #    B1  B2  B3  B4  B5  B6  B7  B8  B9  B10  B11
 #    C1  C2  C3  C4  C5  C6  C7  C8  C9  C10  C11
@@ -700,7 +705,7 @@ my %afPoints51 = (
     10 => 'E6', 20 => 'E7', 30 => 'E9', 40 => 'B3', 50 => 'B1',
 );
 
-# AF point indices for models with 39 focus points, ie. D7000 (ref 29)
+# AF point indices for models with 39 focus points, eg. D7000 (ref 29)
 #                    A1  A2  A3
 #    B1  B2  B3  B4  B5  B6  B7  B8  B9  B10  B11
 #    C1  C2  C3  C4  C5  C6  C7  C8  C9  C10  C11
@@ -719,7 +724,7 @@ my %afPoints39 = (
     10 => 'E3', 20 => 'B9', 30 => 'D4',
 );
 
-# AF point indices for models with 135 focus points, ie. 1J1 (ref PH)
+# AF point indices for models with 135 focus points, eg. 1J1 (ref PH)
 # - 9 rows (A-I) with 15 columns (1-15), center is E8
 # - odd columns, columns 2 and 14, and the remaining corner points are
 #   not used in 41-point mode
@@ -1077,6 +1082,7 @@ my %binaryDataAttrs = (
         Name => 'HDRInfo',
         SubDirectory => { TagTable => 'Image::ExifTool::Nikon::HDRInfo' },
     },
+    # 0x0037 - int32u (1V models only): an image count maybe? - PH
     0x0039 => {
         Name => 'LocationInfo',
         SubDirectory => { TagTable => 'Image::ExifTool::Nikon::LocationInfo' },
@@ -1085,7 +1091,7 @@ my %binaryDataAttrs = (
         Name => 'BlackLevel',
         Writable => 'int16u',
         Count => 4,
-        # (may need to divide by 4 for some images, ie. D3300/D5300, 12 bit - ref 33)
+        # (may need to divide by 4 for some images, eg. D3300/D5300, 12 bit - ref 33)
     },
     0x0080 => { Name => 'ImageAdjustment',  Writable => 'string' },
     0x0081 => { Name => 'ToneComp',         Writable => 'string' }, #2
@@ -2219,6 +2225,7 @@ my %binaryDataAttrs = (
             0x88 => 'Purple-blue',
             0x89 => 'Red-purple',
             0xff => 'n/a',
+            # 0x04 - seen for D810 (PH)
         },
     },
     57 => { #21
@@ -2295,6 +2302,14 @@ my %binaryDataAttrs = (
             0x106 => 'Hi 1.5',
             0x107 => 'Hi 1.7',
             0x108 => 'Hi 2.0', #(NC) - D3 should have this mode
+            0x109 => 'Hi 2.3', #33
+            0x10a => 'Hi 2.5', #33
+            0x10b => 'Hi 2.7', #33
+            0x10c => 'Hi 3.0', #33
+            0x10d => 'Hi 3.3', #33
+            0x10e => 'Hi 3.5', #33
+            0x10f => 'Hi 3.7', #33
+            0x110 => 'Hi 4.0', #33
             0x201 => 'Lo 0.3',
             0x202 => 'Lo 0.5',
             0x203 => 'Lo 0.7',
@@ -2513,6 +2528,7 @@ my %binaryDataAttrs = (
             2 => 'On (11-point)', #PH
             3 => 'On (39-point)', #29 (D7000)
             4 => 'On (hybrid)', #PH (1J1)
+            5 => 'On (105-point)', #PH (1J4)
         },
     },
     7 => [
@@ -3027,7 +3043,7 @@ my %nikonFocalConversions = (
     },
     0x09 => { #8/9
         # With older AF lenses this does not work... (ref 13)
-        # ie) AF Nikkor 50mm f/1.4 => 48 (0x30)
+        # eg) AF Nikkor 50mm f/1.4 => 48 (0x30)
         # AF Zoom-Nikkor 35-105mm f/3.5-4.5 => @35mm => 15 (0x0f), @105mm => 141 (0x8d)
         Notes => 'this focus distance is approximate, and not very accurate for some lenses',
         Name => 'FocusDistance',
@@ -3113,7 +3129,7 @@ my %nikonFocalConversions = (
     # --> extra byte at position 0x09 in this version of LensData (PH)
     0x0a => { #8/9
         # With older AF lenses this does not work... (ref 13)
-        # ie) AF Nikkor 50mm f/1.4 => 48 (0x30)
+        # eg) AF Nikkor 50mm f/1.4 => 48 (0x30)
         # AF Zoom-Nikkor 35-105mm f/3.5-4.5 => @35mm => 15 (0x0f), @105mm => 141 (0x8d)
         Notes => 'this focus distance is approximate, and not very accurate for some lenses',
         Name => 'FocusDistance',
@@ -4967,6 +4983,7 @@ my %nikonFocalConversions = (
             1 => '1 EV',
             2 => '2 EV',
             3 => '3 EV',
+            # 5 - seen for 1J4
             255 => 'n/a', #PH
         },
     },
@@ -5285,8 +5302,8 @@ my %nikonFocalConversions = (
 %Image::ExifTool::Nikon::NCDT = (
     GROUPS => { 0 => 'MakerNotes', 1 => 'Nikon', 2 => 'Video' },
     NOTES => q{
-        Nikon-specific QuickTime tags found in the NCDT atom of MOV videos from some
-        Nikon cameras such as the Coolpix S8000.
+        Nikon-specific QuickTime tags found in the NCDT atom of MOV videos from
+        various Nikon models.
     },
     NCHD => {
         Name => 'MakerNoteVersion',
@@ -5312,8 +5329,9 @@ my %nikonFocalConversions = (
 # Nikon NCDB tags from MOV videos (ref PH)
 %Image::ExifTool::Nikon::NCDB = (
     GROUPS => { 0 => 'MakerNotes', 1 => 'Nikon', 2 => 'Video' },
-    # OP01 - 320 bytes, starts with "0200" (D600,D610,D3200,D5200)
+    # OP01 - 320 bytes, starts with "0200" (D600,D610,D810,D3200,D5200)
     #      - 638 bytes, starts with "0200" (D7100)
+    # OP02 - 2048 bytes, starts with "0200" (D810)
 );
 
 # Nikon NCTG tags from MOV videos (ref PH)
@@ -5476,6 +5494,7 @@ my %nikonFocalConversions = (
             require Image::ExifTool::GPS;
             Image::ExifTool::GPS::ConvertTimeStamp($val);
         },
+        PrintConv => 'Image::ExifTool::GPS::PrintTimeStamp($val)',
     },
     0x1200008 => {
         Name => 'GPSSatellites',
@@ -722,7 +722,7 @@ sub WriteNikonCapture($$$)
     # make sure the capture data is properly contained
     SetByteOrder('II');
     my $tagID = Get32u($dataPt, $dirStart);
-    # sometimes size includes 18 header bytes, and other times it doesn't (ie. ViewNX 2.1.1)
+    # sometimes size includes 18 header bytes, and other times it doesn't (eg. ViewNX 2.1.1)
     my $size = Get32u($dataPt, $dirStart + 18);
     my $pad = $dirLen - $size - 18; 
     unless ($tagID == 0x7a86a940 and ($pad >= 0 or $pad == -18)) {
@@ -217,7 +217,7 @@ sub FoundTag($$$$;$)
 
     # un-escape XML character entities
     $val = Image::ExifTool::XMP::UnescapeXML($val);
-    # convert OOXML-escaped characters (ie. "_x0000d_" is a newline)
+    # convert OOXML-escaped characters (eg. "_x0000d_" is a newline)
     $val =~ s/_x([0-9a-f]{4})_/Image::ExifTool::PackUTF8(hex($1))/gie;
     # convert from UTF8 to ExifTool Charset
     $val = $et->Decode($val, 'UTF8');
@@ -37,7 +37,7 @@ use vars qw($VERSION);
 use Image::ExifTool::Exif;
 use Image::ExifTool::APP12;
 
-$VERSION = '2.18';
+$VERSION = '2.24';
 
 sub PrintLensInfo($$$);
 
@@ -149,8 +149,11 @@ my %olympusLensTypes = (
     '2 19 10' => 'Lumix G Vario 14-140mm F3.5-5.6 Asph. Power OIS', #20
     '2 20 10' => 'Lumix G Vario 12-32mm F3.5-5.6 Asph. Mega OIS', #20
     '2 21 10' => 'Leica DG Nocticron 42.5mm F1.2 Asph. Power OIS', #20
+    '2 22 10' => 'Leica DG Summilux 15mm F1.7 Asph.', #20
     '3 01 00' => 'Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph.',
     '3 02 00' => 'Leica D Summilux 25mm F1.4 Asph.',
+    # Tamron lenses
+    '5 01 10' => 'Tamron 14-150mm F3.5-5.8 Di III', #20 (model C001)
 );
 
 # lookup for Olympus camera types (ref PH)
@@ -319,6 +322,7 @@ my %olympusCameraTypes = (
     D4535 => 'SP-620UZ',
     D4536 => 'TG-320',
     D4537 => 'VR340,D750',
+    D4538 => 'VG160,X990,D745',
     D4541 => 'SZ-12',
     D4545 => 'VH410',
     D4546 => 'XZ-10', #21
@@ -330,9 +334,12 @@ my %olympusCameraTypes = (
     D4562 => 'SP-820UZ',
     D4566 => 'SZ-15',
     D4572 => 'STYLUS1',
+    D4574 => 'TG-3',
     D4575 => 'TG-850',
     D4579 => 'SP-100EE',
+    D4580 => 'SH-60',
     D4581 => 'SH-1',
+    D4582 => 'TG-835',
     D4809 => 'C2500L',
     D4842 => 'E-10',
     D4856 => 'C-1',
@@ -365,6 +372,7 @@ my %olympusCameraTypes = (
     S0043 => 'E-PM2',
     S0044 => 'E-P5',
     S0045 => 'E-PL6',
+    S0046 => 'E-PL7', #21
     S0047 => 'E-M1',
     S0051 => 'E-M10',
     SR45 => 'D220',
@@ -567,8 +575,8 @@ my %indexInfo = (
         Name => 'SpecialMode',
         Notes => q{
             3 numbers: 1. Shooting mode: 0=Normal, 2=Fast, 3=Panorama;
-            2. Sequence Number; 3. Panorama Direction: 1=Left-Right,
-            2=Right-Left, 3=Bottom-Top, 4=Top-Bottom
+            2. Sequence Number; 3. Panorama Direction: 1=Left-right,
+            2=Right-left, 3=Bottom-Top, 4=Top-Bottom
         },
         Writable => 'int32u',
         Count => 3,
@@ -1518,7 +1526,7 @@ my %indexInfo = (
         # 5: 0, 16(new Lumix lenses)
         ValueConv => 'my @a=split(" ",$val); sprintf("%x %.2x %.2x",@a[0,2,3])',
         # set unknown values to zero when writing
-        ValueConvInv => 'my @a=split(" ",$val); hex($a[0])." 0 ".hex($a[1]).hex($a[2])." 0 0"',
+        ValueConvInv => 'my @a=split(" ",$val); hex($a[0])." 0 ".hex($a[1])." ".hex($a[2])." 0 0"',
         PrintConv => \%olympusLensTypes,
     },
     # apparently the first 3 digits of the lens s/n give the type (ref 4):
@@ -1723,7 +1731,7 @@ my %indexInfo = (
             1 => 'Sequential shooting AF',
             2 => 'Continuous AF',
             3 => 'Multi AF',
-            5 => 'Face detect', #11
+            4 => 'Face detect', #11
             10 => 'MF',
         }, {
             0 => '(none)',
@@ -2947,7 +2955,7 @@ my %indexInfo = (
 %Image::ExifTool::Olympus::RawInfo = (
     WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
     CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
-    NOTES => 'These tags are found only in ORF images of some models (ie. C8080WZ).',
+    NOTES => 'These tags are found only in ORF images of some models (eg. C8080WZ).',
     GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
     0x000 => {
         Name => 'RawInfoVersion',
@@ -3074,7 +3082,7 @@ my %indexInfo = (
         Name => 'ExposureUnknown',
         Unknown => 1,
         Format => 'int32u',
-        # this conversion doesn't work for all models (ie. gives "1/100000")
+        # this conversion doesn't work for all models (eg. gives "1/100000")
         ValueConv => '$val ? 10 / $val : 0',
         PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
     },
@@ -32,7 +32,7 @@ sub ReadPDFValue($);
 sub CheckPDF($$$);
 
 # $lastFetched - last fetched object reference (used for decryption)
-#                (undefined if fetched object was already decrypted, ie. object from stream)
+#                (undefined if fetched object was already decrypted, eg. object from stream)
 
 my $cryptInfo;      # encryption object reference (plus additional information)
 my $cryptString;    # flag that strings are encrypted
@@ -897,8 +897,8 @@ sub ExtractObject($$;$$)
 # extract dictionary
 #
     # Note: entries are not necessarily separated by whitespace (doh!)
-    # ie) "/Tag/Name", "/Tag(string)", "/Tag[array]", etc are legal!
-    # Also, they may be separated by a comment (ie. "/Tag%comment\nValue"),
+    # eg) "/Tag/Name", "/Tag(string)", "/Tag[array]", etc are legal!
+    # Also, they may be separated by a comment (eg. "/Tag%comment\nValue"),
     # but comments have already been removed
     while ($objData =~ m{(\s*)/([^/[\]()<>{}\s]+)\s*(\S[^[(/<>\s]*)}sg) {
         my $tag = $2;
@@ -1975,7 +1975,7 @@ sub ProcessDict($$$$;$$)
         }
     }
 #
-# extract information from stream object if it exists (ie. Metadata stream)
+# extract information from stream object if it exists (eg. Metadata stream)
 #
     for (;;) { # (cheap goto)
         last unless $$dict{_stream};
@@ -1024,7 +1024,7 @@ sub ReadPictValue($$$;$)
                     if ($verbose > 2) {
                         my %parms = ( Out => $out );
                         $parms{MaxLen} = 96 if $verbose < 4;
-                        Image::ExifTool::HexDump(\$val, undef, %parms);
+                        HexDump(\$val, undef, %parms);
                     }
                 } else {
                     print $out " = $val\n";
@@ -1054,7 +1054,7 @@ sub ReadPictValue($$$;$)
                     if ($verbose > 2) {
                         my %parms = ( Out => $out );
                         $parms{MaxLen} = 96 if $verbose < 4;
-                        Image::ExifTool::HexDump($val, undef, %parms);
+                        HexDump($val, undef, %parms);
                     }
                 }
             } elsif ($fmt =~ /(.+)\[(.+)\]/s) {
@@ -26,7 +26,7 @@ use strict;
 use vars qw($VERSION $AUTOLOAD);
 use Image::ExifTool qw(:DataAccess :Utils);
 
-$VERSION = '1.32';
+$VERSION = '1.33';
 
 sub ProcessPNG_tEXt($$$);
 sub ProcessPNG_iTXt($$$);
@@ -63,6 +63,7 @@ my %pngMap = (
     XMP          => 'PNG',
     ICC_Profile  => 'PNG',
     Photoshop    => 'PNG',
+   'PNG-pHYs'    => 'PNG',
     IPTC         => 'Photoshop',
     MakerNotes   => 'ExifIFD',
 );
@@ -159,7 +160,10 @@ $Image::ExifTool::PNG::colorType = -1;
     },
     pHYs => {
         Name => 'PhysicalPixel',
-        SubDirectory => { TagTable => 'Image::ExifTool::PNG::PhysicalPixel' },
+        SubDirectory => { 
+            TagTable => 'Image::ExifTool::PNG::PhysicalPixel',
+            DirName => 'PNG-pHYs', # (needed for writing)
+        },
     },
     PLTE => {
         Name => 'Palette',
@@ -292,7 +296,15 @@ $Image::ExifTool::PNG::colorType = -1;
 # PNG pHYs chunk
 %Image::ExifTool::PNG::PhysicalPixel = (
     PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
-    GROUPS => { 2 => 'Image' },
+    WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
+    WRITABLE => 1,
+    GROUPS => { 1 => 'PNG-pHYs', 2 => 'Image' },
+    WRITE_GROUP => 'PNG-pHYs',
+    NOTES => q{
+        These tags are found in the PNG pHYs chunk and belong to the PNG-pHYs family
+        1 group.  They are all created together with default values if necessary
+        when any of these tags is written, and may only be deleted as a group.
+    },
     0 => {
         Name => 'PixelsPerUnitX',
         Format => 'int32u',
@@ -303,7 +315,7 @@ $Image::ExifTool::PNG::colorType = -1;
     },
     8 => {
         Name => 'PixelUnits',
-        PrintConv => { 0 => 'Unknown', 1 => 'Meters' },
+        PrintConv => { 0 => 'Unknown', 1 => 'meters' },
     },
 );
 
@@ -313,7 +325,7 @@ $Image::ExifTool::PNG::colorType = -1;
     GROUPS => { 2 => 'Image' },
     0 => {
         Name => 'SubjectUnits',
-        PrintConv => { 1 => 'Meters', 2 => 'Radians' },
+        PrintConv => { 1 => 'meters', 2 => 'radians' },
     },
     1 => {
         Name => 'SubjectPixelWidth',
@@ -379,7 +391,7 @@ my %unreg = ( Notes => 'unregistered' );
         available, or tEXt otherwise.  Standard XMP is written as uncompressed iTXt.
 
         Alternate languages are accessed by suffixing the tag name with a '-',
-        followed by an RFC 3066 language code (ie. "PNG:Comment-fr", or
+        followed by an RFC 3066 language code (eg. "PNG:Comment-fr", or
         "Title-en-US").  See L<http://www.ietf.org/rfc/rfc3066.txt> for the RFC 3066
         specification.
 
@@ -540,7 +552,7 @@ sub StandardLangCase($)
 
 #------------------------------------------------------------------------------
 # Get localized version of tagInfo hash
-# Inputs: 0) tagInfo hash ref, 1) language code (ie. "x-default")
+# Inputs: 0) tagInfo hash ref, 1) language code (eg. "x-default")
 # Returns: new tagInfo hash ref, or undef if invalid
 sub GetLangInfo($$)
 {
@@ -644,12 +656,13 @@ sub FoundPNG($$$$;$$$$)
             # nothing more to do if writing and subdirectory is not writable
             my $subTable = GetTagTable($$subdir{TagTable});
             return 1 if $outBuff and not $$subTable{WRITE_PROC};
+            my $dirName = $$subdir{DirName} || $tagName;
             my %subdirInfo = (
                 DataPt   => \$val,
                 DirStart => 0,
                 DataLen  => $len,
                 DirLen   => $len,
-                DirName  => $tagName,
+                DirName  => $dirName,
                 TagInfo  => $tagInfo,
                 ReadOnly => 1, # (only used by WriteXMP)
                 OutBuff  => $outBuff,
@@ -658,7 +671,7 @@ sub FoundPNG($$$$;$$$$)
             undef $processProc if $wasCompressed and $processProc eq \&ProcessPNG_Compressed;
             # rewrite this directory if necessary (but always process TextualData normally)
             if ($outBuff and not $processProc and $subTable ne \%Image::ExifTool::PNG::TextualData) {
-                return 1 unless $$et{EDIT_DIRS}{$tagName};
+                return 1 unless $$et{EDIT_DIRS}{$dirName};
                 $$outBuff = $et->WriteDirectory(\%subdirInfo, $subTable);
                 if ($tagName eq 'XMP' and $$outBuff) {
                     if ($$et{FoundIDAT} and $$et{DEL_GROUP}{XMP}) {
@@ -669,7 +682,7 @@ sub FoundPNG($$$$;$$$$)
                         Image::ExifTool::XMP::ValidateXMP($outBuff,'r');
                     }
                 }
-                DoneDir($et, $tagName, $outBuff, $$tagInfo{NonStandard});
+                DoneDir($et, $dirName, $outBuff, $$tagInfo{NonStandard});
             } else {
                 # issue warning for standard XMP after IDAT (PNGEarlyXMP option)
                 if ($tagName eq 'XMP' and not $$tagInfo{NonStandard} and
@@ -1038,9 +1051,11 @@ sub ProcessPNG($$)
                 # add any new chunks immediately before the IEND chunk
                 AddChunks($et, $outfile) or $err = 1;
             } elsif ($chunk eq 'PLTE' or $chunk eq 'IDAT') {
-                # add XMP before IDAT if specified
-                if ($earlyXMP and $chunk eq 'IDAT') {
-                    AddChunks($et, $outfile, 'XMP') or $err = 1;
+                if ($chunk eq 'IDAT') {
+                    # add XMP before IDAT if specified
+                    AddChunks($et, $outfile, 'XMP') or $err = 1 if $earlyXMP;
+                    # pHYs comes before IDAT
+                    AddChunks($et, $outfile, 'PNG-pHYs') or $err = 1;
                 }
                 # iCCP chunk must come before PLTE and IDAT
                 # (ignore errors -- will add later as text profile if this fails)
@@ -114,7 +114,7 @@ sub ProcessPPM($$)
 #
     if ($verbose > 2) {
         print $out "$type header ($len bytes):\n";
-        Image::ExifTool::HexDump(\$buff, $len, Out => $out);
+        HexDump(\$buff, $len, Out => $out);
     }
     my $tag;
     foreach $tag (qw{Comment ImageWidth ImageHeight MaxVal}) {
@@ -0,0 +1,403 @@
+#------------------------------------------------------------------------------
+# File:         Palm.pm
+#
+# Description:  Read Palm Database files
+#
+# Revisions:    2014/05/28 - P. Harvey Created
+#
+# References: 1) http://wiki.mobileread.com/wiki/PDB
+#             2) http://wiki.mobileread.com/wiki/MOBI
+#------------------------------------------------------------------------------
+
+package Image::ExifTool::Palm;
+
+use strict;
+use vars qw($VERSION);
+use Image::ExifTool qw(:DataAccess :Utils);
+
+$VERSION = '1.00';
+
+sub ProcessEXTH($$$);
+
+# type/creator ID's for Palm database files
+my %palmTypes = (
+    '.pdfADBE' => 'Adobe Reader',
+    'TEXtREAd' => 'PalmDOC',
+    'BVokBDIC' => 'BDicty',
+    'DB99DBOS' => 'DB (Database program)',
+    'PNRdPPrs' => 'eReader',
+    'DataPPrs' => 'eReader',
+    'vIMGView' => 'FireViewer (ImageViewer)',
+    'PmDBPmDB' => 'HanDBase',
+    'InfoINDB' => 'InfoView',
+    'ToGoToGo' => 'iSilo',
+    'SDocSilX' => 'iSilo 3',
+    'JbDbJBas' => 'JFile',
+    'JfDbJFil' => 'JFile Pro',
+    'DATALSdb' => 'LIST',
+    'Mdb1Mdb1' => 'MobileDB',
+    'BOOKMOBI' => 'Mobipocket',
+    'DataPlkr' => 'Plucker',
+    'DataSprd' => 'QuickSheet',
+    'SM01SMem' => 'SuperMemo',
+    'TEXtTlDc' => 'TealDoc',
+    'InfoTlIf' => 'TealInfo',
+    'DataTlMl' => 'TealMeal',
+    'DataTlPt' => 'TealPaint',
+    'dataTDBP' => 'ThinkDB',
+    'TdatTide' => 'Tides',
+    'ToRaTRPW' => 'TomeRaider',
+    'zTXTGPlm' => 'Weasel',
+    'BDOCWrdS' => 'WordSmith',
+);
+
+my %dateTimeInfo = (
+    # like QuickTime, the time zero should be Jan 1, 1904, but not all software writes this,
+    # so assume a time zero of Jan 1, 1970 if the date is before this
+    RawConv => q{
+        my $offset = (66 * 365 + 17) * 24 * 3600;
+        return $val - $offset if $val >= $offset;
+        return $val;
+    },
+    ValueConv => 'ConvertUnixTime($val, 1)', # (UTC written by "EPUB Converter", ref PH)
+    PrintConv => '$self->ConvertDateTime($val)',
+);
+
+# Palm Database header information
+%Image::ExifTool::Palm::Main = (
+    GROUPS => { 0 => 'Palm', 1 => 'Palm', 2 => 'Document' },
+    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
+    FORMAT => 'int32u',
+    NOTES => q{
+        Information extracted from Palm database files (PDB and PRC extensions),
+        Mobipocket electronic books (MOBI), and Amazon Kindle KF7 and KF8 books (AZW
+        and AZW3).
+    },
+    0 => { Name => 'DatabaseName', Format => 'string[32]' },
+    # 8 - int16u: file attributes (not very useful)
+    # 8.5 - int16u: version
+    9 => {
+        Name => 'CreateDate',
+        Groups => { 2 => 'Time' },
+        %dateTimeInfo,
+    },
+    10 => {
+        Name => 'ModifyDate',
+        Groups => { 2 => 'Time' },
+        %dateTimeInfo,
+    },
+    11 => {
+        Name => 'LastBackupDate',
+        Groups => { 2 => 'Time' },
+        %dateTimeInfo,
+    },
+    12 => 'ModificationNumber',
+    15 => {
+        Name => 'PalmFileType',
+        Format => 'undef[8]',
+        PrintConv => \%palmTypes,
+    },
+);
+
+
+# MOBI header tags
+%Image::ExifTool::Palm::MOBI = (
+    GROUPS => { 0 => 'Palm', 1 => 'MOBI', 2 => 'Document' },
+    NOTES => q{
+        Information extracted from the MOBI header of Mobipocket and Amazon Kindle
+        KF7 and KF8 files.
+    },
+    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
+    FORMAT => 'int32u',
+    0 => {
+        Name => 'Compression',
+        Format => 'int16u',
+        PrintConv => {
+            1 => 'None',
+            2 => 'PalmDOC',
+            17480 => 'HUFF/CDIC',
+        },
+    },
+    1  => {
+        Name => 'UncompressedTextLength',
+        PrintConv => \&Image::ExifTool::ConvertFileSize,
+    },
+    3 => {
+        Name => 'Encryption',
+        PrintConv => {
+            0 => 'None',
+            1 => 'Old Mobipocket',
+            2 => 'Mobipocket',
+        },
+    },
+    6 => {
+        Name => 'MobiType',
+        PrintConv => {
+            2 => 'Mobipocket Book',
+            3 => 'PalmDoc Book',
+            4 => 'Audio',
+            232 => 'mobipocket? generated by kindlegen1.2',
+            248 => 'KF8: generated by kindlegen2',
+            257 => 'News',
+            258 => 'News_Feed',
+            259 => 'News_Magazine',
+            513 => 'PICS',
+            514 => 'WORD',
+            515 => 'XLS',
+            516 => 'PPT',
+            517 => 'TEXT',
+            518 => 'HTML',
+        },
+    },
+    7 => {
+        Name => 'CodePage',
+        RawConv => '$$self{CodePage} = $val',
+        PrintConv => {
+            # just define commonly used code pages
+            # (a much more complete list may be found in FlashPix.pm)
+            1252 => 'Windows Latin 1 (Western European)',
+            65001 => 'Unicode (UTF-8)',
+        },
+    },
+    9 => 'MobiVersion',
+    21 => 'BookName',   # this is actually an offset, but replace it with the string later
+    26 => 'MinimumVersion',
+);
+
+# MOBI extended header tags
+%Image::ExifTool::Palm::EXTH = (
+    GROUPS => { 0 => 'Palm', 1 => 'MOBI', 2 => 'Document' },
+    FORMAT => 'string',
+    NOTES => 'Information extracted from the MOBI extended header.',
+    PROCESS_PROC => \&ProcessEXTH,
+    1 => 'DRMServerID',
+    2 => 'DRMCommerceID',
+    3 => 'DRM_E-BookBaseID',
+    100 => { Name => 'Author', Groups => { 2 => 'Author' } },
+    101 => 'Publisher',
+    102 => 'Imprint',
+    103 => 'Description',
+    104 => 'ISBN',
+    105 => { Name => 'Subject', List => 1 },
+    106 => { 
+        Name => 'PublishDate',
+        Groups => { 2 => 'Time' },
+        ValueConv => q{
+            require Image::ExifTool::XMP;
+            Image::ExifTool::XMP::ConvertXMPDate($val, 1);
+        },
+        PrintConv => '$self->ConvertDateTime($val)',
+    },
+    107 => 'Review',
+    108 => 'Contributor',
+    109 => { Name => 'Rights', Groups => { 2 => 'Author' } },
+    110 => 'SubjectCode',
+    111 => 'BookType',
+    112 => 'Source',
+    113 => 'ASIN',
+    114 => 'BookVersion',
+    115 => { Name => 'SampleFlag',   Format => 'int32u' },
+    116 => { Name => 'StartReading', Format => 'int32u' },
+    117 => 'Adult',
+    118 => 'RetailPrice',
+    119 => 'RetailPriceCurrency',
+    # 121 => 'KF8BoundaryOffset',
+    125 => { Name => 'ResourceCount', Format => 'int32u' },
+    129 => 'KF8CoverURI',
+    200 => 'DictionaryShortName',
+    # 201 => { Name => 'CoverOffset', Format => 'int32u' },
+    # 202 => { Name => 'ThumbOffset', Format => 'int32u' },
+    # 203 => 'HasFakeCover',
+    204 => {
+        Name => 'CreatorSoftware',
+        Format => 'int32u',
+        PrintConv => {
+            1 => 'Mobigen',
+            2 => 'Mobipocket',
+            200 => 'Kindlegen (Windows)',
+            201 => 'Kindlegen (Linux)',
+            202 => 'Kindlegen (Mac)',
+        },
+    },
+    205 => { Name => 'CreatorMajorVersion', Format => 'int32u' },
+    206 => { Name => 'CreatorMinorVersion', Format => 'int32u' },
+    207 => { Name => 'CreatorBuildNumber',  Format => 'int32u' },
+    208 => 'Watermark',
+    209 => 'Tamper-proofKeys',
+    # 300 => 'FontSignature',
+    401 => { Name => 'ClippingLimit', Format => 'int8u' },
+    402 => 'PublisherLimit',
+    404 => {
+        Name => 'TextToSpeech',
+        Format => 'int8u',
+        PrintConv => { 0 => 'Enabled', 1 => 'Disabled' },
+    },
+    405 => { Name => 'RentalFlag', Format => 'int8u' }, #?
+    406 => 'RentalExpirationDate',
+    501 => { Name => 'CDEType',    Format => 'int32u' },
+    502 => 'LastUpdateTime',
+    503 => 'UpdatedTitle',
+    504 => 'ASIN2',
+    524 => 'Language',
+    525 => 'Alignment',
+    535 => 'CreatorBuildNumber2',
+);
+
+#------------------------------------------------------------------------------
+# Process the MOBI extended header
+# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
+# Returns: 1 (EXTH should have already been validated)
+sub ProcessEXTH($$$)
+{
+    my ($et, $dirInfo, $tagTablePtr) = @_;
+    my $dataPt = $$dirInfo{DataPt};
+    my $dataPos = $$dirInfo{DataPos};
+    my $enc = $$dirInfo{Encoding} || 'UTF8';
+    my $dirLen = length $$dataPt;
+    my ($index, $pos);
+
+    $et->VerboseDir('EXTH', $$dirInfo{NumEntries}, $dirLen);
+
+    # process the EXTH entries
+    for ($index=0, $pos=0; ; ++$index) {
+        last if $pos + 8 > $dirLen;
+        my $tag = Get32u($dataPt, $pos);
+        my $len = Get32u($dataPt, $pos + 4);
+        last if $len < 8 or $pos + $len > $dirLen;
+        my $key = $et->HandleTag($tagTablePtr, $tag, undef,
+            DataPt  => $dataPt,
+            DataPos => $dataPos,
+            Start   => $pos + 8,
+            Size    => $len - 8,
+            Index   => $index,
+        );
+        # recode text if necessary
+        $$et{VALUE}{$key} = $et->Decode($$et{VALUE}{$key}, $enc) if $key;
+        $pos += $len;
+    }
+    return 1;
+}
+
+#------------------------------------------------------------------------------
+# Extract information from a Palm DB file
+# Inputs: 0) ExifTool ref, 1) dirInfo reference
+# Returns: 1 if this was a recognized PDB file, 0 otherwise
+sub ProcessPDB($$)
+{
+    my ($et, $dirInfo) = @_;
+    my $raf = $$dirInfo{RAF};
+    my ($buff, $buf2, $size, $enc);
+    my $verbose = $et->Options('Verbose');
+
+    # verify this is a valid Palm DB file
+    return 0 unless $raf->Read($buff, 86) == 86;
+    my $type = $palmTypes{substr($buff, 60, 8)};
+    return 0 unless $type;
+#
+# Read and process the Palm DB file header
+#
+    $et->SetFileType($type eq 'Mobipocket' ? 'MOBI' : 'PDB');
+    SetByteOrder('MM');
+
+    my $tagTablePtr = GetTagTable('Image::ExifTool::Palm::Main');
+    $et->ProcessDirectory({ DataPt => \$buff }, $tagTablePtr);
+
+    return 1 unless $type eq 'Mobipocket' and Get16u(\$buff, 76);
+#
+# Read and process MOBI header (should be the first record)
+#
+    my $offset = Get32u(\$buff, 78);    # get offset to first record
+    unless ($raf->Seek($offset, 0) and $raf->Read($buff, 274) == 274) {
+        $et->Warn('Truncated MOBI header');
+        return 1;
+    }
+    unless (substr($buff, 16, 4) eq 'MOBI') {
+        $et->Warn('Invalid MOBI header');
+        return 1;
+    }
+    $tagTablePtr = GetTagTable('Image::ExifTool::Palm::MOBI');
+    $et->ProcessDirectory({ DataPt => \$buff }, $tagTablePtr);
+
+    # get text encoding
+    $enc = $Image::ExifTool::charsetName{"cp$$et{CodePage}"} if $$et{CodePage};
+    $enc = 'UTF8' unless $enc;
+
+    # extract the BookName string
+    my $off = Get32u(\$buff, 84);
+    my $len = Get32u(\$buff, 88);
+
+    $raf->Seek($offset+$off, 0) and $raf->Read($buf2, $len) == $len or $buf2 = '<err>';
+    $$et{VALUE}{BookName} = $et->Decode($buf2, $enc);
+#
+# Process the MOBI extended header if it exists
+#
+    # first, check the flag bit to see if the EXTH record should exist
+    my $flag = Get32u(\$buff, 128);
+    return 1 unless $flag & 0x40;   # check extended header flag
+
+    $len = Get32u(\$buff, 20) + 16; # MOBI header length (including PalmDOC header)
+
+    unless ($raf->Seek($offset+$len, 0) and $raf->Read($buf2, 12) == 12 and
+        substr($buf2,0,4) eq 'EXTH' and ($size = Get32u(\$buf2, 4)) > 12)
+    {
+        $et->Warn('Invalid MOBI extended header');
+        return 1;
+    }
+
+    # read and process the MOBI extended header
+    $size -= 12;
+    $raf->Read($buff, $size) == $size or $et->Warn('Truncated MOBI extended header'), return 1;
+    my %dirInfo = (
+        DataPt     => \$buff,
+        DataPos    => $offset + $len + 12,
+        NumEntries => Get32u(\$buf2, 8),
+        Encoding   => $enc,
+    );
+    $tagTablePtr = GetTagTable('Image::ExifTool::Palm::EXTH');
+    $et->ProcessDirectory(\%dirInfo, $tagTablePtr);
+
+    return 1;
+}
+
+1;  # end
+
+__END__
+
+=head1 NAME
+
+Image::ExifTool::Palm - Read Palm Database files
+
+=head1 SYNOPSIS
+
+This module is used by Image::ExifTool
+
+=head1 DESCRIPTION
+
+This module contains code to extract metadata from Palm database files (PDB
+and PRC extensions), Mobipocket electronic books (MOBI), and Amazon Kindle
+KF7 and KF8 books (AZW and AZW3).
+
+=head1 AUTHOR
+
+Copyright 2003-2014, Phil Harvey (phil at owl.phy.queensu.ca)
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=head1 REFERENCES
+
+=over 4
+
+=item L<http://wiki.mobileread.com/wiki/PDB>
+
+=item L<http://wiki.mobileread.com/wiki/MOBI>
+
+=back
+
+=head1 SEE ALSO
+
+L<Image::ExifTool::TagNames/Palm Tags>,
+L<Image::ExifTool(3pm)|Image::ExifTool>
+
+=cut
+
@@ -32,9 +32,9 @@ use vars qw($VERSION %leicaLensTypes);
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 
-$VERSION = '1.84';
+$VERSION = '1.87';
 
-sub ProcessPanasonicType2($$$);
+sub ProcessLeicaLEIC($$$);
 sub WhiteBalanceConv($;$$);
 
 # Leica lens types (ref 10)
@@ -556,8 +556,24 @@ my %shootingMode = (
                 47 => 'Dynamic Mono', #(GF5)
                 50 => 'Impressive Art', #(GF5)
                 51 => 'Cross Process', #(GF5)
+                100 => 'High Dynamic 2', #Exiv2 (G6)
+                101 => 'Retro 2', #Exiv2 (G6)
+                102 => 'High Key 2', #Exiv2 (G6)
+                103 => 'Low Key 2', #Exiv2 (G6)
+                104 => 'Toy Effect 2', #Exiv2 (G6)
                 107 => 'Expressive 2', #(GF6)
+                112 => 'Sepia', #Exiv2 (G6)
+                117 => 'Miniature', #Exiv2 (G6)
                 122 => 'Dynamic Monochrome', #(GF6)
+                127 => 'Old Days', #Exiv2 (G6)
+                132 => 'Dynamic Monochrome 2', #Exiv2 (G6)
+                135 => 'Impressive Art 2', #Exiv2 (G6)
+                136 => 'Cross Process 2', #Exiv2 (G6)
+                137 => 'Toy Pop', #Exiv2 (G6)
+                138 => 'Fantasy', #Exiv2 (G6)
+                256 => 'Normal 3', #Exiv2 (G6)
+                272 => 'Standard', #Exiv2 (G6)
+                288 => 'High', #Exiv2 (G6)
                 # more new modes for GF6:
                 # ? => 'Old Days',
                 # ? => 'Toy Pop',
@@ -731,7 +747,7 @@ my %shootingMode = (
         Name => 'FilmMode',
         Writable => 'int16u',
         PrintConv => {
-            0 => 'n/a', #PH (ie. FZ100 "Photo Frame" ShootingMode)
+            0 => 'n/a', #PH (eg. FZ100 "Photo Frame" ShootingMode)
             1 => 'Standard (color)',
             2 => 'Dynamic (color)',
             3 => 'Nature (color)',
@@ -937,11 +953,12 @@ my %shootingMode = (
         Writable => 'undef', # (Count 72)
     },
     # 0x6c - int8u: 1
-    0x6d => { #PH (ZS7)
+    0x6d => { #PH (ZS7) (also see forum5997)
         Name => 'City', # (City/Town)
         Groups => { 2 => 'Location' },
         Format => 'string',
         Writable => 'undef', # (Count 72)
+        Notes => 'City/Town as stored by some models, or County/Township for others',
     },
     # 0x6e - int8u: 1
     0x6f => { #PH (ZS7)
@@ -987,6 +1004,18 @@ my %shootingMode = (
         Writable => 'int16u',
         PrintConv => { 0 => 'Off', 1 => 'On' },
     },
+    0x80 => { #forum5997 (seen garbage here for SZ5 - PH)
+        Name => 'City2', # (City/Town/Village)
+        Groups => { 2 => 'Location' },
+        Format => 'string',
+        Writable => 'undef', # (Count 72)
+        Notes => 'City/Town/Village as stored by some models',
+    },
+    # 0x81 - undef[72]: "---"
+    # 0x82 - undef[72]: "---"
+    # 0x83 - undef[72]: "---"
+    # 0x84 - undef[72]: "---"
+    # 0x85 - undef[128]: "---"
     0x86 => { #http://dev.exiv2.org/issues/825
         Name => 'ManometerPressure',
         Writable => 'int16u',
@@ -1779,32 +1808,79 @@ my %shootingMode = (
     },
 );
 
+# PANA atom found in user data of MP4 videos (ref PH)
 %Image::ExifTool::Panasonic::PANA = (
     PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
     NOTES => q{
-        Tags extracted from the PANA user data found in MP4 videos from models such
-        as the DMC-FT20.
+        Tags extracted from the PANA and LEIC user data found in MP4 videos from
+        various Panasonic and Leica models.
     },
-    0 => {
+    0x00 => {
+        Name => 'Make',
+        Condition => '$$valPt =~ /^(LEICA|Panasonic)/', # (only seen "LEICA")
+        Groups => { 2 => 'Camera' },
+        Format => 'string[22]',
+        RawConv => '$$self{LeicaLEIC} = 1;$$self{Make} = $val',
+    },
+    0x04 => {
+        Name => 'Model',
+        Condition => '$$valPt =~ /^[^\0]{6}/ and not $$self{LeicaLEIC}',
+        Description => 'Camera Model Name',
+        Groups => { 2 => 'Camera' },
+        Format => 'string[16]',
+        RawConv => '$$self{Model} = $val',
+    },
+    0x0c => { # (FZ1000)
+        Name => 'Model',
+        Condition => '$$valPt =~ /^[^\0]{6}/ and not $$self{LeicaLEIC} and not $$self{Model}',
+        Description => 'Camera Model Name',
+        Groups => { 2 => 'Camera' },
+        Format => 'string[16]',
+        RawConv => '$$self{Model} = $val',
+    },
+    0x16 => {
+        Name => 'Model',
+        Condition => '$$self{LeicaLEIC}',
+        Description => 'Camera Model Name',
+        Groups => { 2 => 'Camera' },
+        Format => 'string[30]',
+        RawConv => '$$self{Model} = $val',
+    },
+    0x40 => {
         Name => 'ThumbnailTest',
-        Format => 'undef[0x1000]',
+        Format => 'undef[0x600]',
         Hidden => 1,
         RawConv => q{
-            if (substr($val,0x5c,3) eq "\xff\xd8\xff") {
+            if (substr($val,0x1c,3) eq "\xff\xd8\xff") { # offset 0x5c
                 $$self{ThumbType} = 1;
-            } elsif (substr($val,0x546,3) eq "\xff\xd8\xff") {
+            } elsif (substr($val,0x506,3) eq "\xff\xd8\xff") { # offset 0x546
                 $$self{ThumbType} = 2;
+            } elsif (substr($val,0x51e,3) eq "\xff\xd8\xff") { # offset 0x55e (Leica T)
+                $$self{ThumbType} = 3;
             } else {
                 $$self{ThumbType} = 0;
             }
             return undef;
         },
     },
-    4 => {
-        Name => 'Model',
-        Description => 'Camera Model Name',
-        Format => 'string[16]',
+    0x34 => {
+        Name => 'Version1',
+        Condition => '$$self{LeicaLEIC}',
+        Format => 'string[14]',
+    },
+    0x3e => {
+        Name => 'Version2',
+        Condition => '$$self{LeicaLEIC}',
+        Format => 'string[14]',
+    },
+    0x50 => {
+        Name => 'MakerNoteLeica5',
+        Condition => '$$self{LeicaLEIC}',
+        SubDirectory => {
+            TagTable => 'Image::ExifTool::Panasonic::Leica5',
+            ProcessProc => \&ProcessLeicaLEIC,
+        },
     },
     0x58 => {
         Name => 'ThumbnailWidth',
@@ -1847,6 +1923,28 @@ my %shootingMode = (
         Format => 'undef[$val{0x53e}]',
         Binary => 1,
     },
+    0x54e => { # (Leica T)
+        Name => 'ThumbnailWidth',
+        Condition => '$$self{ThumbType} == 3',
+        Notes => 'Leica X Vario',
+        Format => 'int32uRev', # (little-endian)
+    },
+    0x552 => { # (Leica T)
+        Name => 'ThumbnailHeight',
+        Condition => '$$self{ThumbType} == 3',
+        Format => 'int32uRev', # (little-endian)
+    },
+    0x556 => { # (Leica T)
+        Name => 'ThumbnailLength',
+        Condition => '$$self{ThumbType} == 3',
+        Format => 'int32uRev', # (little-endian)
+    },
+    0x55e => { # (Leica T)
+        Name => 'ThumbnailImage',
+        Condition => '$$self{ThumbType} == 3',
+        Format => 'undef[$val{0x556}]',
+        Binary => 1,
+    },
     0x4068 => {
         Name => 'ExifData',
         Condition => '$$valPt =~ /^\xff\xd8\xff\xe1..Exif\0\0/s',
@@ -1856,6 +1954,15 @@ my %shootingMode = (
             Start => 12,
         },
     },
+    0x4080 => { # (FZ1000)
+        Name => 'ExifData',
+        Condition => '$$valPt =~ /^\xff\xd8\xff\xe1..Exif\0\0/s',
+        SubDirectory => {
+            TagTable => 'Image::ExifTool::Exif::Main',
+            ProcessProc => \&Image::ExifTool::ProcessTIFF,
+            Start => 12,
+        },
+    },
 );
 
 # Panasonic Composite tags
@@ -1989,6 +2096,35 @@ sub WhiteBalanceConv($;$$)
 }
 
 #------------------------------------------------------------------------------
+# Process Leica makernotes in LEIC atom of MP4 videos (Leica T and X Vario)
+# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
+# Returns: 1 on success
+sub ProcessLeicaLEIC($$$)
+{
+    my ($et, $dirInfo, $tagTablePtr) = @_;
+    my $dataPt = $$dirInfo{DataPt};
+    my $dirStart = $$dirInfo{DirStart} || 0;
+    my $dirLen = $$dirInfo{DirLen} || (length($$dataPt) - $dirStart);
+    return 0 if $dirLen < 6;
+    SetByteOrder('II');
+    my $numEntries = Get16u($dataPt, $dirStart);
+    return 0 if $numEntries < 1 or $numEntries > 255;
+    my $size = Get32u($dataPt, $dirStart + 2);
+    return 0 if $size < $numEntries * 12 or $size + 6 > $dirLen;
+    # the Leica programmers want to make things difficult, so they store
+    # the entry count before the directory size, making it impossible to
+    # process as a standard TIFF IFD without a bit of reorganization...
+    Set16u($numEntries, $dataPt, $dirStart + 4);
+    my %dirInfo = %$dirInfo;
+    $dirInfo{DirStart} = $dirStart + 4;
+    $dirInfo{DirLen} = $size - 4;
+    $dirInfo{DataPos} -= $dirStart;
+    $dirInfo{Base} += $dirStart;
+    return Image::ExifTool::Exif::ProcessExif($et, \%dirInfo, $tagTablePtr);
+    return 1;
+}
+
+#------------------------------------------------------------------------------
 # Process MakerNote trailer written by Leica S2
 # Inputs: 0) ExifTool object ref, 1) new absolute position of Leica trailer when writing
 # Returns: On success: 1 when reading, directory data when writing; othewise undef
@@ -55,7 +55,7 @@ use vars qw($VERSION %pentaxLensTypes);
 use Image::ExifTool::Exif;
 use Image::ExifTool::HP;
 
-$VERSION = '2.76';
+$VERSION = '2.80';
 
 sub CryptShutterCount($$);
 sub PrintFilter($$$);
@@ -78,7 +78,7 @@ sub PrintFilter($$$);
         return undef if $inv;
         # *istD may report a series number of 4 for series 7 lenses
         $val =~ s/^4 /7 / and $$conv{$val} and return $$conv{$val} . " ($_[0])";
-        # cameras that don't recognize SDM lenses (ie. older K10 firmware)
+        # cameras that don't recognize SDM lenses (eg. older K10 firmware)
         # may report series 7 instead of 8
         $val =~ s/^7 /8 / and $$conv{$val} and return $$conv{$val} . " ? ($_[0])";
         return undef;
@@ -312,6 +312,7 @@ sub PrintFilter($$$);
     '8 28' => 'Sigma 18-250mm F3.5-6.3 DC Macro HSM', #27
     '8 29' => 'Sigma 35mm F1.4 DG HSM', #27
     '8 30' => 'Sigma 17-70mm F2.8-4 DC Macro HSM Contemporary', #27
+    '8 31' => 'Sigma 18-35mm F1.8 DC HSM', #27
     '8 32' => 'Sigma 30mm F1.4 DC HSM | A', #27
     '8 209' => 'HD PENTAX-DA 20-40mm F2.8-4 ED Limited DC WR', #29
     '8 210' => 'smc PENTAX-DA 18-270mm F3.5-6.3 ED SDM', #Helmut Schutz
@@ -353,6 +354,7 @@ sub PrintFilter($$$);
     '13 18' => 'smc PENTAX-D FA 645 55mm F2.8 AL [IF] SDM AW', #PH
     '13 19' => 'smc PENTAX-D FA 645 25mm F4 AL [IF] SDM AW', #PH
     '13 20' => 'HD PENTAX-D FA 645 90mm F2.8 ED AW SR', #PH
+    '13 253' => 'HD PENTAX-DA 645 28-45mm F4.5 ED AW SR', #Dominique Schrekling email
     # missing:
     # 'smc PENTAX-DA 645 25mm F4.0 AL SDM AW [IF]' ? different than D FA version?
 #
@@ -497,6 +499,7 @@ my %pentaxModelID = (
     0x12fde => 'WG-4 GPS', # (Ricoh)
     0x13006 => 'WG-20', # (Ricoh)
     0x13010 => '645Z',
+    0x1301a => 'K-S1',
 );
 
 # Pentax city codes - (PH, Optio WP)
@@ -1075,6 +1078,7 @@ my %binaryDataAttrs = (
         Name => 'AFPointSelected',
         Condition => '$$self{Model} !~ /K-3\b/',
         Writable => 'int16u',
+        Notes => 'all models but the K-3',
         PrintConvColumns => 2,
         PrintConv => [{
             # 0 - Contrast-detect AF? - PH (K-5)
@@ -1102,6 +1106,7 @@ my %binaryDataAttrs = (
     },{
         Name => 'AFPointSelected',
         Writable => 'int16u',
+        Notes => 'K-3',
         PrintConvColumns => 2,
         PrintConv => [{
             # 0 - Contrast-detect AF? - PH (K-5)
@@ -1124,7 +1129,7 @@ my %binaryDataAttrs = (
             5 => 'Top-right',
             6 => 'Upper-left',
             7 => 'Upper Near-left',
-            8 => 'Upper-midle',
+            8 => 'Upper-middle',
             9 => 'Upper Near-right',
             10 => 'Upper-right',
             11 => 'Far Left',
@@ -1144,6 +1149,39 @@ my %binaryDataAttrs = (
             25 => 'Bottom',
             26 => 'Bottom Near-right',
             27 => 'Bottom-right',
+            #forum5892
+            257 => 'Zone Select Top-left',
+            258 => 'Zone Select Top Near-left',
+            259 => 'Zone Select Top',
+            260 => 'Zone Select Top Near-right',
+            261 => 'Zone Select Top-right',
+            262 => 'Zone Select Upper-left',
+            263 => 'Zone Select Upper Near-left',
+            264 => 'Zone Select Upper-middle',
+            265 => 'Zone Select Upper Near-right',
+            266 => 'Zone Select Upper-right',
+            267 => 'Zone Select Far Left',
+            268 => 'Zone Select Left',
+            269 => 'Zone Select Near-left',
+            270 => 'Zone Select Center',
+            271 => 'Zone Select Near-right',
+            272 => 'Zone Select Right',
+            273 => 'Zone Select Far Right',
+            274 => 'Zone Select Lower-left',
+            275 => 'Zone Select Lower Near-left',
+            276 => 'Zone Select Lower-middle',
+            277 => 'Zone Select Lower Near-right',
+            278 => 'Zone Select Lower-right',
+            279 => 'Zone Select Bottom-left',
+            280 => 'Zone Select Bottom Near-left',
+            281 => 'Zone Select Bottom',
+            282 => 'Zone Select Bottom Near-right',
+            283 => 'Zone Select Bottom-right',
+        },{ #forum5892
+            0 => 'Single Point',
+            1 => 'Expanded Area 9-point (S)',
+            3 => 'Expanded Area 25-point (M)',
+            5 => 'Expanded Area 27-point (L)',
         }],
     }],
     0x000f => [{ #PH
@@ -1178,7 +1216,7 @@ my %binaryDataAttrs = (
                 4 => 'Top-right',
                 5 => 'Upper-left',
                 6 => 'Upper Near-left',
-                7 => 'Upper-midle',
+                7 => 'Upper-middle',
                 8 => 'Upper Near-right',
                 9 => 'Upper-right',
                 10 => 'Far Left',
@@ -1305,7 +1343,7 @@ my %binaryDataAttrs = (
         # ranges from 0-12 for my Optio WP - PH
         Notes => q{
             calibrated differently for different models.  For the Optio WP, add 6 to get
-            approximate Light Value.  May not be valid for some models, ie. Optio S
+            approximate Light Value.  May not be valid for some models, eg. Optio S
         },
     },
     0x0016 => { #PH
@@ -1896,7 +1934,7 @@ my %binaryDataAttrs = (
         # 246 [7], and 209 [18 (one of the first 20 shots)], so there must be a number
         # of test images shot in the factory. (But my new K-5 started at 1 - PH)
         # This count includes shutter actuations even if they don't result in a
-        # recorded image (ie. manual white balance frame or digital preview), but
+        # recorded image (eg. manual white balance frame or digital preview), but
         # does not include actuations due to Live View or video recording - PH
         Name => 'ShutterCount',
         Writable => 'undef',
@@ -2386,12 +2424,12 @@ my %binaryDataAttrs = (
     ],
     0x0209 => { #PH
         Name => 'AEMeteringSegments',
-        Condition => '$count <= 77', # (doesn't work for K-3)
         Format => 'int8u',
         Count => -1,
         Notes => q{
             measurements from each of the 16 AE metering segments for models such as the
-            K10D, and 77 metering segments for models such as the K-5, converted to LV
+            K10D, 77 metering segments for models such as the K-5, and 4050 metering
+            segments for the K-3, converted to LV
         },
         %convertMeteringSegments,
         #  16 metering segment              77 metering segment
@@ -2410,14 +2448,12 @@ my %binaryDataAttrs = (
     },
     0x020a => { #PH/JD/19
         Name => 'FlashMeteringSegments',
-        Condition => '$count <= 77', # (likely doesn't work for K-3)
         Format => 'int8u',
         Count => -1,
         %convertMeteringSegments,
     },
     0x020b => { #PH/JD/19
         Name => 'SlaveFlashMeteringSegments',
-        Condition => '$count <= 77', # (likely doesn't work for K-3)
         Format => 'int8u',
         Count => -1,
         Notes => 'used in wireless control mode',
@@ -2925,7 +2961,7 @@ my %binaryDataAttrs = (
     2.1 => {
         Name => 'MeteringMode2',
         Mask => 0x0f,
-        Notes => 'may not be valid for some models, ie. *ist D',
+        Notes => 'may not be valid for some models, eg. *ist D',
         PrintConv => {
             0 => 'Multi-segment',
             BITMASK => {
@@ -3529,7 +3565,7 @@ my %binaryDataAttrs = (
         Name => 'AEError',
         Format => 'int8s',
         # this is usually zero except in M exposure mode, but it can be non-zero
-        # in other modes (ie. if you hit an aperture limit in Tv mode)
+        # in other modes (eg. if you hit an aperture limit in Tv mode)
         ValueConv => '-($val-64)/8', # (negate to make overexposed positive)
         ValueConvInv => '-$val * 8 + 64',
     },
@@ -5506,6 +5542,7 @@ my %binaryDataAttrs = (
         Groups => { 1 => 'GPS', 2 => 'Time' },
         Format => 'rational64u[3]',
         ValueConv => 'Image::ExifTool::GPS::ConvertTimeStamp($val)',
+        PrintConv => 'Image::ExifTool::GPS::PrintTimeStamp($val)',
     },
     0x134 => {
         Name => 'GPSSatellites',
@@ -5678,7 +5715,7 @@ sub PrintFilter($$$)
 #------------------------------------------------------------------------------
 # Convert Pentax hex-based EV (modulo 8) to real number
 # Inputs: 0) value to convert
-# ie) 0x00 -> 0
+# eg) 0x00 -> 0
 #     0x03 -> 0.33333
 #     0x04 -> 0.5
 #     0x05 -> 0.66666
@@ -16,7 +16,7 @@ use strict;
 use vars qw($VERSION $AUTOLOAD);
 use Image::ExifTool qw(:DataAccess :Utils);
 
-$VERSION = '1.37';
+$VERSION = '1.38';
 
 sub WritePS($$);
 sub ProcessPS($$;$);
@@ -217,7 +217,8 @@ sub DecodeComment($$$;$)
                 @$lines = split /$altnl/, $buff, -1;
                 # handle case of DOS newline data inside file using Unix newlines
                 @$lines = ( $$lines[0] . $$lines[1] ) if @$lines == 2 and $$lines[1] eq $/;
-                @$lines[-1] .= $/ if $/ eq "\x0d\x0a";  # add back trailing newline
+                # add back trailing DOS newline if necessary
+                @$lines ? @$lines[-1] .= $/ : push @$lines, $/ if $/ eq "\x0d\x0a";
             } else {
                 push @$lines, $buff;
             }
@@ -40,7 +40,7 @@ use vars qw($VERSION $AUTOLOAD);
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 
-$VERSION = '1.80';
+$VERSION = '1.83';
 
 sub FixWrongFormat($);
 sub ProcessMOV($$;$);
@@ -166,6 +166,7 @@ my %ftypLookup = (
     'sdv ' => 'SD Memory Card Video', # various?
     'ssc1' => 'Samsung stereoscopic, single stream',
     'ssc2' => 'Samsung stereoscopic, dual stream',
+    'XAVC' => 'Sony XAVC', #PH
 );
 
 # information for time/date-based tags (time zero is Jan 1, 1904)
@@ -302,6 +303,13 @@ my %graphicsMode = (
         L<http://developer.apple.com/mac/library/documentation/QuickTime/QTFF/QTFFChap1/qtff1.html>
         for the official specification.
     },
+    meta => { # 'meta' is found here in my Sony ILCE-7S MP4 sample - PH
+        Name => 'Meta',
+        SubDirectory => {
+            TagTable => 'Image::ExifTool::QuickTime::Meta',
+            Start => 4, # skip 4-byte version number header
+        },
+    },
     free => [
         {
             Name => 'KodakFree',
@@ -1326,10 +1334,11 @@ my %graphicsMode = (
     },
     # CNDB - 2112 bytes (550D)
     # CNDM - 4 bytes - 0xff,0xd8,0xff,0xd9 (S95)
+    # CNDG - 10232 bytes, mostly zeros (N100)
     # ---- Casio ----
     QVMI => { #PH
         Name => 'CasioQVMI',
-        # Casio stores standard EXIF-format information in MOV videos (ie. EX-S880)
+        # Casio stores standard EXIF-format information in MOV videos (eg. EX-S880)
         SubDirectory => {
             TagTable => 'Image::ExifTool::Exif::Main',
             ProcessProc => \&Image::ExifTool::Exif::ProcessExif, # (because ProcessMOV is default)
@@ -1446,7 +1455,7 @@ my %graphicsMode = (
         Name => 'PentaxPreview',
         SubDirectory => { TagTable => 'Image::ExifTool::Pentax::PXTH' },
     },
-    PXMN => { #PH (Pentax K-01)
+    PXMN => [{ #PH (Pentax K-01)
         Name => 'MakerNotePentax5b',
         Condition => '$$valPt =~ /^PENTAX \0MM/',
         SubDirectory => {
@@ -1456,7 +1465,20 @@ my %graphicsMode = (
             Base => '$start - 10',
             ByteOrder => 'BigEndian',
         },
-    },
+    },{ #PH (Pentax 645Z)
+        Name => 'MakerNotePentax5c',
+        Condition => '$$valPt =~ /^PENTAX \0II/',
+        SubDirectory => {
+            TagTable => 'Image::ExifTool::Pentax::Main',
+            ProcessProc => \&Image::ExifTool::Exif::ProcessExif, # (because ProcessMOV is default)
+            Start => 10,
+            Base => '$start - 10',
+            ByteOrder => 'LittleEndian',
+        },
+    },{
+        Name => 'MakerNotePentaxUnknown',
+        Binary => 1,
+    }],
     # ---- Ricoh ----
     RTHU => { #PH (GR)
         Name => 'PreviewImage',
@@ -1755,7 +1777,10 @@ my %graphicsMode = (
    'xml ' => {
         Name => 'XML',
         Flags => [ 'Binary', 'Protected', 'BlockExtract' ],
-        SubDirectory => { TagTable => 'Image::ExifTool::XMP::Main' },
+        SubDirectory => {
+            TagTable => 'Image::ExifTool::XMP::XML',
+            IgnoreProp => { NonRealTimeMeta => 1 }, # ignore container for Sony 'nrtm'
+        },
     },
    'keys' => {
         Name => 'Keys',
@@ -4215,7 +4240,7 @@ my %graphicsMode = (
     'iTunEXTC' => {
         Name => 'ContentRating',
         Notes => 'standard | rating | score | reasons',
-        # ie. 'us-tv|TV-14|500|V', 'mpaa|PG-13|300|For violence and sexuality'
+        # eg. 'us-tv|TV-14|500|V', 'mpaa|PG-13|300|For violence and sexuality'
         # (see http://shadowofged.blogspot.ca/2008/06/itunes-content-ratings.html)
     },
     'iTunNORM' => {
@@ -4858,6 +4883,7 @@ my %graphicsMode = (
 #   mp4s         16      esds
 #   tmcd         34      name
 #
+    ftab => { Name => 'FontTable',  Format => 'undef', ValueConv => 'substr($val, 5)' },
 );
 
 # MP4 data information box (ref 5)
@@ -5021,6 +5047,7 @@ my %graphicsMode = (
            'url '=> 'URL', #3
             vide => 'Video Track',
             subp => 'Subpicture', #http://www.google.nl/patents/US7778526
+            nrtm => 'Non-Real Time Metadata', #PH (Sony ILCE-7S) [how is this different from "meta"?]
         },
     },
     12 => { #PH
@@ -5199,7 +5226,7 @@ sub CalcRotation($)
     my $et = shift;
     my $value = $$et{VALUE};
     my ($i, $track);
-    # get the video track family 1 group (ie. "Track1");
+    # get the video track family 1 group (eg. "Track1");
     for ($i=0; ; ++$i) {
         my $idx = $i ? " ($i)" : '';
         my $tag = "HandlerType$idx";
@@ -5676,13 +5703,14 @@ sub ProcessMOV($$;$)
             $et->SetFileType();       # MOV
         }
         SetByteOrder('MM');
+        $$et{PRIORITY_DIR} = 'XMP';   # have XMP take priority
     }
     for (;;) {
         if ($size < 8) {
             if ($size == 0) {
                 if ($dataPt) {
                     # a zero size isn't legal for contained atoms, but Canon uses it to
-                    # terminate the CNTH atom (ie. CanonEOS100D.mov), so tolerate it here
+                    # terminate the CNTH atom (eg. CanonEOS100D.mov), so tolerate it here
                     my $pos = $raf->Tell() - 4;
                     $raf->Seek(0,2);
                     my $str = $$dirInfo{DirName} . ' with ' . ($raf->Tell() - $pos) . ' bytes';
@@ -5831,16 +5859,16 @@ sub ProcessMOV($$;$)
                         $base -= $dPos;
                     }
                     my %dirInfo = (
-                        DataPt   => \$val,
-                        DataLen  => $size,
-                        DirStart => $start,
-                        DirLen   => $size - $start,
-                        DirName  => $$subdir{DirName} || $$tagInfo{Name},
-                        HasData  => $$subdir{HasData},
-                        Multi    => $$subdir{Multi},
-                        DataPos  => $dPos,
-                        # Base needed for IsOffset tags in binary data
-                        Base     => $base,
+                        DataPt     => \$val,
+                        DataLen    => $size,
+                        DirStart   => $start,
+                        DirLen     => $size - $start,
+                        DirName    => $$subdir{DirName} || $$tagInfo{Name},
+                        HasData    => $$subdir{HasData},
+                        Multi      => $$subdir{Multi},
+                        IgnoreProp => $$subdir{IgnoreProp}, # (XML hack)
+                        DataPos    => $dPos,
+                        Base       => $base, # (needed for IsOffset tags in binary data)
                     );
                     $dirInfo{BlockInfo} = $tagInfo if $$tagInfo{BlockExtract};
                     if ($$subdir{ByteOrder} and $$subdir{ByteOrder} =~ /^Little/) {
@@ -144,7 +144,7 @@ is an explanation of the meaning of each special key:
   NAMESPACE : Namespace prefix for tags in the XMP table.  If this isn't a
   standard namespace defined in %Image::ExifTool::XMP::nsURI, then the URI must
   be defined as well (however, this is not recommended for pre-defined
-  namespaces because then non-standard namespace prefixes won't be recognized). 
+  namespaces because then non-standard namespace prefixes won't be recognized).
   To define the URI, the NAMESPACE value is a reference to a hash where the key
   is the namespace prefix and and the value is the URI (alternatively, a
   reference to a 2-element array containing the prefix and URI is also allowed
@@ -168,7 +168,7 @@ is an explanation of the meaning of each special key:
   LANG_INFO : Code reference to a routine which returns a reference to a
   language-specific tag information hash.  The routine takes two arguments: a
   reference to the non-specific tagInfo hash, and the language code. Used only
-  in tables with writable tags which support tag name language extensions (ie.
+  in tables with writable tags which support tag name language extensions (eg.
   MIE and XMP).
 
   VARS : Hash used to store additional parameters.  Individual modules may use
@@ -256,7 +256,7 @@ numerical.
                   added to the Format name of any BinaryData tag with a size in
                   brackets.  In this case, subsequent offsets are adjusted by
                   the value length minus the size of the default table FORMAT
-                  (ie. "var_int16u[10]" causes subsequent offsets to be
+                  (eg. "var_int16u[10]" causes subsequent offsets to be
                   incremented by sizeof(int16u) * 10 - sizeof(int8u) if the
                   default table FORMAT is "int8u").  Note that all "var_" Format
                   tags (as well as tags with values used within "var_" Format
@@ -337,7 +337,7 @@ numerical.
                   'GotGroups' - [reserved] flag used internally to indicate that
                   the Groups hash has been initialized for this tag.
 
-                  'Hidden' - set to hide tag from the TagName documentation. 
+                  'Hidden' - set to hide tag from the TagName documentation.
                   Also suppresses verbose output of a BinaryData tag.
 
                   'IsOffset' - flag set if the tag represents an offset to some
@@ -355,7 +355,7 @@ numerical.
                   the List value specifies the type: 'Bag', 'Seq' or 'Alt'.  As
                   well, a value of '1' is used internally in XMP to allow list
                   behaviour for a flattened tag which is itself not a list
-                  element (ie. a member of list of structures).  Note that in
+                  element (eg. a member of list of structures).  Note that in
                   ExifTool an XMP lang-alt tag (Writable="lang-alt") is NOT a
                   list-type tag (unless it is a list of lang-alt lists, which is
                   uncommon).
@@ -389,7 +389,7 @@ numerical.
                   MakerNotes tags are permanent unless otherwise specified.
 
                   'PrintHex' - specifies that unknown PrintConv values should
-                  be printed in hex (ie. 'Unknown (0x01)').  Also causes
+                  be printed in hex (eg. 'Unknown (0x01)').  Also causes
                   numerical tag values to be printed in hex in the HTML tag name
                   documentation.
 
@@ -434,7 +434,7 @@ numerical.
                   'Notes' entry for a description of the table.
 
                   'SetResourceName' - [Photoshop tags only] set to 1 to append
-                  resource name to the extracted value (ie. 'VALUE/#NAME#/').
+                  resource name to the extracted value (eg. 'VALUE/#NAME#/').
                   Also allows resource name to be appended when writing new
                   values.  May be set to any value other than 1 for a default
                   resource name to use when writing if an appended name is not
@@ -646,7 +646,8 @@ numerical.
                   don't exist.  Beware that the elements of @val, @prt and @raw
                   may be undefined for Desire'd tags.  If no tags are Require'd,
                   at least one of the Desire'd tags must exist for the Composite
-                  tag to be generated.
+                  tag to be generated.  If there are no Require'd or Desire'd
+                  tags, then then Composite tag is always generated.
 
   Inhibit       : [Composite tags only] Similar to the Require and Desire
                   hashes, except that the Composite tag is NOT built if any of
@@ -706,7 +707,7 @@ numerical.
                   expression may access $self, $tagInfo and $wantGroup.  Returns
                   error string, or undef on success, and may set $val to
                   something other than undef.  May return empty string ('') to
-                  suppress warning messages but not delete tag (ie. when
+                  suppress warning messages but not delete tag (eg. when
                   deleting only associated tags).
 
   WriteCondition: [Writable EXIF tags only] Specifies a condition to be
@@ -746,6 +747,12 @@ numerical.
                   image offset, and is only used if the preview is outside the
                   APP1 EXIF segment.
 
+  BitsPerWord   : [BITMASK tags only] Number of bits per decoded word.  Defaults
+                  to 32 if not specified.
+
+  BitsTotal     : [Writable BITMASK tags only] Total number of bits in bit mask.
+                  Defaults to BitsPerWord if not specified.
+
   Struct        : [XMP tags only] Reference to structure hash for structured XMP
                   tags.  See "STRUCTURES" section below for more details.  (For
                   backward compatibility, this may be a name to an entry in
@@ -781,6 +788,10 @@ numerical.
                   directory after this tag.  Must have corresponding DATAMEMBER
                   entry in writable tables.  Must not have Unknown set.
 
+  LargeTag      : [BinaryData tags only] Flag to indicate that the data for this
+                  tag is large, and that it shouldn't be stored in the %val
+                  hash, even if the tag exists as a DATAMEMBER.
+
   SetBase       : [QuickTime and BinaryData tags only] Sets ExifTool BASE offset
                   for use when ExtractInfo is called with the ReEntry flag from
                   inside the RawConv of a tag.
@@ -817,8 +828,8 @@ numerical.
                   Composite tags.
 
   LangCode      : [reserved] Used internally to indicate language code for
-                  alternate language tags (ie. 'fr').  Only used with formats
-                  which support alternate languages (ie. XMP, MIE, etc).
+                  alternate language tags (eg. 'fr').  Only used with formats
+                  which support alternate languages (eg. XMP, MIE, etc).
 
   SubDirectory {  If it exists, this specifies the start of a new subdirectory.
                   It contains a collection of variables which specify the type
@@ -1104,7 +1104,7 @@ my %riffMimeType = (
         },
         Desire => {
             # check FrameCount because this calculation only applies
-            # to audio-only files (ie. WAV)
+            # to audio-only files (eg. WAV)
             2 => 'FrameCount',
             3 => 'VideoFrameCount',
         },
@@ -1133,7 +1133,7 @@ sub ConvertRIFFDate($)
     my @part = split ' ', $val;
     my $mon;
     if (@part >= 5 and $mon = $monthNum{ucfirst(lc($part[1]))}) {
-        # the standard AVI date format (ie. "Mon Mar 10 15:04:43 2003")
+        # the standard AVI date format (eg. "Mon Mar 10 15:04:43 2003")
         $val = sprintf("%.4d:%.2d:%.2d %s", $part[4],
                        $mon, $part[2], $part[3]);
     } elsif ($val =~ m{(\d{4})/\s*(\d+)/\s*(\d+)/?\s+(\d+):\s*(\d+)\s*(P?)}) {
@@ -1171,9 +1171,9 @@ sub CalcDuration($@)
     my @keyList;
     for (;;) {
         # this is annoying.  Apparently (although I couldn't verify this), FrameCount
-        # in the RIFF header includes multiple video tracks if they exist (ie. with the
+        # in the RIFF header includes multiple video tracks if they exist (eg. with the
         # FujiFilm REAL 3D AVI's), but the video stream information isn't reliable for
-        # some cameras (ie. Olympus FE models), so use the video stream information
+        # some cameras (eg. Olympus FE models), so use the video stream information
         # only if the RIFF header duration is 2 to 3 times longer
         my $dur1 = $val[1] / $val[0] if $val[0];
         if ($val[2] and $val[3]) {
@@ -1410,7 +1410,7 @@ sub ProcessRIFF($$)
                 Base    => $pos,
             );
         } elsif ($tag eq 'RIFF') {
-            # don't read into RIFF chunk (ie. concatenated video file)
+            # don't read into RIFF chunk (eg. concatenated video file)
             $raf->Read($buff, 4) == 4 or $err=1, last;
             # extract information from remaining file as an embedded file
             $$et{DOC_NUM} = ++$$et{DOC_COUNT}
@@ -270,7 +270,7 @@ sub ProcessRTF($$)
             $et->Warn('Unterminated information group');
             last;
         }
-        # process info commands (ie. "\author", "\*\copyright");
+        # process info commands (eg. "\author", "\*\copyright");
         while ($info =~ /\{[\n\r]*(\\\*[\n\r]*)?\\([a-zA-Z]+)([^a-zA-Z])/g) {
             pos($info) = pos($info) - 1 if $3 ne ' ';
             my $tag = $2;
@@ -18,7 +18,7 @@ use vars qw($VERSION);
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 
-$VERSION = '1.27';
+$VERSION = '1.28';
 
 sub ProcessRicohText($$$);
 sub ProcessRicohRMETA($$$);
@@ -48,7 +48,7 @@ my %ricohLensIDs = (
     0x0002 => { #PH
         Name => 'FirmwareVersion',
         Writable => 'string',
-        # ie. "Rev0113" is firmware version 1.13
+        # eg. "Rev0113" is firmware version 1.13
         PrintConv => '$val=~/^Rev(\d+)$/ ? sprintf("%.2f",$1/100) : $val',
         PrintConvInv => '$val=~/^(\d+)\.(\d+)$/ ? sprintf("Rev%.2d%.2d",$1,$2) : $val',
     },
@@ -433,6 +433,38 @@ my %ricohLensIDs = (
     },
 );
 
+# Ricoh type 2 maker notes (ref PH)
+# (similar to Kodak::Type11 and GE::Main)
+%Image::ExifTool::Ricoh::Type2 = (
+    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
+    NOTES => q{
+        Tags written by models such as the Ricoh HZ15 and the Pentax XG-1.  These
+        are not writable due to numerous formatting errors as written by these
+        cameras.
+    },
+    # 0x104 - int32u: 1
+    # 0x200 - int32u[3]: 0 0 0
+    # 0x202 - int16u: 0 (GE Macro?)
+    # 0x203 - int16u: 0,3 (Kodak PictureEffect?)
+    # 0x204 - rational64u: 0/10
+    # 0x206 - float[6]: (not really float because size should be 2 bytes)
+    # 0x207 - string[4]: zeros (GE/Kodak Model?)
+    0x300 => {
+        # brutal.  There are lots of errors in the XG-1 maker notes.  For the XG-1,
+        # 0x300 has a value of "XG-1Pentax".  The "XG-1" part is likely an improperly
+        # stored 0x207 RicohModel, resulting in an erroneous 4-byte offset for this tag
+        Name => 'RicohMake',
+        Writable => 'undef',
+        ValueConv => '$val =~ s/ *$//; $val',
+    },
+    # 0x306 - int16u: 1
+    # 0x500 - int16u: 0
+    # 0x501 - int16u: 0
+    # 0x502 - int16u: 0
+    # 0x9c9c - int8u[6]: ?
+    # 0xadad - int8u[20480]: ?
+);
+
 # Ricoh image info (ref 2)
 %Image::ExifTool::Ricoh::ImageInfo = (
     GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
@@ -10,7 +10,7 @@ package Image::ExifTool;
 
 use strict;
 
-sub ShiftTime($$$;$);
+sub ShiftTime($$;$$);
 
 #------------------------------------------------------------------------------
 # apply shift to value in new value hash
@@ -277,14 +277,16 @@ sub ShiftNumber($$$;$)
 
 #------------------------------------------------------------------------------
 # Shift date/time string
-# Inputs: 0) date/time string, 1) shift string, 2) shift direction (+1 or -1)
+# Inputs: 0) date/time string, 1) shift string, 2) shift direction (+1 or -1),
+#            or 0 or undef to take shift direction from sign of shift,
 #         3) reference to ShiftOffset hash (with Date, DateTime, Time, Timezone keys)
 # Returns: error string or undef on success and date/time string is updated
-sub ShiftTime($$$;$)
+sub ShiftTime($$;$$)
 {
     local $_;
     my ($val, $shift, $dir, $shiftOffset) = @_;
     my (@time, @shift, @toTime, $mode, $needShiftOffset, $dec);
+    $dir or $dir = ($shift =~ s/^(\+|-)// and $1 eq '-') ? -1 : 1;
 #
 # figure out what we are dealing with (time, date or date/time)
 #
@@ -470,9 +472,9 @@ values.
 
 =head1 DETAILS
 
-Time shifts are applied to standard EXIF-formatted date/time values (ie.
+Time shifts are applied to standard EXIF-formatted date/time values (eg.
 C<2005:03:14 18:55:00>).  Date-only and time-only values may also be
-shifted, and an optional timezone (ie. C<-05:00>) is also supported.  Here
+shifted, and an optional timezone (eg. C<-05:00>) is also supported.  Here
 are some general rules and examples to explain how shift strings are
 interpreted:
 
@@ -19,7 +19,7 @@ package Image::ExifTool::Shortcuts;
 use strict;
 use vars qw($VERSION);
 
-$VERSION = '1.51';
+$VERSION = '1.53';
 
 # this is a special table used to define command-line shortcuts
 # (documentation Notes may be added for these via %shortcutNotes in BuildTagLookup.pm)
@@ -143,6 +143,7 @@ $VERSION = '1.51';
         'MakerNoteKodak8c',
         'MakerNoteKodak9',
         'MakerNoteKodak10',
+        'MakerNoteKodak11',
         'MakerNoteKodakUnknown',
         'MakerNoteKyocera',
         'MakerNoteMinolta',
@@ -171,6 +172,7 @@ $VERSION = '1.51';
         'MakerNotePhaseOne',
         'MakerNoteReconyx',
         'MakerNoteRicoh',
+        'MakerNoteRicoh2',
         'MakerNoteRicohText',
         'MakerNoteSamsung1a',
         'MakerNoteSamsung1b',
@@ -233,6 +235,25 @@ $VERSION = '1.51';
         'IFD0:XPKeywords',
         'IFD0:XPSubject',
     ],
+    # large binary data tags which won't be loaded if excluded when extracting
+    LargeTags => [
+        'CanonVRD',
+        'DLOData',
+        'EXIF',
+        'ICC_Profile',
+        'IDCPreviewImage',
+        'ImageData',
+        'IPTC',
+        'JpgFromRaw',
+        'OriginalRawImage',
+        'OtherImage',
+        'PreviewImage',
+        'ThumbnailImage',
+        'TIFFPreview',
+        'XML',
+        'XMP',
+        'ZoomedPreviewImage',
+    ],
 );
 
 #------------------------------------------------------------------------------
@@ -16,7 +16,7 @@ use strict;
 use vars qw($VERSION %sigmaLensTypes);
 use Image::ExifTool::Exif;
 
-$VERSION = '1.13';
+$VERSION = '1.14';
 
 # sigma LensType lookup (ref PH)
 %sigmaLensTypes = (
@@ -45,6 +45,7 @@ $VERSION = '1.13';
     1003 => 'Sigma 19mm F2.8', # (DP1 Merrill kit)
     1004 => 'Sigma 30mm F2.8', # (DP2 Merrill kit)
     1005 => 'Sigma 50mm F2.8 Macro', # (DP3 Merrill kit)
+    1007 => 'Sigma 30mm F2.8', # (DP2 Quattro kit)
     8900 => 'Sigma 70-300mm F4-5.6 DG OS', # (SD15)
     'A100' => 'Sigma 24-70mm F2.8 DG Macro', # (SD15)
     # 'FFFF' - seen this for a 28-70mm F2.8 lens
@@ -247,10 +248,10 @@ $VERSION = '1.13';
     0x001c => [ #PH
         {
             Name => 'PreviewImageSize',
-            Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
+            Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
             Notes => q{
-                PreviewImageStart for the SD1 and Merrill models, and PreviewImageSize for
-                others
+                PreviewImageStart for the SD1 and Merrill/Quattro models, and
+                PreviewImageSize for others
             },
             Writable => 'int16u',
             Count => 2,
@@ -267,10 +268,10 @@ $VERSION = '1.13';
     0x001d => [ #PH
         {
             Name => 'MakerNoteVersion',
-            Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
+            Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
             Notes => q{
-                PreviewImageLength for the SD1 and Merrill models, and MakerNoteVersion for
-                others
+                PreviewImageLength for the SD1 and Merrill/Quattro models, and
+                MakerNoteVersion for others
             },
             Writable => 'undef',
         },{
@@ -285,7 +286,7 @@ $VERSION = '1.13';
     # 0x001e - int16u: 0, 4, 13 - flash mode for other models?
     0x001e => { #PH
         Name => 'PreviewImageSize',
-        Condition => '$$self{Model} =~ /^SIGMA DP\d Merrill$/',
+        Condition => '$$self{Model} =~ /^SIGMA (DP\d (Merrill|Quattro))$/i',
         Notes => 'only valid for some models',
         Writable => 'int16u',
         Count => 2,
@@ -293,8 +294,11 @@ $VERSION = '1.13';
     0x001f => [ #PH
         {
             Name => 'AFPoint', # (NC -- invalid for SD9,SD14?)
-            Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-            Notes => 'MakerNoteVersion for the SD1 and Merrill models, and AFPoint for others',
+            Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+            Notes => q{
+                MakerNoteVersion for the SD1 and Merrill/Quattro models, and AFPoint for
+                others
+            },
             # values: "", "Center", "Center,Center", "Right,Right"
         },{
             Name => 'MakerNoteVersion',
@@ -305,35 +309,35 @@ $VERSION = '1.13';
     # 0x0021 - string: " " for most models, or int8u[2]: '3 3' for the DP3 Merrill
     0x0022 => { #PH (NC)
         Name => 'FileFormat',
-        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'models other than the SD1 and Merrill models',
+        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'models other than the SD1 and Merrill/Quattro models',
         # values: "JPG", "JPG-S", "JPG-P", "X3F", "X3F-S"
     },
     # 0x0023 - string: "", 10, 83, 131, 145, 150, 152, 169
     0x0024 => { # (invalid for SD9,SD14?)
         Name => 'Calibration',
-        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'models other than the SD1 and Merrill models',
+        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'models other than the SD1 and Merrill/Quattro models',
     },
     # 0x0025 - string: "", "0.70", "0.90"
     # 0x0026-2b - int32u: 0
     0x0026 => { #PH (NC)
         Name => 'FileFormat',
-        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'SD1 and Merrill models only',
+        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'SD1 and Merrill/Quattro models only',
     },
     0x0027 => { #PH
         Name => 'LensType',
-        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'SD1 and Merrill models only',
+        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'SD1 and Merrill/Quattro models only',
         SeparateTable => 'LensType',
         ValueConvInv => '$val=~s/\.\d+$//; $val', # (truncate decimal part)
         PrintConv => \%sigmaLensTypes,
     },
     0x002a => { #PH
         Name => 'LensFocalRange',
-        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'SD1 and Merrill models only',
+        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'SD1 and Merrill/Quattro models only',
         Writable => 'rational64u',
         Count => 2,
         PrintConv => '$val=~s/ / to /; $val',
@@ -343,8 +347,8 @@ $VERSION = '1.13';
         Name => 'LensMaxApertureRange',
         # for most models this gives the max aperture at the long/short focal lengths,
         # but for some models this gives the min/max aperture
-        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'SD1 and Merrill models only',
+        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'SD1 and Merrill/Quattro models only',
         Writable => 'rational64u',
         Count => 2,
         PrintConv => '$val=~s/ / to /; $val',
@@ -374,10 +378,10 @@ $VERSION = '1.13';
     0x0030 => [ #PH
         {
             Name => 'LensApertureRange',
-            Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
+            Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
             Notes => q{
-                Calibration for the SD1 and Merrill models, and LensApertureRange for
-                others. Note that LensApertureRange changes with focal length, and some
+                Calibration for the SD1 and Merrill/Quattro models, and LensApertureRange
+                for others. Note that LensApertureRange changes with focal length, and some
                 models report the maximum aperture here
             },
         },{
@@ -386,8 +390,8 @@ $VERSION = '1.13';
     ],
     0x0031 => { #PH
         Name => 'FNumber',
-        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'models other than the SD1 and Merrill models',
+        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'models other than the SD1 and Merrill/Quattro models',
         Writable => 'rational64u',
         PrintConv => 'sprintf("%.1f",$val)',
         PrintConvInv => '$val',
@@ -395,8 +399,8 @@ $VERSION = '1.13';
     },
     0x0032 => { #PH
         Name => 'ExposureTime',
-        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'models other than the SD1 and Merrill models',
+        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'models other than the SD1 and Merrill/Quattro models',
         Writable => 'rational64u',
         PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
         PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
@@ -404,8 +408,8 @@ $VERSION = '1.13';
     },
     0x0033 => { #PH
         Name => 'ExposureTime2',
-        Condition => '$$self{Model} !~ / (SD1|SD9|SD15|Merrill)$/',
-        Notes => 'models other than the SD1, SD9, SD15 and Merrill models',
+        Condition => '$$self{Model} !~ / (SD1|SD9|SD15|Merrill|Quattro)$/',
+        Notes => 'models other than the SD1, SD9, SD15 and Merrill/Quattro models',
         Writable => 'string',
         ValueConv => '$val * 1e-6',
         ValueConvInv => 'int($val * 1e6 + 0.5)',
@@ -414,15 +418,15 @@ $VERSION = '1.13';
     },
     0x0034 => { #PH
         Name => 'BurstShot',
-        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'models other than the SD1 and Merrill models',
+        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'models other than the SD1 and Merrill/Quattro models',
         Writable => 'int32u',
     },
     # 0x0034 - int32u: 0,1,2,3 or 4
     0x0035 => { #PH
         Name => 'ExposureCompensation',
-        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'models other than the SD1 and Merrill models',
+        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'models other than the SD1 and Merrill/Quattro models',
         Writable => 'rational64s',
         # add a '+' sign to positive values
         PrintConv => '$val and $val =~ s/^(\d)/\+$1/; $val',
@@ -432,28 +436,28 @@ $VERSION = '1.13';
     # 0x0037-38 - string: ""
     0x0039 => { #PH (invalid for SD9, SD14?)
         Name => 'SensorTemperature',
-        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'models other than the SD1 and Merrill models',
+        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'models other than the SD1 and Merrill/Quattro models',
         # (string format)
         PrintConv => 'IsInt($val) ? "$val C" : $val',
         PrintConvInv => '$val=~s/ ?C$//; $val',
     },
     0x003a => { #PH
         Name => 'FlashExposureComp',
-        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'models other than the SD1 and Merrill models',
+        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'models other than the SD1 and Merrill/Quattro models',
         Writable => 'rational64s',
     },
     0x003b => { #PH (how is this different from other Firmware?)
         Name => 'Firmware',
-        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'models other than the SD1 and Merrill models',
+        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'models other than the SD1 and Merrill/Quattro models',
         Priority => 0,
     },
     0x003c => { #PH
         Name => 'WhiteBalance',
-        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'models other than the SD1 and Merrill models',
+        Condition => '$$self{Model} !~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'models other than the SD1 and Merrill/Quattro models',
         Priority => 0,
     },
     0x003d => { #PH (new for SD15 and SD1)
@@ -462,13 +466,13 @@ $VERSION = '1.13';
     },
     0x0048 => { #PH
         Name => 'LensApertureRange',
-        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'SD1 and Merrill models only',
+        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'SD1 and Merrill/Quattro models only',
     },
     0x0049 => { #PH
         Name => 'FNumber',
-        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'SD1 and Merrill models only',
+        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'SD1 and Merrill/Quattro models only',
         Writable => 'rational64u',
         PrintConv => 'sprintf("%.1f",$val)',
         PrintConvInv => '$val',
@@ -476,61 +480,70 @@ $VERSION = '1.13';
     },
     0x004a => { #PH
         Name => 'ExposureTime',
-        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'SD1 and Merrill models only',
+        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'SD1 and Merrill/Quattro models only',
         Writable => 'rational64u',
         PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
         PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
         Priority => 0,
     },
-    0x004b => { #PH
+    0x004b => [{ #PH
         Name => 'ExposureTime2',
         Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'SD1 and Merrill models only',
+        Notes => 'SD1 and Merrill/Quattro models only',
         Writable => 'string',
         PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
         PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
-    },
+    },{
+        Name => 'ExposureTime2',
+        Condition => '$$self{Model} =~ /^SIGMA dp\d Quattro$/i',
+        Notes => 'SD1 and Merrill/Quattro models only',
+        Writable => 'string',
+        ValueConv => '$val / 1000000',
+        ValueConvInv => '$val * 1000000',
+        PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
+        PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
+    }],
     0x004d => { #PH
         Name => 'ExposureCompensation',
-        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'SD1 and Merrill models only',
+        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'SD1 and Merrill/Quattro models only',
         Writable => 'rational64s',
         # add a '+' sign to positive values
         PrintConv => '$val and $val =~ s/^(\d)/\+$1/; $val',
         PrintConvInv => '$val',
     },
-    # 0x0054 - string: "F20"
+    # 0x0054 - string: "F20","F23"
     0x0055 => { #PH
         Name => 'SensorTemperature',
-        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'SD1 and Merrill models only',
+        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'SD1 and Merrill/Quattro models only',
         # (string format)
         PrintConv => 'IsInt($val) ? "$val C" : $val',
         PrintConvInv => '$val=~s/ ?C$//; $val',
     },
     0x0056 => { #PH (NC)
         Name => 'FlashExposureComp',
-        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'SD1 and Merrill models only',
+        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'SD1 and Merrill/Quattro models only',
         Writable => 'rational64s',
     },
     0x0057 => { #PH (how is this different from other Firmware?)
         Name => 'Firmware',
-        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'SD1 and Merrill models only',
+        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'SD1 and Merrill/Quattro models only',
         Priority => 0,
     },
     0x0058 => { #PH
         Name => 'WhiteBalance',
-        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'SD1 and Merrill models only',
+        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'SD1 and Merrill/Quattro models only',
         Priority => 0,
     },
     0x0059 => { #PH
         Name => 'DigitalFilter',
-        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/',
-        Notes => 'SD1 and Merrill models only',
+        Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d (Merrill|Quattro))$/i',
+        Notes => 'SD1 and Merrill/Quattro models only',
         # seen: Standard, Landscape,Monochrome,Neutral,Portrait,Sepia,Vivid
     },
     # 0x005a/b/c - rational64s: 0/10 for the SD1
@@ -16,7 +16,7 @@ use vars qw($VERSION);
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Sigma;
 
-$VERSION = '1.21';
+$VERSION = '1.22';
 
 sub ProcessX3FHeader($$$);
 sub ProcessX3FDirectory($$$);
@@ -33,6 +33,9 @@ sub ProcessX3FProperties($$$);
     Header => {
         SubDirectory => { TagTable => 'Image::ExifTool::SigmaRaw::Header' },
     },
+    Header4 => {
+        SubDirectory => { TagTable => 'Image::ExifTool::SigmaRaw::Header4' },
+    },
     HeaderExt => {
         SubDirectory => { TagTable => 'Image::ExifTool::SigmaRaw::HeaderExt' },
     },
@@ -61,6 +64,7 @@ sub ProcessX3FProperties($$$);
 %Image::ExifTool::SigmaRaw::Header = (
     PROCESS_PROC => \&ProcessX3FHeader,
     FORMAT => 'int32u',
+    NOTES => 'Information extracted from the header of an X3F file.',
     1 => {
         Name => 'FileVersion',
         ValueConv => '($val >> 16) . "." . ($val & 0xffff)',
@@ -89,9 +93,27 @@ sub ProcessX3FProperties($$$);
     },
 );
 
+# X3F version 4 header structure (ref PH)
+%Image::ExifTool::SigmaRaw::Header4 = (
+    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
+    FORMAT => 'int32u',
+    NOTES => 'Header information for version 4.0 or greater X3F.',
+    1 => {
+        Name => 'FileVersion',
+        ValueConv => '($val >> 16) . "." . ($val & 0xffff)',
+    },
+    # 8 - undef[4]: 4 random ASCII characters
+    10 => 'ImageWidth',
+    11 => 'ImageHeight',
+    12 => 'Rotation',
+    # don't know what the rest of the header contains, but none of
+    # these values change in any of my samples...
+);
+
 # extended header tags
 %Image::ExifTool::SigmaRaw::HeaderExt = (
     GROUPS => { 2 => 'Camera' },
+    FORMAT => 'float',
     NOTES => 'Extended header data found in version 2.1 and 2.2 files',
     0 => 'Unused',
     1 => { Name => 'ExposureAdjust',PrintConv => 'sprintf("%.1f",$val)' },
@@ -242,7 +264,7 @@ sub ProcessX3FProperties($$$);
 
 #------------------------------------------------------------------------------
 # Extract null-terminated unicode string from list of characters
-# Inputs: 0) ExifTool object ref, 1) list ref, 2) position in list
+# Inputs: 0) ExifTool ref, 1) list ref, 2) position in list
 # Returns: Converted string
 sub ExtractUnicodeString($$$)
 {
@@ -257,48 +279,36 @@ sub ExtractUnicodeString($$$)
 
 #------------------------------------------------------------------------------
 # Process an X3F header
-# Inputs: 0) ExifTool object reference, 1) DirInfo reference, 2) tag table ref
+# Inputs: 0) ExifTool ref, 1) DirInfo ref, 2) tag table ref
 # Returns: 1 on success
 sub ProcessX3FHeader($$$)
 {
     my ($et, $dirInfo, $tagTablePtr) = @_;
     my $dataPt = $$dirInfo{DataPt};
     my $hdrLen = $$dirInfo{DirLen};
-    my $verbose = $et->Options('Verbose');
 
     # process the static header structure first
     $et->ProcessBinaryData($dirInfo, $tagTablePtr);
 
     # process extended data if available
-    if (length $$dataPt >= 232) {
+    if (length($$dataPt) - $hdrLen >= 160) {
+        my $verbose = $et->Options('Verbose');
         if ($verbose) {
             $et->VerboseDir('X3F HeaderExt', 32);
-            Image::ExifTool::HexDump($dataPt, undef,
+            HexDump($dataPt, undef,
                 MaxLen => $verbose > 3 ? 1024 : 96,
                 Out    => $et->Options('TextOut'),
                 Prefix => $$et{INDENT},
-                Start  => $$dirInfo{DirLen},
+                Start  => $hdrLen,
             ) if $verbose > 2;
         }
         $tagTablePtr = GetTagTable('Image::ExifTool::SigmaRaw::HeaderExt');
-        my @vals = unpack("x${hdrLen}C32V32", $$dataPt);
+        my @tags = unpack("x${hdrLen}C32", $$dataPt);
         my $i;
         my $unused = 0;
         for ($i=0; $i<32; ++$i) {
-            $vals[$i] or ++$unused, next;
-            my $val = $vals[$i+32];
-            # convert value 0x40000000 => 2 ** 1, 0x3f800000 => 2 ** 0, 0x3f000000 => 2 ** -1
-            if ($val) {
-                my $sign;
-                if ($val & 0x80000000) {
-                    $sign = -1;
-                    $val &= 0x7fffffff;
-                } else {
-                    $sign = 1;
-                }
-                $val = $sign * 2 ** (($val - 0x3f800000) / 0x800000);
-            }
-            $et->HandleTag($tagTablePtr, $vals[$i], $val,
+            $tags[$i] or ++$unused, next;
+            $et->HandleTag($tagTablePtr, $tags[$i], undef,
                 Index  => $i,
                 DataPt => $dataPt,
                 Start  => $hdrLen + 32 + $i * 4,
@@ -312,7 +322,7 @@ sub ProcessX3FHeader($$$)
 
 #------------------------------------------------------------------------------
 # Process an X3F properties
-# Inputs: 0) ExifTool object reference, 1) DirInfo reference, 2) tag table ref
+# Inputs: 0) ExifTool ref, 1) DirInfo ref, 2) tag table ref
 # Returns: 1 on success
 sub ProcessX3FProperties($$$)
 {
@@ -367,7 +377,7 @@ sub ProcessX3FProperties($$$)
 
 #------------------------------------------------------------------------------
 # Write an X3F file
-# Inputs: 0) ExifTool object reference, 1) DirInfo reference (DirStart = directory offset)
+# Inputs: 0) ExifTool ref, 1) DirInfo ref (DirStart = directory offset)
 # Returns: error string, undef on success, or -1 on write error
 # Notes: Writes metadata to embedded JpgFromRaw image
 sub WriteX3F($$)
@@ -470,7 +480,7 @@ sub WriteX3F($$)
 
 #------------------------------------------------------------------------------
 # Process an X3F directory
-# Inputs: 0) ExifTool object reference, 1) DirInfo reference, 2) tag table ref
+# Inputs: 0) ExifTool ref, 1) DirInfo ref, 2) tag table ref
 # Returns: error string or undef on success
 sub ProcessX3FDirectory($$$)
 {
@@ -541,7 +551,7 @@ sub ProcessX3FDirectory($$$)
 
 #------------------------------------------------------------------------------
 # Read/write information from a Sigma raw (X3F) image
-# Inputs: 0) ExifTool object reference, 1) DirInfo reference
+# Inputs: 0) ExifTool ref, 1) DirInfo ref
 # Returns: 1 on success, 0 if this wasn't a valid X3F image, or -1 on write error
 sub ProcessX3F($$)
 {
@@ -549,7 +559,7 @@ sub ProcessX3F($$)
     my $outfile = $$dirInfo{OutFile};
     my $raf = $$dirInfo{RAF};
     my $warn = $outfile ? \&Image::ExifTool::Error : \&Image::ExifTool::Warn;
-    my ($buff, $err);
+    my ($buff, $err, $hdrLen);
 
     return 0 unless $raf->Read($buff, 40) == 40;
     return 0 unless $buff =~ /^FOVb/;
@@ -560,27 +570,33 @@ sub ProcessX3F($$)
     # check version number
     my $ver = unpack('x4V',$buff);
     $ver = ($ver >> 16) . '.' . ($ver & 0xffff);
-    if ($ver > 3) {
+    if ($ver > 4) {
         &$warn($et, "Untested X3F version ($ver). Please submit sample for testing", 1);
     }
-    my $hdrLen = length $buff;
     # read version 2.1/2.2/2.3 extended header
     if ($ver > 2) {
-        $hdrLen += $ver > 2.2 ? 64 : 32;            # SceneCaptureType string added in 2.3
-        my $more = $hdrLen - length($buff) + 160;   # (extended header is 160 bytes)
-        my $buf2;
+        my ($extra, $buf2);
+        if ($ver >= 4) {
+            $hdrLen = 0x300;
+            $extra = 0;
+        } else {
+            $hdrLen = $ver > 2.2 ? 104 : 72;    # SceneCaptureType string added in 2.3
+            $extra = 160;                       # (extended header is 160 bytes)
+        }
+        my $more = $hdrLen - length($buff) + $extra;
         unless ($raf->Read($buf2, $more) == $more) {
-            &$warn($et, 'Error reading extended header');
+            &$warn($et, 'Error reading X3F header');
             return 1;
         }
         $buff .= $buf2;
     }
+    my ($widPos, $hdrType) = $ver < 4 ? (28, 'Header') : (40, 'Header4');
     # extract ImageWidth for later
-    $$et{ImageWidth} = Get32u(\$buff, 28);
+    $$et{ImageWidth} = Get32u(\$buff, $widPos);
     # process header information
     my $tagTablePtr = GetTagTable('Image::ExifTool::SigmaRaw::Main');
     unless ($outfile) {
-        $et->HandleTag($tagTablePtr, 'Header', $buff,
+        $et->HandleTag($tagTablePtr, $hdrType, $buff,
             DataPt => \$buff,
             Size   => $hdrLen,
         );
@@ -31,7 +31,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 use Image::ExifTool::Minolta;
 
-$VERSION = '2.07';
+$VERSION = '2.12';
 
 sub ProcessSRF($$$);
 sub ProcessSR2($$$);
@@ -80,6 +80,8 @@ my %sonyLensTypes2 = (
     32799 => 'Sony E 35mm F1.8 OSS',            # VX9115
     32800 => 'Sony E PZ 18-105mm F4 G OSS', #12 # VX9116
 
+    32803 => 'Sony E 18-50mm F4-5.6',
+
     32807 => 'Sony E PZ 18-200mm F3.5-6.3 OSS', # VX9123
     32808 => 'Sony FE 55mm F1.8 ZA',            # VX9124
 
@@ -332,14 +334,32 @@ my %meterInfo2 = (
     0x0010 => [ #PH
         {
             Name => 'CameraInfo',
+            # count: A700=368, A850/A900=5478
+            Condition => '$count == 368 or $count == 5478',
+            SubDirectory => {
+                TagTable => 'Image::ExifTool::Sony::CameraInfo',
+                ByteOrder => 'BigEndian',
+            },
+        },{
+            Name => 'CameraInfo2',
+            # count: A200/A300/A350=5506, A230/A290/A330/A380/A390=6118
+            Condition => '$count == 5506 or $count == 6118',
+            SubDirectory => {
+                TagTable => 'Image::ExifTool::Sony::CameraInfo2',
+                ByteOrder => 'LittleEndian',
+            },
+        },{
+            Name => 'CameraInfo3',
             # count: A33/A35/A55V/A450/A500/A550/A560/A580/NEX3/5/5C/C3/VG10E=15360
             Condition => '$count == 15360',
-            SubDirectory => { TagTable => 'Image::ExifTool::Sony::CameraInfo' },
+            SubDirectory => {
+                TagTable => 'Image::ExifTool::Sony::CameraInfo3',
+                ByteOrder => 'LittleEndian',
+            },
         },{
-            Name => 'CameraInfo2',
-            # count: A850/A900=5478, A200/A300/A350=5506, A230/A290/A330/A380/A390=6118, A700=368
-            SubDirectory => { TagTable => 'Image::ExifTool::Sony::CameraInfo2' },
-        }
+            Name => 'CameraInfoUnknown',
+            SubDirectory => { TagTable => 'Image::ExifTool::Sony::CameraInfoUnknown' },
+        },
     ],
     # 0x0018 - starts with "GYRO" for sweep panorama images (ref 12)
     #        - contains ImageStabilization information for Minolta
@@ -688,9 +708,9 @@ my %meterInfo2 = (
         #   a1 d3 - DSC-TX30
         #   a2 d3 - DSC-WX60, WX80, WX200, WX300
         #   a3 c3 - NEX-6, DSC-HX300, HX50V
-        #   a4 c3 - NEX-3N/5R/5T, ILCE-3000
-        # unknown offsets or values for DSC-TX20/TX55/RX100M2/QX10/QX100/RX10/HX60V/HX400V/WX220,
-        #                               ILCE-7/7R/7S/5000/6000, ILCA-77M2
+        #   a4 c3 - NEX-3N/5R/5T, ILCE-3000/3500
+        # unknown offsets or values for DSC-TX20/TX55/RX100M2/RX100M3/QX10/QX100/RX10/HX60V/HX400V/WX220,
+        #                               ILCE-7/7R/7S/5000/5100/6000, ILCA-77M2
     {
         Name => 'Tag2010a', # ad
         Condition => '$$self{Model} =~ /^NEX-5N$/',
@@ -713,7 +733,7 @@ my %meterInfo2 = (
     },{
         Name => 'Tag2010e', # 9a, 9b, 9c, 9d, 9e, a1, a2, a3, a4
         Condition => q{
-            $$self{Model} =~ /^(SLT-A99V?|HV|SLT-A58|ILCE-3000|NEX-(3N|5R|5T|6|VG900|VG30E)|DSC-(RX100|RX1|RX1R)|Stellar)$/ or
+            $$self{Model} =~ /^(SLT-A99V?|HV|SLT-A58|ILCE-(3000|3500)|NEX-(3N|5R|5T|6|VG900|VG30E)|DSC-(RX100|RX1|RX1R)|Stellar)$/ or
             ($$self{Model} =~ /^(DSC-(HX300|HX50V|TX30|WX60|WX80|WX200|WX300))$/ and not $$self{Panorama})
         },
         SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010e' },
@@ -723,7 +743,7 @@ my %meterInfo2 = (
         SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010f' },
     },{
         Name => 'Tag2010g', # ?
-        Condition => '$$self{Model} =~ /^(DSC-(RX10|HX60V|HX400V|WX220)|ILCE-(7[RS]?|[56]000)|ILCA-77M2)\b/',
+        Condition => '$$self{Model} =~ /^(DSC-(RX10|RX100M3|HX60V|HX400V|WX220)|ILCE-(7[RS]?|[56]000|5100)|ILCA-77M2)\b/',
         SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010g' },
     },{
         Name => 'Tag_0x2010',
@@ -747,8 +767,8 @@ my %meterInfo2 = (
             0xffffffff => 'n/a', # (RX100)
         },
     },
-    0x2013 => { #PH (A77, NEX-5N)
-        Name => 'DistortionCorrection',
+    0x2013 => { #PH (A77, NEX-5N) ("Setting"; application of such correction is indicated in Tag9405 - ref 12)
+        Name => 'DistortionCorrectionSetting',
         Writable => 'int32u',
         PrintConv => {
             0 => 'Off',
@@ -790,7 +810,7 @@ my %meterInfo2 = (
     0x201c => [ #12
         {
             Name => 'AFAreaModeSetting',
-            Condition => '$$self{Model} =~ /^(SLT-|HV|ILCA-)/', # (NC) for ILCA-77M2
+            Condition => '$$self{Model} =~ /^(SLT-|HV)/',
             Notes => 'SLT models',
             Writable => 'int8u',
             # (the actual AFAreaMode used may be different because
@@ -800,18 +820,31 @@ my %meterInfo2 = (
                 4 => 'Local',
                 8 => 'Zone', #PH
                 9 => 'Spot',
-                # 12 - seen for ILCA-77M2 (ref 12)
             },
         },{
             Name => 'AFAreaModeSetting',
             Condition => '$$self{Model} =~ /^(NEX-|ILCE-)/',
-            Notes => 'NEX models',
+            Notes => 'NEX and ILCE models',
             Writable => 'int8u',
             PrintConv => {
                 0 => 'Multi',
                 1 => 'Center',
                 3 => 'Flexible Spot',
-                11 => 'Zone', #12 (NC)
+                11 => 'Zone', # (NC)
+            },
+        },{
+            Name => 'AFAreaModeSetting',
+            Condition => '$$self{Model} =~ /^ILCA-/',
+            Notes => 'ILCA models',
+            Writable => 'int8u',
+            # ILCA-77M2 uses new terminology more in line with ILCE;
+            # seen values 0, 4, 8, 9, 12 (12 never seen before, so presumably a new mode...)
+            PrintConv => {
+                0 => 'Wide',
+                4 => 'Flexible Spot',
+                8 => 'Zone',
+                9 => 'Center',
+                12 => 'Expanded Flexible Spot', # (NC, new mode in ILCA-77M2)
             },
         },
     ],
@@ -828,9 +861,9 @@ my %meterInfo2 = (
             Spot
         },
     },
-    0x201e => { #PH (A99) (also exists but not confirmed for RX1 and NEX-5R/6)
+    0x201e => [{ #PH (A99) (also exists but not confirmed for RX1 and NEX-5R/6)
         Name => 'AFPointSelected',
-        Condition => '$$self{Model} !~ /^DSC-/', # (doesn't seem to apply to RX1)
+        Condition => '$$self{Model} !~ /^(DSC-|ILCA-)/', # (doesn't seem to apply to RX1)
         Writable => 'int8u',
         PrintConvColumns => 2,
         PrintConv => {
@@ -855,7 +888,16 @@ my %meterInfo2 = (
             18 => 'Lower Far Left',
             19 => 'Upper Far Left',
         },
-    },
+    },{
+        Name => 'AFPointSelected',
+        Condition => '$$self{Model} =~ /^ILCA-/',
+        Notes => 'ILCA models',
+        Writable => 'int8u',
+        PrintConv => {
+            0 => 'Auto',
+            40 => 'Center',
+        },
+    }],
     # 0x201f - 0 0 0 0 for SLT and DSC; 4 values for NEX
     # 0x2020 - 10 values; for SLT and NEX/ILCE with A-mount lens: relates to (phase-detect) AFPoints
     0x2020 => {
@@ -898,10 +940,10 @@ my %meterInfo2 = (
     # 0x07 (e) for DSC-HX7V/HX9V/HX100V/TX10/TX100/TX100V/WX7/WX9/WX10, HDR-CX../PJ..
     # 0x09 (e) for DSC-TX20/TX55/WX30
     # 0x0a (e) for SLT-A37/A57/A65V/A77V/A99V, NEX-F3/5N/5R/5T/6/7/VG20E, DSC-RX100/RX1/RX1R/HX10V/HX20V/HX30V/HX200V/TX200V/TX300V/TX66/WX50/WX100/WX150, Lunar/Stellar/HV
-    # 0x0c (e) for ILCE-3000, NEX-3N, SLT-A58, DSC-HX50V/HX300/RX100M2/TX30/WX60/WX80/WX200/WX300, DSC-QX10/QX100
+    # 0x0c (e) for ILCE-3000/3500, NEX-3N, SLT-A58, DSC-HX50V/HX300/RX100M2/TX30/WX60/WX80/WX200/WX300, DSC-QX10/QX100
     # 0xd0 (e) H90, W650, W690: tag9400 decoding appears not valid/different
     # 0x23 (e) for DSC-RX10/HX60V/HX400V, ILCE-7/7R/5000/6000, ILCA-77M2
-    # 0x24 (e) for ILCE-7S
+    # 0x24 (e) for ILCE-7S/5100, DSC-RX100M3
     # first byte decoded: 40, 204, 202, 27, 58, 62, 48 respectively
     {
         Name => 'Tag9400a',
@@ -945,13 +987,14 @@ my %meterInfo2 = (
         #   33 50 e2 0d    0x09ac    (j)  SLT-A99V, HV
         #   33 40 0d 0e    0x09d7    (k)  DSC-RX1
         #   33 41 0d 0e    0x09d7    (k)  DSC-RX1, DSC-RX1R
-        #   38 00 32 0e    0x09fc    (l)  SLT-A58, ILCE-3000, NEX-3N, DSC-HX300/HX50V/WX200/WX300/WX60/WX80/TX30
+        #   38 00 32 0e    0x09fc    (l)  SLT-A58, ILCE-3000/3500, NEX-3N, DSC-HX300/HX50V/WX200/WX300/WX60/WX80/TX30
         #   3a 10 3a 0e    0x0a01    (m)  DSC-QX10/QX100
         #   3a 20 47 0e    0x0a01    (m)  DSC-RX100M2
         #   43 00 66 0e    0x0a1b    (n)  ILCE-7/7R/5000, DSC-RX10
+        #   43 10 66 0e    0x0a1b    (n)  ILCE-7/7R
         #   44 00 9c 0e    0x0a39    (o)  ILCE-6000, DSC-HX60V/HX400V/WX220
-        #   49 00 ac 0e    0x0a3b    (p)  ILCA-77M2
-        #   4a 00 b3 0e    0x0a3d    (q)  ILCE-7S
+        #   49 00 b0 0e    0x0a3b    (p)  ILCA-77M2, DSC-RX100M3 samples from sony.net
+        #   4a 00 b3 0e    0x0a3d    (q)  ILCE-7S/5100, DSC-RX100M3
         #
         # 0x0004 - (RX100: 0 or 1. subsequent data valid only if 1 - PH)
         # 0x0007 => {
@@ -975,14 +1018,15 @@ my %meterInfo2 = (
         #   0x00      0x00     SLT-A37/A57/A65/A77
         #   0x0e      0x00     DSC-HX9V generation
         #   0x0f      0x01     NEX-5N/7/VG20, Lunar
-        #   0x10      0x01     DSC-RX100 etc., ILCE-3000, NEX-3N/5R/5T/6/VG30/VG900
+        #   0x10      0x01     DSC-RX100, RX1, RX1R etc., ILCE-3000/3500, NEX-F3/3N/5R/5T/6/VG30/VG900
         #   0x11      0x01     DSC-RX100M2/QX10/QX100
         #   0x12,0x13 0x01     ILCE-7/7R/5000, DSC-RX10/HX400V
         #   0x14      0x01     ILCE-6000, DSC-HX60V
-        #   0x17      0x01     ILCE-7S
-        #   var       var      SLT-A58/A99V, HV
-        # only valid when first byte 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x17 (enciphered 0x8a, 0x70, 0xb6, 0x69, 0x88, 0x20, 0xd7)
-        Condition => '$$self{DoubleCipher} ? $$valPt =~ /^[\x7e\x46\x1d\x18\x3a\x95\x26]\x01/ : $$valPt =~ /^[\x8a\x70\xb6\x69\x88\x20\xd7]\x01/',
+        #   0x15      0x01     ILCE-7/7R
+        #   0x17      0x01     ILCE-7S/5100, DSC-RX100M3
+        #   var       var      SLT-A58/A99V, HV, ILCA-77M2
+        # only valid when first byte 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x17 (enciphered 0x8a, 0x70, 0xb6, 0x69, 0x88, 0x20, 0x30, 0xd7)
+        Condition => '$$self{DoubleCipher} ? $$valPt =~ /^[\x7e\x46\x1d\x18\x3a\x95\x24\x26]\x01/ : $$valPt =~ /^[\x8a\x70\xb6\x69\x88\x20\x30\xd7]\x01/',
         SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9402' },
     },{
         Name => 'Sony_0x9402',
@@ -997,23 +1041,41 @@ my %meterInfo2 = (
         Name => 'Sony_0x9403',
         %unknownCipherData,
     }],
-    0x9404 => {
+    # 0x9404 first 5 bytes (deciphered):
+    #  4  0  163  1  2     SLT-A65V/A77V, NEX-5N/7, DSC-HX7V/HX9V/HX100V/...
+    #  5  0  172  1  2     DSC-HX200V/HX20V/HX30V/...
+    #  9  0   38  2  2     SLT-A37/A57/A99V, NEX-5R/5T/6/F3/VG30E/VG900, DSC-RX1/RX1R/RX100
+    # 12  0    8  2  2     SLT-A58, NEX-3N, ILCE-3000/3500, DSC-HX300/HX50V/...
+    # 13  0    9  2  2     DSC-QX10/QX100/RX100M2
+    # 15  0   35  2  2     ILCA-77M2, ILCE-5000/5100/6000/7/7R/7S, DSC-HX400V/HX60V/RX10/RX100M3/WX220
+    # other values for Panorama images and several other models
+    0x9404 => [{
+        Name => 'Tag9404a',
+        # first byte must be 4 or 5 and 4th byte must be 1 (deciphered)
+        Condition => '$$valPt =~ /^[\x40\x7d]..\x01/',
+        SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9404a' },
+    },{
+        Name => 'Tag9404b',
+        # first byte must be 9 or 12 or 13 or 15 and 4th byte must be 2 (deciphered)
+        Condition => '$$valPt =~ /^[\xe7\xea\xcd\x8a]..\x08/',
+        SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9404b' },
+    },{
         Name => 'Sony_0x9404',
         %unknownCipherData,
-    },
+    }],
     # 0x9405 first 2 bytes:
-    #   0   0  (0x00 =   0   0 enc.) DSC-H90                           
-    #   2   0  (0x08 =   8   0 enc.) DSC and HDR of HX9V generation    
-    #   3   0  (0x1b =  27   0 enc.) SLT, NEX, ILCE-3000, DSC-RX100/RX1 + other DSC of same generation, also QX10 and QX100
-    #   4   0  (0x40 =  64   0 enc.) DSC-RX1R                          
-    #   5   0  (0x7d = 125   0 enc.) DSC-RX100M2                       
+    #   0   0  (0x00 =   0   0 enc.) DSC-H90
+    #   2   0  (0x08 =   8   0 enc.) DSC and HDR of HX9V generation
+    #   3   0  (0x1b =  27   0 enc.) SLT, NEX, ILCE-3000/3500, DSC-RX100/RX1 + other DSC of same generation, also QX10 and QX100
+    #   4   0  (0x40 =  64   0 enc.) DSC-RX1R
+    #   5   0  (0x7d = 125   0 enc.) DSC-RX100M2
     # 136 var  (0x3a =  58 var enc.) ILCE-7/7R/5000/6000, DSC-RX10/HX400V/HX60V/WX220
-    # 137 255  (0xb3 = 179 255 enc.) ILCA-77M2 - appears to go with 136
-    # 138 255  (0x7e = 126 255 enc.) ILCE-7S   - appears to go with 136
+    # 137 255  (0xb3 = 179 255 enc.) ILCA-77M2, DSC-RX100M3 - appears to go with 136
+    # 138 255  (0x7e = 126 255 enc.) ILCE-7S/5100   - appears to go with 136
     0x9405 => [{
         Name => 'Tag9405a',
-        # first byte must be 0x1b
-        Condition => '$$valPt =~ /^\x1b/',
+        # first byte must be 0x1b or 0x40 or 0x7d
+        Condition => '$$valPt =~ /^[\x1b\x40\x7d]/',
         SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9405a' },
     },{
         Name => 'Tag9405b',
@@ -1061,7 +1123,7 @@ my %meterInfo2 = (
     },
     0x940c => [{
         Name => 'Tag940c',
-        Condition => '$$self{Model} !~ /^(SLT-|HV|ILCA-|DSC-|Stellar)\b/',
+        Condition => '$$self{Model} =~ /^(NEX-|ILCE-|Lunar)\b/',
         SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag940c' },
     },{
         Name => 'Sony_0x940c',
@@ -1076,7 +1138,7 @@ my %meterInfo2 = (
 #         2nd byte = 2: AFInfo for NEX/ILCE with LA-EA2 Phase-detect AF Adapter
     0x940e => [{
         Name => 'AFInfo',
-        Condition => '$$self{Model} =~ /^(SLT-|HV)/', # but appears not valid / different for ILCA-77M2 ...
+        Condition => '$$self{Model} =~ /^(SLT-|HV|ILCA-77M2)/', # but appears different for ILCA-77M2 ...
         SubDirectory => { TagTable => 'Image::ExifTool::Sony::AFInfo' },
     },{
         Name => 'Sony_0x940e',
@@ -1159,7 +1221,7 @@ my %meterInfo2 = (
             298 => 'DSC-RX1', #12
             299 => 'NEX-VG900', #12
             300 => 'NEX-VG30E', #12
-            302 => 'ILCE-3000', #12
+            302 => 'ILCE-3000 / ILCE-3500', #12
             303 => 'SLT-A58', #12
             305 => 'NEX-3N', #PH
             306 => 'ILCE-7', #12
@@ -1170,8 +1232,10 @@ my %meterInfo2 = (
             311 => 'ILCE-7R', #12
             312 => 'ILCE-6000', #12
             313 => 'ILCE-5000', #12
+            317 => 'DSC-RX100M3', #12
             318 => 'ILCE-7S', #12
             319 => 'ILCA-77M2', #14
+            339 => 'ILCE-5100', #12
         },
     },
     0xb020 => { #2
@@ -1392,7 +1456,7 @@ my %meterInfo2 = (
     0xb043 => [{ #9
         Name => 'AFAreaMode',
         # AFAreaMode only for older models;
-        # exclude newest DSC models, which give AFAreaMode in Tag9402 0x0017 (ie. RX100 - PH)
+        # exclude newest DSC models, which give AFAreaMode in Tag9402 0x0017 (eg. RX100 - PH)
         Writable => 'int16u',
         Condition => 'not $$self{MetaVersion} or $$self{MetaVersion} ne "DC7303320222000"', #12
         RawConv => '$val == 65535 ? undef : $val',
@@ -1522,7 +1586,7 @@ my %meterInfo2 = (
     #         65535 => 'n/a', #PH (A100)
     #     },
     # },
-    0xb04e => { #PH (RX100)
+    0xb04e => { #PH (RX100) - but not in RX100M3 anymore (ref 12)
         Name => 'FocusMode',
         Condition => '$$self{MetaVersion} and $$self{MetaVersion} eq "DC7303320222000"', #12
         Notes => 'valid for DSC-HX9V generation and newer',
@@ -1630,11 +1694,248 @@ my %meterInfo2 = (
     },
 );
 
+# camera information for the A700/A850/A900 (ref 12)
+%Image::ExifTool::Sony::CameraInfo = (
+    %binaryDataAttrs,
+    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
+    NOTES => 'Camera information for the A700, A850 and A900.',
+    0x00 => {
+        Name => 'LensSpec',
+        # the A700/A850/A900 use a different int16 byte ordering! - PH
+        Format => 'undef[8]',
+        ValueConv => sub {
+            my $val = shift;;
+            return ConvLensSpec(pack('v*', unpack('n*', $val)));
+        },
+        ValueConvInv => sub {
+            my $val = shift;
+            return pack('v*', unpack('n*', ConvInvLensSpec($val)));
+        },
+        PrintConv => \&PrintLensSpec,
+        PrintConvInv => \&PrintInvLensSpec,
+    },
+    0x0014 => {
+        Name => 'FocusModeSetting',
+        Notes => 'FocusModeSetting for the A700, A850 and A900',
+        PrintConv => {
+            0 => 'Manual',
+            1 => 'AF-S',
+            2 => 'AF-C',
+            3 => 'AF-A',
+            4 => 'DMF',
+        },
+    },
+    0x0015 => { # the AF Point selected in AFAreaMode=Local or Spot; always '0' for AFAreaMode=Wide
+        Name => 'AFPointSelected',
+        PrintConvColumns => 2,
+        PrintConv => {
+            0 => 'Auto',
+            1 => 'Center',
+            2 => 'Top',
+            3 => 'Upper-right',
+            4 => 'Right',
+            5 => 'Lower-right',
+            6 => 'Bottom',
+            7 => 'Lower-left',
+            8 => 'Left',
+            9 => 'Upper-left',
+            10 => 'Far Right', # only given by A700
+            11 => 'Far Left',  # only given by A700
+        },
+    },
+    # 0x0019 - AF sensor used for focusing for A700/A850/A900:
+    #
+    #   A700 AF sensor layout:         A850/A900 AF sensor layout:
+    #
+    #              -                             *-*                 - = AF sensor
+    #        |           |                  |           |            * = assist sensor
+    #              -                             *-*                 o = F2.8 sensor
+    #   |    |    |o|    |    |        |    *    |o|    *    |       A700 center: double-cross + F2.8
+    #              -                             *-*                 A850 center: double-cross + F2.8 + 4 assist
+    #        |           |                  |           |
+    #              -                             *-*
+    #
+    # Following values seen for A700/A850 in AFAreaMode=Local or Spot: (other values only seen in "Wide")
+    #
+    #              16
+    #         0           19
+    #              13
+    #    3    1    22     20    18
+    #               8
+    #         2           21
+    #               5
+    #
+    # Note 1: A850/A900 AFPoint Selected 'Left'/'Right' (in 0x0015) corresponds in position (see diagram)
+    #         to A700 Local AFPoint 'Far Left'/'Far Right', and gives 'Far Left'/'Far Right' in 0x0019.
+    # Note 2: A700 in "Wide" also gives all 23 values in 0x0019, although it doesn't have assist-points ...
+    0x0019 => { # the AF sensor used for focusing
+        Name => 'AFPoint',
+        PrintConv => {
+            0 => 'Upper-left',
+            1 => 'Left',
+            2 => 'Lower-left',
+            3 => 'Far Left',
+            4 => 'Bottom Assist-left', #NC
+            5 => 'Bottom',
+            6 => 'Bottom Assist-right', #NC
+            # values 7-14: 8 center points: 4 from double-cross + 4 assist; 7-10 appear horizontal, 11-14 vertical
+            7  => 'Center (7)', #NC
+            8  => 'Center (horizontal)',
+            9  => 'Center (9)', #NC
+            10 => 'Center (10)', #NC
+            11 => 'Center (11)', #NC
+            12 => 'Center (12)', #NC
+            13 => 'Center (vertical)',
+            14 => 'Center (14)', #NC
+            15 => 'Top Assist-left', #NC
+            16 => 'Top',
+            17 => 'Top Assist-right', #NC
+            18 => 'Far Right',
+            19 => 'Upper-right',
+            20 => 'Right',
+            21 => 'Lower-right',
+            22 => 'Center F2.8',
+        },
+    },
+    # AF Status for A700/A850/A900, which have different sensor layout
+    # and different int16 byte ordering
+    0x001e => { Name => 'AFStatusActiveSensor',       %Image::ExifTool::Minolta::afStatusInfo },
+    0x0020 => { Name => 'AFStatusUpper-left',         %Image::ExifTool::Minolta::afStatusInfo },
+    0x0022 => { Name => 'AFStatusLeft',               %Image::ExifTool::Minolta::afStatusInfo },
+    0x0024 => { Name => 'AFStatusLower-left',         %Image::ExifTool::Minolta::afStatusInfo },
+    0x0026 => { Name => 'AFStatusFarLeft',            %Image::ExifTool::Minolta::afStatusInfo },
+    0x0028 => { Name => 'AFStatusBottomAssist-left',  %Image::ExifTool::Minolta::afStatusInfo },
+    0x002a => { Name => 'AFStatusBottom',             %Image::ExifTool::Minolta::afStatusInfo },
+    0x002c => { Name => 'AFStatusBottomAssist-right', %Image::ExifTool::Minolta::afStatusInfo },
+    0x002e => { Name => 'AFStatusCenter-7',           %Image::ExifTool::Minolta::afStatusInfo },
+    0x0030 => { Name => 'AFStatusCenter-horizontal',  %Image::ExifTool::Minolta::afStatusInfo },
+    0x0032 => { Name => 'AFStatusCenter-9',           %Image::ExifTool::Minolta::afStatusInfo },
+    0x0034 => { Name => 'AFStatusCenter-10',          %Image::ExifTool::Minolta::afStatusInfo },
+    0x0036 => { Name => 'AFStatusCenter-11',          %Image::ExifTool::Minolta::afStatusInfo },
+    0x0038 => { Name => 'AFStatusCenter-12',          %Image::ExifTool::Minolta::afStatusInfo },
+    0x003a => { Name => 'AFStatusCenter-vertical',    %Image::ExifTool::Minolta::afStatusInfo },
+    0x003c => { Name => 'AFStatusCenter-14',          %Image::ExifTool::Minolta::afStatusInfo },
+    0x003e => { Name => 'AFStatusTopAssist-left',     %Image::ExifTool::Minolta::afStatusInfo },
+    0x0040 => { Name => 'AFStatusTop',                %Image::ExifTool::Minolta::afStatusInfo },
+    0x0042 => { Name => 'AFStatusTopAssist-right',    %Image::ExifTool::Minolta::afStatusInfo },
+    0x0044 => { Name => 'AFStatusFarRight',           %Image::ExifTool::Minolta::afStatusInfo },
+    0x0046 => { Name => 'AFStatusUpper-right',        %Image::ExifTool::Minolta::afStatusInfo },
+    0x0048 => { Name => 'AFStatusRight',              %Image::ExifTool::Minolta::afStatusInfo },
+    0x004a => { Name => 'AFStatusLower-right',        %Image::ExifTool::Minolta::afStatusInfo },
+    0x004c => { Name => 'AFStatusCenterF2-8',         %Image::ExifTool::Minolta::afStatusInfo },
+    0x0130 => {
+        Name => 'AFMicroAdjValue',
+        Condition => '$$self{Model} =~ /^DSLR-A(850|900)\b/',
+        ValueConv => '$val - 20',
+        ValueConvInv => '$val + 20',
+    },
+    0x0131 => {
+        Name => 'AFMicroAdjMode',
+        Condition => '$$self{Model} =~ /^DSLR-A(850|900)\b/',
+        Mask => 0x80,
+        PrintConv => {
+            0x00 => 'Off',
+            0x80 => 'On',
+        },
+    },
+    305.1 => { # (0x131)
+        Name => 'AFMicroAdjRegisteredLenses',
+        Notes => 'number of registered lenses with a non-zero AFMicroAdjValue',
+        Condition => '$$self{Model} =~ /^DSLR-A(850|900)\b/',
+        Mask => 0x7f,
+    },
+);
+
+# camera information for other DSLR models (ref 12)
+%Image::ExifTool::Sony::CameraInfo2 = (
+    %binaryDataAttrs,
+    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
+    NOTES => q{
+        Camera information for the DSLR-A200, A230, A290, A300, A330, A350, A380 and
+        A390.
+    },
+    0x00 => {
+        Name => 'LensSpec',
+        Format => 'undef[8]',
+        ValueConv => \&ConvLensSpec,
+        ValueConvInv => \&ConvInvLensSpec,
+        PrintConv => \&PrintLensSpec,
+        PrintConvInv => \&PrintInvLensSpec,
+    },
+    # 0x0010 - maybe to do with AFStatus: 0 na./Manual, 4 Failed, 16 Tracking, 64 Focused
+    0x0014 => {
+        Name => 'AFPointSelected',
+        PrintConvColumns => 2,
+        PrintConv => { #12 (NC) same list as A100, A700/A900, as all have 9 point AF
+            0 => 'Auto',
+            1 => 'Center',
+            2 => 'Top',
+            3 => 'Upper-right',
+            4 => 'Right',
+            5 => 'Lower-right',
+            6 => 'Bottom',
+            7 => 'Lower-left',
+            8 => 'Left',
+            9 => 'Upper-left',
+        },
+    },
+    0x0015 => {
+        Name => 'FocusModeSetting',
+        Notes => 'FocusModeSetting for other models',
+        PrintConv => {
+            0 => 'Manual',
+            1 => 'AF-S',
+            2 => 'AF-C',
+            3 => 'AF-A',
+            4 => 'DMF',
+        },
+    },
+    # 0x0018 - AF sensor used for focusing for A200/A230/A290/A300/A330/A350/A380/A390; AF sensor layout:
+    #
+    #               -              - = AF sensor
+    #        |              |      + = cross sensor
+    #
+    #            -  +  -
+    #
+    #        |              |
+    #               -
+    #
+    0x0018 => { # used A100 list which appears to match
+        Name => 'AFPoint',
+        PrintConv => {
+            0 => 'Top-right',
+            1 => 'Bottom-right',
+            2 => 'Bottom',
+            3 => 'Middle Horizontal',
+            4 => 'Center Vertical',
+            5 => 'Top',
+            6 => 'Top-left',
+            7 => 'Bottom-left',
+        },
+    },
+    # AF Status for A200/A230/A290/A300/A330/A350/A380/A390: analogous to A100 in Minolta.pm
+    0x001b => { Name => 'AFStatusActiveSensor',     %Image::ExifTool::Minolta::afStatusInfo },
+    0x001d => { Name => 'AFStatusTop-right',        %Image::ExifTool::Minolta::afStatusInfo },
+    0x001f => { Name => 'AFStatusBottom-right',     %Image::ExifTool::Minolta::afStatusInfo },
+    0x0021 => { Name => 'AFStatusBottom',           %Image::ExifTool::Minolta::afStatusInfo },
+    # MiddleHorizontal is any of the 3 central horizontal sensors
+    0x0023 => { Name => 'AFStatusMiddleHorizontal', %Image::ExifTool::Minolta::afStatusInfo },
+    0x0025 => { Name => 'AFStatusCenterVertical',   %Image::ExifTool::Minolta::afStatusInfo },
+    0x0027 => { Name => 'AFStatusTop',              %Image::ExifTool::Minolta::afStatusInfo },
+    0x0029 => { Name => 'AFStatusTop-left',         %Image::ExifTool::Minolta::afStatusInfo },
+    0x002b => { Name => 'AFStatusBottom-left',      %Image::ExifTool::Minolta::afStatusInfo },
+    # the 3 MiddleHorizontal sensors
+    0x002d => { Name => 'AFStatusLeft',             %Image::ExifTool::Minolta::afStatusInfo },
+    0x002f => { Name => 'AFStatusCenterHorizontal', %Image::ExifTool::Minolta::afStatusInfo },
+    0x0031 => { Name => 'AFStatusRight',            %Image::ExifTool::Minolta::afStatusInfo },
+);
+
 # Camera information for the A55 (ref PH)
 # (also valid for A33, A35, A560, A580 - ref 12)
-%Image::ExifTool::Sony::CameraInfo = (
+%Image::ExifTool::Sony::CameraInfo3 = (
     %binaryDataAttrs,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
+    IS_SUBDIR => [ 0x23 ],
     NOTES => q{
         Camera information stored by the A33, A35, A55, A450, A500, A550, A560,
         A580, NEX-3/5/5C/C3 and VG10E.  Some tags are valid only for some of these
@@ -1668,6 +1969,12 @@ my %meterInfo2 = (
         PrintConv => 'sprintf("%.1f mm",$val)',
         PrintConvInv => '$val =~ s/ mm//; $val',
     },
+#
+# Note:
+# The below AF decoding covers cameras with 2 different AF systems, with overlapping offsets !
+#  1) DSLR-A450/A500/A550 with 9 point AF system: decoding/offsets identical to A200 - A390 in CameraInfo
+#  2) SLT-A33/A35/A55 and DSLR-A560/A580 with 15 point AF system: similar/more info but at different offsets
+#
     0x14 => { #12
         Name => 'AFPointSelected',
         Condition => '$$self{Model} =~ /^(DSLR-A(450|500|550))\b/',
@@ -1696,6 +2003,20 @@ my %meterInfo2 = (
             3 => 'AF-A',
         },
     },
+    0x18 => { #12
+        Name => 'AFPoint',
+        Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/',
+        PrintConv => {
+            0 => 'Top-right',
+            1 => 'Bottom-right',
+            2 => 'Bottom',
+            3 => 'Middle Horizontal',
+            4 => 'Center Vertical',
+            5 => 'Top',
+            6 => 'Top-left',
+            7 => 'Bottom-left',
+        },
+    },
     0x19 => { #12
         Name => 'FocusStatus',
         Condition => '$$self{Model} =~ /^(SLT-|DSLR-A(560|580))\b/',
@@ -1714,6 +2035,11 @@ my %meterInfo2 = (
             64 => 'AF-S - Confirmed',
         },
     },
+    0x1b => { #12
+        Name => 'AFStatusActiveSensor',
+        Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/',
+        %Image::ExifTool::Minolta::afStatusInfo,
+    },
     0x1c => {
         Name => 'AFPointSelected',  # (v8.88: renamed from LocalAFAreaPointSelected)
         Condition => '$$self{Model} =~ /^(SLT-|DSLR-A(560|580))\b/',
@@ -1734,176 +2060,84 @@ my %meterInfo2 = (
             10 => 'Far Right',
             11 => 'Far Left',
             12 => 'Upper-middle',
-            13 => 'Near Right',
-            14 => 'Lower-middle',
-            15 => 'Near Left',
-        },
-    },
-    0x1d => {
-        Name => 'FocusMode',
-        Condition => '$$self{Model} =~ /^(SLT-|DSLR-A(560|580))\b/',
-        PrintConv => {
-            0 => 'Manual',
-            1 => 'AF-S',
-            2 => 'AF-C',
-            3 => 'AF-A',
-        },
-    },
-    0x20 => { #12
-        Name => 'AFPoint',  # (v8.88: renamed from LocalAFAreaPointUsed)
-        Condition => '$$self{Model} =~ /^(SLT-|DSLR-A(560|580))\b/',
-        Notes => 'the AF sensor used for focusing. Not valid for Contrast AF',
-        PrintConvColumns => 2,
-        PrintConv => {
-            %afPoint15,
-            255 => '(none)', #PH (A55, guess; also A35 with non-AF lens, ref 12)
-        },
-    },
-    # 0x0166 - starting here there are 96 unknown blocks of 155 bytes each for the
-    #          A33/35/55, A560/580, but NOT for NEX or A450/500/550, and not
-    #          for the A580 in Contrast-AF mode (ref 12)
-    #          The 43rd byte of each block appears to be the AFPoint as in offset 0x20,
-    #          possibly also 73rd and 74th byte
-);
-
-# camera information for other DSLR and NEX models (ref PH)
-%Image::ExifTool::Sony::CameraInfo2 = (
-    %binaryDataAttrs,
-    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
-    NOTES => 'Camera information for other DSLR and NEX models.',
-    0x00 => [ #12
-        {
-            Name => 'LensSpec',
-            # the A700/A850/A900 use a different int16 byte ordering! - PH
-            Condition => '$$self{Model} =~ /^DSLR-A(700|850|900)\b/',
-            Format => 'undef[8]',
-            ValueConv => sub {
-                my $val = shift;;
-                return ConvLensSpec(pack('v*', unpack('n*', $val)));
-            },
-            ValueConvInv => sub {
-                my $val = shift;
-                return pack('v*', unpack('n*', ConvInvLensSpec($val)));
-            },
-            PrintConv => \&PrintLensSpec,
-            PrintConvInv => \&PrintInvLensSpec,
-        },{
-            Name => 'LensSpec',
-            Format => 'undef[8]',
-            ValueConv => \&ConvLensSpec,
-            ValueConvInv => \&ConvInvLensSpec,
-            PrintConv => \&PrintLensSpec,
-            PrintConvInv => \&PrintInvLensSpec,
-        },
-    ],
-#    0x0010 - maybe to do with AFStatus: 0 na./Manual, 4 Failed, 16 Tracking, 64 Focused
-    0x0014 => { #12
-        Name => 'FocusModeSetting',
-        Condition => '$$self{Model} =~ /^DSLR-A(700|850|900)\b/',
-        PrintConv => {
-            0 => 'Manual',
-            1 => 'AF-S',
-            2 => 'AF-C',
-            3 => 'AF-A',
-            4 => 'DMF',
-        },
-    },
-    0x0015 => { #12 the AF Point selected in AFAreaMode=Local or Spot; always '0' for AFAreaMode=Wide
-        Name => 'AFPointSelected',
-        Condition => '$$self{Model} =~ /^DSLR-A(700|850|900)\b/',
-        PrintConvColumns => 2,
-        PrintConv => {
-            0 => 'Auto',
-            1 => 'Center',
-            2 => 'Top',
-            3 => 'Upper-right',
-            4 => 'Right',
-            5 => 'Lower-right',
-            6 => 'Bottom',
-            7 => 'Lower-left',
-            8 => 'Left',
-            9 => 'Upper-left',
-            10 => 'Far Right', # only given by A700
-            11 => 'Far Left',  # only given by A700
-        },
-    },
-    # 0x0019 - appears to relate to AF sensor used for focusing:
-    #
-    #   A700 AF sensor layout:         A850/A900 AF sensor layout:
-    #
-    #              -                             *-*                 - = AF sensor
-    #        |           |                  |           |            * = assist sensor
-    #              -                             *-*                 o = F2.8 sensor
-    #   |    |    |o|    |    |        |    *    |o|    *    |       A700 center: double-cross + F2.8
-    #              -                             *-*                 A850 center: double-cross + F2.8 + 4 assist
-    #        |           |                  |           |
-    #              -                             *-*
-    #
-    # Following values seen for A700/A850 in AFAreaMode=Local or Spot: (other values only seen in "Wide")
-    #
-    #              16
-    #         0           19
-    #              13
-    #    3    1    22     20    18
-    #               8
-    #         2           21
-    #               5
-    #
-    # Note 1: A850/A900 AFPoint Selected 'Left'/'Right' (in 0x0015) corresponds in position (see diagram)
-    #         to A700 Local AFPoint 'Far Left'/'Far Right', and gives 'Far Left'/'Far Right' in 0x0019.
-    # Note 2: A700 in "Wide" also gives all 23 values in 0x0019, although it doesn't have assist-points ...
-    #
-    0x0019 => { #12 the AF sensor used for focusing
-        Name => 'AFPoint',
-        Condition => '$$self{Model} =~ /^DSLR-A(700|850|900)\b/',
-        PrintConv => {
-            0 => 'Upper-left',
-            1 => 'Left',
-            2 => 'Lower-left',
-            3 => 'Far Left',
-            4 => 'Bottom Assist-left', #NC
-            5 => 'Bottom',
-            6 => 'Bottom Assist-right', #NC
-            # values 7-14: 8 center points: 4 from double-cross + 4 assist; 7-10 appear horizontal, 11-14 vertical
-            7  => 'Center (7)', #NC
-            8  => 'Center (horizontal)',
-            9  => 'Center (9)', #NC
-            10 => 'Center (10)', #NC
-            11 => 'Center (11)', #NC
-            12 => 'Center (12)', #NC
-            13 => 'Center (vertical)',
-            14 => 'Center (14)', #NC
-            15 => 'Top Assist-left', #NC
-            16 => 'Top',
-            17 => 'Top Assist-right', #NC
-            18 => 'Far Right',
-            19 => 'Upper-right',
-            20 => 'Right',
-            21 => 'Lower-right',
-            22 => 'Center F2.8',
+            13 => 'Near Right',
+            14 => 'Lower-middle',
+            15 => 'Near Left',
         },
     },
-    0x0130 => { #12
-        Name => 'AFMicroAdjValue',
-        Condition => '$$self{Model} =~ /^DSLR-A(850|900)\b/',
-        ValueConv => '$val - 20',
-        ValueConvInv => '$val + 20',
+    0x1d => [
+        {
+            Name => 'FocusMode',
+            Condition => '$$self{Model} =~ /^(SLT-|DSLR-A(560|580))\b/',
+            PrintConv => {
+                0 => 'Manual',
+                1 => 'AF-S',
+                2 => 'AF-C',
+                3 => 'AF-A',
+            },
+        },{ #12
+            Name => 'AFStatusTop-right',
+            Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/',
+            %Image::ExifTool::Minolta::afStatusInfo,
+        },
+    ],
+    0x1f => { #12
+        Name => 'AFStatusBottom-right',
+        Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/',
+        %Image::ExifTool::Minolta::afStatusInfo,
     },
-    0x0131 => { #12
-        Name => 'AFMicroAdjMode',
-        Condition => '$$self{Model} =~ /^DSLR-A(850|900)\b/',
-        Mask => 0x80,
+    0x20 => { #12
+        Name => 'AFPoint',  # (v8.88: renamed from LocalAFAreaPointUsed)
+        Condition => '$$self{Model} =~ /^(SLT-|DSLR-A(560|580))\b/',
+        Notes => 'the AF sensor used for focusing. Not valid for Contrast AF',
+        PrintConvColumns => 2,
         PrintConv => {
-            0x00 => 'Off',
-            0x80 => 'On',
+            %afPoint15,
+            255 => '(none)', #PH (A55, guess; also A35 with non-AF lens, ref 12)
         },
     },
-    305.1 => { #12 (0x131)
-        Name => 'AFMicroAdjRegisteredLenses',
-        Notes => 'number of registered lenses with a non-zero AFMicroAdjValue',
-        Condition => '$$self{Model} =~ /^DSLR-A(850|900)\b/',
-        Mask => 0x7f,
-    },
+    0x21 => [ #12
+        {
+            Name => 'AFStatusActiveSensor',
+            Condition => '$$self{Model} =~ /^(SLT-|DSLR-A(560|580))\b/',
+            %Image::ExifTool::Minolta::afStatusInfo,
+        },{
+            Name => 'AFStatusBottom',
+            Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/',
+            %Image::ExifTool::Minolta::afStatusInfo,
+        },
+    ],
+    0x23 => [ #12
+        {
+            Name => 'AFStatus15',
+            Condition => '$$self{Model} =~ /^(SLT-|DSLR-A(560|580))\b/',
+            Format => 'int16s[18]',
+            SubDirectory => { TagTable => 'Image::ExifTool::Sony::AFStatus15' },
+        },{
+            Name => 'AFStatusMiddleHorizontal', # MiddleHorizontal is any of the 3 central horizontal sensors
+            Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/',
+            %Image::ExifTool::Minolta::afStatusInfo,
+        },
+    ],
+    0x25 => { Name => 'AFStatusCenterVertical',   Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/', %Image::ExifTool::Minolta::afStatusInfo },
+    0x27 => { Name => 'AFStatusTop',              Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/', %Image::ExifTool::Minolta::afStatusInfo },
+    0x29 => { Name => 'AFStatusTop-left',         Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/', %Image::ExifTool::Minolta::afStatusInfo },
+    0x2b => { Name => 'AFStatusBottom-left',      Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/', %Image::ExifTool::Minolta::afStatusInfo },
+    # the 3 MiddleHorizontal sensors:
+    0x2d => { Name => 'AFStatusLeft',             Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/', %Image::ExifTool::Minolta::afStatusInfo },
+    0x2f => { Name => 'AFStatusCenterHorizontal', Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/', %Image::ExifTool::Minolta::afStatusInfo },
+    0x31 => { Name => 'AFStatusRight',            Condition => '$$self{Model} =~ /^DSLR-A(450|500|550)\b/', %Image::ExifTool::Minolta::afStatusInfo },
+    # 0x0166 - starting here there are 96 unknown blocks of 155 bytes each for the SLT-A33/A35/A55 and DSLR-A560/A580,
+    #          starting here there are 86 unknown blocks of 174 bytes each for the DSLR-A450/A500/A550,
+    #          but NOT for NEX, and not for the A580 in Contrast-AF mode (ref 12)
+    #          The 43rd byte of each block for A580 appears to be the AFPoint as in offset 0x20,
+    #          possibly also 73rd and 74th byte
+);
+
+# Camera information for other models (ref PH)
+%Image::ExifTool::Sony::CameraInfoUnknown = (
+    %binaryDataAttrs,
+    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
 );
 
 # white balance and other camera information (ref PH)
@@ -2023,6 +2257,16 @@ my %meterInfo2 = (
             16 => 'Sepia', #7
         },
     },
+    0x77 => { #12
+        Name => 'DynamicRangeOptimizerMode',
+        PrintConv => {
+            0 => 'Off',
+            1 => 'Standard',
+            2 => 'Advanced Auto',
+            3 => 'Advanced Level',
+        },
+    },
+    0x79 => 'DynamicRangeOptimizerLevel',
 #    0x06f1 - int16u    LensType,  Condition => '$$self{Model} =~ /^DSLR-A(700|850|900)$/',
 #    0x4a81 - int16u    LensType,  Condition => '$$self{Model} !~ /^DSLR-A(700|850|900)$/',
 #    0x4a84 - int16uRev LensType,  Condition => '$$self{Model} =~ /^DSLR-A(700|850|900)$/',
@@ -2941,6 +3185,16 @@ my %faceInfo = (
             4 => 'DMF', #12
         },
     },
+    0x50 => { #12
+        Name => 'BatteryState',
+        PrintConv => {
+            2 => 'Empty',      # 0%
+            3 => 'Very Low',   # 1 - 20%
+            4 => 'Low',        # 21 - 50%
+            5 => 'Sufficient', # 51 - 80%
+            6 => 'Full',       # > 80%
+        },
+    },
     0x51 => { #12
         Name => 'BatteryLevel',
         PrintConv => '"$val%"',
@@ -4225,7 +4479,9 @@ my %faceInfo = (
 %Image::ExifTool::Sony::AFInfo2 = (
     %binaryDataAttrs,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
-    0 => {
+    # 4 bytes used by SLT with 15 or 19 point AF,
+    # all 10 bytes used by ILCA-77M2 with 79-point AF.
+    0 => [{
         Name => 'AFPointsUsed',
         Condition => '$$self{Model} =~ /^(SLT-|HV)/', # but appears not valid for ILCA-77M2 ...
         Format => 'int32u',
@@ -4255,9 +4511,20 @@ my %faceInfo = (
                 18 => 'Upper Far Left',
             },
         },
-    },
-    # perhaps all 10 bytes are used by ILCA-77M2 79-point AF (ref 12)
-    # - seen "0 0 0 0 128 0 0 0 0 0" for 77M2 Spot-AF (center AF point)
+    },{
+        Name => 'AFPointsUsed',
+        Condition => '$$self{Model} =~ /^ILCA-/',
+        Notes => 'ILCA models',
+        Format => 'int8u[10]',  # (80 bits)
+        BitsPerWord => 8,
+        BitsTotal => 80,
+        PrintConv => {
+            0 => '(none)',
+            BITMASK => {
+                39 => 'Center',
+            },
+        },
+    }],
 );
 
 # shot information (ref PH)
@@ -4443,6 +4710,8 @@ my %hdr2010 = (
     PrintConv => {
         0 => 'Off',
         1 => 'HDR Auto',
+        3 => 'HDR 1 EV',
+        5 => 'HDR 2 EV',
         7 => 'HDR 3 EV',
         9 => 'HDR 4 EV',
         11 => 'HDR 5 EV',
@@ -4559,6 +4828,7 @@ my %exposureProgram2010 = (
     0x01b6 => { %sonyDateTime2010, Groups => { 2 => 'Time' } },
     #0x0204 => { Name => 'SonyImageWidth', Format => 'int16u' },
     #0x0206 => { Name => 'SonyImageHeight', Format => 'int16u' },
+    0x0324 => { %dynamicRangeOptimizer2010 },
     0x04b4 => {
         Name => 'MeterInfo',
         Format => 'int32u[486]',
@@ -4577,8 +4847,19 @@ my %exposureProgram2010 = (
     0x1178 => { %meteringMode2010 },     #1154
     0x1179 => { %exposureProgram2010 },
     0x1180 => { Name => 'WB_RGBLevels', Format => 'int16u[3]' },
+    0x1218 => {
+        Name => 'SonyISO',
+        Format => 'int16u',
+        ValueConv => '3.125*(2**(21-($val/256)))',
+        PrintConv => 'sprintf("%.0f",$val)',
+    },
     #0x1a08 => { Name => 'SonyImageWidth', Format => 'int16u' },
     #0x1a0c => { Name => 'SonyImageHeight', Format => 'int16u' },
+    0x1a23 => { # only for NEX-7 with Firmware v1.02 and higher, but slightly different from Tag9405 ...
+        Name => 'LensParameters',
+        Format => 'int16s[16]',
+        PrintConv => 'sprintf("%5d" . " %5d" x 15, split(" ",$val))',
+    },
 );
 
 %Image::ExifTool::Sony::Tag2010c = ( #12
@@ -4611,6 +4892,7 @@ my %exposureProgram2010 = (
     #0x0154 => { Name => 'SonyImageHeight', Format => 'int16u' },
     0x0200 => { Name => 'DigitalZoomRatio', ValueConv => '$val/16', ValueConvInv => '$val*16' },
     0x0210 => { %sonyDateTime2010, Groups => { 2 => 'Time' } },
+    0x0300 => { %dynamicRangeOptimizer2010 },
     0x0490 => {
         Name => 'MeterInfo',
         Format => 'int32u[486]',
@@ -4629,6 +4911,12 @@ my %exposureProgram2010 = (
     0x1154 => { %meteringMode2010 },
     0x1155 => { %exposureProgram2010 },
     0x115c => { Name => 'WB_RGBLevels', Format => 'int16u[3]' },
+    0x11f4 => {
+        Name => 'SonyISO',
+        Format => 'int16u',
+        ValueConv => '3.125*(2**(21-($val/256)))',
+        PrintConv => 'sprintf("%.0f",$val)',
+    },
     #0x1a08 => { Name => 'SonyImageWidth', Format => 'int16u' },
     #0x1a0c => { Name => 'SonyImageHeight', Format => 'int16u' },
 );
@@ -4662,6 +4950,7 @@ my %exposureProgram2010 = (
     #0x00e0 => { Name => 'SonyImageWidth', Format => 'int16u' },
     #0x00e4 => { Name => 'SonyImageHeight', Format => 'int16u' },
     0x01fe => { %sonyDateTime2010, Groups => { 2 => 'Time' } },
+    0x037c => { %dynamicRangeOptimizer2010 },
     0x050c => {
         Name => 'MeterInfo',
         Format => 'int32u[486]',
@@ -4679,6 +4968,12 @@ my %exposureProgram2010 = (
     # 0x11d1 - not valid for HX20V panorama images - PH
     0x11d1 => { %exposureProgram2010 },
     0x11d8 => { Name => 'WB_RGBLevels', Format => 'int16u[3]' },
+    0x1270 => {
+        Name => 'SonyISO',
+        Format => 'int16u',
+        ValueConv => '3.125*(2**(21-($val/256)))',
+        PrintConv => 'sprintf("%.0f",$val)',
+    },
 );
 
 %Image::ExifTool::Sony::Tag2010e = ( #12
@@ -4687,7 +4982,7 @@ my %exposureProgram2010 = (
     CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
     FORMAT => 'int8u',
     NOTES => q{
-        Valid for SLT-A58/A99, ILCE-3000, NEX-3N/5R/5T/6/VG30E/VG900, DSC-RX100,
+        Valid for SLT-A58/A99, ILCE-3000/3500, NEX-3N/5R/5T/6/VG30E/VG900, DSC-RX100,
         DSC-RX1/RX1R. Also valid for DSC-HX300/HX50V/TX30/WX60/WX200/WX300, but not
         for panorama images.
     },
@@ -4714,6 +5009,7 @@ my %exposureProgram2010 = (
     #0x0200 => { Name => 'SonyImageWidth', Format => 'int16u' },
     0x021c => { Name => 'DigitalZoomRatio', ValueConv => '$val/16', ValueConvInv => '$val*16' },
     0x022c => { %sonyDateTime2010, Groups => { 2 => 'Time' } },
+    0x0328 => { %dynamicRangeOptimizer2010 },
     0x04b8 => {
         Name => 'MeterInfo',
         Format => 'int32u[486]',
@@ -4732,8 +5028,22 @@ my %exposureProgram2010 = (
     0x11ac => { %meteringMode2010 },
     0x11ad => { %exposureProgram2010 },
     0x11b4 => { Name => 'WB_RGBLevels', Format => 'int16u[3]' },
+    0x1254 => {
+        Condition => '$$self{Model} =~ /^(SLT-(A99|A99V)|NEX-(5R|5T|6|VG900|VG30E)|DSC-RX100|Stellar|HV)\b/',
+        Name => 'SonyISO',
+        Format => 'int16u',
+        ValueConv => '3.125*(2**(21-($val/256)))',
+        PrintConv => 'sprintf("%.0f",$val)',
+    },
+    0x1258 => {
+        Condition => '$$self{Model} =~ /^(DSC-(RX1|RX1R))\b/',
+        Name => 'SonyISO',
+        Format => 'int16u',
+        ValueConv => '3.125*(2**(21-($val/256)))',
+        PrintConv => 'sprintf("%.0f",$val)',
+    },
     0x1278 => {
-        Condition => '$$self{Model} =~ /^(SLT-A58|NEX-3N|ILCE-3000)\b/',
+        Condition => '$$self{Model} =~ /^(SLT-A58|ILCE-(3000|3500)|NEX-3N|DSC-(HX300|HX50V|WX60|WX80|WX200|WX300|TX30))\b/',
         Name => 'FocalLength',
         Format => 'int16u',
         ValueConv => '$val / 10',
@@ -4742,7 +5052,7 @@ my %exposureProgram2010 = (
         PrintConvInv => '$val =~ / ?mm//; $val',
     },
     0x127a => {
-        Condition => '$$self{Model} =~ /^(SLT-A58|NEX-3N|ILCE-3000)\b/',
+        Condition => '$$self{Model} =~ /^(SLT-A58|ILCE-(3000|3500)|NEX-3N|DSC-(HX300|HX50V|WX60|WX80|WX200|WX300|TX30))\b/',
         Name => 'MinFocalLength',
         Format => 'int16u',
         ValueConv => '$val / 10',
@@ -4751,7 +5061,7 @@ my %exposureProgram2010 = (
         PrintConvInv => '$val =~ / ?mm//; $val',
     },
     0x127c => { # may give 0 for fixed focal length lenses
-        Condition => '$$self{Model} =~ /^(SLT-A58|NEX-3N|ILCE-3000)\b/',
+        Condition => '$$self{Model} =~ /^(SLT-A58|ILCE-(3000|3500)|NEX-3N|DSC-(HX300|HX50V|WX60|WX80|WX200|WX300|TX30))\b/',
         Name => 'MaxFocalLength',
         Format => 'int16u',
         RawConv => '$val || undef',
@@ -4760,6 +5070,56 @@ my %exposureProgram2010 = (
         PrintConv => 'sprintf("%.1f mm",$val)',
         PrintConvInv => '$val =~ / ?mm//; $val',
     },
+    0x1280 => {
+        Condition => '$$self{Model} =~ /^(SLT-A58|ILCE-(3000|3500)|NEX-3N|DSC-(HX300|HX50V|WX60|WX80|WX200|WX300|TX30))\b/',
+        Name => 'SonyISO',
+        Format => 'int16u',
+        ValueConv => '3.125*(2**(21-($val/256)))',
+        PrintConv => 'sprintf("%.0f",$val)',
+    },
+    0x1870 => {
+        Name => 'LensParameters',
+        Condition => '$$self{Model} !~ /^(DSC-|Stellar)/',
+        Format => 'int16s[16]',
+        Unknown => 1, # (not sure how these are applied)
+        PrintConv => 'sprintf("%5d" . " %5d" x 15, split(" ",$val))',
+    },
+    # 0x1890 - same as 0x1892, but has value 3 for 50mm F1.4 ZA, DT 18-135mm and for 70-400mm G II: meaning ??
+    0x1891 => {
+        Name => 'LensFormat',
+        Condition => '$$self{Model} !~ /^(DSC-|Stellar)/',
+        PrintConv => {
+            0 => 'Unknown',
+            1 => 'APS-C',
+            2 => 'Full-frame',
+        },
+    },
+    0x1892 => {
+        Name => 'LensMount',
+        DataMember => 'LensMount',
+        RawConv => '$$self{LensMount} = $val; $$self{Model} =~ /^(DSC-|Stellar)/ ? undef : $val',
+        PrintConv => {
+            0 => 'Unknown',
+            1 => 'A-mount',
+            2 => 'E-mount',
+        },
+    },
+    0x1893 => { #12
+        Name => 'LensType2',
+        Condition => '$$self{LensMount} == 2',
+        Format => 'int16u',
+        SeparateTable => 1,
+        PrintConv => \%sonyLensTypes2,
+    },
+    0x1896 => {
+        Name => 'LensType',
+        Condition => '$$self{LensMount} == 1',
+        Priority => 0, #PH (just to be safe)
+        Format => 'int16u', #PH
+        SeparateTable => 1,
+        ValueConvInv => '($val & 0xff00) == 0x8000 ? 0 : int($val)',
+        PrintConv => \%sonyLensTypes,
+    },
     #0x1914 => { Name => 'SonyImageWidth', Format => 'int16u' },
     #0x1918 => { Name => 'SonyImageHeight', Format => 'int16u' },
     #0x192e => { Name => 'SonyImageWidth', Format => 'int16u' },
@@ -4779,6 +5139,7 @@ my %exposureProgram2010 = (
     0x0004 => { %releaseMode2, Format => 'int32u' }, # NOT at offset 0x08 !
     #0x002e => { Name => 'SonyImageWidth3', Format => 'int16u' },
     #0x0042 => { Name => 'SonyImageWidth3', Format => 'int16u' },
+    0x0050 => { %dynamicRangeOptimizer2010 },
     0x01e0 => {
         Name => 'MeterInfo',
         Format => 'int32u[486]',
@@ -4823,6 +5184,12 @@ my %exposureProgram2010 = (
         PrintConv => 'sprintf("%.1f mm",$val)',
         PrintConvInv => '$val =~ / ?mm//; $val',
     },
+    0x113c => {
+        Name => 'SonyISO',
+        Format => 'int16u',
+        ValueConv => '3.125*(2**(21-($val/256)))',
+        PrintConv => 'sprintf("%.0f",$val)',
+    },
     #0x1914 => { Name => 'SonyImageWidth', Format => 'int16u' },
     #0x1918 => { Name => 'SonyImageHeight', Format => 'int16u' },
     #0x192e => { Name => 'SonyImageWidth', Format => 'int16u' },
@@ -4834,12 +5201,16 @@ my %exposureProgram2010 = (
     WRITE_PROC => \&WriteEnciphered,
     CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
     FORMAT => 'int8u',
-    NOTES => 'Valid for DSC-RX10/HX60V/HX400V, ILCE-7/7R/7S/5000/6000, ILCA-77M2.',
+    NOTES => q{
+        Valid for DSC-RX10/RX100M3/HX60V/HX400V/WX220, ILCE-7/7R/7S/5000/5100/6000,
+        ILCA-77M2.
+    },
     WRITABLE => 1,
     FIRST_ENTRY => 0,
     PRIORITY => 0,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
     0x0004 => { %releaseMode2, Format => 'int32u' }, # NOT at offset 0x08 !
+    0x0050 => { %dynamicRangeOptimizer2010 },
     0x020c => { %releaseMode2010 },
     0x0210 => { %releaseMode2 },
     0x0222 => { %gain2010 },
@@ -4877,12 +5248,61 @@ my %exposureProgram2010 = (
         PrintConv => 'sprintf("%.1f mm",$val)',
         PrintConvInv => '$val =~ / ?mm//; $val',
     },
+    0x0344 => {
+        Name => 'SonyISO',
+        Format => 'int16u',
+        ValueConv => '3.125*(2**(21-($val/256)))',
+        PrintConv => 'sprintf("%.0f",$val)',
+    },
     0x0388 => {
         Name => 'MeterInfo',
         Format => 'int32u[486]',
         Unknown => 1,
         SubDirectory => { TagTable => 'Image::ExifTool::Sony::MeterInfo' },
     },
+    0x189c => {
+        Name => 'LensParameters',
+        Condition => '$$self{Model} !~ /^DSC-/',
+        Format => 'int16s[16]',
+        Unknown => 1,
+        PrintConv => 'sprintf("%5d" . " %5d" x 15, split(" ",$val))',
+    },
+    # 0x18bc - same as 0x18be, but has value 3 for 50mm F1.4 ZA, DT 18-135mm and for 70-400mm G II: meaning ??
+    0x18bd => {
+        Name => 'LensFormat',
+        Condition => '$$self{Model} !~ /^DSC-/',
+        PrintConv => {
+            0 => 'Unknown',
+            1 => 'APS-C',
+            2 => 'Full-frame',
+        },
+    },
+    0x18be => {
+        Name => 'LensMount',
+        DataMember => 'LensMount',
+        RawConv => '$$self{LensMount} = $val; $$self{Model} =~ /^DSC-/ ? undef : $val',
+        PrintConv => {
+            0 => 'Unknown',
+            1 => 'A-mount',
+            2 => 'E-mount',
+        },
+    },
+    0x18bf => { #12
+        Name => 'LensType2',
+        Condition => '$$self{LensMount} == 2',
+        Format => 'int16u',
+        SeparateTable => 1,
+        PrintConv => \%sonyLensTypes2,
+    },
+    0x18c2 => {
+        Name => 'LensType',
+        Condition => '$$self{LensMount} == 1',
+        Priority => 0, #PH (just to be safe)
+        Format => 'int16u', #PH
+        SeparateTable => 1,
+        ValueConvInv => '($val & 0xff00) == 0x8000 ? 0 : int($val)',
+        PrintConv => \%sonyLensTypes,
+    },
 );
 
 # possible metering information (ref 12)
@@ -4900,7 +5320,7 @@ my %exposureProgram2010 = (
 # Set 2: 9 rows of 11
 #
 # Exact meaning presently unknown, however:
-# n1 ranges from 0 (black) - appr. 1300 (bright white) 
+# n1 ranges from 0 (black) - appr. 1300 (bright white)
 # n2 ranges from 0 (black) - appr. 142000 (bright white), i.e. roughly factor 100 higher
 # Many panorama images: all 0
 # Flash images: n2 = n1
@@ -4939,7 +5359,7 @@ my %exposureProgram2010 = (
     0x01b0 => { Name => 'MeterInfo1Row5', %meterInfo1 },
     0x021c => { Name => 'MeterInfo1Row6', %meterInfo1 },
     0x0288 => { Name => 'MeterInfo1Row7', %meterInfo1 },
-    
+
     0x02f4 => { Name => 'MeterInfo2Row1', %meterInfo2 },
     0x0378 => { Name => 'MeterInfo2Row2', %meterInfo2 },
     0x03fc => { Name => 'MeterInfo2Row3', %meterInfo2 },
@@ -5017,17 +5437,17 @@ my %exposureProgram2010 = (
 #           appears to be difference between used FNumber and MaxAperture, 256 being +1 APEX or stop
 #           however, not always valid e.g. bracketing, Shutter-prio e.a.
 #           difference between 0x0002 and 0x0004 mostly 0.0, 0.1 or 0.2 stops.
-    0x0031 => { #12  not DSC-RX
+    0x0031 => { #12
         Condition => '$$self{Model} !~ /^(DSC-|Stellar)/',
         Name => 'FlashStatus',
         PrintConv => {
-            0 => 'No Flash present',                   # seen for SLT-A99 and NEX-5N, 5R
-           # 2 => 'No Flash present but ????',          # seen for ILCE-7/7R
-            64 => 'Built-in Flash present',            # seen for SLT-A37, A57, A65, A77 and NEX-F3, 6, 7
-            65 => 'Built-in Flash present and fired',  # seen for SLT-A37, A57, A65, A77 and NEX-F3, 6, 7
-           # 66 => 'Built-in Flash present but ????',   # seen for A58 and ILCE HDR and panorama images
-            128 => 'External Flash present',           # seen for NEX-5N
-            129 => 'External Flash present and fired', # seen for NEX-5N, A99V
+            0 => 'No Flash present',
+            2 => 'Flash Inhibited',           # seen for ILCE-7/7R continuous, panorama, HDR mode
+            64 => 'Built-in Flash present',
+            65 => 'Built-in Flash Fired',
+            66 => 'Built-in Flash Inhibited', # seen for panorama, HDR, burst mode
+            128 => 'External Flash present',  # seen for NEX-5N/5T
+            129 => 'External Flash Fired',    # seen for SLT-A99V, ILCE-7R, NEX-5N/5R
         },
     },
     0x0032 => { #13
@@ -5058,13 +5478,14 @@ my %exposureProgram2010 = (
         PrintConv => 'sprintf("%.1f",$val)',
         PrintConvInv => '$val',
     },
-    0x004c => { # only ILCE-7/7R/7S/5000/6000
+    0x004c => { # only ILCE-7/7R/7S/5000/6000 - but appears not valid when flash is used ...
         Name => 'ImageCount2',
         Condition => '$$self{Model} =~ /^(ILCE-(7[RS]?|[56]000))\b/',
         Format => 'int32u',
         RawConv => '$val & 0x00ffffff',
     },
     0x0051 => { # only ILCE-7/7R/7S/5000/6000, but hours usually different from SonyDateTime - UTC?
+                # appears not valid when flash is used, panorama, hdr modes ...
         Name => 'SonyDateTime2',
         Condition => '$$self{Model} =~ /^(ILCE-(7[RS]?|[56]000))\b/',
         Groups => { 2 => 'Time' },
@@ -5076,7 +5497,7 @@ my %exposureProgram2010 = (
         },
         ValueConvInv => q{
             my @v = ($val =~ /\d+/g);
-            return undef unless @v == 6 and $v[0]-=2000 >= 0;
+            return undef unless @v == 6 and ($v[0]-=2000) >= 0;
             return pack('C*', @v);
         },
         PrintConv => '$self->ConvertDateTime($val)',
@@ -5201,7 +5622,7 @@ my %exposureProgram2010 = (
             200 => 'Continuous - Sweep Panorama',
         },
     },
-#    0x0027 - 1=single exposure, 2=multi-exposure (ie. pano,some superior auto) (PH, RX100)
+#    0x0027 - 1=single exposure, 2=multi-exposure (eg. pano,some superior auto) (PH, RX100)
     0x0028 => {
         Name => 'CameraOrientation', # (also RX100 - PH)
         PrintConv => {
@@ -5245,7 +5666,7 @@ my %exposureProgram2010 = (
     CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
     FORMAT => 'int8u',
     NOTES => q{
-        Valid for NEX-3N, ILCE-3000, SLT-A58, DSC-WX60, DSC-WX300, DSC-RX100M2,
+        Valid for NEX-3N, ILCE-3000/3500, SLT-A58, DSC-WX60, DSC-WX300, DSC-RX100M2,
         DSC-HX50V, DSC-QX10/QX100.
     },
     WRITABLE => 1,
@@ -5321,7 +5742,7 @@ my %exposureProgram2010 = (
     CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
     FORMAT => 'int8u',
     WRITABLE => 1,
-    NOTES => 'Valid for DSC-RX10/HX60V/HX400V, ILCE-7/7R/7S/5000/6000, ILCA-77M2.',
+    NOTES => 'Valid for DSC-RX10/RX100M3/HX60V/HX400V, ILCE-7/7R/7S/5000/5100/6000, ILCA-77M2.',
     FIRST_ENTRY => 0,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
     0x0009 => { %releaseMode2 },
@@ -5353,6 +5774,7 @@ my %exposureProgram2010 = (
             1 => '1 file',
             2 => '2 files',
             3 => '3 files',
+            5 => '5 files',
         },
     },
     0x0029 => {
@@ -5460,7 +5882,7 @@ my %exposureProgram2010 = (
 #        PrintConv => 'sprintf("%.1f mm",$val)',
 #        PrintConvInv => '$val =~ s/ ?mm//; $val',
 #    },
-#    0x2a => { # usually identical to 0x2a or 0
+#    0x2a => { # usually identical to 0x28 or 0
 #        Name => 'FocalLength2',
 #        Format => 'int16u',
 #        ValueConv => '$val / 10',
@@ -5501,6 +5923,41 @@ my %exposureProgram2010 = (
     # 0x18 - maybe another temperature?
 );
 
+# Tag9404 (ref 12)
+%Image::ExifTool::Sony::Tag9404a = (
+    PROCESS_PROC => \&ProcessEnciphered,
+    WRITE_PROC => \&WriteEnciphered,
+    CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
+    FORMAT => 'int8u',
+    WRITABLE => 1,
+    FIRST_ENTRY => 0,
+    GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
+    0x0019 => {
+        Name => 'LensZoomPosition',
+        Format => 'int16u',
+        Condition => '$$self{Model} !~ /^SLT-/',
+        PrintConv => 'sprintf("%.0f%%",$val/10.24)',
+        PrintConvInv => '$val=~s/ ?%$//; $val * 10.24',
+    },
+);
+
+%Image::ExifTool::Sony::Tag9404b= (
+    PROCESS_PROC => \&ProcessEnciphered,
+    WRITE_PROC => \&WriteEnciphered,
+    CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
+    FORMAT => 'int8u',
+    WRITABLE => 1,
+    FIRST_ENTRY => 0,
+    GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
+    0x001e => {
+        Name => 'LensZoomPosition',
+        Format => 'int16u',
+        Condition => '$$self{Model} !~ /^(SLT-|HV|ILCA-)/',
+        PrintConv => 'sprintf("%.0f%%",$val/10.24)',
+        PrintConvInv => '$val=~s/ ?%$//; $val * 10.24',
+    },
+);
+
 # Tag9405 (ref 12)
 %Image::ExifTool::Sony::Tag9405a = (
     PROCESS_PROC => \&ProcessEnciphered,
@@ -5512,7 +5969,14 @@ my %exposureProgram2010 = (
     PRIORITY => 0,
     DATAMEMBER => [ 0x0604 ],
     GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
-    NOTES => 'Valid for SLT, NEX, ILCE-3000 and several DSC models.',
+    NOTES => 'Valid for SLT, NEX, ILCE-3000/3500 and several DSC models.',
+    0x0601 => {
+        Name => 'DistortionCorrection',
+        PrintConv => {
+            0 => 'None',
+            1 => 'Applied',
+        },
+    },
     # 0x0602 - same as 0x0604, but has value 3 for 50mm F1.4 ZA, DT 18-135mm and for 70-400mm G II: meaning ??
     0x0603 => {
         Name => 'LensFormat',
@@ -5550,6 +6014,13 @@ my %exposureProgram2010 = (
         SeparateTable => 1,
         PrintConv => \%sonyLensTypes,
     },
+    0x06ca => {
+        Name => 'LensParameters',
+        Condition => '$$self{Model} !~ /^(DSC-|Stellar)/',
+        Format => 'int16s[16]',
+        Unknown => 1,
+        PrintConv => 'sprintf("%5d" . " %5d" x 15, split(" ",$val))',
+    },
 );
 
 # Tag9405b (ref 12)
@@ -5563,7 +6034,20 @@ my %exposureProgram2010 = (
     PRIORITY => 0,
     DATAMEMBER => [ 0x005e ],
     GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
-    NOTES => 'Valid for the DSC-RX10/HX60V/HX400V/WX220, ILCE-7/7R/7S/5000/6000, ILCA-77M2.',
+    NOTES => 'Valid for the DSC-RX10/RX100M3/HX60V/HX400V/WX220, ILCE-7/7R/7S/5000/5100/6000, ILCA-77M2.',
+    0x0004 => {
+        Name => 'SonyISO',
+        Format => 'int16u',
+        ValueConv => '3.125*(2**(21-($val/256)))',
+        PrintConv => 'sprintf("%.0f",$val)',
+    },
+    0x0006 => {
+        Name => 'BaseISO',
+        Format => 'int16u',
+        ValueConv => '3.125*(2**(21-($val/256)))',
+        PrintConv => 'sprintf("%.0f",$val)',
+    },
+    0x000a => { %gain2010 },
     0x000e => { # appr. same value as Exif ExposureTime, but shorter in HDR-modes
         Name => 'SonyExposureTime2',
         Format => 'int16u',
@@ -5597,6 +6081,15 @@ my %exposureProgram2010 = (
     },
     0x0024 => { %sequenceImageNumber },
     0x0034 => { %releaseMode2 },
+    0x0042 => {
+        Name => 'HighISONoiseReduction',
+        PrintConv => {
+            0 => 'Off',
+            1 => 'Low',
+            2 => 'Normal',
+            3 => 'High',
+        },
+    },
     0x0044 => {
         Name => 'LongExposureNoiseReduction',
         PrintConv => {
@@ -5623,6 +6116,20 @@ my %exposureProgram2010 = (
             13 => 'Sepia',
         },
     },
+    0x0052 => {
+        Name => 'Sharpness',
+        Format => 'int8s',
+        PrintConv => '$val > 0 ? "+$val" : $val',
+        PrintConvInv => '$val',
+    },
+    0x005b => {
+        Name => 'DistortionCorrection',
+        PrintConv => {
+            0 => 'None',
+            1 => 'Applied',
+        },
+    },
+    # 0x005c - same as 0x005e, but has value 3 for 50mm F1.4 ZA, DT 18-135mm and for 70-400mm G II: meaning ??
     0x005d => {
         Name => 'LensFormat',
         Condition => '$$self{Model} !~ /^DSC-/',
@@ -5658,6 +6165,20 @@ my %exposureProgram2010 = (
         SeparateTable => 1,
         PrintConv => \%sonyLensTypes,
     },
+    0x0064 => {
+        Name => 'LensParameters',
+        Condition => '$$self{Model} !~ /^DSC-/',
+        Format => 'int16s[16]',
+        Unknown => 1,
+        PrintConv => 'sprintf("%5d" . " %5d" x 15, split(" ",$val))',
+    },
+    0x0342 => {
+        Name => 'LensZoomPosition',
+        Condition => '$$self{Model} !~ /^ILCA-/',
+        Format => 'int16u',
+        PrintConv => 'sprintf("%.0f%%",$val/10.24)',
+        PrintConvInv => '$val=~s/ ?%$//; $val * 10.24',
+    },
 );
 
 # Tag9406 (ref 12)
@@ -5772,6 +6293,7 @@ my %exposureProgram2010 = (
     FIRST_ENTRY => 0,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
     DATAMEMBER => [ 0x0008 ],
+    NOTES => 'NEX and ILCE models only.',
 
     # 0x0008 - LensMount, but different values from Tag9405-0x0105 and Tag9050-0x0604.
     # don't know what difference is between values '1' and '5' ...
@@ -5812,6 +6334,7 @@ my %exposureProgram2010 = (
     PRIORITY => 0,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
     DATAMEMBER => [ 0x02 ],
+    IS_SUBDIR => [ 0x11 ],
     NOTES => 'These tags are currently extracted for SLT models only.',
     # first 4 bytes (deciphered) (ref 12):
     # (perhaps 0x02 indicates the 15- or 19-point AF?)
@@ -5831,10 +6354,31 @@ my %exposureProgram2010 = (
             # 0 => '?? n.a.', # seen on some A99V images with non-AF (Samyang) lens
             1 => '15-point',
             2 => '19-point',
+            3 => '79-point', # (NC) seen for ILCA-77M2
         },
     },
-    # 0x0004 start 74 Blocks of 164 bytes each for NEX with LA-EA2 15-point Phase-detect AF adapter and A-mount lens (ref 12).
+    # 0x04 start 74 Blocks of 164 bytes each for NEX with LA-EA2 15-point Phase-detect AF adapter and A-mount lens (ref 12).
     # For the NEX probably only the 11th byte might be the AFPoint.
+    0x04 => {
+        Name => 'AFStatusActiveSensor',
+        Condition => '$$self{Model} !~ /^ILCA-/',
+        %Image::ExifTool::Minolta::afStatusInfo,
+    },
+    0x05 => { #12
+        Name => 'FocusMode',
+        Condition => '$$self{Model} =~ /^ILCA-/',
+        Notes => 'ILCA models only',
+        Writable => 'int8u',
+        Priority => 0,
+        PrintConv => {
+            0 => 'Manual',
+            2 => 'AF-S',
+            3 => 'AF-C',
+            4 => 'AF-A',
+            # 6 => 'DMF', # not yet seen
+            # 7 => 'AF-D', # not yet seen
+        },
+    },
     0x07 => [ # the active AF sensor
         {
             Name => 'AFPoint',
@@ -5894,6 +6438,7 @@ my %exposureProgram2010 = (
     ],
     0x0a => {
         Name => 'AFAreaMode',
+        Condition => '$$self{Model} !~ /^ILCA-/',
         PrintConv => {
             0 => 'Wide',
             1 => 'Spot',
@@ -5903,6 +6448,7 @@ my %exposureProgram2010 = (
     },
     0x0b => {
         Name => 'FocusMode',
+        Condition => '$$self{Model} !~ /^ILCA-/',
         PrintConvColumns => 2,
         # validated for A77 firmware 1.03, 1.04 and 1.07 and A99
         # - not confirmed for A37,A57 and A65 which also write this tag
@@ -5915,17 +6461,53 @@ my %exposureProgram2010 = (
             7 => 'AF-D', # (unique to A99)
         },
     },
+    # 0x10 - for ILCA-77M2: 10 bytes identical to 0x2020, and probably indicating 'AFPointsUsed' (ref 12)
+    0x11 => [ #12
+        {
+            Name => 'AFStatus15',
+            Condition => '$$self{AFType} == 1',
+            Format => 'int16s[18]',
+            SubDirectory => { TagTable => 'Image::ExifTool::Sony::AFStatus15' },
+        },{
+            Name => 'AFStatus19',
+            Condition => '$$self{AFType} == 2',
+            Format => 'int16s[30]',
+            SubDirectory => { TagTable => 'Image::ExifTool::Sony::AFStatus19' },
+        },
+    ],
+    0x3a => { #12
+        Name => 'AFAreaMode',
+        Condition => '$$self{Model} =~ /^ILCA-/',
+        PrintConv => {
+            0 => 'Wide',
+            1 => 'Center',
+            2 => 'Flexible Spot',
+            3 => 'Zone',
+            4 => 'Expanded Flexible Spot', # (NC)
+        },
+    },
+    0x50 => { #PH (A77M2)
+        Name => 'AFMicroAdj',
+        Condition => '$$self{Model} =~ /^ILCA-/',
+        Format => 'int8s',
+    },
+    # 0x007d - AFStatus79 ? - 95 int16s values which would match ILCA-77M2 79 AF points + 15 cross + 1 F2.8
+    # 0x016e - for SLT: 4 bytes identical to 0x2020 first 4 bytes, and indicating 'AFPointsUsed' (ref 12)
     0x017d => { #PH (verified for the A77/A99; likely valid for other SLT models - ref 12)
         # (different from AFMicroAdjValue because it is 0 when the adjustment is off)
         Name => 'AFMicroAdj',
+        Condition => '$$self{Model} !~ /^ILCA-/',
         Format => 'int8s',
     },
     0x017e => { #12
         Name => 'ExposureProgram',
+        Condition => '$$self{Model} !~ /^ILCA-/',
         Priority => 0,
         SeparateTable => 'ExposureProgram3',
         PrintConv => \%sonyExposureProgram3,
     },
+    # 0x021b - AFStatus79 ? - 95 int16s values which would match ILCA-77M2 79 AF points + 15 cross + 1 F2.8
+    # 0x04c0 - start 45 blocks of 244 bytes each for ILCA-77M2
     # 0x01b8 start 65 Blocks of 180 bytes each for SLT (ref 12)
     # In each block, the 9th, 10th and 11th byte appear to relate to AFPoint as at offsets 0x07, 0x08, 0x09 above..
     # Possibly, these blocks relate to sequential focusing attempts and/or object tracking,
@@ -5939,6 +6521,68 @@ my %exposureProgram2010 = (
     #   0x14fa, 0x1570, 0x1572, 0x15ae, 0x1f48
 );
 
+# AF Point Status (ref 12)
+%Image::ExifTool::Sony::AFStatus15 = (
+    %binaryDataAttrs,
+    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
+    NOTES => 'AF Status information for models with 15-point AF.',
+    0x00 => { Name => 'AFStatusUpper-left',           %Image::ExifTool::Minolta::afStatusInfo },
+    0x02 => { Name => 'AFStatusLeft',                 %Image::ExifTool::Minolta::afStatusInfo },
+    0x04 => { Name => 'AFStatusLower-left',           %Image::ExifTool::Minolta::afStatusInfo },
+    0x06 => { Name => 'AFStatusFarLeft',              %Image::ExifTool::Minolta::afStatusInfo },
+    0x08 => { Name => 'AFStatusTopHorizontal',        %Image::ExifTool::Minolta::afStatusInfo },
+    0x0a => { Name => 'AFStatusNearRight',            %Image::ExifTool::Minolta::afStatusInfo },
+    0x0c => { Name => 'AFStatusCenterHorizontal',     %Image::ExifTool::Minolta::afStatusInfo },
+    0x0e => { Name => 'AFStatusNearLeft',             %Image::ExifTool::Minolta::afStatusInfo },
+    0x10 => { Name => 'AFStatusBottomHorizontal',     %Image::ExifTool::Minolta::afStatusInfo },
+    0x12 => { Name => 'AFStatusTopVertical',          %Image::ExifTool::Minolta::afStatusInfo },
+    0x14 => { Name => 'AFStatusCenterVertical',       %Image::ExifTool::Minolta::afStatusInfo },
+    0x16 => { Name => 'AFStatusBottomVertical',       %Image::ExifTool::Minolta::afStatusInfo },
+    0x18 => { Name => 'AFStatusFarRight',             %Image::ExifTool::Minolta::afStatusInfo },
+    0x1a => { Name => 'AFStatusUpper-right',          %Image::ExifTool::Minolta::afStatusInfo },
+    0x1c => { Name => 'AFStatusRight',                %Image::ExifTool::Minolta::afStatusInfo },
+    0x1e => { Name => 'AFStatusLower-right',          %Image::ExifTool::Minolta::afStatusInfo },
+    0x20 => { Name => 'AFStatusUpper-middle',         %Image::ExifTool::Minolta::afStatusInfo },
+    0x22 => { Name => 'AFStatusLower-middle',         %Image::ExifTool::Minolta::afStatusInfo },
+);
+
+# AF Point Status (ref 12)
+%Image::ExifTool::Sony::AFStatus19 = (
+    %binaryDataAttrs,
+    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
+    NOTES => 'AF Status information for models with 19-point AF.',
+    0x00 => { Name => 'AFStatusUpperFarLeft',         %Image::ExifTool::Minolta::afStatusInfo },
+    0x02 => { Name => 'AFStatusUpper-leftHorizontal', %Image::ExifTool::Minolta::afStatusInfo },
+    0x04 => { Name => 'AFStatusFarLeftHorizontal',    %Image::ExifTool::Minolta::afStatusInfo },
+    0x06 => { Name => 'AFStatusLeftHorizontal',       %Image::ExifTool::Minolta::afStatusInfo },
+    0x08 => { Name => 'AFStatusLowerFarLeft',         %Image::ExifTool::Minolta::afStatusInfo },
+    0x0a => { Name => 'AFStatusLower-leftHorizontal', %Image::ExifTool::Minolta::afStatusInfo },
+    0x0c => { Name => 'AFStatusUpper-leftVertical',   %Image::ExifTool::Minolta::afStatusInfo },
+    0x0e => { Name => 'AFStatusLeftVertical',         %Image::ExifTool::Minolta::afStatusInfo },
+    0x10 => { Name => 'AFStatusLower-leftVertical',   %Image::ExifTool::Minolta::afStatusInfo },
+    0x12 => { Name => 'AFStatusFarLeftVertical',      %Image::ExifTool::Minolta::afStatusInfo },
+    0x14 => { Name => 'AFStatusTopHorizontal',        %Image::ExifTool::Minolta::afStatusInfo },
+    0x16 => { Name => 'AFStatusNearRight',            %Image::ExifTool::Minolta::afStatusInfo },
+    0x18 => { Name => 'AFStatusCenterHorizontal',     %Image::ExifTool::Minolta::afStatusInfo },
+    0x1a => { Name => 'AFStatusNearLeft',             %Image::ExifTool::Minolta::afStatusInfo },
+    0x1c => { Name => 'AFStatusBottomHorizontal',     %Image::ExifTool::Minolta::afStatusInfo },
+    0x1e => { Name => 'AFStatusTopVertical',          %Image::ExifTool::Minolta::afStatusInfo },
+    0x20 => { Name => 'AFStatusUpper-middle',         %Image::ExifTool::Minolta::afStatusInfo },
+    0x22 => { Name => 'AFStatusCenterVertical',       %Image::ExifTool::Minolta::afStatusInfo },
+    0x24 => { Name => 'AFStatusLower-middle',         %Image::ExifTool::Minolta::afStatusInfo },
+    0x26 => { Name => 'AFStatusBottomVertical',       %Image::ExifTool::Minolta::afStatusInfo },
+    0x28 => { Name => 'AFStatusUpperFarRight',        %Image::ExifTool::Minolta::afStatusInfo },
+    0x2a => { Name => 'AFStatusUpper-rightHorizontal',%Image::ExifTool::Minolta::afStatusInfo },
+    0x2c => { Name => 'AFStatusFarRightHorizontal',   %Image::ExifTool::Minolta::afStatusInfo },
+    0x2e => { Name => 'AFStatusRightHorizontal',      %Image::ExifTool::Minolta::afStatusInfo },
+    0x30 => { Name => 'AFStatusLowerFarRight',        %Image::ExifTool::Minolta::afStatusInfo },
+    0x32 => { Name => 'AFStatusLower-rightHorizontal',%Image::ExifTool::Minolta::afStatusInfo },
+    0x34 => { Name => 'AFStatusFarRightVertical',     %Image::ExifTool::Minolta::afStatusInfo },
+    0x36 => { Name => 'AFStatusUpper-rightVertical',  %Image::ExifTool::Minolta::afStatusInfo },
+    0x38 => { Name => 'AFStatusRightVertical',        %Image::ExifTool::Minolta::afStatusInfo },
+    0x3a => { Name => 'AFStatusLower-rightVertical',  %Image::ExifTool::Minolta::afStatusInfo },
+);
+
 %Image::ExifTool::Sony::FaceInfo1 = (
     %binaryDataAttrs,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
@@ -6537,7 +7181,7 @@ sub ConvInvLensSpec($)
 #------------------------------------------------------------------------------
 # Print Sony LensSpec value
 # Inputs: 0) LensSpec numerical value
-# Returns: converted LensSpec string (ie. "DT 18-55mm F3.5-5.6 SAM")
+# Returns: converted LensSpec string (eg. "DT 18-55mm F3.5-5.6 SAM")
 # Refs: http://equational.org/importphotos/alphalensinfo.html
 #       http://www.dyxum.com/dforum/the-lens-information-different-from-lensid_topic37682.html
 my @lensFeatures = (
@@ -15,13 +15,13 @@ use vars qw($VERSION @ISA);
 use Image::ExifTool qw(:Utils :Vars);
 use Image::ExifTool::XMP;
 
-$VERSION = '1.24';
+$VERSION = '1.26';
 @ISA = qw(Exporter);
 
 # set this to a language code to generate Lang module with 'MISSING' entries
 my $makeMissing = '';
 
-sub LoadLangModules($);
+sub LoadLangModules($;$);
 sub WriteLangModule($$;$);
 sub NumbersFirst;
 
@@ -60,7 +60,7 @@ my $caseInsensitive;    # used internally by sort routine
 #------------------------------------------------------------------------------
 # Utility to print tag information database as an XML list
 # Inputs: 0) output file name (undef to send to console),
-#         1) group name (may be undef), 2) options hash ('Flags','NoDesc')
+#         1) group name (may be undef), 2) options hash ('Flags','NoDesc','Lang')
 # Returns: true on success
 sub Write(;$$%)
 {
@@ -72,9 +72,13 @@ sub Write(;$$%)
 
     Image::ExifTool::LoadAllTables();   # first load all our tables
     unless ($opts{NoDesc}) {
-        LoadLangModules(\%langInfo);    # load all existing Lang modules
-        @langs = sort keys %langInfo;
         $defaultLang = $Image::ExifTool::defaultLang;
+        LoadLangModules(\%langInfo, $opts{Lang}); # load necessary Lang modules
+        if ($opts{Lang}) {
+            @langs = grep /^$opts{Lang}$/i, keys %langInfo;
+        } else {
+            @langs = sort keys %langInfo;
+        }
     }
     if (defined $file) {
         open PTIFILE, ">$file" or return 0;
@@ -215,7 +219,10 @@ PTILoop:    for ($index=0; $index<@infoArray; ++$index) {
                 }
                 # print tag descriptions
                 $desc = Image::ExifTool::XMP::EscapeXML($desc);
-                print $fp ">\n  <desc lang='$defaultLang'>$desc</desc>$altDescr\n";
+                unless ($opts{Lang} and $altDescr) {
+                    print $fp ">\n  <desc lang='$defaultLang'>$desc</desc>";
+                }
+                print $fp "$altDescr\n";
                 for (my $i=0; ; ++$i) {
                     my $conv = $$tagInfo{PrintConv};
                     my $idx = '';
@@ -236,7 +243,7 @@ PTILoop:    for ($index=0; $index<@infoArray; ++$index) {
                     if ($$conv{BITMASK}) {
                         foreach $key (keys %{$$conv{BITMASK}}) {
                             my $mask = 0x01 << $key;
-                            next if $$conv{$mask};
+                            next if not $mask or $$conv{$mask};
                             $$conv{$mask} = $$conv{BITMASK}{$key};
                         }
                     }
@@ -245,9 +252,9 @@ PTILoop:    for ($index=0; $index<@infoArray; ++$index) {
                         my $val = $$conv{$key};
                         my $xmlVal = Image::ExifTool::XMP::EscapeXML($val);
                         my $xmlKey = Image::ExifTool::XMP::FullEscapeXML($key);
-                        print $fp "   <key id='$xmlKey'>";
-                        print $fp "\n    <val lang='$defaultLang'>$xmlVal</val>\n";
+                        print $fp "   <key id='$xmlKey'>\n";
                         # add alternate language values
+                        my $altConv = '';
                         foreach (@langConv) {
                             my $lv = $langConv{$_};
                             # handle indexed PrintConv entries
@@ -256,9 +263,12 @@ PTILoop:    for ($index=0; $index<@infoArray; ++$index) {
                             # ignore values that are missing or same as default
                             next unless defined $lv and $lv ne $val;
                             $lv = Image::ExifTool::XMP::EscapeXML($lv);
-                            print $fp "    <val lang='$_'>$lv</val>\n";
+                            $altConv .= "    <val lang='$_'>$lv</val>\n";
+                        }
+                        unless ($opts{Lang} and $altConv) {
+                            print $fp "    <val lang='$defaultLang'>$xmlVal</val>\n"
                         }
-                        print $fp "   </key>\n";
+                        print $fp "$altConv   </key>\n";
                     }
                     print $fp "  </values>\n";
                 }
@@ -452,12 +462,13 @@ sub BuildLangModules($;$)
                     unless (defined $convVal) {
                         if ($$printConv{BITMASK} and $key =~ /^\d+$/) {
                             my $i;
-                            for ($i=0; $i<32; ++$i) {
-                                next unless $key == (0x01 << $i);
+                            for ($i=0; $i<64; ++$i) {
+                                my $mask = (0x01 << $i) or last;
+                                next unless $key == $mask;
                                 $convVal = $$printConv{BITMASK}{$i};
                             }
                         }
-                        warn("Missing PrintConv entry for $key") and next unless defined $convVal;
+                        warn("Missing PrintConv entry for $tableName $$tagInfo{Name} $key\n") and next unless defined $convVal;
                     }
                     if ($cap and $convVal =~ /^[a-z]/) {
                         $val = lcfirst $val;    # change back to lower case
@@ -639,13 +650,13 @@ FOOTER
 
 #------------------------------------------------------------------------------
 # load all lang modules into hash
-# Inputs: 0) Hash reference
-sub LoadLangModules($)
+# Inputs: 0) Hash reference, 1) specific language to load (undef for all)
+sub LoadLangModules($;$)
 {
-    my $langHash = shift;
-    my $lang;
+    my ($langHash, $lang) = @_;
     require Image::ExifTool;
-    foreach $lang (@Image::ExifTool::langs) {
+    my @langs = $lang ? ($lang) : @Image::ExifTool::langs;
+    foreach $lang (@langs) {
         next if $lang eq $Image::ExifTool::defaultLang;
         eval "require Image::ExifTool::Lang::$lang" or warn("Can't load Lang::$lang\n"), next;
         my $xlat = "Image::ExifTool::Lang::${lang}::Translate";
@@ -722,6 +733,7 @@ be written to any IFD.  Saves all groups if not specified.
 
     Flags   - Set to output 'flags' attribute
     NoDesc  - Set to suppress output of descriptions
+    Lang    - Select a single language for output
 
 =item Return Value:
 
@@ -276,6 +276,7 @@ my @tableList = (
 	'Image::ExifTool::Olympus::RawInfo',
 	'Image::ExifTool::PDF::Info',
 	'Image::ExifTool::PNG::Main',
+	'Image::ExifTool::PNG::PhysicalPixel',
 	'Image::ExifTool::PNG::TextualData',
 	'Image::ExifTool::Panasonic::Data1',
 	'Image::ExifTool::Panasonic::FaceDetInfo',
@@ -349,8 +350,11 @@ my @tableList = (
 	'Image::ExifTool::Sigma::Main',
 	'Image::ExifTool::Sony::AFInfo',
 	'Image::ExifTool::Sony::AFInfo2',
+	'Image::ExifTool::Sony::AFStatus15',
+	'Image::ExifTool::Sony::AFStatus19',
 	'Image::ExifTool::Sony::CameraInfo',
 	'Image::ExifTool::Sony::CameraInfo2',
+	'Image::ExifTool::Sony::CameraInfo3',
 	'Image::ExifTool::Sony::CameraSettings',
 	'Image::ExifTool::Sony::CameraSettings2',
 	'Image::ExifTool::Sony::CameraSettings3',
@@ -383,6 +387,8 @@ my @tableList = (
 	'Image::ExifTool::Sony::Tag9400c',
 	'Image::ExifTool::Sony::Tag9402',
 	'Image::ExifTool::Sony::Tag9403',
+	'Image::ExifTool::Sony::Tag9404a',
+	'Image::ExifTool::Sony::Tag9404b',
 	'Image::ExifTool::Sony::Tag9405a',
 	'Image::ExifTool::Sony::Tag9405b',
 	'Image::ExifTool::Sony::Tag9406',
@@ -436,203 +442,250 @@ my @tableList = (
 # lookup for all writable tags
 my %tagLookup = (
 	'aberrationcorrectiondistance' => { 87 => 0x69 },
-	'about' => { 387 => 'about' },
-	'abspeakaudiofilepath' => { 393 => 'absPeakAudioFilePath' },
+	'about' => { 393 => 'about' },
+	'abspeakaudiofilepath' => { 399 => 'absPeakAudioFilePath' },
 	'accelerationtracking' => { 68 => 0x518 },
-	'accelerometer' => { 308 => 0x3 },
-	'accelerometerx' => { 252 => 0x8d },
-	'accelerometery' => { 252 => 0x8e },
-	'accelerometerz' => { 252 => 0x8c },
-	'accessoryserialnumber' => { 252 => 0x54 },
-	'accessorytype' => { 252 => 0x53 },
+	'accelerometer' => { 309 => 0x3 },
+	'accelerometerx' => { 253 => 0x8d },
+	'accelerometery' => { 253 => 0x8e },
+	'accelerometerz' => { 253 => 0x8c },
+	'accessoryserialnumber' => { 253 => 0x54 },
+	'accessorytype' => { 253 => 0x53 },
 	'actionadvised' => { 103 => 0x2a },
 	'activearea' => { 95 => 0xc68d },
 	'actived-lighting' => { 182 => 0x22, 213 => 0x24 },
 	'actived-lightingmode' => { 213 => 0x25 },
 	'addaspectratioinfo' => { 68 => 0x80e },
-	'additionalmodelinformation' => { 380 => 'AddlModelInfo' },
+	'additionalmodelinformation' => { 386 => 'AddlModelInfo' },
 	'addoriginaldecisiondata' => { 68 => 0x80f, 69 => 0x11, 70 => 0x13, 73 => 0x14 },
 	'address' => { 130 => 'Address' },
-	'adjustmentmode' => { 314 => 0x15 },
+	'adjustmentmode' => { 315 => 0x15 },
 	'adobe' => { 96 => 'Adobe' },
-	'adultcontentwarning' => { 383 => 'AdultContentWarning', 386 => 'adultContentWarning' },
+	'adultcontentwarning' => { 389 => 'AdultContentWarning', 392 => 'adultContentWarning' },
 	'advancedraw' => { 215 => 0x76a43203 },
-	'advancedscenetype' => { 252 => 0x3d },
-	'advisory' => { 391 => 'Advisory' },
-	'ae_iso' => { 257 => 0x2, 258 => 0x4, 259 => 0x12 },
-	'aeaperture' => { 257 => 0x1, 258 => 0x3, 259 => 0x11 },
-	'aeaperturesteps' => { 257 => 0x8, 258 => 0xb },
+	'advancedscenetype' => { 253 => 0x3d },
+	'advisory' => { 397 => 'Advisory' },
+	'ae_iso' => { 258 => 0x2, 259 => 0x4, 260 => 0x12 },
+	'aeaperture' => { 258 => 0x1, 259 => 0x3, 260 => 0x11 },
+	'aeaperturesteps' => { 258 => 0x8, 259 => 0xb },
 	'aebautocancel' => { 68 => 0x104 },
 	'aebbracketvalue' => { 62 => 0x11 },
 	'aebsequence' => { 68 => 0x105 },
 	'aebsequenceautocancel' => { 66 => 0x9, 67 => 0x9, 69 => 0x8, 70 => 0x9, 73 => 0x9, 74 => 0x7 },
 	'aebshotcount' => { 68 => 0x106 },
-	'aebxv' => { 257 => 0x4, 258 => 0x6 },
-	'aeerror' => { 258 => 0x8 },
-	'aeexposuretime' => { 257 => 0x0, 258 => 0x2, 259 => 0x10 },
+	'aebxv' => { 258 => 0x4, 259 => 0x6 },
+	'aeerror' => { 259 => 0x8 },
+	'aeexposuretime' => { 258 => 0x0, 259 => 0x2, 260 => 0x10 },
 	'aelbutton' => { 150 => 0x45 },
 	'aelexposureindicator' => { 150 => 0x51 },
-	'aelock' => { 150 => 0x5b, 223 => '4.2', 229 => '4.2', 233 => 0x201, 283 => 0x48, 321 => [0x86,0x286] },
+	'aelock' => { 150 => 0x5b, 223 => '4.2', 229 => '4.2', 233 => 0x201, 284 => 0x48, 325 => [0x86,0x286] },
 	'aelockbutton' => { 222 => '16.1', 223 => '4.1', 224 => '15.1', 225 => '16.1', 226 => '16.1', 227 => '30.1', 228 => '16.1', 229 => '4.1', 231 => '17.1' },
 	'aelockbuttonplusdials' => { 222 => '16.2', 227 => '32.1' },
 	'aelockformb-d80' => { 231 => '3.1' },
-	'aemaxaperture' => { 257 => 0x9, 258 => 0x10, 259 => 0x1c },
-	'aemaxaperture2' => { 257 => 0xa, 258 => 0x11, 259 => 0x1d },
-	'aemeteringmode' => { 257 => 0xc },
-	'aemeteringmode2' => { 257 => '13.1' },
-	'aemeteringsegments' => { 153 => 0x628, 283 => 0x209 },
+	'aemaxaperture' => { 258 => 0x9, 259 => 0x10, 260 => 0x1c },
+	'aemaxaperture2' => { 258 => 0xa, 259 => 0x11, 260 => 0x1d },
+	'aemeteringmode' => { 258 => 0xc },
+	'aemeteringmode2' => { 258 => '13.1' },
+	'aemeteringsegments' => { 153 => 0x628, 284 => 0x209 },
 	'aemicroadjustment' => { 68 => 0x111 },
-	'aeminaperture' => { 257 => 0xb, 258 => 0x12, 259 => 0x1e },
-	'aeminexposuretime' => { 257 => 0x5, 258 => 0x13, 259 => 0x1f },
-	'aeprogrammode' => { 257 => 0x6 },
+	'aeminaperture' => { 258 => 0xb, 259 => 0x12, 260 => 0x1e },
+	'aeminexposuretime' => { 258 => 0x5, 259 => 0x13, 260 => 0x1f },
+	'aeprogrammode' => { 258 => 0x6 },
 	'aesetting' => { 29 => 0x21 },
-	'aewhitebalance' => { 257 => 0xd },
-	'aexv' => { 257 => 0x3, 258 => 0x5 },
+	'aewhitebalance' => { 258 => 0xd },
+	'aexv' => { 258 => 0x3, 259 => 0x5 },
 	'af-cpriorityselection' => { 222 => '1.1', 225 => '0.1', 226 => '0.1', 227 => '1.1', 228 => '0.1' },
 	'af-onformb-d10' => { 222 => '3.3', 227 => '3.2' },
 	'af-onformb-d11' => { 228 => '2.2' },
 	'af-spriorityselection' => { 222 => '1.2', 227 => '1.2', 228 => '0.2' },
 	'afactivation' => { 222 => '2.1', 227 => '2.1' },
-	'afadjustment' => { 283 => 0x72 },
+	'afadjustment' => { 284 => 0x72 },
 	'afandmeteringbuttons' => { 68 => 0x701 },
 	'afaperture' => { 178 => 0x5, 179 => 0x5 },
 	'afareaheight' => { 158 => 0x1a },
 	'afareaillumination' => { 150 => 0x4b, 229 => '15.3' },
-	'afareamode' => { 146 => 0x33, 150 => 0xe, 157 => 0x0, 158 => 0x5, 252 => 0xf, 305 => 0x1205, 315 => 0xa, 319 => 0x11, 320 => 0x10, 321 => 0x24, 331 => 0xb043, 349 => 0x17 },
-	'afareamodesetting' => { 223 => '11.1', 224 => '0.1', 229 => '16.1', 231 => '2.1', 331 => 0x201c },
+	'afareamode' => { 146 => 0x33, 150 => 0xe, 157 => 0x0, 158 => 0x5, 253 => 0xf, 306 => 0x1205, 316 => [0xa,0x3a], 323 => 0x11, 324 => 0x10, 325 => 0x24, 335 => 0xb043, 353 => 0x17 },
+	'afareamodesetting' => { 223 => '11.1', 224 => '0.1', 229 => '16.1', 231 => '2.1', 335 => 0x201c },
 	'afareas' => { 233 => 0x304 },
 	'afareawidth' => { 158 => 0x18 },
-	'afareaxposition' => { 158 => 0x14, 305 => 0x1203 },
-	'afareaxposition1' => { 305 => 0x1201 },
-	'afareayposition' => { 158 => 0x16, 305 => 0x1204 },
-	'afareayposition1' => { 305 => 0x1202 },
+	'afareaxposition' => { 158 => 0x14, 306 => 0x1203 },
+	'afareaxposition1' => { 306 => 0x1201 },
+	'afareayposition' => { 158 => 0x16, 306 => 0x1204 },
+	'afareayposition1' => { 306 => 0x1202 },
 	'afassist' => { 66 => 0x5, 74 => 0x5, 150 => 0x48, 222 => '2.5', 223 => '0.2', 224 => '0.2', 225 => '1.1', 226 => '1.1', 227 => '2.4', 228 => '1.4', 229 => '0.2', 231 => '2.3' },
 	'afassistbeam' => { 68 => 0x50e, 69 => 0x4, 70 => 0x5, 71 => 0x4, 72 => 0x4, 73 => 0x5 },
-	'afassistlamp' => { 252 => 0x31 },
-	'afbuttonpressed' => { 321 => [0x83,0x283] },
-	'afdefocus' => { 260 => 0x6 },
+	'afassistlamp' => { 253 => 0x31 },
+	'afbuttonpressed' => { 325 => [0x83,0x283] },
+	'afdefocus' => { 261 => 0x6 },
 	'afduringliveview' => { 68 => 0x511 },
-	'affinea' => { 364 => 'AffineA' },
-	'affineb' => { 364 => 'AffineB' },
-	'affinec' => { 364 => 'AffineC' },
-	'affined' => { 364 => 'AffineD' },
+	'affinea' => { 370 => 'AffineA' },
+	'affineb' => { 370 => 'AffineB' },
+	'affinec' => { 370 => 'AffineC' },
+	'affined' => { 370 => 'AffineD' },
 	'affinetune' => { 159 => 0x0, 233 => 0x306 },
 	'affinetuneadj' => { 159 => 0x2, 190 => 0x2d1, 191 => 0x2dc, 233 => 0x307 },
 	'affinetuneindex' => { 159 => 0x1 },
-	'affinex' => { 364 => 'AffineX' },
-	'affiney' => { 364 => 'AffineY' },
-	'afilluminator' => { 319 => 0x29, 331 => 0xb044 },
+	'affinex' => { 370 => 'AffineX' },
+	'affiney' => { 370 => 'AffineY' },
+	'afilluminator' => { 323 => 0x29, 335 => 0xb044 },
 	'afimageheight' => { 158 => 0x12 },
 	'afimagewidth' => { 158 => 0x10 },
-	'afintegrationtime' => { 260 => 0x7 },
-	'afmicroadj' => { 315 => 0x17d },
-	'afmicroadjmode' => { 2 => 0x1, 318 => 0x131 },
-	'afmicroadjregisteredlenses' => { 318 => '305.1' },
+	'afintegrationtime' => { 261 => 0x7 },
+	'afmicroadj' => { 316 => [0x17d,0x50] },
+	'afmicroadjmode' => { 2 => 0x1, 320 => 0x131 },
+	'afmicroadjregisteredlenses' => { 320 => '305.1' },
 	'afmicroadjustment' => { 68 => 0x507 },
-	'afmicroadjvalue' => { 2 => 0x2, 318 => 0x130 },
-	'afmode' => { 91 => 0x3009, 146 => 0x16, 314 => 0x5 },
+	'afmicroadjvalue' => { 2 => 0x2, 320 => 0x130 },
+	'afmode' => { 91 => 0x3009, 146 => 0x16, 315 => 0x5 },
 	'afonaelockbuttonswitch' => { 68 => 0x702 },
 	'afonbutton' => { 222 => '3.1' },
-	'afpoint' => { 29 => 0x13, 90 => 0x18, 146 => 0x15, 157 => 0x1, 236 => 0x308, 314 => 0x1f, 315 => 0x7, 317 => 0x20, 318 => 0x19 },
+	'afpoint' => { 29 => 0x13, 90 => 0x18, 146 => 0x15, 157 => 0x1, 236 => 0x308, 315 => 0x1f, 316 => 0x7, 320 => 0x19, 321 => 0x18, 322 => [0x18,0x20] },
 	'afpointactivationarea' => { 67 => 0x11, 73 => 0x11 },
 	'afpointareaexpansion' => { 68 => 0x508 },
-	'afpointatshutterrelease' => { 315 => 0x9 },
+	'afpointatshutterrelease' => { 316 => 0x9 },
 	'afpointautoselection' => { 68 => 0x50b },
 	'afpointbrightness' => { 68 => 0x50d, 222 => '2.4' },
 	'afpointdisplayduringfocus' => { 68 => 0x50c },
 	'afpointillumination' => { 67 => 0xa, 222 => '2.3', 227 => '2.3', 228 => '1.3', 231 => '2.4' },
-	'afpointinfocus' => { 315 => 0x8 },
-	'afpointmode' => { 264 => 0x3 },
-	'afpointposition' => { 91 => 0x2021, 252 => 0x4d },
+	'afpointinfocus' => { 316 => 0x8 },
+	'afpointmode' => { 265 => 0x3 },
+	'afpointposition' => { 91 => 0x2021, 253 => 0x4d },
 	'afpointregistration' => { 66 => 0x7 },
 	'afpoints' => { 149 => 0x10 },
-	'afpointselected' => { 150 => 0xd, 233 => 0x305, 283 => 0xe, 317 => [0x14,0x1c], 318 => 0x15, 331 => 0x201e },
-	'afpointselected2' => { 264 => 0x4 },
+	'afpointselected' => { 150 => 0xd, 233 => 0x305, 284 => 0xe, 320 => 0x15, 321 => 0x14, 322 => [0x14,0x1c], 335 => 0x201e },
+	'afpointselected2' => { 265 => 0x4 },
 	'afpointselection' => { 67 => 0xb, 222 => '1.3', 227 => '1.3' },
 	'afpointselectionmethod' => { 68 => 0x50f, 69 => 0xc, 70 => 0xd, 73 => 0xd },
 	'afpointset' => { 100 => 0x1022 },
-	'afpointsetting' => { 319 => 0x12, 320 => 0x11 },
-	'afpointsinfocus' => { 62 => 0xe, 157 => 0x2, 260 => 0xb, 283 => [0xf,0x3c] },
+	'afpointsetting' => { 323 => 0x12, 324 => 0x11 },
+	'afpointsinfocus' => { 62 => 0xe, 157 => 0x2, 261 => 0xb, 284 => [0xf,0x3c] },
 	'afpointsinfocus5d' => { 17 => 0x38 },
 	'afpointspotmetering' => { 67 => 0xd },
-	'afpointsselected' => { 354 => 0x4 },
-	'afpointsunknown1' => { 260 => 0x0 },
-	'afpointsunknown2' => { 260 => 0x2 },
-	'afpointsused' => { 158 => 0x8, 316 => 0x0 },
-	'afpredictor' => { 260 => 0x4 },
+	'afpointsselected' => { 360 => 0x4 },
+	'afpointsunknown1' => { 261 => 0x0 },
+	'afpointsunknown2' => { 261 => 0x2 },
+	'afpointsused' => { 158 => 0x8, 317 => 0x0 },
+	'afpredictor' => { 261 => 0x4 },
 	'afresponse' => { 182 => 0xad },
 	'afresult' => { 238 => 0x1038 },
 	'afsearch' => { 233 => 0x303 },
 	'afsensoractive' => { 146 => 0x1 },
-	'afstatus' => { 305 => 0x1200 },
-	'afstatusactivesensor' => { 146 => 0x2 },
-	'afstatusbottom' => { 146 => 0x8 },
-	'afstatusbottom-left' => { 146 => 0x12 },
-	'afstatusbottom-right' => { 146 => 0x6 },
-	'afstatuscenterhorizontal' => { 146 => 0x2f },
-	'afstatuscentervertical' => { 146 => 0xc },
-	'afstatusleft' => { 146 => 0x2d },
-	'afstatusmiddlehorizontal' => { 146 => 0xa },
-	'afstatusright' => { 146 => 0x31 },
-	'afstatustop' => { 146 => 0xe },
-	'afstatustop-left' => { 146 => 0x10 },
-	'afstatustop-right' => { 146 => 0x4 },
-	'aftype' => { 315 => 0x2 },
-	'afwithshutter' => { 319 => 0x2a },
-	'aggregationtype' => { 384 => 'aggregationType' },
-	'agreement' => { 386 => 'agreement' },
+	'afstatus' => { 306 => 0x1200 },
+	'afstatusactivesensor' => { 146 => 0x2, 316 => 0x4, 320 => 0x1e, 321 => 0x1b, 322 => [0x1b,0x21] },
+	'afstatusbottom' => { 146 => 0x8, 320 => 0x2a, 321 => 0x21, 322 => 0x21 },
+	'afstatusbottom-left' => { 146 => 0x12, 321 => 0x2b, 322 => 0x2b },
+	'afstatusbottom-right' => { 146 => 0x6, 321 => 0x1f, 322 => 0x1f },
+	'afstatusbottomassist-left' => { 320 => 0x28 },
+	'afstatusbottomassist-right' => { 320 => 0x2c },
+	'afstatusbottomhorizontal' => { 318 => 0x10, 319 => 0x1c },
+	'afstatusbottomvertical' => { 318 => 0x16, 319 => 0x26 },
+	'afstatuscenter-10' => { 320 => 0x34 },
+	'afstatuscenter-11' => { 320 => 0x36 },
+	'afstatuscenter-12' => { 320 => 0x38 },
+	'afstatuscenter-14' => { 320 => 0x3c },
+	'afstatuscenter-7' => { 320 => 0x2e },
+	'afstatuscenter-9' => { 320 => 0x32 },
+	'afstatuscenter-horizontal' => { 320 => 0x30 },
+	'afstatuscenter-vertical' => { 320 => 0x3a },
+	'afstatuscenterf2-8' => { 320 => 0x4c },
+	'afstatuscenterhorizontal' => { 146 => 0x2f, 318 => 0xc, 319 => 0x18, 321 => 0x2f, 322 => 0x2f },
+	'afstatuscentervertical' => { 146 => 0xc, 318 => 0x14, 319 => 0x22, 321 => 0x25, 322 => 0x25 },
+	'afstatusfarleft' => { 318 => 0x6, 320 => 0x26 },
+	'afstatusfarlefthorizontal' => { 319 => 0x4 },
+	'afstatusfarleftvertical' => { 319 => 0x12 },
+	'afstatusfarright' => { 318 => 0x18, 320 => 0x44 },
+	'afstatusfarrighthorizontal' => { 319 => 0x2c },
+	'afstatusfarrightvertical' => { 319 => 0x34 },
+	'afstatusleft' => { 146 => 0x2d, 318 => 0x2, 320 => 0x22, 321 => 0x2d, 322 => 0x2d },
+	'afstatuslefthorizontal' => { 319 => 0x6 },
+	'afstatusleftvertical' => { 319 => 0xe },
+	'afstatuslower-left' => { 318 => 0x4, 320 => 0x24 },
+	'afstatuslower-lefthorizontal' => { 319 => 0xa },
+	'afstatuslower-leftvertical' => { 319 => 0x10 },
+	'afstatuslower-middle' => { 318 => 0x22, 319 => 0x24 },
+	'afstatuslower-right' => { 318 => 0x1e, 320 => 0x4a },
+	'afstatuslower-righthorizontal' => { 319 => 0x32 },
+	'afstatuslower-rightvertical' => { 319 => 0x3a },
+	'afstatuslowerfarleft' => { 319 => 0x8 },
+	'afstatuslowerfarright' => { 319 => 0x30 },
+	'afstatusmiddlehorizontal' => { 146 => 0xa, 321 => 0x23, 322 => 0x23 },
+	'afstatusnearleft' => { 318 => 0xe, 319 => 0x1a },
+	'afstatusnearright' => { 318 => 0xa, 319 => 0x16 },
+	'afstatusright' => { 146 => 0x31, 318 => 0x1c, 320 => 0x48, 321 => 0x31, 322 => 0x31 },
+	'afstatusrighthorizontal' => { 319 => 0x2e },
+	'afstatusrightvertical' => { 319 => 0x38 },
+	'afstatustop' => { 146 => 0xe, 320 => 0x40, 321 => 0x27, 322 => 0x27 },
+	'afstatustop-left' => { 146 => 0x10, 321 => 0x29, 322 => 0x29 },
+	'afstatustop-right' => { 146 => 0x4, 321 => 0x1d, 322 => 0x1d },
+	'afstatustopassist-left' => { 320 => 0x3e },
+	'afstatustopassist-right' => { 320 => 0x42 },
+	'afstatustophorizontal' => { 318 => 0x8, 319 => 0x14 },
+	'afstatustopvertical' => { 318 => 0x12, 319 => 0x1e },
+	'afstatusupper-left' => { 318 => 0x0, 320 => 0x20 },
+	'afstatusupper-lefthorizontal' => { 319 => 0x2 },
+	'afstatusupper-leftvertical' => { 319 => 0xc },
+	'afstatusupper-middle' => { 318 => 0x20, 319 => 0x20 },
+	'afstatusupper-right' => { 318 => 0x1a, 320 => 0x46 },
+	'afstatusupper-righthorizontal' => { 319 => 0x2a },
+	'afstatusupper-rightvertical' => { 319 => 0x36 },
+	'afstatusupperfarleft' => { 319 => 0x0 },
+	'afstatusupperfarright' => { 319 => 0x28 },
+	'aftype' => { 316 => 0x2 },
+	'afwithshutter' => { 323 => 0x2a },
+	'aggregationtype' => { 390 => 'aggregationType' },
+	'agreement' => { 392 => 'agreement' },
 	'aiservocontinuousshooting' => { 67 => 0x15 },
 	'aiservofirstimagepriority' => { 68 => 0x519 },
 	'aiservoimagepriority' => { 68 => 0x503 },
 	'aiservosecondimagepriority' => { 68 => 0x51a },
 	'aiservotrackingmethod' => { 68 => 0x504 },
 	'aiservotrackingsensitivity' => { 67 => 0x14, 68 => 0x502 },
-	'album' => { 393 => 'album' },
-	'alreadyapplied' => { 370 => 'AlreadyApplied' },
-	'alternatetitle' => { 384 => 'alternateTitle' },
+	'album' => { 399 => 'album' },
+	'alreadyapplied' => { 376 => 'AlreadyApplied' },
+	'alternatetitle' => { 390 => 'alternateTitle' },
 	'altitude' => { 160 => 0x6 },
-	'alttapename' => { 393 => 'altTapeName' },
-	'alttimecode' => { 393 => 'altTimecode' },
-	'alttimecodetimeformat' => { 393 => [\'altTimecode','altTimecodeTimeFormat'] },
-	'alttimecodetimevalue' => { 393 => [\'altTimecode','altTimecodeTimeValue'] },
-	'alttimecodevalue' => { 393 => [\'altTimecode','altTimecodeValue'] },
+	'alttapename' => { 399 => 'altTapeName' },
+	'alttimecode' => { 399 => 'altTimecode' },
+	'alttimecodetimeformat' => { 399 => [\'altTimecode','altTimecodeTimeFormat'] },
+	'alttimecodetimevalue' => { 399 => [\'altTimecode','altTimecodeTimeValue'] },
+	'alttimecodevalue' => { 399 => [\'altTimecode','altTimecodeValue'] },
 	'ambienceselection' => { 3 => 0x1 },
-	'ambienttemperature' => { 301 => 0x14, 349 => 0x4 },
-	'ambienttemperaturefahrenheit' => { 301 => 0x13 },
+	'ambienttemperature' => { 302 => 0x14, 353 => 0x4 },
+	'ambienttemperaturefahrenheit' => { 302 => 0x13 },
 	'analogbalance' => { 95 => 0xc627 },
 	'angleadj' => { 87 => 0x8b },
-	'angleinforoll' => { 366 => 'AngleInfoRoll' },
-	'angleinfoyaw' => { 366 => 'AngleInfoYaw' },
-	'anti-blur' => { 331 => 0xb04b },
+	'angleinforoll' => { 372 => 'AngleInfoRoll' },
+	'angleinfoyaw' => { 372 => 'AngleInfoYaw' },
+	'anti-blur' => { 335 => 0xb04b },
 	'antialiasstrength' => { 95 => 0xc632 },
 	'aperturerange' => { 68 => 0x10d },
-	'apertureringuse' => { 264 => '1.4' },
-	'aperturesetting' => { 150 => 0x7, 319 => 0x30, 320 => 0x29, 321 => 0x1 },
-	'aperturevalue' => { 77 => 0x2, 95 => 0x9202, 238 => 0x1002, 374 => 'ApertureValue' },
+	'apertureringuse' => { 265 => '1.4' },
+	'aperturesetting' => { 150 => 0x7, 323 => 0x30, 324 => 0x29, 325 => 0x1 },
+	'aperturevalue' => { 77 => 0x2, 95 => 0x9202, 238 => 0x1002, 380 => 'ApertureValue' },
 	'applekeywords' => { 242 => 'AAPL:Keywords' },
-	'applicationnotes' => { 95 => 0x2bc, 256 => 0x2bc },
+	'applicationnotes' => { 95 => 0x2bc, 257 => 0x2bc },
 	'applicationrecordversion' => { 103 => 0x0 },
 	'applyshootingmeteringmode' => { 68 => 0x10e },
-	'approved' => { 376 => 'Approved' },
-	'approvedby' => { 376 => 'ApprovedBy' },
-	'approximatefnumber' => { 248 => 0x313, 254 => 0x3406 },
-	'approximatefocusdistance' => { 367 => 'ApproximateFocusDistance' },
+	'approved' => { 382 => 'Approved' },
+	'approvedby' => { 382 => 'ApprovedBy' },
+	'approximatefnumber' => { 249 => 0x313, 255 => 0x3406 },
+	'approximatefocusdistance' => { 373 => 'ApproximateFocusDistance' },
 	'armidentifier' => { 104 => 0x78 },
 	'armversion' => { 104 => 0x7a },
 	'artfilter' => { 233 => 0x529 },
 	'artfiltereffect' => { 233 => 0x52f },
-	'artist' => { 95 => 0x13b, 244 => 'Artist', 283 => 0x22e, 389 => 'Artist', 393 => 'artist' },
+	'artist' => { 95 => 0x13b, 245 => 'Artist', 284 => 0x22e, 395 => 'Artist', 399 => 'artist' },
 	'artmode' => { 91 => 0x301b },
 	'artmodeparameters' => { 91 => 0x310b },
-	'artworkcopyrightnotice' => { 380 => [\'ArtworkOrObject','ArtworkOrObjectAOCopyrightNotice'] },
-	'artworkcreator' => { 380 => [\'ArtworkOrObject','ArtworkOrObjectAOCreator'] },
-	'artworkdatecreated' => { 380 => [\'ArtworkOrObject','ArtworkOrObjectAODateCreated'] },
-	'artworkorobject' => { 380 => 'ArtworkOrObject' },
-	'artworksource' => { 380 => [\'ArtworkOrObject','ArtworkOrObjectAOSource'] },
-	'artworksourceinventoryno' => { 380 => [\'ArtworkOrObject','ArtworkOrObjectAOSourceInvNo'] },
-	'artworktitle' => { 380 => [\'ArtworkOrObject','ArtworkOrObjectAOTitle'] },
+	'artworkcopyrightnotice' => { 386 => [\'ArtworkOrObject','ArtworkOrObjectAOCopyrightNotice'] },
+	'artworkcreator' => { 386 => [\'ArtworkOrObject','ArtworkOrObjectAOCreator'] },
+	'artworkdatecreated' => { 386 => [\'ArtworkOrObject','ArtworkOrObjectAODateCreated'] },
+	'artworkorobject' => { 386 => 'ArtworkOrObject' },
+	'artworksource' => { 386 => [\'ArtworkOrObject','ArtworkOrObjectAOSource'] },
+	'artworksourceinventoryno' => { 386 => [\'ArtworkOrObject','ArtworkOrObjectAOSourceInvNo'] },
+	'artworktitle' => { 386 => [\'ArtworkOrObject','ArtworkOrObjectAOTitle'] },
 	'aspectframe' => { 237 => 0x1113 },
-	'aspectratio' => { 4 => 0x0, 237 => 0x1112, 283 => 0x80, 319 => 0x55, 320 => 0x55, 321 => 0xa },
+	'aspectratio' => { 4 => 0x0, 237 => 0x1112, 284 => 0x80, 323 => 0x55, 324 => 0x55, 325 => 0xa },
 	'asshoticcprofile' => { 95 => 0xc68f },
 	'asshotneutral' => { 95 => 0xc628 },
 	'asshotpreprofilematrix' => { 95 => 0xc690 },
@@ -641,85 +694,85 @@ my %tagLookup = (
 	'assignbktbutton' => { 222 => '4.2' },
 	'assignfuncbutton' => { 68 => 0x70b },
 	'assistbuttonfunction' => { 66 => 0xd },
-	'attributionname' => { 368 => 'attributionName' },
-	'attributionurl' => { 368 => 'attributionURL' },
-	'audio' => { 252 => 0x20 },
+	'attributionname' => { 374 => 'attributionName' },
+	'attributionurl' => { 374 => 'attributionURL' },
+	'audio' => { 253 => 0x20 },
 	'audiobitrate' => { 54 => 0x6c },
 	'audiochannels' => { 54 => 0x70 },
-	'audiochanneltype' => { 393 => 'audioChannelType' },
+	'audiochanneltype' => { 399 => 'audioChannelType' },
 	'audiocompression' => { 124 => 'Compression' },
-	'audiocompressor' => { 393 => 'audioCompressor' },
+	'audiocompressor' => { 399 => 'audioCompressor' },
 	'audioduration' => { 103 => 0x99 },
-	'audiomoddate' => { 393 => 'audioModDate' },
+	'audiomoddate' => { 399 => 'audioModDate' },
 	'audiooutcue' => { 103 => 0x9a },
-	'audiosamplerate' => { 54 => 0x6e, 393 => 'audioSampleRate' },
-	'audiosampletype' => { 393 => 'audioSampleType' },
+	'audiosamplerate' => { 54 => 0x6e, 399 => 'audioSampleRate' },
+	'audiosampletype' => { 399 => 'audioSampleType' },
 	'audiosamplingrate' => { 103 => 0x97 },
 	'audiosamplingresolution' => { 103 => 0x98 },
 	'audiotype' => { 103 => 0x96 },
-	'author' => { 126 => 'Author', 242 => 'Author', 244 => 'Author', 296 => 'Author', 365 => 'author', 381 => 'Author', 391 => 'Author' },
-	'authorsposition' => { 382 => 'AuthorsPosition' },
-	'autoaperture' => { 274 => '0.1' },
-	'autobracket' => { 314 => 0x19 },
-	'autobracketing' => { 100 => 0x1100, 283 => 0x18, 305 => 0x1007 },
+	'author' => { 126 => 'Author', 242 => 'Author', 245 => 'Author', 297 => 'Author', 371 => 'author', 387 => 'Author', 397 => 'Author' },
+	'authorsposition' => { 388 => 'AuthorsPosition' },
+	'autoaperture' => { 275 => '0.1' },
+	'autobracket' => { 315 => 0x19 },
+	'autobracketing' => { 100 => 0x1100, 284 => 0x18, 306 => 0x1007 },
 	'autobracketingmode' => { 230 => '12.3' },
 	'autobracketingset' => { 230 => '12.1' },
 	'autobracketmodem' => { 222 => '21.2', 227 => '26.2' },
 	'autobracketorder' => { 150 => 0x43, 222 => '21.3', 227 => '26.3', 228 => '12.2', 229 => '2.2', 230 => '12.2', 231 => '13.2' },
 	'autobracketset' => { 222 => '21.1', 224 => '11.1', 225 => '12.1', 226 => '12.1', 227 => '26.1', 228 => '12.1', 229 => '2.1', 231 => '13.1' },
-	'autobrightness' => { 370 => 'AutoBrightness' },
-	'autocontrast' => { 370 => 'AutoContrast' },
+	'autobrightness' => { 376 => 'AutoBrightness' },
+	'autocontrast' => { 376 => 'AutoContrast' },
 	'autodistortioncontrol' => { 168 => 0x4 },
 	'autodynamicrange' => { 100 => 0x140b },
-	'autoexposure' => { 370 => 'AutoExposure' },
+	'autoexposure' => { 376 => 'AutoExposure' },
 	'autoexposurebracketing' => { 62 => 0x10 },
 	'autofocus' => { 236 => 0x209 },
 	'autofp' => { 229 => '7.3', 231 => '31.4' },
 	'autoiso' => { 62 => 0x1, 91 => 0x3008, 223 => '1.1', 229 => '1.1' },
 	'autoisomax' => { 223 => '1.2', 229 => '1.2' },
 	'autoisominshutterspeed' => { 223 => '1.3', 229 => '1.3' },
-	'autolateralca' => { 370 => 'AutoLateralCA' },
+	'autolateralca' => { 376 => 'AutoLateralCA' },
 	'autolightingoptimizer' => { 14 => 0xbe, 15 => 0xbf, 18 => 0xbf, 50 => 0x2, 68 => 0x204, 87 => 0x6f },
 	'autolightingoptimizeron' => { 87 => 0x6e },
-	'autoportraitframed' => { 331 => 0x2016 },
+	'autoportraitframed' => { 335 => 0x2016 },
 	'autoredeye' => { 215 => 0xfe28a44f },
 	'autorotate' => { 62 => 0x1b },
-	'autoshadows' => { 370 => 'AutoShadows' },
-	'autowhiteversion' => { 370 => 'AutoWhiteVersion' },
+	'autoshadows' => { 376 => 'AutoShadows' },
+	'autowhiteversion' => { 376 => 'AutoWhiteVersion' },
 	'auxiliarylens' => { 182 => 0x82 },
-	'avaperturesetting' => { 264 => 0x13 },
+	'avaperturesetting' => { 265 => 0x13 },
 	'averageblacklevel' => { 36 => 0xe7, 38 => 0xfb, 39 => 0x114 },
 	'averagelv' => { 153 => 0x38 },
 	'avsettingwithoutlens' => { 68 => 0x707 },
 	'azimuth' => { 134 => 'Azimuth' },
-	'babyage' => { 252 => [0x8010,0x33] },
-	'babyname' => { 252 => 0x66 },
-	'backgroundalpha' => { 388 => 'bgalpha' },
-	'baseexposurecompensation' => { 264 => 0x15 },
-	'baseiso' => { 62 => 0x2, 81 => 0x101c, 254 => 0x312a },
+	'babyage' => { 253 => [0x8010,0x33] },
+	'babyname' => { 253 => 0x66 },
+	'backgroundalpha' => { 394 => 'bgalpha' },
+	'baseexposurecompensation' => { 265 => 0x15 },
+	'baseiso' => { 62 => 0x2, 81 => 0x101c, 255 => 0x312a, 358 => 0x6 },
 	'baselineexposure' => { 95 => 0xc62a },
 	'baselineexposureoffset' => { 95 => 0xc7a5 },
 	'baselinenoise' => { 95 => 0xc62b },
 	'baselinesharpness' => { 95 => 0xc62c },
-	'baseurl' => { 391 => 'BaseURL' },
-	'batterylevel' => { 319 => 0x51, 323 => 0xc, 324 => 0x4, 325 => 0x4, 353 => 0x7 },
-	'batterylevelgrip1' => { 353 => 0x6 },
-	'batterylevelgrip2' => { 353 => 0x8 },
+	'baseurl' => { 397 => 'BaseURL' },
+	'batterylevel' => { 323 => 0x51, 327 => 0xc, 328 => 0x4, 329 => 0x4, 359 => 0x7 },
+	'batterylevelgrip1' => { 359 => 0x6 },
+	'batterylevelgrip2' => { 359 => 0x8 },
 	'batteryorder' => { 222 => '12.5', 227 => '13.2', 228 => '2.1' },
-	'batterystate' => { 150 => 0x60, 325 => 0x14 },
-	'batterytemperature' => { 323 => 0x1, 325 => 0x2, 353 => 0x5 },
-	'batteryunknown' => { 323 => 0x2, 325 => 0x0 },
-	'batteryvoltage' => { 301 => 0x2a, 323 => 0x8 },
-	'batteryvoltage1' => { 325 => 0x6 },
-	'batteryvoltage2' => { 325 => 0x8 },
+	'batterystate' => { 150 => 0x60, 323 => 0x50, 329 => 0x14 },
+	'batterytemperature' => { 327 => 0x1, 329 => 0x2, 359 => 0x5 },
+	'batteryunknown' => { 327 => 0x2, 329 => 0x0 },
+	'batteryvoltage' => { 302 => 0x2a, 327 => 0x8 },
+	'batteryvoltage1' => { 329 => 0x6 },
+	'batteryvoltage2' => { 329 => 0x8 },
 	'bayergreensplit' => { 95 => 0xc62d },
 	'bayerpattern' => { 108 => 0xf902, 154 => 0x17 },
-	'beatspliceparams' => { 393 => 'beatSpliceParams' },
-	'beatspliceparamsriseindecibel' => { 393 => [\'beatSpliceParams','beatSpliceParamsRiseInDecibel'] },
-	'beatspliceparamsriseintimeduration' => { 393 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDuration'] },
-	'beatspliceparamsriseintimedurationscale' => { 393 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDurationScale'] },
-	'beatspliceparamsriseintimedurationvalue' => { 393 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDurationValue'] },
-	'beatspliceparamsusefilebeatsmarker' => { 393 => [\'beatSpliceParams','beatSpliceParamsUseFileBeatsMarker'] },
+	'beatspliceparams' => { 399 => 'beatSpliceParams' },
+	'beatspliceparamsriseindecibel' => { 399 => [\'beatSpliceParams','beatSpliceParamsRiseInDecibel'] },
+	'beatspliceparamsriseintimeduration' => { 399 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDuration'] },
+	'beatspliceparamsriseintimedurationscale' => { 399 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDurationScale'] },
+	'beatspliceparamsriseintimedurationvalue' => { 399 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDurationValue'] },
+	'beatspliceparamsusefilebeatsmarker' => { 399 => [\'beatSpliceParams','beatSpliceParamsUseFileBeatsMarker'] },
 	'beep' => { 222 => '13.1', 223 => '0.1', 224 => '2.1', 225 => '3.1', 226 => '3.1', 227 => '10.1', 229 => '0.1', 231 => '4.1' },
 	'beeppitch' => { 228 => '3.1' },
 	'beepvolume' => { 228 => '4.5' },
@@ -727,62 +780,62 @@ my %tagLookup = (
 	'bestshotmode' => { 91 => 0x3007 },
 	'bitdepth' => { 131 => 'BitDepth', 154 => 0x11, 187 => 0x41 },
 	'bitspercomponent' => { 105 => 0x87 },
-	'bitspersample' => { 95 => 0x102, 389 => 'BitsPerSample' },
+	'bitspersample' => { 95 => 0x102, 395 => 'BitsPerSample' },
 	'blacklevel' => { 95 => 0xc61a, 182 => 0x3d, 238 => 0x1012 },
-	'blacklevel1' => { 256 => 0x8 },
-	'blacklevel2' => { 237 => 0x600, 241 => 0x600, 256 => 0x9 },
-	'blacklevel3' => { 256 => 0xa },
-	'blacklevelblue' => { 256 => 0x1e },
+	'blacklevel1' => { 257 => 0x8 },
+	'blacklevel2' => { 237 => 0x600, 241 => 0x600, 257 => 0x9 },
+	'blacklevel3' => { 257 => 0xa },
+	'blacklevelblue' => { 257 => 0x1e },
 	'blackleveldeltah' => { 95 => 0xc61b },
 	'blackleveldeltav' => { 95 => 0xc61c },
-	'blacklevelgreen' => { 256 => 0x1d },
-	'blacklevelred' => { 256 => 0x1c },
+	'blacklevelgreen' => { 257 => 0x1d },
+	'blacklevelred' => { 257 => 0x1c },
 	'blacklevelrepeatdim' => { 95 => 0xc619 },
-	'blackpoint' => { 283 => 0x200 },
-	'blacks2012' => { 370 => 'Blacks2012' },
-	'bleachbypasstoning' => { 283 => 0x7f },
-	'bluebalance' => { 166 => 0x271, 238 => 0x1018, 256 => 0x12, 283 => 0x1b },
+	'blackpoint' => { 284 => 0x200 },
+	'blacks2012' => { 376 => 'Blacks2012' },
+	'bleachbypasstoning' => { 284 => 0x7f },
+	'bluebalance' => { 166 => 0x271, 238 => 0x1018, 257 => 0x12, 284 => 0x1b },
 	'bluecurvelimits' => { 86 => 0x1fe },
 	'bluecurvepoints' => { 86 => 0x1d4 },
-	'bluehue' => { 370 => 'BlueHue' },
-	'bluesaturation' => { 370 => 'BlueSaturation' },
-	'blurcontrol' => { 283 => 0x82 },
+	'bluehue' => { 376 => 'BlueHue' },
+	'bluesaturation' => { 376 => 'BlueSaturation' },
+	'blurcontrol' => { 284 => 0x82 },
 	'blurwarning' => { 100 => 0x1300 },
-	'bodybatteryadload' => { 262 => 0x3 },
-	'bodybatteryadnoload' => { 262 => 0x2 },
-	'bodybatterystate' => { 262 => '1.1' },
-	'bodybatteryvoltage1' => { 262 => 0x2 },
-	'bodybatteryvoltage2' => { 262 => 0x4 },
-	'bodybatteryvoltage3' => { 262 => 0x6 },
-	'bodybatteryvoltage4' => { 262 => 0x8 },
-	'bodyfirmware' => { 306 => 0x0 },
+	'bodybatteryadload' => { 263 => 0x3 },
+	'bodybatteryadnoload' => { 263 => 0x2 },
+	'bodybatterystate' => { 263 => '1.1' },
+	'bodybatteryvoltage1' => { 263 => 0x2 },
+	'bodybatteryvoltage2' => { 263 => 0x4 },
+	'bodybatteryvoltage3' => { 263 => 0x6 },
+	'bodybatteryvoltage4' => { 263 => 0x8 },
+	'bodyfirmware' => { 307 => 0x0 },
 	'bodyfirmwareversion' => { 234 => 0x104, 235 => 0x100, 238 => 0x104 },
-	'bodyserialnumber' => { 306 => 0x10 },
+	'bodyserialnumber' => { 307 => 0x10 },
 	'bracketmode' => { 46 => 0x3 },
 	'bracketsequence' => { 91 => 0x301d },
-	'bracketsettings' => { 252 => 0x45 },
-	'bracketshotnumber' => { 46 => 0x5, 264 => 0x9, 330 => 0x2b },
-	'bracketshotnumber2' => { 330 => 0x2d },
+	'bracketsettings' => { 253 => 0x45 },
+	'bracketshotnumber' => { 46 => 0x5, 265 => 0x9, 334 => 0x2b },
+	'bracketshotnumber2' => { 334 => 0x2d },
 	'bracketstep' => { 147 => 0xe },
 	'bracketvalue' => { 46 => 0x4 },
-	'brightness' => { 95 => 0xfe53, 125 => 'Brightness', 147 => 0x2c, 184 => 0x34, 301 => 0x25, 319 => 0x22, 331 => 0x2007, 370 => 'Brightness' },
-	'brightnessadj' => { 86 => 0x114, 208 => 0x0, 218 => 0x2d, 356 => 0x8018 },
-	'brightnessvalue' => { 95 => 0x9203, 153 => [0x691,0x49c3], 238 => 0x1003, 338 => 0x1140, 339 => 0x1140, 340 => 0x111c, 341 => 0x1198, 342 => 0x1174, 343 => 0x102c, 344 => 0x224, 374 => 'BrightnessValue' },
+	'brightness' => { 95 => 0xfe53, 125 => 'Brightness', 147 => 0x2c, 184 => 0x34, 302 => 0x25, 323 => 0x22, 335 => 0x2007, 376 => 'Brightness' },
+	'brightnessadj' => { 86 => 0x114, 208 => 0x0, 218 => 0x2d, 362 => 0x8018 },
+	'brightnessvalue' => { 95 => 0x9203, 153 => [0x691,0x49c3], 238 => 0x1003, 342 => 0x1140, 343 => 0x1140, 344 => 0x111c, 345 => 0x1198, 346 => 0x1174, 347 => 0x102c, 348 => 0x224, 380 => 'BrightnessValue' },
 	'bulbduration' => { 62 => 0x18 },
-	'burstmode' => { 111 => 0xa, 252 => 0x2a },
+	'burstmode' => { 111 => 0xa, 253 => 0x2a },
 	'burstmode2' => { 111 => 0x18 },
-	'burstshot' => { 314 => 0x34 },
-	'burstspeed' => { 252 => 0x77 },
+	'burstshot' => { 315 => 0x34 },
+	'burstspeed' => { 253 => 0x77 },
 	'buttonfunctioncontroloff' => { 68 => 0x70a },
 	'bwfilter' => { 147 => 0x2a, 155 => 0x39 },
 	'bwmode' => { 238 => 0x203 },
 	'by-line' => { 103 => 0x50 },
 	'by-linetitle' => { 103 => 0x55 },
-	'bytecount' => { 384 => 'byteCount' },
-	'calibration' => { 314 => [0x24,0x30] },
+	'bytecount' => { 390 => 'byteCount' },
+	'calibration' => { 315 => [0x24,0x30] },
 	'calibrationilluminant1' => { 95 => 0xc65a },
 	'calibrationilluminant2' => { 95 => 0xc65b },
-	'cameraangle' => { 393 => 'cameraAngle' },
+	'cameraangle' => { 399 => 'cameraAngle' },
 	'cameracalibration1' => { 95 => 0xc623 },
 	'cameracalibration2' => { 95 => 0xc624 },
 	'cameracalibrationsig' => { 95 => 0xc6f3 },
@@ -801,23 +854,23 @@ my %tagLookup = (
 	'cameracolorcalibration13' => { 31 => 0x30, 37 => 0xf6 },
 	'cameracolorcalibration14' => { 31 => 0x34, 37 => 0xfb },
 	'cameracolorcalibration15' => { 31 => 0x38, 37 => 0x100 },
-	'cameraid' => { 238 => 0x209, 313 => 0x209 },
+	'cameraid' => { 238 => 0x209, 314 => 0x209 },
 	'cameraiso' => { 29 => 0x10 },
-	'cameralabel' => { 95 => 0xc7a1, 393 => 'cameraLabel' },
-	'cameramodel' => { 393 => 'cameraModel' },
-	'cameramove' => { 393 => 'cameraMove' },
-	'cameraorientation' => { 5 => 0x30, 7 => 0x7d, 9 => 0x30, 11 => 0x35, 12 => 0x30, 13 => 0x30, 14 => 0x31, 15 => 0x31, 16 => 0x35, 17 => 0x27, 18 => 0x31, 19 => 0x7d, 20 => 0x38, 21 => 0x36, 22 => 0x7d, 23 => 0x83, 24 => 0x84, 25 => 0x35, 252 => 0x8f, 286 => 0x1, 325 => [0x16,0x18], 346 => 0x28, 347 => 0x24, 348 => 0x29 },
+	'cameralabel' => { 95 => 0xc7a1, 399 => 'cameraLabel' },
+	'cameramodel' => { 399 => 'cameraModel' },
+	'cameramove' => { 399 => 'cameraMove' },
+	'cameraorientation' => { 5 => 0x30, 7 => 0x7d, 9 => 0x30, 11 => 0x35, 12 => 0x30, 13 => 0x30, 14 => 0x31, 15 => 0x31, 16 => 0x35, 17 => 0x27, 18 => 0x31, 19 => 0x7d, 20 => 0x38, 21 => 0x36, 22 => 0x7d, 23 => 0x83, 24 => 0x84, 25 => 0x35, 253 => 0x8f, 287 => 0x1, 329 => [0x16,0x18], 350 => 0x28, 351 => 0x24, 352 => 0x29 },
 	'cameraowner' => { 112 => 0xc353 },
 	'cameraparameters' => { 238 => 0x2050 },
-	'cameraprofile' => { 370 => 'CameraProfile' },
-	'cameraprofiledigest' => { 370 => 'CameraProfileDigest' },
+	'cameraprofile' => { 376 => 'CameraProfile' },
+	'cameraprofiledigest' => { 376 => 'CameraProfileDigest' },
 	'cameraserialnumber' => { 95 => 0xc62f, 145 => 'CameraSerialNumber' },
 	'camerasettingsversion' => { 233 => 0x0 },
-	'cameratemperature' => { 5 => 0x18, 7 => 0x1b, 9 => 0x18, 11 => 0x19, 12 => 0x18, 13 => 0x18, 14 => 0x19, 15 => 0x19, 16 => 0x19, 17 => 0x17, 18 => 0x19, 19 => 0x1b, 20 => 0x19, 21 => 0x19, 22 => 0x1b, 23 => 0x1b, 24 => 0x1b, 25 => 0x19, 26 => [0x87,0x91], 27 => [0x99,0x9f,0xa4,0xa8,0x105], 28 => ['-3',0x64,0x47,0x53,0x5b,0x5c], 62 => 0xc, 237 => 0x1306, 248 => 0x320, 254 => 0x3402, 283 => 0x47, 311 => 0x43, 350 => 0x5 },
-	'cameratemperature2' => { 287 => 0xc },
-	'cameratemperature3' => { 287 => 0xe },
-	'cameratemperature4' => { 287 => 0x14 },
-	'cameratemperature5' => { 287 => 0x16 },
+	'cameratemperature' => { 5 => 0x18, 7 => 0x1b, 9 => 0x18, 11 => 0x19, 12 => 0x18, 13 => 0x18, 14 => 0x19, 15 => 0x19, 16 => 0x19, 17 => 0x17, 18 => 0x19, 19 => 0x1b, 20 => 0x19, 21 => 0x19, 22 => 0x1b, 23 => 0x1b, 24 => 0x1b, 25 => 0x19, 26 => [0x87,0x91], 27 => [0x99,0x9f,0xa4,0xa8,0x105], 28 => ['-3',0x64,0x47,0x53,0x5b,0x5c], 62 => 0xc, 237 => 0x1306, 249 => 0x320, 255 => 0x3402, 284 => 0x47, 312 => 0x43, 354 => 0x5 },
+	'cameratemperature2' => { 288 => 0xc },
+	'cameratemperature3' => { 288 => 0xe },
+	'cameratemperature4' => { 288 => 0x14 },
+	'cameratemperature5' => { 288 => 0x16 },
 	'cameratemperaturerangemax' => { 97 => 0x5 },
 	'cameratemperaturerangemin' => { 97 => 0x6 },
 	'cameratype' => { 62 => 0x1a, 238 => 0x207 },
@@ -832,112 +885,113 @@ my %tagLookup = (
 	'canonimagetype' => { 51 => 0x6, 81 => 0x815 },
 	'canonmodelid' => { 51 => 0x10, 81 => 0x1834 },
 	'canonvrd' => { 96 => 'CanonVRD' },
-	'caption' => { 365 => 'caption' },
+	'caption' => { 371 => 'caption' },
 	'caption-abstract' => { 103 => 0x78 },
-	'captionsauthornames' => { 373 => 'CaptionsAuthorNames' },
-	'captionsdatetimestamps' => { 373 => 'CaptionsDateTimeStamps' },
-	'captionwriter' => { 382 => 'CaptionWriter' },
+	'captionsauthornames' => { 379 => 'CaptionsAuthorNames' },
+	'captionsdatetimestamps' => { 379 => 'CaptionsDateTimeStamps' },
+	'captionwriter' => { 388 => 'CaptionWriter' },
 	'captureframerate' => { 91 => 0x4001 },
-	'capturesoftware' => { 360 => 'CaptureSoftware' },
+	'capturesoftware' => { 366 => 'CaptureSoftware' },
 	'cardshutterlock' => { 150 => 0x49 },
 	'casioimagesize' => { 91 => 0x9 },
-	'catalogsets' => { 103 => 0xff, 359 => 'CatalogSets', 363 => 'CatalogSets' },
-	'categories' => { 51 => 0x23, 365 => 'categories' },
-	'category' => { 103 => 0xf, 232 => 0x30, 382 => 'Category' },
-	'ccdboardversion' => { 248 => 0x331 },
+	'catalogsets' => { 103 => 0xff, 365 => 'CatalogSets', 369 => 'CatalogSets' },
+	'categories' => { 51 => 0x23, 371 => 'categories' },
+	'category' => { 103 => 0xf, 232 => 0x30, 388 => 'Category' },
+	'ccdboardversion' => { 249 => 0x331 },
 	'ccdscanmode' => { 238 => 0x1039 },
 	'ccdsensitivity' => { 205 => 0x6 },
-	'ccdversion' => { 248 => 0x330 },
-	'cellglobalid' => { 369 => 'cgi' },
+	'ccdversion' => { 249 => 0x330 },
+	'cellglobalid' => { 375 => 'cgi' },
 	'celllength' => { 95 => 0x109 },
-	'cellr' => { 369 => 'r' },
-	'celltowerid' => { 369 => 'cellid' },
+	'cellr' => { 375 => 'r' },
+	'celltowerid' => { 375 => 'cellid' },
 	'cellwidth' => { 95 => 0x108 },
 	'centerafarea' => { 229 => '15.1' },
 	'centerfocuspoint' => { 231 => '2.2' },
 	'centerweightedareasize' => { 222 => '7.1', 227 => '5.1', 228 => '7.1', 229 => '6.3', 231 => '8.1' },
-	'certificate' => { 397 => 'Certificate' },
-	'cfapattern' => { 95 => 0xa302, 374 => 'CFAPattern' },
+	'certificate' => { 403 => 'Certificate' },
+	'cfapattern' => { 95 => 0xa302, 380 => 'CFAPattern' },
 	'cfapattern2' => { 95 => 0x828e },
-	'cfapatterncolumns' => { 374 => [\'CFAPattern','CFAPatternColumns'] },
-	'cfapatternrows' => { 374 => [\'CFAPattern','CFAPatternRows'] },
-	'cfapatternvalues' => { 374 => [\'CFAPattern','CFAPatternValues'] },
+	'cfapatterncolumns' => { 380 => [\'CFAPattern','CFAPatternColumns'] },
+	'cfapatternrows' => { 380 => [\'CFAPattern','CFAPatternRows'] },
+	'cfapatternvalues' => { 380 => [\'CFAPattern','CFAPatternValues'] },
 	'cfarepeatpatterndim' => { 95 => 0x828d },
-	'channel' => { 384 => 'channel' },
+	'channel' => { 390 => 'channel' },
 	'channels' => { 124 => 'Channels' },
 	'checkmark' => { 86 => 0x26a },
 	'checkmark2' => { 87 => 0x8e },
-	'childfontfiles' => { 398 => [\'Fonts','FontsChildFontFiles'] },
+	'childfontfiles' => { 404 => [\'Fonts','FontsChildFontFiles'] },
 	'chmodeshootingspeed' => { 222 => '10.3' },
 	'chromablurradius' => { 95 => 0xc631 },
 	'chromaticaberration' => { 87 => 0x66 },
-	'chromaticaberrationb' => { 370 => 'ChromaticAberrationB' },
+	'chromaticaberrationb' => { 376 => 'ChromaticAberrationB' },
 	'chromaticaberrationblue' => { 87 => 0x6b },
 	'chromaticaberrationcorr' => { 64 => [0x4,0x5] },
-	'chromaticaberrationcorrection' => { 273 => 0x1 },
+	'chromaticaberrationcorrection' => { 274 => 0x1 },
 	'chromaticaberrationon' => { 87 => 0x62 },
-	'chromaticaberrationr' => { 370 => 'ChromaticAberrationR' },
+	'chromaticaberrationr' => { 376 => 'ChromaticAberrationR' },
 	'chromaticaberrationred' => { 87 => 0x6a },
 	'chromaticaberrationsetting' => { 65 => 0x6 },
-	'chrominancenoisereduction' => { 87 => 0x5e, 314 => 0x1a },
+	'chrominancenoisereduction' => { 87 => 0x5e, 315 => 0x1a },
 	'chrominancenr_tiff_jpeg' => { 87 => 0x60 },
-	'circgradbasedcorractive' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionActive'] },
-	'circgradbasedcorramount' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionAmount'] },
-	'circgradbasedcorrbrightness' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalBrightness'] },
-	'circgradbasedcorrclarity' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalClarity'] },
-	'circgradbasedcorrclarity2012' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalClarity2012'] },
-	'circgradbasedcorrcontrast' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalContrast'] },
-	'circgradbasedcorrcontrast2012' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalContrast2012'] },
-	'circgradbasedcorrdefringe' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalDefringe'] },
-	'circgradbasedcorrexposure' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalExposure'] },
-	'circgradbasedcorrexposure2012' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalExposure2012'] },
-	'circgradbasedcorrhighlights2012' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalHighlights2012'] },
-	'circgradbasedcorrhue' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalToningHue'] },
-	'circgradbasedcorrluminancenoise' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalLuminanceNoise'] },
-	'circgradbasedcorrmaskalpha' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksAlpha'] },
-	'circgradbasedcorrmaskangle' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksAngle'] },
-	'circgradbasedcorrmaskbottom' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksBottom'] },
-	'circgradbasedcorrmaskcentervalue' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCenterValue'] },
-	'circgradbasedcorrmaskcenterweight' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCenterWeight'] },
-	'circgradbasedcorrmaskdabs' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksDabs'] },
-	'circgradbasedcorrmaskfeather' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFeather'] },
-	'circgradbasedcorrmaskflipped' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFlipped'] },
-	'circgradbasedcorrmaskflow' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFlow'] },
-	'circgradbasedcorrmaskfullx' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFullX'] },
-	'circgradbasedcorrmaskfully' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFullY'] },
-	'circgradbasedcorrmaskleft' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksLeft'] },
-	'circgradbasedcorrmaskmidpoint' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMidpoint'] },
-	'circgradbasedcorrmaskperimetervalue' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksPerimeterValue'] },
-	'circgradbasedcorrmaskradius' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRadius'] },
-	'circgradbasedcorrmaskright' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRight'] },
-	'circgradbasedcorrmaskroundness' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRoundness'] },
-	'circgradbasedcorrmasks' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasks'] },
-	'circgradbasedcorrmasksizex' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksSizeX'] },
-	'circgradbasedcorrmasksizey' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksSizeY'] },
-	'circgradbasedcorrmasktop' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksTop'] },
-	'circgradbasedcorrmaskvalue' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskValue'] },
-	'circgradbasedcorrmaskversion' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksVersion'] },
-	'circgradbasedcorrmaskwhat' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksWhat'] },
-	'circgradbasedcorrmaskx' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksX'] },
-	'circgradbasedcorrmasky' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksY'] },
-	'circgradbasedcorrmaskzerox' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksZeroX'] },
-	'circgradbasedcorrmaskzeroy' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksZeroY'] },
-	'circgradbasedcorrmoire' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalMoire'] },
-	'circgradbasedcorrsaturation' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalSaturation','CircularGradientBasedCorrectionsLocalToningSaturation'] },
-	'circgradbasedcorrshadows2012' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalShadows2012'] },
-	'circgradbasedcorrsharpness' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalSharpness'] },
-	'circgradbasedcorrtemperature' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalTemperature'] },
-	'circgradbasedcorrtint' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalTint'] },
-	'circgradbasedcorrwhat' => { 370 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsWhat'] },
-	'circulargradientbasedcorrections' => { 370 => 'CircularGradientBasedCorrections' },
-	'city' => { 103 => 0x5a, 130 => 'City', 252 => 0x6d, 382 => 'City' },
-	'clarity' => { 370 => 'Clarity' },
-	'clarity2012' => { 370 => 'Clarity2012' },
+	'circgradbasedcorractive' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionActive'] },
+	'circgradbasedcorramount' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionAmount'] },
+	'circgradbasedcorrbrightness' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalBrightness'] },
+	'circgradbasedcorrclarity' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalClarity'] },
+	'circgradbasedcorrclarity2012' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalClarity2012'] },
+	'circgradbasedcorrcontrast' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalContrast'] },
+	'circgradbasedcorrcontrast2012' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalContrast2012'] },
+	'circgradbasedcorrdefringe' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalDefringe'] },
+	'circgradbasedcorrexposure' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalExposure'] },
+	'circgradbasedcorrexposure2012' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalExposure2012'] },
+	'circgradbasedcorrhighlights2012' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalHighlights2012'] },
+	'circgradbasedcorrhue' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalToningHue'] },
+	'circgradbasedcorrluminancenoise' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalLuminanceNoise'] },
+	'circgradbasedcorrmaskalpha' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksAlpha'] },
+	'circgradbasedcorrmaskangle' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksAngle'] },
+	'circgradbasedcorrmaskbottom' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksBottom'] },
+	'circgradbasedcorrmaskcentervalue' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCenterValue'] },
+	'circgradbasedcorrmaskcenterweight' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCenterWeight'] },
+	'circgradbasedcorrmaskdabs' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksDabs'] },
+	'circgradbasedcorrmaskfeather' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFeather'] },
+	'circgradbasedcorrmaskflipped' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFlipped'] },
+	'circgradbasedcorrmaskflow' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFlow'] },
+	'circgradbasedcorrmaskfullx' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFullX'] },
+	'circgradbasedcorrmaskfully' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFullY'] },
+	'circgradbasedcorrmaskleft' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksLeft'] },
+	'circgradbasedcorrmaskmidpoint' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMidpoint'] },
+	'circgradbasedcorrmaskperimetervalue' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksPerimeterValue'] },
+	'circgradbasedcorrmaskradius' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRadius'] },
+	'circgradbasedcorrmaskright' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRight'] },
+	'circgradbasedcorrmaskroundness' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRoundness'] },
+	'circgradbasedcorrmasks' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasks'] },
+	'circgradbasedcorrmasksizex' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksSizeX'] },
+	'circgradbasedcorrmasksizey' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksSizeY'] },
+	'circgradbasedcorrmasktop' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksTop'] },
+	'circgradbasedcorrmaskvalue' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskValue'] },
+	'circgradbasedcorrmaskversion' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksVersion'] },
+	'circgradbasedcorrmaskwhat' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksWhat'] },
+	'circgradbasedcorrmaskx' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksX'] },
+	'circgradbasedcorrmasky' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksY'] },
+	'circgradbasedcorrmaskzerox' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksZeroX'] },
+	'circgradbasedcorrmaskzeroy' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksZeroY'] },
+	'circgradbasedcorrmoire' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalMoire'] },
+	'circgradbasedcorrsaturation' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalSaturation','CircularGradientBasedCorrectionsLocalToningSaturation'] },
+	'circgradbasedcorrshadows2012' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalShadows2012'] },
+	'circgradbasedcorrsharpness' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalSharpness'] },
+	'circgradbasedcorrtemperature' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalTemperature'] },
+	'circgradbasedcorrtint' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalTint'] },
+	'circgradbasedcorrwhat' => { 376 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsWhat'] },
+	'circulargradientbasedcorrections' => { 376 => 'CircularGradientBasedCorrections' },
+	'city' => { 103 => 0x5a, 130 => 'City', 253 => 0x6d, 388 => 'City' },
+	'city2' => { 253 => 0x80 },
+	'clarity' => { 376 => 'Clarity' },
+	'clarity2012' => { 376 => 'Clarity2012' },
 	'classifystate' => { 103 => 0xe1 },
-	'clearretouch' => { 252 => 0x7c },
-	'clearretouchvalue' => { 252 => 0xa3 },
-	'client' => { 393 => 'client' },
-	'clientname' => { 376 => 'ClientName' },
+	'clearretouch' => { 253 => 0x7c },
+	'clearretouchvalue' => { 253 => 0xa3 },
+	'client' => { 399 => 'client' },
+	'clientname' => { 382 => 'ClientName' },
 	'clmodeshootingspeed' => { 222 => '10.2', 227 => '11.2', 228 => '10.2', 231 => '11.1' },
 	'cmcontrast' => { 241 => 0x2022 },
 	'cmexposurecompensation' => { 241 => 0x2000 },
@@ -953,23 +1007,23 @@ my %tagLookup = (
 	'collections' => { 139 => 'Collections' },
 	'collectionuri' => { 139 => [\'Collections','CollectionsCollectionURI'] },
 	'coloraberrationcontrol' => { 215 => 0xc89224b },
-	'coloradjustment' => { 314 => 0x14 },
-	'coloradjustmentmode' => { 313 => 0x210 },
-	'coloranta' => { 398 => [\'Colorants','ColorantsA'] },
-	'colorantb' => { 398 => [\'Colorants','ColorantsB'] },
-	'colorantblack' => { 398 => [\'Colorants','ColorantsBlack'] },
-	'colorantblue' => { 398 => [\'Colorants','ColorantsBlue'] },
-	'colorantcyan' => { 398 => [\'Colorants','ColorantsCyan'] },
-	'colorantgreen' => { 398 => [\'Colorants','ColorantsGreen'] },
-	'colorantl' => { 398 => [\'Colorants','ColorantsL'] },
-	'colorantmagenta' => { 398 => [\'Colorants','ColorantsMagenta'] },
-	'colorantmode' => { 398 => [\'Colorants','ColorantsMode'] },
-	'colorantred' => { 398 => [\'Colorants','ColorantsRed'] },
-	'colorants' => { 398 => 'Colorants' },
-	'colorantswatchname' => { 398 => [\'Colorants','ColorantsSwatchName'] },
-	'coloranttint' => { 398 => [\'Colorants','ColorantsTint'] },
-	'coloranttype' => { 398 => [\'Colorants','ColorantsType'] },
-	'colorantyellow' => { 398 => [\'Colorants','ColorantsYellow'] },
+	'coloradjustment' => { 315 => 0x14 },
+	'coloradjustmentmode' => { 314 => 0x210 },
+	'coloranta' => { 404 => [\'Colorants','ColorantsA'] },
+	'colorantb' => { 404 => [\'Colorants','ColorantsB'] },
+	'colorantblack' => { 404 => [\'Colorants','ColorantsBlack'] },
+	'colorantblue' => { 404 => [\'Colorants','ColorantsBlue'] },
+	'colorantcyan' => { 404 => [\'Colorants','ColorantsCyan'] },
+	'colorantgreen' => { 404 => [\'Colorants','ColorantsGreen'] },
+	'colorantl' => { 404 => [\'Colorants','ColorantsL'] },
+	'colorantmagenta' => { 404 => [\'Colorants','ColorantsMagenta'] },
+	'colorantmode' => { 404 => [\'Colorants','ColorantsMode'] },
+	'colorantred' => { 404 => [\'Colorants','ColorantsRed'] },
+	'colorants' => { 404 => 'Colorants' },
+	'colorantswatchname' => { 404 => [\'Colorants','ColorantsSwatchName'] },
+	'coloranttint' => { 404 => [\'Colorants','ColorantsTint'] },
+	'coloranttype' => { 404 => [\'Colorants','ColorantsType'] },
+	'colorantyellow' => { 404 => [\'Colorants','ColorantsYellow'] },
 	'colorbalance' => { 125 => 'ColorBalance' },
 	'colorbalanceadj' => { 215 => 0x76a43202 },
 	'colorbalanceblue' => { 147 => 0x1e },
@@ -980,64 +1034,64 @@ my %tagLookup = (
 	'colorbooster' => { 215 => 0x5f0e7d23 },
 	'colorboostlevel' => { 209 => 0x1 },
 	'colorboosttype' => { 209 => 0x0 },
-	'colorclass' => { 291 => 0xde, 292 => 'ColorClass' },
-	'colorcompensationfilter' => { 150 => [0x3a,0x5f], 152 => 0x111, 331 => 0xb022 },
-	'colorcompensationfilterset' => { 319 => 0xd, 320 => 0xc, 321 => 0x18, 335 => 0xf },
+	'colorclass' => { 292 => 0xde, 293 => 'ColorClass' },
+	'colorcompensationfilter' => { 150 => [0x3a,0x5f], 152 => 0x111, 335 => 0xb022 },
+	'colorcompensationfilterset' => { 323 => 0xd, 324 => 0xc, 325 => 0x18, 339 => 0xf },
 	'colorcontrol' => { 238 => 0x102b },
-	'colorcorrection' => { 356 => 0x8015 },
+	'colorcorrection' => { 362 => 0x8015 },
 	'colordataversion' => { 35 => 0x0, 36 => 0x0, 38 => 0x0, 39 => 0x0 },
-	'coloreffect' => { 252 => 0x28 },
-	'colorfilter' => { 90 => 0x17, 91 => 0x3017, 147 => 0x29, 155 => [0x38,0x4d,0x4f], 289 => 0x17 },
+	'coloreffect' => { 253 => 0x28 },
+	'colorfilter' => { 90 => 0x17, 91 => 0x3017, 147 => 0x29, 155 => [0x38,0x4d,0x4f], 290 => 0x17 },
 	'colorgain' => { 187 => 0x51 },
 	'colorhue' => { 182 => 0x8d },
 	'colorimetricreference' => { 95 => 0xc6bf },
-	'colorlabel' => { 373 => 'ColorLabel' },
-	'colormatrix' => { 237 => 0x200, 238 => 0x1011, 311 => 0xa030 },
+	'colorlabel' => { 379 => 'ColorLabel' },
+	'colormatrix' => { 237 => 0x200, 238 => 0x1011, 312 => 0xa030 },
 	'colormatrix1' => { 95 => 0xc621 },
 	'colormatrix2' => { 95 => 0xc622, 241 => 0x200 },
-	'colormatrixa' => { 283 => 0x203 },
-	'colormatrixadobergb' => { 311 => 0xa032 },
-	'colormatrixb' => { 283 => 0x204 },
+	'colormatrixa' => { 284 => 0x203 },
+	'colormatrixadobergb' => { 312 => 0xa032 },
+	'colormatrixb' => { 284 => 0x204 },
 	'colormatrixnumber' => { 238 => 0x1019 },
-	'colormatrixsrgb' => { 311 => 0xa031 },
-	'colormode' => { 91 => 0x3015, 100 => 0x1210, 111 => 0x66, 147 => 0x28, 150 => 0x16, 152 => 0x101, 153 => 0x36, 155 => 0x7, 182 => 0x3, 205 => 0x4, 252 => 0x32, 314 => 0x2c, 331 => 0xb029, 382 => 'ColorMode' },
+	'colormatrixsrgb' => { 312 => 0xa031 },
+	'colormode' => { 91 => 0x3015, 100 => 0x1210, 111 => 0x66, 147 => 0x28, 150 => 0x16, 152 => 0x101, 153 => 0x36, 155 => 0x7, 182 => 0x3, 205 => 0x4, 253 => 0x32, 315 => 0x2c, 335 => 0xb029, 388 => 'ColorMode' },
 	'colormoirereduction' => { 216 => 0x15 },
 	'colormoirereductionmode' => { 216 => 0x5 },
-	'colornoisereduction' => { 356 => 0x8029, 370 => 'ColorNoiseReduction' },
-	'colornoisereductiondetail' => { 370 => 'ColorNoiseReductionDetail' },
+	'colornoisereduction' => { 362 => 0x8029, 376 => 'ColorNoiseReduction' },
+	'colornoisereductiondetail' => { 376 => 'ColorNoiseReductionDetail' },
 	'colornoisereductionintensity' => { 216 => 0x18 },
 	'colornoisereductionsharpness' => { 216 => 0x1c },
-	'colornoisereductionsmoothness' => { 370 => 'ColorNoiseReductionSmoothness' },
+	'colornoisereductionsmoothness' => { 376 => 'ColorNoiseReductionSmoothness' },
 	'colorplanes' => { 99 => 0x2 },
 	'colorprofile' => { 147 => 0x33 },
 	'colorrepresentation' => { 105 => 0x3c },
 	'colorsequence' => { 105 => 0x41 },
-	'colorspace' => { 40 => 0x3, 51 => 0xb4, 81 => 0x10b4, 95 => 0xa001, 131 => 'ColorSpace', 148 => 0x2f, 149 => 0x25, 150 => 0x17, 182 => 0x1e, 233 => 0x507, 283 => 0x37, 311 => 0xa011, 314 => 0xb, 319 => 0x1b, 320 => 0x83, 321 => 0xe, 335 => 0x6, 374 => 'ColorSpace' },
+	'colorspace' => { 40 => 0x3, 51 => 0xb4, 81 => 0x10b4, 95 => 0xa001, 131 => 'ColorSpace', 148 => 0x2f, 149 => 0x25, 150 => 0x17, 182 => 0x1e, 233 => 0x507, 284 => 0x37, 312 => 0xa011, 315 => 0xb, 323 => 0x1b, 324 => 0x83, 325 => 0xe, 339 => 0x6, 380 => 'ColorSpace' },
 	'colortempasshot' => { 32 => 0x4, 33 => 0x1d, 34 => 0x26, 35 => 0x43, 38 => 0x43, 39 => 0x43 },
 	'colortempauto' => { 32 => 0x9, 33 => 0x22, 34 => 0x1c, 35 => 0x48, 38 => 0x48, 39 => 0x48 },
-	'colortempcloudy' => { 32 => 0x22, 33 => 0x31, 34 => 0x35, 35 => 0x5c, 38 => 0x75, 39 => 0x8e, 283 => 0x55 },
+	'colortempcloudy' => { 32 => 0x22, 33 => 0x31, 34 => 0x35, 35 => 0x5c, 38 => 0x75, 39 => 0x8e, 284 => 0x55 },
 	'colortempcustom' => { 35 => 0x84 },
 	'colortempcustom1' => { 33 => 0x45 },
 	'colortempcustom2' => { 33 => 0x4a },
-	'colortempdaylight' => { 32 => 0x18, 33 => 0x27, 34 => 0x2b, 35 => 0x52, 38 => 0x6b, 39 => 0x84, 283 => 0x53 },
-	'colortemperature' => { 5 => 0x73, 6 => [0x48,0x4e], 7 => 0xc0, 8 => 0x37, 9 => 0x62, 10 => 0x37, 11 => 0x7c, 12 => 0x73, 13 => 0x73, 14 => 0x77, 15 => 0x73, 16 => 0x7c, 17 => 0x58, 18 => 0x73, 19 => 0xc0, 20 => 0x7f, 21 => 0x7d, 22 => 0xc0, 23 => 0xc6, 24 => 0xc7, 25 => 0x7b, 51 => 0xae, 60 => 0x9, 81 => 0x10ae, 100 => 0x1005, 109 => 0x846, 125 => 'ColorTemperature', 148 => [0x6e,0x49], 149 => 0x3f, 150 => [0x39,0x5e], 152 => 0x10b, 155 => [0x3c,0x4c,0x4e], 248 => 0x321, 283 => 0x50, 305 => 0x1308, 331 => 0xb021, 370 => 'Temperature' },
-	'colortemperatureadj' => { 356 => 0x8013 },
+	'colortempdaylight' => { 32 => 0x18, 33 => 0x27, 34 => 0x2b, 35 => 0x52, 38 => 0x6b, 39 => 0x84, 284 => 0x53 },
+	'colortemperature' => { 5 => 0x73, 6 => [0x48,0x4e], 7 => 0xc0, 8 => 0x37, 9 => 0x62, 10 => 0x37, 11 => 0x7c, 12 => 0x73, 13 => 0x73, 14 => 0x77, 15 => 0x73, 16 => 0x7c, 17 => 0x58, 18 => 0x73, 19 => 0xc0, 20 => 0x7f, 21 => 0x7d, 22 => 0xc0, 23 => 0xc6, 24 => 0xc7, 25 => 0x7b, 51 => 0xae, 60 => 0x9, 81 => 0x10ae, 100 => 0x1005, 109 => 0x846, 125 => 'ColorTemperature', 148 => [0x6e,0x49], 149 => 0x3f, 150 => [0x39,0x5e], 152 => 0x10b, 155 => [0x3c,0x4c,0x4e], 249 => 0x321, 284 => 0x50, 306 => 0x1308, 335 => 0xb021, 376 => 'Temperature' },
+	'colortemperatureadj' => { 362 => 0x8013 },
 	'colortemperaturebg' => { 238 => 0x1013 },
 	'colortemperaturerg' => { 238 => 0x1014 },
-	'colortemperaturesetting' => { 150 => 0x25, 319 => 0xc, 320 => 0xb, 321 => 0x17, 335 => 0xe },
-	'colortempflash' => { 32 => 0x36, 33 => 0x40, 34 => 0x49, 35 => 0x70, 38 => 0x89, 39 => 0xa2, 283 => 0x5a },
+	'colortemperaturesetting' => { 150 => 0x25, 323 => 0xc, 324 => 0xb, 325 => 0x17, 339 => 0xe },
+	'colortempflash' => { 32 => 0x36, 33 => 0x40, 34 => 0x49, 35 => 0x70, 38 => 0x89, 39 => 0xa2, 284 => 0x5a },
 	'colortempflashdata' => { 35 => 0x24a },
 	'colortempfluorescent' => { 32 => 0x2c, 33 => 0x3b, 34 => 0x3f, 35 => 0x66, 38 => 0x7f, 39 => 0x98 },
-	'colortempfluorescentd' => { 283 => 0x57 },
-	'colortempfluorescentn' => { 283 => 0x58 },
-	'colortempfluorescentw' => { 283 => 0x59 },
-	'colortempkelvin' => { 32 => 0x31, 34 => 0x44, 35 => 0x6b, 38 => 0x84, 39 => 0x9d, 252 => 0x44, 305 => 0x1307 },
+	'colortempfluorescentd' => { 284 => 0x57 },
+	'colortempfluorescentn' => { 284 => 0x58 },
+	'colortempfluorescentw' => { 284 => 0x59 },
+	'colortempkelvin' => { 32 => 0x31, 34 => 0x44, 35 => 0x6b, 38 => 0x84, 39 => 0x9d, 253 => 0x44, 306 => 0x1307 },
 	'colortempmeasured' => { 32 => 0xe, 35 => 0x4d, 38 => 0x4d, 39 => 0x4d },
 	'colortemppc1' => { 34 => 0x94, 35 => 0x75 },
 	'colortemppc2' => { 34 => 0x99, 35 => 0x7a },
 	'colortemppc3' => { 34 => 0x9e, 35 => 0x7f },
-	'colortempshade' => { 32 => 0x1d, 33 => 0x2c, 34 => 0x30, 35 => 0x57, 38 => 0x70, 39 => 0x89, 283 => 0x54 },
-	'colortemptungsten' => { 32 => 0x27, 33 => 0x36, 34 => 0x3a, 35 => 0x61, 38 => 0x7a, 39 => 0x93, 283 => 0x56 },
+	'colortempshade' => { 32 => 0x1d, 33 => 0x2c, 34 => 0x30, 35 => 0x57, 38 => 0x70, 39 => 0x89, 284 => 0x54 },
+	'colortemptungsten' => { 32 => 0x27, 33 => 0x36, 34 => 0x3a, 35 => 0x61, 38 => 0x7a, 39 => 0x93, 284 => 0x56 },
 	'colortempunknown' => { 32 => 0x13, 34 => 0x21, 38 => 0x52, 39 => 0x52 },
 	'colortempunknown10' => { 32 => 0x63, 34 => 0x76, 38 => 0xa2, 39 => 0x7f },
 	'colortempunknown11' => { 32 => 0x68, 34 => 0x7b, 38 => 0xa7, 39 => 0xa7 },
@@ -1091,24 +1145,24 @@ my %tagLookup = (
 	'commanderinternalttlcompbuiltin' => { 227 => '20.1', 228 => '26.1' },
 	'commanderinternalttlcompgroupa' => { 227 => '21.1', 228 => '27.1' },
 	'commanderinternalttlcompgroupb' => { 227 => '22.1', 228 => '28.1' },
-	'comment' => { 0 => 0x2, 96 => 'Comment', 126 => 'Comment', 244 => 'Comment' },
-	'compass' => { 308 => 0x4 },
-	'complianceprofile' => { 384 => 'complianceProfile' },
-	'componentsconfiguration' => { 95 => 0x9101, 131 => 'Components', 374 => 'ComponentsConfiguration' },
+	'comment' => { 0 => 0x2, 96 => 'Comment', 126 => 'Comment', 245 => 'Comment' },
+	'compass' => { 309 => 0x4 },
+	'complianceprofile' => { 390 => 'complianceProfile' },
+	'componentsconfiguration' => { 95 => 0x9101, 131 => 'Components', 380 => 'ComponentsConfiguration' },
 	'componentversion' => { 81 => 0x80c },
-	'composer' => { 393 => 'composer' },
-	'compositionadjust' => { 282 => '0.1' },
-	'compositionadjustrotation' => { 282 => 0x7 },
-	'compositionadjustx' => { 282 => 0x5 },
-	'compositionadjusty' => { 282 => 0x6 },
-	'compressedbitsperpixel' => { 95 => 0x9102, 374 => 'CompressedBitsPerPixel' },
+	'composer' => { 399 => 'composer' },
+	'compositionadjust' => { 283 => '0.1' },
+	'compositionadjustrotation' => { 283 => 0x7 },
+	'compositionadjustx' => { 283 => 0x5 },
+	'compositionadjusty' => { 283 => 0x6 },
+	'compressedbitsperpixel' => { 95 => 0x9102, 380 => 'CompressedBitsPerPixel' },
 	'compressedimagesize' => { 152 => 0x40, 238 => 0x40 },
-	'compression' => { 95 => 0x103, 389 => 'Compression' },
+	'compression' => { 95 => 0x103, 395 => 'Compression' },
 	'compressionfactor' => { 233 => 0x50d },
 	'compressionratio' => { 131 => 'Compression', 238 => 0x1034 },
-	'confidencelevel' => { 366 => 'ConfidenceLevel' },
-	'constrainedcropheight' => { 86 => 0x266, 291 => 0xd6 },
-	'constrainedcropwidth' => { 86 => 0x262, 291 => 0xd5 },
+	'confidencelevel' => { 372 => 'ConfidenceLevel' },
+	'constrainedcropheight' => { 86 => 0x266, 292 => 0xd6 },
+	'constrainedcropwidth' => { 86 => 0x262, 292 => 0xd5 },
 	'contact' => { 103 => 0x76 },
 	'contentlocationcode' => { 103 => 0x1a },
 	'contentlocationname' => { 103 => 0x1b },
@@ -1116,106 +1170,106 @@ my %tagLookup = (
 	'continuousdrive' => { 29 => 0x5 },
 	'continuousshootingspeed' => { 68 => 0x610 },
 	'continuousshotlimit' => { 68 => 0x611 },
-	'contrast' => { 8 => 0x73, 10 => 0x75, 29 => 0xd, 90 => 0xc, 91 => [0x3012,0x20], 95 => [0xa408,0xfe54], 100 => [0x1004,0x1006], 125 => 'Contrast', 147 => 0x20, 148 => 0x31, 149 => 0x27, 150 => 0x19, 155 => 0x2, 184 => 0x33, 238 => 0x1029, 252 => 0x39, 254 => 0x300a, 283 => 0x20, 289 => 0xc, 301 => 0x24, 305 => 0x1012, 314 => 0xd, 319 => 0x1d, 320 => 0x1a, 331 => 0x2004, 370 => 'Contrast', 374 => 'Contrast' },
-	'contrast2012' => { 370 => 'Contrast2012' },
-	'contrastadj' => { 86 => 0x115, 218 => 0x2c, 356 => 0x8017 },
+	'contrast' => { 8 => 0x73, 10 => 0x75, 29 => 0xd, 90 => 0xc, 91 => [0x3012,0x20], 95 => [0xa408,0xfe54], 100 => [0x1004,0x1006], 125 => 'Contrast', 147 => 0x20, 148 => 0x31, 149 => 0x27, 150 => 0x19, 155 => 0x2, 184 => 0x33, 238 => 0x1029, 253 => 0x39, 255 => 0x300a, 284 => 0x20, 290 => 0xc, 302 => 0x24, 306 => 0x1012, 315 => 0xd, 323 => 0x1d, 324 => 0x1a, 335 => 0x2004, 376 => 'Contrast', 380 => 'Contrast' },
+	'contrast2012' => { 376 => 'Contrast2012' },
+	'contrastadj' => { 86 => 0x115, 218 => 0x2c, 362 => 0x8017 },
 	'contrastauto' => { 57 => 0x90 },
 	'contrastcurve' => { 182 => 0x8c },
 	'contrastdetectaf' => { 158 => 0x4 },
-	'contrastdetectafarea' => { 283 => 0x231 },
+	'contrastdetectafarea' => { 284 => 0x231 },
 	'contrastdetectafinfocus' => { 158 => 0x1c },
 	'contrastfaithful' => { 17 => 0xec, 56 => 0x60, 57 => 0x60 },
-	'contrasthighlight' => { 283 => 0x6d },
-	'contrasthighlightshadowadj' => { 283 => 0x6f },
+	'contrasthighlight' => { 284 => 0x6d },
+	'contrasthighlightshadowadj' => { 284 => 0x6f },
 	'contrastlandscape' => { 17 => 0xea, 56 => 0x30, 57 => 0x30 },
-	'contrastmode' => { 252 => 0x2c },
+	'contrastmode' => { 253 => 0x2c },
 	'contrastmonochrome' => { 17 => 0xed, 56 => 0x78, 57 => 0x78 },
 	'contrastneutral' => { 17 => 0xeb, 56 => 0x48, 57 => 0x48 },
 	'contrastportrait' => { 17 => 0xe9, 56 => 0x18, 57 => 0x18 },
-	'contrastsetting' => { 233 => 0x505, 241 => 0x1012, 321 => 0x10, 335 => 0x8 },
-	'contrastshadow' => { 283 => 0x6e },
+	'contrastsetting' => { 233 => 0x505, 241 => 0x1012, 325 => 0x10, 339 => 0x8 },
+	'contrastshadow' => { 284 => 0x6e },
 	'contraststandard' => { 17 => 0xe8, 56 => 0x0, 57 => 0x0 },
 	'contrastuserdef1' => { 17 => 0xee, 56 => 0x90, 57 => 0xa8 },
 	'contrastuserdef2' => { 17 => 0xef, 56 => 0xa8, 57 => 0xc0 },
 	'contrastuserdef3' => { 17 => 0xf0, 56 => 0xc0, 57 => 0xd8 },
-	'contributedmedia' => { 393 => 'contributedMedia' },
-	'contributedmediaduration' => { 393 => [\'contributedMedia','contributedMediaDuration'] },
-	'contributedmediadurationscale' => { 393 => [\'contributedMedia','contributedMediaDurationScale'] },
-	'contributedmediadurationvalue' => { 393 => [\'contributedMedia','contributedMediaDurationValue'] },
-	'contributedmediamanaged' => { 393 => [\'contributedMedia','contributedMediaManaged'] },
-	'contributedmediapath' => { 393 => [\'contributedMedia','contributedMediaPath'] },
-	'contributedmediastarttime' => { 393 => [\'contributedMedia','contributedMediaStartTime'] },
-	'contributedmediastarttimescale' => { 393 => [\'contributedMedia','contributedMediaStartTimeScale'] },
-	'contributedmediastarttimevalue' => { 393 => [\'contributedMedia','contributedMediaStartTimeValue'] },
-	'contributedmediatrack' => { 393 => [\'contributedMedia','contributedMediaTrack'] },
-	'contributedmediawebstatement' => { 393 => [\'contributedMedia','contributedMediaWebStatement'] },
-	'contributor' => { 371 => 'contributor' },
+	'contributedmedia' => { 399 => 'contributedMedia' },
+	'contributedmediaduration' => { 399 => [\'contributedMedia','contributedMediaDuration'] },
+	'contributedmediadurationscale' => { 399 => [\'contributedMedia','contributedMediaDurationScale'] },
+	'contributedmediadurationvalue' => { 399 => [\'contributedMedia','contributedMediaDurationValue'] },
+	'contributedmediamanaged' => { 399 => [\'contributedMedia','contributedMediaManaged'] },
+	'contributedmediapath' => { 399 => [\'contributedMedia','contributedMediaPath'] },
+	'contributedmediastarttime' => { 399 => [\'contributedMedia','contributedMediaStartTime'] },
+	'contributedmediastarttimescale' => { 399 => [\'contributedMedia','contributedMediaStartTimeScale'] },
+	'contributedmediastarttimevalue' => { 399 => [\'contributedMedia','contributedMediaStartTimeValue'] },
+	'contributedmediatrack' => { 399 => [\'contributedMedia','contributedMediaTrack'] },
+	'contributedmediawebstatement' => { 399 => [\'contributedMedia','contributedMediaWebStatement'] },
+	'contributor' => { 377 => 'contributor' },
 	'contributors' => { 126 => 'Contributors' },
 	'controldialset' => { 150 => 0x46 },
-	'controlledvocabularyterm' => { 380 => 'CVterm' },
-	'controllerboardversion' => { 248 => 0x332 },
+	'controlledvocabularyterm' => { 386 => 'CVterm' },
+	'controllerboardversion' => { 249 => 0x332 },
 	'controlmode' => { 62 => 0x12 },
-	'conversionlens' => { 234 => 0x403, 252 => 0x35 },
-	'converter' => { 95 => 0xfe4d, 205 => 0xb, 370 => 'Converter' },
-	'converttograyscale' => { 370 => 'ConvertToGrayscale' },
-	'copyright' => { 0 => 0x3, 95 => 0x8298, 126 => 'Copyright', 244 => 'Copyright', 283 => 0x22f, 296 => 'Copyright', 381 => 'Copyright', 384 => 'copyright', 386 => 'copyright', 389 => 'Copyright', 393 => 'copyright' },
-	'copyrightflag' => { 294 => 0x40a },
+	'conversionlens' => { 234 => 0x403, 253 => 0x35 },
+	'converter' => { 95 => 0xfe4d, 205 => 0xb, 376 => 'Converter' },
+	'converttograyscale' => { 376 => 'ConvertToGrayscale' },
+	'copyright' => { 0 => 0x3, 95 => 0x8298, 126 => 'Copyright', 245 => 'Copyright', 284 => 0x22f, 297 => 'Copyright', 387 => 'Copyright', 390 => 'copyright', 392 => 'copyright', 395 => 'Copyright', 399 => 'copyright' },
+	'copyrightflag' => { 295 => 0x40a },
 	'copyrightnotice' => { 103 => 0x74 },
-	'copyrightowner' => { 383 => 'CopyrightOwner' },
-	'copyrightownerid' => { 383 => [\'CopyrightOwner','CopyrightOwnerCopyrightOwnerID'] },
-	'copyrightownerimageid' => { 383 => 'CopyrightOwnerImageID' },
-	'copyrightownername' => { 383 => [\'CopyrightOwner','CopyrightOwnerCopyrightOwnerName'] },
-	'copyrightregistrationnumber' => { 383 => 'CopyrightRegistrationNumber' },
-	'copyrightstatus' => { 383 => 'CopyrightStatus' },
+	'copyrightowner' => { 389 => 'CopyrightOwner' },
+	'copyrightownerid' => { 389 => [\'CopyrightOwner','CopyrightOwnerCopyrightOwnerID'] },
+	'copyrightownerimageid' => { 389 => 'CopyrightOwnerImageID' },
+	'copyrightownername' => { 389 => [\'CopyrightOwner','CopyrightOwnerCopyrightOwnerName'] },
+	'copyrightregistrationnumber' => { 389 => 'CopyrightRegistrationNumber' },
+	'copyrightstatus' => { 389 => 'CopyrightStatus' },
 	'coringfilter' => { 237 => 0x310, 238 => 0x102d, 241 => 0x310 },
 	'coringvalues' => { 237 => 0x311, 241 => 0x311 },
-	'corporateentity' => { 384 => 'corporateEntity' },
-	'country' => { 130 => 'Country', 252 => 0x69, 382 => 'Country' },
+	'corporateentity' => { 390 => 'corporateEntity' },
+	'country' => { 130 => 'Country', 253 => 0x69, 388 => 'Country' },
 	'country-primarylocationcode' => { 103 => 0x64 },
 	'country-primarylocationname' => { 103 => 0x65 },
-	'countrycode' => { 181 => 0x5, 292 => 'CountryCode', 379 => 'CountryCode' },
-	'coverage' => { 371 => 'coverage' },
-	'coverdate' => { 384 => 'coverDate' },
-	'coverdisplaydate' => { 384 => 'coverDisplayDate' },
-	'cpufirmwareversion' => { 283 => 0x28 },
-	'crc32' => { 372 => 'crc32' },
-	'createdate' => { 95 => 0x9004, 126 => 'CreateDate', 242 => 'CreationDate', 244 => 'create-date', 296 => 'CreationDate', 298 => 0x1, 391 => 'CreateDate' },
-	'creationdate' => { 381 => 'CreationDate', 384 => 'creationDate' },
-	'creationtime' => { 244 => 'Creation Time' },
-	'creativestyle' => { 319 => 0x1a, 320 => 0x18, 330 => 0x41, 331 => 0xb020, 352 => 0x4a },
-	'creativestylesetting' => { 321 => 0xf, 335 => 0x7 },
-	'creativestylewaschanged' => { 356 => 0x8001 },
-	'creator' => { 242 => 'Creator', 296 => 'Creator', 371 => 'creator', 381 => 'Creator' },
-	'creatoraddress' => { 379 => [\'CreatorContactInfo','CreatorContactInfoCiAdrExtadr'] },
-	'creatorcity' => { 379 => [\'CreatorContactInfo','CreatorContactInfoCiAdrCity'] },
-	'creatorcontactinfo' => { 379 => 'CreatorContactInfo' },
-	'creatorcountry' => { 379 => [\'CreatorContactInfo','CreatorContactInfoCiAdrCtry'] },
-	'creatorpostalcode' => { 379 => [\'CreatorContactInfo','CreatorContactInfoCiAdrPcode'] },
-	'creatorregion' => { 379 => [\'CreatorContactInfo','CreatorContactInfoCiAdrRegion'] },
-	'creatortool' => { 391 => 'CreatorTool' },
-	'creatorworkemail' => { 379 => [\'CreatorContactInfo','CreatorContactInfoCiEmailWork'] },
-	'creatorworktelephone' => { 379 => [\'CreatorContactInfo','CreatorContactInfoCiTelWork'] },
-	'creatorworkurl' => { 379 => [\'CreatorContactInfo','CreatorContactInfoCiUrlWork'] },
-	'credit' => { 103 => 0x6e, 382 => 'Credit' },
-	'creditline' => { 386 => 'creditLine' },
-	'creditlinereq' => { 396 => 'CreditLineReq' },
-	'creditlinerequired' => { 383 => 'CreditLineRequired' },
+	'countrycode' => { 181 => 0x5, 293 => 'CountryCode', 385 => 'CountryCode' },
+	'coverage' => { 377 => 'coverage' },
+	'coverdate' => { 390 => 'coverDate' },
+	'coverdisplaydate' => { 390 => 'coverDisplayDate' },
+	'cpufirmwareversion' => { 284 => 0x28 },
+	'crc32' => { 378 => 'crc32' },
+	'createdate' => { 95 => 0x9004, 126 => 'CreateDate', 242 => 'CreationDate', 245 => 'create-date', 297 => 'CreationDate', 299 => 0x1, 397 => 'CreateDate' },
+	'creationdate' => { 387 => 'CreationDate', 390 => 'creationDate' },
+	'creationtime' => { 245 => 'Creation Time' },
+	'creativestyle' => { 323 => 0x1a, 324 => 0x18, 334 => 0x41, 335 => 0xb020, 358 => 0x4a },
+	'creativestylesetting' => { 325 => 0xf, 339 => 0x7 },
+	'creativestylewaschanged' => { 362 => 0x8001 },
+	'creator' => { 242 => 'Creator', 297 => 'Creator', 377 => 'creator', 387 => 'Creator' },
+	'creatoraddress' => { 385 => [\'CreatorContactInfo','CreatorContactInfoCiAdrExtadr'] },
+	'creatorcity' => { 385 => [\'CreatorContactInfo','CreatorContactInfoCiAdrCity'] },
+	'creatorcontactinfo' => { 385 => 'CreatorContactInfo' },
+	'creatorcountry' => { 385 => [\'CreatorContactInfo','CreatorContactInfoCiAdrCtry'] },
+	'creatorpostalcode' => { 385 => [\'CreatorContactInfo','CreatorContactInfoCiAdrPcode'] },
+	'creatorregion' => { 385 => [\'CreatorContactInfo','CreatorContactInfoCiAdrRegion'] },
+	'creatortool' => { 397 => 'CreatorTool' },
+	'creatorworkemail' => { 385 => [\'CreatorContactInfo','CreatorContactInfoCiEmailWork'] },
+	'creatorworktelephone' => { 385 => [\'CreatorContactInfo','CreatorContactInfoCiTelWork'] },
+	'creatorworkurl' => { 385 => [\'CreatorContactInfo','CreatorContactInfoCiUrlWork'] },
+	'credit' => { 103 => 0x6e, 388 => 'Credit' },
+	'creditline' => { 392 => 'creditLine' },
+	'creditlinereq' => { 402 => 'CreditLineReq' },
+	'creditlinerequired' => { 389 => 'CreditLineRequired' },
 	'cropactive' => { 86 => 0x244 },
-	'cropangle' => { 370 => 'CropAngle' },
+	'cropangle' => { 376 => 'CropAngle' },
 	'cropaspectratio' => { 86 => 0x260 },
-	'cropbottom' => { 99 => 0x9, 210 => 0x36, 291 => 0xdc, 370 => 'CropBottom' },
+	'cropbottom' => { 99 => 0x9, 210 => 0x36, 292 => 0xdc, 376 => 'CropBottom' },
 	'cropbottommargin' => { 42 => 0x3 },
 	'cropcircleactive' => { 87 => 0xd6 },
 	'cropcircleradius' => { 87 => 0xd9 },
 	'cropcirclex' => { 87 => 0xd7 },
 	'cropcircley' => { 87 => 0xd8 },
-	'cropconstraintowarp' => { 370 => 'CropConstrainToWarp' },
-	'croph' => { 364 => 'CropH' },
-	'cropheight' => { 86 => 0x24c, 237 => 0x615, 241 => 0x615, 370 => 'CropHeight' },
+	'cropconstraintowarp' => { 376 => 'CropConstrainToWarp' },
+	'croph' => { 370 => 'CropH' },
+	'cropheight' => { 86 => 0x24c, 237 => 0x615, 241 => 0x615, 376 => 'CropHeight' },
 	'crophispeed' => { 182 => 0x1b },
-	'cropleft' => { 86 => 0x246, 99 => 0x6, 210 => 0x1e, 237 => 0x612, 241 => 0x612, 291 => 0xd9, 370 => 'CropLeft' },
+	'cropleft' => { 86 => 0x246, 99 => 0x6, 210 => 0x1e, 237 => 0x612, 241 => 0x612, 292 => 0xd9, 376 => 'CropLeft' },
 	'cropleftmargin' => { 42 => 0x0 },
-	'cropmode35mm' => { 305 => 0x1018 },
+	'cropmode35mm' => { 306 => 0x1018 },
 	'cropoutputheight' => { 210 => 0xce },
 	'cropoutputheightinches' => { 210 => 0x96 },
 	'cropoutputpixels' => { 210 => 0xd6 },
@@ -1223,53 +1277,53 @@ my %tagLookup = (
 	'cropoutputscale' => { 210 => 0xbe },
 	'cropoutputwidth' => { 210 => 0xc6 },
 	'cropoutputwidthinches' => { 210 => 0x8e },
-	'croppedareaimageheightpixels' => { 360 => 'CroppedAreaImageHeightPixels' },
-	'croppedareaimagewidthpixels' => { 360 => 'CroppedAreaImageWidthPixels' },
-	'croppedarealeftpixels' => { 360 => 'CroppedAreaLeftPixels' },
-	'croppedareatoppixels' => { 360 => 'CroppedAreaTopPixels' },
-	'croppedimageheight' => { 4 => 0x2, 305 => 0x1604 },
+	'croppedareaimageheightpixels' => { 366 => 'CroppedAreaImageHeightPixels' },
+	'croppedareaimagewidthpixels' => { 366 => 'CroppedAreaImageWidthPixels' },
+	'croppedarealeftpixels' => { 366 => 'CroppedAreaLeftPixels' },
+	'croppedareatoppixels' => { 366 => 'CroppedAreaTopPixels' },
+	'croppedimageheight' => { 4 => 0x2, 306 => 0x1604 },
 	'croppedimageleft' => { 4 => 0x3 },
 	'croppedimagetop' => { 4 => 0x4 },
-	'croppedimagewidth' => { 4 => 0x1, 305 => 0x1603 },
-	'cropright' => { 99 => 0x8, 210 => 0x2e, 291 => 0xdb, 370 => 'CropRight' },
+	'croppedimagewidth' => { 4 => 0x1, 306 => 0x1603 },
+	'cropright' => { 99 => 0x8, 210 => 0x2e, 292 => 0xdb, 376 => 'CropRight' },
 	'croprightmargin' => { 42 => 0x1 },
 	'croprotation' => { 99 => 0xb },
 	'cropscaledresolution' => { 210 => 0x9e },
 	'cropsourceresolution' => { 210 => 0xae },
-	'croptop' => { 86 => 0x248, 99 => 0x7, 210 => 0x26, 237 => 0x613, 241 => 0x613, 291 => 0xda, 370 => 'CropTop' },
+	'croptop' => { 86 => 0x248, 99 => 0x7, 210 => 0x26, 237 => 0x613, 241 => 0x613, 292 => 0xda, 376 => 'CropTop' },
 	'croptopmargin' => { 42 => 0x2 },
-	'cropunit' => { 370 => 'CropUnit' },
-	'cropunits' => { 370 => 'CropUnits' },
-	'cropw' => { 364 => 'CropW' },
-	'cropwidth' => { 86 => 0x24a, 237 => 0x614, 241 => 0x614, 370 => 'CropWidth' },
-	'cropx' => { 364 => 'CropX' },
-	'cropy' => { 364 => 'CropY' },
-	'crossprocess' => { 283 => 0x7b },
-	'crossprocessparams' => { 283 => 0x235 },
+	'cropunit' => { 376 => 'CropUnit' },
+	'cropunits' => { 376 => 'CropUnits' },
+	'cropw' => { 370 => 'CropW' },
+	'cropwidth' => { 86 => 0x24a, 237 => 0x614, 241 => 0x614, 376 => 'CropWidth' },
+	'cropx' => { 370 => 'CropX' },
+	'cropy' => { 370 => 'CropY' },
+	'crossprocess' => { 284 => 0x7b },
+	'crossprocessparams' => { 284 => 0x235 },
 	'currenticcprofile' => { 95 => 0xc691 },
 	'currentpreprofilematrix' => { 95 => 0xc692 },
-	'currentversion' => { 356 => 0xd000 },
-	'curve0x' => { 364 => 'Curve0x' },
-	'curve0y' => { 364 => 'Curve0y' },
-	'curve1x' => { 364 => 'Curve1x' },
-	'curve1y' => { 364 => 'Curve1y' },
-	'curve2x' => { 364 => 'Curve2x' },
-	'curve2y' => { 364 => 'Curve2y' },
-	'curve3x' => { 364 => 'Curve3x' },
-	'curve3y' => { 364 => 'Curve3y' },
-	'curve4x' => { 364 => 'Curve4x' },
-	'curve4y' => { 364 => 'Curve4y' },
+	'currentversion' => { 362 => 0xd000 },
+	'curve0x' => { 370 => 'Curve0x' },
+	'curve0y' => { 370 => 'Curve0y' },
+	'curve1x' => { 370 => 'Curve1x' },
+	'curve1y' => { 370 => 'Curve1y' },
+	'curve2x' => { 370 => 'Curve2x' },
+	'curve2y' => { 370 => 'Curve2y' },
+	'curve3x' => { 370 => 'Curve3x' },
+	'curve3y' => { 370 => 'Curve3y' },
+	'curve4x' => { 370 => 'Curve4x' },
+	'curve4y' => { 370 => 'Curve4y' },
 	'curves' => { 215 => 0x76a43201 },
-	'custom1' => { 383 => 'Custom1' },
-	'custom10' => { 383 => 'Custom10' },
-	'custom2' => { 383 => 'Custom2' },
-	'custom3' => { 383 => 'Custom3' },
-	'custom4' => { 383 => 'Custom4' },
-	'custom5' => { 383 => 'Custom5' },
-	'custom6' => { 383 => 'Custom6' },
-	'custom7' => { 383 => 'Custom7' },
-	'custom8' => { 383 => 'Custom8' },
-	'custom9' => { 383 => 'Custom9' },
+	'custom1' => { 389 => 'Custom1' },
+	'custom10' => { 389 => 'Custom10' },
+	'custom2' => { 389 => 'Custom2' },
+	'custom3' => { 389 => 'Custom3' },
+	'custom4' => { 389 => 'Custom4' },
+	'custom5' => { 389 => 'Custom5' },
+	'custom6' => { 389 => 'Custom6' },
+	'custom7' => { 389 => 'Custom7' },
+	'custom8' => { 389 => 'Custom8' },
+	'custom9' => { 389 => 'Custom9' },
 	'customcontrast' => { 87 => 0x4e },
 	'customcontrols' => { 68 => 0x70c },
 	'customdefaultunsharpfineness' => { 87 => 0xbe },
@@ -1283,7 +1337,7 @@ my %tagLookup = (
 	'customrawhighlightpoint' => { 87 => 0x51 },
 	'customrawshadow' => { 87 => 0x85 },
 	'customrawshadowpoint' => { 87 => 0x52 },
-	'customrendered' => { 95 => 0xa401, 374 => 'CustomRendered' },
+	'customrendered' => { 95 => 0xa401, 380 => 'CustomRendered' },
 	'customsaturation' => { 233 => 0x503 },
 	'customsettingsalldefault' => { 222 => '0.2', 227 => '0.2' },
 	'customsettingsbank' => { 222 => '0.1', 227 => '0.1' },
@@ -1291,8 +1345,8 @@ my %tagLookup = (
 	'customunsharpmaskfineness' => { 87 => 0xb8 },
 	'customunsharpmaskstrength' => { 87 => 0xb6 },
 	'customunsharpmaskthreshold' => { 87 => 0xba },
-	'customwb_rblevels' => { 335 => 0x1a },
-	'customwb_rgblevels' => { 321 => 0x19 },
+	'customwb_rblevels' => { 339 => 0x1a },
+	'customwb_rgblevels' => { 325 => 0x19 },
 	'customwbbluelevel' => { 150 => 0x36 },
 	'customwberror' => { 150 => 0x37 },
 	'customwbgreenlevel' => { 150 => 0x35 },
@@ -1306,24 +1360,24 @@ my %tagLookup = (
 	'd-lightinghs' => { 215 => 0xce5554aa },
 	'd-lightinghsadjustment' => { 212 => 0x0 },
 	'd-lightinghscolorboost' => { 212 => 0x1 },
-	'd-rangeoptimizerhighlight' => { 356 => 0x8024 },
-	'd-rangeoptimizermode' => { 356 => 0x8022 },
-	'd-rangeoptimizershadow' => { 356 => 0x802d },
-	'd-rangeoptimizervalue' => { 356 => 0x8023 },
+	'd-rangeoptimizerhighlight' => { 362 => 0x8024 },
+	'd-rangeoptimizermode' => { 362 => 0x8022 },
+	'd-rangeoptimizershadow' => { 362 => 0x802d },
+	'd-rangeoptimizervalue' => { 362 => 0x8023 },
 	'datacompressionmethod' => { 105 => 0x6e },
 	'dataimprint' => { 147 => 0x34 },
-	'date' => { 283 => 0x6, 371 => 'date' },
+	'date' => { 284 => 0x6, 377 => 'date' },
 	'dateacquired' => { 145 => 'DateAcquired' },
-	'datecreated' => { 103 => 0x37, 382 => 'DateCreated' },
+	'datecreated' => { 103 => 0x37, 388 => 'DateCreated' },
 	'datedisplayformat' => { 207 => 0x3 },
 	'dateidentified' => { 94 => [\'Identification','IdentificationDateIdentified'] },
 	'dateimprint' => { 224 => '4.2' },
-	'daterecieved' => { 384 => 'dateRecieved' },
+	'daterecieved' => { 390 => 'dateRecieved' },
 	'datesent' => { 104 => 0x46 },
 	'datestampmode' => { 51 => 0x1c },
-	'datetime' => { 365 => 'datetime', 389 => 'DateTime' },
-	'datetimedigitized' => { 374 => 'DateTimeDigitized' },
-	'datetimeoriginal' => { 84 => 0x0, 95 => 0x9003, 123 => 0x14, 126 => 'OriginalDate', 301 => 0xb, 374 => 'DateTimeOriginal' },
+	'datetime' => { 371 => 'datetime', 395 => 'DateTime' },
+	'datetimedigitized' => { 380 => 'DateTimeDigitized' },
+	'datetimeoriginal' => { 84 => 0x0, 95 => 0x9003, 123 => 0x14, 126 => 'OriginalDate', 302 => 0xb, 380 => 'DateTimeOriginal' },
 	'datetimestamp' => { 111 => 0x64 },
 	'datetimeutc' => { 233 => 0x908 },
 	'daylightsavings' => { 63 => 0x3, 207 => 0x2 },
@@ -1381,149 +1435,150 @@ my %tagLookup = (
 	'defaulteraseoption' => { 68 => 0x813 },
 	'defaultscale' => { 95 => 0xc61e },
 	'defaultusercrop' => { 95 => 0xc7b5 },
-	'defringe' => { 370 => 'Defringe' },
-	'defringegreenamount' => { 370 => 'DefringeGreenAmount' },
-	'defringegreenhuehi' => { 370 => 'DefringeGreenHueHi' },
-	'defringegreenhuelo' => { 370 => 'DefringeGreenHueLo' },
-	'defringepurpleamount' => { 370 => 'DefringePurpleAmount' },
-	'defringepurplehuehi' => { 370 => 'DefringePurpleHueHi' },
-	'defringepurplehuelo' => { 370 => 'DefringePurpleHueLo' },
+	'defringe' => { 376 => 'Defringe' },
+	'defringegreenamount' => { 376 => 'DefringeGreenAmount' },
+	'defringegreenhuehi' => { 376 => 'DefringeGreenHueHi' },
+	'defringegreenhuelo' => { 376 => 'DefringeGreenHueLo' },
+	'defringepurpleamount' => { 376 => 'DefringePurpleAmount' },
+	'defringepurplehuehi' => { 376 => 'DefringePurpleHueHi' },
+	'defringepurplehuelo' => { 376 => 'DefringePurpleHueLo' },
 	'deletedimagecount' => { 182 => 0xa6, 188 => 0x6e },
-	'deprecatedon' => { 368 => 'deprecatedOn' },
-	'derivedfrom' => { 394 => 'DerivedFrom' },
-	'derivedfromalternatepaths' => { 394 => [\'DerivedFrom','DerivedFromAlternatePaths'] },
-	'derivedfromdocumentid' => { 394 => [\'DerivedFrom','DerivedFromDocumentID'] },
-	'derivedfromfilepath' => { 394 => [\'DerivedFrom','DerivedFromFilePath'] },
-	'derivedfromfrompart' => { 394 => [\'DerivedFrom','DerivedFromFromPart'] },
-	'derivedfrominstanceid' => { 394 => [\'DerivedFrom','DerivedFromInstanceID'] },
-	'derivedfromlastmodifydate' => { 394 => [\'DerivedFrom','DerivedFromLastModifyDate'] },
-	'derivedfrommanager' => { 394 => [\'DerivedFrom','DerivedFromManager'] },
-	'derivedfrommanagervariant' => { 394 => [\'DerivedFrom','DerivedFromManagerVariant'] },
-	'derivedfrommanageto' => { 394 => [\'DerivedFrom','DerivedFromManageTo'] },
-	'derivedfrommanageui' => { 394 => [\'DerivedFrom','DerivedFromManageUI'] },
-	'derivedfrommaskmarkers' => { 394 => [\'DerivedFrom','DerivedFromMaskMarkers'] },
-	'derivedfromoriginaldocumentid' => { 394 => [\'DerivedFrom','DerivedFromOriginalDocumentID'] },
-	'derivedfrompartmapping' => { 394 => [\'DerivedFrom','DerivedFromPartMapping'] },
-	'derivedfromrenditionclass' => { 394 => [\'DerivedFrom','DerivedFromRenditionClass'] },
-	'derivedfromrenditionparams' => { 394 => [\'DerivedFrom','DerivedFromRenditionParams'] },
-	'derivedfromtopart' => { 394 => [\'DerivedFrom','DerivedFromToPart'] },
-	'derivedfromversionid' => { 394 => [\'DerivedFrom','DerivedFromVersionID'] },
-	'description' => { 244 => 'Description', 371 => 'description', 391 => 'Description' },
+	'deprecatedon' => { 374 => 'deprecatedOn' },
+	'derivedfrom' => { 400 => 'DerivedFrom' },
+	'derivedfromalternatepaths' => { 400 => [\'DerivedFrom','DerivedFromAlternatePaths'] },
+	'derivedfromdocumentid' => { 400 => [\'DerivedFrom','DerivedFromDocumentID'] },
+	'derivedfromfilepath' => { 400 => [\'DerivedFrom','DerivedFromFilePath'] },
+	'derivedfromfrompart' => { 400 => [\'DerivedFrom','DerivedFromFromPart'] },
+	'derivedfrominstanceid' => { 400 => [\'DerivedFrom','DerivedFromInstanceID'] },
+	'derivedfromlastmodifydate' => { 400 => [\'DerivedFrom','DerivedFromLastModifyDate'] },
+	'derivedfrommanager' => { 400 => [\'DerivedFrom','DerivedFromManager'] },
+	'derivedfrommanagervariant' => { 400 => [\'DerivedFrom','DerivedFromManagerVariant'] },
+	'derivedfrommanageto' => { 400 => [\'DerivedFrom','DerivedFromManageTo'] },
+	'derivedfrommanageui' => { 400 => [\'DerivedFrom','DerivedFromManageUI'] },
+	'derivedfrommaskmarkers' => { 400 => [\'DerivedFrom','DerivedFromMaskMarkers'] },
+	'derivedfromoriginaldocumentid' => { 400 => [\'DerivedFrom','DerivedFromOriginalDocumentID'] },
+	'derivedfrompartmapping' => { 400 => [\'DerivedFrom','DerivedFromPartMapping'] },
+	'derivedfromrenditionclass' => { 400 => [\'DerivedFrom','DerivedFromRenditionClass'] },
+	'derivedfromrenditionparams' => { 400 => [\'DerivedFrom','DerivedFromRenditionParams'] },
+	'derivedfromtopart' => { 400 => [\'DerivedFrom','DerivedFromToPart'] },
+	'derivedfromversionid' => { 400 => [\'DerivedFrom','DerivedFromVersionID'] },
+	'description' => { 245 => 'Description', 377 => 'description', 397 => 'Description' },
 	'destination' => { 104 => 0x5 },
-	'destinationcity' => { 283 => 0x24, 288 => 0x3 },
-	'destinationcitycode' => { 289 => 0x1001 },
-	'destinationdst' => { 283 => 0x26, 288 => '0.3' },
+	'destinationcity' => { 284 => 0x24, 289 => 0x3 },
+	'destinationcitycode' => { 290 => 0x1001 },
+	'destinationdst' => { 284 => 0x26, 289 => '0.3' },
 	'developmentdynamicrange' => { 100 => 0x1403 },
-	'devicesettingdescription' => { 374 => 'DeviceSettingDescription' },
-	'devicesettingdescriptioncolumns' => { 374 => [\'DeviceSettingDescription','DeviceSettingDescriptionColumns'] },
-	'devicesettingdescriptionrows' => { 374 => [\'DeviceSettingDescription','DeviceSettingDescriptionRows'] },
-	'devicesettingdescriptionsettings' => { 374 => [\'DeviceSettingDescription','DeviceSettingDescriptionSettings'] },
+	'devicesettingdescription' => { 380 => 'DeviceSettingDescription' },
+	'devicesettingdescriptioncolumns' => { 380 => [\'DeviceSettingDescription','DeviceSettingDescriptionColumns'] },
+	'devicesettingdescriptionrows' => { 380 => [\'DeviceSettingDescription','DeviceSettingDescriptionRows'] },
+	'devicesettingdescriptionsettings' => { 380 => [\'DeviceSettingDescription','DeviceSettingDescriptionSettings'] },
 	'dialdirectiontvav' => { 68 => 0x706 },
 	'digitalcreationdate' => { 103 => 0x3e },
 	'digitalcreationtime' => { 103 => 0x3f },
 	'digitaldeehighlightadj' => { 187 => 0x202 },
 	'digitaldeeshadowadj' => { 187 => 0x200 },
 	'digitaldeethreshold' => { 187 => 0x201 },
-	'digitalfilter' => { 314 => 0x59 },
-	'digitalfilter01' => { 270 => 0x5 },
-	'digitalfilter02' => { 270 => 0x16 },
-	'digitalfilter03' => { 270 => 0x27 },
-	'digitalfilter04' => { 270 => 0x38 },
-	'digitalfilter05' => { 270 => 0x49 },
-	'digitalfilter06' => { 270 => 0x5a },
-	'digitalfilter07' => { 270 => 0x6b },
-	'digitalfilter08' => { 270 => 0x7c },
-	'digitalfilter09' => { 270 => 0x8d },
-	'digitalfilter10' => { 270 => 0x9e },
-	'digitalfilter11' => { 270 => 0xaf },
-	'digitalfilter12' => { 270 => 0xc0 },
-	'digitalfilter13' => { 270 => 0xd1 },
-	'digitalfilter14' => { 270 => 0xe2 },
-	'digitalfilter15' => { 270 => 0xf3 },
-	'digitalfilter16' => { 270 => 0x104 },
-	'digitalfilter17' => { 270 => 0x115 },
-	'digitalfilter18' => { 270 => 0x126 },
-	'digitalfilter19' => { 270 => 0x137 },
-	'digitalfilter20' => { 270 => 0x148 },
+	'digitalfilter' => { 315 => 0x59 },
+	'digitalfilter01' => { 271 => 0x5 },
+	'digitalfilter02' => { 271 => 0x16 },
+	'digitalfilter03' => { 271 => 0x27 },
+	'digitalfilter04' => { 271 => 0x38 },
+	'digitalfilter05' => { 271 => 0x49 },
+	'digitalfilter06' => { 271 => 0x5a },
+	'digitalfilter07' => { 271 => 0x6b },
+	'digitalfilter08' => { 271 => 0x7c },
+	'digitalfilter09' => { 271 => 0x8d },
+	'digitalfilter10' => { 271 => 0x9e },
+	'digitalfilter11' => { 271 => 0xaf },
+	'digitalfilter12' => { 271 => 0xc0 },
+	'digitalfilter13' => { 271 => 0xd1 },
+	'digitalfilter14' => { 271 => 0xe2 },
+	'digitalfilter15' => { 271 => 0xf3 },
+	'digitalfilter16' => { 271 => 0x104 },
+	'digitalfilter17' => { 271 => 0x115 },
+	'digitalfilter18' => { 271 => 0x126 },
+	'digitalfilter19' => { 271 => 0x137 },
+	'digitalfilter20' => { 271 => 0x148 },
 	'digitalgain' => { 60 => 0xb },
 	'digitalgem' => { 174 => 0x0 },
 	'digitalice' => { 187 => 0x100 },
-	'digitalimageguid' => { 380 => 'DigImageGUID' },
+	'digitalimageguid' => { 386 => 'DigImageGUID' },
 	'digitalroc' => { 186 => 0x0 },
-	'digitalsourcefiletype' => { 380 => 'DigitalSourcefileType' },
-	'digitalsourcetype' => { 380 => 'DigitalSourceType' },
-	'digitalzoom' => { 29 => 0xc, 90 => 0xa, 111 => 0x68, 125 => 'DigitalZoom', 147 => 0xc, 182 => 0x86, 205 => 0xa, 238 => 0x204, 283 => 0x1e, 289 => 0xa, 313 => 0x204, 346 => 0x12, 347 => 0x12 },
-	'digitalzoomon' => { 313 => 0x21b },
-	'digitalzoomratio' => { 95 => 0xa404, 340 => 0x200, 342 => 0x21c, 374 => 'DigitalZoomRatio' },
-	'director' => { 393 => 'director' },
-	'directorphotography' => { 393 => 'directorPhotography' },
+	'digitalsourcefiletype' => { 386 => 'DigitalSourcefileType' },
+	'digitalsourcetype' => { 386 => 'DigitalSourceType' },
+	'digitalzoom' => { 29 => 0xc, 90 => 0xa, 111 => 0x68, 125 => 'DigitalZoom', 147 => 0xc, 182 => 0x86, 205 => 0xa, 238 => 0x204, 284 => 0x1e, 290 => 0xa, 314 => 0x204, 350 => 0x12, 351 => 0x12 },
+	'digitalzoomon' => { 314 => 0x21b },
+	'digitalzoomratio' => { 95 => 0xa404, 344 => 0x200, 346 => 0x21c, 380 => 'DigitalZoomRatio' },
+	'director' => { 399 => 'director' },
+	'directorphotography' => { 399 => 'directorPhotography' },
 	'directory' => { 96 => 'Directory' },
 	'directoryindex' => { 5 => 0x137, 7 => 0x2dc, 9 => 0x17e, 11 => 0x238, 12 => 0x13f, 13 => 0x133, 14 => 0x1df, 15 => 0x1a7, 16 => 0x1f0, 17 => 0xcc, 18 => 0x1c7, 19 => 0x298, 20 => 0x1e7, 21 => 0x1e5, 22 => [0x27c,0x280], 23 => 0x2b6, 24 => 0x2bf, 25 => 0x1f7 },
 	'directoryindex2' => { 19 => 0x29c },
 	'directorynumber' => { 170 => 0x6 },
-	'disclaimer' => { 244 => 'Disclaimer' },
-	'discnumber' => { 393 => 'discNumber' },
+	'disclaimer' => { 245 => 'Disclaimer' },
+	'discnumber' => { 399 => 'discNumber' },
 	'displayallafpoints' => { 68 => 0x514 },
 	'displayaperture' => { 29 => 0x23 },
-	'displayedunitsx' => { 295 => 0x2 },
-	'displayedunitsy' => { 295 => 0x6 },
+	'displayedunitsx' => { 296 => 0x2 },
+	'displayedunitsy' => { 296 => 0x6 },
 	'distance1' => { 111 => 0x28 },
 	'distance2' => { 111 => 0x2c },
 	'distance3' => { 111 => 0x30 },
 	'distance4' => { 111 => 0x34 },
 	'distortioncontrol' => { 188 => 0x10 },
-	'distortioncorrection' => { 87 => 0x67, 233 => 0x50b, 255 => '7.1', 273 => 0x0, 331 => 0x2013 },
+	'distortioncorrection' => { 87 => 0x67, 233 => 0x50b, 256 => '7.1', 274 => 0x0, 357 => 0x601, 358 => 0x5b },
 	'distortioncorrection2' => { 237 => 0x1011 },
 	'distortioncorrectionon' => { 87 => 0x63 },
-	'distortionn' => { 255 => 0xc },
-	'distortionparam02' => { 255 => 0x2 },
-	'distortionparam04' => { 255 => 0x4 },
-	'distortionparam08' => { 255 => 0x8 },
-	'distortionparam09' => { 255 => 0x9 },
-	'distortionparam11' => { 255 => 0xb },
-	'distortionscale' => { 255 => 0x5 },
-	'distributor' => { 384 => 'distributor' },
+	'distortioncorrectionsetting' => { 335 => 0x2013 },
+	'distortionn' => { 256 => 0xc },
+	'distortionparam02' => { 256 => 0x2 },
+	'distortionparam04' => { 256 => 0x4 },
+	'distortionparam08' => { 256 => 0x8 },
+	'distortionparam09' => { 256 => 0x9 },
+	'distortionparam11' => { 256 => 0xb },
+	'distortionscale' => { 256 => 0x5 },
+	'distributor' => { 390 => 'distributor' },
 	'dloon' => { 87 => 0xdc },
 	'dlosetting' => { 87 => 0xdd },
 	'dlosettingapplied' => { 87 => 0xe4 },
 	'dloshootingdistance' => { 87 => 0xde },
 	'dloversion' => { 87 => 0xe5 },
-	'dmcomment' => { 393 => 'comment' },
+	'dmcomment' => { 399 => 'comment' },
 	'dngadobedata' => { 95 => 0xc634 },
 	'dngbackwardversion' => { 95 => 0xc613 },
 	'dnglensinfo' => { 95 => 0xc630 },
 	'dngprivatedata' => { 95 => 0xc634 },
 	'dngversion' => { 95 => 0xc612 },
-	'document' => { 244 => 'Document' },
-	'documentancestorid' => { 382 => [\'DocumentAncestors','DocumentAncestorsAncestorID'] },
-	'documentancestors' => { 382 => 'DocumentAncestors' },
+	'document' => { 245 => 'Document' },
+	'documentancestorid' => { 388 => [\'DocumentAncestors','DocumentAncestorsAncestorID'] },
+	'documentancestors' => { 388 => 'DocumentAncestors' },
 	'documenthistory' => { 103 => 0xe7 },
-	'documentid' => { 394 => 'DocumentID' },
+	'documentid' => { 400 => 'DocumentID' },
 	'documentname' => { 95 => 0x10d },
 	'documentnotes' => { 103 => 0xe6 },
-	'doi' => { 384 => 'doi' },
+	'doi' => { 390 => 'doi' },
 	'dotrange' => { 95 => 0x150 },
-	'dpp' => { 365 => 'dpp' },
-	'drivemode' => { 91 => 0x3103, 147 => 0x6, 150 => 0x1e, 153 => 0xe, 233 => 0x600, 283 => 0x34, 305 => 0x1002, 314 => 0x3, 319 => 0x4, 320 => 0x7e, 321 => 0x34 },
-	'drivemode2' => { 150 => 0xa, 264 => 0x7, 330 => 0xe, 335 => 0x1 },
-	'drivemodesetting' => { 321 => 0x4 },
-	'dspfirmwareversion' => { 283 => 0x27 },
-	'duration' => { 54 => 0x6a, 124 => 'Duration', 138 => 'Duration', 393 => 'duration' },
-	'durationscale' => { 393 => [\'duration','durationScale'] },
-	'durationvalue' => { 393 => [\'duration','durationValue'] },
+	'dpp' => { 371 => 'dpp' },
+	'drivemode' => { 91 => 0x3103, 147 => 0x6, 150 => 0x1e, 153 => 0xe, 233 => 0x600, 284 => 0x34, 306 => 0x1002, 315 => 0x3, 323 => 0x4, 324 => 0x7e, 325 => 0x34 },
+	'drivemode2' => { 150 => 0xa, 265 => 0x7, 334 => 0xe, 339 => 0x1 },
+	'drivemodesetting' => { 325 => 0x4 },
+	'dspfirmwareversion' => { 284 => 0x27 },
+	'duration' => { 54 => 0x6a, 124 => 'Duration', 138 => 'Duration', 399 => 'duration' },
+	'durationscale' => { 399 => [\'duration','durationScale'] },
+	'durationvalue' => { 399 => [\'duration','durationValue'] },
 	'dustremovaldata' => { 51 => 0x97 },
 	'dynamicafarea' => { 222 => '1.4', 227 => '1.4' },
 	'dynamicrange' => { 100 => 0x1400 },
-	'dynamicrangeexpansion' => { 283 => 0x69, 305 => 0x100e },
+	'dynamicrangeexpansion' => { 284 => 0x69, 306 => 0x100e },
 	'dynamicrangemax' => { 86 => 0x7c },
 	'dynamicrangemin' => { 86 => 0x7a },
-	'dynamicrangeoptimizer' => { 150 => 0x15, 331 => [0xb025,0xb04f], 338 => 0x1144, 339 => 0x1144, 340 => 0x1120, 341 => 0x119c, 342 => 0x1178, 343 => 0x1030, 344 => 0x228 },
-	'dynamicrangeoptimizerbracket' => { 330 => 0x2e },
-	'dynamicrangeoptimizerlevel' => { 319 => 0x19, 320 => 0x17, 321 => 0xd, 335 => 0x5 },
-	'dynamicrangeoptimizermode' => { 153 => 0x15, 319 => 0x18, 320 => 0x16, 330 => 0x15 },
-	'dynamicrangeoptimizersetting' => { 150 => 0x27, 321 => 0xc, 335 => 0x4 },
+	'dynamicrangeoptimizer' => { 150 => 0x15, 335 => [0xb025,0xb04f], 342 => 0x1144, 343 => [0x1144,0x324], 344 => [0x1120,0x300], 345 => [0x119c,0x37c], 346 => [0x1178,0x328], 347 => [0x1030,0x50], 348 => [0x228,0x50] },
+	'dynamicrangeoptimizerbracket' => { 334 => 0x2e },
+	'dynamicrangeoptimizerlevel' => { 323 => 0x19, 324 => 0x17, 325 => 0xd, 334 => 0x79, 339 => 0x5 },
+	'dynamicrangeoptimizermode' => { 153 => 0x15, 323 => 0x18, 324 => 0x16, 334 => [0x77,0x15] },
+	'dynamicrangeoptimizersetting' => { 150 => 0x27, 325 => 0xc, 339 => 0x4 },
 	'dynamicrangesetting' => { 100 => 0x1402 },
-	'e-dialinprogram' => { 264 => '1.3' },
+	'e-dialinprogram' => { 265 => '1.3' },
 	'earliestageorloweststage' => { 94 => [\'GeologicalContext','GeologicalContextEarliestAgeOrLowestStage'] },
 	'earliesteonorlowesteonothem' => { 94 => [\'GeologicalContext','GeologicalContextEarliestEonOrLowestEonothem'] },
 	'earliestepochorlowestseries' => { 94 => [\'GeologicalContext','GeologicalContextEarliestEpochOrLowestSeries'] },
@@ -1532,25 +1587,25 @@ my %tagLookup = (
 	'easyexposurecomp' => { 231 => '6.1' },
 	'easyexposurecompensation' => { 222 => '6.4', 227 => '4.4', 228 => '5.2' },
 	'easymode' => { 29 => 0xb },
-	'edgenoisereduction' => { 216 => 0x4, 356 => 0x8028 },
-	'edition' => { 384 => 'edition' },
+	'edgenoisereduction' => { 216 => 0x4, 362 => 0x8028 },
+	'edition' => { 390 => 'edition' },
 	'editorialupdate' => { 103 => 0x8 },
-	'editstatus' => { 103 => 0x7, 292 => 'EditStatus' },
+	'editstatus' => { 103 => 0x7, 293 => 'EditStatus' },
 	'editversionname' => { 215 => 0x3d136244 },
-	'effectivelv' => { 283 => 0x2d },
+	'effectivelv' => { 284 => 0x2d },
 	'effectivemaxaperture' => { 178 => 0x12, 179 => 0x13 },
-	'eissn' => { 384 => 'eIssn' },
+	'eissn' => { 390 => 'eIssn' },
 	'elevation' => { 134 => 'Elevation' },
 	'email' => { 126 => 'EMail' },
-	'embargodate' => { 384 => 'embargoDate', 386 => 'embargoDate' },
-	'embeddedxmpdigest' => { 382 => 'EmbeddedXMPDigest' },
+	'embargodate' => { 390 => 'embargoDate', 392 => 'embargoDate' },
+	'embeddedxmpdigest' => { 388 => 'EmbeddedXMPDigest' },
 	'emissivity' => { 97 => 0x3 },
-	'encryptionkey' => { 311 => 0xa020 },
-	'endingpage' => { 384 => 'endingPage' },
-	'enduser' => { 383 => 'EndUser' },
-	'enduserid' => { 383 => [\'EndUser','EndUserEndUserID'] },
-	'endusername' => { 383 => [\'EndUser','EndUserEndUserName'] },
-	'engineer' => { 393 => 'engineer' },
+	'encryptionkey' => { 312 => 0xa020 },
+	'endingpage' => { 390 => 'endingPage' },
+	'enduser' => { 389 => 'EndUser' },
+	'enduserid' => { 389 => [\'EndUser','EndUserEndUserID'] },
+	'endusername' => { 389 => [\'EndUser','EndUserEndUserName'] },
+	'engineer' => { 399 => 'engineer' },
 	'enhancedarktones' => { 208 => 0x8 },
 	'enhancement' => { 90 => 0x16, 91 => 0x3016 },
 	'enhancer' => { 237 => 0x300 },
@@ -1561,11 +1616,11 @@ my %tagLookup = (
 	'epsonimageheight' => { 238 => 0x20c },
 	'epsonimagewidth' => { 238 => 0x20b },
 	'epsonsoftware' => { 238 => 0x20d },
-	'equipmentinstitution' => { 358 => 'EquipmentInstitution' },
-	'equipmentmanufacturer' => { 358 => 'EquipmentManufacturer' },
+	'equipmentinstitution' => { 364 => 'EquipmentInstitution' },
+	'equipmentmanufacturer' => { 364 => 'EquipmentManufacturer' },
 	'equipmentversion' => { 234 => 0x0 },
 	'ettlii' => { 68 => 0x304, 69 => 0xd, 70 => 0xe, 71 => 0x7, 72 => 0x7, 73 => 0xe },
-	'event' => { 359 => 'Event', 363 => 'Event', 380 => 'Event', 384 => 'event' },
+	'event' => { 365 => 'Event', 369 => 'Event', 386 => 'Event', 390 => 'event' },
 	'eventday' => { 94 => [\'Event','EventDay'] },
 	'eventearliestdate' => { 94 => [\'Event','EventEarliestDate'] },
 	'eventenddayofyear' => { 94 => [\'Event','EventEndDayOfYear'] },
@@ -1575,7 +1630,7 @@ my %tagLookup = (
 	'eventid' => { 94 => [\'Event','EventEventID'] },
 	'eventlatestdate' => { 94 => [\'Event','EventLatestDate'] },
 	'eventmonth' => { 94 => [\'Event','EventMonth'] },
-	'eventnumber' => { 301 => 0x9 },
+	'eventnumber' => { 302 => 0x9 },
 	'eventremarks' => { 94 => [\'Event','EventEventRemarks'] },
 	'eventsamplingeffort' => { 94 => [\'Event','EventSamplingEffort'] },
 	'eventsamplingprotocol' => { 94 => [\'Event','EventSamplingProtocol'] },
@@ -1583,33 +1638,33 @@ my %tagLookup = (
 	'eventtime' => { 94 => [\'Event','EventEventTime'] },
 	'eventverbatimeventdate' => { 94 => [\'Event','EventVerbatimEventDate'] },
 	'eventyear' => { 94 => [\'Event','EventYear'] },
-	'evsteps' => { 264 => '1.2', 266 => 0x0 },
+	'evsteps' => { 265 => '1.2', 267 => 0x0 },
 	'evstepsize' => { 224 => '5.1', 225 => '6.1', 226 => '6.1', 229 => '0.7' },
-	'exclusivityenddate' => { 386 => 'exclusivityEndDate' },
+	'exclusivityenddate' => { 392 => 'exclusivityEndDate' },
 	'excursiontolerance' => { 105 => 0x82 },
 	'exif' => { 96 => 'EXIF' },
 	'exifbyteorder' => { 96 => 'ExifByteOrder' },
 	'exifcamerainfo' => { 103 => 0xe8 },
-	'exifimageheight' => { 95 => 0xa003, 374 => 'PixelYDimension' },
-	'exifimagewidth' => { 95 => 0xa002, 374 => 'PixelXDimension' },
+	'exifimageheight' => { 95 => 0xa003, 380 => 'PixelYDimension' },
+	'exifimagewidth' => { 95 => 0xa002, 380 => 'PixelXDimension' },
 	'exifunicodebyteorder' => { 96 => 'ExifUnicodeByteOrder' },
-	'exifversion' => { 95 => 0x9000, 374 => 'ExifVersion' },
+	'exifversion' => { 95 => 0x9000, 380 => 'ExifVersion' },
 	'exitpupilposition' => { 178 => 0x4, 179 => 0x4 },
-	'expirationdate' => { 103 => 0x25, 384 => 'expirationDate', 386 => 'expirationDate' },
+	'expirationdate' => { 103 => 0x25, 390 => 'expirationDate', 392 => 'expirationDate' },
 	'expirationtime' => { 103 => 0x26 },
-	'exposure' => { 95 => 0xfe51, 370 => 'Exposure' },
-	'exposure2012' => { 370 => 'Exposure2012' },
+	'exposure' => { 95 => 0xfe51, 376 => 'Exposure' },
+	'exposure2012' => { 376 => 'Exposure2012' },
 	'exposureadj' => { 213 => 0x0 },
 	'exposureadj2' => { 213 => 0x12 },
-	'exposureadjust' => { 314 => 0xc },
+	'exposureadjust' => { 315 => 0xc },
 	'exposurebracketingindicatorlast' => { 150 => 0x52 },
-	'exposurebracketshotnumber' => { 153 => 0x2d, 330 => 0x2f },
-	'exposurebracketstepsize' => { 264 => 0x8 },
+	'exposurebracketshotnumber' => { 153 => 0x2d, 334 => 0x2f },
+	'exposurebracketstepsize' => { 265 => 0x8 },
 	'exposurebracketvalue' => { 182 => 0x19 },
-	'exposurecompensation' => { 62 => 0x6, 77 => 0x0, 95 => 0x9204, 111 => 0x24, 125 => 'ExposureComp', 147 => 0xd, 148 => 0x53, 149 => 0x1e, 153 => 0x49c0, 238 => 0x1006, 283 => 0x16, 311 => 0xa013, 314 => [0xc,0x35,0x4d], 338 => 0x114c, 339 => 0x114c, 340 => 0x1128, 342 => 0x1180, 343 => 0x1038, 344 => 0x230, 374 => 'ExposureBiasValue' },
-	'exposurecompensation2' => { 335 => 0x2a },
+	'exposurecompensation' => { 62 => 0x6, 77 => 0x0, 95 => 0x9204, 111 => 0x24, 125 => 'ExposureComp', 147 => 0xd, 148 => 0x53, 149 => 0x1e, 153 => 0x49c0, 238 => 0x1006, 284 => 0x16, 312 => 0xa013, 315 => [0xc,0x35,0x4d], 342 => 0x114c, 343 => 0x114c, 344 => 0x1128, 346 => 0x1180, 347 => 0x1038, 348 => 0x230, 380 => 'ExposureBiasValue' },
+	'exposurecompensation2' => { 339 => 0x2a },
 	'exposurecompensationmode' => { 150 => 0x47, 153 => 0x2a },
-	'exposurecompensationset' => { 321 => 0x3, 335 => 0x1e },
+	'exposurecompensationset' => { 325 => 0x3, 339 => 0x1e },
 	'exposurecompensationsetting' => { 150 => 0x1 },
 	'exposurecompstepsize' => { 222 => '6.3', 227 => '4.3' },
 	'exposurecontrolstep' => { 228 => '6.1' },
@@ -1617,16 +1672,16 @@ my %tagLookup = (
 	'exposurecount' => { 100 => 0x1032 },
 	'exposuredelaymode' => { 222 => '10.1', 224 => '9.1', 225 => '10.1', 226 => '10.1', 227 => '10.4', 228 => '10.1', 229 => '6.4', 231 => '11.2' },
 	'exposuredifference' => { 182 => 0xe },
-	'exposureindex' => { 95 => 0xa215, 374 => 'ExposureIndex' },
+	'exposureindex' => { 95 => 0xa215, 380 => 'ExposureIndex' },
 	'exposureindicator' => { 150 => 0x50 },
-	'exposurelevelincrements' => { 66 => 0x6, 67 => 0x6, 68 => 0x101, 69 => 0x5, 70 => 0x6, 71 => 0x5, 72 => 0x5, 73 => 0x6, 74 => 0x4, 319 => 0x58, 320 => 0x58 },
-	'exposurelockused' => { 360 => 'ExposureLockUsed' },
-	'exposuremode' => { 95 => 0xa402, 125 => 'ExposureMode', 147 => 0x1, 148 => 0xa, 149 => 0x0, 150 => 0x0, 153 => 0x34, 233 => 0x200, 250 => 0x40d, 314 => 0x8, 331 => 0xb041, 374 => 'ExposureMode' },
+	'exposurelevelincrements' => { 66 => 0x6, 67 => 0x6, 68 => 0x101, 69 => 0x5, 70 => 0x6, 71 => 0x5, 72 => 0x5, 73 => 0x6, 74 => 0x4, 323 => 0x58, 324 => 0x58 },
+	'exposurelockused' => { 366 => 'ExposureLockUsed' },
+	'exposuremode' => { 95 => 0xa402, 125 => 'ExposureMode', 147 => 0x1, 148 => 0xa, 149 => 0x0, 150 => 0x0, 153 => 0x34, 233 => 0x200, 251 => 0x40d, 315 => 0x8, 335 => 0xb041, 380 => 'ExposureMode' },
 	'exposuremodeinmanual' => { 68 => 0x10b },
-	'exposureprogram' => { 95 => 0x8822, 305 => 0x1001, 315 => 0x17e, 319 => 0x3c, 320 => 0x3c, 321 => 0x5, 325 => 0x14, 330 => 0x3f, 335 => 0x2, 338 => 0x1175, 339 => 0x1179, 340 => 0x1155, 341 => 0x11d1, 342 => 0x11ad, 343 => 0x1065, 344 => 0x25d, 352 => 0x48, 374 => 'ExposureProgram' },
+	'exposureprogram' => { 95 => 0x8822, 306 => 0x1001, 316 => 0x17e, 323 => 0x3c, 324 => 0x3c, 325 => 0x5, 329 => 0x14, 334 => 0x3f, 339 => 0x2, 342 => 0x1175, 343 => 0x1179, 344 => 0x1155, 345 => 0x11d1, 346 => 0x11ad, 347 => 0x1065, 348 => 0x25d, 358 => 0x48, 380 => 'ExposureProgram' },
 	'exposureshift' => { 233 => 0x203 },
-	'exposuretime' => { 5 => 0x4, 6 => 0x4, 7 => 0x4, 8 => 0x4, 9 => 0x4, 10 => 0x4, 11 => 0x4, 12 => 0x4, 13 => 0x4, 14 => 0x4, 15 => 0x4, 16 => 0x4, 17 => 0x4, 18 => 0x4, 19 => 0x4, 20 => 0x4, 21 => 0x4, 22 => 0x4, 23 => 0x4, 24 => 0x4, 25 => 0x4, 26 => 0x6, 27 => 0x7, 62 => 0x16, 95 => 0x829a, 108 => 0xfd05, 111 => 0x20, 113 => 0xfa24, 115 => 0xf104, 118 => 0x12, 120 => 0x38, 123 => 0x10, 125 => 'ExposureTime', 147 => 0x9, 148 => 0x35, 149 => 0x48, 150 => 0x8, 153 => 0x49b8, 283 => 0x12, 311 => 0xa018, 314 => [0x32,0x4a], 319 => 0x0, 320 => 0x0, 335 => 0x27, 352 => 0x10, 374 => 'ExposureTime' },
-	'exposuretime2' => { 314 => [0x33,0x4b] },
+	'exposuretime' => { 5 => 0x4, 6 => 0x4, 7 => 0x4, 8 => 0x4, 9 => 0x4, 10 => 0x4, 11 => 0x4, 12 => 0x4, 13 => 0x4, 14 => 0x4, 15 => 0x4, 16 => 0x4, 17 => 0x4, 18 => 0x4, 19 => 0x4, 20 => 0x4, 21 => 0x4, 22 => 0x4, 23 => 0x4, 24 => 0x4, 25 => 0x4, 26 => 0x6, 27 => 0x7, 62 => 0x16, 95 => 0x829a, 108 => 0xfd05, 111 => 0x20, 113 => 0xfa24, 115 => 0xf104, 118 => 0x12, 120 => 0x38, 123 => 0x10, 125 => 'ExposureTime', 147 => 0x9, 148 => 0x35, 149 => 0x48, 150 => 0x8, 153 => 0x49b8, 284 => 0x12, 312 => 0xa018, 315 => [0x32,0x4a], 323 => 0x0, 324 => 0x0, 339 => 0x27, 358 => 0x10, 380 => 'ExposureTime' },
+	'exposuretime2' => { 315 => [0x33,0x4b] },
 	'exposuretuning' => { 182 => 0x1c },
 	'exposurevalue' => { 109 => 0x3 },
 	'exposurewarning' => { 100 => 0x1302 },
@@ -1644,94 +1699,94 @@ my %tagLookup = (
 	'externalflashae1_0' => { 238 => 0x101b },
 	'externalflashae2' => { 238 => 0x1020 },
 	'externalflashae2_0' => { 238 => 0x101c },
-	'externalflashbounce' => { 236 => 0x1204, 238 => 0x1026, 271 => 0x1a },
+	'externalflashbounce' => { 236 => 0x1204, 238 => 0x1026, 272 => 0x1a },
 	'externalflashcompensation' => { 173 => 0x1b },
-	'externalflashexposurecomp' => { 182 => 0x17, 271 => 0x19 },
+	'externalflashexposurecomp' => { 182 => 0x17, 272 => 0x19 },
 	'externalflashfirmware' => { 171 => 0x6, 172 => 0x6, 173 => 0x6 },
 	'externalflashflags' => { 171 => 0x8, 172 => 0x8, 173 => 0x8 },
-	'externalflashguidenumber' => { 236 => 0x1203, 271 => '24.1' },
+	'externalflashguidenumber' => { 236 => 0x1203, 272 => '24.1' },
 	'externalflashgvalue' => { 238 => 0x1025 },
-	'externalflashmode' => { 238 => 0x1028, 271 => 0x2 },
+	'externalflashmode' => { 238 => 0x1028, 272 => 0x2 },
 	'externalflashzoom' => { 236 => 0x1205, 238 => 0x1027 },
-	'externalsensorbrightnessvalue' => { 248 => 0x311, 254 => 0x3408 },
-	'extrainfoversion' => { 323 => 0x1a },
+	'externalsensorbrightnessvalue' => { 249 => 0x311, 255 => 0x3408 },
+	'extrainfoversion' => { 327 => 0x1a },
 	'eyestartaf' => { 150 => 0x40 },
-	'face10position' => { 88 => 0x3f4, 89 => 0x1ec, 169 => 0x28, 268 => 0x12 },
-	'face10size' => { 269 => 0x12 },
-	'face11position' => { 169 => 0x2c, 268 => 0x14 },
-	'face11size' => { 269 => 0x14 },
-	'face12position' => { 169 => 0x30, 268 => 0x16 },
-	'face12size' => { 269 => 0x16 },
-	'face13position' => { 268 => 0x18 },
-	'face13size' => { 269 => 0x18 },
-	'face14position' => { 268 => 0x1a },
-	'face14size' => { 269 => 0x1a },
-	'face15position' => { 268 => 0x1c },
-	'face15size' => { 269 => 0x1c },
-	'face16position' => { 268 => 0x1e },
-	'face16size' => { 269 => 0x1e },
-	'face17position' => { 268 => 0x20 },
-	'face17size' => { 269 => 0x20 },
-	'face18position' => { 268 => 0x22 },
-	'face18size' => { 269 => 0x22 },
-	'face19position' => { 268 => 0x24 },
-	'face19size' => { 269 => 0x24 },
-	'face1position' => { 43 => 0x8, 88 => 0xd, 89 => 0x18, 169 => 0x4, 246 => 0x1, 268 => 0x0, 302 => 0xbc, 326 => 0x1, 327 => 0x0, 328 => 0x0, 329 => 0x5b },
-	'face1size' => { 269 => 0x0 },
-	'face20position' => { 268 => 0x26 },
-	'face20size' => { 269 => 0x26 },
-	'face21position' => { 268 => 0x28 },
-	'face21size' => { 269 => 0x28 },
-	'face22position' => { 268 => 0x2a },
-	'face22size' => { 269 => 0x2a },
-	'face23position' => { 268 => 0x2c },
-	'face23size' => { 269 => 0x2c },
-	'face24position' => { 268 => 0x2e },
-	'face24size' => { 269 => 0x2e },
-	'face25position' => { 268 => 0x30 },
-	'face25size' => { 269 => 0x30 },
-	'face26position' => { 268 => 0x32 },
-	'face26size' => { 269 => 0x32 },
-	'face27position' => { 268 => 0x34 },
-	'face27size' => { 269 => 0x34 },
-	'face28position' => { 268 => 0x36 },
-	'face28size' => { 269 => 0x36 },
-	'face29position' => { 268 => 0x38 },
-	'face29size' => { 269 => 0x38 },
-	'face2position' => { 43 => 0xa, 88 => 0x7c, 89 => 0x4c, 169 => 0x8, 246 => 0x5, 268 => 0x2, 302 => 0xc8, 326 => 0x6, 327 => 0x20, 328 => 0x25, 329 => 0x65 },
-	'face2size' => { 269 => 0x2 },
-	'face30position' => { 268 => 0x3a },
-	'face30size' => { 269 => 0x3a },
-	'face31position' => { 268 => 0x3c },
-	'face31size' => { 269 => 0x3c },
-	'face32position' => { 268 => 0x3e },
-	'face32size' => { 269 => 0x3e },
-	'face3position' => { 43 => 0xc, 88 => 0xeb, 89 => 0x80, 169 => 0xc, 246 => 0x9, 268 => 0x4, 302 => 0xd4, 326 => 0xb, 327 => 0x40, 328 => 0x4a, 329 => 0x6f },
-	'face3size' => { 269 => 0x4 },
-	'face4position' => { 43 => 0xe, 88 => 0x15a, 89 => 0xb4, 169 => 0x10, 246 => 0xd, 268 => 0x6, 302 => 0xe0, 326 => 0x10, 327 => 0x60, 328 => 0x6f, 329 => 0x79 },
-	'face4size' => { 269 => 0x6 },
-	'face5position' => { 43 => 0x10, 88 => 0x1c9, 89 => 0xe8, 169 => 0x14, 246 => 0x11, 268 => 0x8, 302 => 0xec, 326 => 0x15, 327 => 0x80, 328 => 0x94 },
-	'face5size' => { 269 => 0x8 },
-	'face6position' => { 43 => 0x12, 88 => 0x238, 89 => 0x11c, 169 => 0x18, 268 => 0xa, 302 => 0xf8, 326 => 0x1a, 327 => 0xa0, 328 => 0xb9 },
-	'face6size' => { 269 => 0xa },
-	'face7position' => { 43 => 0x14, 88 => 0x2a7, 89 => 0x150, 169 => 0x1c, 268 => 0xc, 302 => 0x104, 326 => 0x1f, 327 => 0xc0, 328 => 0xde },
-	'face7size' => { 269 => 0xc },
-	'face8position' => { 43 => 0x16, 88 => 0x316, 89 => 0x184, 169 => 0x20, 268 => 0xe, 302 => 0x110, 326 => 0x24, 327 => 0xe0, 328 => 0x103 },
-	'face8size' => { 269 => 0xe },
-	'face9position' => { 43 => 0x18, 88 => 0x385, 89 => 0x1b8, 169 => 0x24, 268 => 0x10 },
-	'face9size' => { 269 => 0x10 },
-	'facedetect' => { 283 => 0x76 },
+	'face10position' => { 88 => 0x3f4, 89 => 0x1ec, 169 => 0x28, 269 => 0x12 },
+	'face10size' => { 270 => 0x12 },
+	'face11position' => { 169 => 0x2c, 269 => 0x14 },
+	'face11size' => { 270 => 0x14 },
+	'face12position' => { 169 => 0x30, 269 => 0x16 },
+	'face12size' => { 270 => 0x16 },
+	'face13position' => { 269 => 0x18 },
+	'face13size' => { 270 => 0x18 },
+	'face14position' => { 269 => 0x1a },
+	'face14size' => { 270 => 0x1a },
+	'face15position' => { 269 => 0x1c },
+	'face15size' => { 270 => 0x1c },
+	'face16position' => { 269 => 0x1e },
+	'face16size' => { 270 => 0x1e },
+	'face17position' => { 269 => 0x20 },
+	'face17size' => { 270 => 0x20 },
+	'face18position' => { 269 => 0x22 },
+	'face18size' => { 270 => 0x22 },
+	'face19position' => { 269 => 0x24 },
+	'face19size' => { 270 => 0x24 },
+	'face1position' => { 43 => 0x8, 88 => 0xd, 89 => 0x18, 169 => 0x4, 247 => 0x1, 269 => 0x0, 303 => 0xbc, 330 => 0x1, 331 => 0x0, 332 => 0x0, 333 => 0x5b },
+	'face1size' => { 270 => 0x0 },
+	'face20position' => { 269 => 0x26 },
+	'face20size' => { 270 => 0x26 },
+	'face21position' => { 269 => 0x28 },
+	'face21size' => { 270 => 0x28 },
+	'face22position' => { 269 => 0x2a },
+	'face22size' => { 270 => 0x2a },
+	'face23position' => { 269 => 0x2c },
+	'face23size' => { 270 => 0x2c },
+	'face24position' => { 269 => 0x2e },
+	'face24size' => { 270 => 0x2e },
+	'face25position' => { 269 => 0x30 },
+	'face25size' => { 270 => 0x30 },
+	'face26position' => { 269 => 0x32 },
+	'face26size' => { 270 => 0x32 },
+	'face27position' => { 269 => 0x34 },
+	'face27size' => { 270 => 0x34 },
+	'face28position' => { 269 => 0x36 },
+	'face28size' => { 270 => 0x36 },
+	'face29position' => { 269 => 0x38 },
+	'face29size' => { 270 => 0x38 },
+	'face2position' => { 43 => 0xa, 88 => 0x7c, 89 => 0x4c, 169 => 0x8, 247 => 0x5, 269 => 0x2, 303 => 0xc8, 330 => 0x6, 331 => 0x20, 332 => 0x25, 333 => 0x65 },
+	'face2size' => { 270 => 0x2 },
+	'face30position' => { 269 => 0x3a },
+	'face30size' => { 270 => 0x3a },
+	'face31position' => { 269 => 0x3c },
+	'face31size' => { 270 => 0x3c },
+	'face32position' => { 269 => 0x3e },
+	'face32size' => { 270 => 0x3e },
+	'face3position' => { 43 => 0xc, 88 => 0xeb, 89 => 0x80, 169 => 0xc, 247 => 0x9, 269 => 0x4, 303 => 0xd4, 330 => 0xb, 331 => 0x40, 332 => 0x4a, 333 => 0x6f },
+	'face3size' => { 270 => 0x4 },
+	'face4position' => { 43 => 0xe, 88 => 0x15a, 89 => 0xb4, 169 => 0x10, 247 => 0xd, 269 => 0x6, 303 => 0xe0, 330 => 0x10, 331 => 0x60, 332 => 0x6f, 333 => 0x79 },
+	'face4size' => { 270 => 0x6 },
+	'face5position' => { 43 => 0x10, 88 => 0x1c9, 89 => 0xe8, 169 => 0x14, 247 => 0x11, 269 => 0x8, 303 => 0xec, 330 => 0x15, 331 => 0x80, 332 => 0x94 },
+	'face5size' => { 270 => 0x8 },
+	'face6position' => { 43 => 0x12, 88 => 0x238, 89 => 0x11c, 169 => 0x18, 269 => 0xa, 303 => 0xf8, 330 => 0x1a, 331 => 0xa0, 332 => 0xb9 },
+	'face6size' => { 270 => 0xa },
+	'face7position' => { 43 => 0x14, 88 => 0x2a7, 89 => 0x150, 169 => 0x1c, 269 => 0xc, 303 => 0x104, 330 => 0x1f, 331 => 0xc0, 332 => 0xde },
+	'face7size' => { 270 => 0xc },
+	'face8position' => { 43 => 0x16, 88 => 0x316, 89 => 0x184, 169 => 0x20, 269 => 0xe, 303 => 0x110, 330 => 0x24, 331 => 0xe0, 332 => 0x103 },
+	'face8size' => { 270 => 0xe },
+	'face9position' => { 43 => 0x18, 88 => 0x385, 89 => 0x1b8, 169 => 0x24, 269 => 0x10 },
+	'face9size' => { 270 => 0x10 },
+	'facedetect' => { 284 => 0x76 },
 	'facedetectarea' => { 237 => 0x1201 },
 	'facedetectframecrop' => { 237 => 0x1207 },
-	'facedetectframesize' => { 43 => 0x3, 88 => 0x1, 89 => 0x4, 169 => 0x1, 237 => 0x1203, 283 => 0x77, 302 => 0xb6 },
-	'facedetection' => { 321 => 0x30, 335 => 0x19 },
-	'faceid' => { 366 => 'FaceID' },
+	'facedetectframesize' => { 43 => 0x3, 88 => 0x1, 89 => 0x4, 169 => 0x1, 237 => 0x1203, 284 => 0x77, 303 => 0xb6 },
+	'facedetection' => { 325 => 0x30, 339 => 0x19 },
+	'faceid' => { 372 => 'FaceID' },
 	'faceinfounknown' => { 91 => 0x2089 },
 	'faceorientation' => { 89 => 0x8 },
-	'faceposition' => { 267 => 0x2, 312 => 0x4 },
+	'faceposition' => { 268 => 0x2, 313 => 0x4 },
 	'facepositions' => { 100 => 0x4103 },
-	'facesdetected' => { 43 => 0x2, 44 => 0x2, 45 => 0x3, 88 => 0x0, 89 => 0x2, 91 => 0x211c, 100 => 0x4100, 169 => 0x3, 237 => 0x1200, 252 => 0x3f, 267 => 0x0, 302 => 0xb5, 312 => 0x0, 326 => 0x0, 329 => 0x3, 337 => 0x30 },
-	'facesrecognized' => { 247 => 0x0 },
+	'facesdetected' => { 43 => 0x2, 44 => 0x2, 45 => 0x3, 88 => 0x0, 89 => 0x2, 91 => 0x211c, 100 => 0x4100, 169 => 0x3, 237 => 0x1200, 253 => 0x3f, 268 => 0x0, 303 => 0xb5, 313 => 0x0, 330 => 0x0, 333 => 0x3, 341 => 0x30 },
+	'facesrecognized' => { 248 => 0x0 },
 	'facewidth' => { 44 => 0x1 },
 	'faithfuloutputhighlightpoint' => { 87 => 0x38 },
 	'faithfuloutputshadowpoint' => { 87 => 0x39 },
@@ -1748,25 +1803,25 @@ my %tagLookup = (
 	'faithfulunsharpmaskstrength' => { 87 => 0xaa },
 	'faithfulunsharpmaskthreshold' => { 87 => 0xae },
 	'femicroadjustment' => { 68 => 0x110 },
-	'ffid' => { 372 => 'ffid' },
+	'ffid' => { 378 => 'ffid' },
 	'fieldcount' => { 238 => 0x103f },
 	'filecreatedate' => { 96 => 'FileCreateDate' },
-	'filedatarate' => { 393 => 'fileDataRate' },
-	'fileformat' => { 79 => 0x0, 104 => 0x14, 314 => [0x22,0x26], 331 => 0xb000 },
-	'fileindex' => { 5 => 0x143, 7 => 0x2d0, 9 => 0x172, 11 => 0x22c, 12 => 0x133, 13 => 0x13f, 14 => 0x1d3, 15 => 0x19b, 16 => 0x1e4, 17 => 0xd0, 18 => 0x1bb, 19 => 0x28c, 20 => 0x1db, 21 => 0x1d9, 22 => [0x270,0x274], 23 => 0x2aa, 24 => 0x2b3, 25 => 0x1eb, 253 => 0x0 },
+	'filedatarate' => { 399 => 'fileDataRate' },
+	'fileformat' => { 79 => 0x0, 104 => 0x14, 315 => [0x22,0x26], 335 => 0xb000 },
+	'fileindex' => { 5 => 0x143, 7 => 0x2d0, 9 => 0x172, 11 => 0x22c, 12 => 0x133, 13 => 0x13f, 14 => 0x1d3, 15 => 0x19b, 16 => 0x1e4, 17 => 0xd0, 18 => 0x1bb, 19 => 0x28c, 20 => 0x1db, 21 => 0x1d9, 22 => [0x270,0x274], 23 => 0x2aa, 24 => 0x2b3, 25 => 0x1eb, 254 => 0x0 },
 	'fileindex2' => { 19 => 0x290 },
 	'filemodifydate' => { 96 => 'FileModifyDate' },
 	'filename' => { 96 => 'FileName' },
-	'filenameasdelivered' => { 383 => 'FileNameAsDelivered' },
+	'filenameasdelivered' => { 389 => 'FileNameAsDelivered' },
 	'filenumber' => { 46 => 0x1, 51 => 0x8, 81 => 0x1817, 92 => 'FileNumber', 170 => 0x8 },
 	'filenumbermemory' => { 147 => 0x1a },
 	'filenumbersequence' => { 222 => '12.2', 224 => '3.1', 225 => '4.1', 226 => '4.1', 227 => '11.1', 228 => '4.3', 231 => '5.2' },
-	'filesource' => { 95 => 0xa300, 100 => 0x8000, 374 => 'FileSource' },
+	'filesource' => { 95 => 0xa300, 100 => 0x8000, 380 => 'FileSource' },
 	'fileversion' => { 104 => 0x16 },
 	'fillflashautoreduction' => { 66 => 0xe, 67 => 0xe, 74 => 0xa },
-	'filllight' => { 370 => 'FillLight' },
+	'filllight' => { 376 => 'FillLight' },
 	'fillorder' => { 95 => 0x10a },
-	'filmmode' => { 100 => 0x1401, 250 => 0x412, 252 => 0x42 },
+	'filmmode' => { 100 => 0x1401, 251 => 0x412, 253 => 0x42 },
 	'filmtype' => { 187 => 0x2 },
 	'filtereffect' => { 46 => 0xe, 184 => 0x37 },
 	'filtereffectauto' => { 57 => 0xa0 },
@@ -1780,56 +1835,56 @@ my %tagLookup = (
 	'filtereffectuserdef2' => { 56 => 0xb8, 57 => 0xd0 },
 	'filtereffectuserdef3' => { 56 => 0xd0, 57 => 0xe8 },
 	'finderdisplayduringexposure' => { 67 => 0x1 },
-	'finesharpness' => { 283 => 0x70 },
+	'finesharpness' => { 284 => 0x70 },
 	'finetuneoptcenterweighted' => { 222 => '7.2', 231 => '9.1' },
 	'finetuneoptmatrixmetering' => { 222 => '8.1', 227 => '6.1', 231 => '8.2' },
 	'finetuneoptspotmetering' => { 222 => '8.2', 227 => '6.2', 231 => '9.2' },
-	'firmware' => { 238 => 0x405, 314 => [0x17,0x3b,0x57], 367 => 'Firmware' },
-	'firmwaredate' => { 90 => 0x15, 91 => 0x2001, 301 => 0x4 },
+	'firmware' => { 238 => 0x405, 315 => [0x17,0x3b,0x57], 373 => 'Firmware' },
+	'firmwaredate' => { 90 => 0x15, 91 => 0x2001, 302 => 0x4 },
 	'firmwareid' => { 154 => 0x0 },
-	'firmwarename' => { 311 => 0xa001 },
-	'firmwarerevision' => { 17 => 0xa4, 51 => 0x1e, 303 => 0x0 },
-	'firmwarerevision2' => { 303 => 0xc },
-	'firmwareversion' => { 5 => 0x10b, 9 => 0x136, 12 => 0xff, 13 => 0x107, 109 => 0xce5, 123 => 0x57, 125 => 'FirmwareVersion', 252 => 0x2, 254 => 0x3109, 283 => 0x230, 305 => 0x2 },
-	'firstphotodate' => { 360 => 'FirstPhotoDate' },
-	'firstpublicationdate' => { 383 => 'FirstPublicationDate' },
+	'firmwarename' => { 312 => 0xa001 },
+	'firmwarerevision' => { 17 => 0xa4, 51 => 0x1e, 304 => 0x0 },
+	'firmwarerevision2' => { 304 => 0xc },
+	'firmwareversion' => { 5 => 0x10b, 9 => 0x136, 12 => 0xff, 13 => 0x107, 109 => 0xce5, 123 => 0x57, 125 => 'FirmwareVersion', 253 => 0x2, 255 => 0x3109, 284 => 0x230, 306 => 0x2 },
+	'firstphotodate' => { 366 => 'FirstPhotoDate' },
+	'firstpublicationdate' => { 389 => 'FirstPublicationDate' },
 	'fixtureidentifier' => { 103 => 0x16 },
-	'flash' => { 92 => 'Flash', 95 => 0x9209, 148 => 0x1f, 149 => 0x15, 374 => 'Flash' },
-	'flashaction' => { 321 => [0x87,0x287] },
-	'flashaction2' => { 335 => 0x30 },
+	'flash' => { 92 => 'Flash', 95 => 0x9209, 148 => 0x1f, 149 => 0x15, 380 => 'Flash' },
+	'flashaction' => { 325 => [0x87,0x287] },
+	'flashaction2' => { 339 => 0x30 },
 	'flashactivity' => { 29 => 0x1c },
 	'flashbatterylevel' => { 35 => 0x249 },
-	'flashbias' => { 252 => 0x24 },
+	'flashbias' => { 253 => 0x24 },
 	'flashbits' => { 29 => 0x1d },
 	'flashbuttonfunction' => { 68 => 0x70e },
 	'flashchargelevel' => { 238 => 0x1010 },
 	'flashcolorfilter' => { 173 => 0x10 },
 	'flashcommandermode' => { 171 => '9.1', 172 => '9.1', 173 => '9.1' },
-	'flashcompensation' => { 171 => 0xa, 172 => 0xa, 173 => 0xa, 367 => 'FlashCompensation' },
-	'flashcontrol' => { 321 => 0x21 },
+	'flashcompensation' => { 171 => 0xa, 172 => 0xa, 173 => 0xa, 373 => 'FlashCompensation' },
+	'flashcontrol' => { 325 => 0x21 },
 	'flashcontrolbuilt-in' => { 227 => '16.1', 228 => '23.1', 230 => '23.1' },
 	'flashcontrolmode' => { 171 => '9.2', 172 => '9.2', 173 => '9.2', 233 => 0x404 },
-	'flashcurtain' => { 252 => 0x48 },
+	'flashcurtain' => { 253 => 0x48 },
 	'flashdefault' => { 150 => 0x42 },
 	'flashdevice' => { 238 => 0x1005 },
 	'flashdistance' => { 91 => 0x2034 },
-	'flashenergy' => { 95 => 0xa20b, 374 => 'FlashEnergy' },
+	'flashenergy' => { 95 => 0xa20b, 380 => 'FlashEnergy' },
 	'flashexposurebracketvalue' => { 182 => 0x18 },
-	'flashexposurecomp' => { 62 => 0xf, 100 => 0x1011, 128 => 'ExposureComp', 147 => 0x23, 152 => 0x104, 153 => 0x49c1, 182 => 0x12, 233 => 0x401, 238 => 0x1023, 283 => 0x4d, 305 => 0x100b, 314 => [0x3a,0x56], 331 => 0x104 },
+	'flashexposurecomp' => { 62 => 0xf, 100 => 0x1011, 128 => 'ExposureComp', 147 => 0x23, 152 => 0x104, 153 => 0x49c1, 182 => 0x12, 233 => 0x401, 238 => 0x1023, 284 => 0x4d, 306 => 0x100b, 315 => [0x3a,0x56], 335 => 0x104 },
 	'flashexposurecomp2' => { 203 => 0x4d2 },
 	'flashexposurecomp3' => { 173 => 0x1d },
 	'flashexposurecomp4' => { 173 => 0x27 },
-	'flashexposurecompset' => { 150 => 0x10, 257 => 0xe, 321 => 0x23, 335 => 0x1f },
-	'flashexposurecompset2' => { 335 => 0x2c },
+	'flashexposurecompset' => { 150 => 0x10, 258 => 0xe, 325 => 0x23, 339 => 0x1f },
+	'flashexposurecompset2' => { 339 => 0x2c },
 	'flashexposureindicator' => { 150 => 0x54 },
 	'flashexposureindicatorlast' => { 150 => 0x56 },
 	'flashexposureindicatornext' => { 150 => 0x55 },
 	'flashexposurelock' => { 46 => 0x19 },
-	'flashfired' => { 111 => 0x5d, 128 => 'Fired', 147 => 0x14, 202 => '590.3', 252 => 0x8007, 374 => [\'Flash','FlashFired'] },
+	'flashfired' => { 111 => 0x5d, 128 => 'Fired', 147 => 0x14, 202 => '590.3', 253 => 0x8007, 380 => [\'Flash','FlashFired'] },
 	'flashfiring' => { 68 => 0x306, 69 => 0x6, 70 => 0x7, 73 => 0x7 },
 	'flashfirmwareversion' => { 234 => 0x1002 },
 	'flashfocallength' => { 171 => 0xb, 172 => 0xc, 173 => 0xc },
-	'flashfunction' => { 153 => 0x31, 374 => [\'Flash','FlashFunction'] },
+	'flashfunction' => { 153 => 0x31, 380 => [\'Flash','FlashFunction'] },
 	'flashgndistance' => { 171 => 0xe, 172 => 0xf, 173 => 0xf },
 	'flashgroupacompensation' => { 171 => 0x11, 172 => 0x12, 173 => 0x13 },
 	'flashgroupacontrolmode' => { 171 => 0xf, 172 => '16.1', 173 => '17.1' },
@@ -1842,45 +1897,45 @@ my %tagLookup = (
 	'flashgroupcoutput' => { 172 => 0x14, 173 => 0x15 },
 	'flashguidenumber' => { 62 => 0xd, 78 => 0x0, 128 => 'GuideNumber' },
 	'flashintensity' => { 90 => [0x19,0x5], 233 => 0x405 },
-	'flashlevel' => { 223 => 0x9, 331 => 0xb048 },
+	'flashlevel' => { 223 => 0x9, 335 => 0xb048 },
 	'flashmake' => { 128 => 'Make' },
 	'flashmanufacturer' => { 145 => 'FlashManufacturer' },
 	'flashmetering' => { 147 => 0x3f, 150 => 0x1c },
 	'flashmeteringmode' => { 5 => 0x15, 11 => 0x15, 12 => 0x15, 13 => 0x15, 14 => 0x15, 15 => 0x15, 16 => 0x15, 18 => 0x15, 20 => 0x15, 25 => 0x15 },
-	'flashmeteringsegments' => { 283 => 0x20a },
-	'flashmode' => { 90 => 0x4, 111 => 0x5c, 128 => 'Mode', 147 => 0x2, 148 => 0x20, 149 => 0x16, 150 => 0xf, 182 => 0x87, 233 => 0x400, 238 => 0x1004, 283 => 0xc, 289 => 0x4, 304 => 0x20, 305 => 0x100a, 313 => 0x225, 319 => 0x23, 320 => 0x1f, 321 => 0x20, 335 => 0x10, 374 => [\'Flash','FlashMode'] },
+	'flashmeteringsegments' => { 284 => 0x20a },
+	'flashmode' => { 90 => 0x4, 111 => 0x5c, 128 => 'Mode', 147 => 0x2, 148 => 0x20, 149 => 0x16, 150 => 0xf, 182 => 0x87, 233 => 0x400, 238 => 0x1004, 284 => 0xc, 290 => 0x4, 305 => 0x20, 306 => 0x100a, 314 => 0x225, 323 => 0x23, 324 => 0x1f, 325 => 0x20, 339 => 0x10, 380 => [\'Flash','FlashMode'] },
 	'flashmodel' => { 128 => 'Model', 145 => 'FlashModel', 234 => 0x1001 },
-	'flashoptions' => { 264 => 0x2 },
-	'flashoptions2' => { 264 => 0x10 },
+	'flashoptions' => { 265 => 0x2 },
+	'flashoptions2' => { 265 => 0x10 },
 	'flashoutput' => { 35 => 0x248, 62 => 0x21, 171 => 0xa, 172 => 0xa, 173 => 0xa },
-	'flashpixversion' => { 95 => 0xa000, 374 => 'FlashpixVersion' },
-	'flashredeyemode' => { 374 => [\'Flash','FlashRedEyeMode'] },
+	'flashpixversion' => { 95 => 0xa000, 380 => 'FlashpixVersion' },
+	'flashredeyemode' => { 380 => [\'Flash','FlashRedEyeMode'] },
 	'flashremotecontrol' => { 233 => 0x403 },
-	'flashreturn' => { 374 => [\'Flash','FlashReturn'] },
+	'flashreturn' => { 380 => [\'Flash','FlashReturn'] },
 	'flashserialnumber' => { 128 => 'SerialNumber', 234 => 0x1003 },
 	'flashsetting' => { 182 => 0x8 },
 	'flashshutterspeed' => { 222 => '20.2', 227 => '15.2', 228 => '22.2', 229 => '7.2', 230 => '22.2', 231 => '23.1' },
 	'flashsource' => { 171 => 0x4, 172 => 0x4, 173 => 0x4 },
-	'flashstatus' => { 271 => 0x0, 345 => 0x31 },
+	'flashstatus' => { 272 => 0x0, 349 => 0x31 },
 	'flashsyncspeed' => { 222 => '20.1', 227 => '15.1', 228 => '22.1', 230 => '22.1' },
 	'flashsyncspeedav' => { 66 => 0x3, 68 => 0x10f, 69 => 0x2, 70 => 0x3, 71 => 0x2, 72 => 0x2, 73 => 0x3, 74 => 0x6 },
 	'flashthreshold' => { 78 => 0x1 },
 	'flashtype' => { 128 => 'Type', 150 => 0x59, 182 => 0x9, 234 => 0x1000 },
-	'flashwarning' => { 228 => '30.1', 229 => '7.1', 231 => '31.1', 252 => 0x62 },
-	'flexiblespotposition' => { 331 => 0x201d },
-	'flickerreduce' => { 313 => 0x218 },
+	'flashwarning' => { 228 => '30.1', 229 => '7.1', 231 => '31.1', 253 => 0x62 },
+	'flexiblespotposition' => { 335 => 0x201d },
+	'flickerreduce' => { 314 => 0x218 },
 	'fliphorizontal' => { 215 => 0x76a43206 },
-	'fnumber' => { 5 => 0x3, 7 => 0x3, 9 => 0x3, 11 => 0x3, 12 => 0x3, 13 => 0x3, 14 => 0x3, 15 => 0x3, 16 => 0x3, 17 => 0x3, 18 => 0x3, 19 => 0x3, 20 => 0x3, 21 => 0x3, 22 => 0x3, 23 => 0x3, 24 => 0x3, 25 => 0x3, 26 => 0x5, 27 => 0x6, 62 => 0x15, 95 => 0x829d, 108 => 0xfd04, 111 => 0x1e, 113 => 0xfa23, 115 => 0xf103, 118 => 0x13, 120 => 0x3c, 123 => 0xc, 132 => 'FNumber', 147 => 0xa, 148 => 0x36, 149 => 0x47, 150 => 0x9, 153 => 0x49c7, 283 => 0x13, 311 => 0xa019, 314 => [0x31,0x49], 319 => 0x1, 320 => 0x1, 335 => 0x26, 374 => 'FNumber' },
-	'focallength' => { 5 => 0x1d, 6 => 0xa, 7 => 0x23, 8 => 0x9, 9 => 0x1d, 10 => 0x9, 11 => 0x1e, 12 => 0x1d, 13 => 0x1d, 14 => 0x1e, 15 => 0x1e, 16 => 0x1e, 17 => 0x28, 18 => 0x1e, 19 => 0x23, 20 => 0x1e, 21 => 0x1e, 22 => 0x23, 23 => 0x23, 24 => 0x23, 25 => 0x1e, 48 => 0x1, 91 => 0x1d, 95 => 0x920a, 118 => 0x1d, 132 => 'FocalLength', 147 => 0x12, 178 => 0xa, 179 => 0xb, 274 => 0x9, 283 => 0x1d, 305 => 0x1500, 317 => 0xe, 342 => 0x1278, 343 => 0x1134, 344 => 0x32c, 374 => 'FocalLength' },
-	'focallength2' => { 335 => 0x29 },
-	'focallengthin35mmformat' => { 95 => 0xa405, 311 => 0xa01a, 374 => 'FocalLengthIn35mmFilm' },
-	'focallengthtelezoom' => { 317 => 0x10 },
+	'fnumber' => { 5 => 0x3, 7 => 0x3, 9 => 0x3, 11 => 0x3, 12 => 0x3, 13 => 0x3, 14 => 0x3, 15 => 0x3, 16 => 0x3, 17 => 0x3, 18 => 0x3, 19 => 0x3, 20 => 0x3, 21 => 0x3, 22 => 0x3, 23 => 0x3, 24 => 0x3, 25 => 0x3, 26 => 0x5, 27 => 0x6, 62 => 0x15, 95 => 0x829d, 108 => 0xfd04, 111 => 0x1e, 113 => 0xfa23, 115 => 0xf103, 118 => 0x13, 120 => 0x3c, 123 => 0xc, 132 => 'FNumber', 147 => 0xa, 148 => 0x36, 149 => 0x47, 150 => 0x9, 153 => 0x49c7, 284 => 0x13, 312 => 0xa019, 315 => [0x31,0x49], 323 => 0x1, 324 => 0x1, 339 => 0x26, 380 => 'FNumber' },
+	'focallength' => { 5 => 0x1d, 6 => 0xa, 7 => 0x23, 8 => 0x9, 9 => 0x1d, 10 => 0x9, 11 => 0x1e, 12 => 0x1d, 13 => 0x1d, 14 => 0x1e, 15 => 0x1e, 16 => 0x1e, 17 => 0x28, 18 => 0x1e, 19 => 0x23, 20 => 0x1e, 21 => 0x1e, 22 => 0x23, 23 => 0x23, 24 => 0x23, 25 => 0x1e, 48 => 0x1, 91 => 0x1d, 95 => 0x920a, 118 => 0x1d, 132 => 'FocalLength', 147 => 0x12, 178 => 0xa, 179 => 0xb, 275 => 0x9, 284 => 0x1d, 306 => 0x1500, 322 => 0xe, 346 => 0x1278, 347 => 0x1134, 348 => 0x32c, 380 => 'FocalLength' },
+	'focallength2' => { 339 => 0x29 },
+	'focallengthin35mmformat' => { 95 => 0xa405, 312 => 0xa01a, 380 => 'FocalLengthIn35mmFilm' },
+	'focallengthtelezoom' => { 322 => 0x10 },
 	'focalplanediagonal' => { 234 => 0x103, 238 => 0x205 },
-	'focalplaneresolutionunit' => { 95 => 0xa210, 374 => 'FocalPlaneResolutionUnit' },
-	'focalplanexresolution' => { 95 => 0xa20e, 374 => 'FocalPlaneXResolution' },
+	'focalplaneresolutionunit' => { 95 => 0xa210, 380 => 'FocalPlaneResolutionUnit' },
+	'focalplanexresolution' => { 95 => 0xa20e, 380 => 'FocalPlaneXResolution' },
 	'focalplanexsize' => { 48 => 0x2 },
 	'focalplanexunknown' => { 48 => 0x2 },
-	'focalplaneyresolution' => { 95 => 0xa20f, 374 => 'FocalPlaneYResolution' },
+	'focalplaneyresolution' => { 95 => 0xa20f, 380 => 'FocalPlaneYResolution' },
 	'focalplaneysize' => { 48 => 0x3 },
 	'focalplaneyunknown' => { 48 => 0x3 },
 	'focaltype' => { 8 => 0x2d, 48 => 0x0 },
@@ -1897,50 +1952,50 @@ my %tagLookup = (
 	'focusinfoversion' => { 236 => 0x0 },
 	'focusingscreen' => { 67 => 0x0, 68 => 0x80b, 73 => 0x0 },
 	'focuslocked' => { 146 => 0x14 },
-	'focusmode' => { 29 => 0x7, 90 => 0x3, 91 => [0x3003,0xd], 100 => 0x1021, 111 => 0x38, 125 => 'FocusMode', 147 => 0x30, 149 => 0xe, 150 => 0xc, 182 => 0x7, 233 => 0x301, 238 => 0x100b, 252 => 0x7, 283 => 0xd, 289 => 0x3, 305 => 0x1006, 315 => 0xb, 317 => [0x15,0x1d], 319 => 0x4d, 320 => 0x4d, 331 => [0xb042,0xb04e,0x201b], 335 => 0x13, 349 => 0x16 },
-	'focusmode2' => { 264 => '3.1', 335 => 0x32 },
-	'focusmodesetting' => { 223 => '10.1', 318 => 0x14, 319 => 0x10, 320 => 0xf, 321 => 0x6 },
-	'focusmodeswitch' => { 150 => 0x58, 319 => 0x2e },
+	'focusmode' => { 29 => 0x7, 90 => 0x3, 91 => [0x3003,0xd], 100 => 0x1021, 111 => 0x38, 125 => 'FocusMode', 147 => 0x30, 149 => 0xe, 150 => 0xc, 182 => 0x7, 233 => 0x301, 238 => 0x100b, 253 => 0x7, 284 => 0xd, 290 => 0x3, 306 => 0x1006, 316 => [0xb,0x5], 322 => [0x15,0x1d], 323 => 0x4d, 324 => 0x4d, 335 => [0xb042,0xb04e,0x201b], 339 => 0x13, 353 => 0x16 },
+	'focusmode2' => { 265 => '3.1', 339 => 0x32 },
+	'focusmodesetting' => { 223 => '10.1', 320 => 0x14, 321 => 0x15, 323 => 0x10, 324 => 0xf, 325 => 0x6 },
+	'focusmodeswitch' => { 150 => 0x58, 323 => 0x2e },
 	'focuspixel' => { 100 => 0x1023 },
 	'focuspointwrap' => { 222 => '2.2', 227 => '2.2', 228 => '1.2', 231 => '2.5' },
-	'focusposition' => { 178 => 0x8, 179 => 0x8, 283 => 0x10, 330 => 0x9bb },
+	'focusposition' => { 178 => 0x8, 179 => 0x8, 284 => 0x10, 334 => 0x9bb },
 	'focusprocess' => { 233 => 0x302 },
 	'focusrange' => { 29 => 0x12, 238 => 0x100a },
-	'focussetting' => { 314 => 0x6 },
-	'focusstatus' => { 317 => 0x19, 319 => 0x53, 320 => 0x53 },
+	'focussetting' => { 315 => 0x6 },
+	'focusstatus' => { 322 => 0x19, 323 => 0x53, 324 => 0x53 },
 	'focusstepcount' => { 236 => 0x301, 238 => 0x100e },
 	'focusstepinfinity' => { 236 => 0x303, 238 => 0x103b },
 	'focusstepnear' => { 236 => 0x304, 238 => 0x103c },
 	'focustrackinglockon' => { 222 => ['1.5','4.1'], 227 => '3.1', 228 => '0.4' },
 	'focuswarning' => { 100 => 0x1301 },
 	'foldername' => { 147 => 0x27 },
-	'foldernumber' => { 319 => 0x9a, 321 => [0x402,0x114,0x316] },
-	'fontcomposite' => { 398 => [\'Fonts','FontsComposite'] },
-	'fontface' => { 398 => [\'Fonts','FontsFontFace'] },
-	'fontfamily' => { 398 => [\'Fonts','FontsFontFamily'] },
-	'fontfilename' => { 398 => [\'Fonts','FontsFontFileName'] },
-	'fontname' => { 398 => [\'Fonts','FontsFontName'] },
-	'fonts' => { 398 => 'Fonts' },
-	'fonttype' => { 398 => [\'Fonts','FontsFontType'] },
-	'fontversion' => { 398 => [\'Fonts','FontsVersionString'] },
-	'for' => { 296 => 'For' },
-	'format' => { 371 => 'format', 391 => 'Format' },
-	'forwardlock' => { 388 => 'forwardlock' },
+	'foldernumber' => { 323 => 0x9a, 325 => [0x402,0x114,0x316] },
+	'fontcomposite' => { 404 => [\'Fonts','FontsComposite'] },
+	'fontface' => { 404 => [\'Fonts','FontsFontFace'] },
+	'fontfamily' => { 404 => [\'Fonts','FontsFontFamily'] },
+	'fontfilename' => { 404 => [\'Fonts','FontsFontFileName'] },
+	'fontname' => { 404 => [\'Fonts','FontsFontName'] },
+	'fonts' => { 404 => 'Fonts' },
+	'fonttype' => { 404 => [\'Fonts','FontsFontType'] },
+	'fontversion' => { 404 => [\'Fonts','FontsVersionString'] },
+	'for' => { 297 => 'For' },
+	'format' => { 377 => 'format', 397 => 'Format' },
+	'forwardlock' => { 394 => 'forwardlock' },
 	'forwardmatrix1' => { 95 => 0xc714 },
 	'forwardmatrix2' => { 95 => 0xc715 },
 	'framecount' => { 54 => [0x2,0x4] },
 	'frameheight' => { 100 => 0x3822 },
-	'framenum' => { 291 => 0xd7 },
-	'framenumber' => { 100 => 0x8003, 153 => 0x3c, 283 => 0x29 },
+	'framenum' => { 292 => 0xd7 },
+	'framenumber' => { 100 => 0x8003, 153 => 0x3c, 284 => 0x29 },
 	'framerate' => { 54 => [0x1,0x6], 95 => 0xc764, 100 => 0x3820 },
 	'framewidth' => { 100 => 0x3821 },
 	'freebytes' => { 81 => 0x1 },
 	'freememorycardimages' => { 148 => [0x37,0x54], 149 => [0x2d,0x4a], 150 => 0x32 },
 	'fujiflashmode' => { 100 => 0x1010 },
-	'fullimagesize' => { 331 => 0xb02b },
-	'fullpanoheightpixels' => { 360 => 'FullPanoHeightPixels' },
-	'fullpanowidthpixels' => { 360 => 'FullPanoWidthPixels' },
-	'fullpresssnap' => { 305 => 0x100d },
+	'fullimagesize' => { 335 => 0xb02b },
+	'fullpanoheightpixels' => { 366 => 'FullPanoHeightPixels' },
+	'fullpanowidthpixels' => { 366 => 'FullPanoWidthPixels' },
+	'fullpresssnap' => { 306 => 0x100d },
 	'fullsizeimage' => { 131 => 'data' },
 	'fullsizeimagename' => { 131 => '1Name' },
 	'fullsizeimagetype' => { 131 => '0Type' },
@@ -1948,14 +2003,14 @@ my %tagLookup = (
 	'funcbuttonplusdials' => { 222 => ['14.2','15.2'], 227 => '31.1' },
 	'functionbutton' => { 226 => '13.1', 229 => '5.2' },
 	'gainbase' => { 237 => 0x610 },
-	'gaincontrol' => { 95 => 0xa407, 374 => 'GainControl' },
-	'gamma' => { 95 => 0xa500, 375 => 'Gamma' },
+	'gaincontrol' => { 95 => 0xa407, 380 => 'GainControl' },
+	'gamma' => { 95 => 0xa500, 381 => 'Gamma' },
 	'gammacompensatedvalue' => { 105 => 0x91 },
 	'geimagesize' => { 100 => 0x1304 },
 	'gemake' => { 101 => 0x300 },
 	'gemodel' => { 101 => 0x207 },
-	'genre' => { 384 => 'genre', 393 => 'genre' },
-	'geography' => { 385 => 'geography' },
+	'genre' => { 390 => 'genre', 399 => 'genre' },
+	'geography' => { 391 => 'geography' },
 	'geologicalcontext' => { 94 => 'GeologicalContext' },
 	'geologicalcontextbed' => { 94 => [\'GeologicalContext','GeologicalContextBed'] },
 	'geologicalcontextformation' => { 94 => [\'GeologicalContext','GeologicalContextFormation'] },
@@ -1968,130 +2023,130 @@ my %tagLookup = (
 	'geotiffdirectory' => { 95 => 0x87af },
 	'geotiffdoubleparams' => { 95 => 0x87b0 },
 	'geotime' => { 96 => 'Geotime' },
-	'globalaltitude' => { 294 => 0x419 },
-	'globalangle' => { 294 => 0x40d },
-	'good' => { 393 => 'good' },
-	'gpsaltitude' => { 102 => 0x6, 129 => 'Altitude', 374 => 'GPSAltitude' },
-	'gpsaltituderef' => { 102 => 0x5, 374 => 'GPSAltitudeRef' },
-	'gpsareainformation' => { 102 => 0x1c, 374 => 'GPSAreaInformation' },
+	'globalaltitude' => { 295 => 0x419 },
+	'globalangle' => { 295 => 0x40d },
+	'good' => { 399 => 'good' },
+	'gpsaltitude' => { 102 => 0x6, 129 => 'Altitude', 380 => 'GPSAltitude' },
+	'gpsaltituderef' => { 102 => 0x5, 380 => 'GPSAltitudeRef' },
+	'gpsareainformation' => { 102 => 0x1c, 380 => 'GPSAreaInformation' },
 	'gpsdatestamp' => { 102 => 0x1d },
-	'gpsdatetime' => { 129 => 'DateTime', 374 => 'GPSTimeStamp' },
-	'gpsdestbearing' => { 102 => 0x18, 129 => 'Bearing', 374 => 'GPSDestBearing' },
-	'gpsdestbearingref' => { 102 => 0x17, 374 => 'GPSDestBearingRef' },
-	'gpsdestdistance' => { 102 => 0x1a, 129 => 'Distance', 374 => 'GPSDestDistance' },
-	'gpsdestdistanceref' => { 102 => 0x19, 374 => 'GPSDestDistanceRef' },
-	'gpsdestlatitude' => { 102 => 0x14, 374 => 'GPSDestLatitude' },
+	'gpsdatetime' => { 129 => 'DateTime', 380 => 'GPSTimeStamp' },
+	'gpsdestbearing' => { 102 => 0x18, 129 => 'Bearing', 380 => 'GPSDestBearing' },
+	'gpsdestbearingref' => { 102 => 0x17, 380 => 'GPSDestBearingRef' },
+	'gpsdestdistance' => { 102 => 0x1a, 129 => 'Distance', 380 => 'GPSDestDistance' },
+	'gpsdestdistanceref' => { 102 => 0x19, 380 => 'GPSDestDistanceRef' },
+	'gpsdestlatitude' => { 102 => 0x14, 380 => 'GPSDestLatitude' },
 	'gpsdestlatituderef' => { 102 => 0x13 },
-	'gpsdestlongitude' => { 102 => 0x16, 374 => 'GPSDestLongitude' },
+	'gpsdestlongitude' => { 102 => 0x16, 380 => 'GPSDestLongitude' },
 	'gpsdestlongituderef' => { 102 => 0x15 },
-	'gpsdifferential' => { 102 => 0x1e, 129 => 'Differential', 374 => 'GPSDifferential' },
-	'gpsdop' => { 102 => 0xb, 374 => 'GPSDOP' },
-	'gpshpositioningerror' => { 102 => 0x1f, 374 => 'GPSHPositioningError' },
-	'gpsimgdirection' => { 102 => 0x11, 374 => 'GPSImgDirection' },
-	'gpsimgdirectionref' => { 102 => 0x10, 374 => 'GPSImgDirectionRef' },
-	'gpslatitude' => { 102 => 0x2, 129 => 'Latitude', 374 => 'GPSLatitude' },
+	'gpsdifferential' => { 102 => 0x1e, 129 => 'Differential', 380 => 'GPSDifferential' },
+	'gpsdop' => { 102 => 0xb, 380 => 'GPSDOP' },
+	'gpshpositioningerror' => { 102 => 0x1f, 380 => 'GPSHPositioningError' },
+	'gpsimgdirection' => { 102 => 0x11, 380 => 'GPSImgDirection' },
+	'gpsimgdirectionref' => { 102 => 0x10, 380 => 'GPSImgDirectionRef' },
+	'gpslatitude' => { 102 => 0x2, 129 => 'Latitude', 380 => 'GPSLatitude' },
 	'gpslatituderef' => { 102 => 0x1 },
-	'gpslongitude' => { 102 => 0x4, 129 => 'Longitude', 374 => 'GPSLongitude' },
+	'gpslongitude' => { 102 => 0x4, 129 => 'Longitude', 380 => 'GPSLongitude' },
 	'gpslongituderef' => { 102 => 0x3 },
-	'gpsmapdatum' => { 102 => 0x12, 129 => 'Datum', 374 => 'GPSMapDatum' },
-	'gpsmeasuremode' => { 102 => 0xa, 129 => 'MeasureMode', 374 => 'GPSMeasureMode' },
-	'gpsprocessingmethod' => { 102 => 0x1b, 374 => 'GPSProcessingMethod' },
-	'gpssatellites' => { 102 => 0x8, 129 => 'Satellites', 374 => 'GPSSatellites' },
-	'gpsspeed' => { 102 => 0xd, 129 => 'Speed', 374 => 'GPSSpeed' },
-	'gpsspeedref' => { 102 => 0xc, 374 => 'GPSSpeedRef' },
-	'gpsstatus' => { 102 => 0x9, 374 => 'GPSStatus' },
+	'gpsmapdatum' => { 102 => 0x12, 129 => 'Datum', 380 => 'GPSMapDatum' },
+	'gpsmeasuremode' => { 102 => 0xa, 129 => 'MeasureMode', 380 => 'GPSMeasureMode' },
+	'gpsprocessingmethod' => { 102 => 0x1b, 380 => 'GPSProcessingMethod' },
+	'gpssatellites' => { 102 => 0x8, 129 => 'Satellites', 380 => 'GPSSatellites' },
+	'gpsspeed' => { 102 => 0xd, 129 => 'Speed', 380 => 'GPSSpeed' },
+	'gpsspeedref' => { 102 => 0xc, 380 => 'GPSSpeedRef' },
+	'gpsstatus' => { 102 => 0x9, 380 => 'GPSStatus' },
 	'gpstimestamp' => { 102 => 0x7 },
-	'gpstrack' => { 102 => 0xf, 129 => 'Heading', 374 => 'GPSTrack' },
-	'gpstrackref' => { 102 => 0xe, 374 => 'GPSTrackRef' },
-	'gpsversionid' => { 102 => 0x0, 374 => 'GPSVersionID' },
+	'gpstrack' => { 102 => 0xf, 129 => 'Heading', 380 => 'GPSTrack' },
+	'gpstrackref' => { 102 => 0xe, 380 => 'GPSTrackRef' },
+	'gpsversionid' => { 102 => 0x0, 380 => 'GPSVersionID' },
 	'gradation' => { 233 => 0x50f },
-	'gradientbasedcorractive' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionActive'] },
-	'gradientbasedcorramount' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionAmount'] },
-	'gradientbasedcorrbrightness' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalBrightness'] },
-	'gradientbasedcorrclarity' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalClarity'] },
-	'gradientbasedcorrclarity2012' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalClarity2012'] },
-	'gradientbasedcorrcontrast' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalContrast'] },
-	'gradientbasedcorrcontrast2012' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalContrast2012'] },
-	'gradientbasedcorrdefringe' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalDefringe'] },
-	'gradientbasedcorrections' => { 370 => 'GradientBasedCorrections' },
-	'gradientbasedcorrexposure' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalExposure'] },
-	'gradientbasedcorrexposure2012' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalExposure2012'] },
-	'gradientbasedcorrhighlights2012' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalHighlights2012'] },
-	'gradientbasedcorrhue' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalToningHue'] },
-	'gradientbasedcorrluminancenoise' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalLuminanceNoise'] },
-	'gradientbasedcorrmaskalpha' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksAlpha'] },
-	'gradientbasedcorrmaskangle' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksAngle'] },
-	'gradientbasedcorrmaskbottom' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksBottom'] },
-	'gradientbasedcorrmaskcentervalue' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCenterValue'] },
-	'gradientbasedcorrmaskcenterweight' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCenterWeight'] },
-	'gradientbasedcorrmaskdabs' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksDabs'] },
-	'gradientbasedcorrmaskfeather' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFeather'] },
-	'gradientbasedcorrmaskflipped' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFlipped'] },
-	'gradientbasedcorrmaskflow' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFlow'] },
-	'gradientbasedcorrmaskfullx' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFullX'] },
-	'gradientbasedcorrmaskfully' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFullY'] },
-	'gradientbasedcorrmaskleft' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksLeft'] },
-	'gradientbasedcorrmaskmidpoint' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMidpoint'] },
-	'gradientbasedcorrmaskperimetervalue' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksPerimeterValue'] },
-	'gradientbasedcorrmaskradius' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRadius'] },
-	'gradientbasedcorrmaskright' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRight'] },
-	'gradientbasedcorrmaskroundness' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRoundness'] },
-	'gradientbasedcorrmasks' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasks'] },
-	'gradientbasedcorrmasksizex' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksSizeX'] },
-	'gradientbasedcorrmasksizey' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksSizeY'] },
-	'gradientbasedcorrmasktop' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksTop'] },
-	'gradientbasedcorrmaskvalue' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskValue'] },
-	'gradientbasedcorrmaskversion' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksVersion'] },
-	'gradientbasedcorrmaskwhat' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksWhat'] },
-	'gradientbasedcorrmaskx' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksX'] },
-	'gradientbasedcorrmasky' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksY'] },
-	'gradientbasedcorrmaskzerox' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksZeroX'] },
-	'gradientbasedcorrmaskzeroy' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksZeroY'] },
-	'gradientbasedcorrmoire' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalMoire'] },
-	'gradientbasedcorrsaturation' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalSaturation','GradientBasedCorrectionsLocalToningSaturation'] },
-	'gradientbasedcorrshadows2012' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalShadows2012'] },
-	'gradientbasedcorrsharpness' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalSharpness'] },
-	'gradientbasedcorrtemperature' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalTemperature'] },
-	'gradientbasedcorrtint' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalTint'] },
-	'gradientbasedcorrwhat' => { 370 => [\'GradientBasedCorrections','GradientBasedCorrectionsWhat'] },
-	'grainamount' => { 370 => 'GrainAmount' },
-	'grainfrequency' => { 370 => 'GrainFrequency' },
-	'grainsize' => { 370 => 'GrainSize' },
-	'graymixeraqua' => { 370 => 'GrayMixerAqua' },
-	'graymixerblue' => { 370 => 'GrayMixerBlue' },
-	'graymixergreen' => { 370 => 'GrayMixerGreen' },
-	'graymixermagenta' => { 370 => 'GrayMixerMagenta' },
-	'graymixerorange' => { 370 => 'GrayMixerOrange' },
-	'graymixerpurple' => { 370 => 'GrayMixerPurple' },
-	'graymixerred' => { 370 => 'GrayMixerRed' },
-	'graymixeryellow' => { 370 => 'GrayMixerYellow' },
-	'graypoint' => { 356 => 0x8021 },
+	'gradientbasedcorractive' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionActive'] },
+	'gradientbasedcorramount' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionAmount'] },
+	'gradientbasedcorrbrightness' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalBrightness'] },
+	'gradientbasedcorrclarity' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalClarity'] },
+	'gradientbasedcorrclarity2012' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalClarity2012'] },
+	'gradientbasedcorrcontrast' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalContrast'] },
+	'gradientbasedcorrcontrast2012' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalContrast2012'] },
+	'gradientbasedcorrdefringe' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalDefringe'] },
+	'gradientbasedcorrections' => { 376 => 'GradientBasedCorrections' },
+	'gradientbasedcorrexposure' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalExposure'] },
+	'gradientbasedcorrexposure2012' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalExposure2012'] },
+	'gradientbasedcorrhighlights2012' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalHighlights2012'] },
+	'gradientbasedcorrhue' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalToningHue'] },
+	'gradientbasedcorrluminancenoise' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalLuminanceNoise'] },
+	'gradientbasedcorrmaskalpha' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksAlpha'] },
+	'gradientbasedcorrmaskangle' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksAngle'] },
+	'gradientbasedcorrmaskbottom' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksBottom'] },
+	'gradientbasedcorrmaskcentervalue' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCenterValue'] },
+	'gradientbasedcorrmaskcenterweight' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCenterWeight'] },
+	'gradientbasedcorrmaskdabs' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksDabs'] },
+	'gradientbasedcorrmaskfeather' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFeather'] },
+	'gradientbasedcorrmaskflipped' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFlipped'] },
+	'gradientbasedcorrmaskflow' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFlow'] },
+	'gradientbasedcorrmaskfullx' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFullX'] },
+	'gradientbasedcorrmaskfully' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFullY'] },
+	'gradientbasedcorrmaskleft' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksLeft'] },
+	'gradientbasedcorrmaskmidpoint' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMidpoint'] },
+	'gradientbasedcorrmaskperimetervalue' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksPerimeterValue'] },
+	'gradientbasedcorrmaskradius' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRadius'] },
+	'gradientbasedcorrmaskright' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRight'] },
+	'gradientbasedcorrmaskroundness' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRoundness'] },
+	'gradientbasedcorrmasks' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasks'] },
+	'gradientbasedcorrmasksizex' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksSizeX'] },
+	'gradientbasedcorrmasksizey' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksSizeY'] },
+	'gradientbasedcorrmasktop' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksTop'] },
+	'gradientbasedcorrmaskvalue' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskValue'] },
+	'gradientbasedcorrmaskversion' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksVersion'] },
+	'gradientbasedcorrmaskwhat' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksWhat'] },
+	'gradientbasedcorrmaskx' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksX'] },
+	'gradientbasedcorrmasky' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksY'] },
+	'gradientbasedcorrmaskzerox' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksZeroX'] },
+	'gradientbasedcorrmaskzeroy' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksZeroY'] },
+	'gradientbasedcorrmoire' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalMoire'] },
+	'gradientbasedcorrsaturation' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalSaturation','GradientBasedCorrectionsLocalToningSaturation'] },
+	'gradientbasedcorrshadows2012' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalShadows2012'] },
+	'gradientbasedcorrsharpness' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalSharpness'] },
+	'gradientbasedcorrtemperature' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalTemperature'] },
+	'gradientbasedcorrtint' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalTint'] },
+	'gradientbasedcorrwhat' => { 376 => [\'GradientBasedCorrections','GradientBasedCorrectionsWhat'] },
+	'grainamount' => { 376 => 'GrainAmount' },
+	'grainfrequency' => { 376 => 'GrainFrequency' },
+	'grainsize' => { 376 => 'GrainSize' },
+	'graymixeraqua' => { 376 => 'GrayMixerAqua' },
+	'graymixerblue' => { 376 => 'GrayMixerBlue' },
+	'graymixergreen' => { 376 => 'GrayMixerGreen' },
+	'graymixermagenta' => { 376 => 'GrayMixerMagenta' },
+	'graymixerorange' => { 376 => 'GrayMixerOrange' },
+	'graymixerpurple' => { 376 => 'GrayMixerPurple' },
+	'graymixerred' => { 376 => 'GrayMixerRed' },
+	'graymixeryellow' => { 376 => 'GrayMixerYellow' },
+	'graypoint' => { 362 => 0x8021 },
 	'grayresponseunit' => { 95 => 0x122 },
 	'greencurvelimits' => { 86 => 0x1c4 },
 	'greencurvepoints' => { 86 => 0x19a },
-	'greenhue' => { 370 => 'GreenHue' },
-	'greensaturation' => { 370 => 'GreenSaturation' },
+	'greenhue' => { 376 => 'GreenHue' },
+	'greensaturation' => { 376 => 'GreenSaturation' },
 	'griddisplay' => { 222 => '13.3', 224 => '2.2', 227 => '10.5', 228 => '3.4', 229 => '6.1', 231 => '4.2' },
-	'gripbatteryadload' => { 262 => 0x5 },
-	'gripbatteryadnoload' => { 262 => 0x4 },
-	'gripbatterystate' => { 262 => '1.2' },
+	'gripbatteryadload' => { 263 => 0x5 },
+	'gripbatteryadnoload' => { 263 => 0x4 },
+	'gripbatterystate' => { 263 => '1.2' },
 	'halftonehints' => { 95 => 0x141 },
 	'hardlink' => { 96 => 'HardLink' },
-	'hasalternative' => { 384 => 'hasAlternative' },
-	'hascorrection' => { 384 => 'hasCorrection' },
-	'hascrop' => { 370 => 'HasCrop' },
-	'hasextendedxmp' => { 395 => 'HasExtendedXMP' },
-	'haspreviousversion' => { 384 => 'hasPreviousVersion' },
-	'hassettings' => { 370 => 'HasSettings' },
-	'hastranslation' => { 384 => 'hasTranslation' },
-	'hdr' => { 175 => 0x4, 252 => 0x9e, 283 => 0x85, 331 => 0x200a },
+	'hasalternative' => { 390 => 'hasAlternative' },
+	'hascorrection' => { 390 => 'hasCorrection' },
+	'hascrop' => { 376 => 'HasCrop' },
+	'hasextendedxmp' => { 401 => 'HasExtendedXMP' },
+	'haspreviousversion' => { 390 => 'hasPreviousVersion' },
+	'hassettings' => { 376 => 'HasSettings' },
+	'hastranslation' => { 390 => 'hasTranslation' },
+	'hdr' => { 175 => 0x4, 253 => 0x9e, 284 => 0x85, 335 => 0x200a },
 	'hdrimagetype' => { 1 => 0xa },
 	'hdrinfoversion' => { 175 => 0x0 },
-	'hdrlevel' => { 175 => 0x5, 321 => 0x2e, 335 => 0x17 },
+	'hdrlevel' => { 175 => 0x5, 325 => 0x2e, 339 => 0x17 },
 	'hdrlevel2' => { 175 => 0x7 },
-	'hdrsetting' => { 321 => 0x2d, 335 => 0x16, 338 => 0x1148, 339 => 0x1148, 340 => 0x1124, 341 => 0x11a0, 342 => 0x117c, 343 => 0x1034, 344 => 0x22c },
+	'hdrsetting' => { 325 => 0x2d, 339 => 0x16, 342 => 0x1148, 343 => 0x1148, 344 => 0x1124, 345 => 0x11a0, 346 => 0x117c, 347 => 0x1034, 348 => 0x22c },
 	'hdrsmoothing' => { 175 => 0x6 },
-	'headline' => { 103 => 0x69, 382 => 'Headline' },
+	'headline' => { 103 => 0x69, 388 => 'Headline' },
 	'hierarchicalkeywords' => { 140 => [\'Keywords','KeywordsHierarchy'] },
 	'hierarchicalkeywords1' => { 140 => [\'Keywords','KeywordsHierarchyKeyword'] },
 	'hierarchicalkeywords1applied' => { 140 => [\'Keywords','KeywordsHierarchyApplied'] },
@@ -2110,53 +2165,53 @@ my %tagLookup = (
 	'hierarchicalkeywords5children' => { 140 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildrenChildren'] },
 	'hierarchicalkeywords6' => { 140 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildrenChildrenKeyword'] },
 	'hierarchicalkeywords6applied' => { 140 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildrenChildrenApplied'] },
-	'hierarchicalsubject' => { 362 => 'hierarchicalSubject' },
+	'hierarchicalsubject' => { 368 => 'hierarchicalSubject' },
 	'highestbiostratigraphiczone' => { 94 => [\'GeologicalContext','GeologicalContextHighestBiostratigraphicZone'] },
-	'highisomultiplierblue' => { 256 => 0x1a },
-	'highisomultipliergreen' => { 256 => 0x19 },
-	'highisomultiplierred' => { 256 => 0x18 },
-	'highisonoisereduction' => { 14 => 0xbc, 15 => 0xbd, 18 => 0xbd, 25 => 0xc9, 68 => 0x202, 100 => 0x100e, 182 => 0xb1, 283 => 0x71, 319 => 0x2c, 320 => 0x26, 321 => 0x26, 331 => 0x2009, 335 => 0x12 },
-	'highisonoisereduction2' => { 331 => 0xb050 },
-	'highlight' => { 314 => 0xf },
-	'highlightcolordistortreduct' => { 356 => 0x8026 },
+	'highisomultiplierblue' => { 257 => 0x1a },
+	'highisomultipliergreen' => { 257 => 0x19 },
+	'highisomultiplierred' => { 257 => 0x18 },
+	'highisonoisereduction' => { 14 => 0xbc, 15 => 0xbd, 18 => 0xbd, 25 => 0xc9, 68 => 0x202, 100 => 0x100e, 182 => 0xb1, 284 => 0x71, 323 => 0x2c, 324 => 0x26, 325 => 0x26, 335 => 0x2009, 339 => 0x12, 358 => 0x42 },
+	'highisonoisereduction2' => { 335 => 0xb050 },
+	'highlight' => { 315 => 0xf },
+	'highlightcolordistortreduct' => { 362 => 0x8026 },
 	'highlightprotection' => { 214 => 0x6 },
-	'highlightrecovery' => { 370 => 'HighlightRecovery' },
-	'highlights' => { 364 => 'Highlights' },
-	'highlights2012' => { 370 => 'Highlights2012' },
+	'highlightrecovery' => { 376 => 'HighlightRecovery' },
+	'highlights' => { 370 => 'Highlights' },
+	'highlights2012' => { 376 => 'Highlights2012' },
 	'highlighttone' => { 100 => 0x1041 },
 	'highlighttonepriority' => { 11 => 0x7, 14 => 0x7, 15 => 0x7, 16 => 0x7, 18 => 0x7, 20 => 0x7, 25 => 0x7, 68 => 0x203 },
-	'highlowkeyadj' => { 283 => 0x6c },
+	'highlowkeyadj' => { 284 => 0x6c },
 	'highspeedsync' => { 150 => 0x5 },
 	'histogramxml' => { 215 => 0x83a1a25 },
-	'history' => { 382 => 'History', 394 => 'History' },
-	'historyaction' => { 394 => [\'History','HistoryAction'] },
-	'historychanged' => { 394 => [\'History','HistoryChanged'] },
-	'historyinstanceid' => { 394 => [\'History','HistoryInstanceID'] },
-	'historyparameters' => { 394 => [\'History','HistoryParameters'] },
-	'historysoftwareagent' => { 394 => [\'History','HistorySoftwareAgent'] },
-	'historywhen' => { 394 => [\'History','HistoryWhen'] },
-	'hometowncity' => { 91 => 0x3006, 283 => 0x23, 288 => 0x2 },
-	'hometowncitycode' => { 289 => 0x1000 },
-	'hometowndst' => { 283 => 0x25, 288 => '0.2' },
+	'history' => { 388 => 'History', 400 => 'History' },
+	'historyaction' => { 400 => [\'History','HistoryAction'] },
+	'historychanged' => { 400 => [\'History','HistoryChanged'] },
+	'historyinstanceid' => { 400 => [\'History','HistoryInstanceID'] },
+	'historyparameters' => { 400 => [\'History','HistoryParameters'] },
+	'historysoftwareagent' => { 400 => [\'History','HistorySoftwareAgent'] },
+	'historywhen' => { 400 => [\'History','HistoryWhen'] },
+	'hometowncity' => { 91 => 0x3006, 284 => 0x23, 289 => 0x2 },
+	'hometowncitycode' => { 290 => 0x1000 },
+	'hometowndst' => { 284 => 0x25, 289 => '0.2' },
 	'hostcomputer' => { 95 => 0x13c },
-	'hue' => { 155 => 0x3b, 283 => 0x67 },
-	'hueadj' => { 218 => 0x2f, 356 => 0x8019 },
-	'hueadjust' => { 305 => 0x1016 },
+	'hue' => { 155 => 0x3b, 284 => 0x67 },
+	'hueadj' => { 218 => 0x2f, 362 => 0x8019 },
+	'hueadjust' => { 306 => 0x1016 },
 	'hueadjustment' => { 148 => 0x4a, 149 => 0x40, 182 => 0x92, 184 => 0x36 },
-	'hueadjustmentaqua' => { 370 => 'HueAdjustmentAqua' },
-	'hueadjustmentblue' => { 370 => 'HueAdjustmentBlue' },
-	'hueadjustmentgreen' => { 370 => 'HueAdjustmentGreen' },
-	'hueadjustmentmagenta' => { 370 => 'HueAdjustmentMagenta' },
-	'hueadjustmentorange' => { 370 => 'HueAdjustmentOrange' },
-	'hueadjustmentpurple' => { 370 => 'HueAdjustmentPurple' },
-	'hueadjustmentred' => { 370 => 'HueAdjustmentRed' },
-	'hueadjustmentyellow' => { 370 => 'HueAdjustmentYellow' },
+	'hueadjustmentaqua' => { 376 => 'HueAdjustmentAqua' },
+	'hueadjustmentblue' => { 376 => 'HueAdjustmentBlue' },
+	'hueadjustmentgreen' => { 376 => 'HueAdjustmentGreen' },
+	'hueadjustmentmagenta' => { 376 => 'HueAdjustmentMagenta' },
+	'hueadjustmentorange' => { 376 => 'HueAdjustmentOrange' },
+	'hueadjustmentpurple' => { 376 => 'HueAdjustmentPurple' },
+	'hueadjustmentred' => { 376 => 'HueAdjustmentRed' },
+	'hueadjustmentyellow' => { 376 => 'HueAdjustmentYellow' },
 	'huesetting' => { 241 => 0x1011 },
 	'icc_profile' => { 96 => 'ICC_Profile' },
-	'iccprofilename' => { 382 => 'ICCProfile' },
-	'idccreativestyle' => { 356 => 0x8000 },
-	'idcpreviewlength' => { 356 => 0x202 },
-	'idcpreviewstart' => { 356 => 0x201 },
+	'iccprofilename' => { 388 => 'ICCProfile' },
+	'idccreativestyle' => { 362 => 0x8000 },
+	'idcpreviewlength' => { 362 => 0x202 },
+	'idcpreviewstart' => { 362 => 0x201 },
 	'identification' => { 94 => 'Identification' },
 	'identificationid' => { 94 => [\'Identification','IdentificationIdentificationID'] },
 	'identificationqualifier' => { 94 => [\'Identification','IdentificationIdentificationQualifier'] },
@@ -2164,208 +2219,208 @@ my %tagLookup = (
 	'identificationremarks' => { 94 => [\'Identification','IdentificationIdentificationRemarks'] },
 	'identificationverificationstatus' => { 94 => [\'Identification','IdentificationIdentificationVerificationStatus'] },
 	'identifiedby' => { 94 => [\'Identification','IdentificationIdentifiedBy'] },
-	'identifier' => { 371 => 'identifier', 391 => 'Identifier' },
+	'identifier' => { 377 => 'identifier', 397 => 'Identifier' },
 	'illumination' => { 229 => '0.5' },
 	'imageadjustment' => { 182 => 0x80, 205 => 0x5 },
-	'imagealterationconstraints' => { 383 => 'ImageAlterationConstraints' },
+	'imagealterationconstraints' => { 389 => 'ImageAlterationConstraints' },
 	'imagearea' => { 192 => 0x10, 195 => 0x10 },
-	'imageareaoffset' => { 283 => 0x38 },
+	'imageareaoffset' => { 284 => 0x38 },
 	'imageauthentication' => { 182 => 0x20 },
 	'imageboundary' => { 182 => 0x16 },
-	'imagecount' => { 182 => 0xa5, 333 => 0x11b, 345 => 0x32 },
-	'imagecount2' => { 345 => 0x4c },
-	'imagecreator' => { 383 => 'ImageCreator' },
-	'imagecreatorid' => { 383 => [\'ImageCreator','ImageCreatorImageCreatorID'] },
-	'imagecreatorimageid' => { 383 => 'ImageCreatorImageID' },
-	'imagecreatorname' => { 383 => [\'ImageCreator','ImageCreatorImageCreatorName'] },
+	'imagecount' => { 182 => 0xa5, 337 => 0x11b, 349 => 0x32 },
+	'imagecount2' => { 349 => 0x4c },
+	'imagecreator' => { 389 => 'ImageCreator' },
+	'imagecreatorid' => { 389 => [\'ImageCreator','ImageCreatorImageCreatorID'] },
+	'imagecreatorimageid' => { 389 => 'ImageCreatorImageID' },
+	'imagecreatorname' => { 389 => [\'ImageCreator','ImageCreatorImageCreatorName'] },
 	'imagedatasize' => { 182 => 0xa2 },
-	'imagedescription' => { 95 => 0x10e, 389 => 'ImageDescription' },
-	'imageduplicationconstraints' => { 383 => 'ImageDuplicationConstraints' },
+	'imagedescription' => { 95 => 0x10e, 395 => 'ImageDescription' },
+	'imageduplicationconstraints' => { 389 => 'ImageDuplicationConstraints' },
 	'imagedustoff' => { 215 => 0xfe443a45 },
-	'imageeditcount' => { 283 => 0x41 },
-	'imageediting' => { 283 => 0x32 },
-	'imageeffects' => { 305 => 0x1010 },
-	'imagefileconstraints' => { 383 => 'ImageFileConstraints' },
-	'imagefileformatasdelivered' => { 383 => 'ImageFileFormatAsDelivered' },
-	'imagefilesizeasdelivered' => { 383 => 'ImageFileSizeAsDelivered' },
+	'imageeditcount' => { 284 => 0x41 },
+	'imageediting' => { 284 => 0x32 },
+	'imageeffects' => { 306 => 0x1010 },
+	'imagefileconstraints' => { 389 => 'ImageFileConstraints' },
+	'imagefileformatasdelivered' => { 389 => 'ImageFileFormatAsDelivered' },
+	'imagefilesizeasdelivered' => { 389 => 'ImageFileSizeAsDelivered' },
 	'imagegeneration' => { 100 => 0x1436 },
-	'imageheight' => { 95 => 0x101, 154 => 0xc, 389 => 'ImageLength' },
+	'imageheight' => { 95 => 0x101, 154 => 0xc, 395 => 'ImageLength' },
 	'imagehistory' => { 95 => 0x9213 },
-	'imageidnumber' => { 248 => 0x340 },
-	'imagenumber' => { 95 => 0x9211, 125 => 'ImageNumber', 148 => 0xae, 149 => 0x5e, 319 => 0x9b, 321 => [0x400,'276.1',0x314], 367 => 'ImageNumber' },
+	'imageidnumber' => { 249 => 0x340 },
+	'imagenumber' => { 95 => 0x9211, 125 => 'ImageNumber', 148 => 0xae, 149 => 0x5e, 323 => 0x9b, 325 => [0x400,'276.1',0x314], 373 => 'ImageNumber' },
 	'imagenumber2' => { 149 => 0x62 },
 	'imageoptimization' => { 182 => 0xa9 },
 	'imageorientation' => { 103 => 0x83 },
 	'imageprocessing' => { 182 => 0x1a },
 	'imageprocessingversion' => { 237 => 0x0 },
-	'imagequality' => { 125 => 'ImageQuality', 194 => '723.2', 195 => '732.2', 202 => '708.1', 252 => 0x1 },
+	'imagequality' => { 125 => 'ImageQuality', 194 => '723.2', 195 => '732.2', 202 => '708.1', 253 => 0x1 },
 	'imagequality2' => { 233 => 0x603 },
-	'imageref' => { 378 => 'ImageRef' },
+	'imageref' => { 384 => 'ImageRef' },
 	'imagereview' => { 223 => '0.4', 229 => '0.4' },
 	'imagereviewtime' => { 223 => '2.1', 224 => '19.1', 225 => '20.1', 226 => '20.1', 227 => '9.2', 228 => '20.1', 231 => '21.2' },
 	'imagesize' => { 131 => 'ImageSize' },
-	'imagesizerestriction' => { 386 => 'imageSizeRestriction' },
+	'imagesizerestriction' => { 392 => 'imageSizeRestriction' },
 	'imagesourcedata' => { 95 => 0x935c },
-	'imagestabilization' => { 29 => 0x22, 91 => 0x3020, 100 => 0x1422, 125 => 'ImageStabilization', 148 => 0xbd, 149 => 0x71, 150 => 0x57, 151 => 0x0, 152 => [0x18,0x107,0x113], 153 => 0x49c2, 182 => 0xac, 233 => 0x604, 236 => 0x1600, 252 => 0x1a, 324 => 0x12, 325 => 0x11, 331 => 0xb026 },
-	'imagestabilization2' => { 323 => 0xa },
-	'imagestabilizationsetting' => { 153 => 0x14, 319 => 0x3d, 320 => 0x3d, 330 => 0x14 },
-	'imagestyle' => { 319 => 0x2d, 320 => 0x27 },
-	'imagesupplier' => { 383 => 'ImageSupplier' },
-	'imagesupplierid' => { 383 => [\'ImageSupplier','ImageSupplierImageSupplierID'] },
-	'imagesupplierimageid' => { 383 => 'ImageSupplierImageID' },
-	'imagesuppliername' => { 383 => [\'ImageSupplier','ImageSupplierImageSupplierName'] },
+	'imagestabilization' => { 29 => 0x22, 91 => 0x3020, 100 => 0x1422, 125 => 'ImageStabilization', 148 => 0xbd, 149 => 0x71, 150 => 0x57, 151 => 0x0, 152 => [0x18,0x107,0x113], 153 => 0x49c2, 182 => 0xac, 233 => 0x604, 236 => 0x1600, 253 => 0x1a, 328 => 0x12, 329 => 0x11, 335 => 0xb026 },
+	'imagestabilization2' => { 327 => 0xa },
+	'imagestabilizationsetting' => { 153 => 0x14, 323 => 0x3d, 324 => 0x3d, 334 => 0x14 },
+	'imagestyle' => { 323 => 0x2d, 324 => 0x27 },
+	'imagesupplier' => { 389 => 'ImageSupplier' },
+	'imagesupplierid' => { 389 => [\'ImageSupplier','ImageSupplierImageSupplierID'] },
+	'imagesupplierimageid' => { 389 => 'ImageSupplierImageID' },
+	'imagesuppliername' => { 389 => [\'ImageSupplier','ImageSupplierImageSupplierName'] },
 	'imagetemperaturemax' => { 97 => 0x1 },
 	'imagetemperaturemin' => { 97 => 0x2 },
-	'imagetone' => { 283 => 0x4f },
-	'imagetype' => { 103 => 0x82, 383 => 'ImageType' },
-	'imageuniqueid' => { 51 => 0x28, 95 => 0xa420, 374 => 'ImageUniqueID' },
-	'imagewidth' => { 95 => 0x100, 154 => 0xe, 389 => 'ImageWidth' },
-	'incrementaltemperature' => { 370 => 'IncrementalTemperature' },
-	'incrementaltint' => { 370 => 'IncrementalTint' },
-	'industry' => { 384 => 'industry', 385 => 'industry' },
+	'imagetone' => { 284 => 0x4f },
+	'imagetype' => { 103 => 0x82, 389 => 'ImageType' },
+	'imageuniqueid' => { 51 => 0x28, 95 => 0xa420, 380 => 'ImageUniqueID' },
+	'imagewidth' => { 95 => 0x100, 154 => 0xe, 395 => 'ImageWidth' },
+	'incrementaltemperature' => { 376 => 'IncrementalTemperature' },
+	'incrementaltint' => { 376 => 'IncrementalTint' },
+	'industry' => { 390 => 'industry', 391 => 'industry' },
 	'infobuttonwhenshooting' => { 68 => 0x409 },
-	'infraredilluminator' => { 301 => 0x28 },
-	'ingredients' => { 394 => 'Ingredients' },
-	'ingredientsalternatepaths' => { 394 => [\'Ingredients','IngredientsAlternatePaths'] },
-	'ingredientsdocumentid' => { 394 => [\'Ingredients','IngredientsDocumentID'] },
-	'ingredientsfilepath' => { 394 => [\'Ingredients','IngredientsFilePath'] },
-	'ingredientsfrompart' => { 394 => [\'Ingredients','IngredientsFromPart'] },
-	'ingredientsinstanceid' => { 394 => [\'Ingredients','IngredientsInstanceID'] },
-	'ingredientslastmodifydate' => { 394 => [\'Ingredients','IngredientsLastModifyDate'] },
-	'ingredientsmanager' => { 394 => [\'Ingredients','IngredientsManager'] },
-	'ingredientsmanagervariant' => { 394 => [\'Ingredients','IngredientsManagerVariant'] },
-	'ingredientsmanageto' => { 394 => [\'Ingredients','IngredientsManageTo'] },
-	'ingredientsmanageui' => { 394 => [\'Ingredients','IngredientsManageUI'] },
-	'ingredientsmaskmarkers' => { 394 => [\'Ingredients','IngredientsMaskMarkers'] },
-	'ingredientsoriginaldocumentid' => { 394 => [\'Ingredients','IngredientsOriginalDocumentID'] },
-	'ingredientspartmapping' => { 394 => [\'Ingredients','IngredientsPartMapping'] },
-	'ingredientsrenditionclass' => { 394 => [\'Ingredients','IngredientsRenditionClass'] },
-	'ingredientsrenditionparams' => { 394 => [\'Ingredients','IngredientsRenditionParams'] },
-	'ingredientstopart' => { 394 => [\'Ingredients','IngredientsToPart'] },
-	'ingredientsversionid' => { 394 => [\'Ingredients','IngredientsVersionID'] },
-	'initialhorizontalfovdegrees' => { 360 => 'InitialHorizontalFOVDegrees' },
-	'initialviewheadingdegrees' => { 360 => 'InitialViewHeadingDegrees' },
-	'initialviewpitchdegrees' => { 360 => 'InitialViewPitchDegrees' },
-	'initialviewrolldegrees' => { 360 => 'InitialViewRollDegrees' },
+	'infraredilluminator' => { 302 => 0x28 },
+	'ingredients' => { 400 => 'Ingredients' },
+	'ingredientsalternatepaths' => { 400 => [\'Ingredients','IngredientsAlternatePaths'] },
+	'ingredientsdocumentid' => { 400 => [\'Ingredients','IngredientsDocumentID'] },
+	'ingredientsfilepath' => { 400 => [\'Ingredients','IngredientsFilePath'] },
+	'ingredientsfrompart' => { 400 => [\'Ingredients','IngredientsFromPart'] },
+	'ingredientsinstanceid' => { 400 => [\'Ingredients','IngredientsInstanceID'] },
+	'ingredientslastmodifydate' => { 400 => [\'Ingredients','IngredientsLastModifyDate'] },
+	'ingredientsmanager' => { 400 => [\'Ingredients','IngredientsManager'] },
+	'ingredientsmanagervariant' => { 400 => [\'Ingredients','IngredientsManagerVariant'] },
+	'ingredientsmanageto' => { 400 => [\'Ingredients','IngredientsManageTo'] },
+	'ingredientsmanageui' => { 400 => [\'Ingredients','IngredientsManageUI'] },
+	'ingredientsmaskmarkers' => { 400 => [\'Ingredients','IngredientsMaskMarkers'] },
+	'ingredientsoriginaldocumentid' => { 400 => [\'Ingredients','IngredientsOriginalDocumentID'] },
+	'ingredientspartmapping' => { 400 => [\'Ingredients','IngredientsPartMapping'] },
+	'ingredientsrenditionclass' => { 400 => [\'Ingredients','IngredientsRenditionClass'] },
+	'ingredientsrenditionparams' => { 400 => [\'Ingredients','IngredientsRenditionParams'] },
+	'ingredientstopart' => { 400 => [\'Ingredients','IngredientsToPart'] },
+	'ingredientsversionid' => { 400 => [\'Ingredients','IngredientsVersionID'] },
+	'initialhorizontalfovdegrees' => { 366 => 'InitialHorizontalFOVDegrees' },
+	'initialviewheadingdegrees' => { 366 => 'InitialViewHeadingDegrees' },
+	'initialviewpitchdegrees' => { 366 => 'InitialViewPitchDegrees' },
+	'initialviewrolldegrees' => { 366 => 'InitialViewRollDegrees' },
 	'initialzoomliveview' => { 222 => '4.4' },
 	'initialzoomsetting' => { 222 => '9.3', 227 => '27.3' },
 	'inkset' => { 95 => 0x14c },
-	'instanceid' => { 394 => 'InstanceID' },
+	'instanceid' => { 400 => 'InstanceID' },
 	'instantplaybacksetup' => { 150 => 0x3e },
 	'instantplaybacktime' => { 150 => 0x3d },
-	'instructions' => { 382 => 'Instructions' },
-	'instrument' => { 393 => 'instrument' },
-	'intellectualgenre' => { 379 => 'IntellectualGenre' },
-	'intelligentauto' => { 331 => 0xb052 },
+	'instructions' => { 388 => 'Instructions' },
+	'instrument' => { 399 => 'instrument' },
+	'intellectualgenre' => { 385 => 'IntellectualGenre' },
+	'intelligentauto' => { 335 => 0xb052 },
 	'intelligentcontrast' => { 41 => 0x4 },
-	'intelligentd-range' => { 252 => 0x79 },
-	'intelligentexposure' => { 252 => 0x5d },
-	'intelligentresolution' => { 252 => 0x70 },
+	'intelligentd-range' => { 253 => 0x79 },
+	'intelligentexposure' => { 253 => 0x5d },
+	'intelligentresolution' => { 253 => 0x70 },
 	'interchangecolorspace' => { 105 => 0x40 },
 	'internalflash' => { 147 => 0x2b, 222 => '23.1', 223 => '8.1', 224 => '22.1', 226 => '23.1', 229 => '8.1', 231 => '24.1', 236 => 0x1208 },
 	'internalflashae1' => { 238 => 0x1021 },
 	'internalflashae1_0' => { 238 => 0x101d },
 	'internalflashae2' => { 238 => 0x1022 },
 	'internalflashae2_0' => { 238 => 0x101e },
-	'internalflashmode' => { 271 => 0x1 },
-	'internalflashstrength' => { 271 => 0x3 },
+	'internalflashmode' => { 272 => 0x1 },
+	'internalflashstrength' => { 272 => 0x3 },
 	'internalflashtable' => { 238 => 0x1024 },
-	'internalndfilter' => { 252 => 0x9d },
-	'internalserialnumber' => { 51 => 0x96, 61 => 0x9, 100 => 0x10, 153 => 0x49dc, 232 => 0x18, 234 => 0x102, 252 => 0x25, 263 => 0x4, 305 => 0x5, 345 => 0xf0 },
-	'interopindex' => { 95 => 0x1, 375 => 'InteroperabilityIndex' },
+	'internalndfilter' => { 253 => 0x9d },
+	'internalserialnumber' => { 51 => 0x96, 61 => 0x9, 100 => 0x10, 153 => 0x49dc, 232 => 0x18, 234 => 0x102, 253 => 0x25, 264 => 0x4, 306 => 0x5, 349 => 0xf0 },
+	'interopindex' => { 95 => 0x1, 381 => 'InteroperabilityIndex' },
 	'interopversion' => { 95 => 0x2 },
 	'intervallength' => { 147 => 0x10 },
 	'intervalmode' => { 147 => 0x26 },
 	'intervalnumber' => { 147 => 0x11 },
-	'introtime' => { 393 => 'introTime' },
-	'introtimescale' => { 393 => [\'introTime','introTimeScale'] },
-	'introtimevalue' => { 393 => [\'introTime','introTimeValue'] },
+	'introtime' => { 399 => 'introTime' },
+	'introtimescale' => { 399 => [\'introTime','introTimeScale'] },
+	'introtimevalue' => { 399 => [\'introTime','introTimeValue'] },
 	'iptc' => { 96 => 'IPTC' },
-	'iptc-naa' => { 95 => 0x83bb, 256 => 0x83bb },
+	'iptc-naa' => { 95 => 0x83bb, 257 => 0x83bb },
 	'iptcbitspersample' => { 105 => 0x56 },
-	'iptcdigest' => { 294 => 0x425 },
+	'iptcdigest' => { 295 => 0x425 },
 	'iptcimageheight' => { 105 => 0x1e },
 	'iptcimagerotation' => { 105 => 0x66 },
 	'iptcimagewidth' => { 105 => 0x14 },
-	'iptclastedited' => { 380 => 'IptcLastEdited' },
+	'iptclastedited' => { 386 => 'IptcLastEdited' },
 	'iptcpicturenumber' => { 105 => 0xa },
 	'iptcpixelheight' => { 105 => 0x32 },
 	'iptcpixelwidth' => { 105 => 0x28 },
-	'isbn' => { 384 => 'isbn' },
-	'iscorrectionof' => { 384 => 'isCorrectionOf' },
+	'isbn' => { 390 => 'isbn' },
+	'iscorrectionof' => { 390 => 'isCorrectionOf' },
 	'iscustompicturestyle' => { 87 => 0x3 },
-	'iso' => { 5 => 0x6, 7 => 0x6, 8 => 0x75, 9 => 0x6, 10 => 0x79, 11 => 0x6, 12 => 0x6, 13 => 0x6, 14 => 0x6, 15 => 0x6, 16 => 0x6, 17 => 0x6, 18 => 0x6, 19 => 0x6, 20 => 0x6, 21 => 0x6, 22 => 0x6, 23 => 0x6, 24 => 0x6, 25 => 0x6, 26 => 0x0, 27 => 0x1, 90 => 0x14, 91 => [0x3014,0x14], 95 => 0x8827, 108 => 0xfd06, 109 => 0x1784, 111 => 0x60, 113 => [0xfa2e,0xfa46], 114 => [0x27,0x28], 115 => 0xf105, 118 => 0x14, 120 => 0x4e, 123 => 0x34, 125 => 'ISO', 147 => 0x8, 153 => 0x49ba, 176 => 0x0, 182 => 0x2, 256 => 0x17, 283 => [0x8b,0x14], 289 => 0x14, 311 => 0xa014, 374 => 'ISOSpeedRatings' },
+	'iso' => { 5 => 0x6, 7 => 0x6, 8 => 0x75, 9 => 0x6, 10 => 0x79, 11 => 0x6, 12 => 0x6, 13 => 0x6, 14 => 0x6, 15 => 0x6, 16 => 0x6, 17 => 0x6, 18 => 0x6, 19 => 0x6, 20 => 0x6, 21 => 0x6, 22 => 0x6, 23 => 0x6, 24 => 0x6, 25 => 0x6, 26 => 0x0, 27 => 0x1, 90 => 0x14, 91 => [0x3014,0x14], 95 => 0x8827, 108 => 0xfd06, 109 => 0x1784, 111 => 0x60, 113 => [0xfa2e,0xfa46], 114 => [0x27,0x28], 115 => 0xf105, 118 => 0x14, 120 => 0x4e, 123 => 0x34, 125 => 'ISO', 147 => 0x8, 153 => 0x49ba, 176 => 0x0, 182 => 0x2, 257 => 0x17, 284 => [0x8b,0x14], 290 => 0x14, 312 => 0xa014, 380 => 'ISOSpeedRatings' },
 	'iso2' => { 176 => 0x6, 189 => 0x265, 190 => 0x25c, 191 => 0x265, 192 => 0x221, 193 => 0x25d, 194 => 0x256, 195 => 0x25d, 197 => 0x2b5, 200 => 0x265, 204 => 0x2b5 },
-	'isoauto' => { 264 => '14.4' },
-	'isoautoparameters' => { 283 => 0x7a },
+	'isoauto' => { 265 => '14.4' },
+	'isoautoparameters' => { 284 => 0x7a },
 	'isodisplay' => { 224 => '2.3', 225 => '3.3', 226 => '3.3', 228 => '3.3', 231 => '4.3' },
 	'isoexpansion' => { 68 => 0x103, 69 => 0x7, 70 => 0x8, 73 => 0x8, 176 => 0x4 },
 	'isoexpansion2' => { 176 => 0xa },
-	'isofloor' => { 264 => 0x6 },
+	'isofloor' => { 265 => 0x6 },
 	'isoselection' => { 182 => 0xf },
 	'isosensitivitystep' => { 228 => '6.2' },
-	'isosetting' => { 111 => 0x5e, 125 => 'ISOSetting', 147 => 0x24, 148 => 0x26, 149 => 0x1c, 150 => 0x13, 155 => 0x6, 182 => 0x13, 264 => '17.3', 304 => 0x27, 319 => 0x16, 320 => 0x14, 321 => 0x2 },
-	'isospeed' => { 95 => 0x8833, 375 => 'ISOSpeed' },
+	'isosetting' => { 111 => 0x5e, 125 => 'ISOSetting', 147 => 0x24, 148 => 0x26, 149 => 0x1c, 150 => 0x13, 155 => 0x6, 182 => 0x13, 265 => '17.3', 305 => 0x27, 323 => 0x16, 324 => 0x14, 325 => 0x2 },
+	'isospeed' => { 95 => 0x8833, 381 => 'ISOSpeed' },
 	'isospeedexpansion' => { 67 => 0x3 },
 	'isospeedincrements' => { 68 => 0x102 },
-	'isospeedlatitudeyyy' => { 95 => 0x8834, 375 => 'ISOSpeedLatitudeyyy' },
-	'isospeedlatitudezzz' => { 95 => 0x8835, 375 => 'ISOSpeedLatitudezzz' },
+	'isospeedlatitudeyyy' => { 95 => 0x8834, 381 => 'ISOSpeedLatitudeyyy' },
+	'isospeedlatitudezzz' => { 95 => 0x8835, 381 => 'ISOSpeedLatitudezzz' },
 	'isospeedrange' => { 68 => 0x103 },
 	'isostepsize' => { 222 => '6.1', 227 => '4.1' },
 	'isovalue' => { 238 => 0x1001 },
-	'issn' => { 384 => 'issn' },
-	'issueidentifier' => { 384 => 'issueIdentifier' },
-	'issuename' => { 384 => 'issueName' },
-	'istranslationof' => { 384 => 'isTranslationOf' },
+	'issn' => { 390 => 'issn' },
+	'issueidentifier' => { 390 => 'issueIdentifier' },
+	'issuename' => { 390 => 'issueName' },
+	'istranslationof' => { 390 => 'isTranslationOf' },
 	'jobid' => { 103 => 0xb8 },
-	'jobname' => { 376 => 'JobName' },
-	'jobref' => { 392 => 'JobRef' },
-	'jobrefid' => { 392 => [\'JobRef','JobRefId'] },
-	'jobrefname' => { 392 => [\'JobRef','JobRefName'] },
-	'jobrefurl' => { 392 => [\'JobRef','JobRefUrl'] },
-	'jobstatus' => { 376 => 'JobStatus' },
-	'jpegquality' => { 8 => 0x66, 254 => 0x3034, 331 => 0xb047 },
-	'jpegsize' => { 254 => 0x303a },
-	'jpgfromraw' => { 81 => 0x2007, 92 => 'JpgFromRaw', 256 => 0x2e },
+	'jobname' => { 382 => 'JobName' },
+	'jobref' => { 398 => 'JobRef' },
+	'jobrefid' => { 398 => [\'JobRef','JobRefId'] },
+	'jobrefname' => { 398 => [\'JobRef','JobRefName'] },
+	'jobrefurl' => { 398 => [\'JobRef','JobRefUrl'] },
+	'jobstatus' => { 382 => 'JobStatus' },
+	'jpegquality' => { 8 => 0x66, 255 => 0x3034, 335 => 0xb047 },
+	'jpegsize' => { 255 => 0x303a },
+	'jpgfromraw' => { 81 => 0x2007, 92 => 'JpgFromRaw', 257 => 0x2e },
 	'jpgfromrawlength' => { 95 => [0x117,0x202] },
 	'jpgfromrawstart' => { 95 => [0x111,0x201] },
-	'jpgrecordedpixels' => { 264 => '14.1' },
-	'jurisdiction' => { 368 => 'jurisdiction' },
-	'kelvinwb_01' => { 272 => 0x5 },
-	'kelvinwb_02' => { 272 => 0x9 },
-	'kelvinwb_03' => { 272 => 0xd },
-	'kelvinwb_04' => { 272 => 0x11 },
-	'kelvinwb_05' => { 272 => 0x15 },
-	'kelvinwb_06' => { 272 => 0x19 },
-	'kelvinwb_07' => { 272 => 0x1d },
-	'kelvinwb_08' => { 272 => 0x21 },
-	'kelvinwb_09' => { 272 => 0x25 },
-	'kelvinwb_10' => { 272 => 0x29 },
-	'kelvinwb_11' => { 272 => 0x2d },
-	'kelvinwb_12' => { 272 => 0x31 },
-	'kelvinwb_13' => { 272 => 0x35 },
-	'kelvinwb_14' => { 272 => 0x39 },
-	'kelvinwb_15' => { 272 => 0x3d },
-	'kelvinwb_16' => { 272 => 0x41 },
-	'kelvinwb_daylight' => { 272 => 0x1 },
-	'key' => { 393 => 'key' },
-	'keyword' => { 384 => 'keyword' },
+	'jpgrecordedpixels' => { 265 => '14.1' },
+	'jurisdiction' => { 374 => 'jurisdiction' },
+	'kelvinwb_01' => { 273 => 0x5 },
+	'kelvinwb_02' => { 273 => 0x9 },
+	'kelvinwb_03' => { 273 => 0xd },
+	'kelvinwb_04' => { 273 => 0x11 },
+	'kelvinwb_05' => { 273 => 0x15 },
+	'kelvinwb_06' => { 273 => 0x19 },
+	'kelvinwb_07' => { 273 => 0x1d },
+	'kelvinwb_08' => { 273 => 0x21 },
+	'kelvinwb_09' => { 273 => 0x25 },
+	'kelvinwb_10' => { 273 => 0x29 },
+	'kelvinwb_11' => { 273 => 0x2d },
+	'kelvinwb_12' => { 273 => 0x31 },
+	'kelvinwb_13' => { 273 => 0x35 },
+	'kelvinwb_14' => { 273 => 0x39 },
+	'kelvinwb_15' => { 273 => 0x3d },
+	'kelvinwb_16' => { 273 => 0x41 },
+	'kelvinwb_daylight' => { 273 => 0x1 },
+	'key' => { 399 => 'key' },
+	'keyword' => { 390 => 'keyword' },
 	'keywordinfo' => { 140 => 'Keywords' },
-	'keywords' => { 103 => 0x19, 126 => 'Keywords', 242 => 'Keywords', 296 => 'Keywords', 365 => 'keywords', 381 => 'Keywords', 391 => 'Keywords' },
-	'killdate' => { 384 => 'killDate' },
+	'keywords' => { 103 => 0x19, 126 => 'Keywords', 242 => 'Keywords', 297 => 'Keywords', 371 => 'keywords', 387 => 'Keywords', 397 => 'Keywords' },
+	'killdate' => { 390 => 'killDate' },
 	'kodakimageheight' => { 108 => 0xf908, 111 => 0xe, 113 => [0xfa1e,0xfa52], 119 => 0x70 },
 	'kodakimagewidth' => { 108 => 0xf907, 111 => 0xc, 113 => [0xfa1d,0xfa51], 119 => 0x6c },
 	'kodakinfotype' => { 108 => 0xfa00 },
 	'kodakmaker' => { 119 => 0x8 },
 	'kodakmodel' => { 111 => 0x0, 119 => 0x28 },
-	'label' => { 244 => 'Label', 391 => 'Label' },
-	'labelname1' => { 378 => [\'TagStructure','TagStructureLabelName'] },
-	'labelname2' => { 378 => [\'TagStructure','TagStructureSubLabelsLabelName'] },
-	'labelname3' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsLabelName'] },
-	'labelname4' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsLabelName'] },
-	'labelname5' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsLabelName'] },
-	'labelname6' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsLabelName'] },
-	'landmark' => { 252 => 0x6f },
+	'label' => { 245 => 'Label', 397 => 'Label' },
+	'labelname1' => { 384 => [\'TagStructure','TagStructureLabelName'] },
+	'labelname2' => { 384 => [\'TagStructure','TagStructureSubLabelsLabelName'] },
+	'labelname3' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsLabelName'] },
+	'labelname4' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsLabelName'] },
+	'labelname5' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsLabelName'] },
+	'labelname6' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsLabelName'] },
+	'landmark' => { 253 => 0x6f },
 	'landscapeoutputhighlightpoint' => { 87 => 0x26 },
 	'landscapeoutputshadowpoint' => { 87 => 0x27 },
 	'landscaperawcolortone' => { 87 => 0x1f },
@@ -2380,193 +2435,195 @@ my %tagLookup = (
 	'landscapeunsharpmaskfineness' => { 87 => 0xa0 },
 	'landscapeunsharpmaskstrength' => { 87 => 0x9e },
 	'landscapeunsharpmaskthreshold' => { 87 => 0xa2 },
-	'language' => { 371 => 'language' },
+	'language' => { 377 => 'language' },
 	'languageidentifier' => { 103 => 0x87 },
-	'largestvalidinteriorrectheight' => { 360 => 'LargestValidInteriorRectHeight' },
-	'largestvalidinteriorrectleft' => { 360 => 'LargestValidInteriorRectLeft' },
-	'largestvalidinteriorrecttop' => { 360 => 'LargestValidInteriorRectTop' },
-	'largestvalidinteriorrectwidth' => { 360 => 'LargestValidInteriorRectWidth' },
+	'largestvalidinteriorrectheight' => { 366 => 'LargestValidInteriorRectHeight' },
+	'largestvalidinteriorrectleft' => { 366 => 'LargestValidInteriorRectLeft' },
+	'largestvalidinteriorrecttop' => { 366 => 'LargestValidInteriorRectTop' },
+	'largestvalidinteriorrectwidth' => { 366 => 'LargestValidInteriorRectWidth' },
 	'lastfilenumber' => { 147 => 0x1b },
 	'lastkeywordiptc' => { 145 => 'LastKeywordIPTC' },
 	'lastkeywordxmp' => { 145 => 'LastKeywordXMP' },
-	'lastphotodate' => { 360 => 'LastPhotoDate' },
-	'lasturl' => { 394 => 'LastURL' },
-	'lateralchromaticaberration' => { 331 => 0x2012 },
+	'lastphotodate' => { 366 => 'LastPhotoDate' },
+	'lasturl' => { 400 => 'LastURL' },
+	'lateralchromaticaberration' => { 335 => 0x2012 },
 	'latestageorhigheststage' => { 94 => [\'GeologicalContext','GeologicalContextLatestAgeOrHighestStage'] },
 	'latesteonorhighesteonothem' => { 94 => [\'GeologicalContext','GeologicalContextLatestEonOrHighestEonothem'] },
 	'latestepochorhighestseries' => { 94 => [\'GeologicalContext','GeologicalContextLatestEpochOrHighestSeries'] },
 	'latesteraorhighesterathem' => { 94 => [\'GeologicalContext','GeologicalContextLatestEraOrHighestErathem'] },
 	'latestperiodorhighestsystem' => { 94 => [\'GeologicalContext','GeologicalContextLatestPeriodOrHighestSystem'] },
-	'lc1' => { 274 => 0x2 },
-	'lc10' => { 274 => 0xb },
-	'lc11' => { 274 => 0xc },
-	'lc12' => { 274 => 0xd },
-	'lc14' => { 274 => 0xf },
-	'lc15' => { 274 => 0x10 },
-	'lc2' => { 274 => 0x3 },
-	'lc3' => { 274 => 0x4 },
-	'lc4' => { 274 => 0x5 },
-	'lc5' => { 274 => 0x6 },
-	'lc6' => { 274 => 0x7 },
-	'lc7' => { 274 => 0x8 },
+	'lc1' => { 275 => 0x2 },
+	'lc10' => { 275 => 0xb },
+	'lc11' => { 275 => 0xc },
+	'lc12' => { 275 => 0xd },
+	'lc14' => { 275 => 0xf },
+	'lc15' => { 275 => 0x10 },
+	'lc2' => { 275 => 0x3 },
+	'lc3' => { 275 => 0x4 },
+	'lc4' => { 275 => 0x5 },
+	'lc5' => { 275 => 0x6 },
+	'lc6' => { 275 => 0x7 },
+	'lc7' => { 275 => 0x8 },
 	'lcddisplayatpoweron' => { 68 => 0x811, 72 => 0xa },
 	'lcddisplayreturntoshoot' => { 73 => 0x12 },
 	'lcdillumination' => { 222 => '17.5', 227 => '10.3', 228 => '4.2', 231 => '5.4' },
 	'lcdilluminationduringbulb' => { 68 => 0x408 },
 	'lcdpanels' => { 67 => 0x8 },
 	'lcheditor' => { 215 => 0x8ae85e },
-	'legacyiptcdigest' => { 382 => 'LegacyIPTCDigest' },
-	'legalcode' => { 368 => 'legalcode' },
-	'lens' => { 95 => 0xfdea, 182 => 0x84, 367 => 'Lens' },
+	'legacyiptcdigest' => { 388 => 'LegacyIPTCDigest' },
+	'legalcode' => { 374 => 'legalcode' },
+	'lens' => { 95 => 0xfdea, 182 => 0x84, 373 => 'Lens' },
 	'lensafstopbutton' => { 66 => 0x11, 67 => 0x13, 68 => 0x506, 69 => 0x10, 70 => 0x12, 73 => 0x13, 74 => 0x9 },
-	'lensaperturerange' => { 314 => [0x30,0x48] },
+	'lensaperturerange' => { 315 => [0x30,0x48] },
 	'lensdistortionparams' => { 238 => 0x206 },
 	'lensdrivenoaf' => { 68 => 0x505 },
-	'lensfirmware' => { 306 => 0x20, 311 => 0xa004 },
-	'lensfirmwareversion' => { 234 => 0x204, 252 => 0x60 },
-	'lensfocalrange' => { 314 => [0xa,0x2a] },
-	'lensformat' => { 345 => 0x106, 351 => 0x603, 352 => 0x5d },
-	'lensfstops' => { 177 => 0x7, 178 => 0xc, 179 => 0xd, 182 => 0x8b, 274 => '0.3' },
-	'lensid' => { 367 => 'LensID' },
+	'lensfirmware' => { 307 => 0x20, 312 => 0xa004 },
+	'lensfirmwareversion' => { 234 => 0x204, 253 => 0x60 },
+	'lensfocalrange' => { 315 => [0xa,0x2a] },
+	'lensformat' => { 346 => 0x1891, 348 => 0x18bd, 349 => 0x106, 357 => 0x603, 358 => 0x5d },
+	'lensfstops' => { 177 => 0x7, 178 => 0xc, 179 => 0xd, 182 => 0x8b, 275 => '0.3' },
+	'lensid' => { 373 => 'LensID' },
 	'lensidnumber' => { 177 => 0x6, 178 => 0xb, 179 => 0xc },
-	'lensinfo' => { 95 => 0xa432, 280 => 0x2a, 367 => 'LensInfo', 375 => 'LensSpecification' },
-	'lenskind' => { 274 => 0x1 },
-	'lensmake' => { 95 => 0xa433, 132 => 'Make', 375 => 'LensMake' },
-	'lensmanualdistortionamount' => { 370 => 'LensManualDistortionAmount' },
+	'lensinfo' => { 95 => 0xa432, 281 => 0x2a, 373 => 'LensInfo', 381 => 'LensSpecification' },
+	'lenskind' => { 275 => 0x1 },
+	'lensmake' => { 95 => 0xa433, 132 => 'Make', 381 => 'LensMake' },
+	'lensmanualdistortionamount' => { 376 => 'LensManualDistortionAmount' },
 	'lensmanufacturer' => { 145 => 'LensManufacturer' },
-	'lensmaxaperturerange' => { 314 => 0x2b },
-	'lensmodel' => { 5 => 0x937, 12 => 0x92b, 13 => 0x933, 51 => 0x95, 95 => 0xa434, 132 => 'Model', 145 => 'LensModel', 180 => 0x18a, 234 => 0x203, 250 => 0x303, 280 => 0xc, 375 => 'LensModel' },
-	'lensmount' => { 321 => 0x99, 345 => 0x105, 351 => 0x604, 352 => 0x5e, 355 => 0x8 },
-	'lensprofilechromaticaberrationscale' => { 370 => 'LensProfileChromaticAberrationScale' },
-	'lensprofiledigest' => { 370 => 'LensProfileDigest' },
-	'lensprofiledistortionscale' => { 370 => 'LensProfileDistortionScale' },
-	'lensprofileenable' => { 370 => 'LensProfileEnable' },
-	'lensprofilefilename' => { 370 => 'LensProfileFilename' },
-	'lensprofilename' => { 370 => 'LensProfileName' },
-	'lensprofilesetup' => { 370 => 'LensProfileSetup' },
-	'lensprofilevignettingscale' => { 370 => 'LensProfileVignettingScale' },
+	'lensmaxaperturerange' => { 315 => 0x2b },
+	'lensmodel' => { 5 => 0x937, 12 => 0x92b, 13 => 0x933, 51 => 0x95, 95 => 0xa434, 132 => 'Model', 145 => 'LensModel', 180 => 0x18a, 234 => 0x203, 251 => 0x303, 281 => 0xc, 381 => 'LensModel' },
+	'lensmount' => { 325 => 0x99, 346 => 0x1892, 348 => 0x18be, 349 => 0x105, 357 => 0x604, 358 => 0x5e, 361 => 0x8 },
+	'lensparameters' => { 343 => 0x1a23, 346 => 0x1870, 348 => 0x189c, 357 => 0x6ca, 358 => 0x64 },
+	'lensprofilechromaticaberrationscale' => { 376 => 'LensProfileChromaticAberrationScale' },
+	'lensprofiledigest' => { 376 => 'LensProfileDigest' },
+	'lensprofiledistortionscale' => { 376 => 'LensProfileDistortionScale' },
+	'lensprofileenable' => { 376 => 'LensProfileEnable' },
+	'lensprofilefilename' => { 376 => 'LensProfileFilename' },
+	'lensprofilename' => { 376 => 'LensProfileName' },
+	'lensprofilesetup' => { 376 => 'LensProfileSetup' },
+	'lensprofilevignettingscale' => { 376 => 'LensProfileVignettingScale' },
 	'lensproperties' => { 234 => 0x20b },
-	'lensserialnumber' => { 49 => 0x0, 95 => 0xa435, 132 => 'SerialNumber', 234 => 0x202, 252 => 0x52, 306 => 0x30, 367 => 'LensSerialNumber', 375 => 'LensSerialNumber' },
+	'lensserialnumber' => { 49 => 0x0, 95 => 0xa435, 132 => 'SerialNumber', 234 => 0x202, 253 => 0x52, 307 => 0x30, 373 => 'LensSerialNumber', 381 => 'LensSerialNumber' },
 	'lensshutterlock' => { 150 => 0x4a },
-	'lensspec' => { 317 => 0x0, 318 => 0x0, 331 => 0xb02a },
+	'lensspec' => { 320 => 0x0, 321 => 0x0, 322 => 0x0, 335 => 0xb02a },
 	'lenstemperature' => { 238 => 0x1008 },
-	'lenstype' => { 5 => 0xe2, 6 => 0xd, 7 => 0x1a7, 8 => 0xc, 9 => 0x111, 10 => 0xc, 11 => 0x14f, 12 => 0xd6, 13 => 0xde, 14 => 0xf6, 15 => 0xea, 16 => 0xff, 17 => [0xc,0x97], 18 => 0xe6, 19 => 0x153, 20 => 0xea, 21 => 0xe8, 22 => 0x127, 23 => 0x161, 24 => 0x166, 25 => 0x112, 29 => 0x16, 152 => 0x10c, 153 => 0x49bd, 182 => 0x83, 234 => 0x201, 245 => 0x16, 248 => 0x310, 251 => 0x303, 252 => 0x51, 254 => 0x3405, 275 => 0x0, 276 => 0x0, 277 => 0x1, 278 => 0x1, 279 => 0x1, 281 => 0x0, 311 => 0xa003, 314 => 0x27, 331 => 0xb027, 345 => 0x109, 351 => 0x608, 352 => 0x62 },
-	'lenstype2' => { 321 => 0x3f7, 345 => 0x107, 351 => 0x605, 352 => 0x60, 355 => 0x9 },
+	'lenstype' => { 5 => 0xe2, 6 => 0xd, 7 => 0x1a7, 8 => 0xc, 9 => 0x111, 10 => 0xc, 11 => 0x14f, 12 => 0xd6, 13 => 0xde, 14 => 0xf6, 15 => 0xea, 16 => 0xff, 17 => [0xc,0x97], 18 => 0xe6, 19 => 0x153, 20 => 0xea, 21 => 0xe8, 22 => 0x127, 23 => 0x161, 24 => 0x166, 25 => 0x112, 29 => 0x16, 152 => 0x10c, 153 => 0x49bd, 182 => 0x83, 234 => 0x201, 246 => 0x16, 249 => 0x310, 252 => 0x303, 253 => 0x51, 255 => 0x3405, 276 => 0x0, 277 => 0x0, 278 => 0x1, 279 => 0x1, 280 => 0x1, 282 => 0x0, 312 => 0xa003, 315 => 0x27, 335 => 0xb027, 346 => 0x1896, 348 => 0x18c2, 349 => 0x109, 357 => 0x608, 358 => 0x62 },
+	'lenstype2' => { 325 => 0x3f7, 346 => 0x1893, 348 => 0x18bf, 349 => 0x107, 357 => 0x605, 358 => 0x60, 361 => 0x9 },
+	'lenszoomposition' => { 355 => 0x19, 356 => 0x1e, 358 => 0x342 },
 	'levelgaugepitch' => { 233 => 0x904 },
 	'levelgaugeroll' => { 233 => 0x903 },
-	'levelindicator' => { 257 => 0x15 },
-	'levelorientation' => { 282 => 0x0 },
-	'license' => { 368 => 'license' },
-	'licensee' => { 383 => 'Licensee' },
-	'licenseeid' => { 383 => [\'Licensee','LicenseeLicenseeID'] },
-	'licenseeimageid' => { 383 => 'LicenseeImageID' },
-	'licenseeimagenotes' => { 383 => 'LicenseeImageNotes' },
-	'licenseename' => { 383 => [\'Licensee','LicenseeLicenseeName'] },
-	'licenseenddate' => { 383 => 'LicenseEndDate' },
-	'licenseeprojectreference' => { 383 => 'LicenseeProjectReference' },
-	'licenseetransactionid' => { 383 => 'LicenseeTransactionID' },
-	'licenseid' => { 383 => 'LicenseID' },
-	'licensestartdate' => { 383 => 'LicenseStartDate' },
-	'licensetransactiondate' => { 383 => 'LicenseTransactionDate' },
-	'licensetype' => { 372 => 'licensetype' },
-	'licensor' => { 383 => 'Licensor' },
-	'licensorcity' => { 383 => [\'Licensor','LicensorLicensorCity'] },
-	'licensorcountry' => { 383 => [\'Licensor','LicensorLicensorCountry'] },
-	'licensoremail' => { 383 => [\'Licensor','LicensorLicensorEmail'] },
-	'licensorextendedaddress' => { 383 => [\'Licensor','LicensorLicensorExtendedAddress'] },
-	'licensorid' => { 383 => [\'Licensor','LicensorLicensorID'] },
-	'licensorimageid' => { 383 => 'LicensorImageID' },
-	'licensorname' => { 383 => [\'Licensor','LicensorLicensorName'] },
-	'licensornotes' => { 383 => 'LicensorNotes' },
-	'licensorpostalcode' => { 383 => [\'Licensor','LicensorLicensorPostalCode'] },
-	'licensorregion' => { 383 => [\'Licensor','LicensorLicensorRegion'] },
-	'licensorstreetaddress' => { 383 => [\'Licensor','LicensorLicensorStreetAddress'] },
-	'licensortelephone1' => { 383 => [\'Licensor','LicensorLicensorTelephone1'] },
-	'licensortelephone2' => { 383 => [\'Licensor','LicensorLicensorTelephone2'] },
-	'licensortelephonetype1' => { 383 => [\'Licensor','LicensorLicensorTelephoneType1'] },
-	'licensortelephonetype2' => { 383 => [\'Licensor','LicensorLicensorTelephoneType2'] },
-	'licensortransactionid' => { 383 => 'LicensorTransactionID' },
-	'licensorurl' => { 383 => [\'Licensor','LicensorLicensorURL'] },
+	'levelindicator' => { 258 => 0x15 },
+	'levelorientation' => { 283 => 0x0 },
+	'license' => { 374 => 'license' },
+	'licensee' => { 389 => 'Licensee' },
+	'licenseeid' => { 389 => [\'Licensee','LicenseeLicenseeID'] },
+	'licenseeimageid' => { 389 => 'LicenseeImageID' },
+	'licenseeimagenotes' => { 389 => 'LicenseeImageNotes' },
+	'licenseename' => { 389 => [\'Licensee','LicenseeLicenseeName'] },
+	'licenseenddate' => { 389 => 'LicenseEndDate' },
+	'licenseeprojectreference' => { 389 => 'LicenseeProjectReference' },
+	'licenseetransactionid' => { 389 => 'LicenseeTransactionID' },
+	'licenseid' => { 389 => 'LicenseID' },
+	'licensestartdate' => { 389 => 'LicenseStartDate' },
+	'licensetransactiondate' => { 389 => 'LicenseTransactionDate' },
+	'licensetype' => { 378 => 'licensetype' },
+	'licensor' => { 389 => 'Licensor' },
+	'licensorcity' => { 389 => [\'Licensor','LicensorLicensorCity'] },
+	'licensorcountry' => { 389 => [\'Licensor','LicensorLicensorCountry'] },
+	'licensoremail' => { 389 => [\'Licensor','LicensorLicensorEmail'] },
+	'licensorextendedaddress' => { 389 => [\'Licensor','LicensorLicensorExtendedAddress'] },
+	'licensorid' => { 389 => [\'Licensor','LicensorLicensorID'] },
+	'licensorimageid' => { 389 => 'LicensorImageID' },
+	'licensorname' => { 389 => [\'Licensor','LicensorLicensorName'] },
+	'licensornotes' => { 389 => 'LicensorNotes' },
+	'licensorpostalcode' => { 389 => [\'Licensor','LicensorLicensorPostalCode'] },
+	'licensorregion' => { 389 => [\'Licensor','LicensorLicensorRegion'] },
+	'licensorstreetaddress' => { 389 => [\'Licensor','LicensorLicensorStreetAddress'] },
+	'licensortelephone1' => { 389 => [\'Licensor','LicensorLicensorTelephone1'] },
+	'licensortelephone2' => { 389 => [\'Licensor','LicensorLicensorTelephone2'] },
+	'licensortelephonetype1' => { 389 => [\'Licensor','LicensorLicensorTelephoneType1'] },
+	'licensortelephonetype2' => { 389 => [\'Licensor','LicensorLicensorTelephoneType2'] },
+	'licensortransactionid' => { 389 => 'LicensorTransactionID' },
+	'licensorurl' => { 389 => [\'Licensor','LicensorLicensorURL'] },
 	'lightcondition' => { 238 => 0x1009 },
 	'lightingmode' => { 91 => 0x302a },
-	'lightreading' => { 283 => 0x15 },
-	'lightsource' => { 95 => 0x9208, 182 => 0x90, 241 => 0x1000, 374 => 'LightSource' },
-	'lightsourcespecial' => { 313 => 0x21d },
+	'lightreading' => { 284 => 0x15 },
+	'lightsource' => { 95 => 0x9208, 182 => 0x90, 241 => 0x1000, 380 => 'LightSource' },
+	'lightsourcespecial' => { 314 => 0x21d },
 	'lightswitch' => { 231 => '0.1' },
 	'lightvaluecenter' => { 238 => 0x103d },
 	'lightvalueperiphery' => { 238 => 0x103e },
-	'linearitylimitblue' => { 256 => 0x10 },
-	'linearitylimitgreen' => { 256 => 0xf },
-	'linearitylimitred' => { 256 => 0xe },
+	'linearitylimitblue' => { 257 => 0x10 },
+	'linearitylimitgreen' => { 257 => 0xf },
+	'linearitylimitred' => { 257 => 0xe },
 	'linearityuppermargin' => { 36 => [0x2ba,0x2d1,0x2d5], 38 => 0x1e5, 39 => 0x1fe },
 	'linearizationtable' => { 95 => 0xc618 },
 	'linearresponselimit' => { 95 => 0xc62e },
-	'linkaetoafpoint' => { 264 => '14.2' },
+	'linkaetoafpoint' => { 265 => '14.2' },
 	'lithostratigraphicterms' => { 94 => [\'GeologicalContext','GeologicalContextLithostratigraphicTerms'] },
 	'liveviewaf' => { 224 => '32.1', 231 => '34.1' },
 	'liveviewafareamode' => { 228 => '34.1' },
-	'liveviewafmethod' => { 335 => 0x20 },
+	'liveviewafmethod' => { 339 => 0x20 },
 	'liveviewafmode' => { 228 => '34.2' },
-	'liveviewafsetting' => { 321 => 0x36 },
+	'liveviewafsetting' => { 325 => 0x36 },
 	'liveviewexposuresimulation' => { 68 => 0x810 },
-	'liveviewfocusmode' => { 321 => [0x8b,0x28b] },
-	'liveviewmetering' => { 321 => [0x84,0x284] },
+	'liveviewfocusmode' => { 325 => [0x8b,0x28b] },
+	'liveviewmetering' => { 325 => [0x84,0x284] },
 	'liveviewmonitorofftime' => { 225 => '20.2', 226 => '20.2', 228 => '20.2' },
 	'liveviewshooting' => { 46 => 0x13 },
 	'localcaption' => { 103 => 0x79 },
 	'localizedcameramodel' => { 95 => 0xc615 },
-	'locallocationname' => { 311 => 0x30 },
-	'location' => { 181 => 0x9, 252 => 0x67, 363 => 'Location', 379 => 'Location', 384 => 'location' },
-	'locationareacode' => { 369 => 'lac' },
-	'locationcreated' => { 380 => 'LocationCreated' },
-	'locationcreatedcity' => { 380 => [\'LocationCreated','LocationCreatedCity'] },
-	'locationcreatedcountrycode' => { 380 => [\'LocationCreated','LocationCreatedCountryCode'] },
-	'locationcreatedcountryname' => { 380 => [\'LocationCreated','LocationCreatedCountryName'] },
-	'locationcreatedprovincestate' => { 380 => [\'LocationCreated','LocationCreatedProvinceState'] },
-	'locationcreatedsublocation' => { 380 => [\'LocationCreated','LocationCreatedSublocation'] },
-	'locationcreatedworldregion' => { 380 => [\'LocationCreated','LocationCreatedWorldRegion'] },
+	'locallocationname' => { 312 => 0x30 },
+	'location' => { 181 => 0x9, 253 => 0x67, 369 => 'Location', 385 => 'Location', 390 => 'location' },
+	'locationareacode' => { 375 => 'lac' },
+	'locationcreated' => { 386 => 'LocationCreated' },
+	'locationcreatedcity' => { 386 => [\'LocationCreated','LocationCreatedCity'] },
+	'locationcreatedcountrycode' => { 386 => [\'LocationCreated','LocationCreatedCountryCode'] },
+	'locationcreatedcountryname' => { 386 => [\'LocationCreated','LocationCreatedCountryName'] },
+	'locationcreatedprovincestate' => { 386 => [\'LocationCreated','LocationCreatedProvinceState'] },
+	'locationcreatedsublocation' => { 386 => [\'LocationCreated','LocationCreatedSublocation'] },
+	'locationcreatedworldregion' => { 386 => [\'LocationCreated','LocationCreatedWorldRegion'] },
 	'locationinfoversion' => { 181 => 0x0 },
-	'locationname' => { 311 => 0x31 },
-	'locationshown' => { 380 => 'LocationShown' },
-	'locationshowncity' => { 380 => [\'LocationShown','LocationShownCity'] },
-	'locationshowncountrycode' => { 380 => [\'LocationShown','LocationShownCountryCode'] },
-	'locationshowncountryname' => { 380 => [\'LocationShown','LocationShownCountryName'] },
-	'locationshownprovincestate' => { 380 => [\'LocationShown','LocationShownProvinceState'] },
-	'locationshownsublocation' => { 380 => [\'LocationShown','LocationShownSublocation'] },
-	'locationshownworldregion' => { 380 => [\'LocationShown','LocationShownWorldRegion'] },
+	'locationname' => { 312 => 0x31 },
+	'locationshown' => { 386 => 'LocationShown' },
+	'locationshowncity' => { 386 => [\'LocationShown','LocationShownCity'] },
+	'locationshowncountrycode' => { 386 => [\'LocationShown','LocationShownCountryCode'] },
+	'locationshowncountryname' => { 386 => [\'LocationShown','LocationShownCountryName'] },
+	'locationshownprovincestate' => { 386 => [\'LocationShown','LocationShownProvinceState'] },
+	'locationshownsublocation' => { 386 => [\'LocationShown','LocationShownSublocation'] },
+	'locationshownworldregion' => { 386 => [\'LocationShown','LocationShownWorldRegion'] },
 	'lockmicrophonebutton' => { 68 => 0x709 },
-	'logcomment' => { 393 => 'logComment' },
-	'longexposurenoisereduction' => { 68 => 0x201, 69 => 0x1, 70 => 0x2, 71 => 0x1, 72 => 0x1, 73 => 0x2, 74 => 0x1, 252 => 0x49, 319 => 0x2b, 320 => 0x25, 321 => 0x25, 331 => 0x2008, 335 => 0x11, 352 => 0x44 },
+	'logcomment' => { 399 => 'logComment' },
+	'longexposurenoisereduction' => { 68 => 0x201, 69 => 0x1, 70 => 0x2, 71 => 0x1, 72 => 0x1, 73 => 0x2, 74 => 0x1, 253 => 0x49, 323 => 0x2b, 324 => 0x25, 325 => 0x25, 335 => 0x2008, 339 => 0x11, 358 => 0x44 },
 	'longexposurenoisereduction2' => { 46 => 0x8 },
-	'loop' => { 393 => 'loop' },
+	'loop' => { 399 => 'loop' },
 	'lowestbiostratigraphiczone' => { 94 => [\'GeologicalContext','GeologicalContextLowestBiostratigraphicZone'] },
-	'luminanceadjustmentaqua' => { 370 => 'LuminanceAdjustmentAqua' },
-	'luminanceadjustmentblue' => { 370 => 'LuminanceAdjustmentBlue' },
-	'luminanceadjustmentgreen' => { 370 => 'LuminanceAdjustmentGreen' },
-	'luminanceadjustmentmagenta' => { 370 => 'LuminanceAdjustmentMagenta' },
-	'luminanceadjustmentorange' => { 370 => 'LuminanceAdjustmentOrange' },
-	'luminanceadjustmentpurple' => { 370 => 'LuminanceAdjustmentPurple' },
-	'luminanceadjustmentred' => { 370 => 'LuminanceAdjustmentRed' },
-	'luminanceadjustmentyellow' => { 370 => 'LuminanceAdjustmentYellow' },
+	'luminanceadjustmentaqua' => { 376 => 'LuminanceAdjustmentAqua' },
+	'luminanceadjustmentblue' => { 376 => 'LuminanceAdjustmentBlue' },
+	'luminanceadjustmentgreen' => { 376 => 'LuminanceAdjustmentGreen' },
+	'luminanceadjustmentmagenta' => { 376 => 'LuminanceAdjustmentMagenta' },
+	'luminanceadjustmentorange' => { 376 => 'LuminanceAdjustmentOrange' },
+	'luminanceadjustmentpurple' => { 376 => 'LuminanceAdjustmentPurple' },
+	'luminanceadjustmentred' => { 376 => 'LuminanceAdjustmentRed' },
+	'luminanceadjustmentyellow' => { 376 => 'LuminanceAdjustmentYellow' },
 	'luminancecurvelimits' => { 86 => 0x150 },
 	'luminancecurvepoints' => { 86 => 0x126 },
-	'luminancenoisereduction' => { 87 => 0x5f, 314 => 0x1b },
-	'luminancenoisereductioncontrast' => { 370 => 'LuminanceNoiseReductionContrast' },
-	'luminancenoisereductiondetail' => { 370 => 'LuminanceNoiseReductionDetail' },
+	'luminancenoisereduction' => { 87 => 0x5f, 315 => 0x1b },
+	'luminancenoisereductioncontrast' => { 376 => 'LuminanceNoiseReductionContrast' },
+	'luminancenoisereductiondetail' => { 376 => 'LuminanceNoiseReductionDetail' },
 	'luminancenr_tiff_jpeg' => { 87 => 0x6d },
-	'luminancesmoothing' => { 370 => 'LuminanceSmoothing' },
+	'luminancesmoothing' => { 376 => 'LuminanceSmoothing' },
 	'lvshootingareadisplay' => { 68 => 0x40b },
-	'lyrics' => { 393 => 'lyrics' },
-	'm16cversion' => { 248 => 0x333 },
-	'macro' => { 100 => 0x1020, 101 => 0x202, 238 => 0x202, 304 => 0x21, 313 => 0x202, 331 => 0xb040 },
+	'lyrics' => { 399 => 'lyrics' },
+	'm16cversion' => { 249 => 0x333 },
+	'macro' => { 100 => 0x1020, 101 => 0x202, 238 => 0x202, 305 => 0x21, 314 => 0x202, 335 => 0xb040 },
 	'macroled' => { 236 => 0x120a },
 	'macromagnification' => { 5 => 0x1b, 9 => 0x1b, 12 => 0x1b, 13 => 0x1b, 17 => 0x1b, 18 => 0x1b, 46 => 0x10 },
-	'macromode' => { 29 => 0x1, 147 => 0xb, 233 => 0x300, 252 => 0x1c, 305 => 0x1009 },
+	'macromode' => { 29 => 0x1, 147 => 0xb, 233 => 0x300, 253 => 0x1c, 306 => 0x1009 },
 	'magicfilter' => { 233 => 0x52c },
 	'magnifiedview' => { 70 => 0x11, 72 => 0x9 },
 	'maindialexposurecomp' => { 229 => '0.6' },
-	'make' => { 82 => 0x0, 95 => 0x10f, 125 => 'Make', 244 => 'Make', 256 => 0x10f, 389 => 'Make' },
-	'makernote' => { 374 => 'MakerNote' },
+	'make' => { 82 => 0x0, 95 => 0x10f, 125 => 'Make', 245 => 'Make', 257 => 0x10f, 395 => 'Make' },
+	'makernote' => { 380 => 'MakerNote' },
 	'makernoteapple' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotecanon' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotecasio' => { 93 => 'MakN', 95 => 0x927c },
@@ -2584,6 +2641,7 @@ my %tagLookup = (
 	'makernotejvc' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotejvctext' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotekodak10' => { 93 => 'MakN', 95 => 0x927c },
+	'makernotekodak11' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotekodak1a' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotekodak1b' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotekodak2' => { 93 => 'MakN', 95 => 0x927c },
@@ -2612,7 +2670,7 @@ my %tagLookup = (
 	'makernotenikon2' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotenikon3' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotenintendo' => { 93 => 'MakN', 95 => 0x927c },
-	'makernoteoffset' => { 313 => 0xff },
+	'makernoteoffset' => { 314 => 0xff },
 	'makernoteolympus' => { 93 => 'MakN', 95 => 0x927c },
 	'makernoteolympus2' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotepanasonic' => { 93 => 'MakN', 95 => 0x927c },
@@ -2626,6 +2684,7 @@ my %tagLookup = (
 	'makernotephaseone' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotereconyx' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotericoh' => { 93 => 'MakN', 95 => 0x927c },
+	'makernotericoh2' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotericohtext' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotesafety' => { 95 => 0xc635 },
 	'makernotesamsung1a' => { 93 => 'MakN', 95 => 0x927c },
@@ -2642,101 +2701,101 @@ my %tagLookup = (
 	'makernotesony5' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotesonyericsson' => { 93 => 'MakN', 95 => 0x927c },
 	'makernotesonysrf' => { 93 => 'MakN', 95 => 0x927c },
-	'makernotetype' => { 305 => 0x1 },
+	'makernotetype' => { 306 => 0x1 },
 	'makernoteunknown' => { 93 => 'MakN', 95 => 0x927c },
 	'makernoteunknownbinary' => { 93 => 'MakN', 95 => 0x927c },
 	'makernoteunknowntext' => { 93 => 'MakN', 95 => 0x927c },
-	'makernoteversion' => { 152 => 0x0, 182 => 0x1, 238 => 0x0, 252 => 0x8000, 309 => 0x0, 311 => 0x1, 314 => [0x1d,0x1f], 322 => 0x2000 },
-	'managedfrom' => { 394 => 'ManagedFrom' },
-	'managedfromalternatepaths' => { 394 => [\'ManagedFrom','ManagedFromAlternatePaths'] },
-	'managedfromdocumentid' => { 394 => [\'ManagedFrom','ManagedFromDocumentID'] },
-	'managedfromfilepath' => { 394 => [\'ManagedFrom','ManagedFromFilePath'] },
-	'managedfromfrompart' => { 394 => [\'ManagedFrom','ManagedFromFromPart'] },
-	'managedfrominstanceid' => { 394 => [\'ManagedFrom','ManagedFromInstanceID'] },
-	'managedfromlastmodifydate' => { 394 => [\'ManagedFrom','ManagedFromLastModifyDate'] },
-	'managedfrommanager' => { 394 => [\'ManagedFrom','ManagedFromManager'] },
-	'managedfrommanagervariant' => { 394 => [\'ManagedFrom','ManagedFromManagerVariant'] },
-	'managedfrommanageto' => { 394 => [\'ManagedFrom','ManagedFromManageTo'] },
-	'managedfrommanageui' => { 394 => [\'ManagedFrom','ManagedFromManageUI'] },
-	'managedfrommaskmarkers' => { 394 => [\'ManagedFrom','ManagedFromMaskMarkers'] },
-	'managedfromoriginaldocumentid' => { 394 => [\'ManagedFrom','ManagedFromOriginalDocumentID'] },
-	'managedfrompartmapping' => { 394 => [\'ManagedFrom','ManagedFromPartMapping'] },
-	'managedfromrenditionclass' => { 394 => [\'ManagedFrom','ManagedFromRenditionClass'] },
-	'managedfromrenditionparams' => { 394 => [\'ManagedFrom','ManagedFromRenditionParams'] },
-	'managedfromtopart' => { 394 => [\'ManagedFrom','ManagedFromToPart'] },
-	'managedfromversionid' => { 394 => [\'ManagedFrom','ManagedFromVersionID'] },
-	'manager' => { 394 => 'Manager' },
-	'managervariant' => { 394 => 'ManagerVariant' },
-	'manageto' => { 394 => 'ManageTo' },
-	'manageui' => { 394 => 'ManageUI' },
-	'manifest' => { 394 => 'Manifest' },
-	'manifestlinkform' => { 394 => [\'Manifest','ManifestLinkForm'] },
-	'manifestplacedresolutionunit' => { 394 => [\'Manifest','ManifestPlacedResolutionUnit'] },
-	'manifestplacedxresolution' => { 394 => [\'Manifest','ManifestPlacedXResolution'] },
-	'manifestplacedyresolution' => { 394 => [\'Manifest','ManifestPlacedYResolution'] },
-	'manifestreference' => { 394 => [\'Manifest','ManifestReference'] },
-	'manifestreferencealternatepaths' => { 394 => [\'Manifest','ManifestReferenceAlternatePaths'] },
-	'manifestreferencedocumentid' => { 394 => [\'Manifest','ManifestReferenceDocumentID'] },
-	'manifestreferencefilepath' => { 394 => [\'Manifest','ManifestReferenceFilePath'] },
-	'manifestreferencefrompart' => { 394 => [\'Manifest','ManifestReferenceFromPart'] },
-	'manifestreferenceinstanceid' => { 394 => [\'Manifest','ManifestReferenceInstanceID'] },
-	'manifestreferencelastmodifydate' => { 394 => [\'Manifest','ManifestReferenceLastModifyDate'] },
-	'manifestreferencemanager' => { 394 => [\'Manifest','ManifestReferenceManager'] },
-	'manifestreferencemanagervariant' => { 394 => [\'Manifest','ManifestReferenceManagerVariant'] },
-	'manifestreferencemanageto' => { 394 => [\'Manifest','ManifestReferenceManageTo'] },
-	'manifestreferencemanageui' => { 394 => [\'Manifest','ManifestReferenceManageUI'] },
-	'manifestreferencemaskmarkers' => { 394 => [\'Manifest','ManifestReferenceMaskMarkers'] },
-	'manifestreferenceoriginaldocumentid' => { 394 => [\'Manifest','ManifestReferenceOriginalDocumentID'] },
-	'manifestreferencepartmapping' => { 394 => [\'Manifest','ManifestReferencePartMapping'] },
-	'manifestreferencerenditionclass' => { 394 => [\'Manifest','ManifestReferenceRenditionClass'] },
-	'manifestreferencerenditionparams' => { 394 => [\'Manifest','ManifestReferenceRenditionParams'] },
-	'manifestreferencetopart' => { 394 => [\'Manifest','ManifestReferenceToPart'] },
-	'manifestreferenceversionid' => { 394 => [\'Manifest','ManifestReferenceVersionID'] },
-	'manometerpressure' => { 233 => 0x900, 252 => 0x86 },
+	'makernoteversion' => { 152 => 0x0, 182 => 0x1, 238 => 0x0, 253 => 0x8000, 310 => 0x0, 312 => 0x1, 315 => [0x1d,0x1f], 326 => 0x2000 },
+	'managedfrom' => { 400 => 'ManagedFrom' },
+	'managedfromalternatepaths' => { 400 => [\'ManagedFrom','ManagedFromAlternatePaths'] },
+	'managedfromdocumentid' => { 400 => [\'ManagedFrom','ManagedFromDocumentID'] },
+	'managedfromfilepath' => { 400 => [\'ManagedFrom','ManagedFromFilePath'] },
+	'managedfromfrompart' => { 400 => [\'ManagedFrom','ManagedFromFromPart'] },
+	'managedfrominstanceid' => { 400 => [\'ManagedFrom','ManagedFromInstanceID'] },
+	'managedfromlastmodifydate' => { 400 => [\'ManagedFrom','ManagedFromLastModifyDate'] },
+	'managedfrommanager' => { 400 => [\'ManagedFrom','ManagedFromManager'] },
+	'managedfrommanagervariant' => { 400 => [\'ManagedFrom','ManagedFromManagerVariant'] },
+	'managedfrommanageto' => { 400 => [\'ManagedFrom','ManagedFromManageTo'] },
+	'managedfrommanageui' => { 400 => [\'ManagedFrom','ManagedFromManageUI'] },
+	'managedfrommaskmarkers' => { 400 => [\'ManagedFrom','ManagedFromMaskMarkers'] },
+	'managedfromoriginaldocumentid' => { 400 => [\'ManagedFrom','ManagedFromOriginalDocumentID'] },
+	'managedfrompartmapping' => { 400 => [\'ManagedFrom','ManagedFromPartMapping'] },
+	'managedfromrenditionclass' => { 400 => [\'ManagedFrom','ManagedFromRenditionClass'] },
+	'managedfromrenditionparams' => { 400 => [\'ManagedFrom','ManagedFromRenditionParams'] },
+	'managedfromtopart' => { 400 => [\'ManagedFrom','ManagedFromToPart'] },
+	'managedfromversionid' => { 400 => [\'ManagedFrom','ManagedFromVersionID'] },
+	'manager' => { 400 => 'Manager' },
+	'managervariant' => { 400 => 'ManagerVariant' },
+	'manageto' => { 400 => 'ManageTo' },
+	'manageui' => { 400 => 'ManageUI' },
+	'manifest' => { 400 => 'Manifest' },
+	'manifestlinkform' => { 400 => [\'Manifest','ManifestLinkForm'] },
+	'manifestplacedresolutionunit' => { 400 => [\'Manifest','ManifestPlacedResolutionUnit'] },
+	'manifestplacedxresolution' => { 400 => [\'Manifest','ManifestPlacedXResolution'] },
+	'manifestplacedyresolution' => { 400 => [\'Manifest','ManifestPlacedYResolution'] },
+	'manifestreference' => { 400 => [\'Manifest','ManifestReference'] },
+	'manifestreferencealternatepaths' => { 400 => [\'Manifest','ManifestReferenceAlternatePaths'] },
+	'manifestreferencedocumentid' => { 400 => [\'Manifest','ManifestReferenceDocumentID'] },
+	'manifestreferencefilepath' => { 400 => [\'Manifest','ManifestReferenceFilePath'] },
+	'manifestreferencefrompart' => { 400 => [\'Manifest','ManifestReferenceFromPart'] },
+	'manifestreferenceinstanceid' => { 400 => [\'Manifest','ManifestReferenceInstanceID'] },
+	'manifestreferencelastmodifydate' => { 400 => [\'Manifest','ManifestReferenceLastModifyDate'] },
+	'manifestreferencemanager' => { 400 => [\'Manifest','ManifestReferenceManager'] },
+	'manifestreferencemanagervariant' => { 400 => [\'Manifest','ManifestReferenceManagerVariant'] },
+	'manifestreferencemanageto' => { 400 => [\'Manifest','ManifestReferenceManageTo'] },
+	'manifestreferencemanageui' => { 400 => [\'Manifest','ManifestReferenceManageUI'] },
+	'manifestreferencemaskmarkers' => { 400 => [\'Manifest','ManifestReferenceMaskMarkers'] },
+	'manifestreferenceoriginaldocumentid' => { 400 => [\'Manifest','ManifestReferenceOriginalDocumentID'] },
+	'manifestreferencepartmapping' => { 400 => [\'Manifest','ManifestReferencePartMapping'] },
+	'manifestreferencerenditionclass' => { 400 => [\'Manifest','ManifestReferenceRenditionClass'] },
+	'manifestreferencerenditionparams' => { 400 => [\'Manifest','ManifestReferenceRenditionParams'] },
+	'manifestreferencetopart' => { 400 => [\'Manifest','ManifestReferenceToPart'] },
+	'manifestreferenceversionid' => { 400 => [\'Manifest','ManifestReferenceVersionID'] },
+	'manometerpressure' => { 233 => 0x900, 253 => 0x86 },
 	'manometerreading' => { 233 => 0x901 },
 	'manualafpointselectpattern' => { 68 => 0x513 },
 	'manualflash' => { 236 => 0x1209 },
-	'manualflashoutput' => { 29 => 0x29, 223 => '8.2', 224 => '22.2', 225 => '23.1', 226 => '23.2', 227 => '16.2', 228 => '23.2', 229 => '8.2', 230 => '23.2', 231 => '24.2', 305 => 0x100c },
+	'manualflashoutput' => { 29 => 0x29, 223 => '8.2', 224 => '22.2', 225 => '23.1', 226 => '23.2', 227 => '16.2', 228 => '23.2', 229 => '8.2', 230 => '23.2', 231 => '24.2', 306 => 0x100c },
 	'manualflashstrength' => { 233 => 0x406 },
-	'manualfocusdistance' => { 182 => 0x85, 238 => 0x100c, 313 => 0x223 },
+	'manualfocusdistance' => { 182 => 0x85, 238 => 0x100c, 314 => 0x223 },
 	'manualtv' => { 67 => 0x5, 68 => 0x705 },
-	'manufacturedate' => { 263 => 0x1 },
-	'manufacturedate1' => { 307 => 0x4 },
-	'manufacturedate2' => { 307 => 0x5 },
-	'marked' => { 381 => 'Marked', 397 => 'Marked' },
-	'markers' => { 393 => 'markers' },
-	'markerscomment' => { 393 => [\'markers','markersComment'] },
-	'markerscuepointparams' => { 393 => [\'markers','markersCuePointParams'] },
-	'markerscuepointparamskey' => { 393 => [\'markers','markersCuePointParamsKey'] },
-	'markerscuepointparamsvalue' => { 393 => [\'markers','markersCuePointParamsValue'] },
-	'markerscuepointtype' => { 393 => [\'markers','markersCuePointType'] },
-	'markersduration' => { 393 => [\'markers','markersDuration'] },
-	'markerslocation' => { 393 => [\'markers','markersLocation'] },
-	'markersname' => { 393 => [\'markers','markersName'] },
-	'markersprobability' => { 393 => [\'markers','markersProbability'] },
-	'markersspeaker' => { 393 => [\'markers','markersSpeaker'] },
-	'markersstarttime' => { 393 => [\'markers','markersStartTime'] },
-	'markerstarget' => { 393 => [\'markers','markersTarget'] },
-	'markerstype' => { 393 => [\'markers','markersType'] },
+	'manufacturedate' => { 264 => 0x1 },
+	'manufacturedate1' => { 308 => 0x4 },
+	'manufacturedate2' => { 308 => 0x5 },
+	'marked' => { 387 => 'Marked', 403 => 'Marked' },
+	'markers' => { 399 => 'markers' },
+	'markerscomment' => { 399 => [\'markers','markersComment'] },
+	'markerscuepointparams' => { 399 => [\'markers','markersCuePointParams'] },
+	'markerscuepointparamskey' => { 399 => [\'markers','markersCuePointParamsKey'] },
+	'markerscuepointparamsvalue' => { 399 => [\'markers','markersCuePointParamsValue'] },
+	'markerscuepointtype' => { 399 => [\'markers','markersCuePointType'] },
+	'markersduration' => { 399 => [\'markers','markersDuration'] },
+	'markerslocation' => { 399 => [\'markers','markersLocation'] },
+	'markersname' => { 399 => [\'markers','markersName'] },
+	'markersprobability' => { 399 => [\'markers','markersProbability'] },
+	'markersspeaker' => { 399 => [\'markers','markersSpeaker'] },
+	'markersstarttime' => { 399 => [\'markers','markersStartTime'] },
+	'markerstarget' => { 399 => [\'markers','markersTarget'] },
+	'markerstype' => { 399 => [\'markers','markersType'] },
 	'maskedareas' => { 95 => 0xc68e },
 	'masterdocumentid' => { 103 => 0xb9 },
 	'mastergain' => { 187 => 0x50 },
-	'maxaperture' => { 29 => 0x1a, 115 => 0x6103, 132 => 'MaxAperture', 147 => 0x17, 153 => 0x49c5, 234 => 0x20a, 274 => '14.1', 345 => 0x0 },
+	'maxaperture' => { 29 => 0x1a, 115 => 0x6103, 132 => 'MaxAperture', 147 => 0x17, 153 => 0x49c5, 234 => 0x20a, 275 => '14.1', 349 => 0x0 },
 	'maxapertureatmaxfocal' => { 100 => 0x1407, 132 => 'MaxApertureAtMaxFocal', 177 => 0xb, 178 => 0x10, 179 => 0x11, 234 => 0x206 },
 	'maxapertureatminfocal' => { 100 => 0x1406, 177 => 0xa, 178 => 0xf, 179 => 0x10, 234 => 0x205 },
-	'maxaperturevalue' => { 95 => 0x9205, 374 => 'MaxApertureValue' },
-	'maxavailheight' => { 380 => 'MaxAvailHeight' },
-	'maxavailwidth' => { 380 => 'MaxAvailWidth' },
+	'maxaperturevalue' => { 95 => 0x9205, 380 => 'MaxApertureValue' },
+	'maxavailheight' => { 386 => 'MaxAvailHeight' },
+	'maxavailwidth' => { 386 => 'MaxAvailWidth' },
 	'maxcontinuousrelease' => { 222 => 0xb, 227 => 0xc, 228 => 0xb },
 	'maxfaces' => { 237 => 0x1202 },
-	'maxfocallength' => { 5 => 0xe6, 6 => 0x10, 7 => 0x1ab, 8 => 0x13, 9 => 0x115, 10 => 0x13, 11 => 0x153, 12 => 0xda, 14 => 0xfa, 15 => 0xee, 16 => 0x103, 17 => 0x95, 18 => 0xea, 19 => 0x157, 20 => 0xee, 21 => 0xec, 22 => 0x12b, 23 => 0x165, 24 => 0x16a, 25 => 0x116, 29 => 0x17, 100 => 0x1405, 132 => 'MaxFocalLength', 177 => 0x9, 178 => 0xe, 179 => 0xf, 234 => 0x208, 342 => 0x127c, 343 => 0x1138, 344 => 0x330 },
+	'maxfocallength' => { 5 => 0xe6, 6 => 0x10, 7 => 0x1ab, 8 => 0x13, 9 => 0x115, 10 => 0x13, 11 => 0x153, 12 => 0xda, 14 => 0xfa, 15 => 0xee, 16 => 0x103, 17 => 0x95, 18 => 0xea, 19 => 0x157, 20 => 0xee, 21 => 0xec, 22 => 0x12b, 23 => 0x165, 24 => 0x16a, 25 => 0x116, 29 => 0x17, 100 => 0x1405, 132 => 'MaxFocalLength', 177 => 0x9, 178 => 0xe, 179 => 0xf, 234 => 0x208, 346 => 0x127c, 347 => 0x1138, 348 => 0x330 },
 	'maximumdensityrange' => { 105 => 0x8c },
-	'maxpagesize' => { 398 => 'MaxPageSize' },
-	'maxpagesizeh' => { 398 => [\'MaxPageSize','MaxPageSizeH'] },
-	'maxpagesizeunit' => { 398 => [\'MaxPageSize','MaxPageSizeUnit'] },
-	'maxpagesizew' => { 398 => [\'MaxPageSize','MaxPageSizeW'] },
+	'maxpagesize' => { 404 => 'MaxPageSize' },
+	'maxpagesizeh' => { 404 => [\'MaxPageSize','MaxPageSizeH'] },
+	'maxpagesizeunit' => { 404 => [\'MaxPageSize','MaxPageSizeUnit'] },
+	'maxpagesizew' => { 404 => [\'MaxPageSize','MaxPageSizeW'] },
 	'maxsamplevalue' => { 95 => 0x119 },
-	'maxstorage' => { 388 => 'maxstorage' },
+	'maxstorage' => { 394 => 'maxstorage' },
 	'mb-d10batteries' => { 222 => '12.6' },
 	'mb-d10batterytype' => { 227 => '13.3' },
 	'mb-d11batterytype' => { 228 => '2.3' },
@@ -2747,7 +2806,7 @@ my %tagLookup = (
 	'measuredev' => { 25 => 0x9, 62 => 0x3, 81 => 0x1814, 125 => 'MeasuredEV' },
 	'measuredev2' => { 11 => 0x8, 25 => 0x8, 62 => 0x17 },
 	'measuredev3' => { 11 => 0x9 },
-	'measuredlv' => { 153 => 0x690, 248 => 0x312, 254 => 0x3407 },
+	'measuredlv' => { 153 => 0x690, 249 => 0x312, 255 => 0x3407 },
 	'measuredrggb' => { 52 => 0x1 },
 	'measuredrggbdata' => { 35 => 0x287 },
 	'measurementaccuracy' => { 94 => [\'MeasurementOrFact','MeasurementOrFactMeasurementAccuracy'] },
@@ -2760,62 +2819,62 @@ my %tagLookup = (
 	'measurementtype' => { 94 => [\'MeasurementOrFact','MeasurementOrFactMeasurementType'] },
 	'measurementunit' => { 94 => [\'MeasurementOrFact','MeasurementOrFactMeasurementUnit'] },
 	'measurementvalue' => { 94 => [\'MeasurementOrFact','MeasurementOrFactMeasurementValue'] },
-	'mediaconstraints' => { 383 => 'MediaConstraints' },
-	'mediacreatedate' => { 297 => 0x1 },
-	'mediamodifydate' => { 297 => 0x2 },
-	'mediasummarycode' => { 383 => 'MediaSummaryCode' },
-	'memorycardconfiguration' => { 325 => 0x16 },
+	'mediaconstraints' => { 389 => 'MediaConstraints' },
+	'mediacreatedate' => { 298 => 0x1 },
+	'mediamodifydate' => { 298 => 0x2 },
+	'mediasummarycode' => { 389 => 'MediaSummaryCode' },
+	'memorycardconfiguration' => { 329 => 0x16 },
 	'menubuttondisplayposition' => { 66 => 0xb, 69 => 0xa, 70 => 0xb, 73 => 0xb },
 	'menubuttonreturn' => { 74 => 0xb },
 	'menumonitorofftime' => { 227 => '8.2', 228 => '21.1', 231 => '22.1' },
-	'metadatadate' => { 391 => 'MetadataDate' },
-	'metadatamoddate' => { 393 => 'metadataModDate' },
-	'metaversion' => { 337 => 0x34 },
-	'meterinfo1row1' => { 332 => 0x0 },
-	'meterinfo1row2' => { 332 => 0x6c },
-	'meterinfo1row3' => { 332 => 0xd8 },
-	'meterinfo1row4' => { 332 => 0x144 },
-	'meterinfo1row5' => { 332 => 0x1b0 },
-	'meterinfo1row6' => { 332 => 0x21c },
-	'meterinfo1row7' => { 332 => 0x288 },
-	'meterinfo2row1' => { 332 => 0x2f4 },
-	'meterinfo2row2' => { 332 => 0x378 },
-	'meterinfo2row3' => { 332 => 0x3fc },
-	'meterinfo2row4' => { 332 => 0x480 },
-	'meterinfo2row5' => { 332 => 0x504 },
-	'meterinfo2row6' => { 332 => 0x588 },
-	'meterinfo2row7' => { 332 => 0x60c },
-	'meterinfo2row8' => { 332 => 0x690 },
-	'meterinfo2row9' => { 332 => 0x714 },
+	'metadatadate' => { 397 => 'MetadataDate' },
+	'metadatamoddate' => { 399 => 'metadataModDate' },
+	'metaversion' => { 341 => 0x34 },
+	'meterinfo1row1' => { 336 => 0x0 },
+	'meterinfo1row2' => { 336 => 0x6c },
+	'meterinfo1row3' => { 336 => 0xd8 },
+	'meterinfo1row4' => { 336 => 0x144 },
+	'meterinfo1row5' => { 336 => 0x1b0 },
+	'meterinfo1row6' => { 336 => 0x21c },
+	'meterinfo1row7' => { 336 => 0x288 },
+	'meterinfo2row1' => { 336 => 0x2f4 },
+	'meterinfo2row2' => { 336 => 0x378 },
+	'meterinfo2row3' => { 336 => 0x3fc },
+	'meterinfo2row4' => { 336 => 0x480 },
+	'meterinfo2row5' => { 336 => 0x504 },
+	'meterinfo2row6' => { 336 => 0x588 },
+	'meterinfo2row7' => { 336 => 0x60c },
+	'meterinfo2row8' => { 336 => 0x690 },
+	'meterinfo2row9' => { 336 => 0x714 },
 	'metering' => { 223 => '6.1' },
-	'meteringmode' => { 29 => 0x11, 95 => 0x9207, 111 => 0x1c, 147 => 0x7, 148 => 0x25, 150 => 0x12, 233 => 0x202, 283 => 0x17, 314 => 0x9, 319 => 0x15, 320 => 0x13, 321 => 0x7, 335 => 0x3, 338 => 0x1174, 339 => 0x1178, 340 => 0x1154, 341 => 0x11d0, 342 => 0x11ac, 343 => 0x1064, 344 => 0x25c, 374 => 'MeteringMode' },
-	'meteringmode2' => { 264 => '2.1' },
-	'meteringmode3' => { 264 => '16.1' },
+	'meteringmode' => { 29 => 0x11, 95 => 0x9207, 111 => 0x1c, 147 => 0x7, 148 => 0x25, 150 => 0x12, 233 => 0x202, 284 => 0x17, 315 => 0x9, 323 => 0x15, 324 => 0x13, 325 => 0x7, 339 => 0x3, 342 => 0x1174, 343 => 0x1178, 344 => 0x1154, 345 => 0x11d0, 346 => 0x11ac, 347 => 0x1064, 348 => 0x25c, 380 => 'MeteringMode' },
+	'meteringmode2' => { 265 => '2.1' },
+	'meteringmode3' => { 265 => '16.1' },
 	'meteringoffscaleindicator' => { 150 => 0x53 },
 	'meteringtime' => { 222 => '22.2', 223 => '3.2', 224 => '17.1', 225 => '18.1', 227 => '7.3', 228 => '18.1', 229 => '3.2', 231 => '19.1' },
 	'mieversion' => { 133 => '0Vers' },
-	'minaperture' => { 29 => 0x1b, 132 => 'MinAperture', 274 => '0.2', 345 => 0x1 },
-	'minfocallength' => { 5 => 0xe4, 6 => 0xe, 7 => 0x1a9, 8 => 0x11, 9 => 0x113, 10 => 0x11, 11 => 0x151, 12 => 0xd8, 14 => 0xf8, 15 => 0xec, 16 => 0x101, 17 => 0x93, 18 => 0xe8, 19 => 0x155, 20 => 0xec, 21 => 0xea, 22 => 0x129, 23 => 0x163, 24 => 0x168, 25 => 0x114, 29 => 0x18, 100 => 0x1404, 132 => 'MinFocalLength', 177 => 0x8, 178 => 0xd, 179 => 0xe, 234 => 0x207, 342 => 0x127a, 343 => 0x1136, 344 => 0x32e },
+	'minaperture' => { 29 => 0x1b, 132 => 'MinAperture', 275 => '0.2', 349 => 0x1 },
+	'minfocallength' => { 5 => 0xe4, 6 => 0xe, 7 => 0x1a9, 8 => 0x11, 9 => 0x113, 10 => 0x11, 11 => 0x151, 12 => 0xd8, 14 => 0xf8, 15 => 0xec, 16 => 0x101, 17 => 0x93, 18 => 0xe8, 19 => 0x155, 20 => 0xec, 21 => 0xea, 22 => 0x129, 23 => 0x163, 24 => 0x168, 25 => 0x114, 29 => 0x18, 100 => 0x1404, 132 => 'MinFocalLength', 177 => 0x8, 178 => 0xd, 179 => 0xe, 234 => 0x207, 346 => 0x127a, 347 => 0x1136, 348 => 0x32e },
 	'minoltadate' => { 147 => 0x15 },
 	'minoltaimagesize' => { 147 => 0x4, 148 => 0xc, 149 => 0x2, 152 => 0x103 },
 	'minoltamodelid' => { 147 => 0x25 },
 	'minoltaquality' => { 147 => 0x5, 148 => 0xd, 149 => 0x3, 152 => [0x102,0x103] },
 	'minoltatime' => { 147 => 0x16 },
-	'minormodelagedisclosure' => { 383 => 'MinorModelAgeDisclosure' },
+	'minormodelagedisclosure' => { 389 => 'MinorModelAgeDisclosure' },
 	'minsamplevalue' => { 95 => 0x118 },
 	'mirrorlockup' => { 66 => 0xc, 67 => 0xc, 68 => 0x60f, 69 => 0xb, 70 => 0xc, 71 => 0x6, 72 => 0x6, 73 => 0xc, 74 => 0x3 },
-	'mobilecountrycode' => { 369 => 'mcc' },
-	'mobilenetworkcode' => { 369 => 'mnc' },
-	'moddate' => { 244 => 'modify-date', 381 => 'ModDate' },
-	'modedialposition' => { 325 => 0x14 },
-	'model' => { 82 => 0x6, 95 => 0x110, 125 => 'Model', 244 => 'Model', 256 => 0x110, 389 => 'Model' },
-	'modelage' => { 380 => 'ModelAge' },
+	'mobilecountrycode' => { 375 => 'mcc' },
+	'mobilenetworkcode' => { 375 => 'mnc' },
+	'moddate' => { 245 => 'modify-date', 387 => 'ModDate' },
+	'modedialposition' => { 329 => 0x14 },
+	'model' => { 82 => 0x6, 95 => 0x110, 125 => 'Model', 245 => 'Model', 257 => 0x110, 395 => 'Model' },
+	'modelage' => { 386 => 'ModelAge' },
 	'modelid' => { 232 => 0x0 },
 	'modelingflash' => { 222 => '21.4', 227 => '26.4', 228 => '30.2', 229 => '7.4', 230 => '30.1', 231 => '31.3' },
-	'modelreleaseid' => { 383 => 'ModelReleaseID' },
-	'modelreleasestatus' => { 383 => 'ModelReleaseStatus' },
-	'modelreleaseyear' => { 346 => 0x52, 347 => 0x46 },
-	'modificationdate' => { 384 => 'modificationDate' },
+	'modelreleaseid' => { 389 => 'ModelReleaseID' },
+	'modelreleasestatus' => { 389 => 'ModelReleaseStatus' },
+	'modelreleaseyear' => { 350 => 0x52, 351 => 0x46 },
+	'modificationdate' => { 390 => 'modificationDate' },
 	'modifiedcolortemp' => { 53 => 0x9 },
 	'modifieddigitalgain' => { 53 => 0xb },
 	'modifiedparamflag' => { 47 => 0x1 },
@@ -2829,12 +2888,12 @@ my %tagLookup = (
 	'modifiedwhitebalance' => { 53 => 0x8 },
 	'modifiedwhitebalanceblue' => { 53 => 0x7 },
 	'modifiedwhitebalancered' => { 53 => 0x6 },
-	'modifydate' => { 95 => 0x132, 126 => 'ModifyDate', 242 => 'ModDate', 243 => 'tIME', 296 => 'ModDate', 298 => 0x2, 391 => 'ModifyDate' },
-	'moirefilter' => { 95 => 0xfe58, 370 => 'MoireFilter' },
+	'modifydate' => { 95 => 0x132, 126 => 'ModifyDate', 242 => 'ModDate', 243 => 'tIME', 297 => 'ModDate', 299 => 0x2, 397 => 'ModifyDate' },
+	'moirefilter' => { 95 => 0xfe58, 376 => 'MoireFilter' },
 	'monitordisplayoff' => { 150 => 0x4c },
 	'monitorofftime' => { 222 => '18.2', 223 => '3.1', 229 => '3.1' },
 	'monochromecontrast' => { 87 => 0x3c },
-	'monochromefiltereffect' => { 87 => 0x3a, 283 => 0x73 },
+	'monochromefiltereffect' => { 87 => 0x3a, 284 => 0x73 },
 	'monochromelinear' => { 87 => 0x3d },
 	'monochromeoutputhighlightpoint' => { 87 => 0x41 },
 	'monochromeoutputshadowpoint' => { 87 => 0x42 },
@@ -2843,39 +2902,39 @@ my %tagLookup = (
 	'monochromerawshadow' => { 87 => 0x83 },
 	'monochromerawshadowpoint' => { 87 => 0x40 },
 	'monochromesharpness' => { 87 => 0x3e },
-	'monochrometoning' => { 283 => 0x74 },
+	'monochrometoning' => { 284 => 0x74 },
 	'monochrometoningeffect' => { 87 => 0x3b },
 	'monochromeunsharpmaskfineness' => { 87 => 0xb2 },
 	'monochromeunsharpmaskstrength' => { 87 => 0xb0 },
 	'monochromeunsharpmaskthreshold' => { 87 => 0xb4 },
 	'monthdaycreated' => { 111 => 0x12, 120 => 0xe },
-	'moonphase' => { 301 => 0x12 },
-	'morepermissions' => { 368 => 'morePermissions' },
-	'motionsensitivity' => { 301 => 0x29 },
-	'multiburstimageheight' => { 331 => 0x1002 },
-	'multiburstimagewidth' => { 331 => 0x1001 },
-	'multiburstmode' => { 331 => 0x1000 },
+	'moonphase' => { 302 => 0x12 },
+	'morepermissions' => { 374 => 'morePermissions' },
+	'motionsensitivity' => { 302 => 0x29 },
+	'multiburstimageheight' => { 335 => 0x1002 },
+	'multiburstimagewidth' => { 335 => 0x1001 },
+	'multiburstmode' => { 335 => 0x1000 },
 	'multicontrollerwhilemetering' => { 68 => 0x517 },
 	'multiexposureautogain' => { 183 => 0x3 },
 	'multiexposuremode' => { 183 => 0x1 },
 	'multiexposureshots' => { 183 => 0x2 },
-	'multiframenoisereduction' => { 321 => 0x35, 331 => 0x200b, 335 => 0x15 },
+	'multiframenoisereduction' => { 325 => 0x35, 335 => 0x200b, 339 => 0x15 },
 	'multifunctionlock' => { 68 => 0x70f },
 	'multipleexposuremode' => { 237 => 0x101c },
-	'multipleexposureset' => { 264 => '10.1' },
+	'multipleexposureset' => { 265 => '10.1' },
 	'multisample' => { 187 => 0x40 },
 	'multiselector' => { 222 => '9.4', 227 => '27.4' },
 	'multiselectorliveview' => { 222 => '4.3' },
 	'multiselectorplaybackmode' => { 222 => ['13.5','9.2'], 227 => '27.2' },
 	'multiselectorshootmode' => { 222 => '9.1', 227 => '27.1' },
 	'mycolormode' => { 55 => 0x2 },
-	'nativedigest' => { 374 => 'NativeDigest', 389 => 'NativeDigest' },
+	'nativedigest' => { 380 => 'NativeDigest', 395 => 'NativeDigest' },
 	'ncdfileinfo' => { 109 => 0x414 },
-	'ndfilter' => { 62 => 0x1c, 233 => 0x204, 305 => 0x1019 },
+	'ndfilter' => { 62 => 0x1c, 233 => 0x204, 306 => 0x1019 },
 	'nefbitdepth' => { 182 => 0xe22 },
 	'nefcompression' => { 182 => 0x93 },
 	'neflinearizationtable' => { 182 => 0x96 },
-	'neutraldensityfilter' => { 283 => 0x88 },
+	'neutraldensityfilter' => { 284 => 0x88 },
 	'neutraloutputhighlightpoint' => { 87 => 0x2f },
 	'neutraloutputshadowpoint' => { 87 => 0x30 },
 	'neutralrawcolortone' => { 87 => 0x28 },
@@ -2892,7 +2951,7 @@ my %tagLookup = (
 	'neutraunsharpmaskstrength' => { 87 => 0xa4 },
 	'newrawimagedigest' => { 95 => 0xc7a7 },
 	'newsphotoversion' => { 105 => 0x0 },
-	'nickname' => { 391 => 'Nickname' },
+	'nickname' => { 397 => 'Nickname' },
 	'nikoncapturedata' => { 182 => 0xe01 },
 	'nikoncaptureeditversions' => { 182 => 0xe13 },
 	'nikoncaptureoutput' => { 182 => 0xe1e },
@@ -2901,28 +2960,28 @@ my %tagLookup = (
 	'nikonimagesize' => { 194 => '723.1', 195 => '732.1', 202 => 0x2c4 },
 	'noisefilter' => { 233 => 0x527 },
 	'noiseprofile' => { 95 => 0xc761 },
-	'noisereduction' => { 100 => 0x100b, 148 => 0xb0, 149 => 0x60, 150 => 0x3f, 182 => 0x95, 215 => 0x753dcbc0, 216 => 0x17, 233 => 0x50a, 238 => 0x103a, 252 => 0x2d, 283 => 0x49, 305 => 0x100f, 307 => 0x2a },
+	'noisereduction' => { 100 => 0x100b, 148 => 0xb0, 149 => 0x60, 150 => 0x3f, 182 => 0x95, 215 => 0x753dcbc0, 216 => 0x17, 233 => 0x50a, 238 => 0x103a, 253 => 0x2d, 284 => 0x49, 306 => 0x100f, 308 => 0x2a },
 	'noisereduction2' => { 237 => 0x1010 },
 	'noisereductionapplied' => { 95 => 0xc6f7 },
 	'noisereductionintensity' => { 216 => 0x9 },
 	'noisereductionmethod' => { 216 => 0x11 },
-	'noisereductionmode' => { 356 => 0x801e },
+	'noisereductionmode' => { 362 => 0x801e },
 	'noisereductionsharpness' => { 216 => 0xd },
-	'noisereductionvalue' => { 356 => 0x8027 },
+	'noisereductionvalue' => { 362 => 0x8027 },
 	'nomemorycard' => { 222 => '22.1', 223 => '0.3', 224 => '2.4', 225 => '3.2', 226 => '3.2', 227 => '33.7', 228 => '3.2', 229 => '0.3', 231 => '4.5' },
-	'nominalmaxaperture' => { 274 => 0xa },
-	'nominalminaperture' => { 274 => '10.1' },
+	'nominalmaxaperture' => { 275 => 0xa },
+	'nominalminaperture' => { 275 => '10.1' },
 	'normalwhitelevel' => { 36 => [0x2b8,0x2cf,0x2d3], 38 => 0x1e3, 39 => 0x1fc },
-	'notes' => { 357 => 'Notes', 365 => 'notes' },
-	'npages' => { 398 => 'NPages' },
+	'notes' => { 363 => 'Notes', 371 => 'notes' },
+	'npages' => { 404 => 'NPages' },
 	'nrwdata' => { 182 => 0x14 },
 	'nullrecord' => { 81 => 0x0 },
-	'number' => { 384 => 'number' },
-	'numberofbeats' => { 393 => 'numberOfBeats' },
+	'number' => { 390 => 'number' },
+	'numberofbeats' => { 399 => 'numberOfBeats' },
 	'numberoffocuspoints' => { 226 => '0.2', 228 => '0.3' },
-	'numfacepositions' => { 246 => 0x0 },
+	'numfacepositions' => { 247 => 0x0 },
 	'numindexentries' => { 105 => 0x54 },
-	'object' => { 384 => 'object' },
+	'object' => { 390 => 'object' },
 	'objectattributereference' => { 103 => 0x4 },
 	'objectcycle' => { 103 => 0x4b },
 	'objectdistance' => { 90 => 0x6, 91 => 0x2022 },
@@ -2955,10 +3014,10 @@ my %tagLookup = (
 	'occurrencereproductivecondition' => { 94 => [\'Occurrence','OccurrenceReproductiveCondition'] },
 	'occurrencesex' => { 94 => [\'Occurrence','OccurrenceSex'] },
 	'occurrencestatus' => { 94 => [\'Occurrence','OccurrenceOccurrenceStatus'] },
-	'oecfcolumns' => { 374 => [\'OECF','OECFColumns'] },
-	'oecfnames' => { 374 => [\'OECF','OECFNames'] },
-	'oecfrows' => { 374 => [\'OECF','OECFRows'] },
-	'oecfvalues' => { 374 => [\'OECF','OECFValues'] },
+	'oecfcolumns' => { 380 => [\'OECF','OECFColumns'] },
+	'oecfnames' => { 380 => [\'OECF','OECFNames'] },
+	'oecfrows' => { 380 => [\'OECF','OECFRows'] },
+	'oecfvalues' => { 380 => [\'OECF','OECFValues'] },
 	'offsetschema' => { 95 => 0xea1d },
 	'okbutton' => { 228 => '15.1', 231 => '16.1' },
 	'oldsubfiletype' => { 95 => 0xff },
@@ -2967,25 +3026,25 @@ my %tagLookup = (
 	'onetouchwb' => { 238 => 0x302 },
 	'opticalzoom' => { 113 => 0xfa3d, 115 => [0x6006,0xf006], 116 => 0x1000, 117 => 0xf, 120 => 0x1e, 132 => 'OpticalZoom' },
 	'opticalzoomcode' => { 62 => 0xa },
-	'opticalzoommode' => { 252 => 0x34 },
-	'opticalzoomon' => { 313 => 0x219 },
-	'optionenddate' => { 386 => 'optionEndDate' },
-	'opto-electricconvfactor' => { 374 => 'OECF' },
+	'opticalzoommode' => { 253 => 0x34 },
+	'opticalzoomon' => { 314 => 0x219 },
+	'optionenddate' => { 392 => 'optionEndDate' },
+	'opto-electricconvfactor' => { 380 => 'OECF' },
 	'ordernumber' => { 100 => 0x8002 },
-	'organisationinimagecode' => { 380 => 'OrganisationInImageCode' },
-	'organisationinimagename' => { 380 => 'OrganisationInImageName' },
-	'organization' => { 384 => 'organization' },
-	'orientation' => { 95 => 0x112, 256 => 0x112, 389 => 'Orientation' },
-	'orientation2' => { 335 => 0x2e },
+	'organisationinimagecode' => { 386 => 'OrganisationInImageCode' },
+	'organisationinimagename' => { 386 => 'OrganisationInImageName' },
+	'organization' => { 390 => 'organization' },
+	'orientation' => { 95 => 0x112, 257 => 0x112, 395 => 'Orientation' },
+	'orientation2' => { 339 => 0x2e },
 	'orientationlinkedafpoint' => { 68 => 0x516 },
 	'originalbestqualitysize' => { 95 => 0xc792 },
 	'originaldecisiondata' => { 92 => 'OriginalDecisionData' },
 	'originaldecisiondataoffset' => { 51 => 0x83 },
 	'originaldefaultcropsize' => { 95 => 0xc793 },
 	'originaldefaultfinalsize' => { 95 => 0xc791 },
-	'originaldirectory' => { 250 => 0x408 },
-	'originaldocumentid' => { 394 => 'OriginalDocumentID' },
-	'originalfilename' => { 81 => 0x816, 109 => 0x3e9, 121 => 0x20, 250 => 0x407, 361 => 'OriginalFilename' },
+	'originaldirectory' => { 251 => 0x408 },
+	'originaldocumentid' => { 400 => 'OriginalDocumentID' },
+	'originalfilename' => { 81 => 0x816, 109 => 0x3e9, 121 => 0x20, 251 => 0x407, 367 => 'OriginalFilename' },
 	'originalimageheight' => { 64 => 0xc, 99 => 0x1 },
 	'originalimagewidth' => { 64 => 0xb, 99 => 0x0 },
 	'originalrawfiledata' => { 95 => 0xc68c },
@@ -2993,105 +3052,105 @@ my %tagLookup = (
 	'originalrawfilename' => { 95 => 0xc68b },
 	'originaltransmissionreference' => { 103 => 0x67 },
 	'originatingprogram' => { 103 => 0x41 },
-	'originplatform' => { 384 => 'originPlatform' },
-	'os' => { 372 => 'os' },
-	'otherconditions' => { 383 => 'OtherConditions' },
-	'otherconstraints' => { 383 => 'OtherConstraints' },
+	'originplatform' => { 390 => 'originPlatform' },
+	'os' => { 378 => 'os' },
+	'otherconditions' => { 389 => 'OtherConditions' },
+	'otherconstraints' => { 389 => 'OtherConstraints' },
 	'otherimage' => { 92 => 'OtherImage' },
-	'otherimageinfo' => { 383 => 'OtherImageInfo' },
+	'otherimageinfo' => { 389 => 'OtherImageInfo' },
 	'otherimagelength' => { 95 => 0x202 },
 	'otherimagestart' => { 95 => 0x201 },
-	'otherlicensedocuments' => { 383 => 'OtherLicenseDocuments' },
-	'otherlicenseinfo' => { 383 => 'OtherLicenseInfo' },
-	'otherlicenserequirements' => { 383 => 'OtherLicenseRequirements' },
-	'outcue' => { 393 => 'outCue' },
-	'outcuescale' => { 393 => [\'outCue','outCueScale'] },
-	'outcuevalue' => { 393 => [\'outCue','outCueValue'] },
+	'otherlicensedocuments' => { 389 => 'OtherLicenseDocuments' },
+	'otherlicenseinfo' => { 389 => 'OtherLicenseInfo' },
+	'otherlicenserequirements' => { 389 => 'OtherLicenseRequirements' },
+	'outcue' => { 399 => 'outCue' },
+	'outcuescale' => { 399 => [\'outCue','outCueScale'] },
+	'outcuevalue' => { 399 => [\'outCue','outCueValue'] },
 	'outputimageheight' => { 161 => 0x3 },
 	'outputimagewidth' => { 161 => 0x2 },
 	'outputresolution' => { 161 => 0x4 },
-	'owner' => { 397 => 'Owner' },
+	'owner' => { 403 => 'Owner' },
 	'ownerid' => { 103 => 0xbc },
-	'ownername' => { 13 => 0x10f, 51 => 0x9, 81 => 0x810, 95 => [0xa430,0xfde8], 125 => 'OwnerName', 367 => 'OwnerName', 375 => 'CameraOwnerName' },
+	'ownername' => { 13 => 0x10f, 51 => 0x9, 81 => 0x810, 95 => [0xa430,0xfde8], 125 => 'OwnerName', 373 => 'OwnerName', 381 => 'CameraOwnerName' },
 	'padding' => { 95 => 0xea1c },
-	'pageimage' => { 391 => [\'PageInfo','PageInfoImage'] },
-	'pageimageformat' => { 391 => [\'PageInfo','PageInfoFormat'] },
-	'pageimageheight' => { 391 => [\'PageInfo','PageInfoHeight'] },
-	'pageimagepagenumber' => { 391 => [\'PageInfo','PageInfoPageNumber'] },
-	'pageimagewidth' => { 391 => [\'PageInfo','PageInfoWidth'] },
-	'pageinfo' => { 391 => 'PageInfo' },
+	'pageimage' => { 397 => [\'PageInfo','PageInfoImage'] },
+	'pageimageformat' => { 397 => [\'PageInfo','PageInfoFormat'] },
+	'pageimageheight' => { 397 => [\'PageInfo','PageInfoHeight'] },
+	'pageimagepagenumber' => { 397 => [\'PageInfo','PageInfoPageNumber'] },
+	'pageimagewidth' => { 397 => [\'PageInfo','PageInfoWidth'] },
+	'pageinfo' => { 397 => 'PageInfo' },
 	'pagename' => { 95 => 0x11d },
 	'pagenumber' => { 95 => 0x129 },
-	'pagerange' => { 384 => 'pageRange' },
-	'paintbasedcorrectionmasks' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasks'] },
-	'paintbasedcorrections' => { 370 => 'PaintBasedCorrections' },
-	'paintcorrectionactive' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionActive'] },
-	'paintcorrectionamount' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionAmount'] },
-	'paintcorrectionbrightness' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalBrightness'] },
-	'paintcorrectionclarity' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalClarity'] },
-	'paintcorrectionclarity2012' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalClarity2012'] },
-	'paintcorrectioncontrast' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalContrast'] },
-	'paintcorrectioncontrast2012' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalContrast2012'] },
-	'paintcorrectiondefringe' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalDefringe'] },
-	'paintcorrectionexposure' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalExposure'] },
-	'paintcorrectionexposure2012' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalExposure2012'] },
-	'paintcorrectionhighlights2012' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalHighlights2012'] },
-	'paintcorrectionhue' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalToningHue'] },
-	'paintcorrectionluminancenoise' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalLuminanceNoise'] },
-	'paintcorrectionmaskalpha' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksAlpha'] },
-	'paintcorrectionmaskangle' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksAngle'] },
-	'paintcorrectionmaskbottom' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksBottom'] },
-	'paintcorrectionmaskcentervalue' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCenterValue'] },
-	'paintcorrectionmaskcenterweight' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCenterWeight'] },
-	'paintcorrectionmaskdabs' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksDabs'] },
-	'paintcorrectionmaskfeather' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFeather'] },
-	'paintcorrectionmaskflipped' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFlipped'] },
-	'paintcorrectionmaskflow' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFlow'] },
-	'paintcorrectionmaskfullx' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFullX'] },
-	'paintcorrectionmaskfully' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFullY'] },
-	'paintcorrectionmaskleft' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksLeft'] },
-	'paintcorrectionmaskmidpoint' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMidpoint'] },
-	'paintcorrectionmaskperimetervalue' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksPerimeterValue'] },
-	'paintcorrectionmaskradius' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRadius'] },
-	'paintcorrectionmaskright' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRight'] },
-	'paintcorrectionmaskroundness' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRoundness'] },
-	'paintcorrectionmasksizex' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksSizeX'] },
-	'paintcorrectionmasksizey' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksSizeY'] },
-	'paintcorrectionmasktop' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksTop'] },
-	'paintcorrectionmaskvalue' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskValue'] },
-	'paintcorrectionmaskversion' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksVersion'] },
-	'paintcorrectionmaskwhat' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksWhat'] },
-	'paintcorrectionmaskx' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksX'] },
-	'paintcorrectionmasky' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksY'] },
-	'paintcorrectionmaskzerox' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksZeroX'] },
-	'paintcorrectionmaskzeroy' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksZeroY'] },
-	'paintcorrectionmoire' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalMoire'] },
-	'paintcorrectionsaturation' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalSaturation','PaintBasedCorrectionsLocalToningSaturation'] },
-	'paintcorrectionshadows2012' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalShadows2012'] },
-	'paintcorrectionsharpness' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalSharpness'] },
-	'paintcorrectiontemperature' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalTemperature'] },
-	'paintcorrectiontint' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalTint'] },
-	'paintcorrectionwhat' => { 370 => [\'PaintBasedCorrections','PaintBasedCorrectionsWhat'] },
-	'panasonicexifversion' => { 252 => 0x26 },
-	'panasonicimageheight' => { 252 => 0x4c },
-	'panasonicimagewidth' => { 252 => 0x4b },
-	'panasonicrawversion' => { 256 => 0x1 },
+	'pagerange' => { 390 => 'pageRange' },
+	'paintbasedcorrectionmasks' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasks'] },
+	'paintbasedcorrections' => { 376 => 'PaintBasedCorrections' },
+	'paintcorrectionactive' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionActive'] },
+	'paintcorrectionamount' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionAmount'] },
+	'paintcorrectionbrightness' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalBrightness'] },
+	'paintcorrectionclarity' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalClarity'] },
+	'paintcorrectionclarity2012' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalClarity2012'] },
+	'paintcorrectioncontrast' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalContrast'] },
+	'paintcorrectioncontrast2012' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalContrast2012'] },
+	'paintcorrectiondefringe' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalDefringe'] },
+	'paintcorrectionexposure' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalExposure'] },
+	'paintcorrectionexposure2012' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalExposure2012'] },
+	'paintcorrectionhighlights2012' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalHighlights2012'] },
+	'paintcorrectionhue' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalToningHue'] },
+	'paintcorrectionluminancenoise' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalLuminanceNoise'] },
+	'paintcorrectionmaskalpha' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksAlpha'] },
+	'paintcorrectionmaskangle' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksAngle'] },
+	'paintcorrectionmaskbottom' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksBottom'] },
+	'paintcorrectionmaskcentervalue' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCenterValue'] },
+	'paintcorrectionmaskcenterweight' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCenterWeight'] },
+	'paintcorrectionmaskdabs' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksDabs'] },
+	'paintcorrectionmaskfeather' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFeather'] },
+	'paintcorrectionmaskflipped' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFlipped'] },
+	'paintcorrectionmaskflow' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFlow'] },
+	'paintcorrectionmaskfullx' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFullX'] },
+	'paintcorrectionmaskfully' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFullY'] },
+	'paintcorrectionmaskleft' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksLeft'] },
+	'paintcorrectionmaskmidpoint' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMidpoint'] },
+	'paintcorrectionmaskperimetervalue' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksPerimeterValue'] },
+	'paintcorrectionmaskradius' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRadius'] },
+	'paintcorrectionmaskright' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRight'] },
+	'paintcorrectionmaskroundness' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRoundness'] },
+	'paintcorrectionmasksizex' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksSizeX'] },
+	'paintcorrectionmasksizey' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksSizeY'] },
+	'paintcorrectionmasktop' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksTop'] },
+	'paintcorrectionmaskvalue' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskValue'] },
+	'paintcorrectionmaskversion' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksVersion'] },
+	'paintcorrectionmaskwhat' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksWhat'] },
+	'paintcorrectionmaskx' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksX'] },
+	'paintcorrectionmasky' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksY'] },
+	'paintcorrectionmaskzerox' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksZeroX'] },
+	'paintcorrectionmaskzeroy' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksZeroY'] },
+	'paintcorrectionmoire' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalMoire'] },
+	'paintcorrectionsaturation' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalSaturation','PaintBasedCorrectionsLocalToningSaturation'] },
+	'paintcorrectionshadows2012' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalShadows2012'] },
+	'paintcorrectionsharpness' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalSharpness'] },
+	'paintcorrectiontemperature' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalTemperature'] },
+	'paintcorrectiontint' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalTint'] },
+	'paintcorrectionwhat' => { 376 => [\'PaintBasedCorrections','PaintBasedCorrectionsWhat'] },
+	'panasonicexifversion' => { 253 => 0x26 },
+	'panasonicimageheight' => { 253 => 0x4c },
+	'panasonicimagewidth' => { 253 => 0x4b },
+	'panasonicrawversion' => { 257 => 0x1 },
 	'panasonictitle' => { 95 => 0xc6d2 },
 	'panasonictitle2' => { 95 => 0xc6d3 },
-	'panoramacropbottom' => { 336 => 0x7 },
-	'panoramacropleft' => { 336 => 0x4 },
-	'panoramacropright' => { 336 => 0x6 },
-	'panoramacroptop' => { 336 => 0x5 },
-	'panoramadirection' => { 58 => 0x5, 336 => 0x3 },
-	'panoramaframeheight' => { 336 => 0x9 },
+	'panoramacropbottom' => { 340 => 0x7 },
+	'panoramacropleft' => { 340 => 0x4 },
+	'panoramacropright' => { 340 => 0x6 },
+	'panoramacroptop' => { 340 => 0x5 },
+	'panoramadirection' => { 58 => 0x5, 340 => 0x3 },
+	'panoramaframeheight' => { 340 => 0x9 },
 	'panoramaframenumber' => { 58 => 0x2 },
-	'panoramaframewidth' => { 336 => 0x8 },
-	'panoramafullheight' => { 336 => 0x2 },
-	'panoramafullwidth' => { 336 => 0x1 },
+	'panoramaframewidth' => { 340 => 0x8 },
+	'panoramafullheight' => { 340 => 0x2 },
+	'panoramafullwidth' => { 340 => 0x1 },
 	'panoramamode' => { 111 => 0x3c, 233 => 0x601 },
-	'panoramasize3d' => { 321 => 0x38 },
-	'panoramasourceheight' => { 336 => 0xb },
-	'panoramasourcewidth' => { 336 => 0xa },
+	'panoramasize3d' => { 325 => 0x38 },
+	'panoramasourceheight' => { 340 => 0xb },
+	'panoramasourcewidth' => { 340 => 0xa },
 	'panoramicstitchcameramotion' => { 143 => 'PanoramicStitchCameraMotion', 144 => 0x1 },
 	'panoramicstitchmaptype' => { 143 => 'PanoramicStitchMapType', 144 => 0x2 },
 	'panoramicstitchphi0' => { 143 => 'PanoramicStitchPhi0', 144 => 0x5 },
@@ -3099,53 +3158,53 @@ my %tagLookup = (
 	'panoramicstitchtheta0' => { 143 => 'PanoramicStitchTheta0', 144 => 0x3 },
 	'panoramicstitchtheta1' => { 143 => 'PanoramicStitchTheta1', 144 => 0x4 },
 	'panoramicstitchversion' => { 144 => 0x0 },
-	'pantry' => { 394 => 'Pantry' },
+	'pantry' => { 400 => 'Pantry' },
 	'parallax' => { 100 => 0xb211, 232 => 0x28 },
-	'parametricdarks' => { 370 => 'ParametricDarks' },
-	'parametrichighlights' => { 370 => 'ParametricHighlights' },
-	'parametrichighlightsplit' => { 370 => 'ParametricHighlightSplit' },
-	'parametriclights' => { 370 => 'ParametricLights' },
-	'parametricmidtonesplit' => { 370 => 'ParametricMidtoneSplit' },
-	'parametricshadows' => { 370 => 'ParametricShadows' },
-	'parametricshadowsplit' => { 370 => 'ParametricShadowSplit' },
-	'parentmeid' => { 361 => 'ParentMEID' },
-	'parentreference1' => { 378 => [\'TagStructure','TagStructureParentReference'] },
-	'parentreference2' => { 378 => [\'TagStructure','TagStructureSubLabelsParentReference'] },
-	'parentreference3' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsParentReference'] },
-	'parentreference4' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsParentReference'] },
-	'parentreference5' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsParentReference'] },
-	'parentreference6' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsParentReference'] },
-	'partofcompilation' => { 393 => 'partOfCompilation' },
-	'patientbirthdate' => { 358 => 'PatientDOB' },
-	'patientid' => { 358 => 'PatientID' },
-	'patientname' => { 358 => 'PatientName' },
-	'patientsex' => { 358 => 'PatientSex' },
-	'pdfversion' => { 381 => 'PDFVersion' },
-	'pentaximagesize' => { 283 => 0x9 },
-	'pentaxmodelid' => { 263 => 0x0, 283 => 0x5 },
-	'pentaxmodeltype' => { 283 => 0x1 },
-	'pentaxversion' => { 283 => 0x0 },
-	'people' => { 359 => 'People', 363 => 'People' },
+	'parametricdarks' => { 376 => 'ParametricDarks' },
+	'parametrichighlights' => { 376 => 'ParametricHighlights' },
+	'parametrichighlightsplit' => { 376 => 'ParametricHighlightSplit' },
+	'parametriclights' => { 376 => 'ParametricLights' },
+	'parametricmidtonesplit' => { 376 => 'ParametricMidtoneSplit' },
+	'parametricshadows' => { 376 => 'ParametricShadows' },
+	'parametricshadowsplit' => { 376 => 'ParametricShadowSplit' },
+	'parentmeid' => { 367 => 'ParentMEID' },
+	'parentreference1' => { 384 => [\'TagStructure','TagStructureParentReference'] },
+	'parentreference2' => { 384 => [\'TagStructure','TagStructureSubLabelsParentReference'] },
+	'parentreference3' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsParentReference'] },
+	'parentreference4' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsParentReference'] },
+	'parentreference5' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsParentReference'] },
+	'parentreference6' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsParentReference'] },
+	'partofcompilation' => { 399 => 'partOfCompilation' },
+	'patientbirthdate' => { 364 => 'PatientDOB' },
+	'patientid' => { 364 => 'PatientID' },
+	'patientname' => { 364 => 'PatientName' },
+	'patientsex' => { 364 => 'PatientSex' },
+	'pdfversion' => { 387 => 'PDFVersion' },
+	'pentaximagesize' => { 284 => 0x9 },
+	'pentaxmodelid' => { 264 => 0x0, 284 => 0x5 },
+	'pentaxmodeltype' => { 284 => 0x1 },
+	'pentaxversion' => { 284 => 0x0 },
+	'people' => { 365 => 'People', 369 => 'People' },
 	'perchannelblacklevel' => { 35 => 0xc4, 36 => [0x2b4,0x2cb,0x2cf], 38 => 0x1df, 39 => 0x1f8 },
-	'peripheralillumcentralradius' => { 356 => 0x8030 },
-	'peripheralillumcentralvalue' => { 356 => 0x8031 },
+	'peripheralillumcentralradius' => { 362 => 0x8030 },
+	'peripheralillumcentralvalue' => { 362 => 0x8031 },
 	'peripheralillumination' => { 87 => 0x68 },
 	'peripheralilluminationon' => { 87 => 0x64 },
-	'peripheralillumperiphvalue' => { 356 => 0x8032 },
+	'peripheralillumperiphvalue' => { 362 => 0x8032 },
 	'peripherallighting' => { 64 => 0x2 },
 	'peripherallightingsetting' => { 65 => 0x5 },
 	'peripherallightingvalue' => { 64 => 0x6 },
-	'permissions' => { 386 => 'permissions' },
-	'permits' => { 368 => 'permits' },
-	'person' => { 384 => 'person' },
-	'personality' => { 361 => 'Personality' },
-	'personinimage' => { 380 => 'PersonInImage' },
-	'perspectiveaspect' => { 370 => 'PerspectiveAspect' },
-	'perspectivehorizontal' => { 370 => 'PerspectiveHorizontal' },
-	'perspectiverotate' => { 370 => 'PerspectiveRotate' },
-	'perspectivescale' => { 370 => 'PerspectiveScale' },
-	'perspectiveupright' => { 370 => 'PerspectiveUpright' },
-	'perspectivevertical' => { 370 => 'PerspectiveVertical' },
+	'permissions' => { 392 => 'permissions' },
+	'permits' => { 374 => 'permits' },
+	'person' => { 390 => 'person' },
+	'personality' => { 367 => 'Personality' },
+	'personinimage' => { 386 => 'PersonInImage' },
+	'perspectiveaspect' => { 376 => 'PerspectiveAspect' },
+	'perspectivehorizontal' => { 376 => 'PerspectiveHorizontal' },
+	'perspectiverotate' => { 376 => 'PerspectiveRotate' },
+	'perspectivescale' => { 376 => 'PerspectiveScale' },
+	'perspectiveupright' => { 376 => 'PerspectiveUpright' },
+	'perspectivevertical' => { 376 => 'PerspectiveVertical' },
 	'pf0customfuncregistration' => { 76 => 0x1 },
 	'pf10retainprogramshift' => { 76 => 0xb },
 	'pf13drivepriority' => { 76 => 0xe },
@@ -3208,13 +3267,13 @@ my %tagLookup = (
 	'photoeffectsgreen' => { 217 => 0x6 },
 	'photoeffectsred' => { 217 => 0x4 },
 	'photoeffectstype' => { 217 => 0x0 },
-	'photographicsensitivity' => { 375 => 'PhotographicSensitivity' },
+	'photographicsensitivity' => { 381 => 'PhotographicSensitivity' },
 	'photoinfoplayback' => { 222 => '17.6', 227 => '33.6' },
-	'photometricinterpretation' => { 95 => 0x106, 389 => 'PhotometricInterpretation' },
-	'photoshopquality' => { 293 => 0x0 },
-	'photostyle' => { 252 => 0x89 },
-	'picklabel' => { 373 => 'PickLabel' },
-	'pictinfo' => { 313 => 0x208 },
+	'photometricinterpretation' => { 95 => 0x106, 395 => 'PhotometricInterpretation' },
+	'photoshopquality' => { 294 => 0x0 },
+	'photostyle' => { 253 => 0x89 },
+	'picklabel' => { 379 => 'PickLabel' },
+	'pictinfo' => { 314 => 0x208 },
 	'picturecontrol' => { 215 => 0xe2173c47 },
 	'picturecontrolactive' => { 218 => 0x0 },
 	'picturecontroladjust' => { 184 => 0x30 },
@@ -3223,11 +3282,11 @@ my %tagLookup = (
 	'picturecontrolmode' => { 218 => 0x13 },
 	'picturecontrolname' => { 184 => 0x4 },
 	'picturecontrolquickadjust' => { 184 => 0x31 },
-	'pictureeffect' => { 331 => 0x200e },
-	'pictureeffect2' => { 338 => 0x1163, 339 => 0x1167, 340 => 0x1143, 341 => 0x11bf, 342 => 0x119b, 343 => 0x1053, 344 => 0x24b, 352 => 0x46 },
+	'pictureeffect' => { 335 => 0x200e },
+	'pictureeffect2' => { 342 => 0x1163, 343 => 0x1167, 344 => 0x1143, 345 => 0x11bf, 346 => 0x119b, 347 => 0x1053, 348 => 0x24b, 358 => 0x46 },
 	'picturefinish' => { 148 => 0x71 },
-	'picturemode' => { 100 => 0x1031, 233 => 0x520, 283 => [0xb,0x33], 314 => 0x3d },
-	'picturemode2' => { 264 => 0x0 },
+	'picturemode' => { 100 => 0x1031, 233 => 0x520, 284 => [0xb,0x33], 315 => 0x3d },
+	'picturemode2' => { 265 => 0x0 },
 	'picturemodebwfilter' => { 233 => 0x525 },
 	'picturemodecontrast' => { 233 => 0x523 },
 	'picturemodeeffect' => { 233 => 0x52d },
@@ -3236,21 +3295,24 @@ my %tagLookup = (
 	'picturemodesharpness' => { 233 => 0x524 },
 	'picturemodetone' => { 233 => 0x526 },
 	'picturestyle' => { 6 => [0x4b,0x51], 7 => 0xf4, 8 => 0x6c, 9 => 0x86, 10 => 0x73, 14 => 0xab, 15 => 0xa7, 16 => 0xb0, 17 => 0x6c, 18 => 0xa7, 19 => 0xf4, 20 => 0xb3, 22 => 0xf4, 23 => 0xfa, 60 => 0xa, 87 => 0x2 },
-	'picturewizard' => { 311 => 0x21 },
-	'picturewizardcolor' => { 310 => 0x1 },
-	'picturewizardcontrast' => { 310 => 0x4 },
-	'picturewizardmode' => { 310 => 0x0 },
-	'picturewizardsaturation' => { 310 => 0x2 },
-	'picturewizardsharpness' => { 310 => 0x3 },
-	'pitchangle' => { 252 => 0x91, 282 => 0x2 },
-	'planarconfiguration' => { 95 => 0x11c, 389 => 'PlanarConfiguration' },
-	'platenames' => { 398 => 'PlateNames' },
+	'picturewizard' => { 312 => 0x21 },
+	'picturewizardcolor' => { 311 => 0x1 },
+	'picturewizardcontrast' => { 311 => 0x4 },
+	'picturewizardmode' => { 311 => 0x0 },
+	'picturewizardsaturation' => { 311 => 0x2 },
+	'picturewizardsharpness' => { 311 => 0x3 },
+	'pitchangle' => { 253 => 0x91, 283 => 0x2 },
+	'pixelsperunitx' => { 244 => 0x0 },
+	'pixelsperunity' => { 244 => 0x4 },
+	'pixelunits' => { 244 => 0x8 },
+	'planarconfiguration' => { 95 => 0x11c, 395 => 'PlanarConfiguration' },
+	'platenames' => { 404 => 'PlateNames' },
 	'playbackmenustime' => { 224 => '20.1', 225 => '21.1', 226 => '21.1' },
 	'playbackmonitorofftime' => { 227 => '8.1', 228 => '35.1', 231 => '21.1' },
 	'playdisplay' => { 150 => 0x4e },
-	'plusversion' => { 383 => 'Version' },
-	'pmversion' => { 292 => 'PMVersion' },
-	'pngwarning' => { 244 => 'Warning' },
+	'plusversion' => { 389 => 'Version' },
+	'pmversion' => { 293 => 'PMVersion' },
+	'pngwarning' => { 245 => 'Warning' },
 	'poilevel' => { 181 => 0x8 },
 	'portraitoutputhighlightpoint' => { 87 => 0x1d },
 	'portraitoutputshadowpoint' => { 87 => 0x1e },
@@ -3267,51 +3329,51 @@ my %tagLookup = (
 	'portraitunsharpmaskfineness' => { 87 => 0x9a },
 	'portraitunsharpmaskstrength' => { 87 => 0x98 },
 	'portraitunsharpmaskthreshold' => { 87 => 0x9c },
-	'poseheadingdegrees' => { 360 => 'PoseHeadingDegrees' },
-	'posepitchdegrees' => { 360 => 'PosePitchDegrees' },
-	'poserolldegrees' => { 360 => 'PoseRollDegrees' },
+	'poseheadingdegrees' => { 366 => 'PoseHeadingDegrees' },
+	'posepitchdegrees' => { 366 => 'PosePitchDegrees' },
+	'poserolldegrees' => { 366 => 'PoseRollDegrees' },
 	'postalcode' => { 130 => 'PostalCode' },
-	'postcropvignetteamount' => { 370 => 'PostCropVignetteAmount' },
-	'postcropvignettefeather' => { 370 => 'PostCropVignetteFeather' },
-	'postcropvignettehighlightcontrast' => { 370 => 'PostCropVignetteHighlightContrast' },
-	'postcropvignettemidpoint' => { 370 => 'PostCropVignetteMidpoint' },
-	'postcropvignetteroundness' => { 370 => 'PostCropVignetteRoundness' },
-	'postcropvignettestyle' => { 370 => 'PostCropVignetteStyle' },
-	'potentialface1position' => { 329 => 0xb },
-	'potentialface2position' => { 329 => 0x15 },
-	'potentialface3position' => { 329 => 0x1f },
-	'potentialface4position' => { 329 => 0x29 },
-	'potentialface5position' => { 329 => 0x33 },
-	'potentialface6position' => { 329 => 0x3d },
-	'potentialface7position' => { 329 => 0x47 },
-	'potentialface8position' => { 329 => 0x51 },
-	'powersource' => { 262 => '0.1' },
+	'postcropvignetteamount' => { 376 => 'PostCropVignetteAmount' },
+	'postcropvignettefeather' => { 376 => 'PostCropVignetteFeather' },
+	'postcropvignettehighlightcontrast' => { 376 => 'PostCropVignetteHighlightContrast' },
+	'postcropvignettemidpoint' => { 376 => 'PostCropVignetteMidpoint' },
+	'postcropvignetteroundness' => { 376 => 'PostCropVignetteRoundness' },
+	'postcropvignettestyle' => { 376 => 'PostCropVignetteStyle' },
+	'potentialface1position' => { 333 => 0xb },
+	'potentialface2position' => { 333 => 0x15 },
+	'potentialface3position' => { 333 => 0x1f },
+	'potentialface4position' => { 333 => 0x29 },
+	'potentialface5position' => { 333 => 0x33 },
+	'potentialface6position' => { 333 => 0x3d },
+	'potentialface7position' => { 333 => 0x47 },
+	'potentialface8position' => { 333 => 0x51 },
+	'powersource' => { 263 => '0.1' },
 	'poweruptime' => { 182 => 0xb6 },
 	'precaptureframes' => { 238 => 0x300 },
 	'predictor' => { 95 => 0x13d },
 	'preflashreturnstrength' => { 195 => 0x28a },
-	'prefs' => { 103 => 0xdd, 292 => 'Prefs' },
-	'preservedfilename' => { 394 => 'PreservedFileName' },
-	'presetwhitebalance' => { 150 => 0x24, 356 => 0x8002 },
-	'presetwhitebalanceadj' => { 356 => 0x8014 },
+	'prefs' => { 103 => 0xdd, 293 => 'Prefs' },
+	'preservedfilename' => { 400 => 'PreservedFileName' },
+	'presetwhitebalance' => { 150 => 0x24, 362 => 0x8002 },
+	'presetwhitebalanceadj' => { 362 => 0x8014 },
 	'previewapplicationname' => { 95 => 0xc716 },
 	'previewapplicationversion' => { 95 => 0xc717 },
 	'previewbutton' => { 222 => ['14.1','15.1'], 227 => '29.1', 228 => '14.1' },
 	'previewbuttonplusdials' => { 222 => ['14.2','15.2'], 227 => '31.2' },
 	'previewcolorspace' => { 95 => 0xc71a },
-	'previewcropbottom' => { 291 => 0xef },
-	'previewcropleft' => { 291 => 0xec },
-	'previewcropright' => { 291 => 0xee },
-	'previewcroptop' => { 291 => 0xed },
-	'previewdate' => { 299 => 0x0 },
+	'previewcropbottom' => { 292 => 0xef },
+	'previewcropleft' => { 292 => 0xec },
+	'previewcropright' => { 292 => 0xee },
+	'previewcroptop' => { 292 => 0xed },
+	'previewdate' => { 300 => 0x0 },
 	'previewdatetime' => { 95 => 0xc71b },
-	'previewimage' => { 91 => 0x2000, 92 => 'PreviewImage', 96 => 'PreviewImage', 98 => 0x4, 135 => 'data', 152 => 0x81, 238 => 0x280, 251 => 0x300, 331 => 0x2001 },
-	'previewimageborders' => { 283 => 0x3e },
+	'previewimage' => { 91 => 0x2000, 92 => 'PreviewImage', 96 => 'PreviewImage', 98 => 0x4, 135 => 'data', 152 => 0x81, 238 => 0x280, 252 => 0x300, 335 => 0x2001 },
+	'previewimageborders' => { 284 => 0x3e },
 	'previewimageheight' => { 59 => 0x4, 113 => 0xfa58 },
-	'previewimagelength' => { 59 => 0x2, 91 => 0x3, 95 => [0x117,0x202], 152 => 0x89, 185 => 0x202, 233 => 0x102, 238 => 0x1037, 283 => 0x3, 304 => 0x1e, 309 => 0x3, 314 => [0x1b,0x1d], 322 => 0x202 },
+	'previewimagelength' => { 59 => 0x2, 91 => 0x3, 95 => [0x117,0x202], 152 => 0x89, 185 => 0x202, 233 => 0x102, 238 => 0x1037, 284 => 0x3, 305 => 0x1e, 310 => 0x3, 315 => [0x1b,0x1d], 326 => 0x202 },
 	'previewimagename' => { 135 => '1Name' },
-	'previewimagesize' => { 91 => 0x2, 118 => 0x2, 135 => 'ImageSize', 283 => 0x2, 314 => [0x1c,0x1e], 331 => 0xb02c },
-	'previewimagestart' => { 59 => 0x5, 91 => 0x4, 95 => [0x111,0x201], 152 => 0x88, 185 => 0x201, 233 => 0x101, 238 => 0x1036, 283 => 0x4, 304 => 0x1c, 309 => 0x2, 314 => [0x1a,0x1c], 322 => 0x201 },
+	'previewimagesize' => { 91 => 0x2, 118 => 0x2, 135 => 'ImageSize', 284 => 0x2, 315 => [0x1c,0x1e], 335 => 0xb02c },
+	'previewimagestart' => { 59 => 0x5, 91 => 0x4, 95 => [0x111,0x201], 152 => 0x88, 185 => 0x201, 233 => 0x101, 238 => 0x1036, 284 => 0x4, 305 => 0x1c, 310 => 0x2, 315 => [0x1a,0x1c], 326 => 0x201 },
 	'previewimagetype' => { 135 => '0Type' },
 	'previewimagevalid' => { 233 => 0x100, 238 => 0x1035 },
 	'previewimagewidth' => { 59 => 0x3, 113 => 0xfa57 },
@@ -3319,16 +3381,16 @@ my %tagLookup = (
 	'previewsettingsdigest' => { 95 => 0xc719 },
 	'previewsettingsname' => { 95 => 0xc718 },
 	'primaryafpoint' => { 158 => 0x7 },
-	'primarychromaticities' => { 95 => 0x13f, 389 => 'PrimaryChromaticities' },
+	'primarychromaticities' => { 95 => 0x13f, 395 => 'PrimaryChromaticities' },
 	'printim' => { 95 => 0xc4a5 },
-	'prioritysetupshutterrelease' => { 150 => 0x1d, 319 => 0x28 },
-	'privatertkinfo' => { 362 => 'privateRTKInfo' },
+	'prioritysetupshutterrelease' => { 150 => 0x1d, 323 => 0x28 },
+	'privatertkinfo' => { 368 => 'privateRTKInfo' },
 	'processingsoftware' => { 95 => 0xb },
-	'processversion' => { 370 => 'ProcessVersion' },
-	'producer' => { 242 => 'Producer', 381 => 'Producer' },
+	'processversion' => { 376 => 'ProcessVersion' },
+	'producer' => { 242 => 'Producer', 387 => 'Producer' },
 	'productid' => { 104 => 0x32 },
-	'productioncode' => { 263 => 0x2 },
-	'productorserviceconstraints' => { 383 => 'ProductOrServiceConstraints' },
+	'productioncode' => { 264 => 0x2 },
+	'productorserviceconstraints' => { 389 => 'ProductOrServiceConstraints' },
 	'profilecalibrationsig' => { 95 => 0xc6f4 },
 	'profilecopyright' => { 95 => 0xc6fe },
 	'profileembedpolicy' => { 95 => 0xc6fd },
@@ -3341,43 +3403,43 @@ my %tagLookup = (
 	'profilelooktableencoding' => { 95 => 0xc7a4 },
 	'profilename' => { 95 => 0xc6f8 },
 	'profiletonecurve' => { 95 => 0xc6fc },
-	'programiso' => { 252 => 0x3c },
-	'programline' => { 264 => '1.1' },
+	'programiso' => { 253 => 0x3c },
+	'programline' => { 265 => '1.1' },
 	'programmode' => { 155 => 0x5 },
 	'programshift' => { 182 => 0xd },
 	'programversion' => { 103 => 0x46 },
-	'prohibits' => { 368 => 'prohibits' },
-	'projectiontype' => { 360 => 'ProjectionType' },
-	'projectname' => { 393 => 'projectName' },
-	'projectref' => { 393 => 'projectRef' },
-	'projectrefpath' => { 393 => [\'projectRef','projectRefPath'] },
-	'projectreftype' => { 393 => [\'projectRef','projectRefType'] },
-	'propertyreleaseid' => { 383 => 'PropertyReleaseID' },
-	'propertyreleasestatus' => { 383 => 'PropertyReleaseStatus' },
+	'prohibits' => { 374 => 'prohibits' },
+	'projectiontype' => { 366 => 'ProjectionType' },
+	'projectname' => { 399 => 'projectName' },
+	'projectref' => { 399 => 'projectRef' },
+	'projectrefpath' => { 399 => [\'projectRef','projectRefPath'] },
+	'projectreftype' => { 399 => [\'projectRef','projectRefType'] },
+	'propertyreleaseid' => { 389 => 'PropertyReleaseID' },
+	'propertyreleasestatus' => { 389 => 'PropertyReleaseStatus' },
 	'province-state' => { 103 => 0x5f },
-	'publicationdate' => { 384 => 'publicationDate' },
-	'publicationname' => { 384 => 'publicationName' },
-	'publisher' => { 371 => 'publisher' },
-	'pulldown' => { 393 => 'pullDown' },
-	'quality' => { 0 => 0x1, 29 => 0x3, 90 => 0x2, 91 => 0x3002, 100 => 0x1000, 111 => 0x9, 182 => 0x4, 205 => 0x3, 238 => 0x201, 248 => 0x300, 283 => 0x8, 289 => 0x2, 314 => 0x16, 319 => 0x56, 320 => 0x56, 321 => 0xb, 331 => 0x102 },
-	'quality2' => { 338 => 0x1170, 339 => 0x1174, 340 => 0x1150, 342 => 0x11a8, 343 => 0x1060, 344 => 0x258, 346 => 0x29, 347 => 0x25, 348 => 0x2a },
+	'publicationdate' => { 390 => 'publicationDate' },
+	'publicationname' => { 390 => 'publicationName' },
+	'publisher' => { 377 => 'publisher' },
+	'pulldown' => { 399 => 'pullDown' },
+	'quality' => { 0 => 0x1, 29 => 0x3, 90 => 0x2, 91 => 0x3002, 100 => 0x1000, 111 => 0x9, 182 => 0x4, 205 => 0x3, 238 => 0x201, 249 => 0x300, 284 => 0x8, 290 => 0x2, 315 => 0x16, 323 => 0x56, 324 => 0x56, 325 => 0xb, 335 => 0x102 },
+	'quality2' => { 342 => 0x1170, 343 => 0x1174, 344 => 0x1150, 346 => 0x11a8, 347 => 0x1060, 348 => 0x258, 350 => 0x29, 351 => 0x25, 352 => 0x2a },
 	'qualitymode' => { 91 => 0x8 },
 	'quantizationmethod' => { 105 => 0x78 },
 	'quickadjust' => { 218 => 0x2a },
 	'quickcontroldialinmeter' => { 68 => 0x703 },
 	'quickfix' => { 215 => 0x416391c6 },
-	'quickshot' => { 313 => 0x213 },
+	'quickshot' => { 314 => 0x213 },
 	'rangefinder' => { 224 => '4.1', 225 => '5.1', 226 => '5.1' },
 	'rasterizedcaption' => { 103 => 0x7d },
-	'rating' => { 95 => 0x4746, 291 => 0xdf, 331 => 0x2002, 365 => 'rating', 372 => 'rating', 391 => 'Rating' },
+	'rating' => { 95 => 0x4746, 292 => 0xdf, 335 => 0x2002, 371 => 'rating', 378 => 'rating', 397 => 'Rating' },
 	'ratingpercent' => { 95 => 0x4749, 145 => 'Rating' },
-	'rawandjpgrecording' => { 66 => 0x8, 152 => 0x109, 264 => 0xd },
+	'rawandjpgrecording' => { 66 => 0x8, 152 => 0x109, 265 => 0xd },
 	'rawbrightnessadj' => { 86 => 0x38 },
 	'rawcoloradj' => { 86 => 0x2e },
-	'rawcropbottom' => { 291 => 0xd4 },
-	'rawcropleft' => { 291 => 0xd1 },
-	'rawcropright' => { 291 => 0xd3 },
-	'rawcroptop' => { 291 => 0xd2 },
+	'rawcropbottom' => { 292 => 0xd4 },
+	'rawcropleft' => { 292 => 0xd1 },
+	'rawcropright' => { 292 => 0xd3 },
+	'rawcroptop' => { 292 => 0xd2 },
 	'rawcustomsaturation' => { 86 => 0x30 },
 	'rawcustomtone' => { 86 => 0x34 },
 	'rawdatauniqueid' => { 95 => 0xc65d },
@@ -3387,7 +3449,7 @@ my %tagLookup = (
 	'rawdevcolorspace' => { 239 => 0x108, 240 => 0x109 },
 	'rawdevcontrastvalue' => { 239 => 0x106, 240 => 0x105 },
 	'rawdeveditstatus' => { 239 => 0x10b },
-	'rawdevelopmentprocess' => { 283 => 0x62 },
+	'rawdevelopmentprocess' => { 284 => 0x62 },
 	'rawdevengine' => { 239 => 0x109, 240 => 0x10b },
 	'rawdevexposurebiasvalue' => { 239 => 0x100, 240 => 0x100 },
 	'rawdevgradation' => { 240 => 0x112 },
@@ -3410,30 +3472,30 @@ my %tagLookup = (
 	'rawdevwhitebalance' => { 240 => 0x101 },
 	'rawdevwhitebalancevalue' => { 239 => 0x101, 240 => 0x102 },
 	'rawfile' => { 95 => 0xfe4c },
-	'rawfilename' => { 370 => 'RawFileName' },
+	'rawfilename' => { 376 => 'RawFileName' },
 	'rawimagecenter' => { 182 => 0x99 },
 	'rawimagedigest' => { 95 => 0xc71c },
-	'rawimagesize' => { 283 => 0x39 },
+	'rawimagesize' => { 284 => 0x39 },
 	'rawinfoversion' => { 241 => 0x0 },
 	'rawjpgheight' => { 83 => 0x4 },
 	'rawjpgquality' => { 46 => 0x6, 83 => 0x1 },
 	'rawjpgsize' => { 46 => 0x7, 83 => 0x2 },
 	'rawjpgwidth' => { 83 => 0x3 },
 	'rawmeasuredrggb' => { 34 => 0x26a, 36 => 0x280, 38 => 0x194, 39 => 0x1ad },
-	'rawrppused' => { 365 => 'rawrppused' },
+	'rawrppused' => { 371 => 'rawrppused' },
 	'rawtopreviewgain' => { 95 => 0xc7a8 },
 	'reardisplay' => { 222 => '12.3' },
-	'recognizedface1age' => { 247 => 0x20 },
-	'recognizedface1name' => { 247 => 0x4 },
-	'recognizedface1position' => { 247 => 0x18 },
-	'recognizedface2age' => { 247 => 0x50 },
-	'recognizedface2name' => { 247 => 0x34 },
-	'recognizedface2position' => { 247 => 0x48 },
-	'recognizedface3age' => { 247 => 0x80 },
-	'recognizedface3name' => { 247 => 0x64 },
-	'recognizedface3position' => { 247 => 0x78 },
-	'recognizedfaceflags' => { 252 => 0x63 },
-	'recommendedexposureindex' => { 95 => 0x8832, 375 => 'RecommendedExposureIndex' },
+	'recognizedface1age' => { 248 => 0x20 },
+	'recognizedface1name' => { 248 => 0x4 },
+	'recognizedface1position' => { 248 => 0x18 },
+	'recognizedface2age' => { 248 => 0x50 },
+	'recognizedface2name' => { 248 => 0x34 },
+	'recognizedface2position' => { 248 => 0x48 },
+	'recognizedface3age' => { 248 => 0x80 },
+	'recognizedface3name' => { 248 => 0x64 },
+	'recognizedface3position' => { 248 => 0x78 },
+	'recognizedfaceflags' => { 253 => 0x63 },
+	'recommendedexposureindex' => { 95 => 0x8832, 381 => 'RecommendedExposureIndex' },
 	'record' => { 94 => 'Record' },
 	'recordbasisofrecord' => { 94 => [\'Record','RecordBasisOfRecord'] },
 	'recordcollectioncode' => { 94 => [\'Record','RecordCollectionCode'] },
@@ -3445,31 +3507,31 @@ my %tagLookup = (
 	'recorddynamicproperties' => { 94 => [\'Record','RecordDynamicProperties'] },
 	'recordid' => { 81 => 0x1804 },
 	'recordinformationwithheld' => { 94 => [\'Record','RecordInformationWithheld'] },
-	'recordingformat' => { 305 => 0x1000 },
-	'recordingmode' => { 90 => 0x1, 289 => 0x1 },
+	'recordingformat' => { 306 => 0x1000 },
+	'recordingmode' => { 90 => 0x1, 290 => 0x1 },
 	'recordinstitutioncode' => { 94 => [\'Record','RecordInstitutionCode'] },
 	'recordinstitutionid' => { 94 => [\'Record','RecordInstitutionID'] },
 	'recordmode' => { 29 => 0x9, 91 => 0x3000 },
 	'recordownerinstitutioncode' => { 94 => [\'Record','RecordOwnerInstitutionCode'] },
-	'recordshutterrelease' => { 313 => 0x217 },
-	'redbalance' => { 166 => 0x270, 238 => 0x1017, 256 => 0x11, 283 => 0x1c },
+	'recordshutterrelease' => { 314 => 0x217 },
+	'redbalance' => { 166 => 0x270, 238 => 0x1017, 257 => 0x11, 284 => 0x1c },
 	'redcurvelimits' => { 86 => 0x18a },
 	'redcurvepoints' => { 86 => 0x160 },
 	'redeyecorrection' => { 219 => 0x0 },
-	'redeyeinfo' => { 370 => 'RedEyeInfo' },
-	'redeyereduction' => { 150 => 0x41, 321 => 0x28 },
-	'redhue' => { 370 => 'RedHue' },
-	'redsaturation' => { 370 => 'RedSaturation' },
+	'redeyeinfo' => { 376 => 'RedEyeInfo' },
+	'redeyereduction' => { 150 => 0x41, 325 => 0x28 },
+	'redhue' => { 376 => 'RedHue' },
+	'redsaturation' => { 376 => 'RedSaturation' },
 	'reductionmatrix1' => { 95 => 0xc625 },
 	'reductionmatrix2' => { 95 => 0xc626 },
 	'reelname' => { 95 => 0xc789 },
-	'reference1' => { 378 => [\'TagStructure','TagStructureReference'] },
-	'reference2' => { 378 => [\'TagStructure','TagStructureSubLabelsReference'] },
-	'reference3' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsReference'] },
-	'reference4' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsReference'] },
-	'reference5' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsReference'] },
-	'reference6' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsReference'] },
-	'referenceblackwhite' => { 95 => 0x214, 389 => 'ReferenceBlackWhite' },
+	'reference1' => { 384 => [\'TagStructure','TagStructureReference'] },
+	'reference2' => { 384 => [\'TagStructure','TagStructureSubLabelsReference'] },
+	'reference3' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsReference'] },
+	'reference4' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsReference'] },
+	'reference5' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsReference'] },
+	'reference6' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsReference'] },
+	'referenceblackwhite' => { 95 => 0x214, 395 => 'ReferenceBlackWhite' },
 	'referencedate' => { 103 => 0x2f },
 	'referencenumber' => { 103 => 0x32 },
 	'references' => { 126 => 'References' },
@@ -3486,7 +3548,7 @@ my %tagLookup = (
 	'regionareax' => { 141 => [\'Regions','RegionsRegionListAreaX'] },
 	'regionareay' => { 141 => [\'Regions','RegionsRegionListAreaY'] },
 	'regionbarcodevalue' => { 141 => [\'Regions','RegionsRegionListBarCodeValue'] },
-	'regionconstraints' => { 383 => 'RegionConstraints' },
+	'regionconstraints' => { 389 => 'RegionConstraints' },
 	'regiondescription' => { 141 => [\'Regions','RegionsRegionListDescription'] },
 	'regionextensions' => { 141 => [\'Regions','RegionsRegionListExtensions'] },
 	'regionfocususage' => { 141 => [\'Regions','RegionsRegionListFocusUsage'] },
@@ -3503,9 +3565,9 @@ my %tagLookup = (
 	'regionrectangle' => { 142 => [\'RegionInfo','RegionInfoRegionsRectangle'] },
 	'regionseealso' => { 141 => [\'Regions','RegionsRegionListSeeAlso'] },
 	'regiontype' => { 141 => [\'Regions','RegionsRegionListType'] },
-	'registryid' => { 380 => 'RegistryId' },
-	'registryitemid' => { 380 => [\'RegistryId','RegistryIdRegItemId'] },
-	'registryorganisationid' => { 380 => [\'RegistryId','RegistryIdRegOrgId'] },
+	'registryid' => { 386 => 'RegistryId' },
+	'registryitemid' => { 386 => [\'RegistryId','RegistryIdRegItemId'] },
+	'registryorganisationid' => { 386 => [\'RegistryId','RegistryIdRegOrgId'] },
 	'relatedaudiofile' => { 124 => 'data' },
 	'relatedaudiofilename' => { 124 => '1Name' },
 	'relatedaudiofiletype' => { 124 => '0Type' },
@@ -3513,47 +3575,47 @@ my %tagLookup = (
 	'relatedimageheight' => { 95 => 0x1002 },
 	'relatedimagewidth' => { 95 => 0x1001 },
 	'relatedresourceid' => { 94 => [\'ResourceRelationship','ResourceRelationshipRelatedResourceID'] },
-	'relatedsoundfile' => { 95 => 0xa004, 374 => 'RelatedSoundFile' },
+	'relatedsoundfile' => { 95 => 0xa004, 380 => 'RelatedSoundFile' },
 	'relatedvideofile' => { 138 => 'data' },
 	'relatedvideofilename' => { 138 => '1Name' },
 	'relatedvideofiletype' => { 138 => '0Type' },
-	'relation' => { 371 => 'relation' },
+	'relation' => { 377 => 'relation' },
 	'relationshipaccordingto' => { 94 => [\'ResourceRelationship','ResourceRelationshipRelationshipAccordingTo'] },
 	'relationshipestablisheddate' => { 94 => [\'ResourceRelationship','ResourceRelationshipRelationshipEstablishedDate'] },
 	'relationshipofresource' => { 94 => [\'ResourceRelationship','ResourceRelationshipRelationshipOfResource'] },
 	'relationshipremarks' => { 94 => [\'ResourceRelationship','ResourceRelationshipRelationshipRemarks'] },
-	'relativepeakaudiofilepath' => { 393 => 'relativePeakAudioFilePath' },
-	'relativetimestamp' => { 393 => 'relativeTimestamp' },
-	'relativetimestampscale' => { 393 => [\'relativeTimestamp','relativeTimestampScale'] },
-	'relativetimestampvalue' => { 393 => [\'relativeTimestamp','relativeTimestampValue'] },
+	'relativepeakaudiofilepath' => { 399 => 'relativePeakAudioFilePath' },
+	'relativetimestamp' => { 399 => 'relativeTimestamp' },
+	'relativetimestampscale' => { 399 => [\'relativeTimestamp','relativeTimestampScale'] },
+	'relativetimestampvalue' => { 399 => [\'relativeTimestamp','relativeTimestampValue'] },
 	'releasebuttontousedial' => { 222 => '17.8', 227 => '33.8', 228 => '17.6' },
-	'releasedate' => { 103 => 0x1e, 393 => 'releaseDate' },
-	'releasemode' => { 91 => 0x3001, 331 => 0xb049 },
-	'releasemode2' => { 338 => 0x112c, 339 => [0x112c,0x8], 340 => [0x1108,0x8], 341 => [0x1184,0x8], 342 => [0x1160,0x8], 343 => [0x4,0x1018], 344 => [0x4,0x210], 346 => 0x10, 347 => 0x10, 348 => 0x9, 352 => 0x34 },
-	'releasemode3' => { 338 => 0x1128, 339 => 0x1128, 340 => 0x1104, 341 => 0x1180, 342 => 0x115c, 343 => 0x1014, 344 => 0x20c },
+	'releasedate' => { 103 => 0x1e, 399 => 'releaseDate' },
+	'releasemode' => { 91 => 0x3001, 335 => 0xb049 },
+	'releasemode2' => { 342 => 0x112c, 343 => [0x112c,0x8], 344 => [0x1108,0x8], 345 => [0x1184,0x8], 346 => [0x1160,0x8], 347 => [0x4,0x1018], 348 => [0x4,0x210], 350 => 0x10, 351 => 0x10, 352 => 0x9, 358 => 0x34 },
+	'releasemode3' => { 342 => 0x1128, 343 => 0x1128, 344 => 0x1104, 345 => 0x1180, 346 => 0x115c, 347 => 0x1014, 348 => 0x20c },
 	'releasesetting' => { 81 => 0x1016 },
 	'releasetime' => { 103 => 0x23 },
 	'remoteonduration' => { 223 => '3.4', 224 => '17.2', 225 => '18.2', 226 => '18.2', 228 => '18.2', 229 => '4.3', 231 => '19.2' },
-	'renditionclass' => { 394 => 'RenditionClass' },
-	'renditionof' => { 394 => 'RenditionOf' },
-	'renditionofalternatepaths' => { 394 => [\'RenditionOf','RenditionOfAlternatePaths'] },
-	'renditionofdocumentid' => { 394 => [\'RenditionOf','RenditionOfDocumentID'] },
-	'renditionoffilepath' => { 394 => [\'RenditionOf','RenditionOfFilePath'] },
-	'renditionoffrompart' => { 394 => [\'RenditionOf','RenditionOfFromPart'] },
-	'renditionofinstanceid' => { 394 => [\'RenditionOf','RenditionOfInstanceID'] },
-	'renditionoflastmodifydate' => { 394 => [\'RenditionOf','RenditionOfLastModifyDate'] },
-	'renditionofmanager' => { 394 => [\'RenditionOf','RenditionOfManager'] },
-	'renditionofmanagervariant' => { 394 => [\'RenditionOf','RenditionOfManagerVariant'] },
-	'renditionofmanageto' => { 394 => [\'RenditionOf','RenditionOfManageTo'] },
-	'renditionofmanageui' => { 394 => [\'RenditionOf','RenditionOfManageUI'] },
-	'renditionofmaskmarkers' => { 394 => [\'RenditionOf','RenditionOfMaskMarkers'] },
-	'renditionoforiginaldocumentid' => { 394 => [\'RenditionOf','RenditionOfOriginalDocumentID'] },
-	'renditionofpartmapping' => { 394 => [\'RenditionOf','RenditionOfPartMapping'] },
-	'renditionofrenditionclass' => { 394 => [\'RenditionOf','RenditionOfRenditionClass'] },
-	'renditionofrenditionparams' => { 394 => [\'RenditionOf','RenditionOfRenditionParams'] },
-	'renditionoftopart' => { 394 => [\'RenditionOf','RenditionOfToPart'] },
-	'renditionofversionid' => { 394 => [\'RenditionOf','RenditionOfVersionID'] },
-	'renditionparams' => { 394 => 'RenditionParams' },
+	'renditionclass' => { 400 => 'RenditionClass' },
+	'renditionof' => { 400 => 'RenditionOf' },
+	'renditionofalternatepaths' => { 400 => [\'RenditionOf','RenditionOfAlternatePaths'] },
+	'renditionofdocumentid' => { 400 => [\'RenditionOf','RenditionOfDocumentID'] },
+	'renditionoffilepath' => { 400 => [\'RenditionOf','RenditionOfFilePath'] },
+	'renditionoffrompart' => { 400 => [\'RenditionOf','RenditionOfFromPart'] },
+	'renditionofinstanceid' => { 400 => [\'RenditionOf','RenditionOfInstanceID'] },
+	'renditionoflastmodifydate' => { 400 => [\'RenditionOf','RenditionOfLastModifyDate'] },
+	'renditionofmanager' => { 400 => [\'RenditionOf','RenditionOfManager'] },
+	'renditionofmanagervariant' => { 400 => [\'RenditionOf','RenditionOfManagerVariant'] },
+	'renditionofmanageto' => { 400 => [\'RenditionOf','RenditionOfManageTo'] },
+	'renditionofmanageui' => { 400 => [\'RenditionOf','RenditionOfManageUI'] },
+	'renditionofmaskmarkers' => { 400 => [\'RenditionOf','RenditionOfMaskMarkers'] },
+	'renditionoforiginaldocumentid' => { 400 => [\'RenditionOf','RenditionOfOriginalDocumentID'] },
+	'renditionofpartmapping' => { 400 => [\'RenditionOf','RenditionOfPartMapping'] },
+	'renditionofrenditionclass' => { 400 => [\'RenditionOf','RenditionOfRenditionClass'] },
+	'renditionofrenditionparams' => { 400 => [\'RenditionOf','RenditionOfRenditionParams'] },
+	'renditionoftopart' => { 400 => [\'RenditionOf','RenditionOfToPart'] },
+	'renditionofversionid' => { 400 => [\'RenditionOf','RenditionOfVersionID'] },
+	'renditionparams' => { 400 => 'RenditionParams' },
 	'repeatingflashcount' => { 171 => 0xd, 172 => 0xe, 173 => 0xe, 227 => '17.2', 228 => '24.2', 229 => '9.2', 230 => '24.2', 231 => '25.2' },
 	'repeatingflashcountbuilt-in' => { 203 => 0x4db },
 	'repeatingflashcountexternal' => { 203 => 0x4c3 },
@@ -3562,188 +3624,188 @@ my %tagLookup = (
 	'repeatingflashrate' => { 171 => 0xc, 172 => 0xd, 173 => 0xd, 227 => '18.1', 228 => '25.1', 229 => '10.1', 230 => '25.1', 231 => '26.1' },
 	'repeatingflashratebuilt-in' => { 203 => 0x4da },
 	'repeatingflashrateexternal' => { 203 => 0x4c2 },
-	'requires' => { 368 => 'requires' },
-	'resampleparams' => { 393 => 'resampleParams' },
-	'resampleparamsquality' => { 393 => [\'resampleParams','resampleParamsQuality'] },
-	'resaved' => { 313 => 0x21e },
+	'requires' => { 374 => 'requires' },
+	'resampleparams' => { 399 => 'resampleParams' },
+	'resampleparamsquality' => { 399 => [\'resampleParams','resampleParamsQuality'] },
+	'resaved' => { 314 => 0x21e },
 	'resolution' => { 131 => 'Resolution' },
-	'resolutionmode' => { 314 => 0x4 },
-	'resolutionunit' => { 95 => 0x128, 106 => 0x2, 389 => 'ResolutionUnit' },
+	'resolutionmode' => { 315 => 0x4 },
+	'resolutionunit' => { 95 => 0x128, 106 => 0x2, 395 => 'ResolutionUnit' },
 	'resourceid' => { 94 => [\'ResourceRelationship','ResourceRelationshipResourceID'] },
 	'resourcerelationship' => { 94 => 'ResourceRelationship' },
 	'resourcerelationshipid' => { 94 => [\'ResourceRelationship','ResourceRelationshipResourceRelationshipID'] },
-	'restrictions' => { 386 => 'restrictions' },
-	'retouchareafeather' => { 370 => [\'RetouchAreas','RetouchAreasFeather'] },
-	'retouchareamaskalpha' => { 370 => [\'RetouchAreas','RetouchAreasMasksAlpha'] },
-	'retouchareamaskangle' => { 370 => [\'RetouchAreas','RetouchAreasMasksAngle'] },
-	'retouchareamaskbottom' => { 370 => [\'RetouchAreas','RetouchAreasMasksBottom'] },
-	'retouchareamaskcentervalue' => { 370 => [\'RetouchAreas','RetouchAreasMasksCenterValue'] },
-	'retouchareamaskcenterweight' => { 370 => [\'RetouchAreas','RetouchAreasMasksCenterWeight'] },
-	'retouchareamaskdabs' => { 370 => [\'RetouchAreas','RetouchAreasMasksDabs'] },
-	'retouchareamaskfeather' => { 370 => [\'RetouchAreas','RetouchAreasMasksFeather'] },
-	'retouchareamaskflipped' => { 370 => [\'RetouchAreas','RetouchAreasMasksFlipped'] },
-	'retouchareamaskflow' => { 370 => [\'RetouchAreas','RetouchAreasMasksFlow'] },
-	'retouchareamaskfullx' => { 370 => [\'RetouchAreas','RetouchAreasMasksFullX'] },
-	'retouchareamaskfully' => { 370 => [\'RetouchAreas','RetouchAreasMasksFullY'] },
-	'retouchareamaskleft' => { 370 => [\'RetouchAreas','RetouchAreasMasksLeft'] },
-	'retouchareamaskmidpoint' => { 370 => [\'RetouchAreas','RetouchAreasMasksMidpoint'] },
-	'retouchareamaskperimetervalue' => { 370 => [\'RetouchAreas','RetouchAreasMasksPerimeterValue'] },
-	'retouchareamaskradius' => { 370 => [\'RetouchAreas','RetouchAreasMasksRadius'] },
-	'retouchareamaskright' => { 370 => [\'RetouchAreas','RetouchAreasMasksRight'] },
-	'retouchareamaskroundness' => { 370 => [\'RetouchAreas','RetouchAreasMasksRoundness'] },
-	'retouchareamasks' => { 370 => [\'RetouchAreas','RetouchAreasMasks'] },
-	'retouchareamasksizex' => { 370 => [\'RetouchAreas','RetouchAreasMasksSizeX'] },
-	'retouchareamasksizey' => { 370 => [\'RetouchAreas','RetouchAreasMasksSizeY'] },
-	'retouchareamasktop' => { 370 => [\'RetouchAreas','RetouchAreasMasksTop'] },
-	'retouchareamaskvalue' => { 370 => [\'RetouchAreas','RetouchAreasMasksMaskValue'] },
-	'retouchareamaskversion' => { 370 => [\'RetouchAreas','RetouchAreasMasksVersion'] },
-	'retouchareamaskwhat' => { 370 => [\'RetouchAreas','RetouchAreasMasksWhat'] },
-	'retouchareamaskx' => { 370 => [\'RetouchAreas','RetouchAreasMasksX'] },
-	'retouchareamasky' => { 370 => [\'RetouchAreas','RetouchAreasMasksY'] },
-	'retouchareamaskzerox' => { 370 => [\'RetouchAreas','RetouchAreasMasksZeroX'] },
-	'retouchareamaskzeroy' => { 370 => [\'RetouchAreas','RetouchAreasMasksZeroY'] },
-	'retouchareamethod' => { 370 => [\'RetouchAreas','RetouchAreasMethod'] },
-	'retouchareaoffsety' => { 370 => [\'RetouchAreas','RetouchAreasOffsetY'] },
-	'retouchareaopacity' => { 370 => [\'RetouchAreas','RetouchAreasOpacity'] },
-	'retouchareas' => { 370 => 'RetouchAreas' },
-	'retouchareaseed' => { 370 => [\'RetouchAreas','RetouchAreasSeed'] },
-	'retouchareasourcestate' => { 370 => [\'RetouchAreas','RetouchAreasSourceState'] },
-	'retouchareasourcex' => { 370 => [\'RetouchAreas','RetouchAreasSourceX'] },
-	'retouchareaspottype' => { 370 => [\'RetouchAreas','RetouchAreasSpotType'] },
+	'restrictions' => { 392 => 'restrictions' },
+	'retouchareafeather' => { 376 => [\'RetouchAreas','RetouchAreasFeather'] },
+	'retouchareamaskalpha' => { 376 => [\'RetouchAreas','RetouchAreasMasksAlpha'] },
+	'retouchareamaskangle' => { 376 => [\'RetouchAreas','RetouchAreasMasksAngle'] },
+	'retouchareamaskbottom' => { 376 => [\'RetouchAreas','RetouchAreasMasksBottom'] },
+	'retouchareamaskcentervalue' => { 376 => [\'RetouchAreas','RetouchAreasMasksCenterValue'] },
+	'retouchareamaskcenterweight' => { 376 => [\'RetouchAreas','RetouchAreasMasksCenterWeight'] },
+	'retouchareamaskdabs' => { 376 => [\'RetouchAreas','RetouchAreasMasksDabs'] },
+	'retouchareamaskfeather' => { 376 => [\'RetouchAreas','RetouchAreasMasksFeather'] },
+	'retouchareamaskflipped' => { 376 => [\'RetouchAreas','RetouchAreasMasksFlipped'] },
+	'retouchareamaskflow' => { 376 => [\'RetouchAreas','RetouchAreasMasksFlow'] },
+	'retouchareamaskfullx' => { 376 => [\'RetouchAreas','RetouchAreasMasksFullX'] },
+	'retouchareamaskfully' => { 376 => [\'RetouchAreas','RetouchAreasMasksFullY'] },
+	'retouchareamaskleft' => { 376 => [\'RetouchAreas','RetouchAreasMasksLeft'] },
+	'retouchareamaskmidpoint' => { 376 => [\'RetouchAreas','RetouchAreasMasksMidpoint'] },
+	'retouchareamaskperimetervalue' => { 376 => [\'RetouchAreas','RetouchAreasMasksPerimeterValue'] },
+	'retouchareamaskradius' => { 376 => [\'RetouchAreas','RetouchAreasMasksRadius'] },
+	'retouchareamaskright' => { 376 => [\'RetouchAreas','RetouchAreasMasksRight'] },
+	'retouchareamaskroundness' => { 376 => [\'RetouchAreas','RetouchAreasMasksRoundness'] },
+	'retouchareamasks' => { 376 => [\'RetouchAreas','RetouchAreasMasks'] },
+	'retouchareamasksizex' => { 376 => [\'RetouchAreas','RetouchAreasMasksSizeX'] },
+	'retouchareamasksizey' => { 376 => [\'RetouchAreas','RetouchAreasMasksSizeY'] },
+	'retouchareamasktop' => { 376 => [\'RetouchAreas','RetouchAreasMasksTop'] },
+	'retouchareamaskvalue' => { 376 => [\'RetouchAreas','RetouchAreasMasksMaskValue'] },
+	'retouchareamaskversion' => { 376 => [\'RetouchAreas','RetouchAreasMasksVersion'] },
+	'retouchareamaskwhat' => { 376 => [\'RetouchAreas','RetouchAreasMasksWhat'] },
+	'retouchareamaskx' => { 376 => [\'RetouchAreas','RetouchAreasMasksX'] },
+	'retouchareamasky' => { 376 => [\'RetouchAreas','RetouchAreasMasksY'] },
+	'retouchareamaskzerox' => { 376 => [\'RetouchAreas','RetouchAreasMasksZeroX'] },
+	'retouchareamaskzeroy' => { 376 => [\'RetouchAreas','RetouchAreasMasksZeroY'] },
+	'retouchareamethod' => { 376 => [\'RetouchAreas','RetouchAreasMethod'] },
+	'retouchareaoffsety' => { 376 => [\'RetouchAreas','RetouchAreasOffsetY'] },
+	'retouchareaopacity' => { 376 => [\'RetouchAreas','RetouchAreasOpacity'] },
+	'retouchareas' => { 376 => 'RetouchAreas' },
+	'retouchareaseed' => { 376 => [\'RetouchAreas','RetouchAreasSeed'] },
+	'retouchareasourcestate' => { 376 => [\'RetouchAreas','RetouchAreasSourceState'] },
+	'retouchareasourcex' => { 376 => [\'RetouchAreas','RetouchAreasSourceX'] },
+	'retouchareaspottype' => { 376 => [\'RetouchAreas','RetouchAreasSpotType'] },
 	'retouchhistory' => { 182 => 0x9e },
-	'retouchinfo' => { 370 => 'RetouchInfo' },
-	'reuse' => { 383 => 'Reuse' },
-	'reuseallowed' => { 396 => 'ReuseAllowed' },
-	'reuseprohibited' => { 386 => 'reuseProhibited' },
+	'retouchinfo' => { 376 => 'RetouchInfo' },
+	'reuse' => { 389 => 'Reuse' },
+	'reuseallowed' => { 402 => 'ReuseAllowed' },
+	'reuseprohibited' => { 392 => 'reuseProhibited' },
 	'reverseexposurecompdial' => { 226 => '5.2' },
 	'reverseindicators' => { 222 => '12.1', 224 => '4.3', 225 => '5.2', 226 => '5.4', 227 => '33.5', 228 => '5.1', 231 => '6.2' },
 	'reverseshutterspeedaperture' => { 226 => '5.3' },
-	'revision' => { 372 => 'revision' },
+	'revision' => { 378 => 'revision' },
 	'rgbcurvelimits' => { 86 => 0x238 },
 	'rgbcurvepoints' => { 86 => 0x20e },
-	'richtextcomment' => { 377 => 'RichTextComment' },
-	'ricohdate' => { 304 => 0x6 },
-	'ricohimageheight' => { 304 => 0x2 },
-	'ricohimagewidth' => { 304 => 0x0 },
+	'richtextcomment' => { 383 => 'RichTextComment' },
+	'ricohdate' => { 305 => 0x6 },
+	'ricohimageheight' => { 305 => 0x2 },
+	'ricohimagewidth' => { 305 => 0x0 },
 	'rightascension' => { 134 => 'RightAscension' },
-	'rights' => { 371 => 'rights' },
-	'rightsagent' => { 384 => 'rightsAgent', 386 => 'rightsAgent' },
-	'rightsowner' => { 386 => 'rightsOwner' },
-	'rollangle' => { 252 => 0x90, 282 => 0x1 },
+	'rights' => { 377 => 'rights' },
+	'rightsagent' => { 390 => 'rightsAgent', 392 => 'rightsAgent' },
+	'rightsowner' => { 392 => 'rightsOwner' },
+	'rollangle' => { 253 => 0x90, 283 => 0x1 },
 	'romoperationmode' => { 81 => 0x80d },
-	'rotation' => { 26 => 0x17, 27 => 0x18, 80 => 0x3, 86 => 0x26e, 99 => 0x4, 134 => 'Rotation', 148 => [0x65,0x50], 149 => 0x46, 150 => 0x5a, 153 => 0x10, 202 => '590.1', 215 => 0x76a43207, 252 => 0x30, 264 => '17.2', 291 => 0xd8, 319 => 0x3f, 320 => 0x3f, 330 => 0x10 },
-	'routedto' => { 376 => 'RoutedTo' },
-	'routing' => { 296 => 'Routing' },
-	'routingnotes' => { 376 => 'RoutingNotes' },
+	'rotation' => { 26 => 0x17, 27 => 0x18, 80 => 0x3, 86 => 0x26e, 99 => 0x4, 134 => 'Rotation', 148 => [0x65,0x50], 149 => 0x46, 150 => 0x5a, 153 => 0x10, 202 => '590.1', 215 => 0x76a43207, 253 => 0x30, 265 => '17.2', 292 => 0xd8, 323 => 0x3f, 324 => 0x3f, 334 => 0x10 },
+	'routedto' => { 382 => 'RoutedTo' },
+	'routing' => { 297 => 'Routing' },
+	'routingnotes' => { 382 => 'RoutingNotes' },
 	'rowsperstrip' => { 95 => 0x116 },
-	'rpp' => { 365 => 'rpp' },
+	'rpp' => { 371 => 'rpp' },
 	'safetyshift' => { 68 => 0x108 },
 	'safetyshiftinavortv' => { 66 => 0x10, 67 => 0x10, 69 => 0xf, 70 => 0x10, 73 => 0x10 },
 	'samplebits' => { 124 => 'SampleBits' },
 	'samplerate' => { 124 => 'SampleRate' },
-	'samplesperpixel' => { 95 => 0x115, 389 => 'SamplesPerPixel' },
+	'samplesperpixel' => { 95 => 0x115, 395 => 'SamplesPerPixel' },
 	'samplestructure' => { 105 => 0x5a },
-	'sanyoquality' => { 313 => 0x201 },
-	'sanyothumbnail' => { 313 => 0x100 },
-	'saturation' => { 8 => 0x6e, 10 => 0x76, 29 => 0xe, 40 => 0x1, 90 => 0xd, 91 => [0x3013,0x1f], 95 => [0xa409,0xfe55], 100 => 0x1003, 125 => 'Saturation', 147 => 0x1f, 148 => 0x32, 149 => 0x28, 150 => 0x1a, 155 => 0x1, 182 => [0x94,0xaa], 184 => 0x35, 252 => 0x40, 254 => 0x300d, 283 => 0x1f, 289 => 0xd, 301 => 0x27, 304 => 0x28, 305 => 0x1013, 314 => 0x10, 319 => 0x1e, 320 => 0x1b, 331 => 0x2005, 370 => 'Saturation', 374 => 'Saturation' },
-	'saturationadj' => { 86 => 0x116, 214 => 0x1, 218 => 0x2e, 356 => 0x8016 },
-	'saturationadjustmentaqua' => { 370 => 'SaturationAdjustmentAqua' },
-	'saturationadjustmentblue' => { 370 => 'SaturationAdjustmentBlue' },
-	'saturationadjustmentgreen' => { 370 => 'SaturationAdjustmentGreen' },
-	'saturationadjustmentmagenta' => { 370 => 'SaturationAdjustmentMagenta' },
-	'saturationadjustmentorange' => { 370 => 'SaturationAdjustmentOrange' },
-	'saturationadjustmentpurple' => { 370 => 'SaturationAdjustmentPurple' },
-	'saturationadjustmentred' => { 370 => 'SaturationAdjustmentRed' },
-	'saturationadjustmentyellow' => { 370 => 'SaturationAdjustmentYellow' },
+	'sanyoquality' => { 314 => 0x201 },
+	'sanyothumbnail' => { 314 => 0x100 },
+	'saturation' => { 8 => 0x6e, 10 => 0x76, 29 => 0xe, 40 => 0x1, 90 => 0xd, 91 => [0x3013,0x1f], 95 => [0xa409,0xfe55], 100 => 0x1003, 125 => 'Saturation', 147 => 0x1f, 148 => 0x32, 149 => 0x28, 150 => 0x1a, 155 => 0x1, 182 => [0x94,0xaa], 184 => 0x35, 253 => 0x40, 255 => 0x300d, 284 => 0x1f, 290 => 0xd, 302 => 0x27, 305 => 0x28, 306 => 0x1013, 315 => 0x10, 323 => 0x1e, 324 => 0x1b, 335 => 0x2005, 376 => 'Saturation', 380 => 'Saturation' },
+	'saturationadj' => { 86 => 0x116, 214 => 0x1, 218 => 0x2e, 362 => 0x8016 },
+	'saturationadjustmentaqua' => { 376 => 'SaturationAdjustmentAqua' },
+	'saturationadjustmentblue' => { 376 => 'SaturationAdjustmentBlue' },
+	'saturationadjustmentgreen' => { 376 => 'SaturationAdjustmentGreen' },
+	'saturationadjustmentmagenta' => { 376 => 'SaturationAdjustmentMagenta' },
+	'saturationadjustmentorange' => { 376 => 'SaturationAdjustmentOrange' },
+	'saturationadjustmentpurple' => { 376 => 'SaturationAdjustmentPurple' },
+	'saturationadjustmentred' => { 376 => 'SaturationAdjustmentRed' },
+	'saturationadjustmentyellow' => { 376 => 'SaturationAdjustmentYellow' },
 	'saturationauto' => { 57 => 0x98 },
 	'saturationfaithful' => { 17 => 0xfe, 56 => 0x68, 57 => 0x68 },
 	'saturationlandscape' => { 17 => 0xfc, 56 => 0x38, 57 => 0x38 },
 	'saturationmonochrome' => { 56 => 0x80, 57 => 0x80 },
 	'saturationneutral' => { 17 => 0xfd, 56 => 0x50, 57 => 0x50 },
 	'saturationportrait' => { 17 => 0xfb, 56 => 0x20, 57 => 0x20 },
-	'saturationsetting' => { 241 => 0x1010, 321 => 0x11, 335 => 0x9 },
+	'saturationsetting' => { 241 => 0x1010, 325 => 0x11, 339 => 0x9 },
 	'saturationstandard' => { 17 => 0xfa, 56 => 0x8, 57 => 0x8 },
 	'saturationuserdef1' => { 17 => 0x100, 56 => 0x98, 57 => 0xb0 },
 	'saturationuserdef2' => { 17 => 0x101, 56 => 0xb0, 57 => 0xc8 },
 	'saturationuserdef3' => { 17 => 0x102, 56 => 0xc8, 57 => 0xe0 },
-	'saveid' => { 394 => 'SaveID' },
-	'scaletype' => { 393 => 'scaleType' },
+	'saveid' => { 400 => 'SaveID' },
+	'scaletype' => { 399 => 'scaleType' },
 	'scanimageenhancer' => { 187 => 0x60 },
 	'scanningdirection' => { 105 => 0x64 },
-	'scene' => { 379 => 'Scene', 393 => 'scene' },
+	'scene' => { 385 => 'Scene', 399 => 'scene' },
 	'scenearea' => { 236 => 0x211, 238 => 0x1031 },
 	'sceneassist' => { 182 => 0x9c },
-	'scenecapturetype' => { 95 => 0xa406, 374 => 'SceneCaptureType' },
+	'scenecapturetype' => { 95 => 0xa406, 380 => 'SceneCaptureType' },
 	'scenedetect' => { 236 => 0x210, 238 => 0x1030 },
 	'scenedetectdata' => { 236 => 0x212, 238 => 0x1033 },
-	'scenemode' => { 113 => 0xfa02, 152 => 0x100, 182 => 0x8f, 233 => 0x509, 238 => 0x403, 252 => 0x8001, 258 => 0xf, 331 => 0xb023 },
+	'scenemode' => { 113 => 0xfa02, 152 => 0x100, 182 => 0x8f, 233 => 0x509, 238 => 0x403, 253 => 0x8001, 259 => 0xf, 335 => 0xb023 },
 	'scenemodeused' => { 115 => [0x6002,0xf002] },
-	'sceneselect' => { 313 => 0x21f },
-	'scenetype' => { 95 => 0xa301, 374 => 'SceneType' },
+	'sceneselect' => { 314 => 0x21f },
+	'scenetype' => { 95 => 0xa301, 380 => 'SceneType' },
 	'screentips' => { 222 => '12.7', 227 => '13.1', 228 => '4.4', 231 => '5.1' },
-	'section' => { 384 => 'section' },
+	'section' => { 390 => 'section' },
 	'securityclassification' => { 95 => 0x9212 },
 	'selectableafpoint' => { 68 => 0x509 },
 	'selectafareaselectmode' => { 68 => 0x512 },
-	'selftimer' => { 29 => 0x2, 252 => 0x2e, 313 => 0x214 },
+	'selftimer' => { 29 => 0x2, 253 => 0x2e, 314 => 0x214 },
 	'selftimer2' => { 62 => 0x1d },
 	'selftimerinterval' => { 228 => '19.2' },
 	'selftimermode' => { 95 => 0x882b },
 	'selftimershotcount' => { 224 => '18.2', 225 => '19.2', 226 => '19.2', 228 => '19.3', 231 => '20.2' },
 	'selftimertime' => { 81 => 0x1806, 150 => 0x1f, 222 => '18.1', 223 => '3.3', 224 => '18.1', 225 => '19.1', 226 => '19.1', 227 => '7.2', 228 => '19.1', 229 => '3.3', 231 => '20.1' },
 	'seminfo' => { 95 => 0x8546 },
-	'sensingmethod' => { 95 => 0xa217, 374 => 'SensingMethod' },
-	'sensitivityadjust' => { 283 => 0x40 },
-	'sensitivitysteps' => { 264 => ['14.3','17.4'], 266 => 0x1 },
-	'sensitivitytype' => { 95 => 0x8830, 375 => 'SensitivityType' },
-	'sensorareas' => { 311 => 0xa010 },
-	'sensorbitdepth' => { 254 => 0x312d },
+	'sensingmethod' => { 95 => 0xa217, 380 => 'SensingMethod' },
+	'sensitivityadjust' => { 284 => 0x40 },
+	'sensitivitysteps' => { 265 => ['14.3','17.4'], 267 => 0x1 },
+	'sensitivitytype' => { 95 => 0x8830, 381 => 'SensitivityType' },
+	'sensorareas' => { 312 => 0xa010 },
+	'sensorbitdepth' => { 255 => 0x312d },
 	'sensorbluelevel' => { 60 => 0x5 },
 	'sensorcalibration' => { 237 => 0x805 },
 	'sensorcleaning' => { 74 => 0xd },
 	'sensorfullheight' => { 108 => 0xf904 },
 	'sensorfullwidth' => { 108 => 0xf903 },
-	'sensorheight' => { 108 => 0xf901, 113 => 0xfa21, 154 => 0x8, 254 => 0x312c, 305 => 0x1602 },
+	'sensorheight' => { 108 => 0xf901, 113 => 0xfa21, 154 => 0x8, 255 => 0x312c, 306 => 0x1602 },
 	'sensorpixelsize' => { 182 => 0x9a },
 	'sensorredlevel' => { 60 => 0x4 },
-	'sensorsize' => { 125 => 'SensorSize', 283 => 0x35 },
-	'sensortemperature' => { 236 => 0x1500, 238 => 0x1007, 314 => [0x39,0x55] },
-	'sensorwidth' => { 108 => 0xf900, 113 => 0xfa20, 154 => 0xa, 254 => 0x312b, 305 => 0x1601 },
-	'sequence' => { 301 => 0x7 },
-	'sequencefilenumber' => { 339 => 0x4, 340 => 0x4, 341 => 0x4, 342 => 0x4, 346 => 0xc, 347 => 0xc, 348 => 0x1a },
-	'sequenceimagenumber' => { 339 => 0x0, 340 => 0x0, 341 => 0x0, 342 => 0x0, 346 => 0x8, 347 => 0x8, 348 => 0x12, 352 => 0x24 },
-	'sequencelength' => { 346 => 0x22, 347 => 0x1e, 348 => [0x16,0x1e] },
-	'sequencenumber' => { 62 => 0x9, 91 => 0x301c, 100 => 0x1101, 111 => 0x1d, 203 => 0x51c, 252 => 0x2b, 321 => [0x10c,0x30c], 331 => 0xb04a },
-	'sequenceshotinterval' => { 313 => 0x224 },
-	'sequentialshot' => { 313 => 0x20e },
-	'serialnumber' => { 51 => 0xc, 81 => 0x180b, 95 => [0xa431,0xfde9], 108 => 0xfa04, 110 => 0xfa00, 112 => 0xc354, 113 => 0xfa19, 122 => 0x0, 125 => 'SerialNumber', 182 => [0xa0,0x1d], 234 => 0x101, 238 => [0x404,0x101a], 248 => 0x303, 254 => 0x3103, 283 => 0x229, 301 => 0x15, 305 => 0x5, 314 => 0x2, 367 => 'SerialNumber', 375 => 'BodySerialNumber' },
+	'sensorsize' => { 125 => 'SensorSize', 284 => 0x35 },
+	'sensortemperature' => { 236 => 0x1500, 238 => 0x1007, 315 => [0x39,0x55] },
+	'sensorwidth' => { 108 => 0xf900, 113 => 0xfa20, 154 => 0xa, 255 => 0x312b, 306 => 0x1601 },
+	'sequence' => { 302 => 0x7 },
+	'sequencefilenumber' => { 343 => 0x4, 344 => 0x4, 345 => 0x4, 346 => 0x4, 350 => 0xc, 351 => 0xc, 352 => 0x1a },
+	'sequenceimagenumber' => { 343 => 0x0, 344 => 0x0, 345 => 0x0, 346 => 0x0, 350 => 0x8, 351 => 0x8, 352 => 0x12, 358 => 0x24 },
+	'sequencelength' => { 350 => 0x22, 351 => 0x1e, 352 => [0x16,0x1e] },
+	'sequencenumber' => { 62 => 0x9, 91 => 0x301c, 100 => 0x1101, 111 => 0x1d, 203 => 0x51c, 253 => 0x2b, 325 => [0x10c,0x30c], 335 => 0xb04a },
+	'sequenceshotinterval' => { 314 => 0x224 },
+	'sequentialshot' => { 314 => 0x20e },
+	'serialnumber' => { 51 => 0xc, 81 => 0x180b, 95 => [0xa431,0xfde9], 108 => 0xfa04, 110 => 0xfa00, 112 => 0xc354, 113 => 0xfa19, 122 => 0x0, 125 => 'SerialNumber', 182 => [0xa0,0x1d], 234 => 0x101, 238 => [0x404,0x101a], 249 => 0x303, 255 => 0x3103, 284 => 0x229, 302 => 0x15, 306 => 0x5, 315 => 0x2, 373 => 'SerialNumber', 381 => 'BodySerialNumber' },
 	'serialnumberformat' => { 51 => 0x15, 81 => 0x183b },
-	'seriesdatetime' => { 358 => 'SeriesDateTime' },
-	'seriesdescription' => { 358 => 'SeriesDescription' },
-	'seriesmodality' => { 358 => 'SeriesModality' },
-	'seriesnumber' => { 358 => 'SeriesNumber' },
+	'seriesdatetime' => { 364 => 'SeriesDateTime' },
+	'seriesdescription' => { 364 => 'SeriesDescription' },
+	'seriesmodality' => { 364 => 'SeriesModality' },
+	'seriesnumber' => { 364 => 'SeriesNumber' },
 	'serviceidentifier' => { 104 => 0x1e },
 	'setbuttoncrosskeysfunc' => { 71 => 0x0, 72 => 0x0 },
 	'setbuttonwhenshooting' => { 66 => 0x1, 68 => 0x704, 74 => 0xc },
 	'setfunctionwhenshooting' => { 69 => 0x0, 70 => 0x1, 73 => 0x1 },
-	'shadingcompensation' => { 233 => 0x50c, 252 => 0x8a },
+	'shadingcompensation' => { 233 => 0x50c, 253 => 0x8a },
 	'shadingcompensation2' => { 237 => 0x1012 },
-	'shadow' => { 314 => 0xe },
-	'shadowcorrection' => { 283 => 0x79 },
+	'shadow' => { 315 => 0xe },
+	'shadowcorrection' => { 284 => 0x79 },
 	'shadowprotection' => { 214 => 0x0 },
-	'shadows' => { 95 => 0xfe52, 364 => 'Shadows', 370 => 'Shadows' },
-	'shadows2012' => { 370 => 'Shadows2012' },
+	'shadows' => { 95 => 0xfe52, 370 => 'Shadows', 376 => 'Shadows' },
+	'shadows2012' => { 376 => 'Shadows2012' },
 	'shadowscale' => { 95 => 0xc633 },
-	'shadowtint' => { 370 => 'ShadowTint' },
+	'shadowtint' => { 376 => 'ShadowTint' },
 	'shadowtone' => { 100 => 0x1040 },
-	'shakereduction' => { 284 => 0x1, 285 => 0x1 },
-	'sharpendetail' => { 370 => 'SharpenDetail' },
-	'sharpenedgemasking' => { 370 => 'SharpenEdgeMasking' },
-	'sharpening' => { 254 => 0x300b },
+	'shakereduction' => { 285 => 0x1, 286 => 0x1 },
+	'sharpendetail' => { 376 => 'SharpenDetail' },
+	'sharpenedgemasking' => { 376 => 'SharpenEdgeMasking' },
+	'sharpening' => { 255 => 0x300b },
 	'sharpeningadj' => { 218 => 0x2b },
-	'sharpenradius' => { 370 => 'SharpenRadius' },
-	'sharpness' => { 6 => [0x42,0x48], 8 => 0x72, 10 => 0x74, 29 => 0xf, 60 => 0x2, 90 => 0xb, 91 => [0x3011,0x21], 95 => [0xa40a,0xfe56], 100 => 0x1001, 111 => 0x6b, 120 => 0x37, 125 => 'Sharpness', 147 => 0x21, 148 => 0x30, 149 => 0x26, 150 => 0x18, 155 => 0x3, 182 => 0x6, 184 => 0x32, 238 => 0x100f, 252 => 0x41, 283 => 0x21, 289 => 0xb, 301 => 0x26, 304 => 0x22, 305 => [0x1003,0x1014], 314 => 0x11, 319 => 0x1c, 320 => 0x19, 331 => 0x2006, 370 => 'Sharpness', 374 => 'Sharpness' },
-	'sharpnessadj' => { 86 => 0x25a, 356 => 0x801a },
+	'sharpenradius' => { 376 => 'SharpenRadius' },
+	'sharpness' => { 6 => [0x42,0x48], 8 => 0x72, 10 => 0x74, 29 => 0xf, 60 => 0x2, 90 => 0xb, 91 => [0x3011,0x21], 95 => [0xa40a,0xfe56], 100 => 0x1001, 111 => 0x6b, 120 => 0x37, 125 => 'Sharpness', 147 => 0x21, 148 => 0x30, 149 => 0x26, 150 => 0x18, 155 => 0x3, 182 => 0x6, 184 => 0x32, 238 => 0x100f, 253 => 0x41, 284 => 0x21, 290 => 0xb, 302 => 0x26, 305 => 0x22, 306 => [0x1003,0x1014], 315 => 0x11, 323 => 0x1c, 324 => 0x19, 335 => 0x2006, 358 => 0x52, 376 => 'Sharpness', 380 => 'Sharpness' },
+	'sharpnessadj' => { 86 => 0x25a, 362 => 0x801a },
 	'sharpnessauto' => { 57 => 0x94 },
 	'sharpnessfactor' => { 238 => 0x102a },
 	'sharpnessfaithful' => { 17 => 0xf5, 56 => 0x64, 57 => 0x64 },
@@ -3751,35 +3813,35 @@ my %tagLookup = (
 	'sharpnesslandscape' => { 17 => 0xf3, 56 => 0x34, 57 => 0x34 },
 	'sharpnessmonochrome' => { 17 => 0xf6, 56 => 0x7c, 57 => 0x7c },
 	'sharpnessneutral' => { 17 => 0xf4, 56 => 0x4c, 57 => 0x4c },
-	'sharpnessovershoot' => { 356 => 0x801b },
+	'sharpnessovershoot' => { 362 => 0x801b },
 	'sharpnessportrait' => { 17 => 0xf2, 56 => 0x1c, 57 => 0x1c },
-	'sharpnesssetting' => { 233 => 0x506, 241 => 0x1013, 321 => 0x12, 335 => 0xa },
+	'sharpnesssetting' => { 233 => 0x506, 241 => 0x1013, 325 => 0x12, 339 => 0xa },
 	'sharpnessstandard' => { 17 => 0xf1, 56 => 0x4, 57 => 0x4 },
-	'sharpnessthreshold' => { 356 => 0x801d },
-	'sharpnessundershoot' => { 356 => 0x801c },
+	'sharpnessthreshold' => { 362 => 0x801d },
+	'sharpnessundershoot' => { 362 => 0x801c },
 	'sharpnessuserdef1' => { 17 => 0xf7, 56 => 0x94, 57 => 0xac },
 	'sharpnessuserdef2' => { 17 => 0xf8, 56 => 0xac, 57 => 0xc4 },
 	'sharpnessuserdef3' => { 17 => 0xf9, 56 => 0xc4, 57 => 0xdc },
 	'shootinginfodisplay' => { 222 => '13.2', 227 => '10.2', 228 => '4.1', 231 => '5.3' },
 	'shootinginfomonitorofftime' => { 227 => '9.1', 228 => '21.2', 231 => '22.2' },
-	'shootingmode' => { 125 => 'ShootingMode', 182 => 0x89, 252 => 0x1f },
+	'shootingmode' => { 125 => 'ShootingMode', 182 => 0x89, 253 => 0x1f },
 	'shootingmodesetting' => { 223 => '5.1' },
-	'shortdescription' => { 372 => 'shortdescription' },
+	'shortdescription' => { 378 => 'shortdescription' },
 	'shortdocumentid' => { 103 => 0xba },
 	'shortownername' => { 17 => 0xac },
 	'shortreleasetimelag' => { 68 => 0x80d },
-	'shotdate' => { 393 => 'shotDate' },
-	'shotday' => { 393 => 'shotDay' },
-	'shotlocation' => { 393 => 'shotLocation' },
-	'shotname' => { 393 => 'shotName' },
-	'shotnumber' => { 393 => 'shotNumber' },
-	'shotnumbersincepowerup' => { 334 => 0x44e, 346 => 0x1a, 347 => 0x16, 348 => 0xa },
-	'shotnumbersincepowerup2' => { 321 => 0x200 },
-	'shotsize' => { 393 => 'shotSize' },
+	'shotdate' => { 399 => 'shotDate' },
+	'shotday' => { 399 => 'shotDay' },
+	'shotlocation' => { 399 => 'shotLocation' },
+	'shotname' => { 399 => 'shotName' },
+	'shotnumber' => { 399 => 'shotNumber' },
+	'shotnumbersincepowerup' => { 338 => 0x44e, 350 => 0x1a, 351 => 0x16, 352 => 0xa },
+	'shotnumbersincepowerup2' => { 325 => 0x200 },
+	'shotsize' => { 399 => 'shotSize' },
 	'shutter-aelock' => { 66 => 0x4, 68 => 0x701, 69 => 0x3, 70 => 0x4, 71 => 0x3, 72 => 0x3, 73 => 0x4, 74 => 0x2 },
 	'shutteraelbutton' => { 67 => 0x4 },
 	'shutterbuttonafonbutton' => { 68 => 0x701 },
-	'shuttercount' => { 9 => 0x176, 46 => 0x1, 182 => 0xa7, 188 => [0x6a,0x157,0x24d], 189 => 0x286, 190 => 0x279, 191 => 0x284, 192 => 0x242, 193 => 0x280, 194 => 0x276, 195 => [0x27d,0x27f], 196 => 0x246, 197 => 0x2d6, 198 => 0x321, 199 => 0xbd8, 200 => 0x287, 201 => 0x320, 202 => 0x24a, 203 => 0x5fb, 204 => 0x2d5, 283 => 0x5d, 330 => 0x846, 333 => [0x125,0x14a] },
+	'shuttercount' => { 9 => 0x176, 46 => 0x1, 182 => 0xa7, 188 => [0x6a,0x157,0x24d], 189 => 0x286, 190 => 0x279, 191 => 0x284, 192 => 0x242, 193 => 0x280, 194 => 0x276, 195 => [0x27d,0x27f], 196 => 0x246, 197 => 0x2d6, 198 => 0x321, 199 => 0xbd8, 200 => 0x287, 201 => 0x320, 202 => 0x24a, 203 => 0x5fb, 204 => 0x2d5, 284 => 0x5d, 334 => 0x846, 337 => [0x125,0x14a] },
 	'shuttercurtainsync' => { 66 => 0xf, 67 => 0xf, 68 => 0x305, 69 => 0xe, 70 => 0xf, 71 => 0x8, 72 => 0x8, 73 => 0xf, 74 => 0x8 },
 	'shuttermode' => { 111 => 0x1b },
 	'shutterreleasebuttonae-l' => { 222 => '17.7', 224 => '16.1', 225 => '17.1', 226 => '17.1', 227 => '7.1', 228 => '17.5', 231 => '18.2' },
@@ -3787,66 +3849,67 @@ my %tagLookup = (
 	'shutterreleasenocfcard' => { 66 => 0x2, 67 => 0x2, 74 => 0xf },
 	'shutterreleasetiming' => { 81 => 0x1011 },
 	'shutterspeedrange' => { 68 => 0x10c },
-	'shutterspeedsetting' => { 150 => 0x6, 319 => 0x2f, 320 => 0x28, 321 => 0x0 },
-	'shutterspeedvalue' => { 77 => 0x1, 95 => 0x9201, 238 => 0x1000, 374 => 'ShutterSpeedValue' },
-	'shuttertype' => { 252 => 0x9f },
-	'sidecarforextension' => { 382 => 'SidecarForExtension' },
+	'shutterspeedsetting' => { 150 => 0x6, 323 => 0x2f, 324 => 0x28, 325 => 0x0 },
+	'shutterspeedvalue' => { 77 => 0x1, 95 => 0x9201, 238 => 0x1000, 380 => 'ShutterSpeedValue' },
+	'shuttertype' => { 253 => 0x9f },
+	'sidecarforextension' => { 388 => 'SidecarForExtension' },
 	'similarityindex' => { 103 => 0xe4 },
 	'singleframebracketing' => { 150 => 0x21 },
-	'slaveflashmeteringsegments' => { 283 => 0x20b },
+	'slaveflashmeteringsegments' => { 284 => 0x20b },
 	'slowshutter' => { 62 => 0x8 },
 	'slowsync' => { 100 => 0x1030 },
-	'smartrange' => { 311 => 0xa012 },
-	'smileshutter' => { 321 => 0x31 },
-	'smileshuttermode' => { 321 => 0x27 },
-	'smoothness' => { 95 => 0xfe57, 370 => 'Smoothness' },
-	'softskineffect' => { 331 => 0x200f },
-	'software' => { 95 => 0x131, 126 => 'Software', 244 => 'Software', 314 => 0x18, 389 => 'Software' },
-	'softwareversion' => { 313 => 0x207 },
-	'sonydatetime' => { 337 => 0x6, 339 => 0x1b6, 340 => 0x210, 341 => 0x1fe, 342 => 0x22c },
-	'sonydatetime2' => { 345 => 0x51 },
-	'sonyexposuretime' => { 345 => 0x3a },
-	'sonyexposuretime2' => { 352 => 0xe },
-	'sonyfnumber' => { 345 => 0x3c, 352 => 0x14 },
-	'sonyimageheight' => { 337 => 0x1a, 346 => 0x44, 347 => 0x3f, 348 => 0x47 },
-	'sonyimagesize' => { 150 => 0x3b, 319 => 0x54, 320 => 0x54, 321 => 0x9 },
-	'sonyimagewidth' => { 337 => 0x1c },
-	'sonymaxaperturevalue' => { 352 => 0x16 },
-	'sonymodelid' => { 331 => 0xb001 },
+	'smartrange' => { 312 => 0xa012 },
+	'smileshutter' => { 325 => 0x31 },
+	'smileshuttermode' => { 325 => 0x27 },
+	'smoothness' => { 95 => 0xfe57, 376 => 'Smoothness' },
+	'softskineffect' => { 335 => 0x200f },
+	'software' => { 95 => 0x131, 126 => 'Software', 245 => 'Software', 315 => 0x18, 395 => 'Software' },
+	'softwareversion' => { 314 => 0x207 },
+	'sonydatetime' => { 341 => 0x6, 343 => 0x1b6, 344 => 0x210, 345 => 0x1fe, 346 => 0x22c },
+	'sonydatetime2' => { 349 => 0x51 },
+	'sonyexposuretime' => { 349 => 0x3a },
+	'sonyexposuretime2' => { 358 => 0xe },
+	'sonyfnumber' => { 349 => 0x3c, 358 => 0x14 },
+	'sonyimageheight' => { 341 => 0x1a, 350 => 0x44, 351 => 0x3f, 352 => 0x47 },
+	'sonyimagesize' => { 150 => 0x3b, 323 => 0x54, 324 => 0x54, 325 => 0x9 },
+	'sonyimagewidth' => { 341 => 0x1c },
+	'sonyiso' => { 343 => 0x1218, 344 => 0x11f4, 345 => 0x1270, 346 => [0x1254,0x1258,0x1280], 347 => 0x113c, 348 => 0x344, 358 => 0x4 },
+	'sonymaxaperturevalue' => { 358 => 0x16 },
+	'sonymodelid' => { 335 => 0xb001 },
 	'sonyquality' => { 150 => 0x3c },
-	'source' => { 103 => 0x73, 244 => 'Source', 371 => 'source', 372 => 'source', 382 => 'Source' },
-	'sourcedirectoryindex' => { 270 => 0x0 },
-	'sourcefileindex' => { 270 => 0x2 },
-	'sourcephotoscount' => { 360 => 'SourcePhotosCount' },
-	'spatialfrequencyresponse' => { 374 => 'SpatialFrequencyResponse' },
-	'spatialfrequencyresponsecolumns' => { 374 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseColumns'] },
-	'spatialfrequencyresponsenames' => { 374 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseNames'] },
-	'spatialfrequencyresponserows' => { 374 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseRows'] },
-	'spatialfrequencyresponsevalues' => { 374 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseValues'] },
-	'speakerplacement' => { 393 => 'speakerPlacement' },
+	'source' => { 103 => 0x73, 245 => 'Source', 377 => 'source', 378 => 'source', 388 => 'Source' },
+	'sourcedirectoryindex' => { 271 => 0x0 },
+	'sourcefileindex' => { 271 => 0x2 },
+	'sourcephotoscount' => { 366 => 'SourcePhotosCount' },
+	'spatialfrequencyresponse' => { 380 => 'SpatialFrequencyResponse' },
+	'spatialfrequencyresponsecolumns' => { 380 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseColumns'] },
+	'spatialfrequencyresponsenames' => { 380 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseNames'] },
+	'spatialfrequencyresponserows' => { 380 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseRows'] },
+	'spatialfrequencyresponsevalues' => { 380 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseValues'] },
+	'speakerplacement' => { 399 => 'speakerPlacement' },
 	'specialeffectlevel' => { 91 => 0x3030 },
 	'specialeffectmode' => { 91 => 0x2076 },
 	'specialeffectsetting' => { 91 => 0x3031 },
 	'specialinstructions' => { 103 => 0x28 },
-	'specialmode' => { 238 => 0x200, 313 => 0x200 },
-	'spectralsensitivity' => { 95 => 0x8824, 374 => 'SpectralSensitivity' },
+	'specialmode' => { 238 => 0x200, 314 => 0x200 },
+	'spectralsensitivity' => { 95 => 0x8824, 380 => 'SpectralSensitivity' },
 	'specularwhitelevel' => { 36 => [0x2b9,0x2d0,0x2d4], 38 => 0x1e4, 39 => 0x1fd },
-	'splittoningbalance' => { 370 => 'SplitToningBalance' },
-	'splittoninghighlighthue' => { 370 => 'SplitToningHighlightHue' },
-	'splittoninghighlightsaturation' => { 370 => 'SplitToningHighlightSaturation' },
-	'splittoningshadowhue' => { 370 => 'SplitToningShadowHue' },
-	'splittoningshadowsaturation' => { 370 => 'SplitToningShadowSaturation' },
+	'splittoningbalance' => { 376 => 'SplitToningBalance' },
+	'splittoninghighlighthue' => { 376 => 'SplitToningHighlightHue' },
+	'splittoninghighlightsaturation' => { 376 => 'SplitToningHighlightSaturation' },
+	'splittoningshadowhue' => { 376 => 'SplitToningShadowHue' },
+	'splittoningshadowsaturation' => { 376 => 'SplitToningShadowSaturation' },
 	'spotfocuspointx' => { 147 => 0x2d },
 	'spotfocuspointy' => { 147 => 0x2e },
 	'spotmeteringmode' => { 29 => 0x27 },
 	'spotmeterlinktoafpoint' => { 68 => 0x107 },
-	'sractive' => { 264 => '17.1' },
+	'sractive' => { 265 => '17.1' },
 	'srawquality' => { 29 => 0x2e },
-	'srfocallength' => { 284 => 0x3 },
-	'srhalfpresstime' => { 284 => 0x2 },
-	'srresult' => { 284 => 0x0, 285 => 0x0 },
+	'srfocallength' => { 285 => 0x3 },
+	'srhalfpresstime' => { 285 => 0x2 },
+	'srresult' => { 285 => 0x0, 286 => 0x0 },
 	'standardoutputhighlightpoint' => { 87 => 0x14 },
-	'standardoutputsensitivity' => { 95 => 0x8831, 375 => 'StandardOutputSensitivity' },
+	'standardoutputsensitivity' => { 95 => 0x8831, 381 => 'StandardOutputSensitivity' },
 	'standardoutputshadowpoint' => { 87 => 0x15 },
 	'standardrawcolortone' => { 87 => 0xd },
 	'standardrawcontrast' => { 87 => 0xf },
@@ -3861,23 +3924,23 @@ my %tagLookup = (
 	'standardunsharpmaskstrength' => { 87 => 0x92 },
 	'standardunsharpmaskthreshold' => { 87 => 0x96 },
 	'standbytimer' => { 226 => '18.1' },
-	'startingpage' => { 384 => 'startingPage' },
+	'startingpage' => { 390 => 'startingPage' },
 	'startmovieshooting' => { 68 => 0x70d },
-	'starttimecode' => { 393 => 'startTimecode' },
-	'starttimecodetimeformat' => { 393 => [\'startTimecode','startTimecodeTimeFormat'] },
-	'starttimecodetimevalue' => { 393 => [\'startTimecode','startTimecodeTimeValue'] },
-	'starttimecodevalue' => { 393 => [\'startTimecode','startTimecodeValue'] },
-	'state' => { 130 => 'State', 252 => 0x6b, 382 => 'State' },
-	'status' => { 359 => 'Status', 363 => 'Status' },
-	'stitchingsoftware' => { 360 => 'StitchingSoftware' },
-	'stopsabovebaseiso' => { 338 => 0x113e, 339 => 0x113e, 340 => 0x111a, 341 => 0x1196, 342 => 0x1172, 343 => 0x102a, 344 => 0x222 },
+	'starttimecode' => { 399 => 'startTimecode' },
+	'starttimecodetimeformat' => { 399 => [\'startTimecode','startTimecodeTimeFormat'] },
+	'starttimecodetimevalue' => { 399 => [\'startTimecode','startTimecodeTimeValue'] },
+	'starttimecodevalue' => { 399 => [\'startTimecode','startTimecodeValue'] },
+	'state' => { 130 => 'State', 253 => 0x6b, 388 => 'State' },
+	'status' => { 365 => 'Status', 369 => 'Status' },
+	'stitchingsoftware' => { 366 => 'StitchingSoftware' },
+	'stopsabovebaseiso' => { 342 => 0x113e, 343 => 0x113e, 344 => 0x111a, 345 => 0x1196, 346 => 0x1172, 347 => 0x102a, 348 => 0x222, 358 => 0xa },
 	'storagemethod' => { 154 => 0x12 },
 	'straightenangle' => { 215 => 0x2fc08431 },
-	'stretchmode' => { 393 => 'stretchMode' },
-	'studydatetime' => { 358 => 'StudyDateTime' },
-	'studydescription' => { 358 => 'StudyDescription' },
-	'studyid' => { 358 => 'StudyID' },
-	'studyphysician' => { 358 => 'StudyPhysician' },
+	'stretchmode' => { 399 => 'stretchMode' },
+	'studydatetime' => { 364 => 'StudyDateTime' },
+	'studydescription' => { 364 => 'StudyDescription' },
+	'studyid' => { 364 => 'StudyID' },
+	'studyphysician' => { 364 => 'StudyPhysician' },
 	'sub-location' => { 103 => 0x5c },
 	'subfiledata' => { 133 => 'data' },
 	'subfiledirectory' => { 133 => '1Directory' },
@@ -3885,43 +3948,43 @@ my %tagLookup = (
 	'subfilename' => { 133 => '1Name' },
 	'subfileresource' => { 133 => 'rsrc' },
 	'subfiletype' => { 95 => 0xfe, 133 => '0Type' },
-	'subject' => { 242 => 'Subject', 296 => 'Subject', 371 => 'subject', 381 => 'Subject', 394 => 'subject' },
-	'subjectarea' => { 95 => 0x9214, 374 => 'SubjectArea' },
-	'subjectcode' => { 379 => 'SubjectCode' },
-	'subjectdistance' => { 95 => 0x9206, 111 => 0x3e, 374 => 'SubjectDistance' },
-	'subjectdistancerange' => { 95 => 0xa40c, 374 => 'SubjectDistanceRange' },
-	'subjectlocation' => { 95 => 0xa214, 374 => 'SubjectLocation' },
+	'subject' => { 242 => 'Subject', 297 => 'Subject', 377 => 'subject', 387 => 'Subject', 400 => 'subject' },
+	'subjectarea' => { 95 => 0x9214, 380 => 'SubjectArea' },
+	'subjectcode' => { 385 => 'SubjectCode' },
+	'subjectdistance' => { 95 => 0x9206, 111 => 0x3e, 380 => 'SubjectDistance' },
+	'subjectdistancerange' => { 95 => 0xa40c, 380 => 'SubjectDistanceRange' },
+	'subjectlocation' => { 95 => 0xa214, 380 => 'SubjectLocation' },
 	'subjectprogram' => { 147 => 0x22 },
 	'subjectreference' => { 103 => 0xc },
-	'sublabels4' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabels'] },
-	'sublabels5' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabels'] },
-	'sublables1' => { 378 => [\'TagStructure','TagStructureSubLabels'] },
-	'sublables2' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabels'] },
-	'sublables3' => { 378 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabels'] },
+	'sublabels4' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabels'] },
+	'sublabels5' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabels'] },
+	'sublables1' => { 384 => [\'TagStructure','TagStructureSubLabels'] },
+	'sublables2' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabels'] },
+	'sublables3' => { 384 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabels'] },
 	'subsectime' => { 95 => 0x9290 },
 	'subsectimedigitized' => { 95 => 0x9292 },
 	'subsectimeoriginal' => { 95 => 0x9291 },
-	'subsection1' => { 384 => 'subsection1' },
-	'subsection2' => { 384 => 'subsection2' },
-	'subsection3' => { 384 => 'subsection3' },
-	'subsection4' => { 384 => 'subsection4' },
-	'subversionfilename' => { 378 => [\'SubVersions','SubVersionsFileName'] },
-	'subversionreference' => { 378 => [\'SubVersions','SubVersionsVersRef'] },
-	'subversions' => { 378 => 'SubVersions' },
+	'subsection1' => { 390 => 'subsection1' },
+	'subsection2' => { 390 => 'subsection2' },
+	'subsection3' => { 390 => 'subsection3' },
+	'subsection4' => { 390 => 'subsection4' },
+	'subversionfilename' => { 384 => [\'SubVersions','SubVersionsFileName'] },
+	'subversionreference' => { 384 => [\'SubVersions','SubVersionsVersRef'] },
+	'subversions' => { 384 => 'SubVersions' },
 	'superimposeddisplay' => { 66 => 0xa, 68 => 0x510, 69 => 0x9, 70 => 0xa, 73 => 0xa, 74 => 0xe },
 	'supermacro' => { 51 => 0x1a },
-	'supplementalcategories' => { 103 => 0x14, 382 => 'SupplementalCategories' },
+	'supplementalcategories' => { 103 => 0x14, 388 => 'SupplementalCategories' },
 	'supplementaltype' => { 105 => 0x37 },
-	'svisosetting' => { 264 => 0x14 },
-	'sweeppanoramadirection' => { 252 => 0x93, 321 => 0x33 },
-	'sweeppanoramafieldofview' => { 252 => 0x94 },
-	'sweeppanoramasize' => { 321 => 0x32 },
+	'svisosetting' => { 265 => 0x14 },
+	'sweeppanoramadirection' => { 253 => 0x93, 325 => 0x33 },
+	'sweeppanoramafieldofview' => { 253 => 0x94 },
+	'sweeppanoramasize' => { 325 => 0x32 },
 	'switchtoregisteredafpoint' => { 67 => 0x12, 68 => 0x50a },
-	'tagged' => { 291 => 0xdd, 292 => 'Tagged', 365 => 'tagged' },
-	'tagslist' => { 373 => 'TagsList' },
-	'tagstructure' => { 378 => 'TagStructure' },
-	'takenumber' => { 393 => 'takeNumber' },
-	'tapename' => { 393 => 'tapeName' },
+	'tagged' => { 292 => 0xdd, 293 => 'Tagged', 371 => 'tagged' },
+	'tagslist' => { 379 => 'TagsList' },
+	'tagstructure' => { 384 => 'TagStructure' },
+	'takenumber' => { 399 => 'takeNumber' },
+	'tapename' => { 399 => 'tapeName' },
 	'targetaperture' => { 62 => 0x4 },
 	'targetcompressionratio' => { 79 => 0x1 },
 	'targetdistancesetting' => { 81 => 0x1807 },
@@ -3961,86 +4024,87 @@ my %tagLookup = (
 	'taxontaxonomicstatus' => { 94 => [\'Taxon','TaxonTaxonomicStatus'] },
 	'taxonverbatimtaxonrank' => { 94 => [\'Taxon','TaxonVerbatimTaxonRank'] },
 	'taxonvernacularname' => { 94 => [\'Taxon','TaxonVernacularName'] },
-	'teaser' => { 384 => 'teaser' },
-	'teleconverter' => { 152 => 0x105, 331 => 0x105 },
-	'tempo' => { 393 => 'tempo' },
-	'termsandconditionstext' => { 383 => 'TermsAndConditionsText' },
-	'termsandconditionsurl' => { 383 => 'TermsAndConditionsURL' },
+	'teaser' => { 390 => 'teaser' },
+	'teleconverter' => { 152 => 0x105, 335 => 0x105 },
+	'tempo' => { 399 => 'tempo' },
+	'termsandconditionstext' => { 389 => 'TermsAndConditionsText' },
+	'termsandconditionsurl' => { 389 => 'TermsAndConditionsURL' },
+	'testname' => { 96 => 'TestName' },
 	'textencoding' => { 181 => 0x4 },
-	'textlayername' => { 382 => [\'TextLayers','TextLayersLayerName'] },
-	'textlayers' => { 382 => 'TextLayers' },
-	'textlayertext' => { 382 => [\'TextLayers','TextLayersLayerText'] },
-	'textstamp' => { 252 => [0x8008,0x8009,0x3b,0x3e] },
+	'textlayername' => { 388 => [\'TextLayers','TextLayersLayerName'] },
+	'textlayers' => { 388 => 'TextLayers' },
+	'textlayertext' => { 388 => [\'TextLayers','TextLayersLayerText'] },
+	'textstamp' => { 253 => [0x8008,0x8009,0x3b,0x3e] },
 	'thresholding' => { 95 => 0x107 },
 	'thumbnailfilename' => { 81 => 0x817 },
-	'thumbnailformat' => { 391 => [\'Thumbnails','ThumbnailsFormat'] },
-	'thumbnailheight' => { 113 => 0xfa55, 391 => [\'Thumbnails','ThumbnailsHeight'] },
-	'thumbnailimage' => { 81 => 0x2008, 92 => 'ThumbnailImage', 98 => 0x3, 136 => 'data', 238 => 0x100, 391 => [\'Thumbnails','ThumbnailsImage'] },
+	'thumbnailformat' => { 397 => [\'Thumbnails','ThumbnailsFormat'] },
+	'thumbnailheight' => { 113 => 0xfa55, 397 => [\'Thumbnails','ThumbnailsHeight'] },
+	'thumbnailimage' => { 81 => 0x2008, 92 => 'ThumbnailImage', 98 => 0x3, 136 => 'data', 238 => 0x100, 397 => [\'Thumbnails','ThumbnailsImage'] },
 	'thumbnailimagename' => { 136 => '1Name' },
 	'thumbnailimagesize' => { 136 => 'ImageSize' },
 	'thumbnailimagetype' => { 136 => '0Type' },
 	'thumbnailimagevalidarea' => { 51 => 0x13 },
 	'thumbnaillength' => { 95 => 0x202 },
 	'thumbnailoffset' => { 95 => 0x201 },
-	'thumbnails' => { 391 => 'Thumbnails' },
-	'thumbnailwidth' => { 113 => 0xfa54, 391 => [\'Thumbnails','ThumbnailsWidth'] },
-	'ticker' => { 384 => 'ticker' },
+	'thumbnails' => { 397 => 'Thumbnails' },
+	'thumbnailwidth' => { 113 => 0xfa54, 397 => [\'Thumbnails','ThumbnailsWidth'] },
+	'ticker' => { 390 => 'ticker' },
 	'tilelength' => { 95 => 0x143 },
 	'tilewidth' => { 95 => 0x142 },
-	'time' => { 109 => 0x401, 283 => 0x7 },
+	'time' => { 109 => 0x401, 284 => 0x7 },
 	'timecodes' => { 95 => 0xc763 },
-	'timecreated' => { 103 => 0x3c, 111 => 0x14, 120 => 0x10, 292 => 'TimeCreated' },
-	'timeperiod' => { 384 => 'timePeriod' },
+	'timecreated' => { 103 => 0x3c, 111 => 0x14, 120 => 0x10, 293 => 'TimeCreated' },
+	'timeperiod' => { 390 => 'timePeriod' },
 	'timerfunctionbutton' => { 223 => '5.2', 224 => '12.1', 225 => '13.1' },
 	'timerlength' => { 68 => 0x80c },
-	'timerrecording' => { 252 => 0x96 },
-	'timescaleparams' => { 393 => 'timeScaleParams' },
-	'timescaleparamsframeoverlappingpercentage' => { 393 => [\'timeScaleParams','timeScaleParamsFrameOverlappingPercentage'] },
-	'timescaleparamsframesize' => { 393 => [\'timeScaleParams','timeScaleParamsFrameSize'] },
-	'timescaleparamsquality' => { 393 => [\'timeScaleParams','timeScaleParamsQuality'] },
+	'timerrecording' => { 253 => 0x96 },
+	'timescaleparams' => { 399 => 'timeScaleParams' },
+	'timescaleparamsframeoverlappingpercentage' => { 399 => [\'timeScaleParams','timeScaleParamsFrameOverlappingPercentage'] },
+	'timescaleparamsframesize' => { 399 => [\'timeScaleParams','timeScaleParamsFrameSize'] },
+	'timescaleparamsquality' => { 399 => [\'timeScaleParams','timeScaleParamsQuality'] },
 	'timesent' => { 104 => 0x50 },
-	'timesignature' => { 393 => 'timeSignature' },
-	'timesincepoweron' => { 252 => 0x29 },
-	'timestamp' => { 9 => 0x45e, 17 => 0x11c, 232 => 0x8, 244 => 'TimeStamp', 366 => 'Timestamp' },
+	'timesignature' => { 399 => 'timeSignature' },
+	'timesincepoweron' => { 253 => 0x29 },
+	'timestamp' => { 9 => 0x45e, 17 => 0x11c, 232 => 0x8, 245 => 'TimeStamp', 372 => 'Timestamp' },
 	'timestamp1' => { 9 => 0x45a },
 	'timezone' => { 63 => 0x1, 207 => 0x0 },
 	'timezonecity' => { 63 => 0x2 },
 	'timezonecode' => { 84 => 0x1 },
 	'timezoneinfo' => { 84 => 0x2 },
 	'timezoneoffset' => { 95 => 0x882a },
-	'tint' => { 370 => 'Tint' },
-	'title' => { 126 => 'Title', 242 => 'Title', 244 => 'Title', 252 => 0x65, 296 => 'Title', 371 => 'title', 381 => 'Title', 391 => 'Title' },
+	'tint' => { 376 => 'Tint' },
+	'title' => { 126 => 'Title', 242 => 'Title', 245 => 'Title', 253 => 0x65, 297 => 'Title', 377 => 'title', 387 => 'Title', 397 => 'Title' },
 	'tonecomp' => { 182 => 0x81 },
-	'tonecurve' => { 60 => 0x1, 283 => 0x402, 370 => 'ToneCurve' },
-	'tonecurve1' => { 311 => 0xa040 },
-	'tonecurve2' => { 311 => 0xa041 },
-	'tonecurve3' => { 311 => 0xa042 },
-	'tonecurve4' => { 311 => 0xa043 },
+	'tonecurve' => { 60 => 0x1, 284 => 0x402, 376 => 'ToneCurve' },
+	'tonecurve1' => { 312 => 0xa040 },
+	'tonecurve2' => { 312 => 0xa041 },
+	'tonecurve3' => { 312 => 0xa042 },
+	'tonecurve4' => { 312 => 0xa043 },
 	'tonecurveactive' => { 86 => 0x110 },
-	'tonecurveblue' => { 370 => 'ToneCurveBlue' },
-	'tonecurvebluex' => { 356 => 0x9003 },
-	'tonecurvebluey' => { 356 => 0x9007 },
-	'tonecurvebrightnessx' => { 356 => 0x9000 },
-	'tonecurvebrightnessy' => { 356 => 0x9004 },
+	'tonecurveblue' => { 376 => 'ToneCurveBlue' },
+	'tonecurvebluex' => { 362 => 0x9003 },
+	'tonecurvebluey' => { 362 => 0x9007 },
+	'tonecurvebrightnessx' => { 362 => 0x9000 },
+	'tonecurvebrightnessy' => { 362 => 0x9004 },
 	'tonecurvefilename' => { 109 => 0x1391 },
-	'tonecurvegreen' => { 370 => 'ToneCurveGreen' },
-	'tonecurvegreenx' => { 356 => 0x9002 },
-	'tonecurvegreeny' => { 356 => 0x9006 },
+	'tonecurvegreen' => { 376 => 'ToneCurveGreen' },
+	'tonecurvegreenx' => { 362 => 0x9002 },
+	'tonecurvegreeny' => { 362 => 0x9006 },
 	'tonecurveinterpolation' => { 86 => 0x159 },
 	'tonecurvemode' => { 86 => 0x113 },
-	'tonecurvename' => { 370 => 'ToneCurveName' },
-	'tonecurvename2012' => { 370 => 'ToneCurveName2012' },
+	'tonecurvename' => { 376 => 'ToneCurveName' },
+	'tonecurvename2012' => { 376 => 'ToneCurveName2012' },
 	'tonecurveproperty' => { 86 => 0x3c },
-	'tonecurvepv2012' => { 370 => 'ToneCurvePV2012' },
-	'tonecurvepv2012blue' => { 370 => 'ToneCurvePV2012Blue' },
-	'tonecurvepv2012green' => { 370 => 'ToneCurvePV2012Green' },
-	'tonecurvepv2012red' => { 370 => 'ToneCurvePV2012Red' },
-	'tonecurvered' => { 370 => 'ToneCurveRed' },
-	'tonecurveredx' => { 356 => 0x9001 },
-	'tonecurveredy' => { 356 => 0x9005 },
-	'tonecurves' => { 283 => 0x403 },
+	'tonecurvepv2012' => { 376 => 'ToneCurvePV2012' },
+	'tonecurvepv2012blue' => { 376 => 'ToneCurvePV2012Blue' },
+	'tonecurvepv2012green' => { 376 => 'ToneCurvePV2012Green' },
+	'tonecurvepv2012red' => { 376 => 'ToneCurvePV2012Red' },
+	'tonecurvered' => { 376 => 'ToneCurveRed' },
+	'tonecurveredx' => { 362 => 0x9001 },
+	'tonecurveredy' => { 362 => 0x9005 },
+	'tonecurves' => { 284 => 0x403 },
 	'tonelevel' => { 233 => 0x52e },
-	'toningeffect' => { 46 => 0xf, 182 => 0xb3, 184 => 0x38, 305 => 0x1015 },
+	'toningeffect' => { 46 => 0xf, 182 => 0xb3, 184 => 0x38, 306 => 0x1015 },
 	'toningeffectauto' => { 57 => 0xa4 },
 	'toningeffectfaithful' => { 56 => 0x74, 57 => 0x74 },
 	'toningeffectlandscape' => { 56 => 0x44, 57 => 0x44 },
@@ -4053,48 +4117,48 @@ my %tagLookup = (
 	'toningeffectuserdef3' => { 56 => 0xd4, 57 => 0xec },
 	'toningsaturation' => { 184 => 0x39 },
 	'totalzoom' => { 111 => 0x62 },
-	'touchae' => { 252 => 0xab },
-	'trackcreatedate' => { 300 => 0x1 },
-	'trackmodifydate' => { 300 => 0x2 },
-	'tracknumber' => { 393 => 'trackNumber' },
-	'tracks' => { 393 => 'Tracks' },
-	'tracksframerate' => { 393 => [\'Tracks','TracksFrameRate'] },
-	'tracksmarkers' => { 393 => [\'Tracks','TracksMarkers'] },
-	'tracksmarkerscomment' => { 393 => [\'Tracks','TracksMarkersComment'] },
-	'tracksmarkerscuepointparams' => { 393 => [\'Tracks','TracksMarkersCuePointParams'] },
-	'tracksmarkerscuepointparamskey' => { 393 => [\'Tracks','TracksMarkersCuePointParamsKey'] },
-	'tracksmarkerscuepointparamsvalue' => { 393 => [\'Tracks','TracksMarkersCuePointParamsValue'] },
-	'tracksmarkerscuepointtype' => { 393 => [\'Tracks','TracksMarkersCuePointType'] },
-	'tracksmarkersduration' => { 393 => [\'Tracks','TracksMarkersDuration'] },
-	'tracksmarkerslocation' => { 393 => [\'Tracks','TracksMarkersLocation'] },
-	'tracksmarkersname' => { 393 => [\'Tracks','TracksMarkersName'] },
-	'tracksmarkersprobability' => { 393 => [\'Tracks','TracksMarkersProbability'] },
-	'tracksmarkersspeaker' => { 393 => [\'Tracks','TracksMarkersSpeaker'] },
-	'tracksmarkersstarttime' => { 393 => [\'Tracks','TracksMarkersStartTime'] },
-	'tracksmarkerstarget' => { 393 => [\'Tracks','TracksMarkersTarget'] },
-	'tracksmarkerstype' => { 393 => [\'Tracks','TracksMarkersType'] },
-	'trackstrackname' => { 393 => [\'Tracks','TracksTrackName'] },
-	'trackstracktype' => { 393 => [\'Tracks','TracksTrackType'] },
+	'touchae' => { 253 => 0xab },
+	'trackcreatedate' => { 301 => 0x1 },
+	'trackmodifydate' => { 301 => 0x2 },
+	'tracknumber' => { 399 => 'trackNumber' },
+	'tracks' => { 399 => 'Tracks' },
+	'tracksframerate' => { 399 => [\'Tracks','TracksFrameRate'] },
+	'tracksmarkers' => { 399 => [\'Tracks','TracksMarkers'] },
+	'tracksmarkerscomment' => { 399 => [\'Tracks','TracksMarkersComment'] },
+	'tracksmarkerscuepointparams' => { 399 => [\'Tracks','TracksMarkersCuePointParams'] },
+	'tracksmarkerscuepointparamskey' => { 399 => [\'Tracks','TracksMarkersCuePointParamsKey'] },
+	'tracksmarkerscuepointparamsvalue' => { 399 => [\'Tracks','TracksMarkersCuePointParamsValue'] },
+	'tracksmarkerscuepointtype' => { 399 => [\'Tracks','TracksMarkersCuePointType'] },
+	'tracksmarkersduration' => { 399 => [\'Tracks','TracksMarkersDuration'] },
+	'tracksmarkerslocation' => { 399 => [\'Tracks','TracksMarkersLocation'] },
+	'tracksmarkersname' => { 399 => [\'Tracks','TracksMarkersName'] },
+	'tracksmarkersprobability' => { 399 => [\'Tracks','TracksMarkersProbability'] },
+	'tracksmarkersspeaker' => { 399 => [\'Tracks','TracksMarkersSpeaker'] },
+	'tracksmarkersstarttime' => { 399 => [\'Tracks','TracksMarkersStartTime'] },
+	'tracksmarkerstarget' => { 399 => [\'Tracks','TracksMarkersTarget'] },
+	'tracksmarkerstype' => { 399 => [\'Tracks','TracksMarkersType'] },
+	'trackstrackname' => { 399 => [\'Tracks','TracksTrackName'] },
+	'trackstracktype' => { 399 => [\'Tracks','TracksTrackType'] },
 	'trailersignature' => { 133 => 'zmie' },
-	'transferfunction' => { 95 => 0x12d, 389 => 'TransferFunction' },
-	'transform' => { 252 => [0x8012,0x59] },
-	'transmissionreference' => { 382 => 'TransmissionReference' },
-	'trapped' => { 242 => 'Trapped', 381 => 'Trapped' },
-	'travelday' => { 252 => 0x36 },
-	'triggermode' => { 301 => 0x6 },
+	'transferfunction' => { 95 => 0x12d, 395 => 'TransferFunction' },
+	'transform' => { 253 => [0x8012,0x59] },
+	'transmissionreference' => { 388 => 'TransmissionReference' },
+	'trapped' => { 242 => 'Trapped', 387 => 'Trapped' },
+	'travelday' => { 253 => 0x36 },
+	'triggermode' => { 302 => 0x6 },
 	'tstop' => { 95 => 0xc772 },
-	'ttl_da_adown' => { 271 => 0x5 },
-	'ttl_da_aup' => { 271 => 0x4 },
-	'ttl_da_bdown' => { 271 => 0x7 },
-	'ttl_da_bup' => { 271 => 0x6 },
-	'tungstenawb' => { 261 => 0x1 },
-	'tvexposuretimesetting' => { 264 => 0x12 },
-	'type' => { 371 => 'type', 388 => 'type' },
+	'ttl_da_adown' => { 272 => 0x5 },
+	'ttl_da_aup' => { 272 => 0x4 },
+	'ttl_da_bdown' => { 272 => 0x7 },
+	'ttl_da_bup' => { 272 => 0x6 },
+	'tungstenawb' => { 262 => 0x1 },
+	'tvexposuretimesetting' => { 265 => 0x12 },
+	'type' => { 377 => 'type', 394 => 'type' },
 	'typestatus' => { 94 => [\'Identification','IdentificationTypeStatus'] },
 	'uniquecameramodel' => { 95 => 0xc614 },
 	'uniquedocumentid' => { 103 => 0xbb },
 	'uniqueobjectname' => { 104 => 0x64 },
-	'unknownblock' => { 283 => 0x405 },
+	'unknownblock' => { 284 => 0x405 },
 	'unknownblock1' => { 237 => 0x635 },
 	'unknownblock2' => { 237 => 0x636 },
 	'unknownblock3' => { 237 => 0x1103 },
@@ -4129,112 +4193,112 @@ my %tagLookup = (
 	'unsharp4threshold' => { 220 => 0x6c },
 	'unsharpcount' => { 220 => 0x0 },
 	'unsharpmask' => { 87 => 0x90, 215 => 0x76a43200 },
-	'uprightcentermode' => { 370 => 'UprightCenterMode' },
-	'uprightcenternormx' => { 370 => 'UprightCenterNormX' },
-	'uprightcenternormy' => { 370 => 'UprightCenterNormY' },
-	'uprightdependentdigest' => { 370 => 'UprightDependentDigest' },
-	'uprightfocallength35mm' => { 370 => 'UprightFocalLength35mm' },
-	'uprightfocalmode' => { 370 => 'UprightFocalMode' },
-	'uprightpreview' => { 370 => 'UprightPreview' },
-	'uprighttransform_0' => { 370 => 'UprightTransform_0' },
-	'uprighttransform_1' => { 370 => 'UprightTransform_1' },
-	'uprighttransform_2' => { 370 => 'UprightTransform_2' },
-	'uprighttransform_3' => { 370 => 'UprightTransform_3' },
-	'uprighttransform_4' => { 370 => 'UprightTransform_4' },
-	'uprighttransformcount' => { 370 => 'UprightTransformCount' },
-	'uprightversion' => { 370 => 'UprightVersion' },
-	'urgency' => { 103 => 0xa, 382 => 'Urgency' },
-	'url' => { 126 => 'URL', 244 => 'URL', 294 => 0x40b, 384 => 'url' },
+	'uprightcentermode' => { 376 => 'UprightCenterMode' },
+	'uprightcenternormx' => { 376 => 'UprightCenterNormX' },
+	'uprightcenternormy' => { 376 => 'UprightCenterNormY' },
+	'uprightdependentdigest' => { 376 => 'UprightDependentDigest' },
+	'uprightfocallength35mm' => { 376 => 'UprightFocalLength35mm' },
+	'uprightfocalmode' => { 376 => 'UprightFocalMode' },
+	'uprightpreview' => { 376 => 'UprightPreview' },
+	'uprighttransform_0' => { 376 => 'UprightTransform_0' },
+	'uprighttransform_1' => { 376 => 'UprightTransform_1' },
+	'uprighttransform_2' => { 376 => 'UprightTransform_2' },
+	'uprighttransform_3' => { 376 => 'UprightTransform_3' },
+	'uprighttransform_4' => { 376 => 'UprightTransform_4' },
+	'uprighttransformcount' => { 376 => 'UprightTransformCount' },
+	'uprightversion' => { 376 => 'UprightVersion' },
+	'urgency' => { 103 => 0xa, 388 => 'Urgency' },
+	'url' => { 126 => 'URL', 245 => 'URL', 295 => 0x40b, 390 => 'url' },
 	'usablemeteringmodes' => { 68 => 0x10a },
 	'usableshootingmodes' => { 68 => 0x109 },
-	'usage' => { 385 => 'usage' },
-	'usagefee' => { 386 => 'usageFee' },
-	'usageterms' => { 397 => 'UsageTerms' },
-	'useguidelines' => { 368 => 'useGuidelines' },
-	'usepanoramaviewer' => { 360 => 'UsePanoramaViewer' },
-	'usercomment' => { 81 => 0x805, 95 => 0x9286, 374 => 'UserComment' },
+	'usage' => { 391 => 'usage' },
+	'usagefee' => { 392 => 'usageFee' },
+	'usageterms' => { 403 => 'UsageTerms' },
+	'useguidelines' => { 374 => 'useGuidelines' },
+	'usepanoramaviewer' => { 366 => 'UsePanoramaViewer' },
+	'usercomment' => { 81 => 0x805, 95 => 0x9286, 380 => 'UserComment' },
 	'userdef1picturestyle' => { 17 => 0x10c, 56 => 0xd8, 57 => 0xf0 },
 	'userdef2picturestyle' => { 17 => 0x10e, 56 => 0xda, 57 => 0xf2 },
 	'userdef3picturestyle' => { 17 => 0x110, 56 => 0xdc, 57 => 0xf4 },
-	'userfields' => { 363 => 'UserFields' },
-	'userlabel' => { 301 => 0x2b },
-	'userprofile' => { 248 => 0x302, 254 => 0x3038 },
+	'userfields' => { 369 => 'UserFields' },
+	'userlabel' => { 302 => 0x2b },
+	'userprofile' => { 249 => 0x302, 255 => 0x3038 },
 	'usmlenselectronicmf' => { 67 => 0x7, 68 => 0x501 },
 	'utmeasting' => { 137 => 'Easting' },
 	'utmmapdatum' => { 137 => 'Datum' },
 	'utmnorthing' => { 137 => 'Northing' },
 	'utmzone' => { 137 => 'Zone' },
-	'uv-irfiltercorrection' => { 248 => 0x325 },
+	'uv-irfiltercorrection' => { 249 => 0x325 },
 	'validbits' => { 237 => 0x611, 238 => 0x102c },
 	'validpixeldepth' => { 241 => 0x611 },
 	'variousmodes' => { 111 => 0x26 },
 	'variousmodes2' => { 111 => 0x3a },
 	'variprogram' => { 182 => 0xab },
-	'version' => { 100 => 0x0, 296 => 'Version', 370 => 'Version' },
-	'versioncreatedate' => { 356 => 0xd100 },
-	'versionid' => { 394 => 'VersionID' },
-	'versionidentifier' => { 384 => 'versionIdentifier' },
-	'versionmodifydate' => { 356 => 0xd101 },
-	'versions' => { 394 => 'Versions' },
-	'versionscomments' => { 394 => [\'Versions','VersionsComments'] },
-	'versionsevent' => { 394 => [\'Versions','VersionsEvent'] },
-	'versionseventaction' => { 394 => [\'Versions','VersionsEventAction'] },
-	'versionseventchanged' => { 394 => [\'Versions','VersionsEventChanged'] },
-	'versionseventinstanceid' => { 394 => [\'Versions','VersionsEventInstanceID'] },
-	'versionseventparameters' => { 394 => [\'Versions','VersionsEventParameters'] },
-	'versionseventsoftwareagent' => { 394 => [\'Versions','VersionsEventSoftwareAgent'] },
-	'versionseventwhen' => { 394 => [\'Versions','VersionsEventWhen'] },
-	'versionsmodifier' => { 394 => [\'Versions','VersionsModifier'] },
-	'versionsmodifydate' => { 394 => [\'Versions','VersionsModifyDate'] },
-	'versionsversion' => { 394 => [\'Versions','VersionsVersion'] },
+	'version' => { 100 => 0x0, 297 => 'Version', 376 => 'Version' },
+	'versioncreatedate' => { 362 => 0xd100 },
+	'versionid' => { 400 => 'VersionID' },
+	'versionidentifier' => { 390 => 'versionIdentifier' },
+	'versionmodifydate' => { 362 => 0xd101 },
+	'versions' => { 400 => 'Versions' },
+	'versionscomments' => { 400 => [\'Versions','VersionsComments'] },
+	'versionsevent' => { 400 => [\'Versions','VersionsEvent'] },
+	'versionseventaction' => { 400 => [\'Versions','VersionsEventAction'] },
+	'versionseventchanged' => { 400 => [\'Versions','VersionsEventChanged'] },
+	'versionseventinstanceid' => { 400 => [\'Versions','VersionsEventInstanceID'] },
+	'versionseventparameters' => { 400 => [\'Versions','VersionsEventParameters'] },
+	'versionseventsoftwareagent' => { 400 => [\'Versions','VersionsEventSoftwareAgent'] },
+	'versionseventwhen' => { 400 => [\'Versions','VersionsEventWhen'] },
+	'versionsmodifier' => { 400 => [\'Versions','VersionsModifier'] },
+	'versionsmodifydate' => { 400 => [\'Versions','VersionsModifyDate'] },
+	'versionsversion' => { 400 => [\'Versions','VersionsVersion'] },
 	'verticalafonbutton' => { 222 => '3.2' },
 	'vfdisplayillumination' => { 68 => 0x510 },
-	'vibrance' => { 364 => 'Vibrance', 370 => 'Vibrance' },
+	'vibrance' => { 370 => 'Vibrance', 376 => 'Vibrance' },
 	'vibrationreduction' => { 188 => [0x75,0x82,0x1ae], 196 => '586.1', 202 => '590.2', 206 => 0x4 },
-	'videoalphamode' => { 393 => 'videoAlphaMode' },
-	'videoalphapremultiplecolor' => { 393 => 'videoAlphaPremultipleColor' },
-	'videoalphapremultiplecolora' => { 393 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorA'] },
-	'videoalphapremultiplecolorb' => { 393 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorB'] },
-	'videoalphapremultiplecolorblack' => { 393 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorBlack'] },
-	'videoalphapremultiplecolorblue' => { 393 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorBlue'] },
-	'videoalphapremultiplecolorcyan' => { 393 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorCyan'] },
-	'videoalphapremultiplecolorgreen' => { 393 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorGreen'] },
-	'videoalphapremultiplecolorl' => { 393 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorL'] },
-	'videoalphapremultiplecolormagenta' => { 393 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorMagenta'] },
-	'videoalphapremultiplecolormode' => { 393 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorMode'] },
-	'videoalphapremultiplecolorred' => { 393 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorRed'] },
-	'videoalphapremultiplecolorswatchname' => { 393 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorSwatchName'] },
-	'videoalphapremultiplecolortint' => { 393 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorTint'] },
-	'videoalphapremultiplecolortype' => { 393 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorType'] },
-	'videoalphapremultiplecoloryellow' => { 393 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorYellow'] },
-	'videoalphaunityistransparent' => { 393 => 'videoAlphaUnityIsTransparent' },
+	'videoalphamode' => { 399 => 'videoAlphaMode' },
+	'videoalphapremultiplecolor' => { 399 => 'videoAlphaPremultipleColor' },
+	'videoalphapremultiplecolora' => { 399 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorA'] },
+	'videoalphapremultiplecolorb' => { 399 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorB'] },
+	'videoalphapremultiplecolorblack' => { 399 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorBlack'] },
+	'videoalphapremultiplecolorblue' => { 399 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorBlue'] },
+	'videoalphapremultiplecolorcyan' => { 399 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorCyan'] },
+	'videoalphapremultiplecolorgreen' => { 399 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorGreen'] },
+	'videoalphapremultiplecolorl' => { 399 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorL'] },
+	'videoalphapremultiplecolormagenta' => { 399 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorMagenta'] },
+	'videoalphapremultiplecolormode' => { 399 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorMode'] },
+	'videoalphapremultiplecolorred' => { 399 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorRed'] },
+	'videoalphapremultiplecolorswatchname' => { 399 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorSwatchName'] },
+	'videoalphapremultiplecolortint' => { 399 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorTint'] },
+	'videoalphapremultiplecolortype' => { 399 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorType'] },
+	'videoalphapremultiplecoloryellow' => { 399 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorYellow'] },
+	'videoalphaunityistransparent' => { 399 => 'videoAlphaUnityIsTransparent' },
 	'videocodec' => { 54 => 0x74 },
-	'videocolorspace' => { 393 => 'videoColorSpace' },
-	'videocompressor' => { 393 => 'videoCompressor' },
-	'videofieldorder' => { 393 => 'videoFieldOrder' },
-	'videoframerate' => { 393 => 'videoFrameRate' },
-	'videoframesize' => { 393 => 'videoFrameSize' },
-	'videoframesizeh' => { 393 => [\'videoFrameSize','videoFrameSizeH'] },
-	'videoframesizeunit' => { 393 => [\'videoFrameSize','videoFrameSizeUnit'] },
-	'videoframesizew' => { 393 => [\'videoFrameSize','videoFrameSizeW'] },
-	'videomoddate' => { 393 => 'videoModDate' },
-	'videopixelaspectratio' => { 393 => 'videoPixelAspectRatio' },
-	'videopixeldepth' => { 393 => 'videoPixelDepth' },
+	'videocolorspace' => { 399 => 'videoColorSpace' },
+	'videocompressor' => { 399 => 'videoCompressor' },
+	'videofieldorder' => { 399 => 'videoFieldOrder' },
+	'videoframerate' => { 399 => 'videoFrameRate' },
+	'videoframesize' => { 399 => 'videoFrameSize' },
+	'videoframesizeh' => { 399 => [\'videoFrameSize','videoFrameSizeH'] },
+	'videoframesizeunit' => { 399 => [\'videoFrameSize','videoFrameSizeUnit'] },
+	'videoframesizew' => { 399 => [\'videoFrameSize','videoFrameSizeW'] },
+	'videomoddate' => { 399 => 'videoModDate' },
+	'videopixelaspectratio' => { 399 => 'videoPixelAspectRatio' },
+	'videopixeldepth' => { 399 => 'videoPixelDepth' },
 	'videoquality' => { 91 => 0x4003 },
 	'viewfinderdisplay' => { 222 => '12.4' },
 	'viewfinderwarning' => { 222 => '13.4', 228 => '3.5', 229 => '6.2', 231 => '4.4' },
 	'viewfinderwarnings' => { 68 => 0x40a },
 	'viewinfoduringexposure' => { 68 => 0x407 },
-	'viewingmode' => { 321 => 0x2f, 335 => 0x18 },
-	'viewingmode2' => { 321 => [0x85,0x285] },
-	'vignetteamount' => { 370 => 'VignetteAmount' },
+	'viewingmode' => { 325 => 0x2f, 339 => 0x18 },
+	'viewingmode2' => { 325 => [0x85,0x285] },
+	'vignetteamount' => { 376 => 'VignetteAmount' },
 	'vignettecontrol' => { 182 => 0x2a, 215 => 0x76a43205 },
 	'vignettecontrolintensity' => { 215 => 0xac6bd5c0 },
-	'vignettemidpoint' => { 370 => 'VignetteMidpoint' },
-	'vignetting' => { 305 => 0x1011 },
-	'vignettingcorrection' => { 273 => 0x2, 331 => 0x2011 },
-	'voicememo' => { 313 => 0x216 },
-	'volume' => { 384 => 'volume' },
+	'vignettemidpoint' => { 376 => 'VignetteMidpoint' },
+	'vignetting' => { 306 => 0x1011 },
+	'vignettingcorrection' => { 274 => 0x2, 335 => 0x2011 },
+	'voicememo' => { 314 => 0x216 },
+	'volume' => { 390 => 'volume' },
 	'vr_0x66' => { 188 => 0x66 },
 	'vrdoffset' => { 51 => 0xd0 },
 	'vrmode' => { 206 => 0x6 },
@@ -4313,34 +4377,34 @@ my %tagLookup = (
 	'wb_redlevelsshade' => { 153 => 0x168 },
 	'wb_redlevelstungsten' => { 153 => 0xc0 },
 	'wb_rgbglevels' => { 164 => 0x0 },
-	'wb_rgblevels' => { 153 => [0x546,0x96], 249 => 0xd, 250 => 0x413, 254 => 0x3036, 338 => 0x117c, 339 => 0x1180, 340 => 0x115c, 341 => 0x11d8, 342 => 0x11b4, 343 => 0x106c, 344 => 0x264 },
+	'wb_rgblevels' => { 153 => [0x546,0x96], 250 => 0xd, 251 => 0x413, 255 => 0x3036, 342 => 0x117c, 343 => 0x1180, 344 => 0x115c, 345 => 0x11d8, 346 => 0x11b4, 347 => 0x106c, 348 => 0x264 },
 	'wb_rggbblacklevels' => { 30 => 0x25 },
 	'wb_rggblevels' => { 156 => 0x4, 163 => 0x0 },
 	'wb_rggblevelsasshot' => { 32 => 0x0, 33 => 0x19, 34 => 0x22, 35 => 0x3f, 38 => 0x3f, 39 => 0x3f },
-	'wb_rggblevelsauto' => { 30 => 0x1, 32 => 0x5, 33 => 0x1e, 34 => 0x18, 35 => 0x44, 38 => 0x44, 39 => 0x44, 311 => 0xa022 },
-	'wb_rggblevelsblack' => { 311 => 0xa028 },
-	'wb_rggblevelscloudy' => { 30 => 0xd, 32 => 0x1e, 33 => 0x2d, 34 => 0x31, 35 => 0x58, 38 => 0x71, 39 => 0x8a, 283 => 0x20f, 290 => 0x14 },
+	'wb_rggblevelsauto' => { 30 => 0x1, 32 => 0x5, 33 => 0x1e, 34 => 0x18, 35 => 0x44, 38 => 0x44, 39 => 0x44, 312 => 0xa022 },
+	'wb_rggblevelsblack' => { 312 => 0xa028 },
+	'wb_rggblevelscloudy' => { 30 => 0xd, 32 => 0x1e, 33 => 0x2d, 34 => 0x31, 35 => 0x58, 38 => 0x71, 39 => 0x8a, 284 => 0x20f, 291 => 0x14 },
 	'wb_rggblevelscustom' => { 30 => 0x1d, 35 => 0x80 },
 	'wb_rggblevelscustom1' => { 33 => 0x41 },
 	'wb_rggblevelscustom2' => { 33 => 0x46 },
-	'wb_rggblevelsdaylight' => { 30 => 0x5, 32 => 0x14, 33 => 0x23, 34 => 0x27, 35 => 0x4e, 38 => 0x67, 39 => 0x80, 283 => 0x20d, 290 => 0x2 },
-	'wb_rggblevelsflash' => { 30 => 0x19, 32 => 0x32, 33 => 0x3c, 34 => 0x45, 35 => 0x6c, 38 => 0x85, 39 => 0x9e, 283 => 0x214, 290 => 0x41 },
+	'wb_rggblevelsdaylight' => { 30 => 0x5, 32 => 0x14, 33 => 0x23, 34 => 0x27, 35 => 0x4e, 38 => 0x67, 39 => 0x80, 284 => 0x20d, 291 => 0x2 },
+	'wb_rggblevelsflash' => { 30 => 0x19, 32 => 0x32, 33 => 0x3c, 34 => 0x45, 35 => 0x6c, 38 => 0x85, 39 => 0x9e, 284 => 0x214, 291 => 0x41 },
 	'wb_rggblevelsfluorescent' => { 30 => 0x15, 32 => 0x28, 33 => 0x37, 34 => 0x3b, 35 => 0x62, 38 => 0x7b, 39 => 0x94 },
-	'wb_rggblevelsfluorescentd' => { 283 => 0x211, 290 => 0x26 },
-	'wb_rggblevelsfluorescentl' => { 290 => 0x4a },
-	'wb_rggblevelsfluorescentn' => { 283 => 0x212, 290 => 0x2f },
-	'wb_rggblevelsfluorescentw' => { 283 => 0x213, 290 => 0x38 },
-	'wb_rggblevelsilluminator1' => { 311 => 0xa023 },
-	'wb_rggblevelsilluminator2' => { 311 => 0xa024 },
+	'wb_rggblevelsfluorescentd' => { 284 => 0x211, 291 => 0x26 },
+	'wb_rggblevelsfluorescentl' => { 291 => 0x4a },
+	'wb_rggblevelsfluorescentn' => { 284 => 0x212, 291 => 0x2f },
+	'wb_rggblevelsfluorescentw' => { 284 => 0x213, 291 => 0x38 },
+	'wb_rggblevelsilluminator1' => { 312 => 0xa023 },
+	'wb_rggblevelsilluminator2' => { 312 => 0xa024 },
 	'wb_rggblevelskelvin' => { 30 => 0x21, 32 => 0x2d, 34 => 0x40, 35 => 0x67, 38 => 0x80, 39 => 0x99 },
 	'wb_rggblevelsmeasured' => { 32 => 0xa, 35 => 0x49, 38 => 0x49, 39 => 0x49 },
 	'wb_rggblevelspc1' => { 34 => 0x90, 35 => 0x71 },
 	'wb_rggblevelspc2' => { 34 => 0x95, 35 => 0x76 },
 	'wb_rggblevelspc3' => { 34 => 0x9a, 35 => 0x7b },
-	'wb_rggblevelsshade' => { 30 => 0x9, 32 => 0x19, 33 => 0x28, 34 => 0x2c, 35 => 0x53, 38 => 0x6c, 39 => 0x85, 283 => 0x20e, 290 => 0xb },
-	'wb_rggblevelstungsten' => { 30 => 0x11, 32 => 0x23, 33 => 0x32, 34 => 0x36, 35 => 0x5d, 38 => 0x76, 39 => 0x8f, 283 => 0x210, 290 => 0x1d },
-	'wb_rggblevelsuncorrected' => { 311 => 0xa021 },
-	'wb_rggblevelsunknown' => { 32 => 0xf, 34 => 0x1d, 38 => 0x4e, 39 => 0x4e, 290 => 0x53 },
+	'wb_rggblevelsshade' => { 30 => 0x9, 32 => 0x19, 33 => 0x28, 34 => 0x2c, 35 => 0x53, 38 => 0x6c, 39 => 0x85, 284 => 0x20e, 291 => 0xb },
+	'wb_rggblevelstungsten' => { 30 => 0x11, 32 => 0x23, 33 => 0x32, 34 => 0x36, 35 => 0x5d, 38 => 0x76, 39 => 0x8f, 284 => 0x210, 291 => 0x1d },
+	'wb_rggblevelsuncorrected' => { 312 => 0xa021 },
+	'wb_rggblevelsunknown' => { 32 => 0xf, 34 => 0x1d, 38 => 0x4e, 39 => 0x4e, 291 => 0x53 },
 	'wb_rggblevelsunknown10' => { 32 => 0x5f, 34 => 0x72, 38 => 0x9e, 39 => 0x7b },
 	'wb_rggblevelsunknown11' => { 32 => 0x64, 34 => 0x77, 38 => 0xa3, 39 => 0xa3 },
 	'wb_rggblevelsunknown12' => { 32 => 0x69, 34 => 0x7c, 38 => 0xa8, 39 => 0xa8 },
@@ -4360,7 +4424,7 @@ my %tagLookup = (
 	'wb_rggblevelsunknown7' => { 32 => 0x50, 34 => 0x63, 38 => 0x8f, 39 => 0x6c },
 	'wb_rggblevelsunknown8' => { 32 => 0x55, 34 => 0x68, 38 => 0x94, 39 => 0x71 },
 	'wb_rggblevelsunknown9' => { 32 => 0x5a, 34 => 0x6d, 38 => 0x99, 39 => 0x76 },
-	'wb_rggblevelsuserselected' => { 290 => 0x5c },
+	'wb_rggblevelsuserselected' => { 291 => 0x5c },
 	'wbadjbluebalance' => { 221 => 0x8 },
 	'wbadjcolortemp' => { 86 => 0x1a },
 	'wbadjlighting' => { 221 => 0x14 },
@@ -4369,72 +4433,72 @@ my %tagLookup = (
 	'wbadjrggblevels' => { 86 => 0x6 },
 	'wbadjtemperature' => { 221 => 0x18 },
 	'wbadjtint' => { 221 => 0x25 },
-	'wbbluelevel' => { 248 => 0x324, 252 => 0x8006, 256 => 0x26 },
+	'wbbluelevel' => { 249 => 0x324, 253 => 0x8006, 257 => 0x26 },
 	'wbbracketmode' => { 46 => 0x9 },
-	'wbbracketshotnumber' => { 153 => 0x2b, 305 => 0x101a },
+	'wbbracketshotnumber' => { 153 => 0x2b, 306 => 0x101a },
 	'wbbracketvalueab' => { 46 => 0xc },
 	'wbbracketvaluegm' => { 46 => 0xd },
 	'wbfinetuneactive' => { 86 => 0x24 },
 	'wbfinetunesaturation' => { 86 => 0x28 },
 	'wbfinetunetone' => { 86 => 0x2c },
-	'wbgreenlevel' => { 248 => 0x323, 252 => 0x8005, 256 => 0x25 },
+	'wbgreenlevel' => { 249 => 0x323, 253 => 0x8005, 257 => 0x25 },
 	'wbmediaimagesizesetting' => { 68 => 0x708 },
 	'wbmode' => { 155 => 0x4, 238 => 0x1015 },
-	'wbredlevel' => { 248 => 0x322, 252 => 0x8004, 256 => 0x24 },
+	'wbredlevel' => { 249 => 0x322, 253 => 0x8004, 257 => 0x24 },
 	'wbscale' => { 156 => 0x0 },
-	'wbshiftab' => { 60 => 0xc, 252 => 0x46, 265 => 0x10 },
-	'wbshiftab_gm' => { 331 => 0x2014 },
-	'wbshiftgm' => { 60 => 0xd, 252 => 0x47, 265 => 0x11 },
-	'webstatement' => { 397 => 'WebStatement' },
-	'whitebalance' => { 5 => 0x6f, 6 => [0x44,0x4a], 7 => 0xbc, 8 => 0x36, 9 => 0x5e, 10 => 0x36, 11 => 0x78, 12 => 0x6f, 13 => 0x6f, 14 => 0x73, 15 => 0x6f, 16 => 0x78, 17 => 0x54, 18 => 0x6f, 19 => 0xbc, 20 => 0x7b, 22 => 0xbc, 23 => 0xc2, 25 => 0x77, 60 => 0x8, 62 => 0x7, 90 => 0x7, 91 => [0x19,0x2012], 95 => [0xa403,0xfe4e], 100 => 0x1002, 109 => 0x3fc, 110 => 0xfa0d, 111 => 0x40, 147 => 0x3, 148 => 0xe, 149 => 0x4, 150 => 0xb, 152 => 0x115, 182 => 0x5, 205 => 0x7, 248 => 0x304, 252 => 0x3, 254 => 0x3033, 283 => 0x19, 289 => 0x7, 304 => 0x26, 305 => 0x1003, 314 => [0x3c,0x7,0x58], 331 => [0x115,0xb054], 370 => 'WhiteBalance', 374 => 'WhiteBalance' },
+	'wbshiftab' => { 60 => 0xc, 253 => 0x46, 266 => 0x10 },
+	'wbshiftab_gm' => { 335 => 0x2014 },
+	'wbshiftgm' => { 60 => 0xd, 253 => 0x47, 266 => 0x11 },
+	'webstatement' => { 403 => 'WebStatement' },
+	'whitebalance' => { 5 => 0x6f, 6 => [0x44,0x4a], 7 => 0xbc, 8 => 0x36, 9 => 0x5e, 10 => 0x36, 11 => 0x78, 12 => 0x6f, 13 => 0x6f, 14 => 0x73, 15 => 0x6f, 16 => 0x78, 17 => 0x54, 18 => 0x6f, 19 => 0xbc, 20 => 0x7b, 22 => 0xbc, 23 => 0xc2, 25 => 0x77, 60 => 0x8, 62 => 0x7, 90 => 0x7, 91 => [0x19,0x2012], 95 => [0xa403,0xfe4e], 100 => 0x1002, 109 => 0x3fc, 110 => 0xfa0d, 111 => 0x40, 147 => 0x3, 148 => 0xe, 149 => 0x4, 150 => 0xb, 152 => 0x115, 182 => 0x5, 205 => 0x7, 249 => 0x304, 253 => 0x3, 255 => 0x3033, 284 => 0x19, 290 => 0x7, 305 => 0x26, 306 => 0x1003, 315 => [0x3c,0x7,0x58], 335 => [0x115,0xb054], 376 => 'WhiteBalance', 380 => 'WhiteBalance' },
 	'whitebalance2' => { 233 => 0x500 },
 	'whitebalanceadj' => { 86 => 0x18, 215 => 0x76a43204 },
-	'whitebalanceautoadjustment' => { 261 => 0x0 },
-	'whitebalancebias' => { 91 => 0x2011, 238 => 0x304, 252 => 0x23 },
+	'whitebalanceautoadjustment' => { 262 => 0x0 },
+	'whitebalancebias' => { 91 => 0x2011, 238 => 0x304, 253 => 0x23 },
 	'whitebalanceblue' => { 60 => 0x7 },
 	'whitebalancebracket' => { 233 => 0x502, 238 => 0x303 },
-	'whitebalancebracketing' => { 150 => 0x22, 153 => 0x2c, 330 => 0x2c },
+	'whitebalancebracketing' => { 150 => 0x22, 153 => 0x2c, 334 => 0x2c },
 	'whitebalancecomp' => { 241 => 0x1001 },
-	'whitebalancefinetune' => { 100 => 0x100a, 150 => 0x38, 152 => 0x112, 182 => 0xb, 305 => 0x1004, 319 => 0x6, 331 => 0x112 },
-	'whitebalancemode' => { 283 => 0x1a },
+	'whitebalancefinetune' => { 100 => 0x100a, 150 => 0x38, 152 => 0x112, 182 => 0xb, 306 => 0x1004, 323 => 0x6, 335 => 0x112 },
+	'whitebalancemode' => { 284 => 0x1a },
 	'whitebalancered' => { 60 => 0x6 },
-	'whitebalanceset' => { 264 => 0xa },
-	'whitebalancesetting' => { 150 => 0x23, 321 => 0x16, 335 => 0xd },
+	'whitebalanceset' => { 265 => 0xa },
+	'whitebalancesetting' => { 150 => 0x23, 325 => 0x16, 339 => 0xd },
 	'whitebalancetemperature' => { 233 => 0x501 },
 	'whiteboard' => { 238 => 0x301 },
 	'whitelevel' => { 95 => 0xc61d },
-	'whitepoint' => { 95 => 0x13e, 283 => 0x201, 389 => 'WhitePoint' },
-	'whites2012' => { 370 => 'Whites2012' },
-	'wideadapter' => { 305 => 0x1017 },
+	'whitepoint' => { 95 => 0x13e, 284 => 0x201, 395 => 'WhitePoint' },
+	'whites2012' => { 376 => 'Whites2012' },
+	'wideadapter' => { 306 => 0x1017 },
 	'widefocuszone' => { 147 => 0x2f },
-	'widerange' => { 313 => 0x20f },
-	'wordcount' => { 384 => 'wordCount' },
+	'widerange' => { 314 => 0x20f },
+	'wordcount' => { 390 => 'wordCount' },
 	'workcolorspace' => { 86 => 0x270 },
-	'worktodo' => { 376 => 'WorkToDo' },
-	'worldtimelocation' => { 252 => 0x3a, 283 => 0x22, 288 => '0.1' },
+	'worktodo' => { 382 => 'WorkToDo' },
+	'worldtimelocation' => { 253 => 0x3a, 284 => 0x22, 289 => '0.1' },
 	'writer-editor' => { 103 => 0x7a },
-	'x3filllight' => { 314 => 0x12 },
+	'x3filllight' => { 315 => 0x12 },
 	'xml' => { 107 => 'xml ' },
 	'xmp' => { 85 => 0xffff00f6, 96 => 'XMP' },
-	'xmptoolkit' => { 390 => 'xmptk' },
+	'xmptoolkit' => { 396 => 'xmptk' },
 	'xpauthor' => { 95 => 0x9c9d },
 	'xpcomment' => { 95 => 0x9c9c },
 	'xpkeywords' => { 95 => 0x9c9e },
 	'xposition' => { 95 => 0x11e },
 	'xpsubject' => { 95 => 0x9c9f },
 	'xptitle' => { 95 => 0x9c9b },
-	'xresolution' => { 95 => 0x11a, 106 => 0x3, 295 => 0x0, 389 => 'XResolution' },
+	'xresolution' => { 95 => 0x11a, 106 => 0x3, 296 => 0x0, 395 => 'XResolution' },
 	'xyresolution' => { 99 => 0x3 },
-	'ycbcrcoefficients' => { 95 => 0x211, 389 => 'YCbCrCoefficients' },
-	'ycbcrpositioning' => { 95 => 0x213, 389 => 'YCbCrPositioning' },
-	'ycbcrsubsampling' => { 95 => 0x212, 389 => 'YCbCrSubSampling' },
+	'ycbcrcoefficients' => { 95 => 0x211, 395 => 'YCbCrCoefficients' },
+	'ycbcrpositioning' => { 95 => 0x213, 395 => 'YCbCrPositioning' },
+	'ycbcrsubsampling' => { 95 => 0x212, 395 => 'YCbCrSubSampling' },
 	'yearcreated' => { 111 => 0x10, 120 => 0xc },
 	'yposition' => { 95 => 0x11f },
-	'yresolution' => { 95 => 0x11b, 106 => 0x5, 295 => 0x4, 389 => 'YResolution' },
-	'zonematching' => { 152 => 0x10a, 155 => [0x3a,0x4a], 331 => 0xb024 },
+	'yresolution' => { 95 => 0x11b, 106 => 0x5, 296 => 0x4, 395 => 'YResolution' },
+	'zonematching' => { 152 => 0x10a, 155 => [0x3a,0x4a], 335 => 0xb024 },
 	'zonematchingmode' => { 150 => 0x14 },
 	'zonematchingon' => { 149 => 0x75 },
-	'zonematchingvalue' => { 319 => 0x1f },
+	'zonematchingvalue' => { 323 => 0x1f },
 	'zoomedpreviewlength' => { 238 => 0xf05 },
 	'zoomedpreviewsize' => { 238 => 0xf06 },
 	'zoomedpreviewstart' => { 238 => 0xf04 },
@@ -4452,6 +4516,7 @@ my %tagExists = (
 	'aas' => 1,
 	'abovecolor' => 1,
 	'abstract' => 1,
+	'accelerometertime' => 1,
 	'accessdate' => 1,
 	'accountname' => 1,
 	'acdsee' => 1,
@@ -4477,6 +4542,7 @@ my %tagExists = (
 	'adoberaf' => 1,
 	'adobesr2' => 1,
 	'adoptedneutral' => 1,
+	'adult' => 1,
 	'advancedcontentencryption' => 1,
 	'advancedmutualexcl' => 1,
 	'advancedscenemode' => 1,
@@ -4504,6 +4570,8 @@ my %tagExists = (
 	'afinfosize' => 1,
 	'afm' => 1,
 	'afpointsinfocus1d' => 1,
+	'afstatus15' => 1,
+	'afstatus19' => 1,
 	'aftune' => 1,
 	'aimetadata' => 1,
 	'aipdfprivatedata' => 1,
@@ -4520,6 +4588,7 @@ my %tagExists = (
 	'albumtitleid' => 1,
 	'albumtitlesortorder' => 1,
 	'aliaslayermetadata' => 1,
+	'alignment' => 1,
 	'allcolorflatfield1' => 1,
 	'allcolorflatfield2' => 1,
 	'allcolorflatfield3' => 1,
@@ -4584,6 +4653,8 @@ my %tagExists = (
 	'asfleakybucketpairs' => 1,
 	'asfpacketcount' => 1,
 	'asfsecurityobjectssize' => 1,
+	'asin' => 1,
+	'asin2' => 1,
 	'aspectinfo' => 1,
 	'aspectratiotype' => 1,
 	'aspectratiox' => 1,
@@ -4768,7 +4839,10 @@ my %tagExists = (
 	'bluex' => 1,
 	'bluey' => 1,
 	'boardtemperature' => 1,
+	'bookname' => 1,
 	'booktitle' => 1,
+	'booktype' => 1,
+	'bookversion' => 1,
 	'bordercolor' => 1,
 	'borderid' => 1,
 	'borderinformation' => 1,
@@ -4836,7 +4910,9 @@ my %tagExists = (
 	'cameraidentifier' => 1,
 	'camerainfo' => 1,
 	'camerainfo2' => 1,
+	'camerainfo3' => 1,
 	'camerainfoa100' => 1,
+	'camerainfounknown' => 1,
 	'cameramaker' => 1,
 	'cameramanufacturer' => 1,
 	'cameramotion' => 1,
@@ -4945,6 +5021,7 @@ my %tagExists = (
 	'cddbdiscplaytime' => 1,
 	'cddbdisctracks' => 1,
 	'cddbtracknumber' => 1,
+	'cdetype' => 1,
 	'cdtrackenabled' => 1,
 	'cell' => 1,
 	'cellphone' => 1,
@@ -5026,6 +5103,7 @@ my %tagExists = (
 	'clipobjects' => 1,
 	'clippath' => 1,
 	'clippingboundary' => 1,
+	'clippinglimit' => 1,
 	'clippingpathname' => 1,
 	'cloneid' => 1,
 	'cloneobject' => 1,
@@ -5260,7 +5338,11 @@ my %tagExists = (
 	'creatorappid' => 1,
 	'creatorapplication' => 1,
 	'creatorappversion' => 1,
+	'creatorbuildnumber' => 1,
+	'creatorbuildnumber2' => 1,
 	'creatorinfo' => 1,
+	'creatormajorversion' => 1,
+	'creatorminorversion' => 1,
 	'creatorsoftware' => 1,
 	'creatorversion' => 1,
 	'cropdata' => 1,
@@ -5335,6 +5417,7 @@ my %tagExists = (
 	'data' => 1,
 	'data1' => 1,
 	'data2' => 1,
+	'databasename' => 1,
 	'datacreatedate' => 1,
 	'datadump' => 1,
 	'datadump2' => 1,
@@ -5421,6 +5504,7 @@ my %tagExists = (
 	'dex' => 1,
 	'dicom' => 1,
 	'dictionary' => 1,
+	'dictionaryshortname' => 1,
 	'digikam' => 1,
 	'digitalcreationdatetime' => 1,
 	'digitaleffectsname' => 1,
@@ -5484,6 +5568,7 @@ my %tagExists = (
 	'drm_drmheader_keyid' => 1,
 	'drm_drmheader_licenseacqurl' => 1,
 	'drm_drmheader_subscriptioncontentid' => 1,
+	'drm_e-bookbaseid' => 1,
 	'drm_individualizedversion' => 1,
 	'drm_keyid' => 1,
 	'drm_lasignaturecert' => 1,
@@ -5492,8 +5577,10 @@ my %tagExists = (
 	'drm_lasignaturerootcert' => 1,
 	'drm_licenseacqurl' => 1,
 	'drm_v1licenseacqurl' => 1,
+	'drmcommerceid' => 1,
 	'drmindividualizedversion' => 1,
 	'drmkeyid' => 1,
+	'drmserverid' => 1,
 	'dropbykeyword' => 1,
 	'dropchunks' => 1,
 	'dtcpiphost' => 1,
@@ -5787,6 +5874,7 @@ my %tagExists = (
 	'fontsize' => 1,
 	'fontsubfamily' => 1,
 	'fontsubfamilyid' => 1,
+	'fonttable' => 1,
 	'fontweight' => 1,
 	'footerposition' => 1,
 	'footnotes' => 1,
@@ -5815,6 +5903,7 @@ my %tagExists = (
 	'fragmentlist' => 1,
 	'fragmenttable' => 1,
 	'frame' => 1,
+	'frameexposuretime' => 1,
 	'frameid' => 1,
 	'frameinfo' => 1,
 	'framepriority' => 1,
@@ -5954,6 +6043,7 @@ my %tagExists = (
 	'hdrtoninginfo' => 1,
 	'hdvideo' => 1,
 	'header' => 1,
+	'header4' => 1,
 	'headerext' => 1,
 	'headerextension' => 1,
 	'headersize' => 1,
@@ -6051,8 +6141,10 @@ my %tagExists = (
 	'imageinfo' => 1,
 	'imagelayer' => 1,
 	'imagelength' => 1,
+	'imagelimitexposurebias' => 1,
 	'imagemagnificationdescriptor' => 1,
 	'imagemedium' => 1,
+	'imagemodulationexposurebias' => 1,
 	'imageoffset' => 1,
 	'imagepixelformat' => 1,
 	'imageprintstatus' => 1,
@@ -6079,6 +6171,7 @@ my %tagExists = (
 	'imgprofversion' => 1,
 	'immediatedatabytes' => 1,
 	'importance' => 1,
+	'imprint' => 1,
 	'includedfileid' => 1,
 	'incomplete' => 1,
 	'index' => 1,
@@ -6220,6 +6313,7 @@ my %tagExists = (
 	'jpegqtables' => 1,
 	'jpegrestartinterval' => 1,
 	'jpegtables' => 1,
+	'jsonmetadata' => 1,
 	'jumptoxpep' => 1,
 	'junk' => 1,
 	'kbytesize' => 1,
@@ -6230,6 +6324,7 @@ my %tagExists = (
 	'keyframestimes' => 1,
 	'keyid' => 1,
 	'keys' => 1,
+	'kf8coveruri' => 1,
 	'kids' => 1,
 	'kinds' => 1,
 	'knownfolderdata' => 1,
@@ -6239,6 +6334,7 @@ my %tagExists = (
 	'kodakeffectsifd' => 1,
 	'kodakfree' => 1,
 	'kodakifd' => 1,
+	'kodakmake' => 1,
 	'kodaktags' => 1,
 	'konicaminolta' => 1,
 	'konicaminoltatags' => 1,
@@ -6259,6 +6355,7 @@ my %tagExists = (
 	'largestpacketduration' => 1,
 	'largestpacketsize' => 1,
 	'lastauthor' => 1,
+	'lastbackupdate' => 1,
 	'lastchar' => 1,
 	'lastkeyframetime' => 1,
 	'lastmodifiedby' => 1,
@@ -6268,6 +6365,8 @@ my %tagExists = (
 	'lastobjectid' => 1,
 	'lastprinted' => 1,
 	'lasttimestamp' => 1,
+	'lastupdate' => 1,
+	'lastupdatetime' => 1,
 	'layercomps' => 1,
 	'layergroupsenabledid' => 1,
 	'layerselectionids' => 1,
@@ -6371,6 +6470,8 @@ my %tagExists = (
 	'makemodel' => 1,
 	'makernotepentax5a' => 1,
 	'makernotepentax5b' => 1,
+	'makernotepentax5c' => 1,
+	'makernotepentaxunknown' => 1,
 	'makernotes' => 1,
 	'makerurl' => 1,
 	'mandatorybackground' => 1,
@@ -6493,6 +6594,7 @@ my %tagExists = (
 	'miniaturefilterparameter' => 1,
 	'miniaturefilterposition' => 1,
 	'minimumbitrate' => 1,
+	'minimumversion' => 1,
 	'minoltacamerasettings' => 1,
 	'minoltacamerasettings2' => 1,
 	'minoltacamerasettings5d' => 1,
@@ -6511,6 +6613,8 @@ my %tagExists = (
 	'mintransmissiontime' => 1,
 	'mmclips' => 1,
 	'mngheader' => 1,
+	'mobitype' => 1,
+	'mobiversion' => 1,
 	'modeextension' => 1,
 	'modeflags' => 1,
 	'model2' => 1,
@@ -6519,6 +6623,7 @@ my %tagExists = (
 	'modeltransform' => 1,
 	'modeltype' => 1,
 	'modenumber' => 1,
+	'modificationnumber' => 1,
 	'modificationpermissions' => 1,
 	'modifiedby' => 1,
 	'modifiedinfo' => 1,
@@ -6797,6 +6902,7 @@ my %tagExists = (
 	'palettemethod' => 1,
 	'palettename' => 1,
 	'palettestretch' => 1,
+	'palmfiletype' => 1,
 	'panasonic' => 1,
 	'panasonicpana' => 1,
 	'panorama' => 1,
@@ -6913,9 +7019,6 @@ my %tagExists = (
 	'pixelscale' => 1,
 	'pixelspermeterx' => 1,
 	'pixelspermetery' => 1,
-	'pixelsperunitx' => 1,
-	'pixelsperunity' => 1,
-	'pixelunits' => 1,
 	'pixheight' => 1,
 	'pixwidth' => 1,
 	'places' => 1,
@@ -7091,6 +7194,8 @@ my %tagExists = (
 	'ps2renderingintent' => 1,
 	'psfontinfo' => 1,
 	'pstringcaption' => 1,
+	'publishdate' => 1,
+	'publisherlimit' => 1,
 	'publisherurl' => 1,
 	'pur' => 1,
 	'purchasedate' => 1,
@@ -7216,6 +7321,8 @@ my %tagExists = (
 	'removehistoryduplicates' => 1,
 	'renderingintent' => 1,
 	'renderingtransform' => 1,
+	'rentalexpirationdate' => 1,
+	'rentalflag' => 1,
 	'repeateddatabytes' => 1,
 	'replaygainalbumgain' => 1,
 	'replaygainalbumpeak' => 1,
@@ -7232,17 +7339,22 @@ my %tagExists = (
 	'rerun' => 1,
 	'reserved1' => 1,
 	'resolutioninfo' => 1,
+	'resourcecount' => 1,
 	'resourceforksize' => 1,
 	'resources' => 1,
 	'resourcesneeded' => 1,
 	'resourcetype' => 1,
 	'resultaspectratio' => 1,
+	'retailprice' => 1,
+	'retailpricecurrency' => 1,
+	'review' => 1,
 	'revisiondate' => 1,
 	'revisionnumber' => 1,
 	'revisitafter' => 1,
 	'rgb_profile' => 1,
 	'ricoh' => 1,
 	'ricohjunk' => 1,
+	'ricohmake' => 1,
 	'ricohpitch' => 1,
 	'ricohrdc2' => 1,
 	'ricohrmkn' => 1,
@@ -7273,6 +7385,7 @@ my %tagExists = (
 	'runwindow' => 1,
 	's2n' => 1,
 	'sampledegradationpriority' => 1,
+	'sampleflag' => 1,
 	'sampleformat' => 1,
 	'samplegroupdescription' => 1,
 	'samplepaddingbits' => 1,
@@ -7375,6 +7488,7 @@ my %tagExists = (
 	'sensorleftborder' => 1,
 	'sensorleftmargin' => 1,
 	'sensorrightborder' => 1,
+	'sensorserialnumber' => 1,
 	'sensortemperature2' => 1,
 	'sensortopborder' => 1,
 	'sensortopmargin' => 1,
@@ -7482,6 +7596,7 @@ my %tagExists = (
 	'sminsamplevalue' => 1,
 	'snapshotid' => 1,
 	'snapshotname' => 1,
+	'soctemperature' => 1,
 	'softedit' => 1,
 	'softfocusfilter' => 1,
 	'softwarecomponents' => 1,
@@ -7541,6 +7656,7 @@ my %tagExists = (
 	'starring' => 1,
 	'startdate' => 1,
 	'startofframe' => 1,
+	'startreading' => 1,
 	'starttime' => 1,
 	'stateorprovince' => 1,
 	'stationcallsign' => 1,
@@ -7695,6 +7811,8 @@ my %tagExists = (
 	'tag9400c' => 1,
 	'tag9402' => 1,
 	'tag9403' => 1,
+	'tag9404a' => 1,
+	'tag9404b' => 1,
 	'tag9405a' => 1,
 	'tag9405b' => 1,
 	'tag9406' => 1,
@@ -7712,6 +7830,7 @@ my %tagExists = (
 	'tags' => 1,
 	'tagstring' => 1,
 	'tagtrackuid' => 1,
+	'tamper-proofkeys' => 1,
 	'targetaudiences' => 1,
 	'targetdeltatype' => 1,
 	'targetfiledosname' => 1,
@@ -7747,6 +7866,7 @@ my %tagExists = (
 	'textinfo2' => 1,
 	'textjunk' => 1,
 	'textsize' => 1,
+	'texttospeech' => 1,
 	'textualdata' => 1,
 	'textualinfo' => 1,
 	'theora' => 1,
@@ -7879,6 +7999,7 @@ my %tagExists = (
 	'uic4tag' => 1,
 	'uncompressed' => 1,
 	'uncompressedsize' => 1,
+	'uncompressedtextlength' => 1,
 	'underflowcolor' => 1,
 	'underline' => 1,
 	'underlineposition' => 1,
@@ -7915,6 +8036,7 @@ my %tagExists = (
 	'untitled1' => 1,
 	'untitled2' => 1,
 	'unused' => 1,
+	'updatedtitle' => 1,
 	'ur3' => 1,
 	'url_list' => 1,
 	'urllist1' => 1,
@@ -7978,6 +8100,7 @@ my %tagExists = (
 	'vendorid' => 1,
 	'vendorname' => 1,
 	'vendorurl' => 1,
+	'version1' => 1,
 	'version2' => 1,
 	'versionbf' => 1,
 	'versionifd' => 1,
@@ -8029,6 +8152,9 @@ my %tagExists = (
 	'viewtype' => 1,
 	'vignettingcorr' => 1,
 	'vignettingcorr2' => 1,
+	'vignettingcorrunknown1' => 1,
+	'vignettingcorrunknown2' => 1,
+	'vignettingcorrversion' => 1,
 	'virtualimageheight' => 1,
 	'virtualimagewidth' => 1,
 	'virtualpage' => 1,
@@ -8067,6 +8193,15 @@ my %tagExists = (
 	'wb_grblevelsdaylight' => 1,
 	'wb_grblevelsstandard' => 1,
 	'wb_grgblevels' => 1,
+	'wb_grgblevelsauto' => 1,
+	'wb_grgblevelscloudy' => 1,
+	'wb_grgblevelsdaylight' => 1,
+	'wb_grgblevelsdaylightfluor' => 1,
+	'wb_grgblevelsdaywhitefluor' => 1,
+	'wb_grgblevelslivingroomwarmwhitefluor' => 1,
+	'wb_grgblevelstungsten' => 1,
+	'wb_grgblevelswarmwhitefluor' => 1,
+	'wb_grgblevelswhitefluorescent' => 1,
 	'wb_rgbcoeffs0' => 1,
 	'wb_rgbcoeffs1' => 1,
 	'wb_rgbcoeffs2' => 1,
@@ -586,6 +586,7 @@ EXIF 2.3 specification.
            MakerNoteKodak8c          ExifIFD    Kodak Type8
            MakerNoteKodak9           ExifIFD    Kodak Type9
            MakerNoteKodak10          ExifIFD    Kodak Type10
+           MakerNoteKodak11          ExifIFD    Kodak Type11
            MakerNoteKodakUnknown     ExifIFD    Kodak Unknown
            MakerNoteKyocera          ExifIFD    Unknown
            MakerNoteMinolta          ExifIFD    Minolta
@@ -613,6 +614,7 @@ EXIF 2.3 specification.
            MakerNotePhaseOne         ExifIFD    PhaseOne
            MakerNoteReconyx          ExifIFD    Reconyx
            MakerNoteRicoh            ExifIFD    Ricoh
+           MakerNoteRicoh2           ExifIFD    Ricoh Type2
            MakerNoteRicohText        ExifIFD    Ricoh Text
            MakerNoteSamsung1a        ExifIFD    undef
            MakerNoteSamsung1b        ExifIFD    Samsung
@@ -872,6 +874,13 @@ doesn't include a timezone then the current local timezone offset is used
 offset at the specified date/time is used, which may be different due to
 changes in daylight savings time).
 
+Note that it is not uncommon for IPTC to be found in non-standard locations
+in JPEG and TIFF-based images.  When reading, the family 1 group name has a
+number added for non-standard IPTC ("IPTC2", "IPTC3", etc), but when writing
+only "IPTC" may be specified as the group.  To keep the IPTC consistent,
+ExifTool updates tags in all existing IPTC locations, but will create a new
+IPTC group only in the standard location.
+
   Record   Tag Name                             Writable
   ------   --------                             --------
       1    IPTCEnvelope                         IPTC EnvelopeRecord
@@ -1072,12 +1081,12 @@ has no effect, and both structured and flattened tags may be written.  See
 L<http://owl.phy.queensu.ca/~phil/exiftool/struct.html> for more details.
 
 Individual languages for C<lang-alt> tags are accessed by suffixing the tag
-name with a '-', followed by an RFC 3066 language code (ie. "XMP:Title-fr",
+name with a '-', followed by an RFC 3066 language code (eg. "XMP:Title-fr",
 or "Rights-en-US").  (See L<http://www.ietf.org/rfc/rfc3066.txt> for the RFC
 3066 specification.)  A C<lang-alt> tag with no language code accesses the
 "x-default" language, but causes other languages for this tag to be deleted
 when writing.  The "x-default" language code may be specified when writing
-to preserve other existing languages (ie. "XMP-dc:Description-x-default"). 
+to preserve other existing languages (eg. "XMP-dc:Description-x-default"). 
 When reading, "x-default" is not specified.
 
 The XMP tags are organized according to schema B<Namespace> in the following
@@ -1086,7 +1095,7 @@ been shortened for convenience (since the family 1 group names are derived
 from these by adding a leading "XMP-").  In cases where a tag name exists in
 more than one namespace, less common namespaces are avoided when writing.
 However, any namespace may be written by specifying a family 1 group name
-for the tag, ie) XMP-exif:Contrast or XMP-crs:Contrast.  When deciding on
+for the tag, eg) XMP-exif:Contrast or XMP-crs:Contrast.  When deciding on
 which tags to add to an image, using standard schemas such as
 L<dc|/XMP dc Tags>, L<xmp|/XMP xmp Tags>, L<iptcCore|/XMP iptcCore Tags>
 and L<iptcExt|/XMP iptcExt Tags> is recommended if possible.
@@ -3276,6 +3285,13 @@ XMP Paged-Text namespace tags.
   FontType                                      string
   VersionString                                 string
 
+=head3 XMP XML Tags
+
+  Tag ID               Tag Name                 Writable
+  ------               --------                 --------
+  'dc'                 dc                       XMP dc
+  'lastUpdate'         LastUpdate               N
+
 =head3 XMP SVG Tags
 
 SVG (Scalable Vector Graphics) image tags.  By default, only the top-level
@@ -3306,7 +3322,7 @@ specification.
 Some GPS tags have values which are fixed-length strings. For these, the
 indicated string lengths include a null terminator which is added
 automatically by ExifTool.  Remember that the descriptive values are used
-when writing (ie. 'Above Sea Level', not '0') unless the print conversion is
+when writing (eg. 'Above Sea Level', not '0') unless the print conversion is
 disabled (with '-n' on the command line or the PrintConv option in the API,
 or by suffixing the tag name with a C<#> character).
 
@@ -3847,6 +3863,8 @@ boot, not including standby time.
   0x4010   CustomPictureStyleFileName           string
   0x4013   AFMicroAdj                           Canon AFMicroAdj
   0x4015   VignettingCorr                       Canon VignettingCorr
+           VignettingCorrUnknown1               Canon VignettingCorrUnknown
+           VignettingCorrUnknown2               Canon VignettingCorrUnknown
   0x4016   VignettingCorr2                      Canon VignettingCorr2
   0x4018   LightingOpt                          Canon LightingOpt
   0x4019   LensInfo                             Canon LensInfo
@@ -5421,11 +5439,11 @@ These tags are used by the EOS 1DX, 5DmkIII, 6D, 100D, 650D, 700D and M.
 
 =head3 Canon VignettingCorr Tags
 
-This information is found in images from the 1DmkIV, 5DmkII, 7D, 50D, 60D,
-500D and 550D.
+This information is found in images from newer EOS models.
 
   Index2   Tag Name                             Writable
   ------   --------                             --------
+      0    VignettingCorrVersion                N
       2    PeripheralLighting                   int16s
       4    ChromaticAberrationCorr              int16s
       5    ChromaticAberrationCorr              int16s
@@ -5433,6 +5451,14 @@ This information is found in images from the 1DmkIV, 5DmkII, 7D, 50D, 60D,
      11    OriginalImageWidth                   int16s
      12    OriginalImageHeight                  int16s
 
+=head3 Canon VignettingCorrUnknown Tags
+
+Vignetting correction from PowerShot models.
+
+  Index2   Tag Name                             Writable
+  ------   --------                             --------
+      0    VignettingCorrVersion                N
+
 =head3 Canon VignettingCorr2 Tags
 
   Index4   Tag Name                             Writable
@@ -6748,13 +6774,22 @@ FujiFilm RAF format, as well as EXIF information stored inside an embedded
 JPEG preview image.  The table below lists tags currently decoded from the
 RAF-format information.
 
-  Tag ID   Tag Name                             Writable
-  ------   --------                             --------
-  0x0100   RawImageFullSize                     N
-  0x0121   RawImageSize                         N
-  0x0130   FujiLayout                           N
-  0x2ff0   WB_GRGBLevels                        N
-  0xc000   RAFData                              FujiFilm RAFData
+  Tag ID  Tag Name                              Writable
+  ------  --------                              --------
+  0x0100  RawImageFullSize                      N
+  0x0121  RawImageSize                          N
+  0x0130  FujiLayout                            N
+  0x2000  WB_GRGBLevelsAuto                     N
+  0x2100  WB_GRGBLevelsDaylight                 N
+  0x2200  WB_GRGBLevelsCloudy                   N
+  0x2300  WB_GRGBLevelsDaylightFluor            N
+  0x2301  WB_GRGBLevelsDayWhiteFluor            N
+  0x2302  WB_GRGBLevelsWhiteFluorescent         N
+  0x2310  WB_GRGBLevelsWarmWhiteFluor           N
+  0x2311  WB_GRGBLevelsLivingRoomWarmWhiteFluor N
+  0x2400  WB_GRGBLevelsTungsten                 N
+  0x2ff0  WB_GRGBLevels                         N
+  0xc000  RAFData                               FujiFilm RAFData
 
 =head3 FujiFilm RAFData Tags
 
@@ -7168,6 +7203,20 @@ indicator instead of a full TIFF header.  These tags are used by the Z980.
   0x0014   ISO                                  int16u
   0x001d   FocalLength                          int32u
 
+=head3 Kodak Type11 Tags
+
+These tags are found in models such as the PixPro S-1.  They are not
+writable because the inconsistency of Kodak maker notes is beginning to get
+on my nerves.
+
+  Tag ID   Tag Name                             Writable
+  ------   --------                             --------
+  0x0203   PictureEffect                        N
+  0x0207   KodakModel                           N
+  0x0300   KodakMake                            N
+  0x0308   LensSerialNumber                     N
+  0x0309   LensModel                            N
+
 =head3 Kodak Unknown Tags
 
   Index1   Tag Name                             Writable
@@ -7811,14 +7860,14 @@ Camera information for the Sony DSLR-A100.
   ------   --------                             --------
       1    AFSensorActive                       int8u
       2    AFStatusActiveSensor                 int16s
-      4    AFStatusTop-Right                    int16s
-      6    AFStatusBottom-Right                 int16s
+      4    AFStatusTop-right                    int16s
+      6    AFStatusBottom-right                 int16s
       8    AFStatusBottom                       int16s
      10    AFStatusMiddleHorizontal             int16s
      12    AFStatusCenterVertical               int16s
      14    AFStatusTop                          int16s
-     16    AFStatusTop-Left                     int16s
-     18    AFStatusBottom-Left                  int16s
+     16    AFStatusTop-left                     int16s
+     18    AFStatusBottom-left                  int16s
      20    FocusLocked                          int8u
      21    AFPoint                              int8u
      22    AFMode                               int8u
@@ -8885,8 +8934,8 @@ This information is written by the Nikon Scan software.
 
 =head3 Nikon NCDT Tags
 
-Nikon-specific QuickTime tags found in the NCDT atom of MOV videos from some
-Nikon cameras such as the Coolpix S8000.
+Nikon-specific QuickTime tags found in the NCDT atom of MOV videos from
+various Nikon models.
 
   Tag ID   Tag Name                             Writable
   ------   --------                             --------
@@ -10124,7 +10173,7 @@ information remains unknown.
 
 =head3 Olympus RawInfo Tags
 
-These tags are found only in ORF images of some models (ie. C8080WZ).
+These tags are found only in ORF images of some models (eg. C8080WZ).
 
   Tag ID   Tag Name                             Writable
   ------   --------                             --------
@@ -10425,6 +10474,7 @@ These tags are used in Panasonic/Leica cameras.
   0x0077   BurstSpeed                           int16u
   0x0079   IntelligentD-Range                   int16u
   0x007c   ClearRetouch                         int16u
+  0x0080   City2                                undef
   0x0086   ManometerPressure                    int16u
   0x0089   PhotoStyle                           int16u
   0x008a   ShadingCompensation                  int16u
@@ -10613,12 +10663,18 @@ iPalm.
 
 =head3 Panasonic PANA Tags
 
-Tags extracted from the PANA user data found in MP4 videos from models such
-as the DMC-FT20.
+Tags extracted from the PANA and LEIC user data found in MP4 videos from
+various Panasonic and Leica models.
 
   Index1   Tag Name                             Writable
   ------   --------                             --------
+      0    Make                                 N
       4    Model                                N
+     12    Model                                N
+     22    Model                                N
+     52    Version1                             N
+     62    Version2                             N
+     80    MakerNoteLeica5                      Panasonic Leica5
      88    ThumbnailWidth                       N
      90    ThumbnailHeight                      N
      92    ThumbnailImage                       N
@@ -10626,7 +10682,12 @@ as the DMC-FT20.
    1338    ThumbnailHeight                      N
    1342    ThumbnailLength                      N
    1350    ThumbnailImage                       N
+   1358    ThumbnailWidth                       N
+   1362    ThumbnailHeight                      N
+   1366    ThumbnailLength                      N
+   1374    ThumbnailImage                       N
   16488    ExifData                             EXIF
+  16512    ExifData                             EXIF
 
 =head2 Pentax Tags
 
@@ -11852,6 +11913,16 @@ This information is found in images from the GXR.
   0x0003   Accelerometer                        rational64s[2]
   0x0004   Compass                              rational64u
 
+=head3 Ricoh Type2 Tags
+
+Tags written by models such as the Ricoh HZ15 and the Pentax XG-1.  These
+are not writable due to numerous formatting errors as written by these
+cameras.
+
+  Tag ID   Tag Name                             Writable
+  ------   --------                             --------
+  0x0300   RicohMake                            N
+
 =head3 Ricoh Text Tags
 
 Some Ricoh DC and RDC models use a text-based format for their maker notes
@@ -11981,6 +12052,8 @@ MakerNotes.
   ------   --------                             --------
   0x0010   CameraInfo                           Sony CameraInfo
            CameraInfo2                          Sony CameraInfo2
+           CameraInfo3                          Sony CameraInfo3
+           CameraInfoUnknown                    Sony CameraInfoUnknown
   0x0020   FocusInfo                            Sony FocusInfo
            MoreInfo                             Sony MoreInfo
   0x0102   Quality                              int32u
@@ -12021,7 +12094,7 @@ MakerNotes.
            Tag2010g                             Sony Tag2010g
   0x2011   VignettingCorrection                 int32u
   0x2012   LateralChromaticAberration           int32u
-  0x2013   DistortionCorrection                 int32u
+  0x2013   DistortionCorrectionSetting          int32u
   0x2014   WBShiftAB_GM                         int32s[2]
   0x2016   AutoPortraitFramed                   int16u
   0x201b   FocusMode                            int8u
@@ -12037,6 +12110,8 @@ MakerNotes.
            Tag9400c                             Sony Tag9400c
   0x9402   Tag9402                              Sony Tag9402
   0x9403   Tag9403                              Sony Tag9403
+  0x9404   Tag9404a                             Sony Tag9404a
+           Tag9404b                             Sony Tag9404b
   0x9405   Tag9405a                             Sony Tag9405a
            Tag9405b                             Sony Tag9405b
   0x9406   Tag9406                              Sony Tag9406
@@ -12076,6 +12151,68 @@ MakerNotes.
 
 =head3 Sony CameraInfo Tags
 
+Camera information for the A700, A850 and A900.
+
+  Index1   Tag Name                             Writable
+  ------   --------                             --------
+      0    LensSpec                             undef[8]
+     20    FocusModeSetting                     int8u
+     21    AFPointSelected                      int8u
+     25    AFPoint                              int8u
+     30    AFStatusActiveSensor                 int16s
+     32    AFStatusUpper-left                   int16s
+     34    AFStatusLeft                         int16s
+     36    AFStatusLower-left                   int16s
+     38    AFStatusFarLeft                      int16s
+     40    AFStatusBottomAssist-left            int16s
+     42    AFStatusBottom                       int16s
+     44    AFStatusBottomAssist-right           int16s
+     46    AFStatusCenter-7                     int16s
+     48    AFStatusCenter-horizontal            int16s
+     50    AFStatusCenter-9                     int16s
+     52    AFStatusCenter-10                    int16s
+     54    AFStatusCenter-11                    int16s
+     56    AFStatusCenter-12                    int16s
+     58    AFStatusCenter-vertical              int16s
+     60    AFStatusCenter-14                    int16s
+     62    AFStatusTopAssist-left               int16s
+     64    AFStatusTop                          int16s
+     66    AFStatusTopAssist-right              int16s
+     68    AFStatusFarRight                     int16s
+     70    AFStatusUpper-right                  int16s
+     72    AFStatusRight                        int16s
+     74    AFStatusLower-right                  int16s
+     76    AFStatusCenterF2-8                   int16s
+    304    AFMicroAdjValue                      int8u
+    305    AFMicroAdjMode                       int8u & 0x80
+  305.1    AFMicroAdjRegisteredLenses           int8u & 0x7f
+
+=head3 Sony CameraInfo2 Tags
+
+Camera information for the DSLR-A200, A230, A290, A300, A330, A350, A380 and
+A390.
+
+  Index1   Tag Name                             Writable
+  ------   --------                             --------
+      0    LensSpec                             undef[8]
+     20    AFPointSelected                      int8u
+     21    FocusModeSetting                     int8u
+     24    AFPoint                              int8u
+     27    AFStatusActiveSensor                 int16s
+     29    AFStatusTop-right                    int16s
+     31    AFStatusBottom-right                 int16s
+     33    AFStatusBottom                       int16s
+     35    AFStatusMiddleHorizontal             int16s
+     37    AFStatusCenterVertical               int16s
+     39    AFStatusTop                          int16s
+     41    AFStatusTop-left                     int16s
+     43    AFStatusBottom-left                  int16s
+     45    AFStatusLeft                         int16s
+     47    AFStatusCenterHorizontal             int16s
+     49    AFStatusRight                        int16s
+
+=head3 Sony CameraInfo3 Tags
+
 Camera information stored by the A33, A35, A55, A450, A500, A550, A560,
 A580, NEX-3/5/5C/C3 and VG10E.  Some tags are valid only for some of these
 models.
@@ -12087,24 +12224,56 @@ models.
      16    FocalLengthTeleZoom                  int16u
      20    AFPointSelected                      int8u
      21    FocusMode                            int8u
+     24    AFPoint                              int8u
      25    FocusStatus                          int8u
+     27    AFStatusActiveSensor                 int16s
      28    AFPointSelected                      int8u
      29    FocusMode                            int8u
+           AFStatusTop-right                    int16s
+     31    AFStatusBottom-right                 int16s
      32    AFPoint                              int8u
+     33    AFStatusActiveSensor                 int16s
+           AFStatusBottom                       int16s
+     35    AFStatus15                           Sony AFStatus15
+           AFStatusMiddleHorizontal             int16s
+     37    AFStatusCenterVertical               int16s
+     39    AFStatusTop                          int16s
+     41    AFStatusTop-left                     int16s
+     43    AFStatusBottom-left                  int16s
+     45    AFStatusLeft                         int16s
+     47    AFStatusCenterHorizontal             int16s
+     49    AFStatusRight                        int16s
 
-=head3 Sony CameraInfo2 Tags
+=head3 Sony AFStatus15 Tags
 
-Camera information for other DSLR and NEX models.
+AF Status information for models with 15-point AF.
 
   Index1   Tag Name                             Writable
   ------   --------                             --------
-      0    LensSpec                             undef[8]
-     20    FocusModeSetting                     int8u
-     21    AFPointSelected                      int8u
-     25    AFPoint                              int8u
-    304    AFMicroAdjValue                      int8u
-    305    AFMicroAdjMode                       int8u & 0x80
-  305.1    AFMicroAdjRegisteredLenses           int8u & 0x7f
+      0    AFStatusUpper-left                   int16s
+      2    AFStatusLeft                         int16s
+      4    AFStatusLower-left                   int16s
+      6    AFStatusFarLeft                      int16s
+      8    AFStatusTopHorizontal                int16s
+     10    AFStatusNearRight                    int16s
+     12    AFStatusCenterHorizontal             int16s
+     14    AFStatusNearLeft                     int16s
+     16    AFStatusBottomHorizontal             int16s
+     18    AFStatusTopVertical                  int16s
+     20    AFStatusCenterVertical               int16s
+     22    AFStatusBottomVertical               int16s
+     24    AFStatusFarRight                     int16s
+     26    AFStatusUpper-right                  int16s
+     28    AFStatusRight                        int16s
+     30    AFStatusLower-right                  int16s
+     32    AFStatusUpper-middle                 int16s
+     34    AFStatusLower-middle                 int16s
+
+=head3 Sony CameraInfoUnknown Tags
+
+  Index1   Tag Name                             Writable
+  ------   --------                             --------
+  [no tags known]
 
 =head3 Sony FocusInfo Tags
 
@@ -12124,6 +12293,8 @@ A200, A230, A290, A300, A330, A350, A380, A390, A700, A850 and A900.
      47    ExposureBracketShotNumber            int8u
      63    ExposureProgram                      int8u
      65    CreativeStyle                        int8u
+    119    DynamicRangeOptimizerMode            int8u
+    121    DynamicRangeOptimizerLevel           int8u
    2118    ShutterCount                         int32u
    2491    FocusPosition                        int8u
 
@@ -12266,6 +12437,7 @@ Camera settings for the A200, A300, A350, A700, A850 and A900.
      61    ImageStabilizationSetting            int16u
      63    Rotation                             int16u
      77    FocusMode                            int16u
+     80    BatteryState                         int16u
      81    BatteryLevel                         int16u
      83    FocusStatus                          int16u
      84    SonyImageSize                        int16u
@@ -12508,6 +12680,7 @@ Valid for SLT-A65/A77, NEX-7/VG20E.
   0x0004   SequenceFileNumber                   int32u
   0x0008   ReleaseMode2                         int32u
   0x01b6   SonyDateTime                         undef[7]
+  0x0324   DynamicRangeOptimizer                int8u
   0x04b4   MeterInfo?                           Sony MeterInfo
   0x1128   ReleaseMode3                         int8u
   0x112c   ReleaseMode2                         int8u
@@ -12521,6 +12694,8 @@ Valid for SLT-A65/A77, NEX-7/VG20E.
   0x1178   MeteringMode                         int8u
   0x1179   ExposureProgram                      int8u
   0x1180   WB_RGBLevels                         int16u[3]
+  0x1218   SonyISO                              N
+  0x1a23   LensParameters                       int16s[16]~
 
 =head3 Sony Tag2010c Tags
 
@@ -12533,6 +12708,7 @@ Valid for SLT-A37/A57 and NEX-F3.
   0x0008   ReleaseMode2                         int32u
   0x0200   DigitalZoomRatio                     int8u
   0x0210   SonyDateTime                         undef[7]
+  0x0300   DynamicRangeOptimizer                int8u
   0x0490   MeterInfo?                           Sony MeterInfo
   0x1104   ReleaseMode3                         int8u
   0x1108   ReleaseMode2                         int8u
@@ -12546,6 +12722,7 @@ Valid for SLT-A37/A57 and NEX-F3.
   0x1154   MeteringMode                         int8u
   0x1155   ExposureProgram                      int8u
   0x115c   WB_RGBLevels                         int16u[3]
+  0x11f4   SonyISO                              N
 
 =head3 Sony Tag2010d Tags
 
@@ -12558,6 +12735,7 @@ not valid for panorama images.
   0x0004   SequenceFileNumber                   int32u
   0x0008   ReleaseMode2                         int32u
   0x01fe   SonyDateTime                         undef[7]
+  0x037c   DynamicRangeOptimizer                int8u
   0x050c   MeterInfo?                           Sony MeterInfo
   0x1180   ReleaseMode3                         int8u
   0x1184   ReleaseMode2                         int8u
@@ -12569,10 +12747,11 @@ not valid for panorama images.
   0x11d0   MeteringMode                         int8u
   0x11d1   ExposureProgram                      int8u
   0x11d8   WB_RGBLevels                         int16u[3]
+  0x1270   SonyISO                              N
 
 =head3 Sony Tag2010e Tags
 
-Valid for SLT-A58/A99, ILCE-3000, NEX-3N/5R/5T/6/VG30E/VG900, DSC-RX100,
+Valid for SLT-A58/A99, ILCE-3000/3500, NEX-3N/5R/5T/6/VG30E/VG900, DSC-RX100,
 DSC-RX1/RX1R. Also valid for DSC-HX300/HX50V/TX30/WX60/WX200/WX300, but not
 for panorama images.
 
@@ -12583,6 +12762,7 @@ for panorama images.
   0x0008   ReleaseMode2                         int32u
   0x021c   DigitalZoomRatio                     int8u
   0x022c   SonyDateTime                         undef[7]
+  0x0328   DynamicRangeOptimizer                int8u
   0x04b8   MeterInfo?                           Sony MeterInfo
   0x115c   ReleaseMode3                         int8u
   0x1160   ReleaseMode2                         int8u
@@ -12596,9 +12776,17 @@ for panorama images.
   0x11ac   MeteringMode                         int8u
   0x11ad   ExposureProgram                      int8u
   0x11b4   WB_RGBLevels                         int16u[3]
+  0x1254   SonyISO                              N
+  0x1258   SonyISO                              N
   0x1278   FocalLength                          int16u
   0x127a   MinFocalLength                       int16u
   0x127c   MaxFocalLength                       int16u
+  0x1280   SonyISO                              N
+  0x1870   LensParameters?                      int16s[16]~
+  0x1891   LensFormat                           int8u
+  0x1892   LensMount                            int8u
+  0x1893   LensType2                            int16u
+  0x1896   LensType                             int16u
 
 =head3 Sony Tag2010f Tags
 
@@ -12607,6 +12795,7 @@ Valid for DSC-RX100M2, DSC-QX10/QX100.
   Tag ID   Tag Name                             Writable
   ------   --------                             --------
   0x0004   ReleaseMode2                         int32u
+  0x0050   DynamicRangeOptimizer                int8u
   0x01e0   MeterInfo?                           Sony MeterInfo
   0x1014   ReleaseMode3                         int8u
   0x1018   ReleaseMode2                         int8u
@@ -12623,14 +12812,17 @@ Valid for DSC-RX100M2, DSC-QX10/QX100.
   0x1134   FocalLength                          int16u
   0x1136   MinFocalLength                       int16u
   0x1138   MaxFocalLength                       int16u
+  0x113c   SonyISO                              N
 
 =head3 Sony Tag2010g Tags
 
-Valid for DSC-RX10/HX60V/HX400V, ILCE-7/7R/7S/5000/6000, ILCA-77M2.
+Valid for DSC-RX10/RX100M3/HX60V/HX400V/WX220, ILCE-7/7R/7S/5000/5100/6000,
+ILCA-77M2.
 
   Tag ID   Tag Name                             Writable
   ------   --------                             --------
   0x0004   ReleaseMode2                         int32u
+  0x0050   DynamicRangeOptimizer                int8u
   0x020c   ReleaseMode3                         int8u
   0x0210   ReleaseMode2                         int8u
   0x0222   StopsAboveBaseISO                    int16u
@@ -12646,13 +12838,20 @@ Valid for DSC-RX10/HX60V/HX400V, ILCE-7/7R/7S/5000/6000, ILCA-77M2.
   0x032c   FocalLength                          int16u
   0x032e   MinFocalLength                       int16u
   0x0330   MaxFocalLength                       int16u
+  0x0344   SonyISO                              N
   0x0388   MeterInfo?                           Sony MeterInfo
+  0x189c   LensParameters?                      int16s[16]~
+  0x18bd   LensFormat                           int8u
+  0x18be   LensMount                            int8u
+  0x18bf   LensType2                            int16u
+  0x18c2   LensType                             int16u
 
 =head3 Sony AFInfo2 Tags
 
   Index1   Tag Name                             Writable
   ------   --------                             --------
       0    AFPointsUsed                         int32u
+           AFPointsUsed                         int8u[10]
 
 =head3 Sony ShotInfo Tags
 
@@ -12741,7 +12940,7 @@ Valid for many DSC, NEX and SLT models
 
 =head3 Sony Tag9400b Tags
 
-Valid for NEX-3N, ILCE-3000, SLT-A58, DSC-WX60, DSC-WX300, DSC-RX100M2,
+Valid for NEX-3N, ILCE-3000/3500, SLT-A58, DSC-WX60, DSC-WX300, DSC-RX100M2,
 DSC-HX50V, DSC-QX10/QX100.
 
   Tag ID   Tag Name                             Writable
@@ -12759,7 +12958,7 @@ DSC-HX50V, DSC-QX10/QX100.
 
 =head3 Sony Tag9400c Tags
 
-Valid for DSC-RX10/HX60V/HX400V, ILCE-7/7R/7S/5000/6000, ILCA-77M2.
+Valid for DSC-RX10/RX100M3/HX60V/HX400V, ILCE-7/7R/7S/5000/5100/6000, ILCA-77M2.
 
   Tag ID   Tag Name                             Writable
   ------   --------                             --------
@@ -12787,37 +12986,59 @@ Valid for DSC-RX10/HX60V/HX400V, ILCE-7/7R/7S/5000/6000, ILCA-77M2.
   ------   --------                             --------
   0x0005   CameraTemperature                    int8s
 
+=head3 Sony Tag9404a Tags
+
+  Tag ID   Tag Name                             Writable
+  ------   --------                             --------
+  0x0019   LensZoomPosition                     int16u
+
+=head3 Sony Tag9404b Tags
+
+  Tag ID   Tag Name                             Writable
+  ------   --------                             --------
+  0x001e   LensZoomPosition                     int16u
+
 =head3 Sony Tag9405a Tags
 
-Valid for SLT, NEX, ILCE-3000 and several DSC models.
+Valid for SLT, NEX, ILCE-3000/3500 and several DSC models.
 
   Tag ID   Tag Name                             Writable
   ------   --------                             --------
+  0x0601   DistortionCorrection                 int8u
   0x0603   LensFormat                           int8u
   0x0604   LensMount                            int8u
   0x0605   LensType2                            int16u
   0x0608   LensType                             int16u
+  0x06ca   LensParameters?                      int16s[16]~
 
 =head3 Sony Tag9405b Tags
 
-Valid for the DSC-RX10/HX60V/HX400V/WX220, ILCE-7/7R/7S/5000/6000, ILCA-77M2.
+Valid for the DSC-RX10/RX100M3/HX60V/HX400V/WX220, ILCE-7/7R/7S/5000/5100/6000, ILCA-77M2.
 
   Tag ID   Tag Name                             Writable
   ------   --------                             --------
+  0x0004   SonyISO                              N
+  0x0006   BaseISO                              N
+  0x000a   StopsAboveBaseISO                    int16u
   0x000e   SonyExposureTime2                    int16u
   0x0010   ExposureTime                         rational32u
   0x0014   SonyFNumber                          int16u
   0x0016   SonyMaxApertureValue                 int16u
   0x0024   SequenceImageNumber                  int32u
   0x0034   ReleaseMode2                         int8u
+  0x0042   HighISONoiseReduction                int8u
   0x0044   LongExposureNoiseReduction           int8u
   0x0046   PictureEffect2                       int8u
   0x0048   ExposureProgram                      int8u
   0x004a   CreativeStyle                        int8u
+  0x0052   Sharpness                            int8s
+  0x005b   DistortionCorrection                 int8u
   0x005d   LensFormat                           int8u
   0x005e   LensMount                            int8u
   0x0060   LensType2                            int16u
   0x0062   LensType                             int16u
+  0x0064   LensParameters?                      int16s[16]~
+  0x0342   LensZoomPosition                     int16u
 
 =head3 Sony Tag9406 Tags
 
@@ -12838,6 +13059,8 @@ These tags are currently extracted for SLT models only.
 
 =head3 Sony Tag940c Tags
 
+NEX and ILCE models only.
+
   Tag ID   Tag Name                             Writable
   ------   --------                             --------
   0x0008   LensMount                            int8u
@@ -12850,14 +13073,57 @@ These tags are currently extracted for SLT models only.
   Tag ID   Tag Name                             Writable
   ------   --------                             --------
   0x0002   AFType                               int8u
+  0x0004   AFStatusActiveSensor                 int16s
+  0x0005   FocusMode                            int8u
   0x0007   AFPoint                              int8u
   0x0008   AFPointInFocus                       int8u
   0x0009   AFPointAtShutterRelease              int8u
   0x000a   AFAreaMode                           int8u
   0x000b   FocusMode                            int8u
+  0x0011   AFStatus15                           Sony AFStatus15
+           AFStatus19                           Sony AFStatus19
+  0x003a   AFAreaMode                           int8u
+  0x0050   AFMicroAdj                           int8s
   0x017d   AFMicroAdj                           int8s
   0x017e   ExposureProgram                      int8u
 
+=head3 Sony AFStatus19 Tags
+
+AF Status information for models with 19-point AF.
+
+  Index1   Tag Name                             Writable
+  ------   --------                             --------
+      0    AFStatusUpperFarLeft                 int16s
+      2    AFStatusUpper-leftHorizontal         int16s
+      4    AFStatusFarLeftHorizontal            int16s
+      6    AFStatusLeftHorizontal               int16s
+      8    AFStatusLowerFarLeft                 int16s
+     10    AFStatusLower-leftHorizontal         int16s
+     12    AFStatusUpper-leftVertical           int16s
+     14    AFStatusLeftVertical                 int16s
+     16    AFStatusLower-leftVertical           int16s
+     18    AFStatusFarLeftVertical              int16s
+     20    AFStatusTopHorizontal                int16s
+     22    AFStatusNearRight                    int16s
+     24    AFStatusCenterHorizontal             int16s
+     26    AFStatusNearLeft                     int16s
+     28    AFStatusBottomHorizontal             int16s
+     30    AFStatusTopVertical                  int16s
+     32    AFStatusUpper-middle                 int16s
+     34    AFStatusCenterVertical               int16s
+     36    AFStatusLower-middle                 int16s
+     38    AFStatusBottomVertical               int16s
+     40    AFStatusUpperFarRight                int16s
+     42    AFStatusUpper-rightHorizontal        int16s
+     44    AFStatusFarRightHorizontal           int16s
+     46    AFStatusRightHorizontal              int16s
+     48    AFStatusLowerFarRight                int16s
+     50    AFStatusLower-rightHorizontal        int16s
+     52    AFStatusFarRightVertical             int16s
+     54    AFStatusUpper-rightVertical          int16s
+     56    AFStatusRightVertical                int16s
+     58    AFStatusLower-rightVertical          int16s
+
 =head3 Sony PIC Tags
 
 The TextInfo data is extracted as a block to preserve the formatting, and
@@ -13100,6 +13366,7 @@ still proprietary) Adobe format.
            MakerNoteKodak8c                     Kodak Type8
            MakerNoteKodak9                      Kodak Type9
            MakerNoteKodak10                     Kodak Type10
+           MakerNoteKodak11                     Kodak Type11
            MakerNoteKodakUnknown                Kodak Unknown
            MakerNoteKyocera                     Unknown
            MakerNoteMinolta                     Minolta
@@ -13127,6 +13394,7 @@ still proprietary) Adobe format.
            MakerNotePhaseOne                    PhaseOne
            MakerNoteReconyx                     Reconyx
            MakerNoteRicoh                       Ricoh
+           MakerNoteRicoh2                      Ricoh Type2
            MakerNoteRicohText                   Ricoh Text
            MakerNoteSamsung1a                   undef
            MakerNoteSamsung1b                   Samsung
@@ -13469,6 +13737,7 @@ SD10).  Currently, metadata may only be written to the embedded JpgFromRaw.
   Tag ID               Tag Name                 Writable
   ------               --------                 --------
   'Header'             Header                   SigmaRaw Header
+  'Header4'            Header4                  SigmaRaw Header4
   'HeaderExt'          HeaderExt                SigmaRaw HeaderExt
   'IMA2'               PreviewImage             N
                        JpgFromRaw               N
@@ -13477,6 +13746,8 @@ SD10).  Currently, metadata may only be written to the embedded JpgFromRaw.
 
 =head3 SigmaRaw Header Tags
 
+Information extracted from the header of an X3F file.
+
   Tag ID   Tag Name                             Writable
   ------   --------                             --------
   0x0001   FileVersion                          N
@@ -13488,6 +13759,17 @@ SD10).  Currently, metadata may only be written to the embedded JpgFromRaw.
   0x000a   WhiteBalance                         N
   0x0012   SceneCaptureType                     N
 
+=head3 SigmaRaw Header4 Tags
+
+Header information for version 4.0 or greater X3F.
+
+  Index4   Tag Name                             Writable
+  ------   --------                             --------
+      1    FileVersion                          N
+     10    ImageWidth                           N
+     11    ImageHeight                          N
+     12    Rotation                             N
+
 =head3 SigmaRaw HeaderExt Tags
 
 Extended header data found in version 2.1 and 2.2 files
@@ -13554,6 +13836,40 @@ Extended header data found in version 2.1 and 2.2 files
   'VERSION_BF'         VersionBF                N
   'WB_DESC'            WhiteBalance             N
 
+=head2 Lytro Tags
+
+Tag definitions for Lytro Light Field Picture (LFP) files.  ExifTool
+extracts the full JSON metadata blocks, as well as breaking them down into
+individual tags.  All available tags are extracted from the JSON metadata,
+even if they don't appear in the table below.
+
+  Tag Name                                      Writable
+  --------                                      --------
+  FirmwareVersion                               N
+  Make                                          N
+  Model                                         N
+  SerialNumber                                  N
+  AccelerometerTime                             N
+  AccelerometerX                                N
+  AccelerometerY                                N
+  AccelerometerZ                                N
+  DateTimeOriginal                              N
+  FNumber                                       N
+  FocalLength                                   N
+  LensTemperature                               N
+  ISO                                           N
+  FocalPlaneXResolution                         N
+  SensorSerialNumber                            N
+  FrameExposureTime                             N
+  ExposureTime                                  N
+  SocTemperature                                N
+  EmbeddedImage                                 N
+  ImageLimitExposureBias                        N
+  ImageModulationExposureBias                   N
+  Orientation                                   N
+  JSONMetadata                                  N+
+  CameraType                                    N
+
 =head2 JFIF Tags
 
 The following information is extracted from the JPEG JFIF header.  See
@@ -13580,7 +13896,8 @@ that of an old DOS disk with fixed-sized "sectors" (usually 512 bytes) and a
 "file allocation table" (FAT).  No wonder this image format never became
 popular.  However, some of the structures used in FlashPix streams are part
 of the EXIF specification, and are still being used in the APP2 FPXR segment
-of JPEG images by some Kodak and Hewlett-Packard digital cameras.
+of JPEG images by some digital cameras from manufacturers such as FujiFilm,
+Hewlett-Packard, Kodak and Sanyo.
 
 ExifTool extracts FlashPix information from both FPX images and the APP2
 FPXR segment of JPEG images.  As well, FlashPix information is extracted
@@ -13609,6 +13926,8 @@ specification.
   'Contents'                       Contents     XMP
   'Current User'                   CurrentUser  N
   'ICC Profile 0001'               ICC_Profile  ICC_Profile
+  'Preview'                        PreviewImage N
+  'Property'                       PreviewInfo  FlashPix PreviewInfo
   'Subimage 0000 Header'           SubimageHdr  FlashPix SubimageHdr
 
 =head3 FlashPix CompObj Tags
@@ -13857,6 +14176,15 @@ property tables, even though they are only listed in the SummaryInfo table.
   0x10000004   ColorTwistMatrix                 N
   0x10000005   ContrastAdjustment               N
 
+=head3 FlashPix PreviewInfo Tags
+
+Preview information written by some FujiFilm models.
+
+  Index1   Tag Name                             Writable
+  ------   --------                             --------
+     13    PreviewImageWidth                    N
+     23    PreviewImageHeight                   N
+
 =head3 FlashPix SubimageHdr Tags
 
   Index4   Tag Name                             Writable
@@ -16325,13 +16653,13 @@ and stored in this format in the file if it is more compact.
 written by adding a language/country code to the tag name in the form
 C<TAG-xx_YY>, where C<TAG> is the tag name, C<xx> is a 2-character lower
 case ISO 639-1 language code, and C<YY> is a 2-character upper case ISO
-3166-1 alpha 2 country code (ie. C<Title-en_US>).  But as usual, the user
+3166-1 alpha 2 country code (eg. C<Title-en_US>).  But as usual, the user
 interface is case-insensitive, and ExifTool will write the correct case to
 the file.
 
 3) Some numerical MIE tags allow units of measurement to be specified.  For
 these tags, units may be added in brackets immediately following the value
-(ie. C<55(mi/h)>).  If no units are specified, the default units are
+(eg. C<55(mi/h)>).  If no units are specified, the default units are
 written.
 
 See L<http://owl.phy.queensu.ca/~phil/exiftool/MIE1.1-20070121.pdf> for the
@@ -17019,7 +17347,7 @@ information is always created as compressed zTXt if Compress::Zlib is
 available, or tEXt otherwise.  Standard XMP is written as uncompressed iTXt.
 
 Alternate languages are accessed by suffixing the tag name with a '-',
-followed by an RFC 3066 language code (ie. "PNG:Comment-fr", or
+followed by an RFC 3066 language code (eg. "PNG:Comment-fr", or
 "Title-en-US").  See L<http://www.ietf.org/rfc/rfc3066.txt> for the RFC 3066
 specification.
 
@@ -17060,11 +17388,15 @@ ImageMagick.
 
 =head3 PNG PhysicalPixel Tags
 
+These tags are found in the PNG pHYs chunk and belong to the PNG-pHYs family
+1 group.  They are all created together with default values if necessary
+when any of these tags is written, and may only be deleted as a group.
+
   Index1   Tag Name                             Writable
   ------   --------                             --------
-      0    PixelsPerUnitX                       N
-      4    PixelsPerUnitY                       N
-      8    PixelUnits                           N
+      0    PixelsPerUnitX                       int32u
+      4    PixelsPerUnitY                       int32u
+      8    PixelUnits                           int8u
 
 =head3 PNG SubjectScale Tags
 
@@ -17937,9 +18269,9 @@ Additional document permissions imposed by digital signatures.
 =head2 ID3 Tags
 
 ExifTool extracts ID3 information from MP3, MPEG, AIFF, OGG, FLAC, APE, MPC
-and RealAudio files.  ID3v2 tags which support multiple languages (ie.
+and RealAudio files.  ID3v2 tags which support multiple languages (eg.
 Comment and Lyrics) are extracted by specifying the tag name, followed by a
-dash ('-'), then a 3-character ISO 639-2 language code (ie. "Comment-spa").
+dash ('-'), then a 3-character ISO 639-2 language code (eg. "Comment-spa").
 See L<http://www.id3.org/> for the official ID3 specification and
 L<http://www.loc.gov/standards/iso639-2/php/code_list.php> for a list of ISO
 639-2 language codes.
@@ -18688,6 +19020,7 @@ for the official specification.
   'mdat'               MovieData?               N
   'mdat-offset'        MovieDataOffset          N
   'mdat-size'          MovieDataSize            N
+  'meta'               Meta                     QuickTime Meta
   'moov'               Movie                    QuickTime Movie
   'pict'               PreviewPICT              N
   'pnot'               Preview                  QuickTime Preview
@@ -18718,6 +19051,203 @@ Tags written by some HTC camera phones.
       1    MinorVersion                         N
       2    CompatibleBrands                     N
 
+=head3 QuickTime Meta Tags
+
+  Tag ID   Tag Name                             Writable
+  ------   --------                             --------
+  'bxml'   BinaryXML?                           N
+  'dinf'   DataInformation?                     N
+  'free'   Free?                                N
+  'hdlr'   Handler                              QuickTime Handler
+  'iinf'   ItemInformation?                     N
+  'iloc'   ItemLocation?                        N
+  'ilst'   ItemList                             QuickTime ItemList
+  'ipmc'   IPMPControl?                         N
+  'ipro'   ItemProtection?                      N
+  'keys'   Keys                                 QuickTime Keys
+  'pitm'   PrimaryItemReference?                N
+  'xml '   XML                                  XMP XML
+
+=head3 QuickTime Handler Tags
+
+  Index1   Tag Name                             Writable
+  ------   --------                             --------
+      4    HandlerClass                         N
+      8    HandlerType                          N
+     12    HandlerVendorID                      N
+     24    HandlerDescription                   N
+
+=head3 QuickTime ItemList Tags
+
+As well as these tags, the 'mdta' handler uses numerical tag ID's which are
+added dynamically to this table after processing the Meta Keys information.
+
+  Tag ID       Tag Name                         Writable
+  ------       --------                         --------
+  '----'       iTunesInfo                       QuickTime iTunesInfo
+  'aART'       AlbumArtist                      N
+  'akID'       AppleStoreAccountType            N
+  'albm'       Album                            N
+  'apID'       AppleStoreAccount                N
+  'atID'       AlbumTitleID                     N
+  'auth'       Author                           N
+  'catg'       Category                         N
+  'cnID'       AppleStoreCatalogID              N
+  'covr'       CoverArt                         N
+  'cpil'       Compilation                      N
+  'cprt'       Copyright                        N
+  'desc'       Description                      N
+  'disk'       DiskNumber                       N
+  'dscp'       Description                      N
+  'egid'       EpisodeGlobalUniqueID            N
+  'geID'       GenreID                          N
+  'gnre'       Genre                            N
+  'grup'       Grouping                         N
+  'gshh'       GoogleHostHeader                 N
+  'gspm'       GooglePingMessage                N
+  'gspu'       GooglePingURL                    N
+  'gssd'       GoogleSourceData                 N
+  'gsst'       GoogleStartTime                  N
+  'gstd'       GoogleTrackDuration              N
+  'hdvd'       HDVideo                          N
+  'itnu'       iTunesU                          N
+  'keyw'       Keyword                          N
+  'ldes'       LongDescription                  N
+  'pcst'       Podcast                          N
+  'perf'       Performer                        N
+  'pgap'       PlayGap                          N
+  'plID'       PlayListID                       N
+  'purd'       PurchaseDate                     N
+  'purl'       PodcastURL                       N
+  'rtng'       Rating                           N
+  'sfID'       AppleStoreCountry                N
+  'soaa'       SortAlbumArtist                  N
+  'soal'       SortAlbum                        N
+  'soar'       SortArtist                       N
+  'soco'       SortComposer                     N
+  'sonm'       SortName                         N
+  'sosn'       SortShow                         N
+  'stik'       MediaType                        N
+  'titl'       Title                            N
+  'tmpo'       BeatsPerMinute                   N
+  'trkn'       TrackNumber                      N
+  'tven'       TVEpisodeID                      N
+  'tves'       TVEpisode                        N
+  'tvnn'       TVNetworkName                    N
+  'tvsh'       TVShow                           N
+  'tvsn'       TVSeason                         N
+  'yrrc'       Year                             N
+  "\xa9ART"    Artist                           N
+  "\xa9alb"    Album                            N
+  "\xa9cmt"    Comment                          N
+  "\xa9com"    Composer                         N
+  "\xa9day"    ContentCreateDate                N
+  "\xa9des"    Description                      N
+  "\xa9enc"    EncodedBy                        N
+  "\xa9gen"    Genre                            N
+  "\xa9grp"    Grouping                         N
+  "\xa9lyr"    Lyrics                           N
+  "\xa9nam"    Title                            N
+  "\xa9too"    Encoder                          N
+  "\xa9trk"    Track                            N
+  "\xa9wrt"    Composer                         N
+
+=head3 QuickTime iTunesInfo Tags
+
+ExifTool will extract any iTunesInfo tags that exist, even if they are not
+defined in this table.
+
+  Tag ID                    Tag Name            Writable
+  ------                    --------            --------
+  'Encoding Params'         EncodingParams      QuickTime EncodingParams
+  'iTunEXTC'                ContentRating       N
+  'iTunMOVI'                iTunMOVI            PLIST
+  'iTunNORM'                VolumeNormalization N
+  'iTunSMPB'                iTunSMPB            N
+  'iTunes_CDDB_1'           CDDB1Info           N
+  'iTunes_CDDB_TrackNumber' CDDBTrackNumber     N
+  'tool'                    iTunTool            N
+
+=head3 QuickTime EncodingParams Tags
+
+  Tag ID   Tag Name                             Writable
+  ------   --------                             --------
+  'abrt'   AudioAvailableBitRateRange           N
+  'acbf'   AudioBitRateControlMode              N
+  'acef'   AudioExtendFrequencies               N
+  'brat'   AudioCurrentTargetBitRate            N
+  'cdcv'   AudioComponentVersion                N
+  'cmnc'   AudioAvailableNumberChannels         N
+  'init'   AudioIsInitialized                   N
+  'lmrc'   AudioDoesSampleRateConversion        N
+  'mdel'   AudioMinimumDelayMode                N
+  'mnip'   AudioMinimumNumberInputPackets       N
+  'mnop'   AudioMinimumNumberOutputPackets      N
+  'oppr'   AudioOutputPrecedence                N
+  'pad0'   AudioZeroFramesPadded                N
+  'pakb'   AudioMaximumPacketByteSize           N
+  'pakd'   AudioRequiresPacketDescription       N
+  'pakf'   AudioPacketFrameSize                 N
+  'prmm'   AudioCodecPrimeMethod                N
+  'srcq'   AudioQualitySetting                  N
+  'tbuf'   AudioInputBufferSize                 N
+  'ubuf'   AudioUsedInputBufferSize             N
+  'ursr'   AudioUseRecommendedSampleRate        N
+  'vbrq'   AudioVBRQuality                      N
+  'vers'   AudioEncodingParamsVersion           N
+  'vpk?'   AudioHasVariablePacketByteSizes      N
+
+=head3 QuickTime Keys Tags
+
+This directory contains a list of key names which are used to decode
+ItemList tags written by the "mdta" handler.  The prefix of
+"com.apple.quicktime." has been removed from all TagID's below.
+
+  Tag ID                       Tag Name         Writable
+  ------                       --------         --------
+  'Encoded_With'               EncodedWith      N
+  'album'                      Album            N
+  'artist'                     Artist           N
+  'artwork'                    Artwork          N
+  'author'                     Author           N
+  'camera.framereadouttimeinmicroseconds'
+                               FrameReadoutTime N
+  'camera.identifier'          CameraIdentifier N
+  'comment'                    Comment          N
+  'copyright'                  Copyright        N
+  'creationdate'               CreationDate     N
+  'description'                Description      N
+  'direction.facing'           CameraDirection  N
+  'direction.motion'           CameraMotion     N
+  'director'                   Director         N
+  'genre'                      Genre            N
+  'information'                Information      N
+  'keywords'                   Keywords         N
+  'location.ISO6709'           GPSCoordinates   N
+  'location.body'              LocationBody     N
+  'location.date'              LocationDate     N
+  'location.name'              LocationName     N
+  'location.note'              LocationNote     N
+  'location.role'              LocationRole     N
+  'make'                       Make             N
+  'model'                      Model            N
+  'player.movie.audio.balance' Balance          N
+  'player.movie.audio.bass'    Bass             N
+  'player.movie.audio.gain'    AudioGain        N
+  'player.movie.audio.mute'    Mute             N
+  'player.movie.audio.pitchshift' PitchShift    N
+  'player.movie.audio.treble'  Trebel           N
+  'player.movie.visual.brightness' Brightness   N
+  'player.movie.visual.color'  Color            N
+  'player.movie.visual.contrast' Contrast       N
+  'player.movie.visual.tint'   Tint             N
+  'player.version'             PlayerVersion    N
+  'publisher'                  Publisher        N
+  'rating.user'                UserRating       N
+  'software'                   Software         N
+  'version'                    Version          N
+  'year'                       Year             N
+
 =head3 QuickTime Movie Tags
 
   Tag ID   Tag Name                             Writable
@@ -18762,15 +19292,6 @@ MP4 media box.
   'mdhd'   MediaHeader                          QuickTime MediaHeader
   'minf'   MediaInfo                            QuickTime MediaInfo
 
-=head3 QuickTime Handler Tags
-
-  Index1   Tag Name                             Writable
-  ------   --------                             --------
-      4    HandlerClass                         N
-      8    HandlerType                          N
-     12    HandlerVendorID                      N
-     24    HandlerDescription                   N
-
 =head3 QuickTime MediaHeader Tags
 
   Index4   Tag Name                             Writable
@@ -19023,6 +19544,7 @@ MP4 hint sample description.
   Tag ID   Tag Name                             Writable
   ------   --------                             --------
   0x0004   OtherFormat                          N
+  'ftab'   FontTable                            N
 
 =head3 QuickTime VideoHeader Tags
 
@@ -19033,194 +19555,6 @@ MP4 video media header.
       2    GraphicsMode                         N
       3    OpColor                              N
 
-=head3 QuickTime Meta Tags
-
-  Tag ID   Tag Name                             Writable
-  ------   --------                             --------
-  'bxml'   BinaryXML?                           N
-  'dinf'   DataInformation?                     N
-  'free'   Free?                                N
-  'hdlr'   Handler                              QuickTime Handler
-  'iinf'   ItemInformation?                     N
-  'iloc'   ItemLocation?                        N
-  'ilst'   ItemList                             QuickTime ItemList
-  'ipmc'   IPMPControl?                         N
-  'ipro'   ItemProtection?                      N
-  'keys'   Keys                                 QuickTime Keys
-  'pitm'   PrimaryItemReference?                N
-  'xml '   XML                                  XMP
-
-=head3 QuickTime ItemList Tags
-
-As well as these tags, the 'mdta' handler uses numerical tag ID's which are
-added dynamically to this table after processing the Meta Keys information.
-
-  Tag ID       Tag Name                         Writable
-  ------       --------                         --------
-  '----'       iTunesInfo                       QuickTime iTunesInfo
-  'aART'       AlbumArtist                      N
-  'akID'       AppleStoreAccountType            N
-  'albm'       Album                            N
-  'apID'       AppleStoreAccount                N
-  'atID'       AlbumTitleID                     N
-  'auth'       Author                           N
-  'catg'       Category                         N
-  'cnID'       AppleStoreCatalogID              N
-  'covr'       CoverArt                         N
-  'cpil'       Compilation                      N
-  'cprt'       Copyright                        N
-  'desc'       Description                      N
-  'disk'       DiskNumber                       N
-  'dscp'       Description                      N
-  'egid'       EpisodeGlobalUniqueID            N
-  'geID'       GenreID                          N
-  'gnre'       Genre                            N
-  'grup'       Grouping                         N
-  'gshh'       GoogleHostHeader                 N
-  'gspm'       GooglePingMessage                N
-  'gspu'       GooglePingURL                    N
-  'gssd'       GoogleSourceData                 N
-  'gsst'       GoogleStartTime                  N
-  'gstd'       GoogleTrackDuration              N
-  'hdvd'       HDVideo                          N
-  'itnu'       iTunesU                          N
-  'keyw'       Keyword                          N
-  'ldes'       LongDescription                  N
-  'pcst'       Podcast                          N
-  'perf'       Performer                        N
-  'pgap'       PlayGap                          N
-  'plID'       PlayListID                       N
-  'purd'       PurchaseDate                     N
-  'purl'       PodcastURL                       N
-  'rtng'       Rating                           N
-  'sfID'       AppleStoreCountry                N
-  'soaa'       SortAlbumArtist                  N
-  'soal'       SortAlbum                        N
-  'soar'       SortArtist                       N
-  'soco'       SortComposer                     N
-  'sonm'       SortName                         N
-  'sosn'       SortShow                         N
-  'stik'       MediaType                        N
-  'titl'       Title                            N
-  'tmpo'       BeatsPerMinute                   N
-  'trkn'       TrackNumber                      N
-  'tven'       TVEpisodeID                      N
-  'tves'       TVEpisode                        N
-  'tvnn'       TVNetworkName                    N
-  'tvsh'       TVShow                           N
-  'tvsn'       TVSeason                         N
-  'yrrc'       Year                             N
-  "\xa9ART"    Artist                           N
-  "\xa9alb"    Album                            N
-  "\xa9cmt"    Comment                          N
-  "\xa9com"    Composer                         N
-  "\xa9day"    ContentCreateDate                N
-  "\xa9des"    Description                      N
-  "\xa9enc"    EncodedBy                        N
-  "\xa9gen"    Genre                            N
-  "\xa9grp"    Grouping                         N
-  "\xa9lyr"    Lyrics                           N
-  "\xa9nam"    Title                            N
-  "\xa9too"    Encoder                          N
-  "\xa9trk"    Track                            N
-  "\xa9wrt"    Composer                         N
-
-=head3 QuickTime iTunesInfo Tags
-
-ExifTool will extract any iTunesInfo tags that exist, even if they are not
-defined in this table.
-
-  Tag ID                    Tag Name            Writable
-  ------                    --------            --------
-  'Encoding Params'         EncodingParams      QuickTime EncodingParams
-  'iTunEXTC'                ContentRating       N
-  'iTunMOVI'                iTunMOVI            PLIST
-  'iTunNORM'                VolumeNormalization N
-  'iTunSMPB'                iTunSMPB            N
-  'iTunes_CDDB_1'           CDDB1Info           N
-  'iTunes_CDDB_TrackNumber' CDDBTrackNumber     N
-  'tool'                    iTunTool            N
-
-=head3 QuickTime EncodingParams Tags
-
-  Tag ID   Tag Name                             Writable
-  ------   --------                             --------
-  'abrt'   AudioAvailableBitRateRange           N
-  'acbf'   AudioBitRateControlMode              N
-  'acef'   AudioExtendFrequencies               N
-  'brat'   AudioCurrentTargetBitRate            N
-  'cdcv'   AudioComponentVersion                N
-  'cmnc'   AudioAvailableNumberChannels         N
-  'init'   AudioIsInitialized                   N
-  'lmrc'   AudioDoesSampleRateConversion        N
-  'mdel'   AudioMinimumDelayMode                N
-  'mnip'   AudioMinimumNumberInputPackets       N
-  'mnop'   AudioMinimumNumberOutputPackets      N
-  'oppr'   AudioOutputPrecedence                N
-  'pad0'   AudioZeroFramesPadded                N
-  'pakb'   AudioMaximumPacketByteSize           N
-  'pakd'   AudioRequiresPacketDescription       N
-  'pakf'   AudioPacketFrameSize                 N
-  'prmm'   AudioCodecPrimeMethod                N
-  'srcq'   AudioQualitySetting                  N
-  'tbuf'   AudioInputBufferSize                 N
-  'ubuf'   AudioUsedInputBufferSize             N
-  'ursr'   AudioUseRecommendedSampleRate        N
-  'vbrq'   AudioVBRQuality                      N
-  'vers'   AudioEncodingParamsVersion           N
-  'vpk?'   AudioHasVariablePacketByteSizes      N
-
-=head3 QuickTime Keys Tags
-
-This directory contains a list of key names which are used to decode
-ItemList tags written by the "mdta" handler.  The prefix of
-"com.apple.quicktime." has been removed from all TagID's below.
-
-  Tag ID                       Tag Name         Writable
-  ------                       --------         --------
-  'Encoded_With'               EncodedWith      N
-  'album'                      Album            N
-  'artist'                     Artist           N
-  'artwork'                    Artwork          N
-  'author'                     Author           N
-  'camera.framereadouttimeinmicroseconds'
-                               FrameReadoutTime N
-  'camera.identifier'          CameraIdentifier N
-  'comment'                    Comment          N
-  'copyright'                  Copyright        N
-  'creationdate'               CreationDate     N
-  'description'                Description      N
-  'direction.facing'           CameraDirection  N
-  'direction.motion'           CameraMotion     N
-  'director'                   Director         N
-  'genre'                      Genre            N
-  'information'                Information      N
-  'keywords'                   Keywords         N
-  'location.ISO6709'           GPSCoordinates   N
-  'location.body'              LocationBody     N
-  'location.date'              LocationDate     N
-  'location.name'              LocationName     N
-  'location.note'              LocationNote     N
-  'location.role'              LocationRole     N
-  'make'                       Make             N
-  'model'                      Model            N
-  'player.movie.audio.balance' Balance          N
-  'player.movie.audio.bass'    Bass             N
-  'player.movie.audio.gain'    AudioGain        N
-  'player.movie.audio.mute'    Mute             N
-  'player.movie.audio.pitchshift' PitchShift    N
-  'player.movie.audio.treble'  Trebel           N
-  'player.movie.visual.brightness' Brightness   N
-  'player.movie.visual.color'  Color            N
-  'player.movie.visual.contrast' Contrast       N
-  'player.movie.visual.tint'   Tint             N
-  'player.version'             PlayerVersion    N
-  'publisher'                  Publisher        N
-  'rating.user'                UserRating       N
-  'software'                   Software         N
-  'version'                    Version          N
-  'year'                       Year             N
-
 =head3 QuickTime TrackAperture Tags
 
   Tag ID   Tag Name                             Writable
@@ -19280,6 +19614,8 @@ multi-language user data tags found, even if they don't exist in this table.
   'PANA'       PanasonicPANA                    Panasonic PANA
   'PENT'       PentaxPENT                       Pentax PENT
   'PXMN'       MakerNotePentax5b                Pentax
+               MakerNotePentax5c                Pentax
+               MakerNotePentaxUnknown           N
   'PXTH'       PentaxPreview                    Pentax PXTH
   'QVMI'       CasioQVMI                        EXIF
   'RMKN'       RicohRMKN                        EXIF
@@ -25782,6 +26118,88 @@ Tags written by Microsoft Office applications.
   ------               --------                 --------
   'objecttype'         ObjectType               N
 
+=head2 Palm Tags
+
+Information extracted from Palm database files (PDB and PRC extensions),
+Mobipocket electronic books (MOBI), and Amazon Kindle KF7 and KF8 books (AZW
+and AZW3).
+
+  Index4   Tag Name                             Writable
+  ------   --------                             --------
+      0    DatabaseName                         N
+      9    CreateDate                           N
+     10    ModifyDate                           N
+     11    LastBackupDate                       N
+     12    ModificationNumber                   N
+     15    PalmFileType                         N
+
+=head3 Palm MOBI Tags
+
+Information extracted from the MOBI header of Mobipocket and Amazon Kindle
+KF7 and KF8 files.
+
+  Index4   Tag Name                             Writable
+  ------   --------                             --------
+      0    Compression                          N
+      1    UncompressedTextLength               N
+      3    Encryption                           N
+      6    MobiType                             N
+      7    CodePage                             N
+      9    MobiVersion                          N
+     21    BookName                             N
+     26    MinimumVersion                       N
+
+=head3 Palm EXTH Tags
+
+Information extracted from the MOBI extended header.
+
+  Tag ID   Tag Name                             Writable
+  ------   --------                             --------
+  0x0001   DRMServerID                          N
+  0x0002   DRMCommerceID                        N
+  0x0003   DRM_E-BookBaseID                     N
+  0x0064   Author                               N
+  0x0065   Publisher                            N
+  0x0066   Imprint                              N
+  0x0067   Description                          N
+  0x0068   ISBN                                 N
+  0x0069   Subject                              N+
+  0x006a   PublishDate                          N
+  0x006b   Review                               N
+  0x006c   Contributor                          N
+  0x006d   Rights                               N
+  0x006e   SubjectCode                          N
+  0x006f   BookType                             N
+  0x0070   Source                               N
+  0x0071   ASIN                                 N
+  0x0072   BookVersion                          N
+  0x0073   SampleFlag                           N
+  0x0074   StartReading                         N
+  0x0075   Adult                                N
+  0x0076   RetailPrice                          N
+  0x0077   RetailPriceCurrency                  N
+  0x007d   ResourceCount                        N
+  0x0081   KF8CoverURI                          N
+  0x00c8   DictionaryShortName                  N
+  0x00cc   CreatorSoftware                      N
+  0x00cd   CreatorMajorVersion                  N
+  0x00ce   CreatorMinorVersion                  N
+  0x00cf   CreatorBuildNumber                   N
+  0x00d0   Watermark                            N
+  0x00d1   Tamper-proofKeys                     N
+  0x0191   ClippingLimit                        N
+  0x0192   PublisherLimit                       N
+  0x0194   TextToSpeech                         N
+  0x0195   RentalFlag                           N
+  0x0196   RentalExpirationDate                 N
+  0x01f5   CDEType                              N
+  0x01f6   LastUpdateTime                       N
+  0x01f7   UpdatedTitle                         N
+  0x01f8   ASIN2                                N
+  0x020c   Language                             N
+  0x020d   Alignment                            N
+  0x0217   CreatorBuildNumber2                  N
+
 =head2 Torrent Tags
 
 Below are tags commonly found in BitTorrent files.  As well as these tags,
@@ -26142,7 +26560,7 @@ Tags extracted from PostScript font files (PFA and PFB).
 
 The following tags are extracted from the TrueType font "name" table found
 in OTF, TTF, TTC and DFONT files.  These tags support localized languages by
-adding a hyphen followed by a language code to the end of the tag name (ie.
+adding a hyphen followed by a language code to the end of the tag name (eg.
 "Copyright-fr" or "License-en-US").  Tags with no language code use the
 default language of "en".
 
@@ -26212,9 +26630,10 @@ information from the original image.
 The following tags are extracted from ZIP archives.  ExifTool also extracts
 additional meta information from compressed documents inside some ZIP-based
 files such Office Open XML (DOCX, PPTX and XLSX), Open Document (ODB, ODC,
-ODF, ODG, ODI, ODP, ODS and ODT), iWork (KEY, PAGES, NUMBERS), and Capture
-One Enhanced Image Package (EIP).  The ExifTool family 3 groups may be used
-to organize the output by embedded document number (ie. the exiftool C<-g3>
+ODF, ODG, ODI, ODP, ODS and ODT), iWork (KEY, PAGES, NUMBERS), Capture One
+Enhanced Image Package (EIP), Adobe InDesign Markup Language (IDML), and
+Electronic Publication (EPUB).  The ExifTool family 3 groups may be used to
+organize ZIP tags by embedded document number (ie. the exiftool C<-g3>
 option).
 
   Index2   Tag Name                             Writable
@@ -26396,7 +26815,8 @@ Tags in the family 1 "System" group are referred to as "pseudo" tags because
 they don't represent real metadata in the file.  Instead, this information
 is stored in the directory structure of the filesystem.  The five writable
 "pseudo" tags (FileName, Directory, FileModifyDate, FileCreateDate and
-HardLink) may be written without modifying the file itself.
+HardLink) may be written without modifying the file itself.  The TestName
+tag is used for dry run testing of writes to FileName.
 
   Tag Name                   Group              Writable
   --------                   -----              --------
@@ -26439,6 +26859,7 @@ HardLink) may be written without modifying the file itself.
   ProcessingTime             ExifTool           N
   RAFVersion                 File               N
   ResourceForkSize           System             N
+  TestName                   -                  Y
   Warning                    ExifTool           N
   XMP                        XMP                Y!
   XResolution                File               N
@@ -26810,6 +27231,22 @@ for more details.
                        IFD0:XPAuthor
                        IFD0:XPKeywords
                        IFD0:XPSubject
+  LargeTags            CanonVRD                 Y
+                       DLOData
+                       EXIF
+                       ICC_Profile
+                       IDCPreviewImage
+                       ImageData
+                       IPTC
+                       JpgFromRaw
+                       OriginalRawImage
+                       OtherImage
+                       PreviewImage
+                       ThumbnailImage
+                       TIFFPreview
+                       XML
+                       XMP
+                       ZoomedPreviewImage
   MakerNotes           MakerNotes               Y
                        MakerNoteApple
                        MakerNoteCanon
@@ -26841,6 +27278,7 @@ for more details.
                        MakerNoteKodak8c
                        MakerNoteKodak9
                        MakerNoteKodak10
+                       MakerNoteKodak11
                        MakerNoteKodakUnknown
                        MakerNoteKyocera
                        MakerNoteMinolta
@@ -26869,6 +27307,7 @@ for more details.
                        MakerNotePhaseOne
                        MakerNoteReconyx
                        MakerNoteRicoh
+                       MakerNoteRicoh2
                        MakerNoteRicohText
                        MakerNoteSamsung1a
                        MakerNoteSamsung1b
@@ -27102,7 +27541,7 @@ L<http://www.metadataworkinggroup.org/> for the official specification.
 
 This structure may contain any top-level XMP tags, but none have been
 pre-defined in ExifTool.  Since no flattened tags have been pre-defined,
-RegionExtensions is writable only as a structure (ie.
+RegionExtensions is writable only as a structure (eg.
 C<{xmp-dc:creator=me,rating=5}>).  Fields for this structure are identified
 using the standard ExifTool tag name (with optional leading group name,
 and/or trailing language code, and/or trailing C<#> symbol to disable print
@@ -1318,7 +1318,7 @@ sub ConvertLensInfo($)
 
 #------------------------------------------------------------------------------
 # Get binary CFA Pattern from a text string
-# Inputs: Print-converted CFA pattern (ie. '[Blue,Green][Green,Red]')
+# Inputs: Print-converted CFA pattern (eg. '[Blue,Green][Green,Red]')
 # Returns: CFA pattern as a string of numbers
 sub GetCFAPattern($)
 {
@@ -1882,7 +1882,7 @@ sub WriteExif($$$)
                 next unless $et->IsOverwriting($nvHash);
                 # don't cross delete if specifically deleting from the other directory
                 # (Note: don't call GetValue() here because it shouldn't be called
-                #  if IsOverwriting returns < 0 -- ie. when shifting)
+                #  if IsOverwriting returns < 0 -- eg. when shifting)
                 next if not defined $$nvHash{Value} and $$nvHash{WantGroup} and
                         lc($$nvHash{WantGroup}) eq lc($wrongDir);
                 # remove this tag if found in this IFD
@@ -2437,7 +2437,7 @@ NoOverwrite:            next if $isNew > 0;
 # create new subdirectory
 #
                     # newInfo may not be defined if we try to add a mandatory tag
-                    # to a directory that doesn't support it (ie. IFD1 in RW2 images)
+                    # to a directory that doesn't support it (eg. IFD1 in RW2 images)
                     $newInfo = $$addDirs{$newID} or next;
                     # make sure we don't try to generate a new MakerNotes directory
                     # or a SubIFD
@@ -2488,7 +2488,7 @@ NoOverwrite:            next if $isNew > 0;
                     $newFormat = $formatNumber{$newFormName};
                 } elsif ($$addDirs{$newID} and $newInfo ne $$addDirs{$newID}) {
                     # this can happen if we are trying to add a directory that doesn't exist
-                    # in this type of file (ie. try adding a SubIFD tag to an A100 image)
+                    # in this type of file (eg. try adding a SubIFD tag to an A100 image)
                     $isNew = -1;
                 }
             }
@@ -2803,7 +2803,7 @@ NoOverwrite:            next if $isNew > 0;
                                 $et->Error("Error writing $subdirName") unless $$et{VALUE}{Error};
                                 return undef;
                             }
-                            # add back original header if necessary (ie. Ricoh GR)
+                            # add back original header if necessary (eg. Ricoh GR)
                             if ($hdrLen and $hdrLen > 0 and $subdirStart <= $dataLen) {
                                 $subdirData = substr($$dataPt, $subdirStart - $hdrLen, $hdrLen) . $subdirData;
                                 $subdirInfo{Fixup}{Start} += $hdrLen;
@@ -102,7 +102,7 @@ sub PrintInvCodedCharset($)
 sub CheckIPTC($$$)
 {
     my ($et, $tagInfo, $valPtr) = @_;
-    my $format = $$tagInfo{Format} || $tagInfo->{Table}->{FORMAT} || '';
+    my $format = $$tagInfo{Format} || $$tagInfo{Table}{FORMAT} || '';
     if ($format =~ /^int(\d+)/) {
         my $bytes = int(($1 || 0) / 8);
         if ($bytes ne 1 and $bytes ne 2 and $bytes ne 4) {
@@ -311,8 +311,8 @@ sub DoWriteIPTC($$$)
     # - avoids changing current MD5 digest unnecessarily
     # - avoids adding mandatory tags unless some other IPTC is changed
     unless (exists $$et{EDIT_DIRS}{$$dirInfo{DirName}} or
-        # standard IPTC tags in other locations should be edited too (ie. AFCP_IPTC)
-        ($tagTablePtr = \%Image::ExifTool::IPTC::Main and exists $$et{EDIT_DIRS}{IPTC}))
+        # standard IPTC tags in other locations should be edited too (eg. AFCP_IPTC)
+        ($tagTablePtr eq \%Image::ExifTool::IPTC::Main and exists $$et{EDIT_DIRS}{IPTC}))
     {
         print $out "$$et{INDENT}  [nothing changed]\n" if $verbose;
         return undef;
@@ -349,9 +349,9 @@ sub DoWriteIPTC($$$)
     # generate lookup so we can find the record numbers
     my %recordNum;
     foreach $tag (Image::ExifTool::TagTableKeys($tagTablePtr)) {
-        $tagInfo = $tagTablePtr->{$tag};
+        $tagInfo = $$tagTablePtr{$tag};
         $$tagInfo{SubDirectory} or next;
-        my $table = $tagInfo->{SubDirectory}->{TagTable} or next;
+        my $table = $$tagInfo{SubDirectory}{TagTable} or next;
         my $subTablePtr = Image::ExifTool::GetTagTable($table);
         $recordNum{$subTablePtr} = $tag;
     }
@@ -465,13 +465,13 @@ sub DoWriteIPTC($$$)
                             foreach $mandTag (sort { $a <=> $b } keys %$mandatory) {
                                 next if $foundRec{$lastRec}->{$mandTag};
                                 unless ($subTablePtr) {
-                                    $tagInfo = $tagTablePtr->{$lastRec};
+                                    $tagInfo = $$tagTablePtr{$lastRec};
                                     $tagInfo and $$tagInfo{SubDirectory} or warn("WriteIPTC: Internal error 1\n"), next;
-                                    $tagInfo->{SubDirectory}->{TagTable} or next;
-                                    $subTablePtr = Image::ExifTool::GetTagTable($tagInfo->{SubDirectory}->{TagTable});
+                                    $$tagInfo{SubDirectory}{TagTable} or next;
+                                    $subTablePtr = Image::ExifTool::GetTagTable($$tagInfo{SubDirectory}{TagTable});
                                 }
-                                $tagInfo = $subTablePtr->{$mandTag} or warn("WriteIPTC: Internal error 2\n"), next;
-                                my $value = $mandatory->{$mandTag};
+                                $tagInfo = $$subTablePtr{$mandTag} or warn("WriteIPTC: Internal error 2\n"), next;
+                                my $value = $$mandatory{$mandTag};
                                 $et->VerboseValue("+ IPTC:$$tagInfo{Name}", $value, ' (mandatory)');
                                 # apply necessary format conversions
                                 FormatIPTC($et, $tagInfo, \$value, \$xlat, $lastRec);
@@ -517,11 +517,11 @@ sub DoWriteIPTC($$$)
                     # write tags for each value in list
                     my $value;
                     foreach $value (@values) {
-                        $et->VerboseValue("+ IPTC:$$tagInfo{Name}", $value);
+                        $et->VerboseValue("+ $$dirInfo{DirName}:$$tagInfo{Name}", $value);
                         # reset allMandatory flag if a non-mandatory tag is written
                         if ($allMandatory) {
                             my $mandatory = $mandatory{$newRec};
-                            $allMandatory = 0 unless $mandatory and $mandatory->{$newTag};
+                            $allMandatory = 0 unless $mandatory and $$mandatory{$newTag};
                         }
                         # apply necessary format conversions
                         FormatIPTC($et, $tagInfo, \$value, \$xlat, $newRec);
@@ -572,7 +572,7 @@ sub DoWriteIPTC($$$)
             FormatIPTC($et, $tagInfo, \$val, \$xlat, $rec, 1);
             if ($et->IsOverwriting($nvHash, $val)) {
                 $xlat = $oldXlat;   # don't change translation (not writing this value)
-                $et->VerboseValue("- IPTC:$$tagInfo{Name}", $val);
+                $et->VerboseValue("- $$dirInfo{DirName}:$$tagInfo{Name}", $val);
                 ++$$et{CHANGED};
                 # set deleted flag to indicate we found and deleted this tag
                 $foundRec{$rec}->{$tag} |= 0x02;
@@ -594,7 +594,7 @@ sub DoWriteIPTC($$$)
         # reset allMandatory flag if a non-mandatory tag is written
         if ($allMandatory) {
             my $mandatory = $mandatory{$rec};
-            unless ($mandatory and $mandatory->{$tag}) {
+            unless ($mandatory and $$mandatory{$tag}) {
                 $allMandatory = 0;
             }
         }
@@ -276,6 +276,7 @@ sub AddChunks($$;@)
             DirName => $dir,
         );
         if ($dir eq 'IFD0') {
+            $et->Warn('Creating non-standard EXIF in PNG', 1);
             $et->VPrint(0, "Creating EXIF profile:\n");
             $$et{TIFF_TYPE} = 'APP1';
             $tagTablePtr = Image::ExifTool::GetTagTable('Image::ExifTool::Exif::Main');
@@ -303,6 +304,7 @@ sub AddChunks($$;@)
                 Write($outfile, $hdr, $buff, $cbuf) or $err = 1;
             }
         } elsif ($dir eq 'IPTC') {
+            $et->Warn('Creating non-standard EXIF in PNG', 1);
             $et->VPrint(0, "Creating IPTC profile:\n");
             # write new IPTC data (stored in a Photoshop directory)
             $dirInfo{DirName} = 'Photoshop';
@@ -320,6 +322,18 @@ sub AddChunks($$;@)
                 WriteProfile($outfile, 'icm', \$buff, 'ICC') or $err = 1;
                 $et->Warn('Wrote ICC as a raw profile (no Compress::Zlib)');
             }
+        } elsif ($dir eq 'PNG-pHYs') {
+            $et->VPrint(0, "Creating pHYs chunk:\n");
+            $tagTablePtr = Image::ExifTool::GetTagTable('Image::ExifTool::PNG::PhysicalPixel');
+            my $blank = "\0\0\x0b\x12\0\0\x0b\x12\x01"; # 2834 pixels per meter (72 dpi)
+            $dirInfo{DataPt} = \$blank;
+            $buff = $et->WriteDirectory(\%dirInfo, $tagTablePtr);
+            if (defined $buff and length $buff) {
+                $buff = 'pHYs' . $buff; # CRC includes chunk name
+                my $hdr = pack('N', length($buff) - 4);
+                my $cbuf = pack('N', CalculateCRC(\$buff, undef));
+                Write($outfile, $hdr, $buff, $cbuf) or $err = 1;
+            }
         } else {
             next;
         }
@@ -198,7 +198,7 @@ sub WriteQuickTime($$$)
                     Write($outfile, Set32u($len+8), $tag, $newData) or $rtnVal = 0, last;
                     next;
                 } else {
-                    # bad things happen if 'mdat' atom is moved (ie. Adobe Bridge crashes --
+                    # bad things happen if 'mdat' atom is moved (eg. Adobe Bridge crashes --
                     # there must be some absolute offsets somewhere that point into mdat),
                     # so hold this atom and write it out later
                     push @hold, Set32u($len+8), $tag, $newData;
@@ -73,6 +73,7 @@ sub XMPOpen($)
 sub ValidateXMP($;$)
 {
     my ($xmpPt, $mode) = @_;
+    $$xmpPt =~ s/^\s*<!--.*?-->\s*//s; # remove leading comment if it exists
     unless ($$xmpPt =~ /^\0*<\0*\?\0*x\0*p\0*a\0*c\0*k\0*e\0*t/) {
         return '' unless $$xmpPt =~ /^<x(mp)?:x[ma]pmeta/;
         # add required xpacket header/trailer
@@ -262,7 +263,7 @@ sub SetPropertyPath($$;$$$$)
         $listType = 'Alt';
         # remove language code from property path if it exists
         $propList[-1] =~ s/-$$tagInfo{LangCode}$// if $$tagInfo{LangCode};
-        # handle lists of lang-alt lists (ie. XMP-plus:Custom tags)
+        # handle lists of lang-alt lists (eg. XMP-plus:Custom tags)
         if ($$tagInfo{List} and $$tagInfo{List} ne '1') {
             push @propList, "rdf:$$tagInfo{List}", 'rdf:li 10';
         }
@@ -767,63 +768,93 @@ sub WriteXMP($$;$)
         # MicrosoftPhoto screws up the case of some tags, and some other software,
         # including Adobe software, has been known to write the wrong list type or
         # not properly enclose properties in a list, so we check for this
-        # (NOTE: we don't currently do these tests when writing structures!
-        #  --> add this to DeleteStruct() below if it turns out to be a problem)
-        unless ($cap or $isStruct) {
-            my $regex = quotemeta $path;
-            # also allow for missing structure fields in lists of structures
-            $regex =~  s/ \d+/ \\d\+/g;
-            my $ok = $regex; # regular expression to match standard property names
-            my $ok2;
-            # also check for incorrect list types which can cause problems
-            if ($regex =~ s{\\/rdf\\:(Bag|Seq|Alt)\\/}{/rdf:(Bag|Seq|Alt)/}g) {
-                # also look for missing bottom-level list
-                $regex =~ s{/rdf:\(Bag\|Seq\|Alt\)\/rdf\\:li\\ \\d\+$}{(/.*)?};
-            } else {
-                $ok2 = $regex;
-                # check for properties in lists that shouldn't be
-                # (ref http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4325.0.html)
-                $regex .= '(/rdf:(Bag|Seq|Alt)/rdf:li \d+)?';
+        until ($cap) {
+            # find and fix all incorrect property names if this is a structure or a flattened tag
+            my @fixInfo;
+            if ($isStruct or defined $$tagInfo{Flat}) {
+                # get tagInfo for all containing (possibly nested) structures
+                my @props = split '/', $path;
+                my $tbl = $$tagInfo{Table};
+                while (@props) {
+                    my $info = $$tbl{GetXMPTagID(\@props)};
+                    unshift @fixInfo, $info if ref $info eq 'HASH' and $$info{Struct} and
+                        (not @fixInfo or $fixInfo[0] ne $info);
+                    pop @props;
+                }
+                $et->WarnOnce("Error finding parent structure for $$tagInfo{Name}") unless @fixInfo;
             }
-            my @matches = sort grep m{^$regex$}i, keys %capture;
-            if (@matches) {
-                if ($matches[0] =~ /^$ok$/) {
-                    $path = $matches[0];    # use existing property path
-                    $cap = $capture{$path};
-                } else {
-                    # property list was wrong, so issue a warning and fix it
-                    my ($match, @fixed, %fixed, $err);
-                    foreach $match (@matches) {
-                        my $fixed = $path;
-                        # set list indices
-                        while ($match =~ / (\d+)/g) {
-                            my $idx = $1;
-                            # insert leading "X" so we don't replace this one again
-                            $fixed =~ s/ \d+/ X$idx/;
-                        }
-                        $fixed =~ s/ X/ /g if $fixed ne $path;  # remove "X"s
-                        $err = 1 if $capture{$fixed} or $fixed{$fixed};
-                        push @fixed, $fixed;
-                        $fixed{$fixed} = 1;
+            # fix property path for this tag (last in the @fixInfo list)
+            push @fixInfo, $tagInfo unless @fixInfo and $isStruct;
+            # start from outermost containing structure, fixing incorrect list types, etc,
+            # finally fixing the actual tag properties after all containing structures
+            my $err;
+            while (@fixInfo) {
+                my $fixInfo = shift @fixInfo;
+                my $fixPath = ConformPathToNamespace($et, GetPropertyPath($fixInfo));
+                my $regex = quotemeta($fixPath);
+                $regex =~ s/ \d+/ \\d\+/g;  # match any list index
+                my $ok = $regex;
+                my ($ok2, $match, $i, @fixed, %fixed, $fixed, $changed);
+                # check for incorrect list types
+                if ($regex =~ s{\\/rdf\\:(Bag|Seq|Alt)\\/}{/rdf:(Bag|Seq|Alt)/}g) {
+                    # also look for missing bottom-level list
+                    if ($regex =~ s{/rdf:\(Bag\|Seq\|Alt\)\/rdf\\:li\\ \\d\+$}{}) {
+                        $regex .= '(/.*)?' unless @fixInfo;
                     }
-                    my $tg = $et->GetGroup($tagInfo, 1) . ':' . $$tagInfo{Name};
-                    my $wrn = lc($path) eq lc($matches[0]) ? 'tag ID case' : 'list type';
-                    if ($err) {
-                        $et->Warn("Incorrect $wrn for existing $tg (not changed)");
-                    } else {
-                        # fix the incorrect property paths for all values of this tag
-                        foreach $match (@matches) {
-                            my $fixed = shift @fixed;
-                            $capture{$fixed} = $capture{$match};
-                            delete $capture{$match};
-                            # remove xml:lang attribute from incorrect lang-alt list if necessary
-                            delete $capture{$fixed}[1]{'xml:lang'} if $ok2 and $match !~ /^$ok2$/;
-                        }
-                        $cap = $capture{$path} || $capture{$fixed[0]};
-                        $et->Warn("Fixed incorrect $wrn for $tg", 1);
+                } elsif (not @fixInfo) {
+                    $ok2 = $regex;
+                    # check for properties in lists that shouldn't be (ref forum4325)
+                    $regex .= '(/rdf:(Bag|Seq|Alt)/rdf:li \d+)?';
+                }
+                if (@fixInfo) {
+                    $regex .= '(/.*)?';
+                    $ok .= '(/.*)?';
+                }
+                my @matches = sort grep m{^$regex$}i, keys %capture;
+                last unless @matches;
+                if ($matches[0] =~ m{^$ok$}) {
+                    unless (@fixInfo) {
+                        $path = $matches[0];
+                        $cap = $capture{$path};
                     }
+                    next;
+                }
+                # needs fixing...
+                my @fixProps = split '/', $fixPath;
+                foreach $match (@matches) {
+                    my @matchProps = split '/', $match;
+                    # remove superfluous list properties if necessary
+                    $#matchProps = $#fixProps if $ok2 and $#matchProps > $#fixProps;
+                    for ($i=0; $i<@fixProps; ++$i) {
+                        defined $matchProps[$i] or $matchProps[$i] = $fixProps[$i], next;
+                        next if $matchProps[$i] =~ / \d+$/ or $matchProps[$i] eq $fixProps[$i];
+                        $matchProps[$i] = $fixProps[$i];
+                    }
+                    $fixed = join '/', @matchProps;
+                    $err = 1 if $fixed{$fixed} or ($capture{$fixed} and $match ne $fixed);
+                    push @fixed, $fixed;
+                    $fixed{$fixed} = 1;
+                }
+                my $tg = $et->GetGroup($fixInfo, 1) . ':' . $$fixInfo{Name};
+                my $wrn = lc($fixed[0]) eq lc($matches[0]) ? 'tag ID case' : 'list type';
+                if ($err) {
+                    $et->Warn("Incorrect $wrn for existing $tg (not changed)");
+                } else {
+                    # fix the incorrect property paths for all values of this tag
+                    foreach $fixed (@fixed) {
+                        my $match = shift @matches;
+                        next if $fixed eq $match;
+                        $capture{$fixed} = $capture{$match};
+                        delete $capture{$match};
+                        # remove xml:lang attribute from incorrect lang-alt list if necessary
+                        delete $capture{$fixed}[1]{'xml:lang'} if $ok2 and $match !~ /^$ok2$/;
+                        $changed = 1;
+                    }
+                    $cap = $capture{$path} || $capture{$fixed[0]} unless @fixInfo;
+                    $et->Warn("Fixed incorrect $wrn for $tg", 1) if $changed;
                 }
             }
+            last;
         }
         my $nvHash = $et->GetNewValueHash($tagInfo);
         my $overwrite = $et->IsOverwriting($nvHash);
@@ -100,7 +100,7 @@ my @delGroups = qw(
     APP13 APP14 APP15 CanonVRD CIFF Ducky EXIF ExifIFD File FlashPix FotoStation
     GlobParamIFD GPS ICC_Profile IFD0 IFD1 InteropIFD IPTC JFIF Jpeg2000 MakerNotes
     Meta MetaIFD MIE MPF NikonCapture PDF PDF-update PhotoMechanic Photoshop PNG
-    PrintIM RMETA RSRC SubIFD Trailer XML XML-* XMP XMP-*
+    PNG-pHYs PrintIM RMETA RSRC SubIFD Trailer XML XML-* XMP XMP-*
 );
 # family 2 group names that we can delete
 my @delGroup2 = qw(
@@ -233,6 +233,8 @@ my %ignorePrintConv = ( OTHER => 1, BITMASK => 1, Notes => 1 );
 #           WriteGroup - group name where information is being written (correct case)
 #           WantGroup - group name as specified in call to function (case insensitive)
 #           Next - pointer to next new value hash (if more than one)
+#           NoReplace - set for List-type tag if value was created with Replace=0
+#           AddBefore - number of list items added by a subsequent Replace=0 call
 #           IsNVH - Flag indicating this is a new value hash
 #           Shift - shift value
 #           Save - counter used by SaveNewValues()/RestoreNewValues()
@@ -822,6 +824,7 @@ TAG: foreach $tagInfo (@matchingTags) {
             my $nvHash = $self->GetNewValueHash($tagInfo, $writeGroup, 'create', $options{ProtectSaved});
             # ignore new values protected with ProtectSaved
             $nvHash or ++$numSet, next; # (increment $numSet to avoid warning)
+            $$nvHash{NoReplace} = 1 if $$tagInfo{List} and not $options{Replace};
             $$nvHash{WantGroup} = $wantGroup;
             $$nvHash{EditOnly} = 1 if $editOnly;
             # save maker note information if writing maker notes
@@ -902,8 +905,12 @@ TAG: foreach $tagInfo (@matchingTags) {
                 if (not $$tagInfo{List}) {
                     # not a List tag -- overwrite existing value
                     $$nvHash{Value}[0] = $val;
+                } elsif (defined $$nvHash{AddBefore} and @{$$nvHash{Value}} >= $$nvHash{AddBefore}) {
+                    # values from a later argument have been added (ie. Replace=0)
+                    # to this list, so the new values should come before these
+                    splice @{$$nvHash{Value}}, -$$nvHash{AddBefore}, 0, ref $val eq 'ARRAY' ? @$val : $val;
                 } else {
-                    # add to existing list
+                    # add at end of existing list
                     push @{$$nvHash{Value}}, ref $val eq 'ARRAY' ? @$val : $val;
                 }
                 if ($verbose > 1) {
@@ -979,8 +986,10 @@ WriteAlso:
     } elsif (not $numSet) {
         my $pre = $wantGroup ? ($ifdName || $wantGroup) . ':' : '';
         if ($wasProtected) {
-            $err = "Sorry, $pre$tag is $wasProtected for writing";
             $verbose = 0;   # we already printed this verbose message
+            unless ($options{Replace} and $options{Replace} == 2) {
+                $err = "Sorry, $pre$tag is $wasProtected for writing";
+            }
         } elsif (not $listOnly) {
             if ($origTag =~ /[?*]/) {
                 if ($noCreate) {
@@ -1031,7 +1040,7 @@ sub SetNewValuesFromFile($$;@)
 {
     local $_;
     my ($self, $srcFile, @setTags) = @_;
-    my $key;
+    my ($key, $tag, @exclude);
 
     # get initial SetNewValuesFromFile options
     my %opts = ( Replace => 1 );    # replace existing list items by default
@@ -1091,6 +1100,15 @@ sub SetNewValuesFromFile($$;@)
         Unknown         => $$options{Unknown},
         XMPAutoConv     => $$options{XMPAutoConv},
     );
+    # avoid extracting tags that are excluded
+    foreach $tag (@setTags) {
+        next if ref $tag or $tag !~ /^-(.*)/;
+        push @exclude, $1;
+    }
+    if (@exclude) {
+        ExpandShortcuts(\@exclude, 1);
+        $srcExifTool->Options(Exclude => \@exclude);
+    }
     my $printConv = $$options{PrintConv};
     if ($opts{Type}) {
         # save source type separately because it may be different than dst Type
@@ -1108,7 +1126,6 @@ sub SetNewValuesFromFile($$;@)
 
     # sort tags in reverse order so we get priority tag last
     my @tags = reverse sort keys %$info;
-    my $tag;
 #
 # simply transfer all tags from source image if no tags specified
 #
@@ -1154,7 +1171,7 @@ sub SetNewValuesFromFile($$;@)
             my $opt;
             if ($2 eq '>') {
                 ($tag, $dstTag) = ($1, $3);
-                # flag add and delete (ie. '+<' and '-<') redirections
+                # flag add and delete (eg. '+<' and '-<') redirections
                 $opt = $1 if $tag =~ s/\s*([-+])$// or $dstTag =~ s/^([-+])\s*//;
             } else {
                 ($tag, $dstTag) = ($3, $1);
@@ -1334,7 +1351,7 @@ SET:    foreach $set (@setList) {
             # this was added in version 9.14, and allowed actions like "-subject<all" to
             # write values of multiple tags into a list, but it had the side effect of
             # duplicating items if there were multiple list tags with the same name
-            # (ie. -use mwg "-creator<creator"), so disable this as of ExifTool 9.36:
+            # (eg. -use mwg "-creator<creator"), so disable this as of ExifTool 9.36:
             # $$opts{Replace} = 0;    # accumulate values from tags matching a single argument
             if ($wrn and not $noWarn) {
                 # return this warning
@@ -1483,7 +1500,7 @@ sub CountNewValues($)
     my $pseudo = 0;
     if ($newVal) {
         # (Note: all writable "pseudo" tags must be found in Extra table)
-        foreach $tag (qw{FileName Directory FileModifyDate FileCreateDate HardLink}) {
+        foreach $tag (qw{FileName Directory FileModifyDate FileCreateDate HardLink TestName}) {
             ++$pseudo if defined $$newVal{$Image::ExifTool::Extra{$tag}};
         }
     }
@@ -1522,7 +1539,7 @@ sub SaveNewValues($)
 # Inputs: 0) ExifTool object reference
 # Notes: Restores saved new values, but currently doesn't restore them in the
 # original order, so there may be some minor side-effects when restoring tags
-# with overlapping groups. ie) XMP:Identifier, XMP-dc:Identifier
+# with overlapping groups. eg) XMP:Identifier, XMP-dc:Identifier
 sub RestoreNewValues($)
 {
     my $self = shift;
@@ -1622,6 +1639,7 @@ sub SetFileModifyDate($$;$$)
 # Inputs: 0) ExifTool object reference, 1) current file name (including path)
 #         2) new name (or undef to build from FileName and Directory tags)
 #         3) option: 'Link' to create link instead of renaming file
+#                    'Test' to only print new file name
 # Returns: 1=name changed OK, 0=nothing changed, -1=error changing name
 #          (and increments CHANGED flag if filename changed)
 # Notes: Will not overwrite existing file.  Creates directories as necessary.
@@ -1629,10 +1647,15 @@ sub SetFileName($$;$$)
 {
     my ($self, $file, $newName, $opt) = @_;
     my ($nvHash, $doName, $doDir);
+    $opt or $opt = '';
     # determine the new file name
     unless (defined $newName) {
-        if ($opt and $opt eq 'Link') {
-            $newName = $self->GetNewValues('HardLink');
+        if ($opt) { 
+            if ($opt eq 'Link') {
+                $newName = $self->GetNewValues('HardLink');
+            } elsif ($opt eq 'Test') {
+                $newName = $self->GetNewValues('TestName');
+            }
             return 0 unless defined $newName;
         } else {
             my $filename = $self->GetNewValues('FileName', \$nvHash);
@@ -1649,10 +1672,22 @@ sub SetFileName($$;$$)
         }
     }
     $newName =~ tr/\0//d;   # make sure name doesn't contain nulls
+    # protect against empty file name
+    length $newName or $self->Warn('New file name is empty'), return -1;
+    # don't replace existing file
     if (-e $newName) {
-        # don't replace existing file
-        $self->Warn("File '$newName' already exists");
-        return -1;
+        if ($file ne $newName or $opt eq 'Link') {
+            $self->Warn("File '$newName' already exists");
+            return -1;
+        } else {
+            $self->Warn('File name is unchanged');
+            return 0;
+        }
+    }
+    if ($opt eq 'Test') {
+        my $out = $$self{OPTIONS}{TextOut};
+        print $out "'$file' --> '$newName'\n";
+        return 1;
     }
     # create directory for new file if necessary
     my $result;
@@ -1663,7 +1698,7 @@ sub SetFileName($$;$$)
         }
         $self->VPrint(0, "Created directory for '$newName'");
     }
-    if ($opt and $opt eq 'Link') {
+    if ($opt eq 'Link') {
         unless (link $file, $newName) {
             $self->Warn("Error creating link '$newName'");
             return -1;
@@ -1723,7 +1758,7 @@ sub WriteInfo($$;$$)
 {
     local ($_, *EXIFTOOL_FILE2, *EXIFTOOL_OUTFILE);
     my ($self, $infile, $outfile, $outType) = @_;
-    my (@fileTypeList, $fileType, $tiffType, $hdr, $seekErr, $type, $tmpfile, $hardLink);
+    my (@fileTypeList, $fileType, $tiffType, $hdr, $seekErr, $type, $tmpfile, $hardLink, $testName);
     my ($inRef, $outRef, $closeIn, $closeOut, $outPos, $outBuff, $eraseIn, $raf);
     my $oldRaf = $$self{RAF};
     my $rtnVal = 0;
@@ -1752,7 +1787,9 @@ sub WriteInfo($$;$$)
     my ($numNew, $numPseudo) = $self->CountNewValues();
     if (not defined $outfile and defined $infile) {
         $hardLink = $self->GetNewValues('HardLink');
+        $testName = $self->GetNewValues('TestName');
         undef $hardLink if defined $hardLink and not length $hardLink;
+        undef $testName if defined $testName and not length $testName;
         my $newFileName =  $self->GetNewValues('FileName', \$nvHash);
         my $newDir = $self->GetNewValues('Directory');
         if (defined $newDir and length $newDir) {
@@ -1771,10 +1808,11 @@ sub WriteInfo($$;$$)
             if ((defined $newFileName or defined $newDir) and not ref $infile) {
                 $self->SetFileName($infile) > 0 and $rtnVal = 1;
             }
-            if (defined $hardLink) {
+            if (defined $hardLink or defined $testName) {
                 my $src = $$self{NewName};
                 $src = $infile unless defined $src;
-                $self->SetFileName($src, $hardLink, 'Link') and $rtnVal = 1;
+                $hardLink and $self->SetFileName($src, $hardLink, 'Link') and $rtnVal = 1;
+                $testName and $self->SetFileName($src, $testName, 'Test') and $rtnVal = 1;
             }
             return $rtnVal;
         } elsif (defined $newFileName and length $newFileName) {
@@ -2164,6 +2202,7 @@ sub WriteInfo($$;$$)
         if (defined $hardLink and $self->SetFileName($target, $hardLink, 'Link')) {
             ++$$self{CHANGED}; # we changed something (sort of)
         }
+        defined $testName and $self->SetFileName($target, $testName, 'Test');
     }
     # check for write error and set appropriate error message and return value
     if ($rtnVal < 0) {
@@ -2516,7 +2555,8 @@ Conv: for (;;) {
                     }
                     if ($$conv{BITMASK}) {
                         my $lookupBits = $$conv{BITMASK};
-                        my ($val2, $err2) = EncodeBits($val, $lookupBits);
+                        my ($wbits, $tbits) = @$tagInfo{'BitsPerWord','BitsTotal'};
+                        my ($val2, $err2) = EncodeBits($val, $lookupBits, $wbits, $tbits);
                         if ($err2) {
                             # ok, try matching a straight value
                             ($val, $multi) = ReverseLookup($val, $conv);
@@ -2565,7 +2605,7 @@ Conv: for (;;) {
 }
 
 #------------------------------------------------------------------------------
-# convert tag names to values in a string (ie. '${EXIF:ISO}x $$' --> '100x $')
+# convert tag names to values in a string (eg. '${EXIF:ISO}x $$' --> '100x $')
 # Inputs: 0) ExifTool object ref, 1) reference to list of found tags
 #         2) string with embedded tag names, 3) Options:
 #               undef    - set missing tags to ''
@@ -2577,7 +2617,7 @@ Conv: for (;;) {
 # - tag names are not case sensitive and may end with '#' for ValueConv value
 # - uses MissingTagValue option if set
 # - '$GROUP:all' evaluates to 1 if any tag from GROUP exists, or 0 otherwise
-# - advanced feature allows Perl expressions inside braces (ie. '${model;tr/ //d}')
+# - advanced feature allows Perl expressions inside braces (eg. '${model;tr/ //d}')
 # - an error/warning in an advanced expression ("${TAG;EXPR}") generates an error
 #   if option set to 'Error', or a warning otherwise
 sub InsertTagValues($$$;$)
@@ -2676,7 +2716,7 @@ sub InsertTagValues($$$;$)
                 last unless @tags;
                 next;
             }
-            # evaluate advanced formatting expression if given (ie. "${TAG;EXPR}")
+            # evaluate advanced formatting expression if given (eg. "${TAG;EXPR}")
             if (defined $expr) {
                 local $SIG{'__WARN__'} = \&SetWarning;
                 undef $evalWarning;
@@ -2708,6 +2748,12 @@ sub InsertTagValues($$$;$)
         }
         if (ref $opt eq 'HASH') {
             $var .= '#' if $type;
+            if (defined $expr) {
+                # generate unique variable name for this modified tag value
+                my $i = 1;
+                ++$i while exists $$opt{"$val.expr$i"};
+                $var .= '.expr' . $i;
+            }
             $rtnStr .= "$pre\$info{'$var'}";
             $$opt{$var} = $val;
         } else {
@@ -2985,7 +3031,8 @@ sub GetNewValueHash($$;$$$)
     # remove this entry if deleting, or if creating a new entry and
     # this entry is marked with "Save" flag
     if (defined $nvHash and ($opts{'delete'} or ($opts{'create'} and $$nvHash{Save}))) {
-        if (defined $_[4] and defined $$nvHash{Save} and $$nvHash{Save} > $_[4]) {
+        my $protect = (defined $_[4] and defined $$nvHash{Save} and $$nvHash{Save} > $_[4]);
+        if ($protect and not ($$nvHash{NoReplace} and $opts{create})) {
             return undef;   # honour ProtectSaved value by not writing this tag
         } elsif ($opts{'delete'}) {
             $self->RemoveNewValueHash($nvHash, $tagInfo);
@@ -3004,6 +3051,7 @@ sub GetNewValueHash($$;$$$)
             $copy{Next} = $$saveHash{$tagInfo};
             $$saveHash{$tagInfo} = \%copy;
             delete $$nvHash{Save}; # don't save it again
+            $$nvHash{AddBefore} = scalar @{$$nvHash{Value}} if $protect and $$nvHash{Value};
         }
     }
     if (not defined $nvHash and $opts{'create'}) {
@@ -3216,7 +3264,7 @@ sub GetAddDirHash($$;$)
 
 #------------------------------------------------------------------------------
 # Get localized version of tagInfo hash (used by MIE, XMP, PNG and QuickTime)
-# Inputs: 0) tagInfo hash ref, 1) locale code (ie. "en_CA" for MIE)
+# Inputs: 0) tagInfo hash ref, 1) locale code (eg. "en_CA" for MIE)
 # Returns: new tagInfo hash ref, or undef if invalid
 # - sets LangCode member in new tagInfo
 sub GetLangInfo($$)
@@ -3457,6 +3505,7 @@ sub WriteDirectory($$$;$)
         my $verb = 'Writing';
         my $newVal = $self->GetNewValues($nvHash);
         unless (defined $newVal and length $newVal) {
+            return '' unless $dataPt or $$dirInfo{RAF}; # nothing to do if block never existed
             $verb = 'Deleting';
             $newVal = '';
         }
@@ -3855,7 +3904,7 @@ sub VerboseDir($$;$$)
 
 #------------------------------------------------------------------------------
 # Print verbose value while writing
-# Inputs: 0) ExifTool object ref, 1) heading "ie. '+ IPTC:Keywords',
+# Inputs: 0) ExifTool object ref, 1) heading "eg. '+ IPTC:Keywords',
 #         2) value, 3) [optional] extra text after value
 sub VerboseValue($$$;$)
 {
@@ -4080,7 +4129,7 @@ sub AssembleRational($$@)
 # Returns: numerator, denominator (in list context)
 # Notes:
 # - the returned rational will be accurate to at least 8 significant figures if possible
-# - ie. an input of 3.14159265358979 returns a rational of 104348/33215,
+# - eg. an input of 3.14159265358979 returns a rational of 104348/33215,
 #   which equals    3.14159265392142 and is accurate to 10 significant figures
 # - these routines were a bit tricky, but fun to write!
 sub Rationalize($;$)
@@ -4960,7 +5009,7 @@ sub WriteJPEG($$)
                 # get new preview image position, relative to EXIF base
                 my $newPos = length($$outfile) - 10; # (subtract 10 for segment and EXIF headers)
                 my $junkLen;
-                # adjust position if image isn't at the start (ie. Olympus E-1/E-300)
+                # adjust position if image isn't at the start (eg. Olympus E-1/E-300)
                 if ($buff =~ /(\xff\xd8\xff.|.\xd8\xff\xdb)(..)/sg) {
                     my ($jpegHdr, $segLen) = ($1, $2);
                     $junkLen = pos($buff) - 6;
@@ -5813,7 +5862,7 @@ sub WriteBinaryData($$$)
             # (Ricoh has 16-bit preview image offsets, so can't just assume int32u)
             my $format = $$tagInfo{Format} || $$tagTablePtr{FORMAT} || 'int32u';
             my $offset = ReadValue($dataPt, $entry, $format, 1, $dirLen-$entry);
-            # ignore if offset is zero (ie. Ricoh DNG uses this to indicate no preview)
+            # ignore if offset is zero (eg. Ricoh DNG uses this to indicate no preview)
             next unless $offset;
             $fixup->AddFixup($entry, $$tagInfo{DataTag}, $format);
             # handle the preview image now if this is a JPEG file
@@ -47,7 +47,7 @@ use Image::ExifTool qw(:Utils);
 use Image::ExifTool::Exif;
 require Exporter;
 
-$VERSION = '2.75';
+$VERSION = '2.78';
 @ISA = qw(Exporter);
 @EXPORT_OK = qw(EscapeXML UnescapeXML);
 
@@ -230,6 +230,9 @@ my %boolConv = (
 # (Note: namespaces with non-standard prefixes aren't currently ignored)
 my %ignoreNamespace = ( 'x'=>1, rdf=>1, xmlns=>1, xml=>1, svg=>1, et=>1, office=>1 );
 
+# XMP properties to ignore (set dynamically via dirInfo IgnoreProp)
+my %ignoreProp;
+
 # these are the attributes that we handle for properties that contain
 # sub-properties.  Attributes for simple properties are easy, and we
 # just copy them over.  These are harder since we don't store attributes
@@ -242,7 +245,8 @@ my %recognizedAttrs = (
     'rdf:parseType' => 1,
     'rdf:nodeID' => 1,
     'et:toolkit' => 1,
-    'rdf:xmlns' => 1, # this is presumably the default namespace, which we currently ignore
+    'rdf:xmlns'  => 1, # this is presumably the default namespace, which we currently ignore
+    'lastUpdate' => [ 'Image::ExifTool::XMP::XML', 'lastUpdate', 'LastUpdate' ], # found in XML from Sony ICLE-7S MP4
 );
 
 # special tags in structures below
@@ -710,6 +714,21 @@ my %sLocationDetails = (
     },
 );
 
+# hack to allow XML containing Dublin Core metadata to be handled like XMP (eg. EPUB - see ZIP.pm)
+%Image::ExifTool::XMP::XML = (
+    GROUPS => { 0 => 'XML', 1 => 'XML', 2 => 'Unknown' },
+    PROCESS_PROC => \&ProcessXMP,
+    dc => {
+        Name => 'dc',
+        SubDirectory => { TagTable => 'Image::ExifTool::XMP::dc' },
+    },
+    lastUpdate => {
+        Groups => { 2 => 'Time' },
+        ValueConv => 'Image::ExifTool::XMP::ConvertXMPDate($val)',
+        PrintConv => '$self->ConvertDateTime($val)',
+    },
+);
+
 #
 # Tag tables for all XMP namespaces:
 #
@@ -2311,7 +2330,7 @@ sub FullUnescapeXML($)
 
 #------------------------------------------------------------------------------
 # Convert XML character reference to UTF-8
-# Inputs: 0) XML character reference stripped of the '&' and ';' (ie. 'quot', '#34', '#x22')
+# Inputs: 0) XML character reference stripped of the '&' and ';' (eg. 'quot', '#34', '#x22')
 #         1) hash reference for looking up character numbers by name
 # Returns: UTF-8 equivalent (or original character on conversion error)
 sub UnescapeChar($$)
@@ -2443,7 +2462,7 @@ sub GetXMPTagID($;$$)
         # split name into namespace and property name
         # (Note: namespace can be '' for property qualifiers)
         my ($ns, $nm) = ($prop =~ /(.*?):(.*)/) ? ($1, $2) : ('', $prop);
-        if ($ignoreNamespace{$ns}) {
+        if ($ignoreNamespace{$ns} or $ignoreProp{$prop}) {
             # special case: don't ignore rdf numbered items
             unless ($prop =~ /^rdf:(_\d+)$/) {
                 # save list index if necessary for structures
@@ -2633,7 +2652,7 @@ sub AddFlattenedTags($;$$)
 
 #------------------------------------------------------------------------------
 # Get localized version of tagInfo hash
-# Inputs: 0) tagInfo hash ref, 1) language code (ie. "x-default")
+# Inputs: 0) tagInfo hash ref, 1) language code (eg. "x-default")
 # Returns: new tagInfo hash ref, or undef if invalid
 sub GetLangInfo($$)
 {
@@ -2701,8 +2720,8 @@ sub ScanForXMP($$)
         $et->SetFileType('<unknown file containing XMP>');
     }
     my %dirInfo = (
-        DataPt => \$xmp,
-        DirLen => length $xmp,
+        DataPt  => \$xmp,
+        DirLen  => length $xmp,
         DataLen => length $xmp,
     );
     ProcessXMP($et, \%dirInfo);
@@ -2747,10 +2766,13 @@ sub PrintLensID(@)
         # Nikon is a special case because Adobe doesn't store the full LensID
         if ($mk eq 'Nikon') {
             my $hex = sprintf("%.2X", $id);
-            my %newConv;
+            my (%newConv, %used);
             my $i = 0;
             foreach (grep /^$hex /, keys %$printConv) {
-                $newConv{$i ? "$id.$i" : $id} = $$printConv{$_};
+                my $lens = $$printConv{$_};
+                next if $used{$lens}; # avoid duplicates
+                $used{$lens} = 1;
+                $newConv{$i ? "$id.$i" : $id} = $lens;
                 ++$i;
             }
             $printConv = \%newConv;
@@ -3099,7 +3121,7 @@ sub ParseXMPElement($$$;$$$$)
 
     Element: for (;;) {
         # all done if there isn't enough data for another element
-        # (the smallest possible element is 4 bytes, ie. "<a/>")
+        # (the smallest possible element is 4 bytes, eg. "<a/>")
         last if pos($$dataPt) > $end - 4;
         # reset nodeID before processing each element
         my $nodeID = $$blankInfo{NodeID} = $oldNodeID;
@@ -3112,7 +3134,7 @@ sub ParseXMPElement($$$;$$$$)
         my $valStart = pos($$dataPt);
         my $valEnd;
         # only look for closing token if this is not an empty element
-        # (empty elements end with '/', ie. <a:b/>)
+        # (empty elements end with '/', eg. <a:b/>)
         if ($attrs !~ s/\/$//) {
             my $nesting = 1;
             my $tok;
@@ -3241,12 +3263,19 @@ sub ParseXMPElement($$$;$$$$)
             }
             # keep track of the namespace prefixes used
             if ($ns eq 'xmlns') {
-                unless ($attrs{$shortName}) {
-                    $et->WarnOnce("Duplicate namespace '$shortName'");
-                    next;
+                my $uri = $attrs{$shortName};
+                next unless $uri; # (shouldn't happen)
+                my $stdNS = $uri2ns{$uri};
+                unless ($stdNS) {
+                    # patch for Nikon NX2 URI bug for Microsoft PhotoInfo namespace
+                    $uri =~ s{/$}{} or $uri .= '/';
+                    $stdNS = $uri2ns{$uri};
+                    if ($stdNS) {
+                        $attrs{$shortName} = $uri;
+                        $et->WarnOnce("Fixed incorrect URI for $shortName", 1);
+                    }
                 }
                 $curNS{$name} = $attrs{$shortName};
-                my $stdNS = $uri2ns{$attrs{$shortName}};
                 # translate namespace if non-standard (except 'x' and 'iX')
                 if ($stdNS and $name ne $stdNS and $stdNS ne 'x' and $stdNS ne 'iX') {
                     # make a copy of the standard translations so we can modify it
@@ -3278,7 +3307,7 @@ sub ParseXMPElement($$$;$$$$)
                 }
             }
             my $shortVal = $attrs{$shortName};
-            if ($ignoreNamespace{$ns}) {
+            if ($ignoreNamespace{$ns} or $ignoreProp{$prop}) {
                 $ignored = $propName;
                 # handle special attributes (extract as tags only once if not empty)
                 if (ref $recognizedAttrs{$propName} and $shortVal) {
@@ -3424,7 +3453,7 @@ sub ProcessXMP($$;$)
         my $raf = $$dirInfo{RAF} or return 0;
         $raf->Read($buff, 256) or return 0;
         ($buf2 = $buff) =~ tr/\0//d;    # cheap conversion to UTF-8
-        # remove leading comments if they exist (ie. ImageIngester)
+        # remove leading comments if they exist (eg. ImageIngester)
         while ($buf2 =~ /^\s*<!--/) {
             # remove the comment if it is complete
             if ($buf2 =~ s/^\s*<!--.*?-->\s+//s) {
@@ -3666,11 +3695,18 @@ sub ProcessXMP($$;$)
     $xlatNamespace = \%stdXlatNS;
 
     # avoid scanning for XMP later in case ScanForXMP is set
-    $$et{FoundXMP} = 1;
+    $$et{FoundXMP} = 1 if $tagTablePtr eq \%Image::ExifTool::XMP::Main;
 
     # set XMP parsing options
     $$et{XMPParseOpts} = $$dirInfo{XMPParseOpts};
 
+    # ignore any specified properties (XML hack)
+    if ($$dirInfo{IgnoreProp}) {
+        %ignoreProp = %{$$dirInfo{IgnoreProp}};
+    } else {
+        undef %ignoreProp;
+    }
+
     # need to preserve list indices to be able to handle multi-dimensional lists
     my $keepFlat;
     if ($$et{OPTIONS}{Struct}) {
@@ -3686,7 +3722,7 @@ sub ProcessXMP($$;$)
     }
 
     # don't generate structures if this isn't real XMP
-    $$et{NO_STRUCT} = 1 if $$dirInfo{BlockInfo};
+    $$et{NO_STRUCT} = 1 if $$dirInfo{BlockInfo} or $$dirInfo{NoStruct};
 
     # parse the XMP
     if (ParseXMPElement($et, $tagTablePtr, $dataPt, $dirStart, $dirEnd)) {
@@ -25,7 +25,7 @@ sub ConvertStruct($$$$;$);
 # Serialize a structure (or other object) into a simple string
 # Inputs: 0) HASH ref, ARRAY ref, or SCALAR, 1) closing bracket (or undef)
 # Returns: serialized structure string
-# ie) "{field=text with {braces|}|, and a comma, field2=val2,field3={field4=[a,b]}}"
+# eg) "{field=text with {braces|}|, and a comma, field2=val2,field3={field4=[a,b]}}"
 sub SerializeStruct($;$)
 {
     my ($obj, $ket) = @_;
@@ -196,7 +196,7 @@ Key:
             $fieldInfo = $$strTable{$tag = $fix} if $fix and not $specialStruct{$fix};
         }
         until (ref $fieldInfo eq 'HASH') {
-            # generate wildcard fields on the fly (ie. mwg-rs:Extensions)
+            # generate wildcard fields on the fly (eg. mwg-rs:Extensions)
             unless ($$strTable{NAMESPACE}) {
                 my ($grp, $tg, $langCode);
                 ($grp, $tg) = $tag =~ /^(.+):(.+)/ ? (lc $1, $2) : ('', $tag);
@@ -241,7 +241,7 @@ Key:
                 delete $$fieldInfo{Groups};
                 last; # write this dynamically-generated field
             }
-            # generate lang-alt fields on the fly (ie. Iptc4xmpExt:AOTitle)
+            # generate lang-alt fields on the fly (eg. Iptc4xmpExt:AOTitle)
             my ($tg, $langCode) = GetLangCode($tag);
             if (defined $langCode) {
                 $fieldInfo = $$strTable{$tg} unless $specialStruct{$tg};
@@ -725,7 +725,8 @@ sub RestoreStruct($;$)
         if ($err) {
             # this may happen if we have a structural error in the XMP
             # (like an improperly contained list for example)
-            $et->Warn("Error $err placing $$tagInfo{Name} in structure or list", 1);
+            my $ns = $$tagInfo{Namespace} || $$tagInfo{Table}{NAMESPACE} || '';
+            $et->Warn("Error $err placing $ns:$$tagInfo{TagID} in structure or list", 1);
             delete $structs{$strInfo} unless $oldStruct;
         } elsif ($tagInfo eq $strInfo) {
             # just a regular list tag
@@ -19,7 +19,7 @@ use strict;
 use vars qw($VERSION $warnString);
 use Image::ExifTool qw(:DataAccess :Utils);
 
-$VERSION = '1.13';
+$VERSION = '1.17';
 
 sub WarnProc($) { $warnString = $_[0]; }
 
@@ -33,7 +33,8 @@ my %openDocType = (
     'application/vnd.oasis.opendocument.presentation' => 'ODP',
     'application/vnd.oasis.opendocument.spreadsheet'  => 'ODS',
     'application/vnd.oasis.opendocument.text'         => 'ODT',
-    'application/vnd.adobe.indesign-idml-package'     => 'IDML', #6
+    'application/vnd.adobe.indesign-idml-package'     => 'IDML', #6 (not open doc)
+    'application/epub+zip' => 'EPUB', #PH (not open doc)
 );
 
 # ZIP metadata blocks
@@ -45,9 +46,10 @@ my %openDocType = (
         The following tags are extracted from ZIP archives.  ExifTool also extracts
         additional meta information from compressed documents inside some ZIP-based
         files such Office Open XML (DOCX, PPTX and XLSX), Open Document (ODB, ODC,
-        ODF, ODG, ODI, ODP, ODS and ODT), iWork (KEY, PAGES, NUMBERS), and Capture
-        One Enhanced Image Package (EIP).  The ExifTool family 3 groups may be used
-        to organize the output by embedded document number (ie. the exiftool C<-g3>
+        ODF, ODG, ODI, ODP, ODS and ODT), iWork (KEY, PAGES, NUMBERS), Capture One
+        Enhanced Image Package (EIP), Adobe InDesign Markup Language (IDML), and
+        Electronic Publication (EPUB).  The ExifTool family 3 groups may be used to
+        organize ZIP tags by embedded document number (ie. the exiftool C<-g3>
         option).
     },
     2 => 'ZipRequiredVersion',
@@ -364,7 +366,7 @@ sub HandleMember($$;$)
 }
 
 #------------------------------------------------------------------------------
-# Extract information from an ZIP file
+# Extract information from a ZIP file
 # Inputs: 0) ExifTool object reference, 1) dirInfo reference
 # Returns: 1 on success, 0 if this wasn't a valid ZIP file
 sub ProcessZIP($$)
@@ -432,7 +434,7 @@ sub ProcessZIP($$)
 
         # check for an Office Open file (DOCX, etc)
         # --> read '[Content_Types].xml' to determine the file type
-        my ($mime, @members);
+        my ($mime, @members, $epub);
         my $cType = $zip->memberNamed('[Content_Types].xml');
         if ($cType) {
             ($buff, $status) = $zip->contents($cType);
@@ -466,7 +468,7 @@ sub ProcessZIP($$)
             last;
         }
 
-        # check for an Open Document or IDML file
+        # check for an Open Document, IDML or EPUB file
         my $mType = $zip->memberNamed('mimetype');
         if ($mType) {
             ($mime, $status) = $zip->contents($mType);
@@ -474,7 +476,7 @@ sub ProcessZIP($$)
                 # clean up MIME type just in case (note that MIME is case insensitive)
                 $mime = lc $1;
                 $et->SetFileType($openDocType{$mime} || 'ZIP', $mime);
-                $et->Warn('Unrecognized MIMEType') unless $openDocType{$mime};
+                $et->Warn("Unrecognized MIMEType $mime") unless $openDocType{$mime};
                 # extract Open Document metadata from "meta.xml"
                 my $meta = $zip->memberNamed('meta.xml');
                 # IDML files have metadata in a different place (ref 6)
@@ -486,11 +488,44 @@ sub ProcessZIP($$)
                             DataPt => \$buff,
                             DirLen => length $buff,
                             DataLen => length $buff,
+                            NoStruct => 1,  # (avoid structure warnings when copying)
                         );
-                        my $xmpTable = GetTagTable('Image::ExifTool::XMP::Main');
-                        $et->ProcessDirectory(\%dirInfo, $xmpTable);
+                        $et->ProcessDirectory(\%dirInfo, GetTagTable('Image::ExifTool::XMP::Main'));
                     }
                 }
+                # process rootfile of EPUB container if applicable
+                for (;;) {
+                    last if $meta and $mime ne 'application/epub+zip';
+                    my $container = $zip->memberNamed('META-INF/container.xml');
+                    ($buff, $status) = $zip->contents($container);
+                    last if $status;
+                    $buff =~ /<rootfile\s+[^>]*?\bfull-path=(['"])(.*?)\1/s or last;
+                    # load the rootfile data (OPF extension; contains XML metadata)
+                    my $meta2 = $zip->memberNamed($2) or last;
+                    $meta = $meta2;
+                    ($buff, $status) = $zip->contents($meta);
+                    last if $status;
+                    # use opf:event to generate more meaningful tag names for dc:date
+                    while ($buff =~ s{<dc:date opf:event="(\w+)">([^<]+)</dc:date>}{<dc:${1}Date>$2</dc:${1}Date>}s) {
+                        my $dcTable = GetTagTable('Image::ExifTool::XMP::dc');
+                        my $tag = "${1}Date";
+                        AddTagToTable($dcTable, $tag, {
+                            Name => ucfirst $tag,
+                            Groups => { 2 => 'Time' },
+                            List => 'Seq',
+                            %Image::ExifTool::XMP::dateTimeInfo
+                        }) unless $$dcTable{$tag};
+                    }
+                    my %dirInfo = (
+                        DataPt => \$buff,
+                        DirLen => length $buff,
+                        DataLen => length $buff,
+                        NoStruct => 1,
+                        IgnoreProp => { 'package' => 1, metadata => 1 },
+                    );
+                    $et->ProcessDirectory(\%dirInfo, GetTagTable('Image::ExifTool::XMP::XML'));
+                    last;
+                }
                 if ($openDocType{$mime} or $meta) {
                     # extract preview image(s) from "Thumbnails" directory if they exist
                     my $type;
@@ -592,7 +627,10 @@ This module is used by Image::ExifTool
 
 This module contains definitions required by Image::ExifTool to extract meta
 information from ZIP, GZIP and RAR archives.  This includes ZIP-based file
-types like DOCX, PPTX, XLSX, ODB, ODC, ODF, ODG, ODI, ODP, ODS, ODT and EIP.
+types like Office Open XML (DOCX, PPTX and XLSX), Open Document (ODB, ODC,
+ODF, ODG, ODI, ODP, ODS and ODT), iWork (KEY, PAGES, NUMBERS), Capture One
+Enhanced Image Package (EIP), Adobe InDesign Markup Language (IDML), and
+Electronic Publication (EPUB).
 
 =head1 AUTHOR
 
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
             %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
             %jpegMarker %specialTags);
 
-$VERSION = '9.60';
+$VERSION = '9.70';
 $RELEASE = '';
 @ISA = qw(Exporter);
 %EXPORT_TAGS = (
@@ -43,7 +43,7 @@ $RELEASE = '';
         Get16s Get32u Get32s Get64u GetFloat GetDouble GetFixed32s Write
         WriteValue Tell Set8u Set8s Set16u Set32u
     )],
-    Utils => [qw(GetTagTable TagTableKeys GetTagInfoList AddTagToTable)],
+    Utils => [qw(GetTagTable TagTableKeys GetTagInfoList AddTagToTable HexDump)],
     Vars  => [qw(%allTables @tableOrder @fileTypes)],
 );
 @EXPORT_OK = qw(Open);
@@ -122,15 +122,16 @@ sub ReadValue($$$$$;$);
 # automatically).  Note: They will appear in this order in the documentation
 # unless tweaked in BuildTagLookup::GetTableOrder().
 @loadAllTables = qw(
-    PhotoMechanic Exif GeoTiff CanonRaw KyoceraRaw MinoltaRaw PanasonicRaw
+    PhotoMechanic Exif GeoTiff CanonRaw KyoceraRaw Lytro MinoltaRaw PanasonicRaw
     SigmaRaw JPEG GIMP Jpeg2000 GIF BMP BMP::OS2 PICT PNG MNG DjVu DPX OpenEXR
     MIFF PGF PSP PhotoCD Radiance PDF PostScript Photoshop::Header FujiFilm::RAF
     FujiFilm::IFD Sony::SRF2 Sony::SR2SubIFD Sony::PMP ITC ID3 Vorbis Ogg APE
     APE::NewHeader APE::OldHeader MPC MPEG::Audio MPEG::Video MPEG::Xing M2TS
     QuickTime QuickTime::ImageFile Matroska MXF DV Flash Flash::FLV Real::Media
-    Real::Audio Real::Metafile RIFF AIFF ASF DICOM MIE HTML XMP::SVG Torrent EXE
-    EXE::PEVersion EXE::PEString EXE::MachO EXE::PEF EXE::ELF EXE::CHM LNK Font
-    RSRC Rawzor ZIP ZIP::GZIP ZIP::RAR RTF OOXML iWork FLIR::AFF FLIR::FPF
+    Real::Audio Real::Metafile RIFF AIFF ASF DICOM MIE HTML XMP::SVG Palm
+    Palm::MOBI Palm::EXTH Torrent EXE EXE::PEVersion EXE::PEString EXE::MachO
+    EXE::PEF EXE::ELF EXE::CHM LNK Font RSRC Rawzor ZIP ZIP::GZIP ZIP::RAR RTF
+    OOXML iWork FLIR::AFF FLIR::FPF
 );
 
 # alphabetical list of current Lang modules
@@ -165,9 +166,9 @@ $defaultLang = 'en';    # default language
 # 2) Put types with weak file signatures at end of list to avoid false matches
 @fileTypes = qw(JPEG CRW TIFF GIF MRW RAF X3F JP2 PNG MIE MIFF PS PDF PSD XMP
                 BMP PPM RIFF AIFF ASF MOV MPEG Real SWF PSP FLV OGG FLAC APE MPC
-                MKV MXF DV PMP IND PGF ICC ITC FLIR FPF HTML VRD RTF XCF QTIF
-                FPX PICT ZIP GZIP PLIST RAR BZ2 TAR RWZ EXE EXR HDR CHM LNK WMF
-                AVC DEX DPX RAW Font RSRC M2TS PHP Torrent MP3 DICM PCD);
+                MKV MXF DV PMP IND PGF ICC ITC FLIR FPF LFP HTML VRD RTF XCF
+                QTIF FPX PICT ZIP GZIP PLIST RAR BZ2 TAR RWZ EXE EXR HDR CHM LNK
+                WMF AVC DEX DPX RAW Font RSRC M2TS PHP Torrent PDB MP3 DICM PCD);
 
 # file types that we can write (edit)
 my @writeTypes = qw(JPEG TIFF GIF CRW MRW ORF RAF RAW PNG MIE PSD XMP PPM
@@ -208,6 +209,8 @@ my %fileTypeLookup = (
     ASF  => ['ASF',  'Microsoft Advanced Systems Format'],
     AVC  => ['AVC',  'Advanced Video Connection'], # (extensions are actually _AU,_AD,_IM,_ID)
     AVI  => ['RIFF', 'Audio Video Interleaved'],
+    AZW  =>  'MOBI', # (see http://wiki.mobileread.com/wiki/AZW)
+    AZW3 =>  'MOBI',
     BMP  => ['BMP',  'Windows Bitmap'],
     BTF  => ['BTF',  'Big Tagged Image File Format'], #(unofficial)
     BZ2  => ['BZ2',  'BZIP2 archive'],
@@ -249,6 +252,7 @@ my %fileTypeLookup = (
     EPS2 =>  'EPS',
     EPS3 =>  'EPS',
     EPSF =>  'EPS',
+    EPUB => ['ZIP',  'Electronic Publication'],
     ERF  => ['TIFF', 'Epson Raw Format'],
     EXE  => ['EXE',  'Windows executable file'],
     EXR  => ['EXR', 'Open EXR'],
@@ -261,7 +265,7 @@ my %fileTypeLookup = (
     FFF  => [['TIFF','FLIR'], 'Hasselblad Flexible File Format'],
     FLAC => ['FLAC', 'Free Lossless Audio Codec'],
     FLA  => ['FPX',  'Macromedia/Adobe Flash project'],
-    FLIR => ['FLIR', 'FLIR File Format'],
+    FLIR => ['FLIR', 'FLIR File Format'], # (not an actual extension)
     FLV  => ['FLV',  'Flash Video'],
     FPF  => ['FPF',  'FLIR Public image Format'],
     FPX  => ['FPX',  'FlashPix'],
@@ -298,6 +302,7 @@ my %fileTypeLookup = (
     KEY  => ['ZIP',  'Apple Keynote presentation'],
     KTH  => ['ZIP',  'Apple Keynote Theme'],
     LA   => ['RIFF', 'Lossless Audio'],
+    LFP  => ['LFP',  'Lytro Light Field Picture'],
     LNK  => ['LNK',  'Windows shortcut'],
     M2T  =>  'M2TS',
     M2TS => ['M2TS', 'MPEG-2 Transport Stream'],
@@ -314,6 +319,7 @@ my %fileTypeLookup = (
     MKS  => ['MKV',  'Matroska Subtitle'],
     MKV  => ['MKV',  'Matroska Video'],
     MNG  => ['PNG',  'Multiple-image Network Graphics'],
+    MOBI => ['PDB',  'Mobipocket electronic book'],
     MODD => ['PLIST','Sony Picture Motion metadata'],
     MOS  => ['TIFF', 'Creo Leaf Mosaic'],
     MOV  => ['MOV',  'Apple QuickTime movie'],
@@ -351,6 +357,7 @@ my %fileTypeLookup = (
     PBM  => ['PPM',  'Portable BitMap'],
     PCD  => ['PCD',  'Kodak Photo CD Image Pac'],
     PCT  =>  'PICT',
+    PDB  => ['PDB',  'Palm Database'],
     PDF  => ['PDF',  'Adobe Portable Document Format'],
     PEF  => ['TIFF', 'Pentax (RAW) Electronic Format'],
     PFA  => ['Font', 'PostScript Font ASCII'],
@@ -378,11 +385,12 @@ my %fileTypeLookup = (
     PPT  => ['FPX',  'Microsoft PowerPoint Presentation'],
     PPTM => [['ZIP','FPX'], 'Office Open XML Presentation Macro-enabled'],
     PPTX => [['ZIP','FPX'], 'Office Open XML Presentation'],
+    PRC  => ['PDB',  'Palm Database'],
     PS   => ['PS',   'PostScript'],
     PS2  =>  'PS',
     PS3  =>  'PS',
     PSB  => ['PSD',  'Photoshop Large Document'],
-    PSD  => ['PSD',  'Photoshop Drawing'],
+    PSD  => ['PSD',  'Photoshop Document'],
     PSP  => ['PSP',  'Paint Shop Pro'],
     PSPFRAME => 'PSP',
     PSPIMAGE => 'PSP',
@@ -465,7 +473,7 @@ my %fileDescription = (
 
 # MIME types for applicable file types above
 # (missing entries default to 'application/unknown', but note that other MIME
-#  types may be specified by some modules, ie. QuickTime.pm and RIFF.pm)
+#  types may be specified by some modules, eg. QuickTime.pm and RIFF.pm)
 %mimeType = (
    '3FR' => 'image/x-hasselblad-3fr',
     AI   => 'application/vnd.adobe.illustrator',
@@ -525,6 +533,7 @@ my %fileDescription = (
     JPX  => 'image/jpx',
     K25  => 'image/x-kodak-k25',
     KDC  => 'image/x-kodak-kdc',
+    LFP  => 'image/x-lytro-lfp', #PH (NC)
     LNK  => 'application/octet-stream',
     M2T  => 'video/mpeg',
     M2TS => 'video/m2ts',
@@ -535,6 +544,7 @@ my %fileDescription = (
     MKS  => 'application/x-matroska',
     MKV  => 'video/x-matroska',
     MNG  => 'video/mng',
+    MOBI => 'application/x-mobipocket-ebook',
     MOS  => 'image/x-raw',
     MOV  => 'video/quicktime',
     MP3  => 'audio/mpeg',
@@ -559,6 +569,7 @@ my %fileDescription = (
     ORF  => 'image/x-olympus-orf',
     OTF  => 'application/x-font-otf',
     PBM  => 'image/x-portable-bitmap',
+    PDB  => 'application/vnd.palm',
     PDF  => 'application/pdf',
     PEF  => 'image/x-pentax-pef',
     PGF  => 'image/pgf',
@@ -656,12 +667,14 @@ my %moduleName = (
     HDR  => 'Radiance',
     JP2  => 'Jpeg2000',
     JPEG => '',
+    LFP  => 'Lytro',
     MOV  => 'QuickTime',
     MKV  => 'Matroska',
     MP3  => 'ID3',
     MRW  => 'MinoltaRaw',
     OGG  => 'Ogg',
     ORF  => 'Olympus',
+    PDB  => 'Palm',
     PCD  => 'PhotoCD',
     PHP  => 0,
     PMP  => 'Sony',
@@ -722,6 +735,7 @@ my %moduleName = (
     ITC  => '.{4}itch',
     JP2  => '(\0\0\0\x0cjP(  |\x1a\x1a)\x0d\x0a\x87\x0a|\xff\x4f\xff\x51\0)',
     JPEG => '\xff(\xd8\xff|\x01Exiv2)', # (includes EXV so we don't have to add EXV to @fileTypes)
+    LFP  => '\x89LFP\x0d\x0a\x1a\x0a',
     LNK  => '.{4}\x01\x14\x02\0{5}\xc0\0{6}\x46',
     M2TS => '(....)?\x47',
     MIE  => '~[\x10\x18]\x04.0MIE',
@@ -735,6 +749,7 @@ my %moduleName = (
     MXF  => '\x06\x0e\x2b\x34\x02\x05\x01\x01\x0d\x01\x02', # (not tested if extension recognized)
     OGG  => '(OggS|ID3)',
     ORF  => '(II|MM)',
+    PDB  => '.{60}(\.pdfADBE|TEXtREAd|BVokBDIC|DB99DBOS|PNRdPPrs|DataPPrs|vIMGView|PmDBPmDB|InfoINDB|ToGoToGo|SDocSilX|JbDbJBas|JfDbJFil|DATALSdb|Mdb1Mdb1|BOOKMOBI|DataPlkr|DataSprd|SM01SMem|TEXtTlDc|InfoTlIf|DataTlMl|DataTlPt|dataTDBP|TdatTide|ToRaTRPW|zTXTGPlm|BDOCWrdS)',
   # PCD  =>  signature is at byte 2048
     PDF  => '%PDF-\d+\.\d+',
     PGF  => 'PGF',
@@ -898,8 +913,20 @@ sub DummyWriteProc { return 1; }
         Protected => 1,
         Notes => q{
             may be written with a full path name to set FileName and Directory in one
-            operation.  See L<filename.html|../filename.html> for more information on
-            writing the FileName and Directory tags
+            operation.  This is such a powerful feature that a TestName tag is provided
+            to allow dry-run tests before actually writing the file name. See
+            L<filename.html|../filename.html> for more information on writing the
+            FileName, Directory and TestName tags
+        },
+        ValueConvInv => '$val=~tr/\\\\/\//; $val',
+    },
+    TestName => {
+        Writable => 1,
+        WriteOnly => 1,
+        Notes => q{
+            this write-only tag may be used instead of FileName for dry-run tests of the
+            file renaming feature.  Writing this tag prints the old and new file names
+            to the console, but does not affect the file itself
         },
         ValueConvInv => '$val=~tr/\\\\/\//; $val',
     },
@@ -1007,7 +1034,7 @@ sub DummyWriteProc { return 1; }
         Notes => q{
             r=read, w=write and x=execute permissions for the file owner, group and
             others.  The ValueConv value is an octal number so bit test operations on
-            this value should be done in octal, ie. 'oct($filePermissions#) & 0200'
+            this value should be done in octal, eg. 'oct($filePermissions#) & 0200'
         },
         ValueConv => 'sprintf("%.3o", $val & 0777)',
         PrintConv => sub {
@@ -1040,7 +1067,7 @@ sub DummyWriteProc { return 1; }
     ImageHeight => { },
     XResolution => { },
     YResolution => { },
-    MaxVal      => { }, # max pixel value in PPM or PGM image
+    MaxVal      => { Notes => 'maximum pixel value in PPM or PGM image' },
     EXIF => {
         Notes => 'the full EXIF data block from JPEG, PNG, JP2, MIE and MIFF images',
         Groups => { 0 => 'EXIF', 1 => 'EXIF' },
@@ -1173,7 +1200,7 @@ sub DummyWriteProc { return 1; }
     Now => {
         Groups => { 0 => 'ExifTool', 1 => 'ExifTool', 2 => 'Time' },
         Notes => q{
-            the current date/time.  Useful when setting the tag values, ie.
+            the current date/time.  Useful when setting the tag values, eg.
             C<"-modifydate<now">.  Not generated unless specifically requested
         },
         PrintConv => '$self->ConvertDateTime($val)',
@@ -2322,7 +2349,7 @@ sub GetValue($$;$)
                         }
                     } else {
                         if ($$conv{BITMASK}) {
-                            $value = DecodeBits($val, $$conv{BITMASK});
+                            $value = DecodeBits($val, $$conv{BITMASK}, $$tagInfo{BitsPerWord});
                             # override with localized language strings
                             if (defined $value and $$self{CUR_LANG} and $convType eq 'PrintConv' and
                                 ref($lc = $$self{CUR_LANG}{$$tagInfo{Name}}) eq 'HASH' and
@@ -2506,7 +2533,7 @@ sub GetDescription($$)
 # Returns: Scalar context: Group name (for family 0 if not otherwise specified)
 #          Array context: Group name if family specified, otherwise list of
 #          group names for each family.  Returns '' for undefined tag.
-# Notes: Mutiple families may be specified with ':' in family argument (ie. '1:2')
+# Notes: Mutiple families may be specified with ':' in family argument (eg. '1:2')
 sub GetGroup($$;$)
 {
     local $_;
@@ -2562,7 +2589,7 @@ sub GetGroup($$;$)
     if ($family) {
         return $groups[$family] || '' if $family > 0;
         # add additional matching group names to list
-        # ie) for MIE-Doc, also add MIE1, MIE1-Doc, MIE-Doc1 and MIE1-Doc1
+        # eg) for MIE-Doc, also add MIE1, MIE1-Doc, MIE-Doc1 and MIE1-Doc1
         # and for MIE2-Doc3, also add MIE2, MIE-Doc3, MIE2-Doc and MIE-Doc
         if ($groups[1] =~ /^MIE(\d*)-(.+?)(\d*)$/) {
             push @groups, 'MIE' . ($1 || '1');
@@ -2679,7 +2706,12 @@ COMPOSITE_TAG:
                 my (%tagKey, $found, $index);
                 # save Require'd and Desire'd tag values in list
                 for ($index=0; ; ++$index) {
-                    my $reqTag = $$require{$index} || $$desire{$index} || $$inhibit{$index} or last;
+                    my $reqTag = $$require{$index} || $$desire{$index} || $$inhibit{$index};
+                    unless ($reqTag) {
+                        # allow Composite with no Require'd or Desire'd tags
+                        $found = 1 if $index == 0;
+                        last;
+                    }
                     # add family 3 group if generating Composite tags for sub-documents
                     # (unless tag already begins with family 3 group name)
                     if ($subDoc and $reqTag !~ /^(Main|Doc\d+):/) {
@@ -2977,9 +3009,8 @@ sub ParseArguments($;@)
 {
     my $self = shift;
     my $options = $$self{OPTIONS};
-    my @exclude;
     my @oldGroupOpts = grep /^Group/, keys %{$$self{OPTIONS}};
-    my $wasExcludeOpt;
+    my (@exclude, $wasExcludeOpt);
 
     $$self{REQUESTED_TAGS}  = [ ];
     $$self{REQ_TAG_LOOKUP}  = { };
@@ -3063,6 +3094,8 @@ sub ParseArguments($;@)
         foreach (@{$$options{Exclude}}) {
             /([-\w]+)#?$/ and $$self{EXCL_TAG_LOOKUP}{lc($1)} = 1;
         }
+        # exclude list is used only for EXCL_TAG_LOOKUP when TAGS_FROM_FILE is set
+        undef $$options{Exclude} if $$self{TAGS_FROM_FILE};
     }
 }
 
@@ -3078,7 +3111,7 @@ sub GroupMatches($$$)
     $tagList = [ $tagList ] unless ref $tagList;
     my ($tag, @matches);
     if ($group =~ /:/) {
-        # check each group name individually (ie. "Author:1IPTC")
+        # check each group name individually (eg. "Author:1IPTC")
         my @grps = split ':', lc $group;
         my (@fmys, $g);
         for ($g=0; $g<@grps; ++$g) {
@@ -3361,6 +3394,8 @@ sub DoAutoLoad(@)
     if (@callInfo == 4) {
         # load Image/ExifTool/WriteMODULE.pl
         $file .= "$callInfo[2].pl";
+    } elsif ($callInfo[-1] eq 'ShiftTime') {
+        $file = 'Image/ExifTool/Shift.pl';  # load Shift.pl
     } else {
         # load Image/ExifTool/Writer.pl
         $file .= 'r.pl';
@@ -4248,7 +4283,6 @@ sub ConvertDateTime($$)
     my $shift = $$self{OPTIONS}{GlobalTimeShift};
     if ($shift) {
         my $dir = ($shift =~ s/^([-+])// and $1 eq '-') ? -1 : 1;
-        require 'Image/ExifTool/Shift.pl';
         my $offset = $$self{GLOBAL_TIME_OFFSET};
         $offset or $offset = $$self{GLOBAL_TIME_OFFSET} = { };
         ShiftTime($date, $shift, $dir, $offset);
@@ -5727,7 +5761,7 @@ sub DoProcessTIFF($$;$)
                 $$trailInfo{ScanForAFCP} = 1;   # scan to find AFCP if necessary
                 $self->ProcessTrailers($trailInfo);
             }
-            # dump any other known trailer (ie. A100 RAW Data)
+            # dump any other known trailer (eg. A100 RAW Data)
             if ($$self{HTML_DUMP} and $$self{KnownTrailer}) {
                 my $known = $$self{KnownTrailer};
                 $raf->Seek(0, 2);
@@ -6790,6 +6824,9 @@ sub ProcessBinaryData($$$)
                     if ($$dirInfo{VarFormatData}) {
                         push @{$$dirInfo{VarFormatData}}, [ $index, $varSize, $format ];
                     }
+                    # don't extract value if large and we wanted it just to get
+                    # the variable-format information when writing
+                    next if $$tagInfo{LargeTag} and $$dirInfo{VarFormatData};
                 }
             } elsif ($format =~ /^var_/) {
                 # handle variable-length string formats
@@ -6846,6 +6883,9 @@ sub ProcessBinaryData($$$)
             $saveNextIndex = $nextIndex;
             $nextIndex = $ni unless $nextIndex > $ni;
         }
+        # allow large tags to be excluded from extraction
+        # (provides a work-around for some tight memory situations)
+        next if $$tagInfo{LargeTag} and $$self{EXCL_TAG_LOOKUP}{lc $$tagInfo{Name}};
         # read value now if necessary
         unless (defined $val and not $$tagInfo{SubDirectory}) {
             $val = ReadValue($dataPt, $entry+$offset, $format, $count, $more, \$rational);
@@ -65,38 +65,39 @@ supported by ExifTool (r = read, w = write, c = create):
 
   File Types
   ------------+-------------+-------------+-------------+------------
-  3FR   r     | EIP   r     | LA    r     | OTF   r     | RW2   r/w
-  3G2   r/w   | EPS   r/w   | LNK   r     | PAC   r     | RWL   r/w
-  3GP   r/w   | ERF   r/w   | M2TS  r     | PAGES r     | RWZ   r
-  ACR   r     | EXE   r     | M4A/V r/w   | PBM   r/w   | RM    r
-  AFM   r     | EXIF  r/w/c | MEF   r/w   | PCD   r     | SEQ   r
-  AI    r/w   | EXR   r     | MIE   r/w/c | PDF   r/w   | SO    r
-  AIFF  r     | EXV   r/w/c | MIFF  r     | PEF   r/w   | SR2   r/w
-  APE   r     | F4A/V r/w   | MKA   r     | PFA   r     | SRF   r
-  ARW   r/w   | FFF   r/w   | MKS   r     | PFB   r     | SRW   r/w
-  ASF   r     | FLA   r     | MKV   r     | PFM   r     | SVG   r
-  AVI   r     | FLAC  r     | MNG   r/w   | PGF   r     | SWF   r
-  BMP   r     | FLV   r     | MODD  r     | PGM   r/w   | THM   r/w
-  BTF   r     | FPF   r     | MOS   r/w   | PLIST r     | TIFF  r/w
-  CHM   r     | FPX   r     | MOV   r/w   | PICT  r     | TORRENT r
-  COS   r     | GIF   r/w   | MP3   r     | PMP   r     | TTC   r
-  CR2   r/w   | GZ    r     | MP4   r/w   | PNG   r/w   | TTF   r
-  CRW   r/w   | HDP   r/w   | MPC   r     | PPM   r/w   | VRD   r/w/c
-  CS1   r/w   | HDR   r     | MPG   r     | PPT   r     | VSD   r
-  DCM   r     | HTML  r     | MPO   r/w   | PPTX  r     | WAV   r
-  DCP   r/w   | ICC   r/w/c | MQV   r/w   | PS    r/w   | WDP   r/w
-  DCR   r     | IDML  r     | MRW   r/w   | PSB   r/w   | WEBP  r
-  DFONT r     | IIQ   r/w   | MXF   r     | PSD   r/w   | WEBM  r
-  DIVX  r     | IND   r/w   | NEF   r/w   | PSP   r     | WMA   r
-  DJVU  r     | INX   r     | NRW   r/w   | QTIF  r/w   | WMV   r
-  DLL   r     | ITC   r     | NUMBERS r   | RA    r     | WV    r
-  DNG   r/w   | J2C   r     | ODP   r     | RAF   r/w   | X3F   r/w
-  DOC   r     | JNG   r/w   | ODS   r     | RAM   r     | XCF   r
-  DOCX  r     | JP2   r/w   | ODT   r     | RAR   r     | XLS   r
-  DPX   r     | JPEG  r/w   | OFR   r     | RAW   r/w   | XLSX  r
-  DV    r     | K25   r     | OGG   r     | RIFF  r     | XMP   r/w/c
-  DVB   r/w   | KDC   r     | OGV   r     | RSRC  r     | ZIP   r
-  DYLIB r     | KEY   r     | ORF   r/w   | RTF   r     |
+  3FR   r     | EIP   r     | LA    r     | ORF   r/w   | RTF   r
+  3G2   r/w   | EPS   r/w   | LFP   r     | OTF   r     | RW2   r/w
+  3GP   r/w   | EPUB  r     | LNK   r     | PAC   r     | RWL   r/w
+  ACR   r     | ERF   r/w   | M2TS  r     | PAGES r     | RWZ   r
+  AFM   r     | EXE   r     | M4A/V r/w   | PBM   r/w   | RM    r
+  AI    r/w   | EXIF  r/w/c | MEF   r/w   | PCD   r     | SEQ   r
+  AIFF  r     | EXR   r     | MIE   r/w/c | PDB   r     | SO    r
+  APE   r     | EXV   r/w/c | MIFF  r     | PDF   r/w   | SR2   r/w
+  ARW   r/w   | F4A/V r/w   | MKA   r     | PEF   r/w   | SRF   r
+  ASF   r     | FFF   r/w   | MKS   r     | PFA   r     | SRW   r/w
+  AVI   r     | FLA   r     | MKV   r     | PFB   r     | SVG   r
+  AZW   r     | FLAC  r     | MNG   r/w   | PFM   r     | SWF   r
+  BMP   r     | FLV   r     | MOBI  r     | PGF   r     | THM   r/w
+  BTF   r     | FPF   r     | MODD  r     | PGM   r/w   | TIFF  r/w
+  CHM   r     | FPX   r     | MOS   r/w   | PLIST r     | TORRENT r
+  COS   r     | GIF   r/w   | MOV   r/w   | PICT  r     | TTC   r
+  CR2   r/w   | GZ    r     | MP3   r     | PMP   r     | TTF   r
+  CRW   r/w   | HDP   r/w   | MP4   r/w   | PNG   r/w   | VRD   r/w/c
+  CS1   r/w   | HDR   r     | MPC   r     | PPM   r/w   | VSD   r
+  DCM   r     | HTML  r     | MPG   r     | PPT   r     | WAV   r
+  DCP   r/w   | ICC   r/w/c | MPO   r/w   | PPTX  r     | WDP   r/w
+  DCR   r     | IDML  r     | MQV   r/w   | PS    r/w   | WEBP  r
+  DFONT r     | IIQ   r/w   | MRW   r/w   | PSB   r/w   | WEBM  r
+  DIVX  r     | IND   r/w   | MXF   r     | PSD   r/w   | WMA   r
+  DJVU  r     | INX   r     | NEF   r/w   | PSP   r     | WMV   r
+  DLL   r     | ITC   r     | NRW   r/w   | QTIF  r/w   | WV    r
+  DNG   r/w   | J2C   r     | NUMBERS r   | RA    r     | X3F   r/w
+  DOC   r     | JNG   r/w   | ODP   r     | RAF   r/w   | XCF   r
+  DOCX  r     | JP2   r/w   | ODS   r     | RAM   r     | XLS   r
+  DPX   r     | JPEG  r/w   | ODT   r     | RAR   r     | XLSX  r
+  DV    r     | K25   r     | OFR   r     | RAW   r/w   | XMP   r/w/c
+  DVB   r/w   | KDC   r     | OGG   r     | RIFF  r     | ZIP   r
+  DYLIB r     | KEY   r     | OGV   r     | RSRC  r     |
 
   Meta Information
   ----------------------+----------------------+---------------------
@@ -153,10 +154,11 @@ versions.
 
 None of these methods should ever die or issue warnings to STDERR if called
 with the proper arguments (with the exception of L</SetNewValue> which may
-send an error message to STDERR, but only when called in scalar context). 
+send an error message to STDERR, but only when called in scalar context).
 Error and warning messages that occur during processing are stored in the
 values of the Error and Warning tags, and are accessible via the
-L</GetValue> method.
+L</GetValue> method to retrieve a single Error or Warning message, or
+L</GetInfo> to retrieve any number of them.
 
 The ExifTool methods are not thread safe.
 
@@ -168,7 +170,7 @@ Creates a new ExifTool object.
 
 Note that ExifTool uses AUTOLOAD to load non-member methods, so any class
 using Image::ExifTool as a base class must define an AUTOLOAD which calls
-Image::ExifTool::DoAutoLoad().  ie)
+Image::ExifTool::DoAutoLoad().  eg)
 
     sub AUTOLOAD
     {
@@ -230,15 +232,15 @@ reference (SCALAR ref).  The remaining scalar arguments are names of tags
 for requested information.  All tags are returned if no tags are specified.
 
 Tag names are case-insensitive and may be prefixed by optional group names
-separated by colons.  A group name may begin with a family number (ie.
+separated by colons.  A group name may begin with a family number (eg.
 '1IPTC:Keywords'), to restrict matches to a specific family.  In the tag
 name, a '?' matches any single character and a '*' matches zero or more
 characters.  Thus 'GROUP:*' represents all tags in a specific group. 
 Wildcards may not be used in group names, with the exception that a group
 name of '*' may be used to extract all available instances of a tag
-regardless of the L</Duplicates> setting (ie. '*:WhiteBalance').  Multiple
-groups may be specified (ie. 'EXIF:Time:*' extracts all EXIF Time tags). And
-finally, a leading '-' indicates a tag to be excluded (ie. '-IFD1:*'), or a
+regardless of the L</Duplicates> setting (eg. '*:WhiteBalance').  Multiple
+groups may be specified (eg. 'EXIF:Time:*' extracts all EXIF Time tags). And
+finally, a leading '-' indicates a tag to be excluded (eg. '-IFD1:*'), or a
 trailing '#' causes the ValueConv value to be returned for this tag.
 
 Note that keys in the returned information hash and elements of the returned
@@ -262,7 +264,7 @@ reference to a L<File::RandomAccess|File::RandomAccess> object.  Note that
 the file remains open and must be closed by the caller after L</ImageInfo>
 returns.
 
-[Advanced:  To allow a non-rewindable stream (ie. a network socket) to be
+[Advanced:  To allow a non-rewindable stream (eg. a network socket) to be
 re-read after processing with ExifTool, first wrap the file reference in a
 L<File::RandomAccess|File::RandomAccess> object, then pass this object to
 L</ImageInfo>.  The L<File::RandomAccess|File::RandomAccess> object will
@@ -353,8 +355,9 @@ the encodings.  By default, most returned strings are encoded in UTF-8.  For
 these, Encode::decode_utf8() may be used to convert to a sequence of logical
 Perl characters.
 
-As well as tags representing information extracted from the image,
-the following tags generated by ExifTool may be returned:
+As well as tags representing information extracted from the image, the
+following L<Extra tags|Image::ExifTool::TagNames/Extra Tags> generated by
+ExifTool may be returned:
 
     ExifToolVersion - The ExifTool version number.
 
@@ -416,7 +419,7 @@ in the full ExifTool distribution for examples.
 =item Binary
 
 Flag to extract the value data for all binary tags.  Tag values representing
-large binary data blocks (ie. ThumbnailImage) are not necessarily extracted
+large binary data blocks (eg. ThumbnailImage) are not necessarily extracted
 unless this option is set or the tag is specifically requested by name.
 Default is 0.
 
@@ -516,7 +519,7 @@ Format for printing GPS coordinates.  This is a printf format string with
 specifiers for degrees, minutes and seconds in that order, however minutes
 and seconds may be omitted.  If the hemisphere is known, a reference
 direction (N, S, E or W) is appended to each printed coordinate, but adding
-a C<+> to the format specifier (ie. C<%+.6f>) prints a signed coordinate
+a C<+> to the format specifier (eg. C<%+.6f>) prints a signed coordinate
 instead.  For example, the following table gives the output for the same
 coordinate using various formats:
 
@@ -571,7 +574,7 @@ this option set to 1, ExifTool will not scan to the end of a JPEG image to
 check for an AFCP, CanonVRD, FotoStation, PhotoMechanic, MIE or PreviewImage
 trailer.  This also stops the parsing after the first comment in GIF images,
 and at the audio/video data with RIFF-format files (AVI, WAV, etc), so any
-trailing metadata (ie. XMP written by some utilities) may be missed.  When
+trailing metadata (eg. XMP written by some utilities) may be missed.  When
 combined with the ScanForXMP option, prevents scanning for XMP in recognized
 file types.  With a value of 2, ExifTool will also avoid extracting any EXIF
 MakerNote information.  Default is 0.
@@ -664,7 +667,7 @@ warnings are denoted by "[minor]" at the start of the message, or "[Minor]"
 =item Lang
 
 Localized language for exiftool tag descriptions, etc.  Available languages
-are given by the Image::ExifTool::Lang module names (ie. 'fr', 'zh_cn').  If
+are given by the Image::ExifTool::Lang module names (eg. 'fr', 'zh_cn').  If
 the specified language isn't available, the option is not changed.  May be
 set to undef to select the built-in default language.  Default is 'en'.
 
@@ -687,7 +690,7 @@ is not set.  Default is ', '.
 =item ListSplit
 
 Regular expression used to split values of list-type tags into individual
-items when writing.  (ie. use ',\\s*' to split a comma-separated list.) 
+items when writing.  (eg. use ',\\s*' to split a comma-separated list.) 
 Default is undef.
 
 =item MakerNotes
@@ -826,9 +829,9 @@ list below.  Default is 'wcg'.
     c - Create new tags
     g - create new Groups as necessary
 
-The level of the group is the SubDirectory level in the metadata structure. 
-For XMP or IPTC this is the full XMP/IPTC block (the family 0 group), but
-for EXIF this is the individual IFD (the family 1 group).
+The level of the group differs for different types of metadata. For XMP or
+IPTC this is the full XMP/IPTC block (the family 0 group), but for EXIF this
+is the individual IFD (the family 1 group).
 
 =item XMPAutoConv
 
@@ -881,7 +884,7 @@ L</ExtractInfo>:
 Binary, Charset, CharsetEXIF, CharsetID3, CharsetIPTC, CharsetPhotoshop,
 CharsetQuickTime, Composite, ExtractEmbedded, FastScan, FixBase, HtmlDump,
 HtmlDumpBase, IgnoreMinorErrors, Lang, LargeFileSupport, MakerNotes,
-ScanForXMP, Struct, TextOut, Unknown and Verbose.
+PNGEarlyXMP, ScanForXMP, Struct, TextOut, Unknown and Verbose.
 
 =item Return Value:
 
@@ -899,6 +902,9 @@ L</ImageInfo>.
     # get image width and height only
     $info = $exifTool->GetInfo('ImageWidth', 'ImageHeight');
 
+    # get all Error and Warning messages
+    $info = $exifTool->GetInfo('Error', 'Warning');
+
     # get information for all tags in list (list updated with tags found)
     $info = $exifTool->GetInfo(\@ioTagList);
 
@@ -997,7 +1003,7 @@ called with a source file name.
 The following ExifTool options are effective in the call to L</WriteInfo>:
 
 ByteOrder, Charset, CharsetEXIF, CharsetIPTC, Compact, Compress, FixBase,
-IgnoreMinorErrors and Verbose.
+IgnoreMinorErrors, PNGEarlyXMP and Verbose.
 
 =head2 GetTagList
 
@@ -1233,9 +1239,9 @@ a description of the structure serialization technique.)
 
 1) [optional] Tag key or tag name, or undef to clear all new values.  The
 tag name may be prefixed by one or more family 0, 1 or 2 group names with
-optional leading family numbers, separated by colons (ie. 'EXIF:Artist',
+optional leading family numbers, separated by colons (eg. 'EXIF:Artist',
 'XMP:Time:*'), which is equivalent to using a Group option argument.  Also,
-a '#' may be appended to the tag name (ie. 'EXIF:Orientation#'), with the
+a '#' may be appended to the tag name (eg. 'EXIF:Orientation#'), with the
 same effect as setting Type to 'ValueConv'.  Wildcards ('*' and '?') may be
 used in the tag name to assign multiple tags simultaneously.  A tag name of
 '*' is special when deleting information, and will delete an entire group
@@ -1249,7 +1255,7 @@ complete list of tag names.
 a scalar, scalar reference, list reference to set a list of values, or hash
 reference for a structure.  Integer values may be specified as a hexadecimal
 string (with a leading '0x'), and simple rational values may be specified in
-fractional form (ie. '4/10').  Structure tags may be specified either as a
+fractional form (eg. '4/10').  Structure tags may be specified either as a
 hash reference or a serialized string (see the last two examples above).
 
 3-N) [optional] SetNewValue option/value pairs (see below).
@@ -1420,21 +1426,21 @@ in a specified file.
 2-N) [optional] List of tag names to set or options hash references.  All
 writable tags are set if none are specified.  The tag names are not case
 sensitive, and may be prefixed by one or more family 0, 1 or 2 group names with
-optional leading family numbers, separated by colons (ie. 'exif:iso').  A
-leading '-' indicates tags to be excluded (ie. '-comment'), or a trailing '#'
+optional leading family numbers, separated by colons (eg. 'exif:iso').  A
+leading '-' indicates tags to be excluded (eg. '-comment'), or a trailing '#'
 causes the ValueConv value to be copied (same as setting the Type option to
 'ValueConv' for this tag only).  Wildcards ('*' and '?') may be used in the tag
 name.  A tag name of '*' is commonly used when a group is specified to copy all
-tags in the group (ie. 'XMP:*').  A special feature allows tag names of the form
+tags in the group (eg. 'XMP:*').  A special feature allows tag names of the form
 'DSTTAGE<lt>SRCTAG' (or 'SRCTAGE<gt>DSTTAG') to be specified to copy information
 to a tag with a different name or a specified group.  Both 'SRCTAG' and 'DSTTAG'
-may contain wildcards and/or be prefixed by a group name (ie.
+may contain wildcards and/or be prefixed by a group name (eg.
 'fileModifyDateE<lt>modifyDate' or 'xmp:*E<lt>*'), and/or suffixed by a '#' to
 disable print conversion.  Copied tags may also be added or deleted from a list
 with arguments of the form 'DSTTAG+E<lt>SRCTAG' or 'DSTTAG-E<lt>SRCTAG'.  Tags
 are evaluated in order, so exclusions apply only to tags included earlier in the
 list.  An extension of this feature allows the tag value to be set from an
-expression containing tag names with leading '$' symbols (ie. 'CommentE<lt>the
+expression containing tag names with leading '$' symbols (eg. 'CommentE<lt>the
 file is $filename').  Braces '{}' may be used around the tag name to separate it
 from subsequent text, and a '$$' is used to to represent a '$' symbol.  The
 behaviour for missing tags in expressions is defined by the L</MissingTagValue>
@@ -1648,7 +1654,9 @@ precedence over any directory specified in FileName.
 
 2) [optional] New file name
 
-3) [optional] 'Link' to create a hard link instead of renaming the file
+3) [optional] 'Link' to create a hard link instead of renaming the file, or
+'Test' to test renaming feature by printing the old and new names instead of
+changing anything.
 
 =item Return Value:
 
@@ -1711,7 +1719,7 @@ Get the ID for the specified tag.  The ID is the IFD tag number in EXIF
 information, the property name in XMP information, or the data offset in a
 binary data block.  For some tags, such as Composite tags where there is no
 ID, an empty string is returned.  In list context, also returns a language
-code for the tag if available and different from the default language (ie.
+code for the tag if available and different from the default language (eg.
 with alternate language entries for XMP "lang-alt" tags).
 
     $id = $exifTool->GetTagID($tag);
@@ -1757,16 +1765,16 @@ A description for the specified tag.
 
 Get group name(s) for a specified tag.
 
-    # return family 0 group name (ie. 'EXIF');
+    # return family 0 group name (eg. 'EXIF');
     $group = $exifTool->GetGroup($tag, 0);
 
-    # return all groups (ie. qw{EXIF IFD0 Author Main})
+    # return all groups (eg. qw{EXIF IFD0 Author Main})
     @groups = $exifTool->GetGroup($tag);
 
-    # return groups as a string (ie. 'Main:IFD0:Author')
+    # return groups as a string (eg. 'Main:IFD0:Author')
     $group = $exifTool->GetGroup($tag, ':3:1:2');
 
-    # return groups as a simplified string (ie. 'IFD0:Author')
+    # return groups as a simplified string (eg. 'IFD0:Author')
     $group = $exifTool->GetGroup($tag, '3:1:2');
 
 =over 4
@@ -1792,11 +1800,11 @@ identical group names unless the family string begins with a colon.
 
 The group family numbers are currently available:
 
-    0) Information Type         (ie. EXIF, XMP, IPTC)
-    1) Specific Location        (ie. IFD0, XMP-dc)
-    2) Category                 (ie. Author, Time)
-    3) Document Number          (ie. Main, Doc1, Doc3-2)
-    4) Instance Number          (ie. Copy1, Copy2, Copy3...)
+    0) Information Type         (eg. EXIF, XMP, IPTC)
+    1) Specific Location        (eg. IFD0, XMP-dc)
+    2) Category                 (eg. Author, Time)
+    3) Document Number          (eg. Main, Doc1, Doc3-2)
+    4) Instance Number          (eg. Copy1, Copy2, Copy3...)
 
 Families 0 and 1 are based on the file structure, and are similar except
 that family 1 is more specific and sub-divides some groups to give more
@@ -1820,7 +1828,7 @@ Family 3 gives the document number for tags extracted from embedded
 documents, or 'Main' for tags from the main document.  (See the
 L</ExtractEmbedded> option for extracting tags from embedded documents.) 
 Nested sub-documents (if they exist) are indicated by numbers separated with
-dashes in the group name, to an arbitrary depth. (ie. 'Doc2-3-1' is the 1st
+dashes in the group name, to an arbitrary depth. (eg. 'Doc2-3-1' is the 1st
 sub-sub-document of the 3rd sub-document of the 2nd embedded document of the
 main file.)
 
@@ -2002,11 +2010,11 @@ AFCP, AIFF, APE, APP0, APP1, APP11, APP12, APP13, APP14, APP15, APP4, APP5,
 APP6, APP8, ASF, CanonVRD, Composite, DICOM, DNG, DV, DjVu, Ducky, EXE,
 EXIF, ExifTool, FLAC, FLIR, File, Flash, FlashPix, Font, FotoStation, GIF,
 GIMP, GeoTiff, H264, HTML, ICC_Profile, ID3, IPTC, ITC, JFIF, JPEG,
-Jpeg2000, LNK, Leaf, M2TS, MIE, MIFF, MNG, MPC, MPEG, MPF, MXF, MakerNotes,
-Matroska, Meta, Ogg, OpenEXR, PDF, PICT, PLIST, PNG, PSP, PanasonicRaw,
-PhotoCD, PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF,
-RIFF, RSRC, RTF, Radiance, Rawzor, Real, SVG, SigmaRaw, Stim, Theora,
-Torrent, Vorbis, XML, XMP, ZIP
+Jpeg2000, LNK, Leaf, Lytro, M2TS, MIE, MIFF, MNG, MPC, MPEG, MPF, MXF,
+MakerNotes, Matroska, Meta, Ogg, OpenEXR, PDF, PICT, PLIST, PNG, PSP, Palm,
+PanasonicRaw, PhotoCD, PhotoMechanic, Photoshop, PostScript, PrintIM,
+QuickTime, RAF, RIFF, RSRC, RTF, Radiance, Rawzor, Real, SVG, SigmaRaw,
+Stim, Theora, Torrent, Vorbis, XML, XMP, ZIP
 
 =item Family 1 (Specific Location):
 
@@ -2020,21 +2028,21 @@ ICC-header, ICC-meas, ICC-meta, ICC-view, ICC_Profile, ICC_Profile#, ID3,
 ID3v1, ID3v1_Enh, ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ITC,
 InteropIFD, JFIF, JPEG, JPEG-HDR, JVC, Jpeg2000, KDC_IFD, Kodak,
 KodakBordersIFD, KodakEffectsIFD, KodakIFD, KyoceraRaw, LNK, Leaf,
-LeafSubIFD, Leica, M2TS, MAC, MIE-Audio, MIE-Camera, MIE-Canon, MIE-Doc,
-MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo, MIE-Image, MIE-Lens, MIE-Main,
-MIE-MakerNotes, MIE-Meta, MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-UTM,
-MIE-Unknown, MIE-Video, MIFF, MNG, MPC, MPEG, MPF0, MPImage, MXF,
-MakerNotes, MakerUnknown, Matroska, MediaJukebox, MetaIFD, Microsoft,
+LeafSubIFD, Leica, Lytro, M2TS, MAC, MIE-Audio, MIE-Camera, MIE-Canon,
+MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo, MIE-Image, MIE-Lens,
+MIE-Main, MIE-MakerNotes, MIE-Meta, MIE-Orient, MIE-Preview, MIE-Thumbnail,
+MIE-UTM, MIE-Unknown, MIE-Video, MIFF, MNG, MOBI, MPC, MPEG, MPF0, MPImage,
+MXF, MakerNotes, MakerUnknown, Matroska, MediaJukebox, MetaIFD, Microsoft,
 Minolta, MinoltaRaw, NITF, Nikon, NikonCapture, NikonCustom, NikonScan,
-Nintendo, Ocad, Ogg, Olympus, OpenEXR, PDF, PICT, PNG, PSP, Panasonic,
-PanasonicRaw, Pentax, PhaseOne, PhotoCD, PhotoMechanic, Photoshop,
-PictureInfo, PostScript, PreviewIFD, PrintIM, ProfileIFD, Qualcomm,
-QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF, Radiance, Rawzor, Real,
-Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4, Real-RA5, Real-RJMD,
-Reconyx, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#, SVG, Samsung,
-Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD, System,
-Theora, Torrent, Track#, Version0, Vorbis, XML, XMP, XMP-DICOM, XMP-GPano,
-XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album,
+Nintendo, Ocad, Ogg, Olympus, OpenEXR, PDF, PICT, PNG, PNG-pHYs, PSP, Palm,
+Panasonic, PanasonicRaw, Pentax, PhaseOne, PhotoCD, PhotoMechanic,
+Photoshop, PictureInfo, PostScript, PreviewIFD, PrintIM, ProfileIFD,
+Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF, Radiance, Rawzor,
+Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4, Real-RA5,
+Real-RJMD, Reconyx, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#, SVG,
+Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD,
+System, Theora, Torrent, Track#, Version0, Vorbis, XML, XMP, XMP-DICOM,
+XMP-GPano, XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album,
 XMP-apple-fi, XMP-aux, XMP-cc, XMP-cell, XMP-crs, XMP-dc, XMP-dex,
 XMP-digiKam, XMP-dwc, XMP-exif, XMP-exifEX, XMP-expressionmedia,
 XMP-extensis, XMP-fpv, XMP-getty, XMP-ics, XMP-iptcCore, XMP-iptcExt,
@@ -1,6 +1,6 @@
 Summary: perl module for image data extraction
 Name: perl-Image-ExifTool
-Version: 9.60
+Version: 9.70
 Release: 1
 License: Artistic/GPL
 Group: Development/Libraries/Perl
@@ -22,38 +22,39 @@ supported by ExifTool (r = read, w = write, c = create):
 
   File Types
   ------------+-------------+-------------+-------------+------------
-  3FR   r     | EIP   r     | LA    r     | OTF   r     | RW2   r/w
-  3G2   r/w   | EPS   r/w   | LNK   r     | PAC   r     | RWL   r/w
-  3GP   r/w   | ERF   r/w   | M2TS  r     | PAGES r     | RWZ   r
-  ACR   r     | EXE   r     | M4A/V r/w   | PBM   r/w   | RM    r
-  AFM   r     | EXIF  r/w/c | MEF   r/w   | PCD   r     | SEQ   r
-  AI    r/w   | EXR   r     | MIE   r/w/c | PDF   r/w   | SO    r
-  AIFF  r     | EXV   r/w/c | MIFF  r     | PEF   r/w   | SR2   r/w
-  APE   r     | F4A/V r/w   | MKA   r     | PFA   r     | SRF   r
-  ARW   r/w   | FFF   r/w   | MKS   r     | PFB   r     | SRW   r/w
-  ASF   r     | FLA   r     | MKV   r     | PFM   r     | SVG   r
-  AVI   r     | FLAC  r     | MNG   r/w   | PGF   r     | SWF   r
-  BMP   r     | FLV   r     | MODD  r     | PGM   r/w   | THM   r/w
-  BTF   r     | FPF   r     | MOS   r/w   | PLIST r     | TIFF  r/w
-  CHM   r     | FPX   r     | MOV   r/w   | PICT  r     | TORRENT r
-  COS   r     | GIF   r/w   | MP3   r     | PMP   r     | TTC   r
-  CR2   r/w   | GZ    r     | MP4   r/w   | PNG   r/w   | TTF   r
-  CRW   r/w   | HDP   r/w   | MPC   r     | PPM   r/w   | VRD   r/w/c
-  CS1   r/w   | HDR   r     | MPG   r     | PPT   r     | VSD   r
-  DCM   r     | HTML  r     | MPO   r/w   | PPTX  r     | WAV   r
-  DCP   r/w   | ICC   r/w/c | MQV   r/w   | PS    r/w   | WDP   r/w
-  DCR   r     | IDML  r     | MRW   r/w   | PSB   r/w   | WEBP  r
-  DFONT r     | IIQ   r/w   | MXF   r     | PSD   r/w   | WEBM  r
-  DIVX  r     | IND   r/w   | NEF   r/w   | PSP   r     | WMA   r
-  DJVU  r     | INX   r     | NRW   r/w   | QTIF  r/w   | WMV   r
-  DLL   r     | ITC   r     | NUMBERS r   | RA    r     | WV    r
-  DNG   r/w   | J2C   r     | ODP   r     | RAF   r/w   | X3F   r/w
-  DOC   r     | JNG   r/w   | ODS   r     | RAM   r     | XCF   r
-  DOCX  r     | JP2   r/w   | ODT   r     | RAR   r     | XLS   r
-  DPX   r     | JPEG  r/w   | OFR   r     | RAW   r/w   | XLSX  r
-  DV    r     | K25   r     | OGG   r     | RIFF  r     | XMP   r/w/c
-  DVB   r/w   | KDC   r     | OGV   r     | RSRC  r     | ZIP   r
-  DYLIB r     | KEY   r     | ORF   r/w   | RTF   r     |
+  3FR   r     | EIP   r     | LA    r     | ORF   r/w   | RTF   r
+  3G2   r/w   | EPS   r/w   | LFP   r     | OTF   r     | RW2   r/w
+  3GP   r/w   | EPUB  r     | LNK   r     | PAC   r     | RWL   r/w
+  ACR   r     | ERF   r/w   | M2TS  r     | PAGES r     | RWZ   r
+  AFM   r     | EXE   r     | M4A/V r/w   | PBM   r/w   | RM    r
+  AI    r/w   | EXIF  r/w/c | MEF   r/w   | PCD   r     | SEQ   r
+  AIFF  r     | EXR   r     | MIE   r/w/c | PDB   r     | SO    r
+  APE   r     | EXV   r/w/c | MIFF  r     | PDF   r/w   | SR2   r/w
+  ARW   r/w   | F4A/V r/w   | MKA   r     | PEF   r/w   | SRF   r
+  ASF   r     | FFF   r/w   | MKS   r     | PFA   r     | SRW   r/w
+  AVI   r     | FLA   r     | MKV   r     | PFB   r     | SVG   r
+  AZW   r     | FLAC  r     | MNG   r/w   | PFM   r     | SWF   r
+  BMP   r     | FLV   r     | MOBI  r     | PGF   r     | THM   r/w
+  BTF   r     | FPF   r     | MODD  r     | PGM   r/w   | TIFF  r/w
+  CHM   r     | FPX   r     | MOS   r/w   | PLIST r     | TORRENT r
+  COS   r     | GIF   r/w   | MOV   r/w   | PICT  r     | TTC   r
+  CR2   r/w   | GZ    r     | MP3   r     | PMP   r     | TTF   r
+  CRW   r/w   | HDP   r/w   | MP4   r/w   | PNG   r/w   | VRD   r/w/c
+  CS1   r/w   | HDR   r     | MPC   r     | PPM   r/w   | VSD   r
+  DCM   r     | HTML  r     | MPG   r     | PPT   r     | WAV   r
+  DCP   r/w   | ICC   r/w/c | MPO   r/w   | PPTX  r     | WDP   r/w
+  DCR   r     | IDML  r     | MQV   r/w   | PS    r/w   | WEBP  r
+  DFONT r     | IIQ   r/w   | MRW   r/w   | PSB   r/w   | WEBM  r
+  DIVX  r     | IND   r/w   | MXF   r     | PSD   r/w   | WMA   r
+  DJVU  r     | INX   r     | NEF   r/w   | PSP   r     | WMV   r
+  DLL   r     | ITC   r     | NRW   r/w   | QTIF  r/w   | WV    r
+  DNG   r/w   | J2C   r     | NUMBERS r   | RA    r     | X3F   r/w
+  DOC   r     | JNG   r/w   | ODP   r     | RAF   r/w   | XCF   r
+  DOCX  r     | JP2   r/w   | ODS   r     | RAM   r     | XLS   r
+  DPX   r     | JPEG  r/w   | ODT   r     | RAR   r     | XLSX  r
+  DV    r     | K25   r     | OFR   r     | RAW   r/w   | XMP   r/w/c
+  DVB   r/w   | KDC   r     | OGG   r     | RIFF  r     | ZIP   r
+  DYLIB r     | KEY   r     | OGV   r     | RSRC  r     |
 
   Meta Information
   ----------------------+----------------------+---------------------
@@ -1,10 +1,10 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.07
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.66
 [File, System, Image] FileName - File Name: AFCP.jpg
 [File, System, Image] Directory - Directory: t/images
 [File, System, Image] FileSize - File Size: 1110 bytes
 [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
-[File, System, Time] FileAccessDate - File Access Date/Time: 2012:11:20 07:47:33-05:00
-[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2012:11:17 09:18:25-05:00
+[File, System, Time] FileAccessDate - File Access Date/Time: 2014:06:23 08:55:48-04:00
+[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2014:06:20 08:02:49-04:00
 [File, System, Image] FilePermissions - File Permissions: rw-r--r--
 [File, File, Image] FileType - File Type: JPEG
 [File, File, Image] MIMEType - MIME Type: image/jpeg
@@ -14,24 +14,24 @@
 [File, File, Image] BitsPerSample - Bits Per Sample: 8
 [File, File, Image] ColorComponents - Color Components: 3
 [File, File, Image] YCbCrSubSampling - Y Cb Cr Sub Sampling: YCbCr4:2:0 (2 2)
-[IPTC, IPTC, Other] 0 - Application Record Version: 2
-[IPTC, IPTC, Other] 15 - Category: p
-[IPTC, IPTC, Time] 55 - Date Created: 2005:12:23
-[IPTC, IPTC, Other] 5 - Object Name: object name
-[IPTC, IPTC, Other] 10 - Urgency: 2
-[IPTC, IPTC, Other] 20 - Supplemental Categories: supp cat
-[IPTC, IPTC, Other] 25 - Keywords: keyword
-[IPTC, IPTC, Other] 40 - Special Instructions: special instructions
-[IPTC, IPTC, Author] 80 - By-line: byline
-[IPTC, IPTC, Author] 85 - By-line Title: byline title
-[IPTC, IPTC, Location] 90 - City: city
-[IPTC, IPTC, Location] 101 - Country-Primary Location Name: country name
-[IPTC, IPTC, Other] 103 - Original Transmission Reference: otr
-[IPTC, IPTC, Other] 105 - Headline: headline
-[IPTC, IPTC, Author] 110 - Credit: credit
-[IPTC, IPTC, Author] 115 - Source: source
-[IPTC, IPTC, Author] 116 - Copyright Notice: copy freely
-[IPTC, IPTC, Other] 120 - Caption-Abstract: ExifTool AFCP test
-[IPTC, IPTC, Author] 122 - Writer-Editor: caption writer
-[IPTC, IPTC, Location] 95 - Province-State: state
+[IPTC, IPTC2, Other] 0 - Application Record Version: 2
+[IPTC, IPTC2, Other] 15 - Category: p
+[IPTC, IPTC2, Time] 55 - Date Created: 2005:12:23
+[IPTC, IPTC2, Other] 5 - Object Name: object name
+[IPTC, IPTC2, Other] 10 - Urgency: 2
+[IPTC, IPTC2, Other] 20 - Supplemental Categories: supp cat
+[IPTC, IPTC2, Other] 25 - Keywords: keyword
+[IPTC, IPTC2, Other] 40 - Special Instructions: special instructions
+[IPTC, IPTC2, Author] 80 - By-line: byline
+[IPTC, IPTC2, Author] 85 - By-line Title: byline title
+[IPTC, IPTC2, Location] 90 - City: city
+[IPTC, IPTC2, Location] 101 - Country-Primary Location Name: country name
+[IPTC, IPTC2, Other] 103 - Original Transmission Reference: otr
+[IPTC, IPTC2, Other] 105 - Headline: headline
+[IPTC, IPTC2, Author] 110 - Credit: credit
+[IPTC, IPTC2, Author] 115 - Source: source
+[IPTC, IPTC2, Author] 116 - Copyright Notice: copy freely
+[IPTC, IPTC2, Other] 120 - Caption-Abstract: ExifTool AFCP test
+[IPTC, IPTC2, Author] 122 - Writer-Editor: caption writer
+[IPTC, IPTC2, Location] 95 - Province-State: state
 [Composite, Composite, Image] ImageSize - Image Size: 8x8
@@ -1,8 +1,8 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.07
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.65
 [File, System, Image] FileSize - File Size: 4.8 kB
 [File, System, Time] FileModifyDate - File Modification Date/Time: 2005:11:23 15:49:37-05:00
-[File, System, Time] FileAccessDate - File Access Date/Time: 2012:11:19 15:30:55-05:00
-[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2012:11:17 09:18:25-05:00
+[File, System, Time] FileAccessDate - File Access Date/Time: 2014:06:17 15:53:21-04:00
+[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2014:02:25 19:14:41-05:00
 [File, System, Image] FilePermissions - File Permissions: rw-r--r--
 [File, File, Image] FileType - File Type: TIFF
 [File, File, Image] MIMEType - MIME Type: image/tiff
@@ -77,7 +77,7 @@
 [ICC_Profile, ICC_Profile, Image] lumi - Luminance: 76.03647 80 87.12462
 [ICC_Profile, ICC-meas, Image] 8 - Measurement Observer: CIE 1931
 [ICC_Profile, ICC-meas, Image] 12 - Measurement Backing: 0 0 0
-[ICC_Profile, ICC-meas, Image] 24 - Measurement Geometry: Unknown (0)
+[ICC_Profile, ICC-meas, Image] 24 - Measurement Geometry: Unknown
 [ICC_Profile, ICC-meas, Image] 28 - Measurement Flare: 0.999%
 [ICC_Profile, ICC-meas, Image] 32 - Measurement Illuminant: D65
 [ICC_Profile, ICC_Profile, Image] tech - Technology: Cathode Ray Tube Display
@@ -1,10 +1,10 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.07
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.66
 [File, System, Image] FileName - File Name: FotoStation.jpg
 [File, System, Image] Directory - Directory: t/images
 [File, System, Image] FileSize - File Size: 4.2 kB
 [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:10:28 14:44:59-04:00
-[File, System, Time] FileAccessDate - File Access Date/Time: 2012:11:19 15:30:56-05:00
-[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2012:11:17 09:18:25-05:00
+[File, System, Time] FileAccessDate - File Access Date/Time: 2014:06:23 08:55:47-04:00
+[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2014:06:20 08:02:49-04:00
 [File, System, Image] FilePermissions - File Permissions: rw-r--r--
 [File, File, Image] FileType - File Type: JPEG
 [File, File, Image] MIMEType - MIME Type: image/jpeg
@@ -24,16 +24,16 @@
 [FotoStation, FotoStation, Image] 8 - Crop Right: 83.035%
 [FotoStation, FotoStation, Image] 9 - Crop Bottom: 77.817%
 [FotoStation, FotoStation, Image] 11 - Crop Rotation: 0
-[IPTC, IPTC, Other] 0 - Application Record Version: 2
-[IPTC, IPTC, Other] 7 - Edit Status: Edit Status
-[IPTC, IPTC, Other] 10 - Urgency: 1 (most urgent)
-[IPTC, IPTC, Other] 15 - Category: Cat
-[IPTC, IPTC, Other] 120 - Caption-Abstract: Caption *** Local Caption *** Local Caption
-[IPTC, IPTC, Other] 40 - Special Instructions: Special Instructions
-[IPTC, IPTC, Other] 75 - Object Cycle: Unknown (Afternoon)
-[IPTC, IPTC, Other] 103 - Original Transmission Reference: OTR
-[IPTC, IPTC, Image] 200 - Object Preview File Format: Unknown (Custom Field 01)
-[IPTC, IPTC, Image] 201 - Object Preview File Version: Custom Field 02
-[IPTC, IPTC, Image] 202 - Object Preview Data: (Binary data 15 bytes)
-[IPTC, IPTC, Other] 230 - Document Notes: Document Notes
+[IPTC, IPTC2, Other] 0 - Application Record Version: 2
+[IPTC, IPTC2, Other] 7 - Edit Status: Edit Status
+[IPTC, IPTC2, Other] 10 - Urgency: 1 (most urgent)
+[IPTC, IPTC2, Other] 15 - Category: Cat
+[IPTC, IPTC2, Other] 120 - Caption-Abstract: Caption *** Local Caption *** Local Caption
+[IPTC, IPTC2, Other] 40 - Special Instructions: Special Instructions
+[IPTC, IPTC2, Other] 75 - Object Cycle: Unknown (Afternoon)
+[IPTC, IPTC2, Other] 103 - Original Transmission Reference: OTR
+[IPTC, IPTC2, Image] 200 - Object Preview File Format: Unknown (Custom Field 01)
+[IPTC, IPTC2, Image] 201 - Object Preview File Version: Custom Field 02
+[IPTC, IPTC2, Image] 202 - Object Preview Data: (Binary data 15 bytes)
+[IPTC, IPTC2, Other] 230 - Document Notes: Document Notes
 [Composite, Composite, Image] ImageSize - Image Size: 8x8
@@ -1,4 +1,4 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.36
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.61
 [File, System, Image] FileSize - File Size: 38 kB
 [File, File, Image] FileType - File Type: RAF
 [File, File, Image] MIMEType - MIME Type: image/x-fujifilm-raf
@@ -100,10 +100,28 @@
 [RAF, RAF, Image] 256 - Raw Image Full Size: 4352x1444
 [RAF, RAF, Image] 289 - Raw Image Size: 4288x1440
 [RAF, RAF, Image] 304 - Fuji Layout: 1 2 1 0
+[RAF, RAF, Image] 8192 - WB GRGB Levels Auto: 384 601 384 515
+[RAF, RAF, Image] 8448 - WB GRGB Levels Daylight: 384 601 384 515
+[RAF, RAF, Image] 8704 - WB GRGB Levels Cloudy: 384 679 384 438
+[RAF, RAF, Image] 8960 - WB GRGB Levels Daylight Fluor: 384 775 384 460
+[RAF, RAF, Image] 8961 - WB GRGB Levels Day White Fluor: 384 648 384 573
+[RAF, RAF, Image] 8962 - WB GRGB Levels White Fluorescent: 384 644 384 711
+[RAF, RAF, Image] 8976 - WB GRGB Levels Warm White Fluor: 384 509 384 878
+[RAF, RAF, Image] 8977 - WB GRGB Levels Living Room Warm White Fluor: 384 419 384 920
+[RAF, RAF, Image] 9216 - WB GRGB Levels Tungsten: 384 384 384 832
 [RAF, RAF, Image] 12272 - WB GRGB Levels: 384 601 384 515
 [RAF, RAF2, Image] 256 - Raw Image Full Size: 4352x1444
 [RAF, RAF2, Image] 289 - Raw Image Size: 4284x1440
 [RAF, RAF2, Image] 304 - Fuji Layout: 1 2 1 0
+[RAF, RAF2, Image] 8192 - WB GRGB Levels Auto: 384 685 384 603
+[RAF, RAF2, Image] 8448 - WB GRGB Levels Daylight: 384 685 384 603
+[RAF, RAF2, Image] 8704 - WB GRGB Levels Cloudy: 384 774 384 513
+[RAF, RAF2, Image] 8960 - WB GRGB Levels Daylight Fluor: 384 883 384 539
+[RAF, RAF2, Image] 8961 - WB GRGB Levels Day White Fluor: 384 739 384 671
+[RAF, RAF2, Image] 8962 - WB GRGB Levels White Fluorescent: 384 734 384 833
+[RAF, RAF2, Image] 8976 - WB GRGB Levels Warm White Fluor: 384 580 384 1028
+[RAF, RAF2, Image] 8977 - WB GRGB Levels Living Room Warm White Fluor: 384 477 384 1078
+[RAF, RAF2, Image] 9216 - WB GRGB Levels Tungsten: 384 438 384 975
 [RAF, RAF2, Image] 12272 - WB GRGB Levels: 384 685 384 603
 [Composite, Composite, Image] Aperture - Aperture: 8.0
 [Composite, Composite, Image] ShutterSpeed - Shutter Speed: 1/250
@@ -1,16 +1,16 @@
 Added Geosync point:
-  GPS time stamp:  2010:01:05 07:00:00 UTC
-  Image date/time: 2001:08:01 14:00:00 UTC
+  GPS time stamp:  2010:01:05 07:00:00.000 UTC
+  Image date/time: 2001:08:01 14:00:00.000 UTC
 Writing File:Geosync
 Added Geosync point:
-  GPS time stamp:  2010:01:05 09:01:00 UTC
-  Image date/time: 2001:08:01 16:00:00 UTC
+  GPS time stamp:  2010:01:05 09:01:00.000 UTC
+  Image date/time: 2001:08:01 16:00:00.000 UTC
 Writing File:Geosync
 Loaded 10 points from IGC-format GPS track log file 't/images/Geotag.igc'
-  GPS track start: 2010:01:05 07:23:15 UTC
-  GPS track end:   2010:01:05 08:52:56 UTC
+  GPS track start: 2010:01:05 07:23:15.000 UTC
+  GPS track end:   2010:01:05 08:52:56.000 UTC
 Writing File:Geotag
-  Geotime value:   2010:01:05 07:57:51.69167 UTC (incl. Geosync offset of +266000428.692 sec)
+  Geotime value:   2010:01:05 07:57:51.692 UTC (incl. Geosync offset of +266000428.692 sec)
 Writing MIE-GPS:GPSLatitude
 Writing XMP-exif:GPSLatitude if tag exists
 Writing GPS:GPSLatitude
@@ -0,0 +1,28 @@
+# Before "make install", this script should be runnable with "make test".
+# After "make install" it should work as "perl t/Lytro.t".
+
+BEGIN { $| = 1; print "1..2\n"; $Image::ExifTool::noConfig = 1; }
+END {print "not ok 1\n" unless $loaded;}
+
+# test 1: Load the module(s)
+use Image::ExifTool 'ImageInfo';
+use Image::ExifTool::Lytro;
+$loaded = 1;
+print "ok 1\n";
+
+use t::TestLib;
+
+my $testname = 'Lytro';
+my $testnum = 1;
+
+# test 2: Extract information from Lytro.lfp
+{
+    ++$testnum;
+    my $exifTool = new Image::ExifTool;
+    my $info = $exifTool->ImageInfo('t/images/Lytro.lfp');
+    print 'not ' unless check($exifTool, $info, $testname, $testnum);
+    print "ok $testnum\n";
+}
+
+
+# end
@@ -0,0 +1,107 @@
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.68
+[File, System, Image] FileName - File Name: Lytro.lfp
+[File, System, Image] Directory - Directory: t/images
+[File, System, Image] FileSize - File Size: 4.3 kB
+[File, System, Time] FileModifyDate - File Modification Date/Time: 2014:07:17 10:05:03-04:00
+[File, System, Time] FileAccessDate - File Access Date/Time: 2014:07:17 15:59:33-04:00
+[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2014:07:17 11:22:05-04:00
+[File, System, Image] FilePermissions - File Permissions: rw-r--r--
+[File, File, Image] FileType - File Type: LFP
+[File, File, Image] MIMEType - MIME Type: image/x-lytro-lfp
+[Lytro, Lytro, Camera] JSONMetadata - JSON Metadata: [(Binary data 778 bytes),(Binary data 3155 bytes),(Binary data 131 bytes)]
+[Lytro, Lytro, Image] PictureDerivationArray - Picture Derivation Array: sha1-f58530c3902263bfc1d411cac2b965d635fb6287
+[Lytro, Lytro, Image] PictureFrameArrayFrameImageRef - Picture Frame Array Frame Image Ref: sha1-0360f825e6eed3c7c470fb79a755a54df07fae84
+[Lytro, Lytro, Image] PictureFrameArrayFrameMetadataRef - Picture Frame Array Frame Metadata Ref: sha1-031d1e1d0e65efcd6ea74c811a0bc170498d8574
+[Lytro, Lytro, Image] PictureFrameArrayFramePrivateMetadataRef - Picture Frame Array Frame Private Metadata Ref: sha1-990a1858fe077fa0601df485704fc1d674a5e6b0
+[Lytro, Lytro, Image] PictureFrameArrayParametersVendorContentCom.lytro.tagsDarkFrame - Picture Frame Array Dark Frame: false
+[Lytro, Lytro, Image] PictureFrameArrayParametersVendorContentCom.lytro.tagsModulationFrame - Picture Frame Array Modulation Frame: false
+[Lytro, Lytro, Image] PictureViewArrayType - Picture View Array Type: com.lytro.stars
+[Lytro, Lytro, Image] PictureViewArrayVendorContentStarred - Picture View Array Vendor Content Starred: true
+[Lytro, Lytro, Image] VersionMajor - Version Major: 1
+[Lytro, Lytro, Image] VersionMinor - Version Minor: 0
+[Lytro, Lytro, Image] VersionProvisionalDate - Version Provisional Date: 2011-08-03
+[Lytro, Lytro, Camera] CameraFirmware - Firmware Version: v1.0a60, vv1.0.0, Thu Feb 23 15:02:57 PST 2012, e10fcca0668db3dbf94ae347248db3da070d21e9, mods=0, ofw=0
+[Lytro, Lytro, Camera] CameraMake - Make: Lytro, Inc.
+[Lytro, Lytro, Camera] CameraModel - Camera Model Name: F01
+[Lytro, Lytro, Camera] DevicesAccelerometerSampleArrayTime - Accelerometer Time: 0
+[Lytro, Lytro, Camera] DevicesAccelerometerSampleArrayX - Accelerometer X: -0.039215687662363052368
+[Lytro, Lytro, Camera] DevicesAccelerometerSampleArrayY - Accelerometer Y: 0.94117647409439086914
+[Lytro, Lytro, Camera] DevicesAccelerometerSampleArrayZ - Accelerometer Z: 0.2509804069995880127
+[Lytro, Lytro, Time] DevicesClockZuluTime - Date Time Original: 2012:04:12 14:10:55.000Z
+[Lytro, Lytro, Camera] DevicesLensExitPupilOffsetZ - Lens Exit Pupil Offset Z: 0.11637913513183592573
+[Lytro, Lytro, Camera] DevicesLensFNumber - F Number: 1.9
+[Lytro, Lytro, Camera] DevicesLensFocalLength - Focal Length: 6.4 mm
+[Lytro, Lytro, Camera] DevicesLensFocusStep - Lens Focus Step: 721
+[Lytro, Lytro, Camera] DevicesLensFocusStepperOffset - Lens Focus Stepper Offset: -13
+[Lytro, Lytro, Camera] DevicesLensInfinityLambda - Lens Infinity Lambda: 43.904331207275390625
+[Lytro, Lytro, Camera] DevicesLensTemperature - Lens Temperature: 34.1 C
+[Lytro, Lytro, Camera] DevicesLensTemperatureAdc - Lens Temperature Adc: 2633
+[Lytro, Lytro, Camera] DevicesLensZoomStep - Lens Zoom Step: 981
+[Lytro, Lytro, Camera] DevicesLensZoomStepperOffset - Lens Zoom Stepper Offset: -1
+[Lytro, Lytro, Camera] DevicesMlaLensPitch - Mla Lens Pitch: 1.3898614883422850808e-05
+[Lytro, Lytro, Camera] DevicesMlaRotation - Mla Rotation: -0.00028155732434242963791
+[Lytro, Lytro, Camera] DevicesMlaScaleFactorX - Mla Scale Factor X: 1
+[Lytro, Lytro, Camera] DevicesMlaScaleFactorY - Mla Scale Factor Y: 1.0004389286041259766
+[Lytro, Lytro, Camera] DevicesMlaSensorOffsetX - Mla Sensor Offset X: -3.5040323734283452459e-06
+[Lytro, Lytro, Camera] DevicesMlaSensorOffsetY - Mla Sensor Offset Y: -1.6298500299453736302e-06
+[Lytro, Lytro, Camera] DevicesMlaSensorOffsetZ - Mla Sensor Offset Z: 2.5000000000000001198e-05
+[Lytro, Lytro, Camera] DevicesMlaTiling - Mla Tiling: hexUniformRowMajor
+[Lytro, Lytro, Camera] DevicesNdfilterExposureBias - Ndfilter Exposure Bias: 3.8281672000885009766
+[Lytro, Lytro, Camera] DevicesSensorAnalogGainB - Sensor Analog Gain B: 2.03125
+[Lytro, Lytro, Camera] DevicesSensorAnalogGainGb - Sensor Analog Gain Gb: 1.75
+[Lytro, Lytro, Camera] DevicesSensorAnalogGainGr - Sensor Analog Gain Gr: 1.75
+[Lytro, Lytro, Camera] DevicesSensorAnalogGainR - Sensor Analog Gain R: 2.375
+[Lytro, Lytro, Camera] DevicesSensorBitsPerPixel - Sensor Bits Per Pixel: 12
+[Lytro, Lytro, Camera] DevicesSensorIso - ISO: 87
+[Lytro, Lytro, Camera] DevicesSensorMosaicTile - Sensor Mosaic Tile: r,gr:gb,b
+[Lytro, Lytro, Camera] DevicesSensorMosaicUpperLeftPixel - Sensor Mosaic Upper Left Pixel: b
+[Lytro, Lytro, Camera] DevicesSensorPixelPitch - Focal Plane X Resolution: 18142.8574518282
+[Lytro, Lytro, Camera] DevicesShutterFrameExposureDuration - Frame Exposure Time: 1/250
+[Lytro, Lytro, Camera] DevicesShutterMechanism - Shutter Mechanism: sensorOpenApertureClose
+[Lytro, Lytro, Camera] DevicesShutterPixelExposureDuration - Exposure Time: 1/250
+[Lytro, Lytro, Camera] DevicesSocTemperature - Soc Temperature: 43.5 C
+[Lytro, Lytro, Camera] DevicesSocTemperatureAdc - Soc Temperature Adc: 2776
+[Lytro, Lytro, Image] ImageColorCcmRgbToSrgbArray - Image Color Ccm Rgb To Srgb Array: 3.1115827560424804688, -1.9393929243087768555, -0.17218986153602600098, -0.36290559172630310059, 1.6408803462982177734, -0.27797481417655944824, 0.078967012465000152588, -1.1558042764663696289, 2.0768373012542724609
+[Lytro, Lytro, Image] ImageColorGamma - Image Color Gamma: 0.41666001081466674805
+[Lytro, Lytro, Image] ImageColorWhiteBalanceGainB - Image Color White Balance Gain B: 1.48046875
+[Lytro, Lytro, Image] ImageColorWhiteBalanceGainGb - Image Color White Balance Gain Gb: 1
+[Lytro, Lytro, Image] ImageColorWhiteBalanceGainGr - Image Color White Balance Gain Gr: 1
+[Lytro, Lytro, Image] ImageColorWhiteBalanceGainR - Image Color White Balance Gain R: 1.01171875
+[Lytro, Lytro, Image] ImageHeight - Image Height: 3280
+[Lytro, Lytro, Image] ImageLimitExposureBias - Image Limit Exposure Bias: +0.0
+[Lytro, Lytro, Image] ImageModulationExposureBias - Image Modulation Exposure Bias: -1.2
+[Lytro, Lytro, Image] ImageOrientation - Orientation: Horizontal (normal)
+[Lytro, Lytro, Image] ImageRawDetailsMosaicTile - Image Raw Details Mosaic Tile: r,gr:gb,b
+[Lytro, Lytro, Image] ImageRawDetailsMosaicUpperLeftPixel - Image Raw Details Mosaic Upper Left Pixel: b
+[Lytro, Lytro, Image] ImageRawDetailsPixelFormatBlackB - Image Raw Details Pixel Format Black B: 168
+[Lytro, Lytro, Image] ImageRawDetailsPixelFormatBlackGb - Image Raw Details Pixel Format Black Gb: 168
+[Lytro, Lytro, Image] ImageRawDetailsPixelFormatBlackGr - Image Raw Details Pixel Format Black Gr: 168
+[Lytro, Lytro, Image] ImageRawDetailsPixelFormatBlackR - Image Raw Details Pixel Format Black R: 168
+[Lytro, Lytro, Image] ImageRawDetailsPixelFormatRightShift - Image Raw Details Pixel Format Right Shift: 0
+[Lytro, Lytro, Image] ImageRawDetailsPixelFormatWhiteB - Image Raw Details Pixel Format White B: 4095
+[Lytro, Lytro, Image] ImageRawDetailsPixelFormatWhiteGb - Image Raw Details Pixel Format White Gb: 4095
+[Lytro, Lytro, Image] ImageRawDetailsPixelFormatWhiteGr - Image Raw Details Pixel Format White Gr: 4095
+[Lytro, Lytro, Image] ImageRawDetailsPixelFormatWhiteR - Image Raw Details Pixel Format White R: 4095
+[Lytro, Lytro, Image] ImageRawDetailsPixelPackingBitsPerPixel - Image Raw Details Pixel Packing Bits Per Pixel: 12
+[Lytro, Lytro, Image] ImageRawDetailsPixelPackingEndianness - Image Raw Details Pixel Packing Endianness: big
+[Lytro, Lytro, Image] ImageRepresentation - Image Representation: rawPacked
+[Lytro, Lytro, Image] ImageWidth - Image Width: 3280
+[Lytro, Lytro, Image] ModesCreative - Modes Creative: tap
+[Lytro, Lytro, Image] ModesRegionOfInterestArrayType - Modes Region Of Interest Array Type: exposure
+[Lytro, Lytro, Image] ModesRegionOfInterestArrayX - Modes Region Of Interest Array X: 0.26874190568923950195
+[Lytro, Lytro, Image] ModesRegionOfInterestArrayY - Modes Region Of Interest Array Y: 0.55208665132522583008
+[Lytro, Lytro, Image] ModesRegionOfInterestArrayType - Modes Region Of Interest Array Type: creative
+[Lytro, Lytro, Image] ModesRegionOfInterestArrayX - Modes Region Of Interest Array X: 0.26874190568923950195
+[Lytro, Lytro, Image] ModesRegionOfInterestArrayY - Modes Region Of Interest Array Y: 0.55208665132522583008
+[Lytro, Lytro, Camera] Type - Camera Type: lightField
+[Lytro, Lytro, Camera] CameraSerialNumber - Serial Number: A202110453
+[Lytro, Lytro, Camera] DevicesSensorSensorSerial - Sensor Serial Number: 0x7096E34F554BDE10
+[Composite, Composite, Image] Aperture - Aperture: 1.9
+[Composite, Composite, Image] ImageSize - Image Size: 3280x3280
+[Composite, Composite, Camera] ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.7
+[Composite, Composite, Image] ShutterSpeed - Shutter Speed: 1/250
+[Composite, Composite, Camera] CircleOfConfusion - Circle Of Confusion: 0.005 mm
+[Composite, Composite, Image] FOV - Field Of View: 45.5 deg
+[Composite, Composite, Camera] FocalLength35efl - Focal Length: 6.4 mm (35 mm equivalent: 43.0 mm)
+[Composite, Composite, Camera] HyperfocalDistance - Hyperfocal Distance: 4.83 m
+[Composite, Composite, Image] LightValue - Light Value: 10.0
@@ -1,10 +1,10 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.07
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.69
 [File, System, Image] FileName - File Name: PGF.pgf
 [File, System, Image] Directory - Directory: t/images
 [File, System, Image] FileSize - File Size: 286 bytes
 [File, System, Time] FileModifyDate - File Modification Date/Time: 2011:01:26 07:32:42-05:00
-[File, System, Time] FileAccessDate - File Access Date/Time: 2012:11:19 15:31:05-05:00
-[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2012:11:17 09:18:25-05:00
+[File, System, Time] FileAccessDate - File Access Date/Time: 2014:07:23 08:41:55-04:00
+[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2014:07:19 08:21:42-04:00
 [File, System, Image] FilePermissions - File Permissions: rw-r--r--
 [File, File, Image] FileType - File Type: PGF
 [File, File, Image] MIMEType - MIME Type: image/pgf
@@ -25,8 +25,8 @@
 [PNG, PNG, Image] 11 - Filter: Adaptive
 [PNG, PNG, Image] 12 - Interlace: Noninterlaced
 [PNG, PNG, Image] sRGB - SRGB Rendering: Perceptual
-[PNG, PNG, Image] 0 - Pixels Per Unit X: 2835
-[PNG, PNG, Image] 4 - Pixels Per Unit Y: 2835
-[PNG, PNG, Image] 8 - Pixel Units: Meters
+[PNG, PNG-pHYs, Image] 0 - Pixels Per Unit X: 2835
+[PNG, PNG-pHYs, Image] 4 - Pixels Per Unit Y: 2835
+[PNG, PNG-pHYs, Image] 8 - Pixel Units: meters
 [PNG, PNG, Image] Comment - Comment: ExifTool PGF Test
 [Composite, Composite, Image] ImageSize - Image Size: 8x8
@@ -31,6 +31,7 @@ my $testnum = 1;
     $exifTool->SetNewValuesFromFile('t/images/IPTC.jpg');
     $exifTool->SetNewValuesFromFile('t/images/XMP.jpg');
     $exifTool->SetNewValue('PNG:Comment');  # and delete a tag
+    $exifTool->SetNewValue('PixelsPerUnitX', 1234);
     my $image;  
     my $rtnVal = $exifTool->WriteInfo('t/images/PNG.png', \$image);
     # must ignore FileSize because size is variable (depends on Zlib availability)
@@ -1,4 +1,4 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 8.60
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.69
 [File, File, Image] FileType - File Type: PNG
 [File, File, Image] MIMEType - MIME Type: image/png
 [File, File, Image] ExifByteOrder - Exif Byte Order: Little-endian (Intel, II)
@@ -10,6 +10,9 @@
 [PNG, PNG, Image] 11 - Filter: Adaptive
 [PNG, PNG, Image] 12 - Interlace: Noninterlaced
 [PNG, PNG, Image] bKGD - Background Color: 0
+[PNG, PNG-pHYs, Image] 0 - Pixels Per Unit X: 1234
+[PNG, PNG-pHYs, Image] 4 - Pixels Per Unit Y: 2834
+[PNG, PNG-pHYs, Image] 8 - Pixel Units: meters
 [PNG, PNG, Author] Artist - Artist: Phil Harvey
 [PNG, PNG, Author] Copyright - Copyright: Copyright 2004 Phil Harvey
 [PNG, PNG, Image] Description - Description: UTF-16 (big-endian) encoded XMP
@@ -21,7 +24,7 @@
 [PNG, PNG, Image] URL - URL: http://owl.phy.queensu.ca/~phil/exiftool/
 [PNG, PNG, Time] create-date - Create Date: 2001:05:19 18:36:41
 [PNG, PNG, Time] tIME - Modify Date: 2004:02:26 09:36:46
-[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 8.60
+[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 9.69
 [XMP, XMP-dc, Author] creator - Creator: Phil Harvey
 [XMP, XMP-dc, Image] description - Description: UTF-16 (big-endian) encoded XMP
 [XMP, XMP-dc, Author] rights - Rights: Copyright 2004 Phil Harvey
@@ -0,0 +1,27 @@
+# Before "make install", this script should be runnable with "make test".
+# After "make install" it should work as "perl t/Palm.t".
+
+BEGIN { $| = 1; print "1..2\n"; $Image::ExifTool::noConfig = 1; }
+END {print "not ok 1\n" unless $loaded;}
+
+# test 1: Load the module(s)
+use Image::ExifTool 'ImageInfo';
+use Image::ExifTool::Palm;
+$loaded = 1;
+print "ok 1\n";
+
+use t::TestLib;
+
+my $testname = 'Palm';
+my $testnum = 1;
+
+# test 2: Extract information from MOBI book
+{
+    ++$testnum;
+    my $exifTool = new Image::ExifTool;
+    my $info = $exifTool->ImageInfo('t/images/Palm.mobi');
+    print 'not ' unless check($exifTool, $info, $testname, $testnum);
+    print "ok $testnum\n";
+}
+
+# end
@@ -0,0 +1,31 @@
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.63
+[File, System, Image] FileName - File Name: Palm.mobi
+[File, System, Image] Directory - Directory: t/images
+[File, System, Image] FileSize - File Size: 1382 bytes
+[File, System, Time] FileModifyDate - File Modification Date/Time: 2014:05:29 12:42:41-04:00
+[File, System, Time] FileAccessDate - File Access Date/Time: 2014:05:29 19:02:39-04:00
+[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2014:05:29 18:49:04-04:00
+[File, System, Image] FilePermissions - File Permissions: rw-r--r--
+[File, File, Image] FileType - File Type: MOBI
+[File, File, Image] MIMEType - MIME Type: application/x-mobipocket-ebook
+[Palm, Palm, Document] 0 - Database Name: El_Diezmo_Continua_Vigente
+[Palm, Palm, Time] 9 - Create Date: 2014:05:27 20:00:51-04:00
+[Palm, Palm, Time] 10 - Modify Date: 2014:05:27 20:00:51-04:00
+[Palm, Palm, Time] 11 - Last Backup Date: 0000:00:00 00:00:00
+[Palm, Palm, Document] 12 - Modification Number: 0
+[Palm, Palm, Document] 15 - Palm File Type: Mobipocket
+[Palm, MOBI, Document] 0 - Compression: PalmDOC
+[Palm, MOBI, Document] 1 - Uncompressed Text Length: 168 kB
+[Palm, MOBI, Document] 3 - Encryption: None
+[Palm, MOBI, Document] 6 - Mobi Type: Mobipocket Book
+[Palm, MOBI, Document] 7 - Code Page: Windows Latin 1 (Western European)
+[Palm, MOBI, Document] 9 - Mobi Version: 6
+[Palm, MOBI, Document] 21 - Book Name: El Diezmo Continua Vigente
+[Palm, MOBI, Document] 26 - Minimum Version: 6
+[Palm, MOBI, Author] 100 - Author: Mike Peralta
+[Palm, MOBI, Document] 108 - Contributor: Smashwords, Inc.
+[Palm, MOBI, Document] 103 - Description: Hebreos 7:8  “Y aquí ciertamente reciben los diezmos hombres mortales; pero allí, uno [Jesucristo] de quien se da testimonio de que [Jesucristo] vive.”  Basado en Hebreos 7:8, Jesús ahora recibe nuestros diezmos y esta en el Nuevo Testamento. Aquellos que dicen que el diezmo ya no se aplica están hablando falsamente y directamente opuestos al evangelio del Nuevo Testamento de Jesucristo.
+[Palm, MOBI, Document] 204 - Creator Software: Kindlegen (Linux)
+[Palm, MOBI, Document] 205 - Creator Major Version: 1
+[Palm, MOBI, Document] 206 - Creator Minor Version: 1
+[Palm, MOBI, Document] 207 - Creator Build Number: 98
@@ -112,7 +112,7 @@ sub testCompare($$$;$)
     
     # erase .failed file if test was successful
     $success and not $keep and unlink $testfile;
-    
+
     return $success
 }
 
@@ -1,4 +1,4 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 8.48
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.65
 [File, System, Image] FileSize - File Size: 7.6 kB
 [File, File, Image] FileType - File Type: TIFF
 [File, File, Image] MIMEType - MIME Type: image/tiff
@@ -24,7 +24,7 @@
 [EXIF, IFD0, Image] 305 - Software: GraphicConverter
 [EXIF, IFD0, Time] 306 - Modify Date: 2004:02:20 08:07:49
 [EXIF, IFD0, Image] 317 - Predictor: None
-[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 8.48
+[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 9.65
 [XMP, XMP-photoshop, Image] SupplementalCategories - Supplemental Categories: new XMP info
 [IPTC, IPTC, Other] 0 - Application Record Version: 2
 [IPTC, IPTC, Other] 120 - Caption-Abstract: The picture caption
@@ -75,7 +75,7 @@
 [ICC_Profile, ICC_Profile, Image] lumi - Luminance: 76.03647 80 87.12462
 [ICC_Profile, ICC-meas, Image] 8 - Measurement Observer: CIE 1931
 [ICC_Profile, ICC-meas, Image] 12 - Measurement Backing: 0 0 0
-[ICC_Profile, ICC-meas, Image] 24 - Measurement Geometry: Unknown (0)
+[ICC_Profile, ICC-meas, Image] 24 - Measurement Geometry: Unknown
 [ICC_Profile, ICC-meas, Image] 28 - Measurement Flare: 0.999%
 [ICC_Profile, ICC-meas, Image] 32 - Measurement Illuminant: D65
 [ICC_Profile, ICC_Profile, Image] tech - Technology: Cathode Ray Tube Display
@@ -1,10 +1,10 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.60
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.65
 [File, System, Image] FileName - File Name: Writer_9_failed.jpg
 [File, System, Image] Directory - Directory: t
 [File, System, Image] FileSize - File Size: 9.7 kB
-[File, System, Time] FileModifyDate - File Modification Date/Time: 2014:05:08 10:53:37-04:00
-[File, System, Time] FileAccessDate - File Access Date/Time: 2014:05:08 10:53:37-04:00
-[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2014:05:08 10:53:37-04:00
+[File, System, Time] FileModifyDate - File Modification Date/Time: 2014:06:20 06:35:01-04:00
+[File, System, Time] FileAccessDate - File Access Date/Time: 2014:06:20 06:35:01-04:00
+[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2014:06:20 06:35:01-04:00
 [File, System, Image] FilePermissions - File Permissions: rw-r--r--
 [File, File, Image] FileType - File Type: JPEG
 [File, File, Image] MIMEType - MIME Type: image/jpeg
@@ -162,7 +162,7 @@
 [MakerNotes, Canon, Camera] 9 - AF Area Y Positions: 0 0 -506 0 506 0 0
 [MakerNotes, Canon, Camera] 10 - AF Points In Focus: (none)
 [MakerNotes, Canon, Camera] 19 - Thumbnail Image Valid Area: 0 159 7 112
-[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 9.60
+[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 9.65
 [XMP, XMP-aux, Camera] Lens - Lens: 18.0 - 55.0 mm
 [XMP, XMP-exif, Image] ComponentsConfiguration - Components Configuration: Y, Cb, Cr, -
 [XMP, XMP-exif, Image] CompressedBitsPerPixel - Compressed Bits Per Pixel: 9
@@ -209,7 +209,7 @@
 [ICC_Profile, ICC_Profile, Image] lumi - Luminance: 76.03647 80 87.12462
 [ICC_Profile, ICC-meas, Image] 8 - Measurement Observer: CIE 1931
 [ICC_Profile, ICC-meas, Image] 12 - Measurement Backing: 0 0 0
-[ICC_Profile, ICC-meas, Image] 24 - Measurement Geometry: Unknown (0)
+[ICC_Profile, ICC-meas, Image] 24 - Measurement Geometry: Unknown
 [ICC_Profile, ICC-meas, Image] 28 - Measurement Flare: 0.999%
 [ICC_Profile, ICC-meas, Image] 32 - Measurement Illuminant: D65
 [ICC_Profile, ICC_Profile, Image] tech - Technology: Cathode Ray Tube Display
@@ -151,7 +151,7 @@ my $testnum = 1;
     print "ok $testnum\n";
 }
 
-# test 8-11: Test reading/writing XMP with blank nodes
+# test 8-11: Test reading/writing XMP with blank nodes and some problems that need correcting
 {
     my $file;
     foreach $file ('XMP2.xmp', 'XMP3.xmp') {
@@ -165,7 +165,11 @@ my $testnum = 1;
         my $testfile = "t/${testname}_${testnum}_failed.xmp";
         unlink $testfile;
         $exifTool->SetNewValue('XMP:Creator' => 'Phil', AddValue => 1);
+        $exifTool->SetNewValue('manifestplacedXResolution' => 1);
+        $exifTool->SetNewValue('attributionname' => 'something else');
         $exifTool->WriteInfo("t/images/$file", $testfile);
+        my $err = $exifTool->GetValue('Error');
+        warn "\n  $err\n" if $err;
         print 'not ' unless testCompare("t/XMP_$testnum.out",$testfile,$testnum);
         print "ok $testnum\n";
     }
@@ -1,10 +1,10 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.07
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.70
 [File, System, Image] FileName - File Name: XMP3.xmp
 [File, System, Image] Directory - Directory: t/images
-[File, System, Image] FileSize - File Size: 1639 bytes
-[File, System, Time] FileModifyDate - File Modification Date/Time: 2011:04:10 09:49:54-04:00
-[File, System, Time] FileAccessDate - File Access Date/Time: 2012:11:19 15:31:09-05:00
-[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2012:11:17 09:18:25-05:00
+[File, System, Image] FileSize - File Size: 2.2 kB
+[File, System, Time] FileModifyDate - File Modification Date/Time: 2014:08:21 08:54:01-04:00
+[File, System, Time] FileAccessDate - File Access Date/Time: 2014:08:21 08:50:51-04:00
+[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2014:08:21 08:54:01-04:00
 [File, System, Image] FilePermissions - File Permissions: rw-r--r--
 [File, File, Image] FileType - File Type: XMP
 [File, File, Image] MIMEType - MIME Type: application/rdf+xml
@@ -16,6 +16,9 @@
 [XMP, XMP-iptcCore, Other] Scene - Scene: scene1
 [XMP, XMP-pdfx, Document] Customↂ0020Propertyↂ00201 - Custom 0020 Property 00201: a custom property value
 [XMP, XMP-pdfx, Document] Customↂ0020Propertyↂ00202 - Custom 0020 Property 00202: some other value
+[XMP, XMP-xmpMM, Other] ManifestLinkForm - Manifest Link Form: EmbedByReference
+[XMP, XMP-xmpMM, Other] ManifestReferenceFilePath - Manifest Reference File Path: C:\some path\file.ext
+[XMP, XMP-cc, Author] attributionName - Attribution Name: some attr
 [XMP, XMP-ph, Unknown] ph:programmerExclamation - Programmer Exclamation: doh!
 [XMP, XMP-ph, Unknown] ph:programmerFood - Programmer Food: cookies
 [XMP, XMP-ph, Unknown] ph:programmerFullName - Programmer Full Name: Phil Harvey
@@ -1,8 +1,13 @@
 <?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
-<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 8.55'>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 9.70'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 
  <rdf:Description rdf:about='http://www.w3.org/TR/rdf-syntax-grammar'
+  xmlns:cc='http://creativecommons.org/ns#'>
+  <cc:attributionName>something else</cc:attributionName>
+ </rdf:Description>
+
+ <rdf:Description rdf:about='http://www.w3.org/TR/rdf-syntax-grammar'
   xmlns:dd='http://purl.org/dc/elements/1.1/'>
   <dd:creator>
    <rdf:Seq>
@@ -46,6 +51,23 @@
  </rdf:Description>
 
  <rdf:Description rdf:about='http://www.w3.org/TR/rdf-syntax-grammar'
+  xmlns:stMfs='http://ns.adobe.com/xap/1.0/sType/ManifestItem#'
+  xmlns:stRef='http://ns.adobe.com/xap/1.0/sType/ResourceRef#'
+  xmlns:xmpMM='http://ns.adobe.com/xap/1.0/mm/'>
+  <xmpMM:Manifest>
+   <rdf:Bag>
+    <rdf:li rdf:parseType='Resource'>
+     <stMfs:linkForm>EmbedByReference</stMfs:linkForm>
+     <stMfs:reference rdf:parseType='Resource'>
+      <stRef:filePath>C:\some path\file.ext</stRef:filePath>
+     </stMfs:reference>
+     <xmpMM:placedXResolution>1</xmpMM:placedXResolution>
+    </rdf:li>
+   </rdf:Bag>
+  </xmpMM:Manifest>
+ </rdf:Description>
+
+ <rdf:Description rdf:about='http://www.w3.org/TR/rdf-syntax-grammar'
   xmlns:xxx='http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/'>
   <xxx:CountryCode>CA</xxx:CountryCode>
   <xxx:Scene>
@@ -1,10 +1,10 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.07
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.65
 [File, System, Image] FileName - File Name: XMP.jpg
 [File, System, Image] Directory - Directory: t/images
 [File, System, Image] FileSize - File Size: 10 kB
 [File, System, Time] FileModifyDate - File Modification Date/Time: 2011:01:03 13:24:04-05:00
-[File, System, Time] FileAccessDate - File Access Date/Time: 2012:11:20 07:49:52-05:00
-[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2012:11:17 09:18:25-05:00
+[File, System, Time] FileAccessDate - File Access Date/Time: 2014:06:20 06:35:01-04:00
+[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2014:05:13 16:54:07-04:00
 [File, System, Image] FilePermissions - File Permissions: rw-r--r--
 [File, File, Image] FileType - File Type: JPEG
 [File, File, Image] MIMEType - MIME Type: image/jpeg
@@ -120,7 +120,7 @@
 [ICC_Profile, ICC_Profile, Image] lumi - Luminance: 76.03647 80 87.12462
 [ICC_Profile, ICC-meas, Image] 8 - Measurement Observer: CIE 1931
 [ICC_Profile, ICC-meas, Image] 12 - Measurement Backing: 0 0 0
-[ICC_Profile, ICC-meas, Image] 24 - Measurement Geometry: Unknown (0)
+[ICC_Profile, ICC-meas, Image] 24 - Measurement Geometry: Unknown
 [ICC_Profile, ICC-meas, Image] 28 - Measurement Flare: 0.999%
 [ICC_Profile, ICC-meas, Image] 32 - Measurement Illuminant: D65
 [ICC_Profile, ICC_Profile, Image] tech - Technology: Cathode Ray Tube Display
@@ -1,4 +1,4 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.17
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 9.65
 [File, System, Image] FileSize - File Size: 9.9 kB
 [File, File, Image] FileType - File Type: JPEG
 [File, File, Image] MIMEType - MIME Type: image/jpeg
@@ -60,7 +60,7 @@
 [EXIF, IFD1, Image] 514 - Thumbnail Length: 0
 [IPTC, IPTC, Other] 90 - Coded Character Set: UTF8
 [IPTC, IPTC, Other] 0 - Envelope Record Version: 4
-[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 9.17
+[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 9.65
 [XMP, XMP-rdf, Document] about - About: uuid:80056b68-1045-fa97-3401-6f4ed84cd53d
 [XMP, XMP-iptcCore, Author] CreatorContactInfoCiAdrCtry - Creator Country: Canada
 [XMP, XMP-dc, Author] creator - Creator: Phil Harvey-v2
@@ -118,7 +118,7 @@
 [ICC_Profile, ICC_Profile, Image] lumi - Luminance: 76.03647 80 87.12462
 [ICC_Profile, ICC-meas, Image] 8 - Measurement Observer: CIE 1931
 [ICC_Profile, ICC-meas, Image] 12 - Measurement Backing: 0 0 0
-[ICC_Profile, ICC-meas, Image] 24 - Measurement Geometry: Unknown (0)
+[ICC_Profile, ICC-meas, Image] 24 - Measurement Geometry: Unknown
 [ICC_Profile, ICC-meas, Image] 28 - Measurement Flare: 0.999%
 [ICC_Profile, ICC-meas, Image] 32 - Measurement Illuminant: D65
 [ICC_Profile, ICC_Profile, Image] tech - Technology: Cathode Ray Tube Display
@@ -1,5 +1,5 @@
 <?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
-<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 8.44'>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 9.70'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 
  <rdf:Description rdf:about=''
@@ -9,6 +9,11 @@
  </rdf:Description>
 
  <rdf:Description rdf:about=''
+  xmlns:cc='http://creativecommons.org/ns#'>
+  <cc:attributionName>something else</cc:attributionName>
+ </rdf:Description>
+
+ <rdf:Description rdf:about=''
   xmlns:dc='http://purl.org/dc/elements/1.1/'>
   <dc:creator>
    <rdf:Seq>
@@ -31,6 +36,17 @@
   <tiff:ImageLength>2048</tiff:ImageLength>
   <tiff:ImageWidth>3072</tiff:ImageWidth>
  </rdf:Description>
+
+ <rdf:Description rdf:about=''
+  xmlns:xmpMM='http://ns.adobe.com/xap/1.0/mm/'>
+  <xmpMM:Manifest>
+   <rdf:Bag>
+    <rdf:li rdf:parseType='Resource'>
+     <xmpMM:placedXResolution>1</xmpMM:placedXResolution>
+    </rdf:li>
+   </rdf:Bag>
+  </xmpMM:Manifest>
+ </rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
 <?xpacket end='w'?>
\ No newline at end of file
diff --git a/var/tmp/source/EXIFTOOL/Image-ExifTool-9.70/Image-ExifTool-9.70/t/images/Lytro.lfp b/var/tmp/source/EXIFTOOL/Image-ExifTool-9.70/Image-ExifTool-9.70/t/images/Lytro.lfp
new file mode 100644
index 00000000..cc5826b3
Binary files /dev/null and b/var/tmp/source/EXIFTOOL/Image-ExifTool-9.70/Image-ExifTool-9.70/t/images/Lytro.lfp differ
diff --git a/var/tmp/source/EXIFTOOL/Image-ExifTool-9.70/Image-ExifTool-9.70/t/images/Palm.mobi b/var/tmp/source/EXIFTOOL/Image-ExifTool-9.70/Image-ExifTool-9.70/t/images/Palm.mobi
new file mode 100644
index 00000000..c3bdb6b9
Binary files /dev/null and b/var/tmp/source/EXIFTOOL/Image-ExifTool-9.70/Image-ExifTool-9.70/t/images/Palm.mobi differ
@@ -4,40 +4,62 @@
          xmlns:dd="http://purl.org/dc/elements/1.1/"
          xmlns:ph="http://owl.phy.queensu.ca/ph/1.0/"
          xmlns:xxx="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"
-         xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/">
-  <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
+         xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/"
+         xmlns:stMfs='http://ns.adobe.com/xap/1.0/sType/ManifestItem#'
+         xmlns:stRef='http://ns.adobe.com/xap/1.0/sType/ResourceRef#'
+         xmlns:xmpMM='http://ns.adobe.com/xap/1.0/mm/'
+         xmlns:cc='http://creativecommons.org/ns#'>
+ <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
          dd:title="ExifTool common node, nonstandard namespace prefix, and bad list type tests">
-    <dd:creator>
-      <rdf:Bag>
-        <rdf:li>bad_list_type_A</rdf:li>
-        <rdf:li>bad_list_type_B</rdf:li>
-      </rdf:Bag>
-    </dd:creator>
-    <ph:supervisor>
-      <rdf:Description rdf:nodeID="abc" ph:food="cookies">
-        <ph:exclamation>doh!</ph:exclamation>
-      </rdf:Description>
-    </ph:supervisor>
-    <ph:programmer>
-      <rdf:Description rdf:nodeID="abc">
-      <ph:state>confusion</ph:state>
-      </rdf:Description>
-    </ph:programmer>
-    <ph:tester rdf:nodeID="abc"/>
-    <xxx:CountryCode>CA</xxx:CountryCode>
-    <xxx:Scene>
-      <rdf:Bag>
-        <rdf:li>scene1</rdf:li>
-      </rdf:Bag>
-    </xxx:Scene>
-    <pdfx:Customↂ0020Propertyↂ00201>a custom property value</pdfx:Customↂ0020Propertyↂ00201>
-    <pdfx:Customↂ0020Propertyↂ00202>some other value</pdfx:Customↂ0020Propertyↂ00202>
-  </rdf:Description>
+  <dd:creator>
+   <rdf:Bag>
+    <rdf:li>bad_list_type_A</rdf:li>
+    <rdf:li>bad_list_type_B</rdf:li>
+   </rdf:Bag>
+  </dd:creator>
+  <ph:supervisor>
+   <rdf:Description rdf:nodeID="abc" ph:food="cookies">
+    <ph:exclamation>doh!</ph:exclamation>
+   </rdf:Description>
+  </ph:supervisor>
+  <ph:programmer>
+   <rdf:Description rdf:nodeID="abc">
+   <ph:state>confusion</ph:state>
+   </rdf:Description>
+  </ph:programmer>
+  <ph:tester rdf:nodeID="abc"/>
+  <xxx:CountryCode>CA</xxx:CountryCode>
+  <xxx:Scene>
+   <rdf:Bag>
+    <rdf:li>scene1</rdf:li>
+   </rdf:Bag>
+  </xxx:Scene>
+  <pdfx:Customↂ0020Propertyↂ00201>a custom property value</pdfx:Customↂ0020Propertyↂ00201>
+  <pdfx:Customↂ0020Propertyↂ00202>some other value</pdfx:Customↂ0020Propertyↂ00202>
+ </rdf:Description>
 
-  <rdf:Description rdf:nodeID="abc"
+ <rdf:Description rdf:nodeID="abc"
          ph:fullName="Phil Harvey">
-    <ph:homePage rdf:resource="http://owl.phy.queensu.ca/~phil/"/>
-  </rdf:Description>
+  <ph:homePage rdf:resource="http://owl.phy.queensu.ca/~phil/"/>
+ </rdf:Description>
+
+ <rdf:Description>
+  <xmpMM:Manifest>
+   <rdf:Seq>
+    <rdf:li rdf:parseType='Resource'>
+     <stMfs:linkForm>EmbedByReference</stMfs:linkForm>
+     <stMfs:reference rdf:parseType='Resource'>
+      <stRef:filePath>C:\some path\file.ext</stRef:filePath>
+     </stMfs:reference>
+    </rdf:li>
+   </rdf:Seq>
+  </xmpMM:Manifest>
+  <cc:attributionName>
+   <rdf:Alt>
+    <rdf:li xml:lang='x-default'>some attr</rdf:li>
+   </rdf:Alt>
+  </cc:attributionName>
+ </rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
 <?xpacket end='w'?>
\ No newline at end of file