/** * Minified by jsDelivr using Terser v5.19.2. * Original file: /npm/exif-js@2.3.0/exif.js * * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files */ (function () { var e = !1 , t = function (e) { return e instanceof t ? e : this instanceof t ? void (this.EXIFwrapped = e) : new t(e) }; "undefined" != typeof exports ? ("undefined" != typeof module && module.exports && (exports = module.exports = t), exports.EXIF = t) : this.EXIF = t; var r = t.Tags = { 36864: "ExifVersion", 40960: "FlashpixVersion", 40961: "ColorSpace", 40962: "PixelXDimension", 40963: "PixelYDimension", 37121: "ComponentsConfiguration", 37122: "CompressedBitsPerPixel", 37500: "MakerNote", 37510: "UserComment", 40964: "RelatedSoundFile", 36867: "DateTimeOriginal", 36868: "DateTimeDigitized", 37520: "SubsecTime", 37521: "SubsecTimeOriginal", 37522: "SubsecTimeDigitized", 33434: "ExposureTime", 33437: "FNumber", 34850: "ExposureProgram", 34852: "SpectralSensitivity", 34855: "ISOSpeedRatings", 34856: "OECF", 37377: "ShutterSpeedValue", 37378: "ApertureValue", 37379: "BrightnessValue", 37380: "ExposureBias", 37381: "MaxApertureValue", 37382: "SubjectDistance", 37383: "MeteringMode", 37384: "LightSource", 37385: "Flash", 37396: "SubjectArea", 37386: "FocalLength", 41483: "FlashEnergy", 41484: "SpatialFrequencyResponse", 41486: "FocalPlaneXResolution", 41487: "FocalPlaneYResolution", 41488: "FocalPlaneResolutionUnit", 41492: "SubjectLocation", 41493: "ExposureIndex", 41495: "SensingMethod", 41728: "FileSource", 41729: "SceneType", 41730: "CFAPattern", 41985: "CustomRendered", 41986: "ExposureMode", 41987: "WhiteBalance", 41988: "DigitalZoomRation", 41989: "FocalLengthIn35mmFilm", 41990: "SceneCaptureType", 41991: "GainControl", 41992: "Contrast", 41993: "Saturation", 41994: "Sharpness", 41995: "DeviceSettingDescription", 41996: "SubjectDistanceRange", 40965: "InteroperabilityIFDPointer", 42016: "ImageUniqueID" } , i = t.TiffTags = { 256: "ImageWidth", 257: "ImageHeight", 34665: "ExifIFDPointer", 34853: "GPSInfoIFDPointer", 40965: "InteroperabilityIFDPointer", 258: "BitsPerSample", 259: "Compression", 262: "PhotometricInterpretation", 274: "Orientation", 277: "SamplesPerPixel", 284: "PlanarConfiguration", 530: "YCbCrSubSampling", 531: "YCbCrPositioning", 282: "XResolution", 283: "YResolution", 296: "ResolutionUnit", 273: "StripOffsets", 278: "RowsPerStrip", 279: "StripByteCounts", 513: "JPEGInterchangeFormat", 514: "JPEGInterchangeFormatLength", 301: "TransferFunction", 318: "WhitePoint", 319: "PrimaryChromaticities", 529: "YCbCrCoefficients", 532: "ReferenceBlackWhite", 306: "DateTime", 270: "ImageDescription", 271: "Make", 272: "Model", 305: "Software", 315: "Artist", 33432: "Copyright" } , o = t.GPSTags = { 0: "GPSVersionID", 1: "GPSLatitudeRef", 2: "GPSLatitude", 3: "GPSLongitudeRef", 4: "GPSLongitude", 5: "GPSAltitudeRef", 6: "GPSAltitude", 7: "GPSTimeStamp", 8: "GPSSatellites", 9: "GPSStatus", 10: "GPSMeasureMode", 11: "GPSDOP", 12: "GPSSpeedRef", 13: "GPSSpeed", 14: "GPSTrackRef", 15: "GPSTrack", 16: "GPSImgDirectionRef", 17: "GPSImgDirection", 18: "GPSMapDatum", 19: "GPSDestLatitudeRef", 20: "GPSDestLatitude", 21: "GPSDestLongitudeRef", 22: "GPSDestLongitude", 23: "GPSDestBearingRef", 24: "GPSDestBearing", 25: "GPSDestDistanceRef", 26: "GPSDestDistance", 27: "GPSProcessingMethod", 28: "GPSAreaInformation", 29: "GPSDateStamp", 30: "GPSDifferential" } , a = t.IFD1Tags = { 256: "ImageWidth", 257: "ImageHeight", 258: "BitsPerSample", 259: "Compression", 262: "PhotometricInterpretation", 273: "StripOffsets", 274: "Orientation", 277: "SamplesPerPixel", 278: "RowsPerStrip", 279: "StripByteCounts", 282: "XResolution", 283: "YResolution", 284: "PlanarConfiguration", 296: "ResolutionUnit", 513: "JpegIFOffset", 514: "JpegIFByteCount", 529: "YCbCrCoefficients", 530: "YCbCrSubSampling", 531: "YCbCrPositioning", 532: "ReferenceBlackWhite" } , s = t.StringValues = { ExposureProgram: { 0: "Not defined", 1: "Manual", 2: "Normal program", 3: "Aperture priority", 4: "Shutter priority", 5: "Creative program", 6: "Action program", 7: "Portrait mode", 8: "Landscape mode" }, MeteringMode: { 0: "Unknown", 1: "Average", 2: "CenterWeightedAverage", 3: "Spot", 4: "MultiSpot", 5: "Pattern", 6: "Partial", 255: "Other" }, LightSource: { 0: "Unknown", 1: "Daylight", 2: "Fluorescent", 3: "Tungsten (incandescent light)", 4: "Flash", 9: "Fine weather", 10: "Cloudy weather", 11: "Shade", 12: "Daylight fluorescent (D 5700 - 7100K)", 13: "Day white fluorescent (N 4600 - 5400K)", 14: "Cool white fluorescent (W 3900 - 4500K)", 15: "White fluorescent (WW 3200 - 3700K)", 17: "Standard light A", 18: "Standard light B", 19: "Standard light C", 20: "D55", 21: "D65", 22: "D75", 23: "D50", 24: "ISO studio tungsten", 255: "Other" }, Flash: { 0: "Flash did not fire", 1: "Flash fired", 5: "Strobe return light not detected", 7: "Strobe return light detected", 9: "Flash fired, compulsory flash mode", 13: "Flash fired, compulsory flash mode, return light not detected", 15: "Flash fired, compulsory flash mode, return light detected", 16: "Flash did not fire, compulsory flash mode", 24: "Flash did not fire, auto mode", 25: "Flash fired, auto mode", 29: "Flash fired, auto mode, return light not detected", 31: "Flash fired, auto mode, return light detected", 32: "No flash function", 65: "Flash fired, red-eye reduction mode", 69: "Flash fired, red-eye reduction mode, return light not detected", 71: "Flash fired, red-eye reduction mode, return light detected", 73: "Flash fired, compulsory flash mode, red-eye reduction mode", 77: "Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected", 79: "Flash fired, compulsory flash mode, red-eye reduction mode, return light detected", 89: "Flash fired, auto mode, red-eye reduction mode", 93: "Flash fired, auto mode, return light not detected, red-eye reduction mode", 95: "Flash fired, auto mode, return light detected, red-eye reduction mode" }, SensingMethod: { 1: "Not defined", 2: "One-chip color area sensor", 3: "Two-chip color area sensor", 4: "Three-chip color area sensor", 5: "Color sequential area sensor", 7: "Trilinear sensor", 8: "Color sequential linear sensor" }, SceneCaptureType: { 0: "Standard", 1: "Landscape", 2: "Portrait", 3: "Night scene" }, SceneType: { 1: "Directly photographed" }, CustomRendered: { 0: "Normal process", 1: "Custom process" }, WhiteBalance: { 0: "Auto white balance", 1: "Manual white balance" }, GainControl: { 0: "None", 1: "Low gain up", 2: "High gain up", 3: "Low gain down", 4: "High gain down" }, Contrast: { 0: "Normal", 1: "Soft", 2: "Hard" }, Saturation: { 0: "Normal", 1: "Low saturation", 2: "High saturation" }, Sharpness: { 0: "Normal", 1: "Soft", 2: "Hard" }, SubjectDistanceRange: { 0: "Unknown", 1: "Macro", 2: "Close view", 3: "Distant view" }, FileSource: { 3: "DSC" }, Components: { 0: "", 1: "Y", 2: "Cb", 3: "Cr", 4: "R", 5: "G", 6: "B" } }; function l(e) { return !!e.exifdata } function u(n, r) { function i(i) { var o = c(i); n.exifdata = o || {}; var a = function (t) { var n = new DataView(t); e && console.log("Got file of length " + t.byteLength); if (255 != n.getUint8(0) || 216 != n.getUint8(1)) return e && console.log("Not a valid JPEG"), !1; var r = 2 , i = t.byteLength , o = function (e, t) { return 56 === e.getUint8(t) && 66 === e.getUint8(t + 1) && 73 === e.getUint8(t + 2) && 77 === e.getUint8(t + 3) && 4 === e.getUint8(t + 4) && 4 === e.getUint8(t + 5) }; for (; r < i;) { if (o(n, r)) { var a = n.getUint8(r + 7); return a % 2 != 0 && (a += 1), 0 === a && (a = 4), f(t, r + 8 + a, n.getUint16(r + 6 + a)) } r++ } }(i); if (n.iptcdata = a || {}, t.isXmpEnabled) { var s = function (t) { if (!("DOMParser" in self)) return; var n = new DataView(t); e && console.log("Got file of length " + t.byteLength); if (255 != n.getUint8(0) || 216 != n.getUint8(1)) return e && console.log("Not a valid JPEG"), !1; var r = 2 , i = t.byteLength , o = new DOMParser; for (; r < i - 4;) { if ("http" == p(n, r, 4)) { var a = r - 1 , s = n.getUint16(r - 2) - 1 , l = p(n, a, s) , u = l.indexOf("xmpmeta>") + 8 , c = (l = l.substring(l.indexOf(" 4 ? g : t + 8, a = [], l = 0; l < f; l++) a[l] = e.getUint8(o + l); return a; case 2: return p(e, o = f > 4 ? g : t + 8, f - 1); case 3: if (1 == f) return e.getUint16(t + 8, !i); for (o = f > 2 ? g : t + 8, a = [], l = 0; l < f; l++) a[l] = e.getUint16(o + 2 * l, !i); return a; case 4: if (1 == f) return e.getUint32(t + 8, !i); for (a = [], l = 0; l < f; l++) a[l] = e.getUint32(g + 4 * l, !i); return a; case 5: if (1 == f) return u = e.getUint32(g, !i), c = e.getUint32(g + 4, !i), (s = new Number(u / c)).numerator = u, s.denominator = c, s; for (a = [], l = 0; l < f; l++) u = e.getUint32(g + 8 * l, !i), c = e.getUint32(g + 4 + 8 * l, !i), a[l] = new Number(u / c), a[l].numerator = u, a[l].denominator = c; return a; case 9: if (1 == f) return e.getInt32(t + 8, !i); for (a = [], l = 0; l < f; l++) a[l] = e.getInt32(g + 4 * l, !i); return a; case 10: if (1 == f) return e.getInt32(g, !i) / e.getInt32(g + 4, !i); for (a = [], l = 0; l < f; l++) a[l] = e.getInt32(g + 8 * l, !i) / e.getInt32(g + 4 + 8 * l, !i); return a } } function p(e, t, r) { var i = ""; for (n = t; n < t + r; n++) i += String.fromCharCode(e.getUint8(n)); return i } function h(t, n) { if ("Exif" != p(t, n, 4)) return e && console.log("Not valid EXIF data! " + p(t, n, 4)), !1; var l, u, c, d, f, m = n + 6; if (18761 == t.getUint16(m)) l = !1; else { if (19789 != t.getUint16(m)) return e && console.log("Not valid TIFF data! (no 0x4949 or 0x4D4D)"), !1; l = !0 } if (42 != t.getUint16(m + 2, !l)) return e && console.log("Not valid TIFF data! (no 0x002A)"), !1; var h = t.getUint32(m + 4, !l); if (h < 8) return e && console.log("Not valid TIFF data! (First offset less than 8)", t.getUint32(m + 4, !l)), !1; if ((u = g(t, m, m + h, i, l)).ExifIFDPointer) for (c in d = g(t, m, m + u.ExifIFDPointer, r, l)) { switch (c) { case "LightSource": case "Flash": case "MeteringMode": case "ExposureProgram": case "SensingMethod": case "SceneCaptureType": case "SceneType": case "CustomRendered": case "WhiteBalance": case "GainControl": case "Contrast": case "Saturation": case "Sharpness": case "SubjectDistanceRange": case "FileSource": d[c] = s[c][d[c]]; break; case "ExifVersion": case "FlashpixVersion": d[c] = String.fromCharCode(d[c][0], d[c][1], d[c][2], d[c][3]); break; case "ComponentsConfiguration": d[c] = s.Components[d[c][0]] + s.Components[d[c][1]] + s.Components[d[c][2]] + s.Components[d[c][3]] } u[c] = d[c] } if (u.GPSInfoIFDPointer) for (c in f = g(t, m, m + u.GPSInfoIFDPointer, o, l)) { if ("GPSVersionID" === c) f[c] = f[c][0] + "." + f[c][1] + "." + f[c][2] + "." + f[c][3]; u[c] = f[c] } return u.thumbnail = function (e, t, n, r) { var i = function (e, t, n) { var r = e.getUint16(t, !n); return e.getUint32(t + 2 + 12 * r, !n) }(e, t + n, r); if (!i) return {}; if (i > e.byteLength) return {}; var o = g(e, t, t + i, a, r); if (o.Compression) switch (o.Compression) { case 6: if (o.JpegIFOffset && o.JpegIFByteCount) { var s = t + o.JpegIFOffset , l = o.JpegIFByteCount; o.blob = new Blob([new Uint8Array(e.buffer, s, l)], { type: "image/jpeg" }) } break; case 1: console.log("Thumbnail image format is TIFF, which is not implemented."); break; default: console.log("Unknown thumbnail image format '%s'", o.Compression) } else 2 == o.PhotometricInterpretation && console.log("Thumbnail image format is RGB, which is not implemented."); return o }(t, m, h, l), u } function S(e) { var t = {}; if (1 == e.nodeType) { if (e.attributes.length > 0) { t["@attributes"] = {}; for (var n = 0; n < e.attributes.length; n++) { var r = e.attributes.item(n); t["@attributes"][r.nodeName] = r.nodeValue } } } else if (3 == e.nodeType) return e.nodeValue; if (e.hasChildNodes()) for (var i = 0; i < e.childNodes.length; i++) { var o = e.childNodes.item(i) , a = o.nodeName; if (null == t[a]) t[a] = S(o); else { if (null == t[a].push) { var s = t[a]; t[a] = [], t[a].push(s) } t[a].push(S(o)) } } return t } function P(e) { try { var t = {}; if (e.children.length > 0) for (var n = 0; n < e.children.length; n++) { var r = e.children.item(n) , i = r.attributes; for (var o in i) { var a = i[o] , s = a.nodeName , l = a.nodeValue; void 0 !== s && (t[s] = l) } var u = r.nodeName; if (void 0 === t[u]) t[u] = S(r); else { if (void 0 === t[u].push) { var c = t[u]; t[u] = [], t[u].push(c) } t[u].push(S(r)) } } else t = e.textContent; return t } catch (e) { console.log(e.message) } } t.enableXmp = function () { t.isXmpEnabled = !0 } , t.disableXmp = function () { t.isXmpEnabled = !1 } , t.getData = function (e, t) { return !((self.Image && e instanceof self.Image || self.HTMLImageElement && e instanceof self.HTMLImageElement) && !e.complete) && (l(e) ? t && t.call(e) : u(e, t), !0) } , t.getTag = function (e, t) { if (l(e)) return e.exifdata[t] } , t.getIptcTag = function (e, t) { if (l(e)) return e.iptcdata[t] } , t.getAllTags = function (e) { if (!l(e)) return {}; var t, n = e.exifdata, r = {}; for (t in n) n.hasOwnProperty(t) && (r[t] = n[t]); return r } , t.getAllIptcTags = function (e) { if (!l(e)) return {}; var t, n = e.iptcdata, r = {}; for (t in n) n.hasOwnProperty(t) && (r[t] = n[t]); return r } , t.pretty = function (e) { if (!l(e)) return ""; var t, n = e.exifdata, r = ""; for (t in n) n.hasOwnProperty(t) && ("object" == typeof n[t] ? n[t] instanceof Number ? r += t + " : " + n[t] + " [" + n[t].numerator + "/" + n[t].denominator + "]\r\n" : r += t + " : [" + n[t].length + " values]\r\n" : r += t + " : " + n[t] + "\r\n"); return r } , t.readFromBinaryFile = function (e) { return c(e) } , "function" == typeof define && define.amd && define("exif-js", [], (function () { return t } )) } ).call(this); //# sourceMappingURL=/sm/6ee94704f089e78a892b589040cd71751949d20c252b29119d62547164729bd2.map