{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack:///./app/frontend/packs/pages/static/exif_show.js","webpack:///./node_modules/blueimp-load-image/js/load-image-meta.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/blueimp-load-image/js/index.js","webpack:///./node_modules/blueimp-load-image/js/load-image-scale.js","webpack:///./node_modules/blueimp-load-image/js/load-image-exif.js","webpack:///./node_modules/blueimp-load-image/js/load-image-iptc.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_root.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/blueimp-load-image/js/load-image-fetch.js","webpack:///./node_modules/blueimp-load-image/js/load-image-exif-map.js","webpack:///./node_modules/blueimp-load-image/js/load-image-iptc-map.js","webpack:///./node_modules/blueimp-load-image/js/load-image-orientation.js","webpack:///./node_modules/lodash/toString.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./app/frontend/javascripts/exif.js","webpack:///./node_modules/lodash/snakeCase.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/blueimp-load-image/js/load-image.js","webpack:///./node_modules/lodash/_createCompounder.js","webpack:///./node_modules/lodash/_arrayReduce.js","webpack:///./node_modules/lodash/deburr.js","webpack:///./node_modules/lodash/_deburrLetter.js","webpack:///./node_modules/lodash/_basePropertyOf.js","webpack:///./node_modules/lodash/_baseToString.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/words.js","webpack:///./node_modules/lodash/_asciiWords.js","webpack:///./node_modules/lodash/_hasUnicodeWord.js","webpack:///./node_modules/lodash/_unicodeWords.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","_typeof","_regeneratorRuntime","e","a","iterator","asyncIterator","u","define","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","type","arg","h","f","y","GeneratorFunction","GeneratorFunctionPrototype","this","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","document","addEventListener","exif","Exif","fn","querySelector","factory","loadImage","global","originalTransform","transform","blobSlice","Blob","webkitSlice","mozSlice","bufferSlice","ArrayBuffer","begin","end","byteLength","arr1","Uint8Array","arr2","set","buffer","metaDataParsers","jpeg","parseMetaData","file","callback","options","data","that","executor","reject","DataView","size","maxMetaDataSize","readFile","dataView","getUint16","markerBytes","markerLength","parsers","offset","maxOffset","headLength","console","log","disableMetaDataParsers","disableImageHead","imageHead","replaceJPEGHead","blob","oldHead","newHead","replaceHead","head","img","requiresMetaData","result","apply","arguments","createCanvas","width","height","offscreen","OffscreenCanvas","canvas","createElement","scale","transformCoordinates","getTransformedOptions","newOptions","aspectRatio","crop","naturalWidth","naturalHeight","maxWidth","maxHeight","drawImage","sourceX","sourceY","sourceWidth","sourceHeight","destWidth","destHeight","ctx","getContext","imageSmoothingEnabled","msImageSmoothingEnabled","imageSmoothingQuality","requiresCanvas","minWidth","minHeight","pixelRatio","downsamplingRatio","tmp","useCanvas","HTMLCanvasElement","scaleUp","Math","max","scaleDown","min","left","top","undefined","right","bottom","contain","cover","style","floor","parseFloat","orientationCropBug","setTransform","ExifMap","tagCode","ifds","map","tags","getExifThumbnail","Orientation","Thumbnail","GPSInfo","Interoperability","ifd1","id","ExifTagTypes","getValue","dataOffset","getUint8","String","fromCharCode","ascii","littleEndian","getUint32","getInt32","getExifValue","tiffOffset","tagSize","str","tagType","shouldIncludeTag","includeTags","excludeTags","parseExifTags","dirOffset","tagOffsets","tagsNumber","dirEndOffset","tagOffset","tagNumber","tagValue","parseExifIFD","exifOffsets","parseExifData","disableExif","thumbnailIFD","includeExifTags","excludeExifTags","disableExifOffsets","exifTiffOffset","exifLittleEndian","exifWriters","orientationOffset","setUint16","writeExifData","IptcMap","getStringValue","outstr","getTagValue","types","combineTagValues","newValue","Array","parseIptcTags","segmentOffset","segmentLength","segmentEnd","getInt16","iptc","iptcOffsets","isSegmentStart","getHeaderLength","ObjectName","parseIptcData","disableIptc","headerLength","disableIptcOffsets","includeIptcTags","excludeIptcTags","_Symbol","obj","freeGlobal","freeSelf","self","root","window","baseGetTag","isObjectLike","symbolTag","fetch","Request","Response","fetchBlob","url","responseHandler","response","err","XMLHttpRequest","responseType","req","open","headers","setRequestHeader","withCredentials","credentials","onload","onerror","onabort","ontimeout","send","body","ExifMapProto","stringValues","ExposureProgram","MeteringMode","LightSource","Flash","SensingMethod","SceneCaptureType","SceneType","CustomRendered","WhiteBalance","GainControl","Contrast","Saturation","Sharpness","SubjectDistanceRange","FileSource","ComponentsConfiguration","getText","getAll","prop","getName","ifd","subTags","Number","IptcMapProto","b","L","P","S","stringValue","originalRequiresCanvas","originalRequiresMetaData","originalTransformCoordinates","originalGetTransformedOptions","requiresCanvasOrientation","withMetaData","orientation","requiresOrientationChange","autoOrientation","requiresRot180","$","testImageURL","getImageData","toString","src","originalWidth","originalHeight","opts","exifOrientation","tmpTop","tmpRight","translate","rotate","PI","baseToString","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","localize","input","store","fields","error","meta","snakeKey","snakeCase","storeCompact","fromEntries","entries","filter","JSON","stringify","target","accordion","dataset","accordionTarget","elements","isMedium","matchMedia","matches","isEditable","includes","accordionActionName","element","transition","setAttribute","setTimeout","visibility","isExpanded","getAttribute","preview","storeExif","exifRender","exifAttributeRender","remove","childElementCount","replaceChildren","iconUrl","exifIconUrl","createRenderComponent","component","button","insertAdjacentElement","createRenderSVG","svg","renderSet","class","headline","text","ariaExpanded","icon","list","ariaHidden","classList","add","textContent","dataKey","append","createRenderItem","insertAdjacentHTML","typeContent","bodyContent","itemSet","item","dl","dt","dd","svgPath","createCompounder","word","index","toLowerCase","objectProto","nativeObjectToString","isOwn","tag","unmasked","urlAPI","URL","webkitURL","createObjectURL","revokeObjectURL","revokeHelper","noRevoke","FileReader","reader","readerMethod","isInstanceOf","resolveWrapper","image","fetchBlobCallback","crossOrigin","event","arrayReduce","deburr","words","reApos","RegExp","string","replace","array","iteratee","accumulator","initAccum","deburrLetter","reLatin","reComboMark","basePropertyOf","arrayMap","isArray","isSymbol","INFINITY","symbolProto","symbolToString","asciiWords","hasUnicodeWord","unicodeWords","pattern","guard","match","reAsciiWord","reHasUnicodeWord","test","rsAstralRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","join","rsEmoji","reUnicodeWord"],"mappings":"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Q,KAER,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAA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","file":"js/pages/static/exif_show-2095274d20990c8f7542.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1053);\n","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw new Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw new Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import Exif from '../../../javascripts/exif'\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const exif = new Exif();\n ['addAccordionAria', 'addAccordionEvent'].forEach((fn) => exif[fn](document.querySelector('.js-image-attribute-accordion')));\n})\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*\n * JavaScript Load Image Meta\n * https://github.com/blueimp/JavaScript-Load-Image\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Image metadata handling implementation\n * based on the help and contribution of\n * Achim Stöhr.\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, module, require, Promise, DataView, Uint8Array, ArrayBuffer */\n;\n\n(function (factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./load-image'], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && module.exports) {\n factory(require('./load-image'));\n } else {\n // Browser globals:\n factory(window.loadImage);\n }\n})(function (loadImage) {\n 'use strict';\n\n var global = loadImage.global;\n var originalTransform = loadImage.transform;\n var blobSlice = global.Blob && (Blob.prototype.slice || Blob.prototype.webkitSlice || Blob.prototype.mozSlice);\n\n var bufferSlice = global.ArrayBuffer && ArrayBuffer.prototype.slice || function (begin, end) {\n // Polyfill for IE10, which does not support ArrayBuffer.slice\n // eslint-disable-next-line no-param-reassign\n end = end || this.byteLength - begin;\n var arr1 = new Uint8Array(this, begin, end);\n var arr2 = new Uint8Array(end);\n arr2.set(arr1);\n return arr2.buffer;\n };\n\n var metaDataParsers = {\n jpeg: {\n 0xffe1: [],\n // APP1 marker\n 0xffed: [] // APP13 marker\n\n }\n };\n /**\n * Parses image metadata and calls the callback with an object argument\n * with the following property:\n * - imageHead: The complete image head as ArrayBuffer\n * The options argument accepts an object and supports the following\n * properties:\n * - maxMetaDataSize: Defines the maximum number of bytes to parse.\n * - disableImageHead: Disables creating the imageHead property.\n *\n * @param {Blob} file Blob object\n * @param {Function} [callback] Callback function\n * @param {object} [options] Parsing options\n * @param {object} [data] Result data object\n * @returns {Promise|undefined} Returns Promise if no callback given.\n */\n\n function parseMetaData(file, callback, options, data) {\n var that = this;\n /**\n * Promise executor\n *\n * @param {Function} resolve Resolution function\n * @param {Function} reject Rejection function\n * @returns {undefined} Undefined\n */\n\n function executor(resolve, reject) {\n if (!(global.DataView && blobSlice && file && file.size >= 12 && file.type === 'image/jpeg')) {\n // Nothing to parse\n return resolve(data);\n } // 256 KiB should contain all EXIF/ICC/IPTC segments:\n\n\n var maxMetaDataSize = options.maxMetaDataSize || 262144;\n\n if (!loadImage.readFile(blobSlice.call(file, 0, maxMetaDataSize), function (buffer) {\n // Note on endianness:\n // Since the marker and length bytes in JPEG files are always\n // stored in big endian order, we can leave the endian parameter\n // of the DataView methods undefined, defaulting to big endian.\n var dataView = new DataView(buffer); // Check for the JPEG marker (0xffd8):\n\n if (dataView.getUint16(0) !== 0xffd8) {\n return reject(new Error('Invalid JPEG file: Missing JPEG marker.'));\n }\n\n var offset = 2;\n var maxOffset = dataView.byteLength - 4;\n var headLength = offset;\n var markerBytes;\n var markerLength;\n var parsers;\n var i;\n\n while (offset < maxOffset) {\n markerBytes = dataView.getUint16(offset); // Search for APPn (0xffeN) and COM (0xfffe) markers,\n // which contain application-specific metadata like\n // Exif, ICC and IPTC data and text comments:\n\n if (markerBytes >= 0xffe0 && markerBytes <= 0xffef || markerBytes === 0xfffe) {\n // The marker bytes (2) are always followed by\n // the length bytes (2), indicating the length of the\n // marker segment, which includes the length bytes,\n // but not the marker bytes, so we add 2:\n markerLength = dataView.getUint16(offset + 2) + 2;\n\n if (offset + markerLength > dataView.byteLength) {\n // eslint-disable-next-line no-console\n console.log('Invalid JPEG metadata: Invalid segment size.');\n break;\n }\n\n parsers = metaDataParsers.jpeg[markerBytes];\n\n if (parsers && !options.disableMetaDataParsers) {\n for (i = 0; i < parsers.length; i += 1) {\n parsers[i].call(that, dataView, offset, markerLength, data, options);\n }\n }\n\n offset += markerLength;\n headLength = offset;\n } else {\n // Not an APPn or COM marker, probably safe to\n // assume that this is the end of the metadata\n break;\n }\n } // Meta length must be longer than JPEG marker (2)\n // plus APPn marker (2), followed by length bytes (2):\n\n\n if (!options.disableImageHead && headLength > 6) {\n data.imageHead = bufferSlice.call(buffer, 0, headLength);\n }\n\n resolve(data);\n }, reject, 'readAsArrayBuffer')) {\n // No support for the FileReader interface, nothing to parse\n resolve(data);\n }\n }\n\n options = options || {}; // eslint-disable-line no-param-reassign\n\n if (global.Promise && typeof callback !== 'function') {\n options = callback || {}; // eslint-disable-line no-param-reassign\n\n data = options; // eslint-disable-line no-param-reassign\n\n return new Promise(executor);\n }\n\n data = data || {}; // eslint-disable-line no-param-reassign\n\n return executor(callback, callback);\n }\n /**\n * Replaces the head of a JPEG Blob\n *\n * @param {Blob} blob Blob object\n * @param {ArrayBuffer} oldHead Old JPEG head\n * @param {ArrayBuffer} newHead New JPEG head\n * @returns {Blob} Combined Blob\n */\n\n\n function replaceJPEGHead(blob, oldHead, newHead) {\n if (!blob || !oldHead || !newHead) return null;\n return new Blob([newHead, blobSlice.call(blob, oldHead.byteLength)], {\n type: 'image/jpeg'\n });\n }\n /**\n * Replaces the image head of a JPEG blob with the given one.\n * Returns a Promise or calls the callback with the new Blob.\n *\n * @param {Blob} blob Blob object\n * @param {ArrayBuffer} head New JPEG head\n * @param {Function} [callback] Callback function\n * @returns {Promise|undefined} Combined Blob\n */\n\n\n function replaceHead(blob, head, callback) {\n var options = {\n maxMetaDataSize: 1024,\n disableMetaDataParsers: true\n };\n\n if (!callback && global.Promise) {\n return parseMetaData(blob, options).then(function (data) {\n return replaceJPEGHead(blob, data.imageHead, head);\n });\n }\n\n parseMetaData(blob, function (data) {\n callback(replaceJPEGHead(blob, data.imageHead, head));\n }, options);\n }\n\n loadImage.transform = function (img, options, callback, file, data) {\n if (loadImage.requiresMetaData(options)) {\n data = data || {}; // eslint-disable-line no-param-reassign\n\n parseMetaData(file, function (result) {\n if (result !== data) {\n // eslint-disable-next-line no-console\n if (global.console) console.log(result);\n result = data; // eslint-disable-line no-param-reassign\n }\n\n originalTransform.call(loadImage, img, options, callback, file, result);\n }, options, data);\n } else {\n originalTransform.apply(loadImage, arguments);\n }\n };\n\n loadImage.blobSlice = blobSlice;\n loadImage.bufferSlice = bufferSlice;\n loadImage.replaceHead = replaceHead;\n loadImage.parseMetaData = parseMetaData;\n loadImage.metaDataParsers = metaDataParsers;\n});","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/* global module, require */\nmodule.exports = require('./load-image');\n\nrequire('./load-image-scale');\n\nrequire('./load-image-meta');\n\nrequire('./load-image-fetch');\n\nrequire('./load-image-exif');\n\nrequire('./load-image-exif-map');\n\nrequire('./load-image-iptc');\n\nrequire('./load-image-iptc-map');\n\nrequire('./load-image-orientation');","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*\n * JavaScript Load Image Scaling\n * https://github.com/blueimp/JavaScript-Load-Image\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, module, require */\n;\n\n(function (factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./load-image'], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && module.exports) {\n factory(require('./load-image'));\n } else {\n // Browser globals:\n factory(window.loadImage);\n }\n})(function (loadImage) {\n 'use strict';\n\n var originalTransform = loadImage.transform;\n\n loadImage.createCanvas = function (width, height, offscreen) {\n if (offscreen && loadImage.global.OffscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n };\n\n loadImage.transform = function (img, options, callback, file, data) {\n originalTransform.call(loadImage, loadImage.scale(img, options, data), options, callback, file, data);\n }; // Transform image coordinates, allows to override e.g.\n // the canvas orientation based on the orientation option,\n // gets canvas, options and data passed as arguments:\n\n\n loadImage.transformCoordinates = function () {}; // Returns transformed options, allows to override e.g.\n // maxWidth, maxHeight and crop options based on the aspectRatio.\n // gets img, options, data passed as arguments:\n\n\n loadImage.getTransformedOptions = function (img, options) {\n var aspectRatio = options.aspectRatio;\n var newOptions;\n var i;\n var width;\n var height;\n\n if (!aspectRatio) {\n return options;\n }\n\n newOptions = {};\n\n for (i in options) {\n if (Object.prototype.hasOwnProperty.call(options, i)) {\n newOptions[i] = options[i];\n }\n }\n\n newOptions.crop = true;\n width = img.naturalWidth || img.width;\n height = img.naturalHeight || img.height;\n\n if (width / height > aspectRatio) {\n newOptions.maxWidth = height * aspectRatio;\n newOptions.maxHeight = height;\n } else {\n newOptions.maxWidth = width;\n newOptions.maxHeight = width / aspectRatio;\n }\n\n return newOptions;\n }; // Canvas render method, allows to implement a different rendering algorithm:\n\n\n loadImage.drawImage = function (img, canvas, sourceX, sourceY, sourceWidth, sourceHeight, destWidth, destHeight, options) {\n var ctx = canvas.getContext('2d');\n\n if (options.imageSmoothingEnabled === false) {\n ctx.msImageSmoothingEnabled = false;\n ctx.imageSmoothingEnabled = false;\n } else if (options.imageSmoothingQuality) {\n ctx.imageSmoothingQuality = options.imageSmoothingQuality;\n }\n\n ctx.drawImage(img, sourceX, sourceY, sourceWidth, sourceHeight, 0, 0, destWidth, destHeight);\n return ctx;\n }; // Determines if the target image should be a canvas element:\n\n\n loadImage.requiresCanvas = function (options) {\n return options.canvas || options.crop || !!options.aspectRatio;\n }; // Scales and/or crops the given image (img or canvas HTML element)\n // using the given options:\n\n\n loadImage.scale = function (img, options, data) {\n // eslint-disable-next-line no-param-reassign\n options = options || {}; // eslint-disable-next-line no-param-reassign\n\n data = data || {};\n var useCanvas = img.getContext || loadImage.requiresCanvas(options) && !!loadImage.global.HTMLCanvasElement;\n var width = img.naturalWidth || img.width;\n var height = img.naturalHeight || img.height;\n var destWidth = width;\n var destHeight = height;\n var maxWidth;\n var maxHeight;\n var minWidth;\n var minHeight;\n var sourceWidth;\n var sourceHeight;\n var sourceX;\n var sourceY;\n var pixelRatio;\n var downsamplingRatio;\n var tmp;\n var canvas;\n /**\n * Scales up image dimensions\n */\n\n function scaleUp() {\n var scale = Math.max((minWidth || destWidth) / destWidth, (minHeight || destHeight) / destHeight);\n\n if (scale > 1) {\n destWidth *= scale;\n destHeight *= scale;\n }\n }\n /**\n * Scales down image dimensions\n */\n\n\n function scaleDown() {\n var scale = Math.min((maxWidth || destWidth) / destWidth, (maxHeight || destHeight) / destHeight);\n\n if (scale < 1) {\n destWidth *= scale;\n destHeight *= scale;\n }\n }\n\n if (useCanvas) {\n // eslint-disable-next-line no-param-reassign\n options = loadImage.getTransformedOptions(img, options, data);\n sourceX = options.left || 0;\n sourceY = options.top || 0;\n\n if (options.sourceWidth) {\n sourceWidth = options.sourceWidth;\n\n if (options.right !== undefined && options.left === undefined) {\n sourceX = width - sourceWidth - options.right;\n }\n } else {\n sourceWidth = width - sourceX - (options.right || 0);\n }\n\n if (options.sourceHeight) {\n sourceHeight = options.sourceHeight;\n\n if (options.bottom !== undefined && options.top === undefined) {\n sourceY = height - sourceHeight - options.bottom;\n }\n } else {\n sourceHeight = height - sourceY - (options.bottom || 0);\n }\n\n destWidth = sourceWidth;\n destHeight = sourceHeight;\n }\n\n maxWidth = options.maxWidth;\n maxHeight = options.maxHeight;\n minWidth = options.minWidth;\n minHeight = options.minHeight;\n\n if (useCanvas && maxWidth && maxHeight && options.crop) {\n destWidth = maxWidth;\n destHeight = maxHeight;\n tmp = sourceWidth / sourceHeight - maxWidth / maxHeight;\n\n if (tmp < 0) {\n sourceHeight = maxHeight * sourceWidth / maxWidth;\n\n if (options.top === undefined && options.bottom === undefined) {\n sourceY = (height - sourceHeight) / 2;\n }\n } else if (tmp > 0) {\n sourceWidth = maxWidth * sourceHeight / maxHeight;\n\n if (options.left === undefined && options.right === undefined) {\n sourceX = (width - sourceWidth) / 2;\n }\n }\n } else {\n if (options.contain || options.cover) {\n minWidth = maxWidth = maxWidth || minWidth;\n minHeight = maxHeight = maxHeight || minHeight;\n }\n\n if (options.cover) {\n scaleDown();\n scaleUp();\n } else {\n scaleUp();\n scaleDown();\n }\n }\n\n if (useCanvas) {\n pixelRatio = options.pixelRatio;\n\n if (pixelRatio > 1 && // Check if the image has not yet had the device pixel ratio applied:\n !(img.style.width && Math.floor(parseFloat(img.style.width, 10)) === Math.floor(width / pixelRatio))) {\n destWidth *= pixelRatio;\n destHeight *= pixelRatio;\n } // Check if workaround for Chromium orientation crop bug is required:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1074354\n\n\n if (loadImage.orientationCropBug && !img.getContext && (sourceX || sourceY || sourceWidth !== width || sourceHeight !== height)) {\n // Write the complete source image to an intermediate canvas first:\n tmp = img; // eslint-disable-next-line no-param-reassign\n\n img = loadImage.createCanvas(width, height, true);\n loadImage.drawImage(tmp, img, 0, 0, width, height, width, height, options);\n }\n\n downsamplingRatio = options.downsamplingRatio;\n\n if (downsamplingRatio > 0 && downsamplingRatio < 1 && destWidth < sourceWidth && destHeight < sourceHeight) {\n while (sourceWidth * downsamplingRatio > destWidth) {\n canvas = loadImage.createCanvas(sourceWidth * downsamplingRatio, sourceHeight * downsamplingRatio, true);\n loadImage.drawImage(img, canvas, sourceX, sourceY, sourceWidth, sourceHeight, canvas.width, canvas.height, options);\n sourceX = 0;\n sourceY = 0;\n sourceWidth = canvas.width;\n sourceHeight = canvas.height; // eslint-disable-next-line no-param-reassign\n\n img = canvas;\n }\n }\n\n canvas = loadImage.createCanvas(destWidth, destHeight);\n loadImage.transformCoordinates(canvas, options, data);\n\n if (pixelRatio > 1) {\n canvas.style.width = canvas.width / pixelRatio + 'px';\n }\n\n loadImage.drawImage(img, canvas, sourceX, sourceY, sourceWidth, sourceHeight, destWidth, destHeight, options).setTransform(1, 0, 0, 1, 0, 0); // reset to the identity matrix\n\n return canvas;\n }\n\n img.width = destWidth;\n img.height = destHeight;\n return img;\n };\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*\n * JavaScript Load Image Exif Parser\n * https://github.com/blueimp/JavaScript-Load-Image\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, module, require, DataView */\n\n/* eslint-disable no-console */\n;\n\n(function (factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./load-image', './load-image-meta'], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && module.exports) {\n factory(require('./load-image'), require('./load-image-meta'));\n } else {\n // Browser globals:\n factory(window.loadImage);\n }\n})(function (loadImage) {\n 'use strict';\n /**\n * Exif tag map\n *\n * @name ExifMap\n * @class\n * @param {number|string} tagCode IFD tag code\n */\n\n function ExifMap(tagCode) {\n if (tagCode) {\n Object.defineProperty(this, 'map', {\n value: this.ifds[tagCode].map\n });\n Object.defineProperty(this, 'tags', {\n value: this.tags && this.tags[tagCode] || {}\n });\n }\n }\n\n ExifMap.prototype.map = {\n Orientation: 0x0112,\n Thumbnail: 'ifd1',\n Blob: 0x0201,\n // Alias for JPEGInterchangeFormat\n Exif: 0x8769,\n GPSInfo: 0x8825,\n Interoperability: 0xa005\n };\n ExifMap.prototype.ifds = {\n ifd1: {\n name: 'Thumbnail',\n map: ExifMap.prototype.map\n },\n 0x8769: {\n name: 'Exif',\n map: {}\n },\n 0x8825: {\n name: 'GPSInfo',\n map: {}\n },\n 0xa005: {\n name: 'Interoperability',\n map: {}\n }\n };\n /**\n * Retrieves exif tag value\n *\n * @param {number|string} id Exif tag code or name\n * @returns {object} Exif tag value\n */\n\n ExifMap.prototype.get = function (id) {\n return this[id] || this[this.map[id]];\n };\n /**\n * Returns the Exif Thumbnail data as Blob.\n *\n * @param {DataView} dataView Data view interface\n * @param {number} offset Thumbnail data offset\n * @param {number} length Thumbnail data length\n * @returns {undefined|Blob} Returns the Thumbnail Blob or undefined\n */\n\n\n function getExifThumbnail(dataView, offset, length) {\n if (!length) return;\n\n if (offset + length > dataView.byteLength) {\n console.log('Invalid Exif data: Invalid thumbnail data.');\n return;\n }\n\n return new Blob([loadImage.bufferSlice.call(dataView.buffer, offset, offset + length)], {\n type: 'image/jpeg'\n });\n }\n\n var ExifTagTypes = {\n // byte, 8-bit unsigned int:\n 1: {\n getValue: function getValue(dataView, dataOffset) {\n return dataView.getUint8(dataOffset);\n },\n size: 1\n },\n // ascii, 8-bit byte:\n 2: {\n getValue: function getValue(dataView, dataOffset) {\n return String.fromCharCode(dataView.getUint8(dataOffset));\n },\n size: 1,\n ascii: true\n },\n // short, 16 bit int:\n 3: {\n getValue: function getValue(dataView, dataOffset, littleEndian) {\n return dataView.getUint16(dataOffset, littleEndian);\n },\n size: 2\n },\n // long, 32 bit int:\n 4: {\n getValue: function getValue(dataView, dataOffset, littleEndian) {\n return dataView.getUint32(dataOffset, littleEndian);\n },\n size: 4\n },\n // rational = two long values, first is numerator, second is denominator:\n 5: {\n getValue: function getValue(dataView, dataOffset, littleEndian) {\n return dataView.getUint32(dataOffset, littleEndian) / dataView.getUint32(dataOffset + 4, littleEndian);\n },\n size: 8\n },\n // slong, 32 bit signed int:\n 9: {\n getValue: function getValue(dataView, dataOffset, littleEndian) {\n return dataView.getInt32(dataOffset, littleEndian);\n },\n size: 4\n },\n // srational, two slongs, first is numerator, second is denominator:\n 10: {\n getValue: function getValue(dataView, dataOffset, littleEndian) {\n return dataView.getInt32(dataOffset, littleEndian) / dataView.getInt32(dataOffset + 4, littleEndian);\n },\n size: 8\n }\n }; // undefined, 8-bit byte, value depending on field:\n\n ExifTagTypes[7] = ExifTagTypes[1];\n /**\n * Returns Exif tag value.\n *\n * @param {DataView} dataView Data view interface\n * @param {number} tiffOffset TIFF offset\n * @param {number} offset Tag offset\n * @param {number} type Tag type\n * @param {number} length Tag length\n * @param {boolean} littleEndian Little endian encoding\n * @returns {object} Tag value\n */\n\n function getExifValue(dataView, tiffOffset, offset, type, length, littleEndian) {\n var tagType = ExifTagTypes[type];\n var tagSize;\n var dataOffset;\n var values;\n var i;\n var str;\n var c;\n\n if (!tagType) {\n console.log('Invalid Exif data: Invalid tag type.');\n return;\n }\n\n tagSize = tagType.size * length; // Determine if the value is contained in the dataOffset bytes,\n // or if the value at the dataOffset is a pointer to the actual data:\n\n dataOffset = tagSize > 4 ? tiffOffset + dataView.getUint32(offset + 8, littleEndian) : offset + 8;\n\n if (dataOffset + tagSize > dataView.byteLength) {\n console.log('Invalid Exif data: Invalid data offset.');\n return;\n }\n\n if (length === 1) {\n return tagType.getValue(dataView, dataOffset, littleEndian);\n }\n\n values = [];\n\n for (i = 0; i < length; i += 1) {\n values[i] = tagType.getValue(dataView, dataOffset + i * tagType.size, littleEndian);\n }\n\n if (tagType.ascii) {\n str = ''; // Concatenate the chars:\n\n for (i = 0; i < values.length; i += 1) {\n c = values[i]; // Ignore the terminating NULL byte(s):\n\n if (c === \"\\0\") {\n break;\n }\n\n str += c;\n }\n\n return str;\n }\n\n return values;\n }\n /**\n * Determines if the given tag should be included.\n *\n * @param {object} includeTags Map of tags to include\n * @param {object} excludeTags Map of tags to exclude\n * @param {number|string} tagCode Tag code to check\n * @returns {boolean} True if the tag should be included\n */\n\n\n function shouldIncludeTag(includeTags, excludeTags, tagCode) {\n return (!includeTags || includeTags[tagCode]) && (!excludeTags || excludeTags[tagCode] !== true);\n }\n /**\n * Parses Exif tags.\n *\n * @param {DataView} dataView Data view interface\n * @param {number} tiffOffset TIFF offset\n * @param {number} dirOffset Directory offset\n * @param {boolean} littleEndian Little endian encoding\n * @param {ExifMap} tags Map to store parsed exif tags\n * @param {ExifMap} tagOffsets Map to store parsed exif tag offsets\n * @param {object} includeTags Map of tags to include\n * @param {object} excludeTags Map of tags to exclude\n * @returns {number} Next directory offset\n */\n\n\n function parseExifTags(dataView, tiffOffset, dirOffset, littleEndian, tags, tagOffsets, includeTags, excludeTags) {\n var tagsNumber, dirEndOffset, i, tagOffset, tagNumber, tagValue;\n\n if (dirOffset + 6 > dataView.byteLength) {\n console.log('Invalid Exif data: Invalid directory offset.');\n return;\n }\n\n tagsNumber = dataView.getUint16(dirOffset, littleEndian);\n dirEndOffset = dirOffset + 2 + 12 * tagsNumber;\n\n if (dirEndOffset + 4 > dataView.byteLength) {\n console.log('Invalid Exif data: Invalid directory size.');\n return;\n }\n\n for (i = 0; i < tagsNumber; i += 1) {\n tagOffset = dirOffset + 2 + 12 * i;\n tagNumber = dataView.getUint16(tagOffset, littleEndian);\n if (!shouldIncludeTag(includeTags, excludeTags, tagNumber)) continue;\n tagValue = getExifValue(dataView, tiffOffset, tagOffset, dataView.getUint16(tagOffset + 2, littleEndian), // tag type\n dataView.getUint32(tagOffset + 4, littleEndian), // tag length\n littleEndian);\n tags[tagNumber] = tagValue;\n\n if (tagOffsets) {\n tagOffsets[tagNumber] = tagOffset;\n }\n } // Return the offset to the next directory:\n\n\n return dataView.getUint32(dirEndOffset, littleEndian);\n }\n /**\n * Parses tags in a given IFD (Image File Directory).\n *\n * @param {object} data Data object to store exif tags and offsets\n * @param {number|string} tagCode IFD tag code\n * @param {DataView} dataView Data view interface\n * @param {number} tiffOffset TIFF offset\n * @param {boolean} littleEndian Little endian encoding\n * @param {object} includeTags Map of tags to include\n * @param {object} excludeTags Map of tags to exclude\n */\n\n\n function parseExifIFD(data, tagCode, dataView, tiffOffset, littleEndian, includeTags, excludeTags) {\n var dirOffset = data.exif[tagCode];\n\n if (dirOffset) {\n data.exif[tagCode] = new ExifMap(tagCode);\n\n if (data.exifOffsets) {\n data.exifOffsets[tagCode] = new ExifMap(tagCode);\n }\n\n parseExifTags(dataView, tiffOffset, tiffOffset + dirOffset, littleEndian, data.exif[tagCode], data.exifOffsets && data.exifOffsets[tagCode], includeTags && includeTags[tagCode], excludeTags && excludeTags[tagCode]);\n }\n }\n\n loadImage.parseExifData = function (dataView, offset, length, data, options) {\n if (options.disableExif) {\n return;\n }\n\n var includeTags = options.includeExifTags;\n var excludeTags = options.excludeExifTags || {\n 0x8769: {\n // ExifIFDPointer\n 0x927c: true // MakerNote\n\n }\n };\n var tiffOffset = offset + 10;\n var littleEndian;\n var dirOffset;\n var thumbnailIFD; // Check for the ASCII code for \"Exif\" (0x45786966):\n\n if (dataView.getUint32(offset + 4) !== 0x45786966) {\n // No Exif data, might be XMP data instead\n return;\n }\n\n if (tiffOffset + 8 > dataView.byteLength) {\n console.log('Invalid Exif data: Invalid segment size.');\n return;\n } // Check for the two null bytes:\n\n\n if (dataView.getUint16(offset + 8) !== 0x0000) {\n console.log('Invalid Exif data: Missing byte alignment offset.');\n return;\n } // Check the byte alignment:\n\n\n switch (dataView.getUint16(tiffOffset)) {\n case 0x4949:\n littleEndian = true;\n break;\n\n case 0x4d4d:\n littleEndian = false;\n break;\n\n default:\n console.log('Invalid Exif data: Invalid byte alignment marker.');\n return;\n } // Check for the TIFF tag marker (0x002A):\n\n\n if (dataView.getUint16(tiffOffset + 2, littleEndian) !== 0x002a) {\n console.log('Invalid Exif data: Missing TIFF marker.');\n return;\n } // Retrieve the directory offset bytes, usually 0x00000008 or 8 decimal:\n\n\n dirOffset = dataView.getUint32(tiffOffset + 4, littleEndian); // Create the exif object to store the tags:\n\n data.exif = new ExifMap();\n\n if (!options.disableExifOffsets) {\n data.exifOffsets = new ExifMap();\n data.exifTiffOffset = tiffOffset;\n data.exifLittleEndian = littleEndian;\n } // Parse the tags of the main image directory (IFD0) and retrieve the\n // offset to the next directory (IFD1), usually the thumbnail directory:\n\n\n dirOffset = parseExifTags(dataView, tiffOffset, tiffOffset + dirOffset, littleEndian, data.exif, data.exifOffsets, includeTags, excludeTags);\n\n if (dirOffset && shouldIncludeTag(includeTags, excludeTags, 'ifd1')) {\n data.exif.ifd1 = dirOffset;\n\n if (data.exifOffsets) {\n data.exifOffsets.ifd1 = tiffOffset + dirOffset;\n }\n }\n\n Object.keys(data.exif.ifds).forEach(function (tagCode) {\n parseExifIFD(data, tagCode, dataView, tiffOffset, littleEndian, includeTags, excludeTags);\n });\n thumbnailIFD = data.exif.ifd1; // Check for JPEG Thumbnail offset and data length:\n\n if (thumbnailIFD && thumbnailIFD[0x0201]) {\n thumbnailIFD[0x0201] = getExifThumbnail(dataView, tiffOffset + thumbnailIFD[0x0201], thumbnailIFD[0x0202] // Thumbnail data length\n );\n }\n }; // Registers the Exif parser for the APP1 JPEG metadata segment:\n\n\n loadImage.metaDataParsers.jpeg[0xffe1].push(loadImage.parseExifData);\n loadImage.exifWriters = {\n // Orientation writer:\n 0x0112: function _(buffer, data, value) {\n var orientationOffset = data.exifOffsets[0x0112];\n if (!orientationOffset) return buffer;\n var view = new DataView(buffer, orientationOffset + 8, 2);\n view.setUint16(0, value, data.exifLittleEndian);\n return buffer;\n }\n };\n\n loadImage.writeExifData = function (buffer, data, id, value) {\n return loadImage.exifWriters[data.exif.map[id]](buffer, data, value);\n };\n\n loadImage.ExifMap = ExifMap; // Adds the following properties to the parseMetaData callback data:\n // - exif: The parsed Exif tags\n // - exifOffsets: The parsed Exif tag offsets\n // - exifTiffOffset: TIFF header offset (used for offset pointers)\n // - exifLittleEndian: little endian order if true, big endian if false\n // Adds the following options to the parseMetaData method:\n // - disableExif: Disables Exif parsing when true.\n // - disableExifOffsets: Disables storing Exif tag offsets when true.\n // - includeExifTags: A map of Exif tags to include for parsing.\n // - excludeExifTags: A map of Exif tags to exclude from parsing.\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*\n * JavaScript Load Image IPTC Parser\n * https://github.com/blueimp/JavaScript-Load-Image\n *\n * Copyright 2013, Sebastian Tschan\n * Copyright 2018, Dave Bevan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, module, require, DataView */\n;\n\n(function (factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./load-image', './load-image-meta'], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && module.exports) {\n factory(require('./load-image'), require('./load-image-meta'));\n } else {\n // Browser globals:\n factory(window.loadImage);\n }\n})(function (loadImage) {\n 'use strict';\n /**\n * IPTC tag map\n *\n * @name IptcMap\n * @class\n */\n\n function IptcMap() {}\n\n IptcMap.prototype.map = {\n ObjectName: 5\n };\n IptcMap.prototype.types = {\n 0: 'Uint16',\n // ApplicationRecordVersion\n 200: 'Uint16',\n // ObjectPreviewFileFormat\n 201: 'Uint16',\n // ObjectPreviewFileVersion\n 202: 'binary' // ObjectPreviewData\n\n };\n /**\n * Retrieves IPTC tag value\n *\n * @param {number|string} id IPTC tag code or name\n * @returns {object} IPTC tag value\n */\n\n IptcMap.prototype.get = function (id) {\n return this[id] || this[this.map[id]];\n };\n /**\n * Retrieves string for the given DataView and range\n *\n * @param {DataView} dataView Data view interface\n * @param {number} offset Offset start\n * @param {number} length Offset length\n * @returns {string} String value\n */\n\n\n function getStringValue(dataView, offset, length) {\n var outstr = '';\n var end = offset + length;\n\n for (var n = offset; n < end; n += 1) {\n outstr += String.fromCharCode(dataView.getUint8(n));\n }\n\n return outstr;\n }\n /**\n * Retrieves tag value for the given DataView and range\n *\n * @param {number} tagCode tag code\n * @param {IptcMap} map IPTC tag map\n * @param {DataView} dataView Data view interface\n * @param {number} offset Range start\n * @param {number} length Range length\n * @returns {object} Tag value\n */\n\n\n function getTagValue(tagCode, map, dataView, offset, length) {\n if (map.types[tagCode] === 'binary') {\n return new Blob([dataView.buffer.slice(offset, offset + length)]);\n }\n\n if (map.types[tagCode] === 'Uint16') {\n return dataView.getUint16(offset);\n }\n\n return getStringValue(dataView, offset, length);\n }\n /**\n * Combines IPTC value with existing ones.\n *\n * @param {object} value Existing IPTC field value\n * @param {object} newValue New IPTC field value\n * @returns {object} Resulting IPTC field value\n */\n\n\n function combineTagValues(value, newValue) {\n if (value === undefined) return newValue;\n\n if (value instanceof Array) {\n value.push(newValue);\n return value;\n }\n\n return [value, newValue];\n }\n /**\n * Parses IPTC tags.\n *\n * @param {DataView} dataView Data view interface\n * @param {number} segmentOffset Segment offset\n * @param {number} segmentLength Segment length\n * @param {object} data Data export object\n * @param {object} includeTags Map of tags to include\n * @param {object} excludeTags Map of tags to exclude\n */\n\n\n function parseIptcTags(dataView, segmentOffset, segmentLength, data, includeTags, excludeTags) {\n var value, tagSize, tagCode;\n var segmentEnd = segmentOffset + segmentLength;\n var offset = segmentOffset;\n\n while (offset < segmentEnd) {\n if (dataView.getUint8(offset) === 0x1c && // tag marker\n dataView.getUint8(offset + 1) === 0x02 // record number, only handles v2\n ) {\n tagCode = dataView.getUint8(offset + 2);\n\n if ((!includeTags || includeTags[tagCode]) && (!excludeTags || !excludeTags[tagCode])) {\n tagSize = dataView.getInt16(offset + 3);\n value = getTagValue(tagCode, data.iptc, dataView, offset + 5, tagSize);\n data.iptc[tagCode] = combineTagValues(data.iptc[tagCode], value);\n\n if (data.iptcOffsets) {\n data.iptcOffsets[tagCode] = offset;\n }\n }\n }\n\n offset += 1;\n }\n }\n /**\n * Tests if field segment starts at offset.\n *\n * @param {DataView} dataView Data view interface\n * @param {number} offset Segment offset\n * @returns {boolean} True if '8BIM' exists at offset\n */\n\n\n function isSegmentStart(dataView, offset) {\n return dataView.getUint32(offset) === 0x3842494d && // Photoshop segment start\n dataView.getUint16(offset + 4) === 0x0404 // IPTC segment start\n ;\n }\n /**\n * Returns header length.\n *\n * @param {DataView} dataView Data view interface\n * @param {number} offset Segment offset\n * @returns {number} Header length\n */\n\n\n function getHeaderLength(dataView, offset) {\n var length = dataView.getUint8(offset + 7);\n if (length % 2 !== 0) length += 1; // Check for pre photoshop 6 format\n\n if (length === 0) {\n // Always 4\n length = 4;\n }\n\n return length;\n }\n\n loadImage.parseIptcData = function (dataView, offset, length, data, options) {\n if (options.disableIptc) {\n return;\n }\n\n var markerLength = offset + length;\n\n while (offset + 8 < markerLength) {\n if (isSegmentStart(dataView, offset)) {\n var headerLength = getHeaderLength(dataView, offset);\n var segmentOffset = offset + 8 + headerLength;\n\n if (segmentOffset > markerLength) {\n // eslint-disable-next-line no-console\n console.log('Invalid IPTC data: Invalid segment offset.');\n break;\n }\n\n var segmentLength = dataView.getUint16(offset + 6 + headerLength);\n\n if (offset + segmentLength > markerLength) {\n // eslint-disable-next-line no-console\n console.log('Invalid IPTC data: Invalid segment size.');\n break;\n } // Create the iptc object to store the tags:\n\n\n data.iptc = new IptcMap();\n\n if (!options.disableIptcOffsets) {\n data.iptcOffsets = new IptcMap();\n }\n\n parseIptcTags(dataView, segmentOffset, segmentLength, data, options.includeIptcTags, options.excludeIptcTags || {\n 202: true\n } // ObjectPreviewData\n );\n return;\n } // eslint-disable-next-line no-param-reassign\n\n\n offset += 1;\n }\n }; // Registers this IPTC parser for the APP13 JPEG metadata segment:\n\n\n loadImage.metaDataParsers.jpeg[0xffed].push(loadImage.parseIptcData);\n loadImage.IptcMap = IptcMap; // Adds the following properties to the parseMetaData callback data:\n // - iptc: The iptc tags, parsed by the parseIptcData method\n // Adds the following options to the parseMetaData method:\n // - disableIptc: Disables IPTC parsing when true.\n // - disableIptcOffsets: Disables storing IPTC tag offsets when true.\n // - includeIptcTags: A map of IPTC tags to include for parsing.\n // - excludeIptcTags: A map of IPTC tags to exclude from parsing.\n});","var root = require('./_root');\n/** Built-in value references. */\n\n\nvar _Symbol = root.Symbol;\nmodule.exports = _Symbol;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar freeGlobal = require('./_freeGlobal');\n/** Detect free variable `self`. */\n\n\nvar freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\nmodule.exports = root;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n/** `Object#toString` result references. */\n\n\nvar symbolTag = '[object Symbol]';\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\nfunction isSymbol(value) {\n return _typeof(value) == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag;\n}\n\nmodule.exports = isSymbol;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) == 'object' && global && global.Object === Object && global;\nmodule.exports = freeGlobal;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*\n * JavaScript Load Image Fetch\n * https://github.com/blueimp/JavaScript-Load-Image\n *\n * Copyright 2017, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, module, require, Promise */\n;\n\n(function (factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./load-image'], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && module.exports) {\n factory(require('./load-image'));\n } else {\n // Browser globals:\n factory(window.loadImage);\n }\n})(function (loadImage) {\n 'use strict';\n\n var global = loadImage.global;\n\n if (global.fetch && global.Request && global.Response && global.Response.prototype.blob) {\n loadImage.fetchBlob = function (url, callback, options) {\n /**\n * Fetch response handler.\n *\n * @param {Response} response Fetch response\n * @returns {Blob} Fetched Blob.\n */\n function responseHandler(response) {\n return response.blob();\n }\n\n if (global.Promise && typeof callback !== 'function') {\n return fetch(new Request(url, callback)).then(responseHandler);\n }\n\n fetch(new Request(url, options)).then(responseHandler).then(callback)[// Avoid parsing error in IE<9, where catch is a reserved word.\n // eslint-disable-next-line dot-notation\n 'catch'](function (err) {\n callback(null, err);\n });\n };\n } else if (global.XMLHttpRequest && // https://xhr.spec.whatwg.org/#the-responsetype-attribute\n new XMLHttpRequest().responseType === '') {\n loadImage.fetchBlob = function (url, callback, options) {\n /**\n * Promise executor\n *\n * @param {Function} resolve Resolution function\n * @param {Function} reject Rejection function\n */\n function executor(resolve, reject) {\n options = options || {}; // eslint-disable-line no-param-reassign\n\n var req = new XMLHttpRequest();\n req.open(options.method || 'GET', url);\n\n if (options.headers) {\n Object.keys(options.headers).forEach(function (key) {\n req.setRequestHeader(key, options.headers[key]);\n });\n }\n\n req.withCredentials = options.credentials === 'include';\n req.responseType = 'blob';\n\n req.onload = function () {\n resolve(req.response);\n };\n\n req.onerror = req.onabort = req.ontimeout = function (err) {\n if (resolve === reject) {\n // Not using Promises\n reject(null, err);\n } else {\n reject(err);\n }\n };\n\n req.send(options.body);\n }\n\n if (global.Promise && typeof callback !== 'function') {\n options = callback; // eslint-disable-line no-param-reassign\n\n return new Promise(executor);\n }\n\n return executor(callback, callback);\n };\n }\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*\n * JavaScript Load Image Exif Map\n * https://github.com/blueimp/JavaScript-Load-Image\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Exif tags mapping based on\n * https://github.com/jseidelin/exif-js\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, module, require */\n;\n\n(function (factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./load-image', './load-image-exif'], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && module.exports) {\n factory(require('./load-image'), require('./load-image-exif'));\n } else {\n // Browser globals:\n factory(window.loadImage);\n }\n})(function (loadImage) {\n 'use strict';\n\n var ExifMapProto = loadImage.ExifMap.prototype;\n ExifMapProto.tags = {\n // =================\n // TIFF tags (IFD0):\n // =================\n 0x0100: 'ImageWidth',\n 0x0101: 'ImageHeight',\n 0x0102: 'BitsPerSample',\n 0x0103: 'Compression',\n 0x0106: 'PhotometricInterpretation',\n 0x0112: 'Orientation',\n 0x0115: 'SamplesPerPixel',\n 0x011c: 'PlanarConfiguration',\n 0x0212: 'YCbCrSubSampling',\n 0x0213: 'YCbCrPositioning',\n 0x011a: 'XResolution',\n 0x011b: 'YResolution',\n 0x0128: 'ResolutionUnit',\n 0x0111: 'StripOffsets',\n 0x0116: 'RowsPerStrip',\n 0x0117: 'StripByteCounts',\n 0x0201: 'JPEGInterchangeFormat',\n 0x0202: 'JPEGInterchangeFormatLength',\n 0x012d: 'TransferFunction',\n 0x013e: 'WhitePoint',\n 0x013f: 'PrimaryChromaticities',\n 0x0211: 'YCbCrCoefficients',\n 0x0214: 'ReferenceBlackWhite',\n 0x0132: 'DateTime',\n 0x010e: 'ImageDescription',\n 0x010f: 'Make',\n 0x0110: 'Model',\n 0x0131: 'Software',\n 0x013b: 'Artist',\n 0x8298: 'Copyright',\n 0x8769: {\n // ExifIFDPointer\n 0x9000: 'ExifVersion',\n // EXIF version\n 0xa000: 'FlashpixVersion',\n // Flashpix format version\n 0xa001: 'ColorSpace',\n // Color space information tag\n 0xa002: 'PixelXDimension',\n // Valid width of meaningful image\n 0xa003: 'PixelYDimension',\n // Valid height of meaningful image\n 0xa500: 'Gamma',\n 0x9101: 'ComponentsConfiguration',\n // Information about channels\n 0x9102: 'CompressedBitsPerPixel',\n // Compressed bits per pixel\n 0x927c: 'MakerNote',\n // Any desired information written by the manufacturer\n 0x9286: 'UserComment',\n // Comments by user\n 0xa004: 'RelatedSoundFile',\n // Name of related sound file\n 0x9003: 'DateTimeOriginal',\n // Date and time when the original image was generated\n 0x9004: 'DateTimeDigitized',\n // Date and time when the image was stored digitally\n 0x9010: 'OffsetTime',\n // Time zone when the image file was last changed\n 0x9011: 'OffsetTimeOriginal',\n // Time zone when the image was stored digitally\n 0x9012: 'OffsetTimeDigitized',\n // Time zone when the image was stored digitally\n 0x9290: 'SubSecTime',\n // Fractions of seconds for DateTime\n 0x9291: 'SubSecTimeOriginal',\n // Fractions of seconds for DateTimeOriginal\n 0x9292: 'SubSecTimeDigitized',\n // Fractions of seconds for DateTimeDigitized\n 0x829a: 'ExposureTime',\n // Exposure time (in seconds)\n 0x829d: 'FNumber',\n 0x8822: 'ExposureProgram',\n // Exposure program\n 0x8824: 'SpectralSensitivity',\n // Spectral sensitivity\n 0x8827: 'PhotographicSensitivity',\n // EXIF 2.3, ISOSpeedRatings in EXIF 2.2\n 0x8828: 'OECF',\n // Optoelectric conversion factor\n 0x8830: 'SensitivityType',\n 0x8831: 'StandardOutputSensitivity',\n 0x8832: 'RecommendedExposureIndex',\n 0x8833: 'ISOSpeed',\n 0x8834: 'ISOSpeedLatitudeyyy',\n 0x8835: 'ISOSpeedLatitudezzz',\n 0x9201: 'ShutterSpeedValue',\n // Shutter speed\n 0x9202: 'ApertureValue',\n // Lens aperture\n 0x9203: 'BrightnessValue',\n // Value of brightness\n 0x9204: 'ExposureBias',\n // Exposure bias\n 0x9205: 'MaxApertureValue',\n // Smallest F number of lens\n 0x9206: 'SubjectDistance',\n // Distance to subject in meters\n 0x9207: 'MeteringMode',\n // Metering mode\n 0x9208: 'LightSource',\n // Kind of light source\n 0x9209: 'Flash',\n // Flash status\n 0x9214: 'SubjectArea',\n // Location and area of main subject\n 0x920a: 'FocalLength',\n // Focal length of the lens in mm\n 0xa20b: 'FlashEnergy',\n // Strobe energy in BCPS\n 0xa20c: 'SpatialFrequencyResponse',\n 0xa20e: 'FocalPlaneXResolution',\n // Number of pixels in width direction per FPRUnit\n 0xa20f: 'FocalPlaneYResolution',\n // Number of pixels in height direction per FPRUnit\n 0xa210: 'FocalPlaneResolutionUnit',\n // Unit for measuring the focal plane resolution\n 0xa214: 'SubjectLocation',\n // Location of subject in image\n 0xa215: 'ExposureIndex',\n // Exposure index selected on camera\n 0xa217: 'SensingMethod',\n // Image sensor type\n 0xa300: 'FileSource',\n // Image source (3 == DSC)\n 0xa301: 'SceneType',\n // Scene type (1 == directly photographed)\n 0xa302: 'CFAPattern',\n // Color filter array geometric pattern\n 0xa401: 'CustomRendered',\n // Special processing\n 0xa402: 'ExposureMode',\n // Exposure mode\n 0xa403: 'WhiteBalance',\n // 1 = auto white balance, 2 = manual\n 0xa404: 'DigitalZoomRatio',\n // Digital zoom ratio\n 0xa405: 'FocalLengthIn35mmFilm',\n 0xa406: 'SceneCaptureType',\n // Type of scene\n 0xa407: 'GainControl',\n // Degree of overall image gain adjustment\n 0xa408: 'Contrast',\n // Direction of contrast processing applied by camera\n 0xa409: 'Saturation',\n // Direction of saturation processing applied by camera\n 0xa40a: 'Sharpness',\n // Direction of sharpness processing applied by camera\n 0xa40b: 'DeviceSettingDescription',\n 0xa40c: 'SubjectDistanceRange',\n // Distance to subject\n 0xa420: 'ImageUniqueID',\n // Identifier assigned uniquely to each image\n 0xa430: 'CameraOwnerName',\n 0xa431: 'BodySerialNumber',\n 0xa432: 'LensSpecification',\n 0xa433: 'LensMake',\n 0xa434: 'LensModel',\n 0xa435: 'LensSerialNumber'\n },\n 0x8825: {\n // GPSInfoIFDPointer\n 0x0000: 'GPSVersionID',\n 0x0001: 'GPSLatitudeRef',\n 0x0002: 'GPSLatitude',\n 0x0003: 'GPSLongitudeRef',\n 0x0004: 'GPSLongitude',\n 0x0005: 'GPSAltitudeRef',\n 0x0006: 'GPSAltitude',\n 0x0007: 'GPSTimeStamp',\n 0x0008: 'GPSSatellites',\n 0x0009: 'GPSStatus',\n 0x000a: 'GPSMeasureMode',\n 0x000b: 'GPSDOP',\n 0x000c: 'GPSSpeedRef',\n 0x000d: 'GPSSpeed',\n 0x000e: 'GPSTrackRef',\n 0x000f: 'GPSTrack',\n 0x0010: 'GPSImgDirectionRef',\n 0x0011: 'GPSImgDirection',\n 0x0012: 'GPSMapDatum',\n 0x0013: 'GPSDestLatitudeRef',\n 0x0014: 'GPSDestLatitude',\n 0x0015: 'GPSDestLongitudeRef',\n 0x0016: 'GPSDestLongitude',\n 0x0017: 'GPSDestBearingRef',\n 0x0018: 'GPSDestBearing',\n 0x0019: 'GPSDestDistanceRef',\n 0x001a: 'GPSDestDistance',\n 0x001b: 'GPSProcessingMethod',\n 0x001c: 'GPSAreaInformation',\n 0x001d: 'GPSDateStamp',\n 0x001e: 'GPSDifferential',\n 0x001f: 'GPSHPositioningError'\n },\n 0xa005: {\n // InteroperabilityIFDPointer\n 0x0001: 'InteroperabilityIndex'\n }\n }; // IFD1 directory can contain any IFD0 tags:\n\n ExifMapProto.tags.ifd1 = ExifMapProto.tags;\n ExifMapProto.stringValues = {\n ExposureProgram: {\n 0: 'Undefined',\n 1: 'Manual',\n 2: 'Normal program',\n 3: 'Aperture priority',\n 4: 'Shutter priority',\n 5: 'Creative program',\n 6: 'Action program',\n 7: 'Portrait mode',\n 8: 'Landscape mode'\n },\n MeteringMode: {\n 0: 'Unknown',\n 1: 'Average',\n 2: 'CenterWeightedAverage',\n 3: 'Spot',\n 4: 'MultiSpot',\n 5: 'Pattern',\n 6: 'Partial',\n 255: 'Other'\n },\n LightSource: {\n 0: 'Unknown',\n 1: 'Daylight',\n 2: 'Fluorescent',\n 3: 'Tungsten (incandescent light)',\n 4: 'Flash',\n 9: 'Fine weather',\n 10: 'Cloudy weather',\n 11: 'Shade',\n 12: 'Daylight fluorescent (D 5700 - 7100K)',\n 13: 'Day white fluorescent (N 4600 - 5400K)',\n 14: 'Cool white fluorescent (W 3900 - 4500K)',\n 15: 'White fluorescent (WW 3200 - 3700K)',\n 17: 'Standard light A',\n 18: 'Standard light B',\n 19: 'Standard light C',\n 20: 'D55',\n 21: 'D65',\n 22: 'D75',\n 23: 'D50',\n 24: 'ISO studio tungsten',\n 255: 'Other'\n },\n Flash: {\n 0x0000: 'Flash did not fire',\n 0x0001: 'Flash fired',\n 0x0005: 'Strobe return light not detected',\n 0x0007: 'Strobe return light detected',\n 0x0009: 'Flash fired, compulsory flash mode',\n 0x000d: 'Flash fired, compulsory flash mode, return light not detected',\n 0x000f: 'Flash fired, compulsory flash mode, return light detected',\n 0x0010: 'Flash did not fire, compulsory flash mode',\n 0x0018: 'Flash did not fire, auto mode',\n 0x0019: 'Flash fired, auto mode',\n 0x001d: 'Flash fired, auto mode, return light not detected',\n 0x001f: 'Flash fired, auto mode, return light detected',\n 0x0020: 'No flash function',\n 0x0041: 'Flash fired, red-eye reduction mode',\n 0x0045: 'Flash fired, red-eye reduction mode, return light not detected',\n 0x0047: 'Flash fired, red-eye reduction mode, return light detected',\n 0x0049: 'Flash fired, compulsory flash mode, red-eye reduction mode',\n 0x004d: 'Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected',\n 0x004f: 'Flash fired, compulsory flash mode, red-eye reduction mode, return light detected',\n 0x0059: 'Flash fired, auto mode, red-eye reduction mode',\n 0x005d: 'Flash fired, auto mode, return light not detected, red-eye reduction mode',\n 0x005f: 'Flash fired, auto mode, return light detected, red-eye reduction mode'\n },\n SensingMethod: {\n 1: 'Undefined',\n 2: 'One-chip color area sensor',\n 3: 'Two-chip color area sensor',\n 4: 'Three-chip color area sensor',\n 5: 'Color sequential area sensor',\n 7: 'Trilinear sensor',\n 8: 'Color sequential linear sensor'\n },\n SceneCaptureType: {\n 0: 'Standard',\n 1: 'Landscape',\n 2: 'Portrait',\n 3: 'Night scene'\n },\n SceneType: {\n 1: 'Directly photographed'\n },\n CustomRendered: {\n 0: 'Normal process',\n 1: 'Custom process'\n },\n WhiteBalance: {\n 0: 'Auto white balance',\n 1: 'Manual white balance'\n },\n GainControl: {\n 0: 'None',\n 1: 'Low gain up',\n 2: 'High gain up',\n 3: 'Low gain down',\n 4: 'High gain down'\n },\n Contrast: {\n 0: 'Normal',\n 1: 'Soft',\n 2: 'Hard'\n },\n Saturation: {\n 0: 'Normal',\n 1: 'Low saturation',\n 2: 'High saturation'\n },\n Sharpness: {\n 0: 'Normal',\n 1: 'Soft',\n 2: 'Hard'\n },\n SubjectDistanceRange: {\n 0: 'Unknown',\n 1: 'Macro',\n 2: 'Close view',\n 3: 'Distant view'\n },\n FileSource: {\n 3: 'DSC'\n },\n ComponentsConfiguration: {\n 0: '',\n 1: 'Y',\n 2: 'Cb',\n 3: 'Cr',\n 4: 'R',\n 5: 'G',\n 6: 'B'\n },\n Orientation: {\n 1: 'Original',\n 2: 'Horizontal flip',\n 3: 'Rotate 180° CCW',\n 4: 'Vertical flip',\n 5: 'Vertical flip + Rotate 90° CW',\n 6: 'Rotate 90° CW',\n 7: 'Horizontal flip + Rotate 90° CW',\n 8: 'Rotate 90° CCW'\n }\n };\n\n ExifMapProto.getText = function (name) {\n var value = this.get(name);\n\n switch (name) {\n case 'LightSource':\n case 'Flash':\n case 'MeteringMode':\n case 'ExposureProgram':\n case 'SensingMethod':\n case 'SceneCaptureType':\n case 'SceneType':\n case 'CustomRendered':\n case 'WhiteBalance':\n case 'GainControl':\n case 'Contrast':\n case 'Saturation':\n case 'Sharpness':\n case 'SubjectDistanceRange':\n case 'FileSource':\n case 'Orientation':\n return this.stringValues[name][value];\n\n case 'ExifVersion':\n case 'FlashpixVersion':\n if (!value) return;\n return String.fromCharCode(value[0], value[1], value[2], value[3]);\n\n case 'ComponentsConfiguration':\n if (!value) return;\n return this.stringValues[name][value[0]] + this.stringValues[name][value[1]] + this.stringValues[name][value[2]] + this.stringValues[name][value[3]];\n\n case 'GPSVersionID':\n if (!value) return;\n return value[0] + '.' + value[1] + '.' + value[2] + '.' + value[3];\n }\n\n return String(value);\n };\n\n ExifMapProto.getAll = function () {\n var map = {};\n var prop;\n var obj;\n var name;\n\n for (prop in this) {\n if (Object.prototype.hasOwnProperty.call(this, prop)) {\n obj = this[prop];\n\n if (obj && obj.getAll) {\n map[this.ifds[prop].name] = obj.getAll();\n } else {\n name = this.tags[prop];\n if (name) map[name] = this.getText(name);\n }\n }\n }\n\n return map;\n };\n\n ExifMapProto.getName = function (tagCode) {\n var name = this.tags[tagCode];\n if (_typeof(name) === 'object') return this.ifds[tagCode].name;\n return name;\n } // Extend the map of tag names to tag codes:\n ;\n\n (function () {\n var tags = ExifMapProto.tags;\n var prop;\n var ifd;\n var subTags; // Map the tag names to tags:\n\n for (prop in tags) {\n if (Object.prototype.hasOwnProperty.call(tags, prop)) {\n ifd = ExifMapProto.ifds[prop];\n\n if (ifd) {\n subTags = tags[prop];\n\n for (prop in subTags) {\n if (Object.prototype.hasOwnProperty.call(subTags, prop)) {\n ifd.map[subTags[prop]] = Number(prop);\n }\n }\n } else {\n ExifMapProto.map[tags[prop]] = Number(prop);\n }\n }\n }\n })();\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*\n * JavaScript Load Image IPTC Map\n * https://github.com/blueimp/JavaScript-Load-Image\n *\n * Copyright 2013, Sebastian Tschan\n * Copyright 2018, Dave Bevan\n *\n * IPTC tags mapping based on\n * https://iptc.org/standards/photo-metadata\n * https://exiftool.org/TagNames/IPTC.html\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, module, require */\n;\n\n(function (factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./load-image', './load-image-iptc'], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && module.exports) {\n factory(require('./load-image'), require('./load-image-iptc'));\n } else {\n // Browser globals:\n factory(window.loadImage);\n }\n})(function (loadImage) {\n 'use strict';\n\n var IptcMapProto = loadImage.IptcMap.prototype;\n IptcMapProto.tags = {\n 0: 'ApplicationRecordVersion',\n 3: 'ObjectTypeReference',\n 4: 'ObjectAttributeReference',\n 5: 'ObjectName',\n 7: 'EditStatus',\n 8: 'EditorialUpdate',\n 10: 'Urgency',\n 12: 'SubjectReference',\n 15: 'Category',\n 20: 'SupplementalCategories',\n 22: 'FixtureIdentifier',\n 25: 'Keywords',\n 26: 'ContentLocationCode',\n 27: 'ContentLocationName',\n 30: 'ReleaseDate',\n 35: 'ReleaseTime',\n 37: 'ExpirationDate',\n 38: 'ExpirationTime',\n 40: 'SpecialInstructions',\n 42: 'ActionAdvised',\n 45: 'ReferenceService',\n 47: 'ReferenceDate',\n 50: 'ReferenceNumber',\n 55: 'DateCreated',\n 60: 'TimeCreated',\n 62: 'DigitalCreationDate',\n 63: 'DigitalCreationTime',\n 65: 'OriginatingProgram',\n 70: 'ProgramVersion',\n 75: 'ObjectCycle',\n 80: 'Byline',\n 85: 'BylineTitle',\n 90: 'City',\n 92: 'Sublocation',\n 95: 'State',\n 100: 'CountryCode',\n 101: 'Country',\n 103: 'OriginalTransmissionReference',\n 105: 'Headline',\n 110: 'Credit',\n 115: 'Source',\n 116: 'CopyrightNotice',\n 118: 'Contact',\n 120: 'Caption',\n 121: 'LocalCaption',\n 122: 'Writer',\n 125: 'RasterizedCaption',\n 130: 'ImageType',\n 131: 'ImageOrientation',\n 135: 'LanguageIdentifier',\n 150: 'AudioType',\n 151: 'AudioSamplingRate',\n 152: 'AudioSamplingResolution',\n 153: 'AudioDuration',\n 154: 'AudioOutcue',\n 184: 'JobID',\n 185: 'MasterDocumentID',\n 186: 'ShortDocumentID',\n 187: 'UniqueDocumentID',\n 188: 'OwnerID',\n 200: 'ObjectPreviewFileFormat',\n 201: 'ObjectPreviewFileVersion',\n 202: 'ObjectPreviewData',\n 221: 'Prefs',\n 225: 'ClassifyState',\n 228: 'SimilarityIndex',\n 230: 'DocumentNotes',\n 231: 'DocumentHistory',\n 232: 'ExifCameraInfo',\n 255: 'CatalogSets'\n };\n IptcMapProto.stringValues = {\n 10: {\n 0: '0 (reserved)',\n 1: '1 (most urgent)',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5 (normal urgency)',\n 6: '6',\n 7: '7',\n 8: '8 (least urgent)',\n 9: '9 (user-defined priority)'\n },\n 75: {\n a: 'Morning',\n b: 'Both Morning and Evening',\n p: 'Evening'\n },\n 131: {\n L: 'Landscape',\n P: 'Portrait',\n S: 'Square'\n }\n };\n\n IptcMapProto.getText = function (id) {\n var value = this.get(id);\n var tagCode = this.map[id];\n var stringValue = this.stringValues[tagCode];\n if (stringValue) return stringValue[value];\n return String(value);\n };\n\n IptcMapProto.getAll = function () {\n var map = {};\n var prop;\n var name;\n\n for (prop in this) {\n if (Object.prototype.hasOwnProperty.call(this, prop)) {\n name = this.tags[prop];\n if (name) map[name] = this.getText(name);\n }\n }\n\n return map;\n };\n\n IptcMapProto.getName = function (tagCode) {\n return this.tags[tagCode];\n } // Extend the map of tag names to tag codes:\n ;\n\n (function () {\n var tags = IptcMapProto.tags;\n var map = IptcMapProto.map || {};\n var prop; // Map the tag names to tags:\n\n for (prop in tags) {\n if (Object.prototype.hasOwnProperty.call(tags, prop)) {\n map[tags[prop]] = Number(prop);\n }\n }\n })();\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*\n * JavaScript Load Image Orientation\n * https://github.com/blueimp/JavaScript-Load-Image\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/*\nExif orientation values to correctly display the letter F:\n\n 1 2\n ██████ ██████\n ██ ██\n ████ ████\n ██ ██\n ██ ██\n\n 3 4\n ██ ██\n ██ ██\n ████ ████\n ██ ██\n ██████ ██████\n\n 5 6\n██████████ ██\n██ ██ ██ ██\n██ ██████████\n\n 7 8\n ██ ██████████\n ██ ██ ██ ██\n██████████ ██\n\n*/\n\n/* global define, module, require */\n;\n\n(function (factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./load-image', './load-image-scale', './load-image-meta'], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && module.exports) {\n factory(require('./load-image'), require('./load-image-scale'), require('./load-image-meta'));\n } else {\n // Browser globals:\n factory(window.loadImage);\n }\n})(function (loadImage) {\n 'use strict';\n\n var originalTransform = loadImage.transform;\n var originalRequiresCanvas = loadImage.requiresCanvas;\n var originalRequiresMetaData = loadImage.requiresMetaData;\n var originalTransformCoordinates = loadImage.transformCoordinates;\n var originalGetTransformedOptions = loadImage.getTransformedOptions;\n\n (function ($) {\n // Guard for non-browser environments (e.g. server-side rendering):\n if (!$.global.document) return; // black+white 3x2 JPEG, with the following meta information set:\n // - EXIF Orientation: 6 (Rotated 90° CCW)\n // Image data layout (B=black, F=white):\n // BFF\n // BBB\n\n var testImageURL = 'data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' + 'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' + 'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' + 'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/x' + 'ABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAA' + 'AAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQ' + 'voP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXw' + 'H/9k=';\n var img = document.createElement('img');\n\n img.onload = function () {\n // Check if the browser supports automatic image orientation:\n $.orientation = img.width === 2 && img.height === 3;\n\n if ($.orientation) {\n var canvas = $.createCanvas(1, 1, true);\n var ctx = canvas.getContext('2d');\n ctx.drawImage(img, 1, 1, 1, 1, 0, 0, 1, 1); // Check if the source image coordinates (sX, sY, sWidth, sHeight) are\n // correctly applied to the auto-orientated image, which should result\n // in a white opaque pixel (e.g. in Safari).\n // Browsers that show a transparent pixel (e.g. Chromium) fail to crop\n // auto-oriented images correctly and require a workaround, e.g.\n // drawing the complete source image to an intermediate canvas first.\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=1074354\n\n $.orientationCropBug = ctx.getImageData(0, 0, 1, 1).data.toString() !== '255,255,255,255';\n }\n };\n\n img.src = testImageURL;\n })(loadImage);\n /**\n * Determines if the orientation requires a canvas element.\n *\n * @param {object} [options] Options object\n * @param {boolean} [withMetaData] Is metadata required for orientation\n * @returns {boolean} Returns true if orientation requires canvas/meta\n */\n\n\n function requiresCanvasOrientation(options, withMetaData) {\n var orientation = options && options.orientation;\n return (// Exif orientation for browsers without automatic image orientation:\n orientation === true && !loadImage.orientation || // Orientation reset for browsers with automatic image orientation:\n orientation === 1 && loadImage.orientation || // Orientation to defined value, requires meta for orientation reset only:\n (!withMetaData || loadImage.orientation) && orientation > 1 && orientation < 9\n );\n }\n /**\n * Determines if the image requires an orientation change.\n *\n * @param {number} [orientation] Defined orientation value\n * @param {number} [autoOrientation] Auto-orientation based on Exif data\n * @returns {boolean} Returns true if an orientation change is required\n */\n\n\n function requiresOrientationChange(orientation, autoOrientation) {\n return orientation !== autoOrientation && (orientation === 1 && autoOrientation > 1 && autoOrientation < 9 || orientation > 1 && orientation < 9);\n }\n /**\n * Determines orientation combinations that require a rotation by 180°.\n *\n * The following is a list of combinations that return true:\n *\n * 2 (flip) => 5 (rot90,flip), 7 (rot90,flip), 6 (rot90), 8 (rot90)\n * 4 (flip) => 5 (rot90,flip), 7 (rot90,flip), 6 (rot90), 8 (rot90)\n *\n * 5 (rot90,flip) => 2 (flip), 4 (flip), 6 (rot90), 8 (rot90)\n * 7 (rot90,flip) => 2 (flip), 4 (flip), 6 (rot90), 8 (rot90)\n *\n * 6 (rot90) => 2 (flip), 4 (flip), 5 (rot90,flip), 7 (rot90,flip)\n * 8 (rot90) => 2 (flip), 4 (flip), 5 (rot90,flip), 7 (rot90,flip)\n *\n * @param {number} [orientation] Defined orientation value\n * @param {number} [autoOrientation] Auto-orientation based on Exif data\n * @returns {boolean} Returns true if rotation by 180° is required\n */\n\n\n function requiresRot180(orientation, autoOrientation) {\n if (autoOrientation > 1 && autoOrientation < 9) {\n switch (orientation) {\n case 2:\n case 4:\n return autoOrientation > 4;\n\n case 5:\n case 7:\n return autoOrientation % 2 === 0;\n\n case 6:\n case 8:\n return autoOrientation === 2 || autoOrientation === 4 || autoOrientation === 5 || autoOrientation === 7;\n }\n }\n\n return false;\n } // Determines if the target image should be a canvas element:\n\n\n loadImage.requiresCanvas = function (options) {\n return requiresCanvasOrientation(options) || originalRequiresCanvas.call(loadImage, options);\n }; // Determines if metadata should be loaded automatically:\n\n\n loadImage.requiresMetaData = function (options) {\n return requiresCanvasOrientation(options, true) || originalRequiresMetaData.call(loadImage, options);\n };\n\n loadImage.transform = function (img, options, callback, file, data) {\n originalTransform.call(loadImage, img, options, function (img, data) {\n if (data) {\n var autoOrientation = loadImage.orientation && data.exif && data.exif.get('Orientation');\n\n if (autoOrientation > 4 && autoOrientation < 9) {\n // Automatic image orientation switched image dimensions\n var originalWidth = data.originalWidth;\n var originalHeight = data.originalHeight;\n data.originalWidth = originalHeight;\n data.originalHeight = originalWidth;\n }\n }\n\n callback(img, data);\n }, file, data);\n }; // Transforms coordinate and dimension options\n // based on the given orientation option:\n\n\n loadImage.getTransformedOptions = function (img, opts, data) {\n var options = originalGetTransformedOptions.call(loadImage, img, opts);\n var exifOrientation = data.exif && data.exif.get('Orientation');\n var orientation = options.orientation;\n var autoOrientation = loadImage.orientation && exifOrientation;\n if (orientation === true) orientation = exifOrientation;\n\n if (!requiresOrientationChange(orientation, autoOrientation)) {\n return options;\n }\n\n var top = options.top;\n var right = options.right;\n var bottom = options.bottom;\n var left = options.left;\n var newOptions = {};\n\n for (var i in options) {\n if (Object.prototype.hasOwnProperty.call(options, i)) {\n newOptions[i] = options[i];\n }\n }\n\n newOptions.orientation = orientation;\n\n if (orientation > 4 && !(autoOrientation > 4) || orientation < 5 && autoOrientation > 4) {\n // Image dimensions and target dimensions are switched\n newOptions.maxWidth = options.maxHeight;\n newOptions.maxHeight = options.maxWidth;\n newOptions.minWidth = options.minHeight;\n newOptions.minHeight = options.minWidth;\n newOptions.sourceWidth = options.sourceHeight;\n newOptions.sourceHeight = options.sourceWidth;\n }\n\n if (autoOrientation > 1) {\n // Browsers which correctly apply source image coordinates to\n // auto-oriented images\n switch (autoOrientation) {\n case 2:\n // Horizontal flip\n right = options.left;\n left = options.right;\n break;\n\n case 3:\n // 180° Rotate CCW\n top = options.bottom;\n right = options.left;\n bottom = options.top;\n left = options.right;\n break;\n\n case 4:\n // Vertical flip\n top = options.bottom;\n bottom = options.top;\n break;\n\n case 5:\n // Horizontal flip + 90° Rotate CCW\n top = options.left;\n right = options.bottom;\n bottom = options.right;\n left = options.top;\n break;\n\n case 6:\n // 90° Rotate CCW\n top = options.left;\n right = options.top;\n bottom = options.right;\n left = options.bottom;\n break;\n\n case 7:\n // Vertical flip + 90° Rotate CCW\n top = options.right;\n right = options.top;\n bottom = options.left;\n left = options.bottom;\n break;\n\n case 8:\n // 90° Rotate CW\n top = options.right;\n right = options.bottom;\n bottom = options.left;\n left = options.top;\n break;\n } // Some orientation combinations require additional rotation by 180°:\n\n\n if (requiresRot180(orientation, autoOrientation)) {\n var tmpTop = top;\n var tmpRight = right;\n top = bottom;\n right = left;\n bottom = tmpTop;\n left = tmpRight;\n }\n }\n\n newOptions.top = top;\n newOptions.right = right;\n newOptions.bottom = bottom;\n newOptions.left = left; // Account for defined browser orientation:\n\n switch (orientation) {\n case 2:\n // Horizontal flip\n newOptions.right = left;\n newOptions.left = right;\n break;\n\n case 3:\n // 180° Rotate CCW\n newOptions.top = bottom;\n newOptions.right = left;\n newOptions.bottom = top;\n newOptions.left = right;\n break;\n\n case 4:\n // Vertical flip\n newOptions.top = bottom;\n newOptions.bottom = top;\n break;\n\n case 5:\n // Vertical flip + 90° Rotate CW\n newOptions.top = left;\n newOptions.right = bottom;\n newOptions.bottom = right;\n newOptions.left = top;\n break;\n\n case 6:\n // 90° Rotate CW\n newOptions.top = right;\n newOptions.right = bottom;\n newOptions.bottom = left;\n newOptions.left = top;\n break;\n\n case 7:\n // Horizontal flip + 90° Rotate CW\n newOptions.top = right;\n newOptions.right = top;\n newOptions.bottom = left;\n newOptions.left = bottom;\n break;\n\n case 8:\n // 90° Rotate CCW\n newOptions.top = left;\n newOptions.right = top;\n newOptions.bottom = right;\n newOptions.left = bottom;\n break;\n }\n\n return newOptions;\n }; // Transform image orientation based on the given EXIF orientation option:\n\n\n loadImage.transformCoordinates = function (canvas, options, data) {\n originalTransformCoordinates.call(loadImage, canvas, options, data);\n var orientation = options.orientation;\n var autoOrientation = loadImage.orientation && data.exif && data.exif.get('Orientation');\n\n if (!requiresOrientationChange(orientation, autoOrientation)) {\n return;\n }\n\n var ctx = canvas.getContext('2d');\n var width = canvas.width;\n var height = canvas.height;\n var sourceWidth = width;\n var sourceHeight = height;\n\n if (orientation > 4 && !(autoOrientation > 4) || orientation < 5 && autoOrientation > 4) {\n // Image dimensions and target dimensions are switched\n canvas.width = height;\n canvas.height = width;\n }\n\n if (orientation > 4) {\n // Destination and source dimensions are switched\n sourceWidth = height;\n sourceHeight = width;\n } // Reset automatic browser orientation:\n\n\n switch (autoOrientation) {\n case 2:\n // Horizontal flip\n ctx.translate(sourceWidth, 0);\n ctx.scale(-1, 1);\n break;\n\n case 3:\n // 180° Rotate CCW\n ctx.translate(sourceWidth, sourceHeight);\n ctx.rotate(Math.PI);\n break;\n\n case 4:\n // Vertical flip\n ctx.translate(0, sourceHeight);\n ctx.scale(1, -1);\n break;\n\n case 5:\n // Horizontal flip + 90° Rotate CCW\n ctx.rotate(-0.5 * Math.PI);\n ctx.scale(-1, 1);\n break;\n\n case 6:\n // 90° Rotate CCW\n ctx.rotate(-0.5 * Math.PI);\n ctx.translate(-sourceWidth, 0);\n break;\n\n case 7:\n // Vertical flip + 90° Rotate CCW\n ctx.rotate(-0.5 * Math.PI);\n ctx.translate(-sourceWidth, sourceHeight);\n ctx.scale(1, -1);\n break;\n\n case 8:\n // 90° Rotate CW\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(0, -sourceHeight);\n break;\n } // Some orientation combinations require additional rotation by 180°:\n\n\n if (requiresRot180(orientation, autoOrientation)) {\n ctx.translate(sourceWidth, sourceHeight);\n ctx.rotate(Math.PI);\n }\n\n switch (orientation) {\n case 2:\n // Horizontal flip\n ctx.translate(width, 0);\n ctx.scale(-1, 1);\n break;\n\n case 3:\n // 180° Rotate CCW\n ctx.translate(width, height);\n ctx.rotate(Math.PI);\n break;\n\n case 4:\n // Vertical flip\n ctx.translate(0, height);\n ctx.scale(1, -1);\n break;\n\n case 5:\n // Vertical flip + 90° Rotate CW\n ctx.rotate(0.5 * Math.PI);\n ctx.scale(1, -1);\n break;\n\n case 6:\n // 90° Rotate CW\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(0, -height);\n break;\n\n case 7:\n // Horizontal flip + 90° Rotate CW\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(width, -height);\n ctx.scale(-1, 1);\n break;\n\n case 8:\n // 90° Rotate CCW\n ctx.rotate(-0.5 * Math.PI);\n ctx.translate(-width, 0);\n break;\n }\n };\n});","var baseToString = require('./_baseToString');\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;","var _Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n/** `Object#toString` result references. */\n\n\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n/** Built-in value references. */\n\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\n\nmodule.exports = baseGetTag;","import loadImage from 'blueimp-load-image';\nimport snakeCase from 'lodash/snakeCase';\n\nexport default class Exif {\n constructor(file = null, localize = {}) {\n this.file = file;\n this.localize = localize;\n }\n\n async storeExif() {\n const input = document.querySelector('[data-image-attributes]');\n const store = {};\n const fields = [\n 'Model',\n 'LensMake',\n 'LensModel',\n 'ShutterSpeedValue',\n 'ApertureValue',\n 'FocalLength',\n 'MeteringMode',\n 'ExposureMode',\n 'PhotographicSensitivity',\n 'WhiteBalance',\n 'CompressedBitsPerPixel',\n ];\n\n if (this.file === null) {\n console.error('file is not found');\n return;\n }\n\n const data = await loadImage(this.file, {\n meta: true,\n });\n const exif = data?.exif?.getAll();\n\n if (!exif) {\n return {};\n }\n\n fields.forEach((key) => {\n const snakeKey = snakeCase(key);\n if (key === 'Model') {\n store[snakeKey] = exif[key];\n return;\n }\n store[snakeKey] = exif.Exif[key];\n });\n\n const storeCompact = Object.fromEntries(\n Object.entries(store).filter(([key]) => !!store[key])\n );\n\n input.value = JSON.stringify(storeCompact);\n return storeCompact;\n }\n\n addAccordionAria(target) {\n if (target === null) return;\n const accordion = document.querySelector(\n target.dataset.accordionTarget\n )\n\n const elements = [target, target.querySelector('svg'), accordion]\n const isMedium = window.matchMedia('(min-width: 769px)').matches\n const isEditable = ['edit', 'new'].includes(target.dataset.accordionActionName)\n\n // transitionを無効にする\n elements.forEach((element) => {\n element.style.transition = 'none';\n })\n\n\n if (isMedium || isEditable) {\n target.setAttribute('aria-expanded', true);\n accordion.setAttribute('aria-hidden', false);\n }\n\n // transitionを有効にする\n setTimeout(() => {\n elements.forEach((element) => {\n element.style.visibility = '';\n element.style.transition = '';\n })\n // 400ms は css transition の時間\n }, 400);\n }\n\n addAccordionEvent(target) {\n if (target === null) return;\n const accordion = document.querySelector(\n target.dataset.accordionTarget\n );\n\n target.addEventListener('click', () => {\n if (accordion === null) {\n console.error('accordion target is not found');\n return;\n }\n\n const isExpanded = target.getAttribute('aria-expanded') === 'true';\n target.setAttribute('aria-expanded', !isExpanded);\n accordion.setAttribute('aria-hidden', isExpanded);\n });\n }\n\n async createPreviewRender(preview = '.js-exif-preview') {\n const store = await this.storeExif();\n const exifRender = document.querySelector(preview);\n\n if (exifRender === null) {\n console.error('preview is not found');\n return;\n }\n\n if (Object.keys(store).length < 1) {\n document.querySelector(exifRender.dataset.exifAttributeRender)?.remove();\n return;\n }\n\n if (exifRender.childElementCount > 0) {\n exifRender.replaceChildren();\n }\n\n const iconUrl = exifRender.dataset.exifIconUrl;\n const { component, button } = await this.createRenderComponent(\n store,\n iconUrl\n );\n\n exifRender.insertAdjacentElement('afterbegin', component);\n ['addAccordionAria', 'addAccordionEvent'].forEach((fn) => this[fn](button))\n }\n\n async createRenderComponent(store = {}, url = '') {\n const svg = await this.createRenderSVG(url);\n const renderSet = {\n component: {\n element: 'div',\n class: ['c-ImageAttribute'],\n },\n headline: {\n element: 'h2',\n class: ['c-ImageAttribute_Label'],\n },\n button: {\n element: 'button',\n type: 'button',\n class: ['c-ImageAttribute_Button', 'js-image-attribute-accordion'],\n data: {\n accordionTarget: '.c-ImageAttribute_List',\n accordionActionName: 'edit',\n },\n text: 'Exif(アイキャッチ画像)',\n ariaExpanded: true,\n },\n icon: {\n element: 'i',\n },\n list: {\n element: 'div',\n class: ['c-ImageAttribute_List'],\n ariaHidden: false,\n },\n };\n\n const [component, headline, button, icon, list] = Object.keys(\n renderSet\n ).map((key) => {\n const element = document.createElement(renderSet[key].element);\n\n if (renderSet[key].class) {\n element.classList.add(...renderSet[key].class);\n }\n\n if (renderSet[key].text) {\n element.textContent = renderSet[key].text;\n }\n\n if (renderSet[key].type) {\n element.type = renderSet[key].type;\n }\n\n if (renderSet[key].data) {\n Object.keys(renderSet[key].data).map((dataKey) => {\n element.dataset[dataKey] = renderSet[key].data[dataKey];\n });\n }\n\n if ('ariaExpanded' in renderSet[key]) {\n element.setAttribute(\"aria-expanded\", renderSet[key].ariaExpanded);\n }\n\n if ('ariaHidden' in renderSet[key]) {\n element.setAttribute(\"aria-hidden\", renderSet[key].ariaHidden);\n }\n\n return element;\n });\n\n Object.keys(store).forEach((key) => {\n list.append(this.createRenderItem(key, store[key]));\n });\n\n icon.insertAdjacentHTML('afterbegin', svg);\n button.append(icon);\n headline.append(button);\n component.append(headline);\n component.append(list);\n return {\n component,\n button,\n };\n }\n\n createRenderItem(typeContent, bodyContent) {\n const itemSet = {\n item: {\n element: 'dl',\n class: ['c-ImageAttribute_Item'],\n },\n type: {\n element: 'dt',\n class: ['c-ImageAttribute_Type'],\n text: typeContent,\n },\n body: {\n element: 'dd',\n class: ['c-ImageAttribute_Body'],\n text: bodyContent,\n },\n };\n\n const [dl, dt, dd] = Object.keys(itemSet).map((key) => {\n const element = document.createElement(itemSet[key].element);\n if (itemSet[key].class) {\n element.classList.add(...itemSet[key].class);\n }\n\n if (itemSet[key].text) {\n if (key === 'type') {\n element.textContent = this.localize[typeContent];\n }\n\n if (key === 'body') {\n element.textContent = itemSet[key].text;\n }\n }\n\n return element;\n });\n\n dl.append(dt);\n dl.append(dd);\n return dl;\n }\n\n async createRenderSVG(svgPath) {\n return await fetch(svgPath).then((response) => response.text());\n }\n}\n","var createCompounder = require('./_createCompounder');\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n\n\nvar snakeCase = createCompounder(function (result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\nmodule.exports = snakeCase;","var _Symbol = require('./_Symbol');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/** Built-in value references. */\n\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n\n return result;\n}\n\nmodule.exports = getRawTag;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && _typeof(value) == 'object';\n}\n\nmodule.exports = isObjectLike;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*\n * JavaScript Load Image\n * https://github.com/blueimp/JavaScript-Load-Image\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, module, Promise */\n;\n\n(function ($) {\n 'use strict';\n\n var urlAPI = $.URL || $.webkitURL;\n /**\n * Creates an object URL for a given File object.\n *\n * @param {Blob} blob Blob object\n * @returns {string|boolean} Returns object URL if API exists, else false.\n */\n\n function createObjectURL(blob) {\n return urlAPI ? urlAPI.createObjectURL(blob) : false;\n }\n /**\n * Revokes a given object URL.\n *\n * @param {string} url Blob object URL\n * @returns {undefined|boolean} Returns undefined if API exists, else false.\n */\n\n\n function revokeObjectURL(url) {\n return urlAPI ? urlAPI.revokeObjectURL(url) : false;\n }\n /**\n * Helper function to revoke an object URL\n *\n * @param {string} url Blob Object URL\n * @param {object} [options] Options object\n */\n\n\n function revokeHelper(url, options) {\n if (url && url.slice(0, 5) === 'blob:' && !(options && options.noRevoke)) {\n revokeObjectURL(url);\n }\n }\n /**\n * Loads a given File object via FileReader interface.\n *\n * @param {Blob} file Blob object\n * @param {Function} onload Load event callback\n * @param {Function} [onerror] Error/Abort event callback\n * @param {string} [method=readAsDataURL] FileReader method\n * @returns {FileReader|boolean} Returns FileReader if API exists, else false.\n */\n\n\n function readFile(file, onload, onerror, method) {\n if (!$.FileReader) return false;\n var reader = new FileReader();\n\n reader.onload = function () {\n onload.call(reader, this.result);\n };\n\n if (onerror) {\n reader.onabort = reader.onerror = function () {\n onerror.call(reader, this.error);\n };\n }\n\n var readerMethod = reader[method || 'readAsDataURL'];\n\n if (readerMethod) {\n readerMethod.call(reader, file);\n return reader;\n }\n }\n /**\n * Cross-frame instanceof check.\n *\n * @param {string} type Instance type\n * @param {object} obj Object instance\n * @returns {boolean} Returns true if the object is of the given instance.\n */\n\n\n function isInstanceOf(type, obj) {\n // Cross-frame instanceof check\n return Object.prototype.toString.call(obj) === '[object ' + type + ']';\n }\n /**\n * @typedef { HTMLImageElement|HTMLCanvasElement } Result\n */\n\n /**\n * Loads an image for a given File object.\n *\n * @param {Blob|string} file Blob object or image URL\n * @param {Function|object} [callback] Image load event callback or options\n * @param {object} [options] Options object\n * @returns {HTMLImageElement|FileReader|Promise} Object\n */\n\n\n function loadImage(file, callback, options) {\n /**\n * Promise executor\n *\n * @param {Function} resolve Resolution function\n * @param {Function} reject Rejection function\n * @returns {HTMLImageElement|FileReader} Object\n */\n function executor(resolve, reject) {\n var img = document.createElement('img');\n var url;\n /**\n * Callback for the fetchBlob call.\n *\n * @param {HTMLImageElement|HTMLCanvasElement} img Error object\n * @param {object} data Data object\n * @returns {undefined} Undefined\n */\n\n function resolveWrapper(img, data) {\n if (resolve === reject) {\n // Not using Promises\n if (resolve) resolve(img, data);\n return;\n } else if (img instanceof Error) {\n reject(img);\n return;\n }\n\n data = data || {}; // eslint-disable-line no-param-reassign\n\n data.image = img;\n resolve(data);\n }\n /**\n * Callback for the fetchBlob call.\n *\n * @param {Blob} blob Blob object\n * @param {Error} err Error object\n */\n\n\n function fetchBlobCallback(blob, err) {\n if (err && $.console) console.log(err); // eslint-disable-line no-console\n\n if (blob && isInstanceOf('Blob', blob)) {\n file = blob; // eslint-disable-line no-param-reassign\n\n url = createObjectURL(file);\n } else {\n url = file;\n\n if (options && options.crossOrigin) {\n img.crossOrigin = options.crossOrigin;\n }\n }\n\n img.src = url;\n }\n\n img.onerror = function (event) {\n revokeHelper(url, options);\n if (reject) reject.call(img, event);\n };\n\n img.onload = function () {\n revokeHelper(url, options);\n var data = {\n originalWidth: img.naturalWidth || img.width,\n originalHeight: img.naturalHeight || img.height\n };\n\n try {\n loadImage.transform(img, options, resolveWrapper, file, data);\n } catch (error) {\n if (reject) reject(error);\n }\n };\n\n if (typeof file === 'string') {\n if (loadImage.requiresMetaData(options)) {\n loadImage.fetchBlob(file, fetchBlobCallback, options);\n } else {\n fetchBlobCallback();\n }\n\n return img;\n } else if (isInstanceOf('Blob', file) || isInstanceOf('File', file)) {\n url = createObjectURL(file);\n\n if (url) {\n img.src = url;\n return img;\n }\n\n return readFile(file, function (url) {\n img.src = url;\n }, reject);\n }\n }\n\n if ($.Promise && typeof callback !== 'function') {\n options = callback; // eslint-disable-line no-param-reassign\n\n return new Promise(executor);\n }\n\n return executor(callback, callback);\n } // Determines if metadata should be loaded automatically.\n // Requires the load image meta extension to load metadata.\n\n\n loadImage.requiresMetaData = function (options) {\n return options && options.meta;\n }; // If the callback given to this function returns a blob, it is used as image\n // source instead of the original url and overrides the file argument used in\n // the onload and onerror event callbacks:\n\n\n loadImage.fetchBlob = function (url, callback) {\n callback();\n };\n\n loadImage.transform = function (img, options, callback, file, data) {\n callback(img, data);\n };\n\n loadImage.global = $;\n loadImage.readFile = readFile;\n loadImage.isInstanceOf = isInstanceOf;\n loadImage.createObjectURL = createObjectURL;\n loadImage.revokeObjectURL = revokeObjectURL;\n\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return loadImage;\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && module.exports) {\n module.exports = loadImage;\n } else {\n $.loadImage = loadImage;\n }\n})(typeof window !== 'undefined' && window || this);","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n/** Used to compose unicode capture groups. */\n\n\nvar rsApos = \"['\\u2019]\";\n/** Used to match apostrophes. */\n\nvar reApos = RegExp(rsApos, 'g');\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n\nfunction createCompounder(callback) {\n return function (string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n\n return accumulator;\n}\n\nmodule.exports = arrayReduce;","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\n\n\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n/** Used to compose unicode character classes. */\n\nvar rsComboMarksRange = \"\\\\u0300-\\\\u036f\",\n reComboHalfMarksRange = \"\\\\ufe20-\\\\ufe2f\",\n rsComboSymbolsRange = \"\\\\u20d0-\\\\u20ff\",\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n/** Used to compose unicode capture groups. */\n\nvar rsCombo = '[' + rsComboRange + ']';\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n\nvar reComboMark = RegExp(rsCombo, 'g');\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;","var basePropertyOf = require('./_basePropertyOf');\n/** Used to map Latin Unicode letters to basic Latin letters. */\n\n\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A',\n '\\xc1': 'A',\n '\\xc2': 'A',\n '\\xc3': 'A',\n '\\xc4': 'A',\n '\\xc5': 'A',\n '\\xe0': 'a',\n '\\xe1': 'a',\n '\\xe2': 'a',\n '\\xe3': 'a',\n '\\xe4': 'a',\n '\\xe5': 'a',\n '\\xc7': 'C',\n '\\xe7': 'c',\n '\\xd0': 'D',\n '\\xf0': 'd',\n '\\xc8': 'E',\n '\\xc9': 'E',\n '\\xca': 'E',\n '\\xcb': 'E',\n '\\xe8': 'e',\n '\\xe9': 'e',\n '\\xea': 'e',\n '\\xeb': 'e',\n '\\xcc': 'I',\n '\\xcd': 'I',\n '\\xce': 'I',\n '\\xcf': 'I',\n '\\xec': 'i',\n '\\xed': 'i',\n '\\xee': 'i',\n '\\xef': 'i',\n '\\xd1': 'N',\n '\\xf1': 'n',\n '\\xd2': 'O',\n '\\xd3': 'O',\n '\\xd4': 'O',\n '\\xd5': 'O',\n '\\xd6': 'O',\n '\\xd8': 'O',\n '\\xf2': 'o',\n '\\xf3': 'o',\n '\\xf4': 'o',\n '\\xf5': 'o',\n '\\xf6': 'o',\n '\\xf8': 'o',\n '\\xd9': 'U',\n '\\xda': 'U',\n '\\xdb': 'U',\n '\\xdc': 'U',\n '\\xf9': 'u',\n '\\xfa': 'u',\n '\\xfb': 'u',\n '\\xfc': 'u',\n '\\xdd': 'Y',\n '\\xfd': 'y',\n '\\xff': 'y',\n '\\xc6': 'Ae',\n '\\xe6': 'ae',\n '\\xde': 'Th',\n '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n \"\\u0100\": 'A',\n \"\\u0102\": 'A',\n \"\\u0104\": 'A',\n \"\\u0101\": 'a',\n \"\\u0103\": 'a',\n \"\\u0105\": 'a',\n \"\\u0106\": 'C',\n \"\\u0108\": 'C',\n \"\\u010A\": 'C',\n \"\\u010C\": 'C',\n \"\\u0107\": 'c',\n \"\\u0109\": 'c',\n \"\\u010B\": 'c',\n \"\\u010D\": 'c',\n \"\\u010E\": 'D',\n \"\\u0110\": 'D',\n \"\\u010F\": 'd',\n \"\\u0111\": 'd',\n \"\\u0112\": 'E',\n \"\\u0114\": 'E',\n \"\\u0116\": 'E',\n \"\\u0118\": 'E',\n \"\\u011A\": 'E',\n \"\\u0113\": 'e',\n \"\\u0115\": 'e',\n \"\\u0117\": 'e',\n \"\\u0119\": 'e',\n \"\\u011B\": 'e',\n \"\\u011C\": 'G',\n \"\\u011E\": 'G',\n \"\\u0120\": 'G',\n \"\\u0122\": 'G',\n \"\\u011D\": 'g',\n \"\\u011F\": 'g',\n \"\\u0121\": 'g',\n \"\\u0123\": 'g',\n \"\\u0124\": 'H',\n \"\\u0126\": 'H',\n \"\\u0125\": 'h',\n \"\\u0127\": 'h',\n \"\\u0128\": 'I',\n \"\\u012A\": 'I',\n \"\\u012C\": 'I',\n \"\\u012E\": 'I',\n \"\\u0130\": 'I',\n \"\\u0129\": 'i',\n \"\\u012B\": 'i',\n \"\\u012D\": 'i',\n \"\\u012F\": 'i',\n \"\\u0131\": 'i',\n \"\\u0134\": 'J',\n \"\\u0135\": 'j',\n \"\\u0136\": 'K',\n \"\\u0137\": 'k',\n \"\\u0138\": 'k',\n \"\\u0139\": 'L',\n \"\\u013B\": 'L',\n \"\\u013D\": 'L',\n \"\\u013F\": 'L',\n \"\\u0141\": 'L',\n \"\\u013A\": 'l',\n \"\\u013C\": 'l',\n \"\\u013E\": 'l',\n \"\\u0140\": 'l',\n \"\\u0142\": 'l',\n \"\\u0143\": 'N',\n \"\\u0145\": 'N',\n \"\\u0147\": 'N',\n \"\\u014A\": 'N',\n \"\\u0144\": 'n',\n \"\\u0146\": 'n',\n \"\\u0148\": 'n',\n \"\\u014B\": 'n',\n \"\\u014C\": 'O',\n \"\\u014E\": 'O',\n \"\\u0150\": 'O',\n \"\\u014D\": 'o',\n \"\\u014F\": 'o',\n \"\\u0151\": 'o',\n \"\\u0154\": 'R',\n \"\\u0156\": 'R',\n \"\\u0158\": 'R',\n \"\\u0155\": 'r',\n \"\\u0157\": 'r',\n \"\\u0159\": 'r',\n \"\\u015A\": 'S',\n \"\\u015C\": 'S',\n \"\\u015E\": 'S',\n \"\\u0160\": 'S',\n \"\\u015B\": 's',\n \"\\u015D\": 's',\n \"\\u015F\": 's',\n \"\\u0161\": 's',\n \"\\u0162\": 'T',\n \"\\u0164\": 'T',\n \"\\u0166\": 'T',\n \"\\u0163\": 't',\n \"\\u0165\": 't',\n \"\\u0167\": 't',\n \"\\u0168\": 'U',\n \"\\u016A\": 'U',\n \"\\u016C\": 'U',\n \"\\u016E\": 'U',\n \"\\u0170\": 'U',\n \"\\u0172\": 'U',\n \"\\u0169\": 'u',\n \"\\u016B\": 'u',\n \"\\u016D\": 'u',\n \"\\u016F\": 'u',\n \"\\u0171\": 'u',\n \"\\u0173\": 'u',\n \"\\u0174\": 'W',\n \"\\u0175\": 'w',\n \"\\u0176\": 'Y',\n \"\\u0177\": 'y',\n \"\\u0178\": 'Y',\n \"\\u0179\": 'Z',\n \"\\u017B\": 'Z',\n \"\\u017D\": 'Z',\n \"\\u017A\": 'z',\n \"\\u017C\": 'z',\n \"\\u017E\": 'z',\n \"\\u0132\": 'IJ',\n \"\\u0133\": 'ij',\n \"\\u0152\": 'Oe',\n \"\\u0153\": 'oe',\n \"\\u0149\": \"'n\",\n \"\\u017F\": 's'\n};\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n\nvar deburrLetter = basePropertyOf(deburredLetters);\nmodule.exports = deburrLetter;","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function (key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;","var _Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n/** Used as references for various `Number` constants. */\n\n\nvar INFINITY = 1 / 0;\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n\nmodule.exports = baseToString;","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n\n return result;\n}\n\nmodule.exports = arrayMap;","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\nmodule.exports = isArray;","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n\n\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;","/** Used to compose unicode character classes. */\nvar rsAstralRange = \"\\\\ud800-\\\\udfff\",\n rsComboMarksRange = \"\\\\u0300-\\\\u036f\",\n reComboHalfMarksRange = \"\\\\ufe20-\\\\ufe2f\",\n rsComboSymbolsRange = \"\\\\u20d0-\\\\u20ff\",\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = \"\\\\u2700-\\\\u27bf\",\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = \"\\\\u2000-\\\\u206f\",\n rsSpaceRange = \" \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = \"\\\\ufe0e\\\\ufe0f\",\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n/** Used to compose unicode capture groups. */\n\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = \"\\\\ud83c[\\\\udffb-\\\\udfff]\",\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = \"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",\n rsSurrPair = \"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = \"\\\\u200d\";\n/** Used to compose unicode regexes. */\n\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n/** Used to match complex or compound words. */\n\nvar reUnicodeWord = RegExp([rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, rsUpper + '+' + rsOptContrUpper, rsOrdUpper, rsOrdLower, rsDigits, rsEmoji].join('|'), 'g');\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;"],"sourceRoot":""}