UNPKG

exifr

Version:

📷 The fastest and most versatile JavaScript EXIF reading library.

1 lines • 105 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define("exifr",["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).exifr={})}(this,(function(e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function r(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}});var n=["prototype","__proto__","caller","arguments","length","name"];Object.getOwnPropertyNames(t).forEach((function(r){-1===n.indexOf(r)&&e[r]!==t[r]&&(e[r]=t[r])})),t&&s(e,t)}function o(e){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function s(e,t){return(s=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function u(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function f(e,t,n){return(f=u()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&s(i,n.prototype),i}).apply(null,arguments)}function c(e){var t="function"==typeof Map?new Map:void 0;return(c=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return f(e,arguments,o(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),s(r,e)})(e)}function l(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?l(e):t}function d(e){var t=u();return function(){var n,r=o(e);if(t){var i=o(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return h(this,n)}}function p(e,t,n){return(p="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var r=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=o(e)););return e}(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(n):i.value}})(e,t,n||e)}var g="undefined"!=typeof self?self:global,v=Object.values||function(e){var t=[];for(var n in e)t.push(e[n]);return t},y=Object.entries||function(e){var t=[];for(var n in e)t.push([n,e[n]]);return t},m=Object.assign||function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return n.forEach((function(t){for(var n in t)e[n]=t[n]})),e},k=Object.fromEntries||function(e){var t={};return S(e).forEach((function(e){var n=e[0],r=e[1];t[n]=r})),t},S=Array.from||function(e){if(e instanceof A){var t=[];return e.forEach((function(e,n){return t.push([n,e])})),t}return Array.prototype.slice.call(e)};function C(e){return-1!==this.indexOf(e)}Array.prototype.includes||(Array.prototype.includes=C),String.prototype.includes||(String.prototype.includes=C),String.prototype.startsWith||(String.prototype.startsWith=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.substring(t,t+e.length)===e}),String.prototype.endsWith||(String.prototype.endsWith=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.length;return this.substring(t-e.length,t)===e});var P=function(e){var t=[];if(Object.defineProperties(t,{size:{get:function(){return this.length}},has:{value:function(e){return-1!==this.indexOf(e)}},add:{value:function(e){this.has(e)||this.push(e)}},delete:{value:function(e){if(this.has(e)){var t=this.indexOf(e);this.splice(t,1)}}}}),Array.isArray(e))for(var n=0;n<e.length;n++)t.add(e[n]);return t},b=function(e){return new A(e)},A=void 0!==g.Map&&void 0!==g.Map.prototype.keys?g.Map:function(){function e(n){if(t(this,e),this.clear(),n)for(var r=0;r<n.length;r++)this.set(n[r][0],n[r][1])}return r(e,[{key:"clear",value:function(){this._map={},this._keys=[]}},{key:"size",get:function(){return this._keys.length}},{key:"get",value:function(e){return this._map["map_"+e]}},{key:"set",value:function(e,t){return this._map["map_"+e]=t,this._keys.indexOf(e)<0&&this._keys.push(e),this}},{key:"has",value:function(e){return this._keys.indexOf(e)>=0}},{key:"delete",value:function(e){var t=this._keys.indexOf(e);return!(t<0)&&(delete this._map["map_"+e],this._keys.splice(t,1),!0)}},{key:"keys",value:function(){return this._keys.slice(0)}},{key:"values",value:function(){var e=this;return this._keys.map((function(t){return e.get(t)}))}},{key:"entries",value:function(){var e=this;return this._keys.map((function(t){return[t,e.get(t)]}))}},{key:"forEach",value:function(e,t){for(var n=0;n<this._keys.length;n++)e.call(t,this._map["map_"+this._keys[n]],this._keys[n],this)}}]),e}(),I=g.fetch;g.fetch||(I=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((function(n,r){var i=new XMLHttpRequest;if(i.open("get",e,!0),i.responseType="arraybuffer",i.onerror=r,t.headers)for(var a in t.headers)i.setRequestHeader(a,t.headers[a]);i.onload=function(){n({status:i.status,arrayBuffer:function(){return Promise.resolve(i.response)}})},i.send(null)}))});var T="undefined"!=typeof navigator,O=T&&"undefined"==typeof HTMLImageElement,D=!("undefined"==typeof global||"undefined"==typeof process||!process.versions||!process.versions.node),w=g.Buffer,x=g.BigInt,R=!!w,M=function(e){return U(e)?void 0:e},L=function(e){return void 0!==e};function U(e){return void 0===e||(e instanceof A?0===e.size:0===v(e).filter(L).length)}function F(e){var t=new Error(e);throw delete t.stack,t}function E(e){return""===(e=function(e){for(;e.endsWith("\0");)e=e.slice(0,-1);return e}(e).trim())?void 0:e}function B(e){var t=function(e){var t=0;return e.ifd0.enabled&&(t+=1024),e.exif.enabled&&(t+=2048),e.makerNote&&(t+=2048),e.userComment&&(t+=1024),e.gps.enabled&&(t+=512),e.interop.enabled&&(t+=100),e.ifd1.enabled&&(t+=1024),t+2048}(e);return e.jfif.enabled&&(t+=50),e.xmp.enabled&&(t+=2e4),e.iptc.enabled&&(t+=14e3),e.icc.enabled&&(t+=6e3),t}var N=function(e){return String.fromCharCode.apply(null,e)},G="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):void 0;function j(e){return G?G.decode(e):R?Buffer.from(e).toString("utf8"):decodeURIComponent(escape(N(e)))}var V=function(){function e(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0;if(t(this,e),"boolean"==typeof a&&(this.le=a),Array.isArray(n)&&(n=new Uint8Array(n)),0===n)this.byteOffset=0,this.byteLength=0;else if(n instanceof ArrayBuffer){void 0===i&&(i=n.byteLength-r);var o=new DataView(n,r,i);this._swapDataView(o)}else if(n instanceof Uint8Array||n instanceof DataView||n instanceof e){void 0===i&&(i=n.byteLength-r),(r+=n.byteOffset)+i>n.byteOffset+n.byteLength&&F("Creating view outside of available memory in ArrayBuffer");var s=new DataView(n.buffer,r,i);this._swapDataView(s)}else if("number"==typeof n){var u=new DataView(new ArrayBuffer(n));this._swapDataView(u)}else F("Invalid input argument for BufferView: "+n)}return r(e,[{key:"_swapArrayBuffer",value:function(e){this._swapDataView(new DataView(e))}},{key:"_swapBuffer",value:function(e){this._swapDataView(new DataView(e.buffer,e.byteOffset,e.byteLength))}},{key:"_swapDataView",value:function(e){this.dataView=e,this.buffer=e.buffer,this.byteOffset=e.byteOffset,this.byteLength=e.byteLength}},{key:"_lengthToEnd",value:function(e){return this.byteLength-e}},{key:"set",value:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;t instanceof DataView||t instanceof e?t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t instanceof ArrayBuffer&&(t=new Uint8Array(t)),t instanceof Uint8Array||F("BufferView.set(): Invalid data argument.");var i=this.toUint8();return i.set(t,n),new r(this,n,t.byteLength)}},{key:"subarray",value:function(t,n){return new e(this,t,n=n||this._lengthToEnd(t))}},{key:"toUint8",value:function(){return new Uint8Array(this.buffer,this.byteOffset,this.byteLength)}},{key:"getUint8Array",value:function(e,t){return new Uint8Array(this.buffer,this.byteOffset+e,t)}},{key:"getString",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.byteLength,n=this.getUint8Array(e,t);return j(n)}},{key:"getLatin1String",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.byteLength,n=this.getUint8Array(e,t);return N(n)}},{key:"getUnicodeString",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.byteLength,n=[],r=0;r<t&&e+r<this.byteLength;r+=2)n.push(this.getUint16(e+r));return N(n)}},{key:"getInt8",value:function(e){return this.dataView.getInt8(e)}},{key:"getUint8",value:function(e){return this.dataView.getUint8(e)}},{key:"getInt16",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.le;return this.dataView.getInt16(e,t)}},{key:"getInt32",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.le;return this.dataView.getInt32(e,t)}},{key:"getUint16",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.le;return this.dataView.getUint16(e,t)}},{key:"getUint32",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.le;return this.dataView.getUint32(e,t)}},{key:"getFloat32",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.le;return this.dataView.getFloat32(e,t)}},{key:"getFloat64",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.le;return this.dataView.getFloat64(e,t)}},{key:"getFloat",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.le;return this.dataView.getFloat32(e,t)}},{key:"getDouble",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.le;return this.dataView.getFloat64(e,t)}},{key:"getUintBytes",value:function(e,t,n){switch(t){case 1:return this.getUint8(e,n);case 2:return this.getUint16(e,n);case 4:return this.getUint32(e,n);case 8:return this.getUint64&&this.getUint64(e,n)}}},{key:"getUint",value:function(e,t,n){switch(t){case 8:return this.getUint8(e,n);case 16:return this.getUint16(e,n);case 32:return this.getUint32(e,n);case 64:return this.getUint64&&this.getUint64(e,n)}}},{key:"toString",value:function(e){return this.dataView.toString(e,this.constructor.name)}},{key:"ensureChunk",value:function(){}}],[{key:"from",value:function(t,n){return t instanceof this&&t.le===n?t:new e(t,void 0,void 0,n)}}]),e}();function z(e,t){F("".concat(e," '").concat(t,"' was not loaded, try using full build of exifr."))}var H=function(e){a(i,e);var n=d(i);function i(e){var r;return t(this,i),(r=n.call(this)).kind=e,r}return r(i,[{key:"get",value:function(e,t){return this.has(e)||z(this.kind,e),t&&(e in t||function(e,t){F("Unknown ".concat(e," '").concat(t,"'."))}(this.kind,e),t[e].enabled||z(this.kind,e)),p(o(i.prototype),"get",this).call(this,e)}},{key:"keyList",value:function(){return S(this.keys())}}]),i}(c(A)),_=new H("file parser"),W=new H("segment parser"),K=new H("file reader");function X(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}var Y=J((function(e,t){return X(t(e),(function(e){return new V(e)}))}));function J(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];try{return Promise.resolve(e.apply(this,t))}catch(e){return Promise.reject(e)}}}var q=J((function(e,t,n){var r=new(K.get(n))(e,t);return X(r.read(),(function(){return r}))})),Q=J((function(e,t,n,r){return K.has(n)?q(e,t,n):r?Y(e,r):(F("Parser ".concat(n," is not loaded")),X())})),Z="Invalid input argument";function $(e,t){return"string"==typeof e?ee(e,t):T&&!O&&e instanceof HTMLImageElement?ee(e.src,t):e instanceof Uint8Array||e instanceof ArrayBuffer||e instanceof DataView?new V(e):T&&e instanceof Blob?Q(e,t,"blob",ne):void F(Z)}function ee(e,t){return(n=e).startsWith("data:")||n.length>1e4?q(e,t,"base64"):D&&e.includes("://")?Q(e,t,"url",te):D?q(e,t,"fs"):T?Q(e,t,"url",te):void F(Z);var n}var te=function(e){return I(e).then((function(e){return e.arrayBuffer()}))},ne=function(e){return new Promise((function(t,n){var r=new FileReader;r.onloadend=function(){return t(r.result||new ArrayBuffer)},r.onerror=n,r.readAsArrayBuffer(e)}))};var re=function(e){a(i,e);var n=d(i);function i(){return t(this,i),n.apply(this,arguments)}return r(i,[{key:"tagKeys",get:function(){return this.allKeys||(this.allKeys=S(this.keys())),this.allKeys}},{key:"tagValues",get:function(){return this.allValues||(this.allValues=S(this.values())),this.allValues}}]),i}(c(A));function ie(e,t,n){var r=new re,i=n;Array.isArray(i)||("function"==typeof i.entries&&(i=i.entries()),i=S(i));for(var a=0;a<i.length;a++){var o=i[a],s=o[0],u=o[1];r.set(s,u)}if(Array.isArray(t)){var f=t;Array.isArray(f)||("function"==typeof f.entries&&(f=f.entries()),f=S(f));for(var c=0;c<f.length;c++){var l=f[c];e.set(l,r)}}else e.set(t,r);return r}function ae(e,t,n){var r,i=e.get(t),a=n;Array.isArray(a)||("function"==typeof a.entries&&(a=a.entries()),a=S(a));for(var o=0;o<a.length;o++)r=a[o],i.set(r[0],r[1])}var oe=b(),se=b(),ue=b(),fe=37500,ce=37510,le=700,he=33723,de=34675,pe=34665,ge=34853,ve=40965,ye=["chunked","firstChunkSize","firstChunkSizeNode","firstChunkSizeBrowser","chunkSize","chunkLimit"],me=["jfif","xmp","icc","iptc","ihdr"],ke=["tiff"].concat(me),Se=["ifd0","ifd1","exif","gps","interop"],Ce=[].concat(ke,Se),Pe=["makerNote","userComment"],be=["translateKeys","translateValues","reviveValues","multiSegment"],Ae=[].concat(be,["sanitize","mergeOutput","silentErrors"]),Ie=function(){function e(){t(this,e)}return r(e,[{key:"translate",get:function(){return this.translateKeys||this.translateValues||this.reviveValues}}]),e}(),Te=function(e){a(o,e);var n=d(o);function o(e,r,a,s){var u;if(t(this,o),i(l(u=n.call(this)),"enabled",!1),i(l(u),"skip",P()),i(l(u),"pick",P()),i(l(u),"deps",P()),i(l(u),"translateKeys",!1),i(l(u),"translateValues",!1),i(l(u),"reviveValues",!1),u.key=e,u.enabled=r,u.parse=u.enabled,u.applyInheritables(s),u.canBeFiltered=Se.includes(e),u.canBeFiltered&&(u.dict=oe.get(e)),void 0!==a)if(Array.isArray(a))u.parse=u.enabled=!0,u.canBeFiltered&&a.length>0&&u.translateTagSet(a,u.pick);else if("object"==typeof a){if(u.enabled=!0,u.parse=!1!==a.parse,u.canBeFiltered){var f=a.pick,c=a.skip;f&&f.length>0&&u.translateTagSet(f,u.pick),c&&c.length>0&&u.translateTagSet(c,u.skip)}u.applyInheritables(a)}else!0===a||!1===a?u.parse=u.enabled=a:F("Invalid options argument: ".concat(a));return u}return r(o,[{key:"needed",get:function(){return this.enabled||this.deps.size>0}},{key:"applyInheritables",value:function(e){var t,n,r=be;Array.isArray(r)||("function"==typeof r.entries&&(r=r.entries()),r=S(r));for(var i=0;i<r.length;i++)void 0!==(n=e[t=r[i]])&&(this[t]=n)}},{key:"translateTagSet",value:function(e,t){if(this.dict){var n,r,i=this.dict,a=i.tagKeys,o=i.tagValues,s=e;Array.isArray(s)||("function"==typeof s.entries&&(s=s.entries()),s=S(s));for(var u=0;u<s.length;u++)"string"==typeof(n=s[u])?(-1===(r=o.indexOf(n))&&(r=a.indexOf(Number(n))),-1!==r&&t.add(Number(a[r]))):t.add(n)}else{var f=e;Array.isArray(f)||("function"==typeof f.entries&&(f=f.entries()),f=S(f));for(var c=0;c<f.length;c++){var l=f[c];t.add(l)}}}},{key:"finalizeFilters",value:function(){!this.enabled&&this.deps.size>0?(this.enabled=!0,Me(this.pick,this.deps)):this.enabled&&this.pick.size>0&&Me(this.pick,this.deps)}}]),o}(Ie),Oe={jfif:!1,tiff:!0,xmp:!1,icc:!1,iptc:!1,ifd0:!0,ifd1:!1,exif:!0,gps:!0,interop:!1,ihdr:void 0,makerNote:!1,userComment:!1,multiSegment:!1,skip:[],pick:[],translateKeys:!0,translateValues:!0,reviveValues:!0,sanitize:!0,mergeOutput:!0,silentErrors:!0,chunked:!0,firstChunkSize:void 0,firstChunkSizeNode:512,firstChunkSizeBrowser:65536,chunkSize:65536,chunkLimit:5},De=b(),we=function(e){a(i,e);var n=d(i);function i(e){var r;return t(this,i),r=n.call(this),!0===e?r.setupFromTrue():void 0===e?r.setupFromUndefined():Array.isArray(e)?r.setupFromArray(e):"object"==typeof e?r.setupFromObject(e):F("Invalid options argument ".concat(e)),void 0===r.firstChunkSize&&(r.firstChunkSize=T?r.firstChunkSizeBrowser:r.firstChunkSizeNode),r.mergeOutput&&(r.ifd1.enabled=!1),r.filterNestedSegmentTags(),r.traverseTiffDependencyTree(),r.checkLoadedPlugins(),r}return r(i,[{key:"setupFromUndefined",value:function(){var e,t=ye;Array.isArray(t)||("function"==typeof t.entries&&(t=t.entries()),t=S(t));for(var n=0;n<t.length;n++)this[e=t[n]]=Oe[e];var r=Ae;Array.isArray(r)||("function"==typeof r.entries&&(r=r.entries()),r=S(r));for(var i=0;i<r.length;i++)this[e=r[i]]=Oe[e];var a=Pe;Array.isArray(a)||("function"==typeof a.entries&&(a=a.entries()),a=S(a));for(var o=0;o<a.length;o++)this[e=a[o]]=Oe[e];var s=Ce;Array.isArray(s)||("function"==typeof s.entries&&(s=s.entries()),s=S(s));for(var u=0;u<s.length;u++)this[e=s[u]]=new Te(e,Oe[e],void 0,this)}},{key:"setupFromTrue",value:function(){var e,t=ye;Array.isArray(t)||("function"==typeof t.entries&&(t=t.entries()),t=S(t));for(var n=0;n<t.length;n++)this[e=t[n]]=Oe[e];var r=Ae;Array.isArray(r)||("function"==typeof r.entries&&(r=r.entries()),r=S(r));for(var i=0;i<r.length;i++)this[e=r[i]]=Oe[e];var a=Pe;Array.isArray(a)||("function"==typeof a.entries&&(a=a.entries()),a=S(a));for(var o=0;o<a.length;o++)this[e=a[o]]=!0;var s=Ce;Array.isArray(s)||("function"==typeof s.entries&&(s=s.entries()),s=S(s));for(var u=0;u<s.length;u++)this[e=s[u]]=new Te(e,!0,void 0,this)}},{key:"setupFromArray",value:function(e){var t,n=ye;Array.isArray(n)||("function"==typeof n.entries&&(n=n.entries()),n=S(n));for(var r=0;r<n.length;r++)this[t=n[r]]=Oe[t];var i=Ae;Array.isArray(i)||("function"==typeof i.entries&&(i=i.entries()),i=S(i));for(var a=0;a<i.length;a++)this[t=i[a]]=Oe[t];var o=Pe;Array.isArray(o)||("function"==typeof o.entries&&(o=o.entries()),o=S(o));for(var s=0;s<o.length;s++)this[t=o[s]]=Oe[t];var u=Ce;Array.isArray(u)||("function"==typeof u.entries&&(u=u.entries()),u=S(u));for(var f=0;f<u.length;f++)this[t=u[f]]=new Te(t,!1,void 0,this);this.setupGlobalFilters(e,void 0,Se)}},{key:"setupFromObject",value:function(e){var t;Se.ifd0=Se.ifd0||Se.image,Se.ifd1=Se.ifd1||Se.thumbnail,m(this,e);var n=ye;Array.isArray(n)||("function"==typeof n.entries&&(n=n.entries()),n=S(n));for(var r=0;r<n.length;r++)this[t=n[r]]=Re(e[t],Oe[t]);var i=Ae;Array.isArray(i)||("function"==typeof i.entries&&(i=i.entries()),i=S(i));for(var a=0;a<i.length;a++)this[t=i[a]]=Re(e[t],Oe[t]);var o=Pe;Array.isArray(o)||("function"==typeof o.entries&&(o=o.entries()),o=S(o));for(var s=0;s<o.length;s++)this[t=o[s]]=Re(e[t],Oe[t]);var u=ke;Array.isArray(u)||("function"==typeof u.entries&&(u=u.entries()),u=S(u));for(var f=0;f<u.length;f++)this[t=u[f]]=new Te(t,Oe[t],e[t],this);var c=Se;Array.isArray(c)||("function"==typeof c.entries&&(c=c.entries()),c=S(c));for(var l=0;l<c.length;l++)this[t=c[l]]=new Te(t,Oe[t],e[t],this.tiff);this.setupGlobalFilters(e.pick,e.skip,Se,Ce),!0===e.tiff?this.batchEnableWithBool(Se,!0):!1===e.tiff?this.batchEnableWithUserValue(Se,e):Array.isArray(e.tiff)?this.setupGlobalFilters(e.tiff,void 0,Se):"object"==typeof e.tiff&&this.setupGlobalFilters(e.tiff.pick,e.tiff.skip,Se)}},{key:"batchEnableWithBool",value:function(e,t){var n=e;Array.isArray(n)||("function"==typeof n.entries&&(n=n.entries()),n=S(n));for(var r=0;r<n.length;r++){this[n[r]].enabled=t}}},{key:"batchEnableWithUserValue",value:function(e,t){var n=e;Array.isArray(n)||("function"==typeof n.entries&&(n=n.entries()),n=S(n));for(var r=0;r<n.length;r++){var i=n[r],a=t[i];this[i].enabled=!1!==a&&void 0!==a}}},{key:"setupGlobalFilters",value:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:n;if(e&&e.length){var i=r;Array.isArray(i)||("function"==typeof i.entries&&(i=i.entries()),i=S(i));for(var a=0;a<i.length;a++){var o=i[a];this[o].enabled=!1}var s=xe(e,n),u=s;Array.isArray(u)||("function"==typeof u.entries&&(u=u.entries()),u=S(u));for(var f=0;f<u.length;f++){var c=u[f],l=c[0],h=c[1];Me(this[l].pick,h),this[l].enabled=!0}}else if(t&&t.length){var d=xe(t,n),p=d;Array.isArray(p)||("function"==typeof p.entries&&(p=p.entries()),p=S(p));for(var g=0;g<p.length;g++){var v=p[g],y=v[0],m=v[1];Me(this[y].skip,m)}}}},{key:"filterNestedSegmentTags",value:function(){var e=this.ifd0,t=this.exif,n=this.xmp,r=this.iptc,i=this.icc;this.makerNote?t.deps.add(fe):t.skip.add(fe),this.userComment?t.deps.add(ce):t.skip.add(ce),n.enabled||e.skip.add(le),r.enabled||e.skip.add(he),i.enabled||e.skip.add(de)}},{key:"traverseTiffDependencyTree",value:function(){var e=this,t=this.ifd0,n=this.exif,r=this.gps;this.interop.needed&&(n.deps.add(ve),t.deps.add(ve)),n.needed&&t.deps.add(pe),r.needed&&t.deps.add(ge),this.tiff.enabled=Se.some((function(t){return!0===e[t].enabled}))||this.makerNote||this.userComment;var i=Se;Array.isArray(i)||("function"==typeof i.entries&&(i=i.entries()),i=S(i));for(var a=0;a<i.length;a++){this[i[a]].finalizeFilters()}}},{key:"onlyTiff",get:function(){var e=this;return!me.map((function(t){return e[t].enabled})).some((function(e){return!0===e}))&&this.tiff.enabled}},{key:"checkLoadedPlugins",value:function(){var e=ke;Array.isArray(e)||("function"==typeof e.entries&&(e=e.entries()),e=S(e));for(var t=0;t<e.length;t++){var n=e[t];this[n].enabled&&!W.has(n)&&z("segment parser",n)}}}],[{key:"useCached",value:function(e){var t=De.get(e);return void 0!==t||(t=new this(e),De.set(e,t)),t}}]),i}(Ie);function xe(e,t){var n,r,i,a=[],o=t;Array.isArray(o)||("function"==typeof o.entries&&(o=o.entries()),o=S(o));for(var s=0;s<o.length;s++){r=o[s],n=[];var u=oe.get(r);Array.isArray(u)||("function"==typeof u.entries&&(u=u.entries()),u=S(u));for(var f=0;f<u.length;f++)i=u[f],(e.includes(i[0])||e.includes(i[1]))&&n.push(i[0]);n.length&&a.push([r,n])}return a}function Re(e,t){return void 0!==e?e:void 0!==t?t:void 0}function Me(e,t){var n=t;Array.isArray(n)||("function"==typeof n.entries&&(n=n.entries()),n=S(n));for(var r=0;r<n.length;r++){var i=n[r];e.add(i)}}function Le(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}function Ue(){}function Fe(e,t){if(!t)return e&&e.then?e.then(Ue):Promise.resolve()}function Ee(e,t){var n=e();return n&&n.then?n.then(t):t(n)}i(we,"default",Oe);var Be=function(){function e(n){var r=this;t(this,e),i(this,"parsers",{}),i(this,"output",{}),i(this,"errors",[]),i(this,"pushToErrors",(function(e){return r.errors.push(e)})),this.options=we.useCached(n)}return r(e,[{key:"read",value:function(e){try{var t=this;return Le($(e,t.options),(function(e){t.file=e}))}catch(e){return Promise.reject(e)}}},{key:"setup",value:function(){if(!this.fileParser){var e=this.file,t=e.getUint16(0),n=_;Array.isArray(n)||("function"==typeof n.entries&&(n=n.entries()),n=S(n));for(var r=0;r<n.length;r++){var i=n[r],a=i[0],o=i[1];if(o.canHandle(e,t))return this.fileParser=new o(this.options,this.file,this.parsers),e[a]=!0}this.file.close&&this.file.close(),F("Unknown file format")}}},{key:"parse",value:function(){try{var e=this,t=e.output,n=e.errors;return e.setup(),Ee((function(){return e.options.silentErrors?Le(e.executeParsers().catch(e.pushToErrors),(function(){n.push.apply(n,e.fileParser.errors)})):Fe(e.executeParsers())}),(function(){return e.file.close&&e.file.close(),e.options.silentErrors&&n.length>0&&(t.errors=n),M(t)}))}catch(e){return Promise.reject(e)}}},{key:"executeParsers",value:function(){try{var e=this,t=e.output;return Le(e.fileParser.parse(),(function(){var n=v(e.parsers).map(function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];try{return Promise.resolve(e.apply(this,t))}catch(e){return Promise.reject(e)}}}((function(e){return Le(e.parse(),(function(n){e.assignToOutput(t,n)}))})));return e.options.silentErrors&&(n=n.map((function(t){return t.catch(e.pushToErrors)}))),Fe(Promise.all(n))}))}catch(e){return Promise.reject(e)}}},{key:"extractThumbnail",value:function(){try{var e=this;e.setup();var t,n=e.options,r=e.file,i=W.get("tiff",n);return Ee((function(){if(!r.tiff)return function(e){var t=e();if(t&&t.then)return t.then(Ue)}((function(){if(r.jpeg)return Le(e.fileParser.getOrFindSegment("tiff"),(function(e){t=e}))}));t={start:0,type:"tiff"}}),(function(){if(void 0!==t)return Le(e.fileParser.ensureSegmentChunk(t),(function(t){return Le((e.parsers.tiff=new i(t,n,r)).extractThumbnail(),(function(e){return r.close&&r.close(),e}))}))}))}catch(e){return Promise.reject(e)}}}]),e}();var Ne=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];try{return Promise.resolve(e.apply(this,t))}catch(e){return Promise.reject(e)}}}((function(e,t){var n,r,i,a=new Be(t);return n=a.read(e),r=function(){return a.parse()},i?r?r(n):n:(n&&n.then||(n=Promise.resolve(n)),r?n.then(r):n)})),Ge=Object.freeze({__proto__:null,parse:Ne,Exifr:Be,fileParsers:_,segmentParsers:W,fileReaders:K,tagKeys:oe,tagValues:se,tagRevivers:ue,createDictionary:ie,extendDictionary:ae,fetchUrlAsArrayBuffer:te,readBlobAsArrayBuffer:ne,chunkedProps:ye,otherSegments:me,segments:ke,tiffBlocks:Se,segmentsAndBlocks:Ce,tiffExtractables:Pe,inheritables:be,allFormatters:Ae,Options:we});function je(){}var Ve=function(){function e(n,r,a){var o=this;t(this,e),i(this,"errors",[]),i(this,"ensureSegmentChunk",function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];try{return Promise.resolve(e.apply(this,t))}catch(e){return Promise.reject(e)}}}((function(e){var t,n,r,i=e.start,a=e.size||65536;return t=function(){if(o.file.chunked)return function(e){var t=e();if(t&&t.then)return t.then(je)}((function(){if(!o.file.available(i,a))return function(e){if(e&&e.then)return e.then(je)}(function(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}((function(){return t=o.file.readChunk(i,a),n=function(t){e.chunk=t},r?n?n(t):t:(t&&t.then||(t=Promise.resolve(t)),n?t.then(n):t);var t,n,r}),(function(t){F("Couldn't read segment: ".concat(JSON.stringify(e),". ").concat(t.message))})));e.chunk=o.file.subarray(i,a)}));o.file.byteLength>i+a?e.chunk=o.file.subarray(i,a):void 0===e.size?e.chunk=o.file.subarray(i):F("Segment unreachable: "+JSON.stringify(e))},n=function(){return e.chunk},(r=t())&&r.then?r.then(n):n(r)}))),this.extendOptions&&this.extendOptions(n),this.options=n,this.file=r,this.parsers=a}return r(e,[{key:"injectSegment",value:function(e,t){this.options[e].enabled&&this.createParser(e,t)}},{key:"createParser",value:function(e,t){var n=new(W.get(e))(t,this.options,this.file);return this.parsers[e]=n}},{key:"createParsers",value:function(e){var t=e;Array.isArray(t)||("function"==typeof t.entries&&(t=t.entries()),t=S(t));for(var n=0;n<t.length;n++){var r=t[n],i=r.type,a=r.chunk,o=this.options[i];if(o&&o.enabled){var s=this.parsers[i];s&&s.append||s||this.createParser(i,a)}}}},{key:"readSegments",value:function(e){try{var t=e.map(this.ensureSegmentChunk);return function(e,t){if(!t)return e&&e.then?e.then(je):Promise.resolve()}(Promise.all(t))}catch(e){return Promise.reject(e)}}}]),e}(),ze=function(){function e(n){var r=this,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;t(this,e),i(this,"errors",[]),i(this,"raw",b()),i(this,"handleError",(function(e){if(!r.options.silentErrors)throw e;r.errors.push(e.message)})),this.chunk=this.normalizeInput(n),this.file=o,this.type=this.constructor.type,this.globalOptions=this.options=a,this.localOptions=a[this.type],this.canTranslate=this.localOptions&&this.localOptions.translate}return r(e,[{key:"normalizeInput",value:function(e){return e instanceof V?e:new V(e)}},{key:"translate",value:function(){this.canTranslate&&(this.translated=this.translateBlock(this.raw,this.type))}},{key:"output",get:function(){return this.translated?this.translated:this.raw?k(this.raw):void 0}},{key:"translateBlock",value:function(e,t){var n=ue.get(t),r=se.get(t),i=oe.get(t),a=this.options[t],o=a.reviveValues&&!!n,s=a.translateValues&&!!r,u=a.translateKeys&&!!i,f={},c=e;Array.isArray(c)||("function"==typeof c.entries&&(c=c.entries()),c=S(c));for(var l=0;l<c.length;l++){var h=c[l],d=h[0],p=h[1];o&&n.has(d)?p=n.get(d)(p):s&&r.has(d)&&(p=this.translateValue(p,r.get(d))),u&&i.has(d)&&(d=i.get(d)||d),f[d]=p}return f}},{key:"translateValue",value:function(e,t){return t[e]||t.DEFAULT||e}},{key:"assignToOutput",value:function(e,t){this.assignObjectToOutput(e,this.constructor.type,t)}},{key:"assignObjectToOutput",value:function(e,t,n){if(this.globalOptions.mergeOutput)return m(e,n);e[t]?m(e[t],n):e[t]=n}}],[{key:"findPosition",value:function(e,t){var n=e.getUint16(t+2)+2,r="function"==typeof this.headerLength?this.headerLength(e,t,n):this.headerLength,i=t+r,a=n-r;return{offset:t,length:n,headerLength:r,start:i,size:a,end:i+a}}},{key:"parse",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=new we(i({},this.type,t)),r=new this(e,n,e);return r.parse()}}]),e}();function He(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}i(ze,"headerLength",4),i(ze,"type",void 0),i(ze,"multiSegment",!1),i(ze,"canHandle",(function(){return!1}));function _e(){}function We(e,t){if(!t)return e&&e.then?e.then(_e):Promise.resolve()}function Ke(e){var t=e();if(t&&t.then)return t.then(_e)}function Xe(e,t){var n=e();return n&&n.then?n.then(t):t(n)}function Ye(e,t,n){if(!e.s){if(n instanceof Je){if(!n.s)return void(n.o=Ye.bind(null,e,t));1&t&&(t=n.s),n=n.v}if(n&&n.then)return void n.then(Ye.bind(null,e,t),Ye.bind(null,e,2));e.s=t,e.v=n;var r=e.o;r&&r(e)}}var Je=function(){function e(){}return e.prototype.then=function(t,n){var r=new e,i=this.s;if(i){var a=1&i?t:n;if(a){try{Ye(r,1,a(this.v))}catch(e){Ye(r,2,e)}return r}return this}return this.o=function(e){try{var i=e.v;1&e.s?Ye(r,1,t?t(i):i):n?Ye(r,1,n(i)):Ye(r,2,i)}catch(e){Ye(r,2,e)}},r},e}();function qe(e){return e instanceof Je&&1&e.s}function Qe(e,t,n){for(var r;;){var i=e();if(qe(i)&&(i=i.v),!i)return a;if(i.then){r=0;break}var a=n();if(a&&a.then){if(!qe(a)){r=1;break}a=a.s}if(t){var o=t();if(o&&o.then&&!qe(o)){r=2;break}}}var s=new Je,u=Ye.bind(null,s,2);return(0===r?i.then(c):1===r?a.then(f):o.then(l)).then(void 0,u),s;function f(r){a=r;do{if(t&&(o=t())&&o.then&&!qe(o))return void o.then(l).then(void 0,u);if(!(i=e())||qe(i)&&!i.v)return void Ye(s,1,a);if(i.then)return void i.then(c).then(void 0,u);qe(a=n())&&(a=a.v)}while(!a||!a.then);a.then(f).then(void 0,u)}function c(e){e?(a=n())&&a.then?a.then(f).then(void 0,u):f(a):Ye(s,1,a)}function l(){(i=e())?i.then?i.then(c).then(void 0,u):c(i):Ye(s,1,a)}}function Ze(e){return 192===e||194===e||196===e||219===e||221===e||218===e||254===e}function $e(e){return e>=224&&e<=239}function et(e,t,n){var r=W;Array.isArray(r)||("function"==typeof r.entries&&(r=r.entries()),r=S(r));for(var i=0;i<r.length;i++){var a=r[i],o=a[0];if(a[1].canHandle(e,t,n))return o}}var tt=function(e){a(o,e);var n=d(o);function o(){var e;t(this,o);for(var r=arguments.length,a=new Array(r),s=0;s<r;s++)a[s]=arguments[s];return i(l(e=n.call.apply(n,[this].concat(a))),"appSegments",[]),i(l(e),"jpegSegments",[]),i(l(e),"unknownSegments",[]),e}return r(o,[{key:"parse",value:function(){try{var e=this;return He(e.findAppSegments(),(function(){return He(e.readSegments(e.appSegments),(function(){e.mergeMultiSegments(),e.createParsers(e.mergedAppSegments||e.appSegments)}))}))}catch(e){return Promise.reject(e)}}},{key:"setupSegmentFinderArgs",value:function(e){var t=this;!0===e?(this.findAll=!0,this.wanted=P(W.keyList())):(e=void 0===e?W.keyList().filter((function(e){return t.options[e].enabled})):e.filter((function(e){return t.options[e].enabled&&W.has(e)})),this.findAll=!1,this.remaining=P(e),this.wanted=P(e)),this.unfinishedMultiSegment=!1}},{key:"findAppSegments",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1?arguments[1]:void 0;try{var n=this;n.setupSegmentFinderArgs(t);var r=n.file,i=n.findAll,a=n.wanted,o=n.remaining;return Xe((function(){if(!i&&n.file.chunked)return i=S(a).some((function(e){var t=W.get(e),r=n.options[e];return t.multiSegment&&r.multiSegment})),Ke((function(){if(i)return We(n.file.readWhole())}))}),(function(){var t=!1;if(e=n.findAppSegmentsInRange(e,r.byteLength),!n.options.onlyTiff)return function(){if(r.chunked){var i=!1;return Qe((function(){return!t&&o.size>0&&!i&&(!!r.canReadNextChunk||!!n.unfinishedMultiSegment)}),void 0,(function(){var a=r.nextChunkOffset,o=n.appSegments.some((function(e){return!n.file.available(e.offset||e.start,e.length||e.size)}));return Xe((function(){return e>a&&!o?He(r.readNextChunk(e),(function(e){i=!e})):He(r.readNextChunk(a),(function(e){i=!e}))}),(function(){void 0===(e=n.findAppSegmentsInRange(e,r.byteLength))&&(t=!0)}))}))}}()}))}catch(e){return Promise.reject(e)}}},{key:"findAppSegmentsInRange",value:function(e,t){t-=2;for(var n,r,i,a,o,s,u=this.file,f=this.findAll,c=this.wanted,l=this.remaining,h=this.options;e<t;e++)if(255===u.getUint8(e))if($e(n=u.getUint8(e+1))){if(r=u.getUint16(e+2),(i=et(u,e,r))&&c.has(i)&&(o=(a=W.get(i)).findPosition(u,e),s=h[i],o.type=i,this.appSegments.push(o),!f&&(a.multiSegment&&s.multiSegment?(this.unfinishedMultiSegment=o.chunkNumber<o.chunkCount,this.unfinishedMultiSegment||l.delete(i)):l.delete(i),0===l.size)))break;h.recordUnknownSegments&&((o=ze.findPosition(u,e)).marker=n,this.unknownSegments.push(o)),e+=r+1}else if(Ze(n)){if(r=u.getUint16(e+2),218===n&&!1!==h.stopAfterSos)return;h.recordJpegSegments&&this.jpegSegments.push({offset:e,length:r,marker:n}),e+=r+1}return e}},{key:"mergeMultiSegments",value:function(){var e=this;if(this.appSegments.some((function(e){return e.multiSegment}))){var t=function(e,t){for(var n,r,i,a=b(),o=0;o<e.length;o++)r=(n=e[o])[t],a.has(r)?i=a.get(r):a.set(r,i=[]),i.push(n);return S(a)}(this.appSegments,"type");this.mergedAppSegments=t.map((function(t){var n=t[0],r=t[1],i=W.get(n,e.options);return i.handleMultiSegments?{type:n,chunk:i.handleMultiSegments(r)}:r[0]}))}}},{key:"getSegment",value:function(e){return this.appSegments.find((function(t){return t.type===e}))}},{key:"getOrFindSegment",value:function(e){try{var t=this,n=t.getSegment(e);return Xe((function(){if(void 0===n)return He(t.findAppSegments(0,[e]),(function(){n=t.getSegment(e)}))}),(function(){return n}))}catch(e){return Promise.reject(e)}}}],[{key:"canHandle",value:function(e,t){return 65496===t}}]),o}(Ve);function nt(){}i(tt,"type","jpeg"),_.set("jpeg",tt);function rt(e,t){if(!t)return e&&e.then?e.then(nt):Promise.resolve()}function it(e,t){var n=e();return n&&n.then?n.then(t):t(n)}var at=[void 0,1,1,2,4,8,1,1,2,4,8,4,8,4];var ot=function(e){a(i,e);var n=d(i);function i(){return t(this,i),n.apply(this,arguments)}return r(i,[{key:"parse",value:function(){try{var e=this;e.parseHeader();var t=e.options;return it((function(){if(t.ifd0.enabled)return rt(e.parseIfd0Block())}),(function(){return it((function(){if(t.exif.enabled)return rt(e.safeParse("parseExifBlock"))}),(function(){return it((function(){if(t.gps.enabled)return rt(e.safeParse("parseGpsBlock"))}),(function(){return it((function(){if(t.interop.enabled)return rt(e.safeParse("parseInteropBlock"))}),(function(){return it((function(){if(t.ifd1.enabled)return rt(e.safeParse("parseThumbnailBlock"))}),(function(){return e.createOutput()}))}))}))}))}))}catch(e){return Promise.reject(e)}}},{key:"safeParse",value:function(e){var t=this[e]();return void 0!==t.catch&&(t=t.catch(this.handleError)),t}},{key:"findIfd0Offset",value:function(){void 0===this.ifd0Offset&&(this.ifd0Offset=this.chunk.getUint32(4))}},{key:"findIfd1Offset",value:function(){if(void 0===this.ifd1Offset){this.findIfd0Offset();var e=this.chunk.getUint16(this.ifd0Offset),t=this.ifd0Offset+2+12*e;this.ifd1Offset=this.chunk.getUint32(t)}}},{key:"parseBlock",value:function(e,t){var n=b();return this[t]=n,this.parseTags(e,t,n),n}},{key:"parseIfd0Block",value:function(){try{var e=this;if(e.ifd0)return;var t=e.file;return e.findIfd0Offset(),e.ifd0Offset<8&&F("Malformed EXIF data"),!t.chunked&&e.ifd0Offset>t.byteLength&&F("IFD0 offset points to outside of file.\nthis.ifd0Offset: ".concat(e.ifd0Offset,", file.byteLength: ").concat(t.byteLength)),it((function(){if(t.tiff)return rt(t.ensureChunk(e.ifd0Offset,B(e.options)))}),(function(){var t=e.parseBlock(e.ifd0Offset,"ifd0");if(0!==t.size)return e.exifOffset=t.get(pe),e.interopOffset=t.get(ve),e.gpsOffset=t.get(ge),e.xmp=t.get(le),e.iptc=t.get(he),e.icc=t.get(de),e.options.sanitize&&(t.delete(pe),t.delete(ve),t.delete(ge),t.delete(le),t.delete(he),t.delete(de)),t}))}catch(e){return Promise.reject(e)}}},{key:"parseExifBlock",value:function(){try{var e=this;if(e.exif)return;return it((function(){if(!e.ifd0)return rt(e.parseIfd0Block())}),(function(){if(void 0!==e.exifOffset)return it((function(){if(e.file.tiff)return rt(e.file.ensureChunk(e.exifOffset,B(e.options)))}),(function(){var t=e.parseBlock(e.exifOffset,"exif");return e.interopOffset||(e.interopOffset=t.get(ve)),e.makerNote=t.get(fe),e.userComment=t.get(ce),e.options.sanitize&&(t.delete(ve),t.delete(fe),t.delete(ce)),e.unpack(t,41728),e.unpack(t,41729),t}))}))}catch(e){return Promise.reject(e)}}},{key:"unpack",value:function(e,t){var n=e.get(t);n&&1===n.length&&e.set(t,n[0])}},{key:"parseGpsBlock",value:function(){try{var e=this;if(e.gps)return;return it((function(){if(!e.ifd0)return rt(e.parseIfd0Block())}),(function(){if(void 0!==e.gpsOffset){var t=e.parseBlock(e.gpsOffset,"gps");return t&&t.has(2)&&t.has(4)&&(t.set("latitude",st.apply(void 0,t.get(2).concat([t.get(1)]))),t.set("longitude",st.apply(void 0,t.get(4).concat([t.get(3)])))),t}}))}catch(e){return Promise.reject(e)}}},{key:"parseInteropBlock",value:function(){try{var e=this;if(e.interop)return;return it((function(){if(!e.ifd0)return rt(e.parseIfd0Block())}),(function(){return it((function(){if(void 0===e.interopOffset&&!e.exif)return rt(e.parseExifBlock())}),(function(){if(void 0!==e.interopOffset)return e.parseBlock(e.interopOffset,"interop")}))}))}catch(e){return Promise.reject(e)}}},{key:"parseThumbnailBlock",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];try{var t=this;if(t.ifd1||t.ifd1Parsed)return;if(t.options.mergeOutput&&!e)return;return t.findIfd1Offset(),t.ifd1Offset>0&&(t.parseBlock(t.ifd1Offset,"ifd1"),t.ifd1Parsed=!0),t.ifd1}catch(e){return Promise.reject(e)}}},{key:"extractThumbnail",value:function(){try{var e=this;return e.headerParsed||e.parseHeader(),it((function(){if(!e.ifd1Parsed)return rt(e.parseThumbnailBlock(!0))}),(function(){if(void 0!==e.ifd1){var t=e.ifd1.get(513),n=e.ifd1.get(514);return e.chunk.getUint8Array(t,n)}}))}catch(e){return Promise.reject(e)}}},{key:"image",get:function(){return this.ifd0}},{key:"thumbnail",get:function(){return this.ifd1}},{key:"createOutput",value:function(){var e,t,n,r={},i=Se;Array.isArray(i)||("function"==typeof i.entries&&(i=i.entries()),i=S(i));for(var a=0;a<i.length;a++)if(!U(e=this[t=i[a]]))if(n=this.canTranslate?this.translateBlock(e,t):k(e),this.options.mergeOutput){if("ifd1"===t)continue;m(r,n)}else r[t]=n;return this.makerNote&&(r.makerNote=this.makerNote),this.userComment&&(r.userComment=this.userComment),r}},{key:"assignToOutput",value:function(e,t){if(this.globalOptions.mergeOutput)m(e,t);else{var n=y(t);Array.isArray(n)||("function"==typeof n.entries&&(n=n.entries()),n=S(n));for(var r=0;r<n.length;r++){var i=n[r],a=i[0],o=i[1];this.assignObjectToOutput(e,a,o)}}}}],[{key:"canHandle",value:function(e,t){return 225===e.getUint8(t+1)&&1165519206===e.getUint32(t+4)&&0===e.getUint16(t+8)}}]),i}(function(e){a(i,e);var n=d(i);function i(){return t(this,i),n.apply(this,arguments)}return r(i,[{key:"parseHeader",value:function(){var e=this.chunk.getUint16();18761===e?this.le=!0:19789===e&&(this.le=!1),this.chunk.le=this.le,this.headerParsed=!0}},{key:"parseTags",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:b(),r=this.options[t],i=r.pick,a=r.skip,o=(i=P(i)).size>0,s=0===a.size,u=this.chunk.getUint16(e);e+=2;for(var f=0;f<u;f++){var c=this.chunk.getUint16(e);if(o){if(i.has(c)&&(n.set(c,this.parseTag(e,c,t)),i.delete(c),0===i.size))break}else!s&&a.has(c)||n.set(c,this.parseTag(e,c,t));e+=12}return n}},{key:"parseTag",value:function(e,t,n){var r=this.chunk,i=r.getUint16(e+2),a=r.getUint32(e+4),o=at[i];if(o*a<=4?e+=8:e=r.getUint32(e+8),(i<1||i>13)&&F("Invalid TIFF value type. block: ".concat(n.toUpperCase(),", tag: ").concat(t.toString(16),", type: ").concat(i,", offset ").concat(e)),e>r.byteLength&&F("Invalid TIFF value offset. block: ".concat(n.toUpperCase(),", tag: ").concat(t.toString(16),", type: ").concat(i,", offset ").concat(e," is outside of chunk size ").concat(r.byteLength)),1===i)return r.getUint8Array(e,a);if(2===i)return E(r.getString(e,a));if(7===i)return r.getUint8Array(e,a);if(1===a)return this.parseTagValue(i,e);for(var s=new(function(e){switch(e){case 1:return Uint8Array;case 3:return Uint16Array;case 4:return Uint32Array;case 5:return Array;case 6:return Int8Array;case 8:return Int16Array;case 9:return Int32Array;case 10:return Array;case 11:return Float32Array;case 12:return Float64Array;default:return Array}}(i))(a),u=o,f=0;f<a;f++)s[f]=this.parseTagValue(i,e),e+=u;return s}},{key:"parseTagValue",value:function(e,t){var n=this.chunk;switch(e){case 1:return n.getUint8(t);case 3:return n.getUint16(t);case 4:return n.getUint32(t);case 5:return n.getUint32(t)/n.getUint32(t+4);case 6:return n.getInt8(t);case 8:return n.getInt16(t);case 9:return n.getInt32(t);case 10:return n.getInt32(t)/n.getInt32(t+4);case 11:return n.getFloat(t);case 12:return n.getDouble(t);case 13:return n.getUint32(t);default:F("Invalid tiff type ".concat(e))}}}]),i}(ze));function st(e,t,n,r){var i=e+t/60+n/3600;return"S"!==r&&"W"!==r||(i*=-1),i}i(ot,"type","tiff"),i(ot,"headerLength",10),W.set("tiff",ot);var ut=Object.freeze({__proto__:null,default:Ge,Exifr:Be,fileParsers:_,segmentParsers:W,fileReaders:K,tagKeys:oe,tagValues:se,tagRevivers:ue,createDictionary:ie,extendDictionary:ae,fetchUrlAsArrayBuffer:te,readBlobAsArrayBuffer:ne,chunkedProps:ye,otherSegments:me,segments:ke,tiffBlocks:Se,segmentsAndBlocks:Ce,tiffExtractables:Pe,inheritables:be,allFormatters:Ae,Options:we,parse:Ne}),ft={ifd0:!1,ifd1:!1,exif:!1,gps:!1,interop:!1,sanitize:!1,reviveValues:!0,translateKeys:!1,translateValues:!1,mergeOutput:!1};function ct(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}var lt=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];try{return Promise.resolve(e.apply(this,t))}catch(e){return Promise.reject(e)}}}((function(e){var t=new Be(ht);return ct(t.read(e),(function(){return ct(t.parse(),(function(e){if(e&&e.gps){var t=e.gps;return{latitude:t.latitude,longitude:t.longitude}}}))}))})),ht=m({},ft,{firstChunkSize:4e4,gps:[1,2,3,4]});function dt(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}function pt(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];try{return Promise.resolve(e.apply(this,t))}catch(e){return Promise.reject(e)}}}var gt=pt((function(e){return dt(this.thumbnail(e),(function(e){if(void 0!==e){var t=new Blob([e]);return URL.createObjectURL(t)}}))})),vt=pt((function(e){var t=new Be(yt);return dt(t.read(e),(function(){return dt(t.extractThumbnail(),(function(e){return e&&R?w.from(e):e}))}))})),yt=m({},ft,{tiff:!1,ifd1:!0,mergeOutput:!1});function mt(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}var kt=function(t){return mt(St(t),(function(t){return m({canvas:e.rotateCanvas,css:e.rotateCss},Pt[t])}))},St=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];try{return Promise.resolve(e.apply(this,t))}catch(e){return Promise.reject(e)}}}((function(e){var t=new Be(Ct);return mt(t.read(e),(function(){return mt(t.parse(),(function(e){if(e&&e.ifd0)return e.ifd0[274]}))}))})),Ct=m({},ft,{firstChunkSize:4e4,ifd0:[274]}),Pt=Object.freeze({1:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:0,rad:0},2:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:0,rad:0},3:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:180,rad:180*Math.PI/180},4:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:180,rad:180*Math.PI/180},5:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:90,rad:90*Math.PI/180},6:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:90,rad:90*Math.PI/180},7:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:270,rad:270*Math.PI/180},8:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:270,rad:270*Math.PI/180}});if(e.rotateCanvas=!0,e.rotateCss=!0,"object"==typeof navigator){var bt=navigator.userAgent;if(bt.includes("iPad")||bt.includes("iPhone")){var At=bt.match(/OS (\d+)_(\d+)/);if(At){var It=At[1],Tt=At[2],Ot=Number(It)+.1*Number(Tt);e.rotateCanvas=Ot<13.4,e.rotateCss=!1}}else if(bt.includes("OS X 10")){var Dt=bt.match(/OS X 10[_.](\d+)/)[1];e.rotateCanvas=e.rotateCss=Number(Dt)<15}if(bt.includes("Chrome/")){var wt=bt.match(/Chrome\/(\d+)/)[1];e.rotateCanvas=e.rotateCss=Number(wt)<81}else if(bt.includes("Firefox/")){var xt=bt.match(/Firefox\/(\d+)/)[1];e.rotateCanvas=e.rotateCss=Number(xt)<77}}function Rt(){}var Mt=function(e){a(s,e);var n=d(s);function s(){var e;t(this,s);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return i(l(e=n.call.apply(n,[this].concat(a))),"ranges",new Lt),0!==e.byteLength&&e.ranges.add(0,e.byteLength),e}return r(s,[{key:"_tryExtend",value:function(e,t,n){if(0===e&&0===this.byteLength&&n){var r=new DataView(n.buffer||n,n.byteOffset,n.byteLength);this._swapDataView(r)}else{var i=e+t;if(i>this.byteLength){var a=this._extend(i).dataView;this._swapDataView(a)}}}},{key:"_extend",value:function(e){var t;t=R?w.allocUnsafe(e):new Uint8Array(e);var n=new DataView(t.buffer,t.byteOffset,t.byteLength);return t.set(new Uint8Array(this.buffer,this.byteOffset,this.byteLength),0),{uintView:t,dataView:n}}},{key:"subarray",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return t=t||this._lengthToEnd(e),n&&this._tryExtend(e,t),this.ranges.add(e,t),p(o(s.prototype),"subarray",this).call(this,e,t)}},{key:"set",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];n&&this._tryExtend(t,e.byteLength,e);var r=p(o(s.prototype),"set",this).call(this,e,t);return this.ranges.add(t,r.byteLength),r}},{key:"ensureChunk",value:function(e,t){try{var n=this;if(!n.chunked)return;if(n.ranges.available(e,t))return;return function(e,t){if(!t)return e&&e.then?e.then(Rt):Promise.resolve()}(n.readChunk(e,t))}catch(e){return Promise.reject(e)}}},{key:"available",value:function(e,t){return this.ranges.available(e,t)}}]),s}(V),Lt=function(){function e(){t(this,e),i(this,"list",[])}return r(e,[{key:"length",get:function(){return this.list.length}},{key:"add",value:function(e,t){var n=e+t,r=this.list.filter((function(t){return Ut(e,t.offset,n)||Ut(e,t.end,n)}));if(r.length>0){e=Math.min.apply(Math,[e].concat(r.map((function(e){return e.offset})))),t=(n=Math.max.apply(Math,[n].concat(r.map((function(e){return e.end})))))-e;var i=r.shift();i.offset=e,i.length=t,i.end=n,this.list=this.list.filter((function(e){return!r.includes(e)}))}else this.list.push({offset:e,length:t,end:n})}},{key:"available",value:function(e,t){var n=e+t;return this.list.some((function(t){return t.offset<=e&&n<=t.end}))}}]),e}();function Ut(e,t,n){return e<=t&&t<=n}function Ft(){}function Et(e,t){if(!t)return e&&e.then?e.then(Ft):Promise.resolve()}var Bt=function(e){a(o,e);var n=d(o);function o(e,r){var a;return t(this,o),i(l(a=n.call(this,0)),"chunksRead",0),a.input=e,a.options=r,a}return r(o,[{key:"readWhole",value:function(){try{var e=this;return e.chunked=!1,Et(e.readChunk(e.nextChunkOffset))}catch(e){return Promise.reject(e)}}},{key:"readChunked",value:function(){try{var e=this;return e.chunked=!0,Et(e.readChunk(0,e.options.firstChunkSize))}catch(e){return Promise.reject(e)}}},{key:"readNextChunk",value:function(e){try{var t=this;if(void 0===e&&(e=t.nextChunkOffset),t.fullyRead)return t.chunksRead++,!1;var n=t.options.chunkSize;return r=t.readChunk(e,n),i=function(e){return!!e&&e.byteLength===n},a?i?i(r):r:(r&&r.then||(r=Promise.resolve(r)),i?r.then(i):r)}catch(e){return Promise.reject(e)}var r,i,a}},{key:"readChunk",value:function(e,t){try{var n=this;if(n.chunksRead++,0===(t=n.safeWrapAddress(e,t)))return;return n._readChunk(e,t)}catch(e){return Promise.reject(e)}}},{key:"safeWrapAddress",value:function(e,t){return void 0!==this.size&&e+t>this.size?Math.max(0,this.size-e):t}},{key:"nextChunkOffset",get:function(){if(0!==this.ranges.list.length)return this.ranges.list[0].length}},{key:"canReadNextChunk",get:function(){return this.chunksRead<this.options.chunkLimit}},{key:"fullyRead",get:function(){return void 0!==this.size&&this.nextChunkOffset===this.size}},{key:"read",value:function(){return this.options.chunked?this.readChunked():this.readWhole()}},{key:"close",value:function(){}}]),o}(Mt);function Nt(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}var Gt=function(e){a(i,e);var n=d(i);function i(){return t(this,i),n.apply(this,arguments)}return r(i,[{key:"read