{"version":3,"file":"/frontend.js","mappings":"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","sources":["webpack://webien-images/webpack/runtime/chunk loaded","webpack://webien-images/./assets/js/frontend.js","webpack://webien-images/./node_modules/lazysizes/lazysizes.js","webpack://webien-images/./node_modules/lazysizes/plugins/attrchange/ls.attrchange.js","webpack://webien-images/./node_modules/lazysizes/plugins/bgset/ls.bgset.js","webpack://webien-images/./node_modules/lazysizes/plugins/object-fit/ls.object-fit.js","webpack://webien-images/./node_modules/lazysizes/plugins/parent-fit/ls.parent-fit.js","webpack://webien-images/./node_modules/lazysizes/plugins/respimg/ls.respimg.js","webpack://webien-images/webpack/bootstrap","webpack://webien-images/webpack/runtime/compat get default export","webpack://webien-images/webpack/runtime/define property getters","webpack://webien-images/webpack/runtime/hasOwnProperty shorthand","webpack://webien-images/webpack/runtime/jsonp chunk loading","webpack://webien-images/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// Import lazyload library\nimport 'lazysizes';\nimport 'lazysizes/plugins/bgset/ls.bgset';\nimport 'lazysizes/plugins/respimg/ls.respimg';\nimport 'lazysizes/plugins/parent-fit/ls.parent-fit';\nimport 'lazysizes/plugins/attrchange/ls.attrchange';\nimport 'lazysizes/plugins/object-fit/ls.object-fit';\n\n\n\n// Settings: https://github.com/aFarkas/lazysizes#js-api\nwindow.lazySizesConfig = window.lazySizesConfig || {};\n\n//page is optimized for fast onload event\nlazySizesConfig.loadMode = 1;\n\n// Run image replacement before lazyload\ndocument.addEventListener('lazybeforeunveil', function(e){\n window.updateImgSrc(e);\n});\n// Run image replacement before lazyload\ndocument.addEventListener('lazyloaded', function(e){\n window.imageReady(e);\n});\n\n// Listen for image error events\ndocument.addEventListener('error', function(e){\n window.imageError(e);\n}, true);\n\n\n\n// Update image source to AWS serverless images url\n// Function triggered from Lazyload event (lazybeforeunveil)\nwindow.updateImgSrc = function(e,resize)\n{\n //console.log('-- ' + e.target.tagName + ' ---------------');\n //console.log(e);\n\n const $webien = window.webienImages;\n\n // If on local environment, just leave everything since we need public url:s to work\n if($webien.isLocal){\n return;\n }\n\n var el,\n srcSet = false,\n imgFit = '',\n imgPosition = 'centre',\n fullSizes = [],\n imgWidth = 0,\n imgHeight = 0,\n imgQuality = parseInt($webien.settings.compression),\n hasRatio = false,\n imgRatio = 1,\n useLocalFiles = $webien.localFiles,\n publicKey = $webien.publicKey;\n\n if(resize){\n el = e;\n } else {\n el = e.target;\n }\n\n // Distribution domains\n var resizeDistribution = $webien.imageDistribution + '/';\n var mainDistribution = $webien.mainDistribution + '/';\n\n var attributes = el.dataset;\n\n if(typeof attributes.srcset != 'undefined'){\n // --- img tags\n if(resize){\n srcSet = attributes.original;\n } else {\n srcSet = attributes.srcset;\n }\n if(attributes.optimize === \"0\"){ // Check if optimization has been deactivated on widget\n imgQuality = 100;\n\n if(attributes.useoriginal === \"1\"){ // If use original is checked, exit\n return;\n }\n }\n srcSet = attributes.srcset;\n\n imgWidth = el.width;\n imgHeight = 9999; // we dont really have the height of the original image yet, so make it fit\n imgFit = ['inside']; // Keep original aspect ratio\n imgPosition = ['left top'];\n\n // Check for ratios\n if(attributes.ratio && attributes.ratio !== 'none'){\n hasRatio = true;\n imgRatio = attributes.ratio.split('x');\n imgRatio = (imgRatio[1]/imgRatio[0]);\n imgHeight = imgWidth * imgRatio;\n imgFit = ['cover'];\n imgPosition = [attributes.focus]; // Focus strategy\n }\n\n\n } else if(typeof attributes.bgset != 'undefined'){\n // --- background images\n // Set some default values if not specified.. (usually when created outside Elementor)\n if(!(\"bgfit\" in attributes)) attributes.bgfit = 'cover';\n if(!(\"bgpos\" in attributes)) attributes.bgpos = 'centre';\n if(!(\"original\" in attributes)) attributes.original = attributes.bgset;\n if(!(\"fullsizes\" in attributes)) attributes.fullsizes = '1000x1000';\n\n // If custom pos, return full image. To much hazzle to get it right for now..\n if(attributes.bgpos === 'initial' || attributes.bgpos === 'custom'){\n return;\n }\n\n if(resize){\n srcSet = attributes.original;\n } else {\n srcSet = attributes.bgset;\n }\n\n imgWidth = el.scrollWidth;\n imgHeight = el.scrollHeight;\n imgFit = attributes.bgfit.split(',');\n imgPosition = attributes.bgpos.split(',');\n fullSizes = attributes.fullsizes.split(',');\n\n }\n\n // If no srcset found, return\n if(!srcSet){\n return;\n }\n\n // only continue if image is on aws\n if(srcSet.indexOf(mainDistribution) === -1) {\n //console.log(' -- NOT VALID SRC URL --');\n //console.log(e);\n return;\n }\n\n\n function buildUrl(src,srcCount){\n\n // Lets build our soon to be base64 string\n\n let path = src;\n\n // If source is on AWS, extract path only\n if(!useLocalFiles) {\n // Extract path from url\n var regex = /(http[s]?:\\/\\/)?([^\\/\\s]+\\/)(.*)/;\n\n var urlParts = src.match(regex);\n path = urlParts[3]; // holds the path\n\n // Remove leading slash\n path = path.replace(/^\\/+/g, '');\n }\n\n // Check format\n var extension = path.split('.').pop();\n\n // Check for svg\n if( extension === 'svg'){\n return src;\n }\n\n\n // Both Avif and WebP will perform different from jpeg at different compression levels\n // We adjust the compression in a very generic way here. More -> https://www.industrialempathy.com/posts/avif-webp-quality-settings/#quality-settings-for-a-range-of-jpeg-qualities\n var imgQualityAvif = imgQuality-10;\n var imgQualityWebp = imgQuality > 94 ? 100 : imgQuality+5;\n\n // Build json object\n var obj = {};\n\n if(useLocalFiles) {\n obj.imageUrl = path;\n } else {\n obj.bucket = $webien.awsBucket;\n obj.key = path;\n }\n\n // Set public key if not set\n if(publicKey) {\n obj.publicKey = publicKey;\n }\n\n obj.edits = {};\n\n // Wait until avif support is ready\n //obj.edits.avif = {};\n //obj.edits.avif.quality = imgQualityAvif;\n //obj.edits.avif.speed = 8; // 0 (slowest/smallest), 8 (fastest/largest)\n\n obj.edits.webp = {};\n obj.edits.webp.quality = imgQualityWebp;\n\n // No need for jpeg info\n //obj.edits.jpeg = {};\n //obj.edits.jpeg.quality = imgQuality;\n\n\n var w,\n h,\n dimensions,\n pixelRatio = 1;\n\n // If retina is enabled, check current device pixelratio\n if($webien.settings.retina){\n pixelRatio = window.devicePixelRatio;\n }\n\n if(imgFit[srcCount] === 'auto'){\n // If sizing is auto, extract a portion from full size image\n // Calculate where to start our extraction\n var startLeft = 0;\n var startTop = 0;\n\n dimensions = fullSizes[srcCount].split('x');\n w = parseFloat(dimensions[0]);\n h = parseFloat(dimensions[1]);\n\n // Adjust dimensions up to nearest 100 so we dont bloat the cache with sizes for each unique pixel dimensions\n imgWidth = pixelRatio * Math.ceil(imgWidth/100)*100;\n imgHeight = pixelRatio * Math.ceil(imgHeight/100)*100;\n\n // Double check that dimensions is not bigger than original image\n if(imgWidth > w){ imgWidth = w }\n if(imgHeight > h){ imgHeight = h }\n\n if(imgPosition[srcCount] === 'left top'){ startLeft = 0; startTop = 0; }\n if(imgPosition[srcCount] === 'top'){ startLeft = (w/2) - (imgWidth/2); startTop = 0; }\n if(imgPosition[srcCount] === 'right top'){ startLeft = w - imgWidth; startTop = 0; }\n\n if(imgPosition[srcCount] === 'left'){ startLeft = 0; startTop = (h/2) - (imgHeight/2); }\n if(imgPosition[srcCount] === 'centre'){ startLeft = (w/2) - (imgWidth/2); startTop = (h/2) - (imgHeight/2); }\n if(imgPosition[srcCount] === 'right'){ startLeft = w - imgWidth; startTop = (h/2) - (imgHeight/2); }\n\n if(imgPosition[srcCount] === 'left bottom'){ startLeft = 0; startTop = h - imgHeight; }\n if(imgPosition[srcCount] === 'bottom'){ startLeft = (w/2) - (imgWidth/2); startTop = h - imgHeight; }\n if(imgPosition[srcCount] === 'right bottom'){ startLeft = w - imgWidth; startTop = h - imgHeight; }\n\n if(imgPosition[srcCount] === 'custom'){\n // console.log('FIX CUSTOM POS..');\n }\n\n obj.edits.extract = {};\n obj.edits.extract.left = Math.ceil(startLeft);\n obj.edits.extract.top = Math.ceil(startTop);\n obj.edits.extract.width = imgWidth;\n obj.edits.extract.height = imgHeight;\n\n } else if(imgFit[srcCount] === 'initial'){\n // Custom size\n dimensions = fullSizes[srcCount].split('x');\n w = dimensions[0];\n h = dimensions[1];\n\n var customSize = attributes.customsizes.split('|'),\n width = customSize[0],\n unit = customSize[1],\n ratio = parseFloat(dimensions[1])/parseFloat(dimensions[0]);\n\n if(unit === 'px'){ w = width; }\n if(unit === '%'){ w = (width/100) * imgWidth; }\n if(unit === 'vw'){ w = (width/100) * window.innerWidth; }\n\n h = ratio * w;\n\n // Adjust dimensions up to nearest 100 so we dont bloat the cache with sizes for each unique pixel dimensions\n imgWidth = pixelRatio * Math.ceil(w/100)*100;\n imgHeight = pixelRatio * Math.ceil(h/100)*100;\n\n obj.edits.resize = {};\n obj.edits.resize.width = imgWidth;\n obj.edits.resize.height = imgHeight;\n obj.edits.resize.fit = 'inside';\n obj.edits.resize.withoutEnlargement = true;\n\n } else {\n // Else just resize image\n // Adjust dimensions up to nearest 100 so we dont bloat the cache with sizes for each unique pixel dimensions\n\n imgWidth = pixelRatio * Math.ceil(imgWidth/100)*100;\n imgHeight = pixelRatio * Math.ceil(imgHeight/100)*100;\n\n // If we have a ratio, make sure the ratio stays\n if(hasRatio){\n imgHeight = Math.ceil(imgWidth * imgRatio);\n }\n\n if(imgPosition[srcCount] === 'custom'){\n // console.log('FIX CUSTOM POS..');\n imgPosition[srcCount] = 'left top';\n }\n\n obj.edits.resize = {};\n obj.edits.resize.width = imgWidth;\n obj.edits.resize.height = imgHeight;\n obj.edits.resize.fit = imgFit[srcCount];\n obj.edits.resize.withoutEnlargement = true;\n obj.edits.resize.position = imgPosition[srcCount];\n }\n\n // If modern image formats are supported, serve them first\n /*\n Avif conversion is way to slow to compress at the moment.. stay tuned\n if(window.supportsAvif){\n obj.edits.toFormat = 'avif';\n }\n else */\n if(window.supportsWebp){\n obj.edits.toFormat = 'webp';\n }\n\n // If format is png and webp is not supported, return png\n if(!window.supportsWebp && extension === 'png'){\n obj.edits.toFormat = 'png';\n }\n\n // base64 our new url to match aws serverless requirements\n // Do some unescape/encodeURI for formating åäö purpose\n return resizeDistribution + btoa(unescape(encodeURIComponent(JSON.stringify(obj))));\n }\n\n\n\n // split srcset to handle each url if there are multiple responsive urls\n var regex = /[^\"\\'=\\s]+\\.(jpe?g|png|gif)/igm;\n\n // srcCount is for responsive src\n var srcCount = -1;\n var newSrc = srcSet.replace(regex,function(matched, index, original) {\n srcCount++;\n\n return buildUrl(matched,srcCount);\n });\n\n // Update with new source\n if(typeof attributes.srcset != 'undefined') {\n attributes.srcset = newSrc;\n } else if(typeof attributes.bgset != 'undefined') {\n attributes.bgset = newSrc;\n }\n};\n\nwindow.imageReady = function(e) {\n // Add class to outer image wrapper\n if(e.target.className.indexOf('main') > -1){\n if(e.target.offsetParent){\n e.target.offsetParent.classList.add(\"ready\");\n }\n }\n}\n\nwindow.imageError = function(e) {\n // If we get an error, try to load the original image instead\n if(e.target.nodeName == 'IMG'){\n let attributes = e.target.dataset;\n\n if(typeof attributes.original != 'undefined'){\n e.target.srcset = attributes.original;\n }\n\n // Add class for fallback to remove aspect ratio\n e.target.parentNode.classList.add('fallback');\n\n }\n}\n\n\n// This is a helper function to not calling events more then necessary\nvar waitForFinalEvent = (function () {\n var timers = {};\n return function (callback, ms, uniqueId) {\n if (!uniqueId) {\n uniqueId = \"Don't call this twice without a uniqueId\";\n }\n if (timers[uniqueId]) {\n clearTimeout (timers[uniqueId]);\n }\n timers[uniqueId] = setTimeout(callback, ms);\n };\n})();\n\n\nvar initialWidth = window.innerWidth;\nfunction reportWindowSize() {\n waitForFinalEvent(function(){\n // Only run if sizing up\n if((window.innerWidth - 200) < initialWidth){\n return;\n }\n // else set new standard width and call new images\n initialWidth = window.innerWidth;\n\n // Update elements that has been initialized\n var elements = document.getElementsByClassName(\"lazyloaded\");\n\n for (var i = 0; i < elements.length; i++) {\n //console.log(elements[i]);\n window.updateImgSrc(elements[i], true);\n }\n }, 1000); // Wait a second to reload\n}\n\nwindow.onresize = reportWindowSize;\n\n\n\n// Check for modern image format support and store it in localstorage\n// https://ourcodeworld.com/articles/read/630/how-to-detect-if-the-webp-image-format-is-supported-in-the-browser-with-javascript\nfunction ImageFormatIsSupported(format, callback){\n // If the browser doesn't has the method createImageBitmap, you can't display webp format\n if(!window.createImageBitmap){\n callback(false);\n return;\n }\n // Base64 representation\n var imgdata = '';\n if(format === 'webp'){\n imgdata = 'data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoCAAEAAQAcJaQAA3AA/v3AgAA=';\n }\n if(format === 'avif'){\n imgdata = 'data:image/avif;base64,AAAAFGZ0eXBhdmlmAAAAAG1pZjEAAACgbWV0YQAAAAAAAAAOcGl0bQAAAAAAAQAAAB5pbG9jAAAAAEQAAAEAAQAAAAEAAAC8AAAAGwAAACNpaW5mAAAAAAABAAAAFWluZmUCAAAAAAEAAGF2MDEAAAAARWlwcnAAAAAoaXBjbwAAABRpc3BlAAAAAAAAAAQAAAAEAAAADGF2MUOBAAAAAAAAFWlwbWEAAAAAAAAAAQABAgECAAAAI21kYXQSAAoIP8R8hAQ0BUAyDWeeUy0JG+QAACANEkA=';\n }\n // Retrieve the Image in Blob Format\n fetch(imgdata).then(function(response){\n return response.blob();\n }).then(function(blob){\n // If the createImageBitmap method succeeds, return true, otherwise false\n createImageBitmap(blob).then(function(){\n callback(true);\n }, function(){\n callback(false);\n });\n });\n}\n\n\n\nfunction checkLocalStorage(key){\n var webienObject = JSON.parse(localStorage.getItem('webien'));\n\n if(webienObject && webienObject.hasOwnProperty('imageOptimizer')){\n if(key === 'webp' && webienObject.imageOptimizer.hasOwnProperty('webp')){\n return webienObject.imageOptimizer.webp;\n }\n if(key === 'avif' && webienObject.imageOptimizer.hasOwnProperty('avif')){\n return webienObject.imageOptimizer.avif;\n }\n }\n\n // No values are stored, set them here\n // For webp we can check directly against a canvas\n if(key === 'webp'){\n var webpSupported = support_format_webp();\n updateLocalStorage('webp', webpSupported);\n return webpSupported;\n }\n\n // Avif is handled async and will return false before localstorage is set, so webp will step in the first load\n ImageFormatIsSupported('avif', function(isSupported){\n updateLocalStorage('avif', isSupported);\n return isSupported\n });\n\n // Since the compability check is async, we return false.\n // Giving the vitor standard jpeg's on the first load before we have any local storage.\n return false;\n}\n\n// Set localstorage from image formats support\nfunction updateLocalStorage(key, val){\n var webienObject = JSON.parse(localStorage.getItem('webien'));\n if(!webienObject){\n webienObject = {};\n }\n if(!webienObject.imageOptimizer){\n webienObject.imageOptimizer = {};\n }\n if(key === 'webp'){\n webienObject.imageOptimizer.webp = val;\n }\n if(key === 'avif'){\n webienObject.imageOptimizer.avif = val;\n }\n localStorage.setItem('webien', JSON.stringify(webienObject));\n}\n\n\nfunction support_format_webp() {\n var elem = document.createElement('canvas');\n if (!!(elem.getContext && elem.getContext('2d'))) {\n return elem.toDataURL('image/webp').indexOf('data:image/webp') == 0;\n } else {\n return false;\n }\n}\n\nfunction isLocalDev() {\n let domain = window.location.hostname;\n let re = /^(?!:\\/\\/)([a-zA-Z0-9-]+\\.){0,5}[a-zA-Z0-9-][a-zA-Z0-9-]+\\.[a-zA-Z]{2,64}?$/gi;\n let validDomain = re.test(domain);\n let testDomain = domain.includes('.test');\n let isLocal = validDomain && testDomain;\n if(isLocal) {\n console.info('Webien image optimizer will only work on public domains, not on local environment. Local url:s will be used for now..');\n }\n\n return isLocal;\n}\n\nconst isLocal = isLocalDev();\n\n\n// Check localstorage fot saved support, set support if not\nwindow.supportsWebp = checkLocalStorage('webp');\nwindow.supportsAvif = checkLocalStorage('avif');","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","(function(window, factory) {\n\tif(!window) {return;}\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(typeof window != 'undefined' ?\n\twindow : 0, function(window, document, lazySizes) {\n\t'use strict';\n\n\tvar addObserver = function(){\n\t\tvar connect, disconnect, observer, connected;\n\t\tvar lsCfg = lazySizes.cfg;\n\t\tvar attributes = {'data-bgset': 1, 'data-include': 1, 'data-poster': 1, 'data-bg': 1, 'data-script': 1};\n\t\tvar regClassTest = '(\\\\s|^)(' + lsCfg.loadedClass;\n\t\tvar docElem = document.documentElement;\n\n\t\tvar setClass = function(target){\n\t\t\tlazySizes.rAF(function(){\n\t\t\t\tlazySizes.rC(target, lsCfg.loadedClass);\n\t\t\t\tif(lsCfg.unloadedClass){\n\t\t\t\t\tlazySizes.rC(target, lsCfg.unloadedClass);\n\t\t\t\t}\n\t\t\t\tlazySizes.aC(target, lsCfg.lazyClass);\n\n\t\t\t\tif(target.style.display == 'none' || (target.parentNode && target.parentNode.style.display == 'none')){\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tlazySizes.loader.unveil(target);\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tvar onMutation = function(mutations){\n\t\t\tvar i, len, mutation, target;\n\t\t\tfor(i = 0, len = mutations.length; i < len; i++){\n\t\t\t\tmutation = mutations[i];\n\t\t\t\ttarget = mutation.target;\n\n\t\t\t\tif(!target.getAttribute(mutation.attributeName)){continue;}\n\n\t\t\t\tif(target.localName == 'source' && target.parentNode){\n\t\t\t\t\ttarget = target.parentNode.querySelector('img');\n\t\t\t\t}\n\n\t\t\t\tif(target && regClassTest.test(target.className)){\n\t\t\t\t\tsetClass(target);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif(lsCfg.unloadedClass){\n\t\t\tregClassTest += '|' + lsCfg.unloadedClass;\n\t\t}\n\n\t\tregClassTest += '|' + lsCfg.loadingClass + ')(\\\\s|$)';\n\n\t\tregClassTest = new RegExp(regClassTest);\n\n\t\tattributes[lsCfg.srcAttr] = 1;\n\t\tattributes[lsCfg.srcsetAttr] = 1;\n\n\t\tif(window.MutationObserver){\n\t\t\tobserver = new MutationObserver(onMutation);\n\n\t\t\tconnect = function(){\n\t\t\t\tif(!connected){\n\t\t\t\t\tconnected = true;\n\t\t\t\t\tobserver.observe( docElem, { subtree: true, attributes: true, attributeFilter: Object.keys(attributes)} );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdisconnect = function(){\n\t\t\t\tif(connected){\n\t\t\t\t\tconnected = false;\n\t\t\t\t\tobserver.disconnect();\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\tdocElem.addEventListener('DOMAttrModified', (function(){\n\t\t\t\tvar runs;\n\t\t\t\tvar modifications = [];\n\t\t\t\tvar callMutations = function(){\n\t\t\t\t\tonMutation(modifications);\n\t\t\t\t\tmodifications = [];\n\t\t\t\t\truns = false;\n\t\t\t\t};\n\t\t\t\treturn function(e){\n\t\t\t\t\tif(connected && attributes[e.attrName] && e.newValue){\n\t\t\t\t\t\tmodifications.push({target: e.target, attributeName: e.attrName});\n\t\t\t\t\t\tif(!runs){\n\t\t\t\t\t\t\tsetTimeout(callMutations);\n\t\t\t\t\t\t\truns = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t})(), true);\n\n\t\t\tconnect = function(){\n\t\t\t\tconnected = true;\n\t\t\t};\n\t\t\tdisconnect = function(){\n\t\t\t\tconnected = false;\n\t\t\t};\n\t\t}\n\n\t\taddEventListener('lazybeforeunveil', disconnect, true);\n\t\taddEventListener('lazybeforeunveil', connect);\n\n\t\taddEventListener('lazybeforesizes', disconnect, true);\n\t\taddEventListener('lazybeforesizes', connect);\n\t\tconnect();\n\n\t\tremoveEventListener('lazybeforeunveil', addObserver);\n\t};\n\n\n\taddEventListener('lazybeforeunveil', addObserver);\n}));\n","(function(window, factory) {\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(window, function(window, document, lazySizes) {\n\t'use strict';\n\tif(!window.addEventListener){return;}\n\n\tvar lazySizesCfg = lazySizes.cfg;\n\tvar regWhite = /\\s+/g;\n\tvar regSplitSet = /\\s*\\|\\s+|\\s+\\|\\s*/g;\n\tvar regSource = /^(.+?)(?:\\s+\\[\\s*(.+?)\\s*\\])(?:\\s+\\[\\s*(.+?)\\s*\\])?$/;\n\tvar regType = /^\\s*\\(*\\s*type\\s*:\\s*(.+?)\\s*\\)*\\s*$/;\n\tvar regBgUrlEscape = /\\(|\\)|'/;\n\tvar allowedBackgroundSize = {contain: 1, cover: 1};\n\tvar proxyWidth = function(elem){\n\t\tvar width = lazySizes.gW(elem, elem.parentNode);\n\n\t\tif(!elem._lazysizesWidth || width > elem._lazysizesWidth){\n\t\t\telem._lazysizesWidth = width;\n\t\t}\n\t\treturn elem._lazysizesWidth;\n\t};\n\tvar getBgSize = function(elem){\n\t\tvar bgSize;\n\n\t\tbgSize = (getComputedStyle(elem) || {getPropertyValue: function(){}}).getPropertyValue('background-size');\n\n\t\tif(!allowedBackgroundSize[bgSize] && allowedBackgroundSize[elem.style.backgroundSize]){\n\t\t\tbgSize = elem.style.backgroundSize;\n\t\t}\n\n\t\treturn bgSize;\n\t};\n\tvar setTypeOrMedia = function(source, match){\n\t\tif(match){\n\t\t\tvar typeMatch = match.match(regType);\n\t\t\tif(typeMatch && typeMatch[1]){\n\t\t\t\tsource.setAttribute('type', typeMatch[1]);\n\t\t\t} else {\n\t\t\t\tsource.setAttribute('media', lazySizesCfg.customMedia[match] || match);\n\t\t\t}\n\t\t}\n\t};\n\tvar createPicture = function(sets, elem, img){\n\t\tvar picture = document.createElement('picture');\n\t\tvar sizes = elem.getAttribute(lazySizesCfg.sizesAttr);\n\t\tvar ratio = elem.getAttribute('data-ratio');\n\t\tvar optimumx = elem.getAttribute('data-optimumx');\n\n\t\tif(elem._lazybgset && elem._lazybgset.parentNode == elem){\n\t\t\telem.removeChild(elem._lazybgset);\n\t\t}\n\n\t\tObject.defineProperty(img, '_lazybgset', {\n\t\t\tvalue: elem,\n\t\t\twritable: true\n\t\t});\n\t\tObject.defineProperty(elem, '_lazybgset', {\n\t\t\tvalue: picture,\n\t\t\twritable: true\n\t\t});\n\n\t\tsets = sets.replace(regWhite, ' ').split(regSplitSet);\n\n\t\tpicture.style.display = 'none';\n\t\timg.className = lazySizesCfg.lazyClass;\n\n\t\tif(sets.length == 1 && !sizes){\n\t\t\tsizes = 'auto';\n\t\t}\n\n\t\tsets.forEach(function(set){\n\t\t\tvar match;\n\t\t\tvar source = document.createElement('source');\n\n\t\t\tif(sizes && sizes != 'auto'){\n\t\t\t\tsource.setAttribute('sizes', sizes);\n\t\t\t}\n\n\t\t\tif((match = set.match(regSource))){\n\t\t\t\tsource.setAttribute(lazySizesCfg.srcsetAttr, match[1]);\n\n\t\t\t\tsetTypeOrMedia(source, match[2]);\n\t\t\t\tsetTypeOrMedia(source, match[3]);\n\t\t\t} else {\n\t\t\t\tsource.setAttribute(lazySizesCfg.srcsetAttr, set);\n\t\t\t}\n\n\t\t\tpicture.appendChild(source);\n\t\t});\n\n\t\tif(sizes){\n\t\t\timg.setAttribute(lazySizesCfg.sizesAttr, sizes);\n\t\t\telem.removeAttribute(lazySizesCfg.sizesAttr);\n\t\t\telem.removeAttribute('sizes');\n\t\t}\n\t\tif(optimumx){\n\t\t\timg.setAttribute('data-optimumx', optimumx);\n\t\t}\n\t\tif(ratio) {\n\t\t\timg.setAttribute('data-ratio', ratio);\n\t\t}\n\n\t\tpicture.appendChild(img);\n\n\t\telem.appendChild(picture);\n\t};\n\n\tvar proxyLoad = function(e){\n\t\tif(!e.target._lazybgset){return;}\n\n\t\tvar image = e.target;\n\t\tvar elem = image._lazybgset;\n\t\tvar bg = image.currentSrc || image.src;\n\n\n\t\tif(bg){\n\t\t\tvar useSrc = regBgUrlEscape.test(bg) ? JSON.stringify(bg) : bg;\n\t\t\tvar event = lazySizes.fire(elem, 'bgsetproxy', {\n\t\t\t\tsrc: bg,\n\t\t\t\tuseSrc: useSrc,\n\t\t\t\tfullSrc: null,\n\t\t\t});\n\n\t\t\tif(!event.defaultPrevented){\n\t\t\t\telem.style.backgroundImage = event.detail.fullSrc || 'url(' + event.detail.useSrc + ')';\n\t\t\t}\n\t\t}\n\n\t\tif(image._lazybgsetLoading){\n\t\t\tlazySizes.fire(elem, '_lazyloaded', {}, false, true);\n\t\t\tdelete image._lazybgsetLoading;\n\t\t}\n\t};\n\n\taddEventListener('lazybeforeunveil', function(e){\n\t\tvar set, image, elem;\n\n\t\tif(e.defaultPrevented || !(set = e.target.getAttribute('data-bgset'))){return;}\n\n\t\telem = e.target;\n\t\timage = document.createElement('img');\n\n\t\timage.alt = '';\n\n\t\timage._lazybgsetLoading = true;\n\t\te.detail.firesLoad = true;\n\n\t\tcreatePicture(set, elem, image);\n\n\t\tsetTimeout(function(){\n\t\t\tlazySizes.loader.unveil(image);\n\n\t\t\tlazySizes.rAF(function(){\n\t\t\t\tlazySizes.fire(image, '_lazyloaded', {}, true, true);\n\t\t\t\tif(image.complete) {\n\t\t\t\t\tproxyLoad({target: image});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t});\n\n\tdocument.addEventListener('load', proxyLoad, true);\n\n\twindow.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.detail.instance != lazySizes){return;}\n\t\tif(e.target._lazybgset && e.detail.dataAttr){\n\t\t\tvar elem = e.target._lazybgset;\n\t\t\tvar bgSize = getBgSize(elem);\n\n\t\t\tif(allowedBackgroundSize[bgSize]){\n\t\t\t\te.target._lazysizesParentFit = bgSize;\n\n\t\t\t\tlazySizes.rAF(function(){\n\t\t\t\t\te.target.setAttribute('data-parent-fit', bgSize);\n\t\t\t\t\tif(e.target._lazysizesParentFit){\n\t\t\t\t\t\tdelete e.target._lazysizesParentFit;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, true);\n\n\tdocument.documentElement.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.defaultPrevented || !e.target._lazybgset || e.detail.instance != lazySizes){return;}\n\t\te.detail.width = proxyWidth(e.target._lazybgset);\n\t});\n}));\n","(function(window, factory) {\n\tif(!window) {return;}\n\tvar globalInstall = function(initialEvent){\n\t\tfactory(window.lazySizes, initialEvent);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(typeof window != 'undefined' ?\n\twindow : 0, function(window, document, lazySizes, initialEvent) {\n\t'use strict';\n\tvar cloneElementClass;\n\tvar style = document.createElement('a').style;\n\tvar fitSupport = 'objectFit' in style;\n\tvar positionSupport = fitSupport && 'objectPosition' in style;\n\tvar regCssFit = /object-fit[\"']*\\s*:\\s*[\"']*(contain|cover)/;\n\tvar regCssPosition = /object-position[\"']*\\s*:\\s*[\"']*(.+?)(?=($|,|'|\"|;))/;\n\tvar blankSrc = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n\tvar regBgUrlEscape = /\\(|\\)|'/;\n\tvar positionDefaults = {\n\t\tcenter: 'center',\n\t\t'50% 50%': 'center',\n\t};\n\n\tfunction getObject(element){\n\t\tvar css = (getComputedStyle(element, null) || {});\n\t\tvar content = css.fontFamily || '';\n\t\tvar objectFit = content.match(regCssFit) || '';\n\t\tvar objectPosition = objectFit && content.match(regCssPosition) || '';\n\n\t\tif(objectPosition){\n\t\t\tobjectPosition = objectPosition[1];\n\t\t}\n\n\t\treturn {\n\t\t\tfit: objectFit && objectFit[1] || '',\n\t\t\tposition: positionDefaults[objectPosition] || objectPosition || 'center',\n\t\t};\n\t}\n\n\tfunction generateStyleClass() {\n\t\tif (cloneElementClass) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar styleElement = document.createElement('style');\n\n\t\tcloneElementClass = lazySizes.cfg.objectFitClass || 'lazysizes-display-clone';\n\n\t\tdocument.querySelector('head').appendChild(styleElement);\n\t}\n\n\tfunction removePrevClone(element) {\n\t\tvar prev = element.previousElementSibling;\n\n\t\tif (prev && lazySizes.hC(prev, cloneElementClass)) {\n\t\t\tprev.parentNode.removeChild(prev);\n\t\t\telement.style.position = prev.getAttribute('data-position') || '';\n\t\t\telement.style.visibility = prev.getAttribute('data-visibility') || '';\n\t\t}\n\t}\n\n\tfunction initFix(element, config){\n\t\tvar switchClassesAdded, addedSrc, styleElement, styleElementStyle;\n\t\tvar lazysizesCfg = lazySizes.cfg;\n\n\t\tvar onChange = function(){\n\t\t\tvar src = element.currentSrc || element.src;\n\n\t\t\tif(src && addedSrc !== src){\n\t\t\t\taddedSrc = src;\n\t\t\t\tstyleElementStyle.backgroundImage = 'url(' + (regBgUrlEscape.test(src) ? JSON.stringify(src) : src ) + ')';\n\n\t\t\t\tif(!switchClassesAdded){\n\t\t\t\t\tswitchClassesAdded = true;\n\t\t\t\t\tlazySizes.rC(styleElement, lazysizesCfg.loadingClass);\n\t\t\t\t\tlazySizes.aC(styleElement, lazysizesCfg.loadedClass);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tvar rafedOnChange = function(){\n\t\t\tlazySizes.rAF(onChange);\n\t\t};\n\n\t\telement._lazysizesParentFit = config.fit;\n\n\t\telement.addEventListener('lazyloaded', rafedOnChange, true);\n\t\telement.addEventListener('load', rafedOnChange, true);\n\n\t\tlazySizes.rAF(function(){\n\n\t\t\tvar hideElement = element;\n\t\t\tvar container = element.parentNode;\n\n\t\t\tif(container.nodeName.toUpperCase() == 'PICTURE'){\n\t\t\t\thideElement = container;\n\t\t\t\tcontainer = container.parentNode;\n\t\t\t}\n\n\t\t\tremovePrevClone(hideElement);\n\n\t\t\tif (!cloneElementClass) {\n\t\t\t\tgenerateStyleClass();\n\t\t\t}\n\n\t\t\tstyleElement = element.cloneNode(false);\n\t\t\tstyleElementStyle = styleElement.style;\n\n\t\t\tstyleElement.addEventListener('load', function(){\n\t\t\t\tvar curSrc = styleElement.currentSrc || styleElement.src;\n\n\t\t\t\tif(curSrc && curSrc != blankSrc){\n\t\t\t\t\tstyleElement.src = blankSrc;\n\t\t\t\t\tstyleElement.srcset = '';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlazySizes.rC(styleElement, lazysizesCfg.loadedClass);\n\t\t\tlazySizes.rC(styleElement, lazysizesCfg.lazyClass);\n\t\t\tlazySizes.rC(styleElement, lazysizesCfg.autosizesClass);\n\t\t\tlazySizes.aC(styleElement, lazysizesCfg.loadingClass);\n\t\t\tlazySizes.aC(styleElement, cloneElementClass);\n\n\t\t\t['data-parent-fit', 'data-parent-container', 'data-object-fit-polyfilled',\n\t\t\t\tlazysizesCfg.srcsetAttr, lazysizesCfg.srcAttr].forEach(function(attr) {\n\t\t\t\tstyleElement.removeAttribute(attr);\n\t\t\t});\n\n\t\t\tstyleElement.src = blankSrc;\n\t\t\tstyleElement.srcset = '';\n\n\t\t\tstyleElementStyle.backgroundRepeat = 'no-repeat';\n\t\t\tstyleElementStyle.backgroundPosition = config.position;\n\t\t\tstyleElementStyle.backgroundSize = config.fit;\n\n\t\t\tstyleElement.setAttribute('data-position', hideElement.style.position);\n\t\t\tstyleElement.setAttribute('data-visibility', hideElement.style.visibility);\n\n\t\t\thideElement.style.visibility = 'hidden';\n\t\t\thideElement.style.position = 'absolute';\n\n\t\t\telement.setAttribute('data-parent-fit', config.fit);\n\t\t\telement.setAttribute('data-parent-container', 'prev');\n\t\t\telement.setAttribute('data-object-fit-polyfilled', '');\n\t\t\telement._objectFitPolyfilledDisplay = styleElement;\n\n\t\t\tcontainer.insertBefore(styleElement, hideElement);\n\n\t\t\tif(element._lazysizesParentFit){\n\t\t\t\tdelete element._lazysizesParentFit;\n\t\t\t}\n\n\t\t\tif(element.complete){\n\t\t\t\tonChange();\n\t\t\t}\n\t\t});\n\t}\n\n\tif(!fitSupport || !positionSupport){\n\t\tvar onRead = function(e){\n\t\t\tif(e.detail.instance != lazySizes){return;}\n\n\t\t\tvar element = e.target;\n\t\t\tvar obj = getObject(element);\n\n\t\t\tif(obj.fit && (!fitSupport || (obj.position != 'center'))){\n\t\t\t\tinitFix(element, obj);\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t};\n\n\t\twindow.addEventListener('lazybeforesizes', function(e) {\n\t\t\tif(e.detail.instance != lazySizes){return;}\n\t\t\tvar element = e.target;\n\n\t\t\tif (element.getAttribute('data-object-fit-polyfilled') != null && !element._objectFitPolyfilledDisplay) {\n\t\t\t\tif(!onRead(e)){\n\t\t\t\t\tlazySizes.rAF(function () {\n\t\t\t\t\t\telement.removeAttribute('data-object-fit-polyfilled');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener('lazyunveilread', onRead, true);\n\n\t\tif(initialEvent && initialEvent.detail){\n\t\t\tonRead(initialEvent);\n\t\t}\n\t}\n}));\n","(function(window, factory) {\n\tif(!window) {return;}\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(typeof window != 'undefined' ?\n\twindow : 0, function(window, document, lazySizes) {\n\t'use strict';\n\n\tif(!window.addEventListener){return;}\n\n\tvar regDescriptors = /\\s+(\\d+)(w|h)\\s+(\\d+)(w|h)/;\n\tvar regCssFit = /parent-fit[\"']*\\s*:\\s*[\"']*(contain|cover|width)/;\n\tvar regCssObject = /parent-container[\"']*\\s*:\\s*[\"']*(.+?)(?=(\\s|$|,|'|\"|;))/;\n\tvar regPicture = /^picture$/i;\n\tvar cfg = lazySizes.cfg;\n\n\tvar getCSS = function (elem){\n\t\treturn (getComputedStyle(elem, null) || {});\n\t};\n\n\tvar parentFit = {\n\n\t\tgetParent: function(element, parentSel){\n\t\t\tvar parent = element;\n\t\t\tvar parentNode = element.parentNode;\n\n\t\t\tif((!parentSel || parentSel == 'prev') && parentNode && regPicture.test(parentNode.nodeName || '')){\n\t\t\t\tparentNode = parentNode.parentNode;\n\t\t\t}\n\n\t\t\tif(parentSel != 'self'){\n\t\t\t\tif(parentSel == 'prev'){\n\t\t\t\t\tparent = element.previousElementSibling;\n\t\t\t\t} else if(parentSel && (parentNode.closest || window.jQuery)){\n\t\t\t\t\tparent = (parentNode.closest ?\n\t\t\t\t\t\t\tparentNode.closest(parentSel) :\n\t\t\t\t\t\t\tjQuery(parentNode).closest(parentSel)[0]) ||\n\t\t\t\t\t\tparentNode\n\t\t\t\t\t;\n\t\t\t\t} else {\n\t\t\t\t\tparent = parentNode;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn parent;\n\t\t},\n\n\t\tgetFit: function(element){\n\t\t\tvar tmpMatch, parentObj;\n\t\t\tvar css = getCSS(element);\n\t\t\tvar content = css.content || css.fontFamily;\n\t\t\tvar obj = {\n\t\t\t\tfit: element._lazysizesParentFit || element.getAttribute('data-parent-fit')\n\t\t\t};\n\n\t\t\tif(!obj.fit && content && (tmpMatch = content.match(regCssFit))){\n\t\t\t\tobj.fit = tmpMatch[1];\n\t\t\t}\n\n\t\t\tif(obj.fit){\n\t\t\t\tparentObj = element._lazysizesParentContainer || element.getAttribute('data-parent-container');\n\n\t\t\t\tif(!parentObj && content && (tmpMatch = content.match(regCssObject))){\n\t\t\t\t\tparentObj = tmpMatch[1];\n\t\t\t\t}\n\n\t\t\t\tobj.parent = parentFit.getParent(element, parentObj);\n\n\n\t\t\t} else {\n\t\t\t\tobj.fit = css.objectFit;\n\t\t\t}\n\n\t\t\treturn obj;\n\t\t},\n\n\t\tgetImageRatio: function(element){\n\t\t\tvar i, srcset, media, ratio, match, width, height;\n\t\t\tvar parent = element.parentNode;\n\t\t\tvar elements = parent && regPicture.test(parent.nodeName || '') ?\n\t\t\t\t\tparent.querySelectorAll('source, img') :\n\t\t\t\t\t[element]\n\t\t\t\t;\n\n\t\t\tfor(i = 0; i < elements.length; i++){\n\t\t\t\telement = elements[i];\n\t\t\t\tsrcset = element.getAttribute(cfg.srcsetAttr) || element.getAttribute('srcset') || element.getAttribute('data-pfsrcset') || element.getAttribute('data-risrcset') || '';\n\t\t\t\tmedia = element._lsMedia || element.getAttribute('media');\n\t\t\t\tmedia = cfg.customMedia[element.getAttribute('data-media') || media] || media;\n\n\t\t\t\tif(srcset && (!media || (window.matchMedia && matchMedia(media) || {}).matches )){\n\t\t\t\t\tratio = parseFloat(element.getAttribute('data-aspectratio'));\n\n\t\t\t\t\tif (!ratio) {\n\t\t\t\t\t\tmatch = srcset.match(regDescriptors);\n\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\tif(match[2] == 'w'){\n\t\t\t\t\t\t\t\twidth = match[1];\n\t\t\t\t\t\t\t\theight = match[3];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twidth = match[3];\n\t\t\t\t\t\t\t\theight = match[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twidth = element.getAttribute('width');\n\t\t\t\t\t\t\theight = element.getAttribute('height');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tratio = width / height;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ratio;\n\t\t},\n\n\t\tcalculateSize: function(element, width){\n\t\t\tvar displayRatio, height, imageRatio, retWidth;\n\t\t\tvar fitObj = this.getFit(element);\n\t\t\tvar fit = fitObj.fit;\n\t\t\tvar fitElem = fitObj.parent;\n\n\t\t\tif(fit != 'width' && ((fit != 'contain' && fit != 'cover') || !(imageRatio = this.getImageRatio(element)))){\n\t\t\t\treturn width;\n\t\t\t}\n\n\t\t\tif(fitElem){\n\t\t\t\twidth = fitElem.clientWidth;\n\t\t\t} else {\n\t\t\t\tfitElem = element;\n\t\t\t}\n\n\t\t\tretWidth = width;\n\n\t\t\tif(fit == 'width'){\n\t\t\t\tretWidth = width;\n\t\t\t} else {\n\t\t\t\theight = fitElem.clientHeight;\n\n\t\t\t\tif((displayRatio = width / height) && ((fit == 'cover' && displayRatio < imageRatio) || (fit == 'contain' && displayRatio > imageRatio))){\n\t\t\t\t\tretWidth = width * (imageRatio / displayRatio);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn retWidth;\n\t\t}\n\t};\n\n\tlazySizes.parentFit = parentFit;\n\n\tdocument.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.defaultPrevented || e.detail.instance != lazySizes){return;}\n\n\t\tvar element = e.target;\n\t\te.detail.width = parentFit.calculateSize(element, e.detail.width);\n\t});\n}));\n","(function(window, factory) {\n\tif(!window) {return;}\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(typeof window != 'undefined' ?\n\twindow : 0, function(window, document, lazySizes) {\n\t/*jshint eqnull:true */\n\t'use strict';\n\tvar polyfill;\n\tvar lazySizesCfg = lazySizes.cfg;\n\tvar img = document.createElement('img');\n\tvar supportSrcset = ('sizes' in img) && ('srcset' in img);\n\tvar regHDesc = /\\s+\\d+h/g;\n\tvar fixEdgeHDescriptor = (function(){\n\t\tvar regDescriptors = /\\s+(\\d+)(w|h)\\s+(\\d+)(w|h)/;\n\t\tvar forEach = Array.prototype.forEach;\n\n\t\treturn function(){\n\t\t\tvar img = document.createElement('img');\n\t\t\tvar removeHDescriptors = function(source){\n\t\t\t\tvar ratio, match;\n\t\t\t\tvar srcset = source.getAttribute(lazySizesCfg.srcsetAttr);\n\t\t\t\tif(srcset){\n\t\t\t\t\tif((match = srcset.match(regDescriptors))){\n\t\t\t\t\t\tif(match[2] == 'w'){\n\t\t\t\t\t\t\tratio = match[1] / match[3];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tratio = match[3] / match[1];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(ratio){\n\t\t\t\t\t\t\tsource.setAttribute('data-aspectratio', ratio);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsource.setAttribute(lazySizesCfg.srcsetAttr, srcset.replace(regHDesc, ''));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar handler = function(e){\n\t\t\t\tif(e.detail.instance != lazySizes){return;}\n\t\t\t\tvar picture = e.target.parentNode;\n\n\t\t\t\tif(picture && picture.nodeName == 'PICTURE'){\n\t\t\t\t\tforEach.call(picture.getElementsByTagName('source'), removeHDescriptors);\n\t\t\t\t}\n\t\t\t\tremoveHDescriptors(e.target);\n\t\t\t};\n\n\t\t\tvar test = function(){\n\t\t\t\tif(!!img.currentSrc){\n\t\t\t\t\tdocument.removeEventListener('lazybeforeunveil', handler);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdocument.addEventListener('lazybeforeunveil', handler);\n\n\t\t\timg.onload = test;\n\t\t\timg.onerror = test;\n\n\t\t\timg.srcset = 'data:,a 1w 1h';\n\n\t\t\tif(img.complete){\n\t\t\t\ttest();\n\t\t\t}\n\t\t};\n\t})();\n\n\tif(!lazySizesCfg.supportsType){\n\t\tlazySizesCfg.supportsType = function(type/*, elem*/){\n\t\t\treturn !type;\n\t\t};\n\t}\n\n\tif (window.HTMLPictureElement && supportSrcset) {\n\t\tif(!lazySizes.hasHDescriptorFix && document.msElementsFromPoint){\n\t\t\tlazySizes.hasHDescriptorFix = true;\n\t\t\tfixEdgeHDescriptor();\n\t\t}\n\t\treturn;\n\t}\n\n\tif(window.picturefill || lazySizesCfg.pf){return;}\n\n\tlazySizesCfg.pf = function(options){\n\t\tvar i, len;\n\t\tif(window.picturefill){return;}\n\t\tfor(i = 0, len = options.elements.length; i < len; i++){\n\t\t\tpolyfill(options.elements[i]);\n\t\t}\n\t};\n\n\t// partial polyfill\n\tpolyfill = (function(){\n\t\tvar ascendingSort = function( a, b ) {\n\t\t\treturn a.w - b.w;\n\t\t};\n\t\tvar regPxLength = /^\\s*\\d+\\.*\\d*px\\s*$/;\n\t\tvar reduceCandidate = function (srces) {\n\t\t\tvar lowerCandidate, bonusFactor;\n\t\t\tvar len = srces.length;\n\t\t\tvar candidate = srces[len -1];\n\t\t\tvar i = 0;\n\n\t\t\tfor(i; i < len;i++){\n\t\t\t\tcandidate = srces[i];\n\t\t\t\tcandidate.d = candidate.w / srces.w;\n\n\t\t\t\tif(candidate.d >= srces.d){\n\t\t\t\t\tif(!candidate.cached && (lowerCandidate = srces[i - 1]) &&\n\t\t\t\t\t\tlowerCandidate.d > srces.d - (0.13 * Math.pow(srces.d, 2.2))){\n\n\t\t\t\t\t\tbonusFactor = Math.pow(lowerCandidate.d - 0.6, 1.6);\n\n\t\t\t\t\t\tif(lowerCandidate.cached) {\n\t\t\t\t\t\t\tlowerCandidate.d += 0.15 * bonusFactor;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(lowerCandidate.d + ((candidate.d - srces.d) * bonusFactor) > srces.d){\n\t\t\t\t\t\t\tcandidate = lowerCandidate;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn candidate;\n\t\t};\n\n\t\tvar parseWsrcset = (function(){\n\t\t\tvar candidates;\n\t\t\tvar regWCandidates = /(([^,\\s].[^\\s]+)\\s+(\\d+)w)/g;\n\t\t\tvar regMultiple = /\\s/;\n\t\t\tvar addCandidate = function(match, candidate, url, wDescriptor){\n\t\t\t\tcandidates.push({\n\t\t\t\t\tc: candidate,\n\t\t\t\t\tu: url,\n\t\t\t\t\tw: wDescriptor * 1\n\t\t\t\t});\n\t\t\t};\n\n\t\t\treturn function(input){\n\t\t\t\tcandidates = [];\n\t\t\t\tinput = input.trim();\n\t\t\t\tinput\n\t\t\t\t\t.replace(regHDesc, '')\n\t\t\t\t\t.replace(regWCandidates, addCandidate)\n\t\t\t\t;\n\n\t\t\t\tif(!candidates.length && input && !regMultiple.test(input)){\n\t\t\t\t\tcandidates.push({\n\t\t\t\t\t\tc: input,\n\t\t\t\t\t\tu: input,\n\t\t\t\t\t\tw: 99\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn candidates;\n\t\t\t};\n\t\t})();\n\n\t\tvar runMatchMedia = function(){\n\t\t\tif(runMatchMedia.init){return;}\n\n\t\t\trunMatchMedia.init = true;\n\t\t\taddEventListener('resize', (function(){\n\t\t\t\tvar timer;\n\t\t\t\tvar matchMediaElems = document.getElementsByClassName('lazymatchmedia');\n\t\t\t\tvar run = function(){\n\t\t\t\t\tvar i, len;\n\t\t\t\t\tfor(i = 0, len = matchMediaElems.length; i < len; i++){\n\t\t\t\t\t\tpolyfill(matchMediaElems[i]);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn function(){\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\ttimer = setTimeout(run, 66);\n\t\t\t\t};\n\t\t\t})());\n\t\t};\n\n\t\tvar createSrcset = function(elem, isImage){\n\t\t\tvar parsedSet;\n\t\t\tvar srcSet = elem.getAttribute('srcset') || elem.getAttribute(lazySizesCfg.srcsetAttr);\n\n\t\t\tif(!srcSet && isImage){\n\t\t\t\tsrcSet = !elem._lazypolyfill ?\n\t\t\t\t\t(elem.getAttribute(lazySizesCfg.srcAttr) || elem.getAttribute('src')) :\n\t\t\t\t\telem._lazypolyfill._set\n\t\t\t\t;\n\t\t\t}\n\n\t\t\tif(!elem._lazypolyfill || elem._lazypolyfill._set != srcSet){\n\n\t\t\t\tparsedSet = parseWsrcset( srcSet || '' );\n\t\t\t\tif(isImage && elem.parentNode){\n\t\t\t\t\tparsedSet.isPicture = elem.parentNode.nodeName.toUpperCase() == 'PICTURE';\n\n\t\t\t\t\tif(parsedSet.isPicture){\n\t\t\t\t\t\tif(window.matchMedia){\n\t\t\t\t\t\t\tlazySizes.aC(elem, 'lazymatchmedia');\n\t\t\t\t\t\t\trunMatchMedia();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tparsedSet._set = srcSet;\n\t\t\t\tObject.defineProperty(elem, '_lazypolyfill', {\n\t\t\t\t\tvalue: parsedSet,\n\t\t\t\t\twritable: true\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tvar getX = function(elem){\n\t\t\tvar dpr = window.devicePixelRatio || 1;\n\t\t\tvar optimum = lazySizes.getX && lazySizes.getX(elem);\n\t\t\treturn Math.min(optimum || dpr, 2.5, dpr);\n\t\t};\n\n\t\tvar matchesMedia = function(media){\n\t\t\tif(window.matchMedia){\n\t\t\t\tmatchesMedia = function(media){\n\t\t\t\t\treturn !media || (matchMedia(media) || {}).matches;\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn !media;\n\t\t\t}\n\n\t\t\treturn matchesMedia(media);\n\t\t};\n\n\t\tvar getCandidate = function(elem){\n\t\t\tvar sources, i, len, media, source, srces, src, width;\n\n\t\t\tsource = elem;\n\t\t\tcreateSrcset(source, true);\n\t\t\tsrces = source._lazypolyfill;\n\n\t\t\tif(srces.isPicture){\n\t\t\t\tfor(i = 0, sources = elem.parentNode.getElementsByTagName('source'), len = sources.length; i < len; i++){\n\t\t\t\t\tif( lazySizesCfg.supportsType(sources[i].getAttribute('type'), elem) && matchesMedia( sources[i].getAttribute('media')) ){\n\t\t\t\t\t\tsource = sources[i];\n\t\t\t\t\t\tcreateSrcset(source);\n\t\t\t\t\t\tsrces = source._lazypolyfill;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(srces.length > 1){\n\t\t\t\twidth = source.getAttribute('sizes') || '';\n\t\t\t\twidth = regPxLength.test(width) && parseInt(width, 10) || lazySizes.gW(elem, elem.parentNode);\n\t\t\t\tsrces.d = getX(elem);\n\t\t\t\tif(!srces.src || !srces.w || srces.w < width){\n\t\t\t\t\tsrces.w = width;\n\t\t\t\t\tsrc = reduceCandidate(srces.sort(ascendingSort));\n\t\t\t\t\tsrces.src = src;\n\t\t\t\t} else {\n\t\t\t\t\tsrc = srces.src;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsrc = srces[0];\n\t\t\t}\n\n\t\t\treturn src;\n\t\t};\n\n\t\tvar p = function(elem){\n\t\t\tif(supportSrcset && elem.parentNode && elem.parentNode.nodeName.toUpperCase() != 'PICTURE'){return;}\n\t\t\tvar candidate = getCandidate(elem);\n\n\t\t\tif(candidate && candidate.u && elem._lazypolyfill.cur != candidate.u){\n\t\t\t\telem._lazypolyfill.cur = candidate.u;\n\t\t\t\tcandidate.cached = true;\n\t\t\t\telem.setAttribute(lazySizesCfg.srcAttr, candidate.u);\n\t\t\t\telem.setAttribute('src', candidate.u);\n\t\t\t}\n\t\t};\n\n\t\tp.parse = parseWsrcset;\n\n\t\treturn p;\n\t})();\n\n\tif(lazySizesCfg.loadedClass && lazySizesCfg.loadingClass){\n\t\t(function(){\n\t\t\tvar sels = [];\n\t\t\t['img[sizes$=\"px\"][srcset].', 'picture > img:not([srcset]).'].forEach(function(sel){\n\t\t\t\tsels.push(sel + lazySizesCfg.loadedClass);\n\t\t\t\tsels.push(sel + lazySizesCfg.loadingClass);\n\t\t\t});\n\t\t\tlazySizesCfg.pf({\n\t\t\t\telements: document.querySelectorAll(sels.join(', '))\n\t\t\t});\n\t\t})();\n\n\t}\n}));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t346: 0,\n\t966: 0,\n\t328: 0,\n\t296: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkwebien_images\"] = self[\"webpackChunkwebien_images\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [966,328,296], () => (__webpack_require__(125)))\n__webpack_require__.O(undefined, [966,328,296], () => (__webpack_require__(819)))\n__webpack_require__.O(undefined, [966,328,296], () => (__webpack_require__(156)))\nvar __webpack_exports__ = __webpack_require__.O(undefined, [966,328,296], () => (__webpack_require__(757)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","window","lazySizesConfig","loadMode","document","addEventListener","e","updateImgSrc","imageReady","imageError","resize","$webien","webienImages","isLocal","el","srcSet","imgFit","imgPosition","fullSizes","imgWidth","imgHeight","imgQuality","parseInt","settings","compression","hasRatio","imgRatio","useLocalFiles","localFiles","publicKey","target","resizeDistribution","imageDistribution","mainDistribution","attributes","dataset","srcset","original","optimize","useoriginal","width","ratio","split","focus","bgset","bgfit","bgpos","fullsizes","scrollWidth","scrollHeight","indexOf","srcCount","newSrc","replace","matched","index","src","path","match","extension","pop","imgQualityWebp","obj","imageUrl","bucket","awsBucket","key","edits","webp","quality","w","h","dimensions","pixelRatio","retina","devicePixelRatio","startLeft","startTop","parseFloat","Math","ceil","extract","left","top","height","customSize","customsizes","unit","innerWidth","fit","withoutEnlargement","position","supportsWebp","toFormat","btoa","unescape","encodeURIComponent","JSON","stringify","buildUrl","className","offsetParent","classList","add","nodeName","parentNode","timers","waitForFinalEvent","callback","ms","uniqueId","clearTimeout","setTimeout","initialWidth","checkLocalStorage","elem","webienObject","parse","localStorage","getItem","hasOwnProperty","imageOptimizer","avif","webpSupported","createElement","getContext","toDataURL","updateLocalStorage","format","createImageBitmap","imgdata","fetch","then","response","blob","ImageFormatIsSupported","isSupported","val","setItem","onresize","elements","getElementsByClassName","i","length","domain","location","hostname","validDomain","test","testDomain","includes","console","info","isLocalDev","supportsAvif","factory","lazySizes","Date","lazysizes","lazySizesCfg","prop","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","fastLoadedClass","iframeLoadMode","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","init","expFactor","hFac","loadHidden","ricTimeout","throttleDelay","lazysizesConfig","cfg","noSupport","docElem","documentElement","supportPicture","HTMLPictureElement","_addEventListener","_getAttribute","bind","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","forEach","Array","prototype","hasClass","ele","cls","RegExp","addClass","setAttribute","trim","removeClass","reg","addRemoveLoadEvents","dom","fn","action","evt","triggerEvent","name","detail","noBubbles","noCancelable","event","createEvent","instance","initEvent","dispatchEvent","updatePolyfill","full","polyfill","picturefill","pf","reevaluate","getCSS","style","getComputedStyle","getWidth","parent","offsetWidth","_lazysizesWidth","rAF","firstFns","secondFns","fns","run","runFns","running","waiting","shift","rafBatch","queue","apply","this","arguments","push","hidden","_lsFlush","rAFIt","simple","that","args","throttle","lastTime","gDelay","rICTimeout","now","idleCallback","timeout","isPriority","delay","debounce","func","timestamp","wait","later","last","loader","regImg","regIframe","supportScroll","navigator","userAgent","shrinkExpand","currentExpand","isLoading","lowRuns","resetPreloading","isVisible","isBodyHidden","body","isNestedVisible","elemExpand","outerRect","visible","eLtop","eLbottom","eLleft","eLright","getBoundingClientRect","right","bottom","checkElements","eLlen","rect","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","unveilElement","expand","clientHeight","clientWidth","_defEx","eLvW","elvH","innerHeight","isCompleted","preloadElems","preloadAfterLoad","throttledCheckElements","switchLoadingClass","_lazyCache","rafSwitchLoadingClass","rafedSwitchLoadingClass","changeIframeSrc","getAttribute","contentWindow","handleSources","source","sourceSrcset","lazyUnveil","isAuto","sizes","isImg","isPicture","firesLoad","defaultPrevented","resetPreloadingTimer","call","getElementsByTagName","isLoaded","complete","naturalWidth","loading","autoSizer","updateElem","afterScroll","altLoadmodeScrollListner","onload","started","_","persisted","loadingElements","querySelectorAll","img","MutationObserver","observe","childList","subtree","setInterval","readyState","checkElems","unveil","_aLSL","sizeElement","sources","len","dataAttr","getSizeElement","debouncedUpdateElementsSizes","autosizesElems","uP","aC","rC","hC","fire","gW","module","exports","addObserver","connect","disconnect","observer","connected","runs","modifications","callMutations","lsCfg","regClassTest","setClass","unloadedClass","display","onMutation","mutations","mutation","attributeName","localName","querySelector","attributeFilter","Object","keys","attrName","newValue","removeEventListener","regWhite","regSplitSet","regSource","regType","regBgUrlEscape","allowedBackgroundSize","contain","cover","setTypeOrMedia","typeMatch","proxyLoad","_lazybgset","image","bg","currentSrc","useSrc","fullSrc","backgroundImage","_lazybgsetLoading","set","alt","sets","picture","optimumx","removeChild","defineProperty","value","writable","appendChild","removeAttribute","createPicture","bgSize","getPropertyValue","backgroundSize","getBgSize","_lazysizesParentFit","initialEvent","cloneElementClass","fitSupport","regCssFit","regCssPosition","blankSrc","positionDefaults","center","initFix","element","config","switchClassesAdded","addedSrc","styleElement","styleElementStyle","lazysizesCfg","onChange","rafedOnChange","hideElement","container","toUpperCase","prev","previousElementSibling","visibility","removePrevClone","objectFitClass","generateStyleClass","cloneNode","curSrc","attr","backgroundRepeat","backgroundPosition","_objectFitPolyfilledDisplay","insertBefore","onRead","content","fontFamily","objectFit","objectPosition","getObject","regDescriptors","regCssObject","parentFit","getParent","parentSel","closest","jQuery","getFit","tmpMatch","parentObj","css","_lazysizesParentContainer","getImageRatio","media","_lsMedia","matchMedia","matches","calculateSize","displayRatio","imageRatio","retWidth","fitObj","fitElem","candidates","regWCandidates","regMultiple","addCandidate","ascendingSort","regPxLength","parseWsrcset","runMatchMedia","createSrcset","matchesMedia","getCandidate","p","sels","supportSrcset","regHDesc","fixEdgeHDescriptor","removeHDescriptors","handler","onerror","supportsType","type","hasHDescriptorFix","msElementsFromPoint","options","a","b","candidate","url","wDescriptor","c","u","timer","matchMediaElems","isImage","parsedSet","_lazypolyfill","_set","srces","d","dpr","optimum","getX","min","lowerCandidate","bonusFactor","cached","pow","reduceCandidate","sort","cur","input","sel","join","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","m","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","splice","r","n","getter","__esModule","definition","o","enumerable","get","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}