PageSourceSearch

https://www.transgrid.com.au/assets/build/0.0.0.0/scripts/theme.mi…?h=6a62b7b6ec931d0983cd5a967ec600529987621f

js transgrid.com.au collected 2026-10-02 04:22:14 UTC 433,361 bytes, 1 lines download raw bytes

1(()=>{var __webpack_modules__={809:(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__)=>{"use strict";eval('\n// EXTERNAL MODULE: ./node_modules/lazysizes/lazysizes.js\nvar lazysizes = __webpack_require__(90);\nvar lazysizes_default = /*#__PURE__*/__webpack_require__.n(lazysizes);\n// EXTERNAL MODULE: ./node_modules/lazysizes/plugins/bgset/ls.bgset.js\nvar ls_bgset = __webpack_require__(145);\n// EXTERNAL MODULE: ./node_modules/lazysizes/plugins/respimg/ls.respimg.js\nvar ls_respimg = __webpack_require__(501);\n// EXTERNAL MODULE: ./src/scripts/plugins/jquery.mega-menu.js\nvar jquery_mega_menu = __webpack_require__(1);\n;// CONCATENATED MODULE: ./src/scripts/module/menu-mega.js\n/* provided dependency */ var jQuery = __webpack_require__(609);\n // Main navigation\n\nfunction mainNavigation() {\n  jQuery(\'#megaMenu\').megaMenu({\n    // DESKTOP MODE SETTINGS\n    logo_align: \'left\',\n    // align the logo left or right. options (left) or (right)\n    links_align: \'left\',\n    // align the links left or right. options (left) or (right)\n    socialBar_align: \'left\',\n    // align the socialBar left or right. options (left) or (right)\n    searchBar_align: \'right\',\n    // align the search bar left or right. options (left) or (right)\n    trigger: \'hover\',\n    // show drop down using click or hover. options (hover) or (click)\n    effect: \'fade\',\n    // drop down effects. options (fade), (scale), (expand-top), (expand-bottom), (expand-left), (expand-right)\n    effect_speed: 200,\n    // drop down show speed in milliseconds\n    sibling: true,\n    // hide the others showing drop downs if this option true. this option works on if the trigger option is "click". options (true) or (false)\n    outside_click_close: true,\n    // hide the showing drop downs when user click outside the menu. this option works if the trigger option is "click". options (true) or (false)\n    top_fixed: false,\n    // fixed the menu top of the screen. options (true) or (false)\n    sticky_header: false,\n    // menu fixed on top when scroll down down. options (true) or (false)\n    sticky_header_height: 250,\n    // sticky header height top of the screen. activate sticky header when meet the height. option change the height in px value.\n    menu_position: \'horizontal\',\n    // change the menu position. options (horizontal), (vertical-left) or (vertical-right)\n    full_width: true // make menu full width. options (true) or (false)\n\n  });\n}\n\n/* harmony default export */ const menu_mega = (mainNavigation);\n;// CONCATENATED MODULE: ./src/scripts/module/search-bar.js\n/* provided dependency */ var $ = __webpack_require__(609);\nfunction searchBar() {\n  $(".nav-search-btn").click(function () {\n    $(".nav-search-input").toggleClass("active").focus;\n    $("button.search-submit").toggleClass("active", 6000).focus;\n    $(this).toggleClass("animate");\n    $(".nav-search-input").val("");\n    $(this).parent().parent().addClass("fullwith");\n    $(".nav-search-close").show();\n  });\n  $(".nav-search-close").click(function () {\n    $(this).css("display", "none");\n    $(".search-box").find(".animate").removeClass("animate");\n    $(".search-box").find(".active").removeClass("active");\n    $(this).parent().parent().removeClass("fullwith");\n  });\n  $(document).on(\'click\', function (e) {\n    if ($(e.target).closest("#navSearch").length === 0) {\n      $(".nav-search-close").hide();\n      $(".search-box").find(".animate").removeClass("animate");\n      $(".search-box").find(".active").removeClass("active");\n      $(".nav-search").removeClass(\'fullwith\');\n      $(".search-submit").hide();\n    }\n  });\n  $("button.search-submit").click(function (event) {\n    if (!$(\'input[name=search]\').val().length > 0) {\n      event.preventDefault();\n    }\n\n    return;\n  });\n}\n\n/* harmony default export */ const search_bar = (searchBar);\n;// CONCATENATED MODULE: ./src/scripts/module/mobile-search-bar.js\n/* provided dependency */ var mobile_search_bar_$ = __webpack_require__(609);\nfunction mobileSearchBar() {\n  mobile_search_bar_$(\'.search-toggle\').addClass(\'closed\');
1\n  mobile_search_bar_$(\'.search-toggle .search-icon\').click(function (e) {\n    if (mobile_search_bar_$(\'.search-toggle\').hasClass(\'closed\')) {\n      mobile_search_bar_$(\'.search-toggle\').removeClass(\'closed\').addClass(\'opened\');\n      mobile_search_bar_$(\'.search-toggle, .search-container\').addClass(\'opened\');\n      mobile_search_bar_$(\'#search-terms\').focus();\n    } else {\n      mobile_search_bar_$(\'.search-toggle\').removeClass(\'opened\').addClass(\'closed\');\n      mobile_search_bar_$(\'.search-toggle, .search-container\').removeClass(\'opened\');\n    }\n  });\n  mobile_search_bar_$(".mobile-search button.search-button").click(function (event) {\n    if (!mobile_search_bar_$(\'.mobile-search input[name=search]\').val().length > 0) {\n      event.preventDefault();\n    }\n\n    return;\n  });\n}\n\n/* harmony default export */ const mobile_search_bar = (mobileSearchBar);\n;// CONCATENATED MODULE: ./src/scripts/plugins/ma5-menu.js\n/* provided dependency */ var ma5_menu_$ = __webpack_require__(609);\n/* provided dependency */ var ma5_menu_jQuery = __webpack_require__(609);\n/*\r\n*   MA5 jquery mobile menu\r\n*   v4.0.0\r\n*   GitHub: https://github.com/ma-5/ma5-mobile-menu\r\n*/\nfunction ma5menu(atributes) {\n  // menuDesktop = string, target to desktop menu which will be used for build menu mobile. For example \'.site-menu\'\n  var menuDesktop = \'.site-menu\';\n\n  if (atributes.menu !== undefined) {\n    menuDesktop = atributes.menu;\n  } // activeClass = string, active class name without dot from active desktop menu <li> or <a>. For example \'active\'\n\n\n  var activeClass = \'active\';\n\n  if (atributes.activeClass !== undefined) {\n    activeClass = atributes.activeClass;\n  } // menuTools = string, target to menu tools container which will be used for build menu mobile footer. For example \'#sma5menu-tools\'\n\n\n  var menuFooter = \'#ma5menu-tools\';\n\n  if (atributes.footer !== undefined) {\n    menuFooter = atributes.footer;\n  }\n\n  if (ma5_menu_$(menuDesktop).length > 0) {\n    var ma5menuHtml = \'\\n\' + \'\x3c!-- ma5-mobile-menu generated by js start --\x3e\\n\' + \'<nav id="js-ma5menu" class="ma5menu" itemscope itemtype="http://schema.org/SiteNavigationElement">\\n\' + \'    <div class="ma5menu__header">\\n\' + \'        <a class="ma5menu__home" href="/" tabindex="-1">\\n\' + \'            <span class="ma5menu__logo"></span>\\n\' + \'        </a>\\n\' + \'        <a class="ma5menu__toggle" tabindex="-1">\\n\' + \'            <span class="ma5menu__close"></span>\\n\' + \'        </a>\\n\' + \'    </div>\\n\' + \'</nav>\\n\' + \'\x3c!-- ma5-mobile-menu generated by js end --\x3e\';\n    ma5_menu_$(menuDesktop).after(ma5menuHtml);\n    ma5_menu_$(menuDesktop).clone().attr(\'id\', \'js-ma5menu-list\').appendTo(\'#js-ma5menu\');\n    var menuMobile = ma5_menu_$(\'#js-ma5menu-list\');\n    ma5menuBuilder_clearHTML(menuMobile);\n    ma5menuBuilder_clearAttributes(menuMobile, activeClass);\n    ma5menuBuilder_buildActive(menuMobile, activeClass);\n    ma5menuBuilder_buildLevels(ma5_menu_$(menuMobile), 0, \'ma5-ul\');\n  }\n\n  if (ma5_menu_$(\'.ma5menu\').length > 0) {\n    var position = \'left\';\n\n    if (atributes.position === \'right\') {\n      position = atributes.position;\n    }\n\n    if (atributes.closeOnBodyClick === true) {\n      ma5_menu_$(\'html\').on(\'click touch\', function (e) {\n        if (!ma5_menu_$(\'.ma5menu__container\').is(e.target) && ma5_menu_$(\'.ma5menu__container\').has(e.target).length === 0 && !ma5_menu_$(\'.ma5menu__toggle\').is(e.target) && ma5_menu_$(\'.ma5menu__toggle\').has(e.target).length === 0) {\n          ma5_menu_$(\'html\').removeClass(\'ma5menu--active\');\n        }\n      });\n    }\n\n    ma5_menu_$(\'html\').addClass(\'ma5menu--\' + position);\n    ma5_menu_$(\'body\').append(\'<div class="ma5menu__container"><div class="ma5menu__head"></div></div>\');\n    ma5_menu_$(\'.ma5menu__header\').clone().appendTo(\'.ma5menu__head\');\n    ma5_menu_$(\'.ma5menu\').find(\'ul\').clone().addClass(\'ma5menu__panel\').appendTo(\'.ma5menu__container\').find(\'ul\').remove();\n    ma5_menu_$(\'.ma5menu__panel\').each(function () {\n      ma5_menu_$(this).wrap(\'<div></div>\');\n      ma5_menu_$(this).parent().addClass(ma5_menu_$(this).attr(\'class\')).attr(\'data-ma5order\', ma5_menu_$(this).attr(\'data-ma5order\'));\n      ma5_menu_$(this).removeAttr(\'class\').removeAttr(\'data-ma5order\');\n    });\n\n    if (ma5_menu_$(menuFooter).length > 0) {\n      ma5_menu_$(\'.ma5menu__panel\').append(\'<div class="ma5menu__footer js-append">\' + ma5_menu_$(menuFooter).html() + \'</div>\');\n    }\n\n    ma5_menu_$(\'.ma5menu__toggle\').on(\'click touch\', function () {\n      ma5_menu_$(\'html\').addClass(\'ma5menu--ready\').toggleClass(\'ma5menu--active\').addClass(\'ma5menu--overflow\');\n      ma5_menu_$(\'.ma5menu__panel\').removeClass(\'ma5menu__panel--active-leave ma
15menu__panel--parent-leave ma5menu__panel--active-enter ma5menu__panel--parent-enter\');\n      setTimeout(function () {\n        ma5menuCheckScroll();\n      }, 500);\n    });\n    ma5_menu_$(\'.ma5menu__btn--enter\').on(\'click touch\', function () {\n      ma5_menu_$(\'.ma5menu__panel\').removeClass(\'ma5menu__panel--active\');\n      ma5_menu_$(\'.ma5menu__panel li\').removeClass(\'ma5menu__li--current\');\n      var itemPath = ma5_menu_$(this).parent().attr(\'data-ma5order\').replace("li", "ul");\n      var itemParent = ma5_menu_$(this).parent().attr(\'data-ma5order\').replace("li", "ul").split(\'-\');\n      var spliced = itemParent.splice(-1, 1);\n      itemParent = itemParent.join("-");\n      ma5_menu_$(\'.ma5menu__panel\').removeClass(\'ma5menu__panel--active-leave ma5menu__panel--parent-leave ma5menu__panel--active-enter ma5menu__panel--parent-enter\');\n      ma5_menu_$(\'[data-ma5order="\' + itemParent + \'"]\').addClass(\'ma5menu__panel--parent-enter\');\n      ma5_menu_$(\'[data-ma5order="\' + itemPath + \'"]\').addClass(\'ma5menu__panel--active-enter ma5menu__panel--active\');\n      setTimeout(function () {\n        ma5menuCheckScroll();\n      }, 500);\n    });\n    ma5_menu_$(\'.ma5menu__leave\').on(\'click touch\', function () {\n      ma5_menu_$(\'.ma5menu__panel\').removeClass(\'ma5menu__panel--active\');\n      var itemParent = ma5_menu_$(this).parent().attr(\'data-ma5order\').replace("li", "ul").split(\'-\');\n      var splicedParent = itemParent.splice(-1, 1);\n      splicedParent = itemParent.splice(-1, 1);\n      itemParent = itemParent.join("-");\n      var itemPath = ma5_menu_$(this).parent().attr(\'data-ma5order\').replace("li", "ul").split(\'-\');\n      var spliced = itemPath.splice(-1, 1);\n      itemPath = itemPath.join("-");\n      ma5_menu_$(\'.ma5menu__panel\').removeClass(\'ma5menu__panel--active-leave ma5menu__panel--parent-leave ma5menu__panel--active-enter ma5menu__panel--parent-enter\');\n      ma5_menu_$(\'[data-ma5order="\' + itemParent + \'"]\').addClass(\'ma5menu__panel--parent-leave ma5menu__panel--active\');\n      ma5_menu_$(\'[data-ma5order="\' + itemPath + \'"]\').addClass(\'ma5menu__panel--active-leave\');\n      setTimeout(function () {\n        ma5menuCheckScroll();\n      }, 500);\n    });\n    var didResize = false;\n    ma5_menu_$(window).on(\'resize\', function () {\n      didResize = true;\n    });\n    setInterval(function () {\n      if (didResize) {\n        didResize = false;\n        ma5menuCheckScroll();\n      }\n    }, 300);\n  }\n} // scroll menu content alert\n\nfunction ma5menuCheckScroll() {\n  ma5_menu_$(\'html\').removeClass(\'ma5menu--overflow\');\n  ma5_menu_$(\'.ma5menu__container\').removeClass(\'ma5menu__container--scroll\');\n\n  if (ma5_menu_$(\'.ma5menu__panel.ma5menu__panel--active\').detectElementScrollbar()) {\n    ma5_menu_$(\'.ma5menu__container\').addClass(\'ma5menu__container--scroll\');\n    ma5_menu_$(\'.ma5menu__panel.ma5menu__panel--active\').bind(\'scroll\', function () {\n      if (ma5_menu_$(this).scrollTop() + ma5_menu_$(this).innerHeight() + 1 >= ma5_menu_$(this)[0].scrollHeight) {\n        ma5_menu_$(\'.ma5menu__container\').removeClass(\'ma5menu__container--scroll\');\n      } else {\n        ma5_menu_$(\'.ma5menu__container\').addClass(\'ma5menu__container--scroll\');\n      }\n    });\n  } else {\n    ma5_menu_$(\'.ma5menu__panel.ma5menu__panel--active\').unbind("scroll");\n  }\n} // builder functions\n\n\nfunction ma5menuBuilder_clearAttributes(menu, activeClass) {\n  var whitelist = ["src", "alt", "href", "class"];\n  var menuChildrens = ma5_menu_$(menu).find(\'*\');\n  var menuRoot = ma5_menu_$(menu);\n  ma5_menu_$(menuRoot).each(function () {\n    var attributes = this.attributes;\n    var i = attributes.length;\n\n    while (i--) {\n      var attr = attributes[i];\n\n      if (ma5_menu_$.inArray(attr.name, whitelist) === -1) {\n        this.removeAttributeNode(attr);\n      }\n    }\n  });\n  ma5_menu_$(menuChildrens).each(function () {\n    var isException = ma5_menu_$(this).is(\'.\' + activeClass);\n    var attributes = this.attributes;\n    var i = attributes.length;\n\n    while (i--) {\n      var attr = attributes[i];\n\n      if (ma5_menu_$.inArray(attr.name, whitelist) === -1) {\n        this.removeAttributeNode(attr);\n      }\n    }\n\n    if (isException) {\n      ma5_menu_$(this).addClass(activeClass);\n    }\n  });\n}\n\nfunction ma5menuBuilder_clearHTML(menu) {\n  var list = ma5_menu_$(menu).find(\'ul\');\n  list.each(function () {\n    ma5_menu_$(this).unwrapUntil("li");\n  });\n  var link = ma5_menu_$(menu).find(\'a\');\n  link.each(function () {\n    ma5_menu_$(this).unwrapUntil("li");\n    link.find(\'> b, > strong, > span, > div, > i\').replaceWith(function () {\n      return ma5_menu_$(this).contents();\n    });\n  });\n  var images = ma5_menu_$(menu).find(\'a > img\');\n  images.each(function () {\n    if (ma5_menu_$(this).parent().attr(\'title\') !== undefined) {\n      var title = ma5_menu_$(this).parent().attr(\'title\');\n      ma5_menu_$(this).parent().append(title).find(\'img\').remove();\n    } else {\n      var alt = ma5_menu_$(this).attr(\'alt\');\n      ma5_menu_$(this).parent().append(alt).find(\'img\').remove();\n    }\n  });\n  ma5_menu_$(menu).find(\'div:not([attr_all])\').remove();\n}\n\nfunction ma5menuBuilder_buildActive(menu, activeClass) {\n  var active = ma5_menu_$(menu).find(\'.\' + activeClass);\n\n  if (active.length === 0) {\n    ma5_menu_$(menu).attr(\'data-ma5order\', \'ma5-ul\').addClass(\'ma5menu__panel--active\');\n  } else {\n    ma5_menu_$(menu).attr(\'data-ma5order\', \'ma5-ul\').removeClass(\'ma5menu__panel--active\');\n    var lvl = active.parentsUntil(\'#js-ma5menu\').length;\n    active.each(function () {\n      var thisParent = ma5_menu_$(this).parent();\n\n      if (this.tagName === \'A\') {\n        ma5_menu_$(this).parent().addClass(\'ma5menu__li--current\').parent().addClass(\'ma5menu__panel--active\');\n        ma5_menu_$(this).addClass(\'ma5menu__path\');
1\n\n        while (lvl--) {\n          thisParent = thisParent.parent().parent();\n          thisParent.find(\'> a\').addClass(\'ma5menu__path\');\n        }\n      }\n\n      if (this.tagName === \'LI\') {\n        ma5_menu_$(this).addClass(\'ma5menu__li--current\').parent().addClass(\'ma5menu__panel--active\');\n        ma5_menu_$(this).find(\'> a\').addClass(\'ma5menu__path\');\n\n        while (lvl--) {\n          thisParent = thisParent.parent();\n          thisParent.find(\'> a\').addClass(\'ma5menu__path\');\n        }\n      }\n    });\n  }\n\n  ma5_menu_$(\'#js-ma5menu\').find(\'.\' + activeClass).removeClass(activeClass);\n}\n\nfunction ma5menuBuilder_buildLevels(parent, level, order) {\n  parent.addClass(\'lvl-\' + level);\n  var orderLi = order.replace(\'ul\', \'li\');\n  var children = parent.children(\'li\');\n  children.attr(\'data-ma5order\', function (i) {\n    return orderLi + \'-\' + (i + 1);\n  });\n  children.each(function () {\n    var n = 0;\n    var thisOrder = ma5_menu_$(this).attr(\'data-ma5order\').replace(\'li\', \'ul\');\n    ma5_menu_$(this).find(\'> ul\').attr(\'data-ma5order\', thisOrder);\n    var sublist = ma5_menu_$(this).children(\'ul\');\n\n    if (sublist.length > 0) {\n      var thisText = ma5_menu_$(this).find(\'> a\').text();\n      ma5_menu_$(this).find(\'> ul > li:first-child\').prepend(\'<div class="ma5menu__leave"><span class="ma5menu__btn--leave"></span>\' + "Back" + \'</div>\');\n      ma5_menu_$(\'<span class="ma5menu__btn--enter"></span>\').insertAfter(ma5_menu_$(this).find(\'> a\'));\n      var orderBuild = ma5_menu_$(this).attr(\'data-ma5order\');\n      ma5menuBuilder_buildLevels(sublist, level + 1, orderBuild);\n    }\n  });\n} // ADDITIONAL FUNCTIONS\n// https://github.com/jamesallardice/jquery.unwrapuntil\n\n\n(function ($) {\n  $.fn.unwrapUntil = function () {\n    var arg = arguments[0],\n        type = typeof arguments[0];\n\n    if (type === "number") {\n      $.each(this, function () {\n        var $this = $(this);\n\n        for (var i = 0; i < arg; i++) {\n          $this.unwrap();\n        }\n      });\n    } else if (type === "string") {\n      $.each(this, function () {\n        var $this = $(this);\n\n        if ($this.closest(arg).length > 0) {\n          while ($this.parent(arg).length === 0) {\n            $this.unwrap();\n          }\n        }\n      });\n    } else if (type === "object") {\n      $.each(this, function () {\n        var $this = $(this);\n\n        if ($this.closest(arg).length > 0) {\n          while ($this.parent()[0] !== arg[0]) {\n            $this.unwrap();\n          }\n        }\n      });\n    }\n\n    return this;\n  };\n})(ma5_menu_jQuery); //\n// detect IE\n\n\nvar htmlRootForDetectBrowser = document.getElementsByTagName(\'html\')[0];\n\nfunction isIE() {\n  return navigator.appName == \'Microsoft Internet Explorer\' || navigator.appName == \'Netscape\' && new RegExp("Trident/.*rv:([0-9]{1,}[\\.0-9]{0,})").exec(navigator.userAgent) !== null;\n}\n\nif (isIE()) {\n  htmlRootForDetectBrowser.className += " ie";\n} else {\n  htmlRootForDetectBrowser.className += " noie";\n} //\n// detect Safari\n\n\nfunction detectSafari() {\n  var ua = navigator.userAgent.toLowerCase();\n\n  if (ua.indexOf(\'safari\') != -1) {\n    if (ua.indexOf(\'chrome\') > -1) {\n      return false;\n    } else {\n      return true;\n    }\n  }\n}\n\nif (detectSafari()) {\n  htmlRootForDetectBrowser.className += " safari";\n} //\n// ESC close\n\n\nma5_menu_$(document).ready(function () {\n  ma5_menu_$("body").keydown(function (e) {\n    if (e.keyCode == 27) {\n      ma5_menu_$(\'html\').removeClass(\'ma5menu--active\');\n    }\n  });\n}); //\n// detect-element-scrollbar module\n\nfunction detectElementScrollbar() {\n  ma5_menu_$(\'[data-detect-scrollbar]\').each(function () {\n    if (ma5_menu_$(this).get(0).scrollHeight > ma5_menu_$(this).get(0).clientHeight) {\n      ma5_menu_$(this).addClass(\'has-scrollbar\').removeClass(\'hasnt-scrollbar\');\n    } else {\n      ma5_menu_$(this).addClass(\'hasnt-scrollbar\').removeClass(\'has-scrollbar\');\n    }\n  });\n}\n\nma5_menu_$.fn.detectElementScrollbar = function () {\n  if (ma5_menu_$(this).get(0).scrollHeight > ma5_menu_$(this).get(0).clientHeight) {\n    ma5_menu_$(this).addClass(\'has-scrollbar\').removeClass(\'hasnt-scrollbar\');\n    return true;\n  } else {\n    ma5_menu_$(this).addClass(\'hasnt-scrollbar\').removeClass(\'has-scrollbar\');\n    return false;\n  }\n};\n\nma5_menu_$(document).ready(function () {\n  detectElementScrollbar();\n});\nma5_menu_$(window).on(\'resize\', function () {\n  detectElementScrollbar();\n});\nma5_menu_$(window).on(\'load\', function () {\n  detectElementScrollbar();\n}); //\n// detect-body-scrollbar\n\nma5_menu_$(window).on(\'load\', function () {\n  if (ma5_menu_$(\'body\').outerHeight() > ma5_menu_$(window).height()) {\n    ma5_menu_$(\'html\').addClass(\'has-body-scrollbar\');\n  } else {\n    ma5_menu_$(\'html\').addClass(\'hasnt-body-scrollbar\');\n  }\n}); //\n;// CONCATENATED MODULE: ./src/scripts/module/menu-hemburger.js\n\n\nfunction hemburgerMenu() {\n  ma5menu({\n    menu: \'.hamburgermenu\',\n    activeClass: \'activelink\',\n    footer: \'#ma5menu-tools\',\n    position: \'right\',\n    closeOnBodyClick: true\n  });\n}\n\n/* harmony default export */ const menu_hemburger = (hemburgerMenu);\n// EXTERNAL MODULE: ./src/scripts/plugins/accordion.js\nvar accordion = __webpack_require__(653);\n;// CONCATENATED MODULE: ./src/scripts/module/accordians.js\n/* provided dependency */ var accordians_$ = __webpack_require__(609);\n\n\nfunction accordionView() {\n  accordians_$(".accordionjs").accordionjs({\n    closeOther: true,\n    closeAble: true,\n    activeIndex: fal
1se\n  });\n}\n\n/* harmony default export */ const accordians = (accordionView);\n;// CONCATENATED MODULE: ./src/scripts/module/search-reset.js\n/* provided dependency */ var search_reset_$ = __webpack_require__(609);\nfunction searchReset() {\n  search_reset_$(".search-btn-reset").on("click", function () {\n    search_reset_$(".search-input").attr("value", "");\n  });\n}\n\n/* harmony default export */ const search_reset = (searchReset);\n;// CONCATENATED MODULE: ./src/scripts/module/tab-featured.js\n/* provided dependency */ var tab_featured_$ = __webpack_require__(609);\nfunction featuredTab() {\n  tab_featured_$(\'.tabs-nav > li > a\').click(function (event) {\n    event.preventDefault(); //stop browser to take action for clicked anchor\n    //get displaying tab content jQuery selector\n\n    let currentSection = tab_featured_$(this).closest("section");\n    let currentTab = tab_featured_$(this).attr(\'data-tab\'); //find actived navigation and remove \'active\' css\n\n    let actived_nav = tab_featured_$(currentSection).find(\'.tabs-nav li.active\');\n    actived_nav.removeClass(\'active\'); //add \'active\' css into clicked navigation\n\n    tab_featured_$(this).parents(\'li\').addClass(\'active\'); //remove \'active\'\n\n    tab_featured_$(currentSection).find(".content-tab-desc").removeClass(\'active\');\n    tab_featured_$(currentSection).find(".content-tab-img").removeClass(\'fadeoutimage\');\n    tab_featured_$(currentSection).find(".content-tab-img.active").addClass(\'fadeoutimage\').removeClass(\'active\'); //show target tab content and add active class\n\n    tab_featured_$("[data-tab = \'" + currentTab + "\']").addClass(\'active\');\n  });\n}\n\n/* harmony default export */ const tab_featured = (featuredTab);\n;// CONCATENATED MODULE: ./src/scripts/module/mobile-search-filter.js\n/* provided dependency */ var mobile_search_filter_$ = __webpack_require__(609);\nfunction mobileSearchFilter() {\n  mobile_search_filter_$(".search-toggle-btn").on(\'click\', function () {\n    mobile_search_filter_$(this).toggleClass("active");\n    mobile_search_filter_$(".search-filter-outer").toggle();\n    mobile_search_filter_$(this).text(function (i, text) {\n      return text === "Hide Filters" ? "Show Filters" : "Hide Filters";\n    });\n  });\n}\n\n/* harmony default export */ const mobile_search_filter = (mobileSearchFilter);\n;// CONCATENATED MODULE: ./src/scripts/module/search-keyword-highlight.js\n/* provided dependency */ var search_keyword_highlight_$ = __webpack_require__(609);\nfunction keywordHighlight() {\n  if (window.location.href.indexOf("search-result") > -1) {\n    if (search_keyword_highlight_$(".search-input").val().length > 0) {\n      var searchedText = search_keyword_highlight_$(".search-input").val().trim().split(" ");\n\n      if (searchedText.length > 0) {\n        search_keyword_highlight_$(searchedText).each(function (i, element) {\n          search_keyword_highlight_$(".search-item-desc div.search-item-title h4 a").each(function (n, desc) {\n            search_keyword_highlight_$(this).html(search_keyword_highlight_$(this).html().replace(new RegExp(\'(\\\\b\' + element.trim() + \'\\\\b)\', \'ig\'), \'<mark>$1</mark>\'));\n          });\n          search_keyword_highlight_$(".search-item-desc .search-item-summary p").each(function (n, desc) {\n            var description = search_keyword_highlight_$(this).text();\n            search_keyword_highlight_$(this).html(search_keyword_highlight_$(this).html().replace(new RegExp(\'(\\\\b\' + element.trim() + \'\\\\b)\', \'ig\'), \'<mark>$1</mark>\'));\n          });\n        });\n      }\n    }\n  }\n}\n\n/* harmony default export */ const search_keyword_highlight = (keywordHighlight);\n// EXTERNAL MODULE: ./node_modules/waypoints/lib/noframework.waypoints.js\nvar noframework_waypoints = __webpack_require__(682);\n;// CONCATENATED MODULE: ./src/scripts/module/menu-page.js\n/* provided dependency */ var menu_page_$ = __webpack_require__(609);\n\n\nfunction pageMenu() {\n  //Smooth scrolling when click to nav\n  let itemClicked = false;\n\n  menu_page_$.fn.isInViewport = function () {\n    let elementTop = menu_page_$(this).offset().top - 121;\n    let elementBottom = elementTop + menu_page_$(this).outerHeight(); //-121;\n\n    let viewportTop = menu_page_$(window).scrollTop();\n    let viewportBottom = menu_page_$(window).height() - 1000;\n    return elementBottom > viewportTop && elementTop < viewportTop;\n  }; //sticky global image\n\n\n  function sticky_relocate() {\n    var window_top = menu_page_$(window).scrollTop();\n\n    if (menu_page_$("#pageMenuStandard").length) {\n      var div_top = menu_page_$("#pageMenuStandard").offset().top - 10;\n\n      if (window_top > div_top) {\n        var activeMenu = menu_page_$("#pageMenuStandard ul.page-menu-list li.active a").attr("href");\n\n        if (!menu_page_$(activeMenu).hasClass("fullGrid")) {\n          menu_page_$(\'#stickyImage\').addClass("globalimage-sticky ");\n        }\n\n        if (!menu_page_$(\'#stickyImage\').hasClass("slideInRightGlobalImg")) {\n          menu_page_$(\'#stickyImage\').addClass("slideInRightGlobalImg");\n        }\n      } else {\n        menu_page_$(\'#stickyImage\').removeClass("globalimage-sticky ");\n      }\n    }\n\n    if (menu_page_$(\'#stickyImage\').length) {\n      menu_page_$(".fullGrid").each(function (index, ele) {\n        var distance1 = parseInt(distanceBetweenImageBottom(menu_page_$(\'#stickyImage\'), menu_page_$(this)));\n        var distance2 = parseInt(distanceBetweenImageTop(menu_page_$(\'#stickyImage\'), menu_page_$(this)));\n\n        if (distance1 < 100 && distance2 > 100) {\n          menu_page_$(\'#stickyImage\').removeClass("globalimage-sticky slideInRightGlobalImg");\n          return;\n        }\n      });\n    }\n  }\n\n  function distanceBetweenImageBottom(elementOne, elementTwo
1) {\n    var distance = -1;\n    var x1 = elementOne.offset().top;\n    var y1 = elementOne.offset().left;\n    var x2 = elementTwo.offset().top;\n    var y2 = elementTwo.offset().left;\n    var elementOneHeight = elementOne[0].offsetHeight;\n    var elementTwoHeight = elementTwo[0].offsetHeight;\n    var elementOneBottom = x1 + elementOneHeight;\n    var elementTwoBottom = x2 + elementTwoHeight;\n    var distance = x2 - elementOneBottom;\n    return distance;\n  }\n\n  function distanceBetweenImageTop(elementOne, elementTwo) {\n    var distance = -1;\n    var x1 = elementOne.offset().top;\n    var y1 = elementOne.offset().left;\n    var x2 = elementTwo.offset().top;\n    var y2 = elementTwo.offset().left;\n    var elementOneHeight = elementOne[0].offsetHeight;\n    var elementTwoHeight = elementTwo[0].offsetHeight;\n    var elementOneBottom = x1 + elementOneHeight;\n    var elementTwoBottom = x2 + elementTwoHeight;\n    var distance = elementTwoBottom - x1;\n    distance;\n    return distance;\n  }\n\n  function onloadStickyMenu() {\n    var rteId; //var nextSections ;\n\n    if (!itemClicked) {\n      if (menu_page_$(\'.project-global-image #stickyImage\').length > 0) {\n        sticky_relocate();\n      }\n\n      menu_page_$("section").each(function (index, element) {\n        if (menu_page_$(this).isInViewport()) {\n          if (menu_page_$(this).hasClass(\'richtext-sticky\')) {\n            rteId = menu_page_$(this).find("div.richtext-content").attr(\'id\');\n          } else {\n            rteId = menu_page_$(this).attr(\'id\');\n          }\n\n          if (menu_page_$(\'#pageMenuStandard\').length) {\n            //Pagemenu - active class add/remove\n            menu_page_$(\'#pageMenuStandard > ul > li\').removeClass("active");\n            menu_page_$("#pageMenuStandard > ul > li > a[href$=\'#" + rteId + "\']").parent().addClass("active");\n          }\n        }\n      });\n    }\n  }\n\n  menu_page_$(".navbar-default").addClass("pagemenu-scroll"); // On page load sticky menu if top of page\n\n  onloadStickyMenu();\n  menu_page_$(window).scroll(function () {\n    // On page scroll sticky menu if top of page\n    onloadStickyMenu();\n    let scroll = menu_page_$(window).scrollTop();\n\n    if (scroll >= 137) {\n      menu_page_$(".navbar-default").addClass("pagemenu-scroll");\n      menu_page_$(".sticky-img-inner").css({\n        "margin-top": "0px",\n        "top": "59px"\n      });\n    } else {\n      menu_page_$(".sticky-img-inner").css({\n        "margin-top": "-64px",\n        "top": "59px"\n      });\n      menu_page_$(".navbar-default").removeClass("pagemenu-scroll");\n    } // settimeout to clear itemClicked\n\n\n    clearTimeout(menu_page_$.data(this, "scrollCheck"));\n    menu_page_$.data(this, "scrollCheck", setTimeout(function () {\n      if (itemClicked) {\n        sticky_relocate();\n      }\n\n      itemClicked = false;\n\n      if (menu_page_$("#pageMenuStandard> ul > li").hasClass("active")) {\n        const positions = menu_page_$("#pageMenuStandard> ul > li.active").position(); // scroll to clicked tab with a little gap left to show previous tabs\n\n        scroll = menu_page_$(\'.page-menu-list\').scrollLeft();\n        menu_page_$(\'.page-menu-list\').animate({\n          \'scrollLeft\': scroll + positions.left - 100\n        }, 500);\n      }\n    }, 250));\n    showHideButtom(); //RTE image animation\n\n    const isRTERightImg = document.querySelectorAll(".imgright-rte-animate");\n\n    if (isRTERightImg.length > 0) {\n      const RTEImgRightAnimate = [].slice.call(document.querySelectorAll(".imgright-rte-animate"));\n      RTEImgRightAnimate.forEach(function (el) {\n        const waypoint = new Waypoint({\n          element: el,\n          handler: function (direction) {\n            el.classList.add("slideInRightRteImg");\n          },\n          offset: \'90%\'\n        });\n      });\n    }\n  }); //RTE image animation\n\n  const isRTERightImg = document.querySelectorAll(".imgright-rte-animate");\n\n  if (isRTERightImg.length > 0) {\n    const RTEImgRightAnimate = [].slice.call(document.querySelectorAll(".imgright-rte-animate"));\n    RTEImgRightAnimate.forEach(function (el) {\n      const waypoint = new Waypoint({\n        element: el,\n        handler: function (direction) {\n          el.classList.add("slideInRightRteImg");\n        },\n        offset: \'90%\'\n      });\n    });\n  }\n\n  menu_page_$("section").each(function (index, element) {\n    if (menu_page_$(this).hasClass("richtext-sticky")) {\n      const nextSection = menu_page_$(this).next();\n\n      if (!menu_page_$(nextSection).hasClass("richtext-sticky")) {\n        const currentItem = menu_page_$(this).find(".richtext-content").attr(\'id\');\n        const imageId = "#img-" + currentItem;\n\n        if (currentItem.length > 0 && menu_page_$("#img-" + currentItem).length > 0) {\n          menu_page_$("#img-" + currentItem).css(\'position\', \'sticky\');\n          menu_page_$(\'#\' + currentItem).css("min-height", "400px");\n        }\n      }\n    }\n  });\n\n  if (menu_page_$(\'div.sticky-img-inner\').length > 0) {\n    menu_page_$(menu_page_$(\'div.sticky-img-inner\')[0]).addClass(\'firstEle\');\n  } //Standard page menu\n\n\n  menu_page_$(\'#pageMenuStandard > ul > li > a\').click(function (e) {\n    menu_page_$(".sticky-img-inner").css({\n      "margin-top": "-64px",\n      "top": "59px"\n    });\n    itemClicked = true;\n    const curLink = menu_page_$(this);\n    const linkText = curLink.attr(\'href\');\n    menu_page_$(\'#stickyImage\').removeClass("globalimage-sticky slideInRightGlobalImg");\n\n    if (linkText != "" && linkText != "#") {\n      var refElem = menu_page_$(curLink.attr(\'href\'));\n      menu_page_$(\'li\').removeClass("active");\n      menu_page_$(curLink).parent().addClass("active");\n\n      if (refElem != null) {\n        var scrollPoint = menu_page_$(curLink.attr(\'href\')).offset().top - 121;\n        menu_page_$(\'body,html\').animate({\n          scrollTop: scrollPoint\n        }, 500);\n      }\n    } //mobile swipe\n\n\n    const position = menu_page_$(this).position(); // scroll to clicked tab with a little gap left to show previous tabs\n\n    scroll = menu_page_$(\'.page-menu-list\').scrollLeft();\n    menu_page_$(\'.page-menu-list\').animate({\n      \'scrollLeft\': scroll + position.left - 100\n    }, 500);\n  }); //Standard page menu\n\n  menu_page_$(".prevmenu-button").addClass(\'disable\');\n  menu_page_$(".nextmenu-button").removeClass(\'disable\');\n  showHideButtom(); //code for left and right arrow in uli li\n\n  menu_page_$(\'.left-arrow\').on({\n    click: function () {\n      menu_page_$(\'.page-menu-list\').animate({\n        scrollLeft: "-=100px"\n      }, 500);\n      showHideButtom();\n    }\n  });\n  menu_page_$(\'.right-arrow\').on({\n    click: function () {\n      menu_page_$(\'.page-menu-list\').animate({\n        scrollLeft: "+=100px"\n      }, 500);\n      showHideButtom();\n    }\n  }); //check width of menu\n\n  if (menu_page_$(\'.page-menu-list\').length) {\n    const menuWidth = menu_page_$(".page-menu-list").innerWidth();\n    const menuWidthInner = menu_page_$(".page-menu-inner").outerWidth();\n\n    if (menuWidth < menuWidthInner) {\n      menu_page_$(".prevmenu-button").hide();\n      menu_page_$(".nextmenu-button").hide();\n    } else {\n      menu_page_$(".prevmenu-button").show();\n      menu_page_$(".nextmenu-button").show();\n    }\n\n    if (menuWidth > menuWidthInner) {\n      menu_page_$(\'.page-menu-list\').css("display", "block");\n    }\n  }\n\n  menu_page_$(".page-menu-list").on("scroll", function () {\n    showHideButtom();\n  });\n\n  function showHideButtom() {\n    if (menu_page_$(\'.page-menu-list\').length) {\n      const ulLeft = menu_page_$(\'ul.page-menu-list\').offset().left;\n\n      if (menu_page_$(\'ul.page-menu-list li\').length > 0) {\n        const firstLi = menu_page_$(menu_page_$(\'ul.page-menu-list li\')).offset().left;\n\n        if (ulLeft > firstLi) {\n          menu_page_$(".prevmenu-button").removeClass(\'disable\');\n        } else {\n          menu_page_$(".prevmenu-button").addClass(\'disable\');\n        }\n      }\n\n      const $elem = menu_page_$(\'section.page-menu .container ul\');\n      const newScrollLeft = $elem.scrollLeft(),\n            width = $elem.width(),\n            scrollWidth = $elem.get(0).scrollWidth;\n\n      if (scrollWidth - newScrollLeft - width == 0) {\n        menu_page_$(".nextmenu-button").addClass(\'disable\');\n      } else {\n        menu_page_$(".nextmenu-button").removeClass(\'disable\');\n      }\n    }\n  }\n}\n\n/* harmony default export */ const menu_page = (pageMenu);\n// EXTERNAL MODULE: ./src/scripts/plugins/matchHeight-min.js\nvar matchHeight_min = __webpack_require__(614);\n;// CONCATENATED MODULE: ./src/scripts/module/match-heights.js\n/* provided dependency */ var match_heights_$ = __webpack_require__(609);\n\n\nfunction matchHeight() {\n  match_heights_$(".link-card-title").matchHeight({\n    byRow: true\n  });\n  match_heights_$(".people-text").matchHeight({\n    byRow: true\n  });\n}\n\n/* harmony default export */ const match_heights = (matchHeight);\n// EXTERNAL MODULE: ./node_modules/slick-carousel/slick/slick.js\nvar slick = __webpack_require__(154);\n;
1// CONCATENATED MODULE: ./src/scripts/module/project-carousel.js\n/* provided dependency */ var project_carousel_$ = __webpack_require__(609);\n\n\nfunction projectCarousel() {\n  project_carousel_$(\'.projectcarousel\').slick({\n    slidesToShow: 3,\n    slidesToScroll: 1,\n    autoplay: false,\n    infinite: false,\n    lazyLoad: \'ondemand\',\n    autoplaySpeed: 2000,\n    responsive: [{\n      breakpoint: 1024,\n      settings: {\n        slidesToShow: 2,\n        slidesToScroll: 1\n      }\n    }, {\n      breakpoint: 768,\n      settings: {\n        slidesToShow: 1,\n        slidesToScroll: 1\n      }\n    }]\n  });\n  project_carousel_$(".projectcarousel-item").matchHeight({\n    byRow: true\n  });\n\n  if (project_carousel_$(window).width() <= 991) {\n    project_carousel_$(\'.projectcarousel\').slick(\'slickRemove\', 0);\n  }\n}\n\n/* harmony default export */ const project_carousel = (projectCarousel);\n;// CONCATENATED MODULE: ./src/scripts/module/carousel-featured.js\n/* provided dependency */ var carousel_featured_$ = __webpack_require__(609);\n\n\nfunction featuredCarousel() {\n  carousel_featured_$(\'.featuredcarousel\').slick({\n    slidesToShow: 3,\n    slidesToScroll: 1,\n    autoplay: false,\n    infinite: false,\n    lazyLoad: \'ondemand\',\n    autoplaySpeed: 2000,\n    responsive: [{\n      breakpoint: 1024,\n      settings: {\n        slidesToShow: 2,\n        slidesToScroll: 1\n      }\n    }, {\n      breakpoint: 768,\n      settings: {\n        slidesToShow: 1,\n        slidesToScroll: 1\n      }\n    }]\n  });\n  carousel_featured_$(".featuredcarousel-item").matchHeight({\n    property: \'min-height\'\n  });\n\n  if (carousel_featured_$(window).width() <= 991) {\n    // remove first slide\n    carousel_featured_$(\'.featuredcarousel\').slick(\'slickRemove\', 0); // remove last slide\n\n    var SlideIndex = carousel_featured_$(".featuredcarousel").slick("getSlick").slideCount - 1;\n    carousel_featured_$(\'.featuredcarousel\').slick(\'slickRemove\', SlideIndex);\n  }\n}\n\n/* harmony default export */ const carousel_featured = (featuredCarousel);\n// EXTERNAL MODULE: ./node_modules/magnific-popup/dist/jquery.magnific-popup.js\nvar jquery_magnific_popup = __webpack_require__(729);\n;// CONCATENATED MODULE: ./src/scripts/module/lightbox.js\n/* provided dependency */ var lightbox_$ = __webpack_require__(609);\n\n\nfunction lightboxVideo() {\n  lightbox_$(\'.lightbox-video\').magnificPopup({\n    disableOn: 0,\n    type: \'iframe\',\n    mainClass: \'mfp-fade\',\n    removalDelay: 160,\n    preloader: false,\n    closeMarkup: \'<button title="%title%" type="button" class="mfp-close">&#215;</button>\',\n    fixedContentPos: false\n  });\n}\n\n/* harmony default export */ const lightbox = (lightboxVideo);\n;// CONCATENATED MODULE: ./src/scripts/module/scroll-down.js\n/* provided dependency */ var scroll_down_$ = __webpack_require__(609);\nfunction scrollDown() {\n  scroll_down_$(".buttonClick").click(function () {\n    var nextSection = scroll_down_$(this).closest(\'section\').next();\n    scroll_down_$(\'html, body\').animate({\n      scrollTop: scroll_down_$(nextSection).offset().top\n    }, 800);\n  });\n}\n\n/* harmony default export */ const scroll_down = (scrollDown);\n;// CONCATENATED MODULE: ./src/scripts/module/animate-section.js\n\n\nfunction sectionAnimation() {\n  const isSection = document.querySelectorAll(".section-animate");\n\n  if (isSection.length > 0) {\n    const sectionAnimate = [].slice.call(document.querySelectorAll(".section-animate"));\n    sectionAnimate.forEach(function (el) {\n      const waypoint = new Waypoint({\n        element: el,\n        handler: function (direction) {\n          el.classList.add("fadeInUpSection");\n        },\n        offset: \'85%\'\n      });\n    });\n  } //herostatement animation\n\n\n  const isHeroStatement = document.querySelectorAll(".hero-statement-animated");\n\n  if (isHeroStatement.length > 0) {\n    const sectionAnimate = [].slice.call(document.querySelectorAll(".hero-statement-animated"));\n    sectionAnimate.forEach(function (el) {\n      const waypoint = new Waypoint({\n        element: el,\n        handler: function (direction) {\n          el.classList.add("fadeInUpSection");\n        },\n        offset: \'85%\'\n      });\n    });\n  } // featured animation left image\n\n\n  const isFeaturedImgLeft = document.querySelectorAll(".imgleft-animate");\n\n  if (isFeaturedImgLeft.length > 0) {\n    const featuredImgLeftAnimate = [].slice.call(document.querySelectorAll(".imgleft-animate"));\n    featuredImgLeftAnimate.forEach(function (el) {\n      const waypoint = new Waypoint({\n        element: el,\n        handler: function (direction) {\n          el.classList.add("slideInLeftImg");\n        },\n        offset: \'85%\'\n      });\n    });\n  } //featured animation right image\n\n\n  const isFeaturedRightImg = document.querySelectorAll(".imgright-animate");\n\n  if (isFeaturedRightImg.length > 0) {\n    const featuredImgRightAnimate = [].slice.call(document.querySelectorAll(".imgright-animate"));\n    featuredImgRightAnimate.forEach(function (el) {\n      const waypoint = new Waypoint({\n        element: el,\n        handler: function (direction) {\n          el.classList.add("slideInRightImg");\n        },\n        offset: \'85%\'\n      });\n    });\n  } //featured animation text\n\n\n  const isTextFadeOut = document.querySelectorAll(".textfadeout-animate");\n\n  if (isTextFadeOut.length > 0) {\n    const textfadeoutAnimate = [].slice.call(document.querySelectorAll(".textfadeout-animate"));\n    textfadeoutAnimate.forEach(function (el) {\n      const waypoint = new Waypoint({\n        element: el,\n        handler: function (direction) {\n          el.classList.add("fadeOutText");\n        },\n        offset: \'85%\'\n      });\n    });\n  }\n}\n\n/* harmony default export */ const animate_section = (sectionAnimation);\n;// CONCATENATED MODULE: ./src/scripts/module/back-to-top.js\n/* provided dependency */ var back_to_top_$ = __webpack_require__(609);\nfunction BackToTop() {\n  function checkOffsetBackToTop() {\n    if (back_to_top_$("#backtotop-button").offset().top + back_to_top_$("#backtotop-button").height() >= back_to_top_$(".footer-content").offset().top - 10) back_to_top_$("#backtotop-button").css({\n      "position": "relative",\n      "float": "right",\n      "bottom": "0"\n    });\n    if (back_to_top_$(window).scrollTop() + window.innerHeight < back_to_top_$(".footer-content").offset().top) back_to_top_$("#backtotop-button").css({\n      "position": "fixed",\n      "bottom": "15px"\n    });\n  }\n\n  back_to_top_$(window).scroll(function () {\n    checkOffsetBackToTop();\n\n    if (back_to_top_$(this).scrollTop() > 100) {\n      back_to_top_$(\'.scrollup\').show();\n    } else {\n      back_to_top_$(\'.scrollup\').hide();\n    }\n  });\n  back_to_top_$(\'.scrollup\').click(function () {\n    back_to_top_$("html, body").animate({\n      scrollTop: 0\n    }, 600);\n    return false;\n  });\n  back_to_top_$(window).on(\'resize orientationchange\', function () {\n    checkOffsetBackToTop();\n  });\n}\n\n/* harmony default export */ const back_to_top = (BackToTop);\n// EXTERNAL MODULE: ./src/scripts/plugins/jquery.rwdImageMaps.js\nvar jquery_rwdImageMaps = __webpack_require__(623);\n// EXTERNAL MODULE: ./src/scripts/plugins/jquery.maphilight.js\nvar jquery_maphilight = __webpack_require__(38);\n;// CONCATENATED MODULE: ./src/scripts/module/interactive-map.js\n/* provided dependency */ var interactive_map_$ = __webpack_require__(609);\n\n\n\nfunction interactiveMap() {\n  if (interactive_map_$(".image-map").length > 0) {\n    interactive_map_$("img[usemap]").rwdImageMaps();\n    interactive_map_$(".image-map").maphilight({\n      stroke: true,\n      strokeColor: \'ffffff\',\n      fill: false,\n      shadow: true,\n      shadowX: 0,\n      shadowY: 0,\n      shadowRadius: 6,\n      shadowColor: \'ffffff\',\n      shadowOpacity: 0.8,\n      shadowPosition: \'outside\',\n      shadowFrom: false\n    });\n  }\n}\n\n/* harmony default export */ const interactive_map = (interactiveMap);\n;// CONCATENATED MODULE: ./src/scripts/module/image-loaded.js\n/* provided dependency */ var image_loaded_$ = __webpack_require__(609);\nfunction imageLoaded() {\n  // check image fully loaded then fire animate\n  if (image_loaded_$(".page-heading-img, .home-hero-banner, .page-heading-lightbox").length > 0) {\n    const src = image_loaded_$(\'#bannerImg\').css(\'background-image\');\n    const url = src.match(/\\((.*?)\\)/)[1].replace(/(\'|")/g, \'\');\n    const bannerImg = new Image();\n\n    bannerImg.onload = function () {\n      image_loaded_$(".animated").addClass("fadeInUp");\n    };\n\n    bannerImg.src = url;\n    if (bannerImg.complete) bannerImg.onload();\n  }\n}\n\n/* harmony default export */ const image_loaded = (imageLoaded);\n;// CONCATENATED MODULE: ./src/scripts/module/umbraco-form.js\n/* provided dependency */ var umbraco_form_$ = __webpack_require__(609);
1\nfunction umbracoSubmitSuccess() {\n  // as the form has just been loaded.\n  let message = umbraco_form_$(".umbraco-forms-submitmessage");\n\n  if (message.length > 0) {\n    // Scroll page to the submit message.\n    if (umbraco_form_$(window).width() < 992) {\n      umbraco_form_$(\'html, body\').animate({\n        scrollTop: umbraco_form_$(".contact-form").offset().top + 200\n      }, 1000);\n    } else {\n      umbraco_form_$(\'html, body\').animate({\n        scrollTop: umbraco_form_$(".contact-form").offset().top\n      }, 1000);\n    }\n  }\n}\n\n/* harmony default export */ const umbraco_form = (umbracoSubmitSuccess);\n;// CONCATENATED MODULE: ./src/scripts/module/embed-video.js\n/* provided dependency */ var embed_video_$ = __webpack_require__(609);\nfunction PlayVideoInline() {\n  // Only handle embed-module--overlay elements that DON\'T have data-video-url attribute\n  // This excludes the MultipleVideosWithCTA component which uses popup modals\n  embed_video_$(".embed-module--overlay:not([data-video-url])").on("click", function () {\n    embed_video_$(this).attr("hidden", "hidden");\n    var id = embed_video_$(this).attr("id");\n    embed_video_$("#video" + id).removeAttr("hidden");\n    var frame = embed_video_$("#video" + id).children()[0];\n    var url = embed_video_$(frame).attr("src");\n\n    if (url && url.includes("?")) {\n      url += "&autoplay=1";\n    } else if (url) {\n      url += "?autoplay=1";\n    }\n\n    embed_video_$(frame).attr("src", url);\n    embed_video_$(this).parent().addClass("noflex");\n  });\n}\n\n/* harmony default export */ const embed_video = (PlayVideoInline);\n;// CONCATENATED MODULE: ./src/scripts/module/multiple-videos-popup.js\n/* provided dependency */ var multiple_videos_popup_$ = __webpack_require__(609);\nfunction MultipleVideosPopup() {\n  console.log("MultipleVideosPopup initialized"); // Function to get video thumbnail from URL\n\n  function getVideoThumbnail(videoUrl) {\n    if (!videoUrl || typeof videoUrl !== \'string\') return null;\n\n    try {\n      if (videoUrl.includes("youtube.com") || videoUrl.includes("youtu.be")) {\n        // Extract YouTube video ID\n        var videoId = videoUrl.match(/(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/)([^&\\n?#]+)/);\n\n        if (videoId && videoId[1]) {\n          return `https://img.youtube.com/vi/${videoId[1]}/maxresdefault.jpg`;\n        }\n      } else if (videoUrl.includes("vimeo.com")) {\n        // Extract Vimeo video ID\n        var vimeoId = videoUrl.match(/vimeo\\.com\\/(\\d+)/);\n\n        if (vimeoId && vimeoId[1]) {\n          // Note: Vimeo requires API call for thumbnails, but we can use a placeholder\n          // or implement Vimeo oEmbed API if needed\n          return null;\n        }\n      }\n    } catch (error) {\n      console.warn("Error extracting video thumbnail:", error);\n    }\n\n    return null;\n  } // Function to create video thumbnail from video URL\n\n\n  function createVideoThumbnail(videoUrl, videoType, containerId) {\n    if (!videoUrl || typeof videoUrl !== \'string\') return null;\n\n    try {\n      // Use videoType if available, otherwise detect from URL\n      var platform = videoType || (videoUrl.includes("youtube.com") || videoUrl.includes("youtu.be") ? "youtube" : videoUrl.includes("vimeo.com") ? "vimeo" : "other");\n\n      if (platform === "youtube") {\n        // Extract YouTube video ID and create thumbnail\n        var videoId = videoUrl.match(/(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/|youtube\\.com\\/embed\\/)([^&\\n?#]+)/);\n\n        if (videoId && videoId[1]) {\n          // Create a thumbnail element that will try different qualities\n          var thumbnailUrl = `https://img.youtube.com/vi/${videoId[1]}/maxresdefault.jpg`; // Create a test image to check if maxresdefault exists, fallback to hqdefault\n\n          var testImg = new Image();\n\n          testImg.onerror = function () {\n            // If maxresdefault fails, try hqdefault\n            var fallbackUrl = `https://img.youtube.com/vi/${videoId[1]}/hqdefault.jpg`;
1\n            var $overlay = multiple_videos_popup_$(`[id="${containerId}"]`);\n            var $img = $overlay.find(\'img\');\n\n            if ($img.length > 0) {\n              $img.attr(\'src\', fallbackUrl);\n              console.log("Fallback to hqdefault thumbnail for video:", videoId[1]);\n            }\n          };\n\n          testImg.src = thumbnailUrl;\n          return thumbnailUrl;\n        }\n      } else if (platform === "vimeo") {\n        // Extract Vimeo video ID\n        var vimeoId = videoUrl.match(/vimeo\\.com\\/(\\d+)/);\n\n        if (vimeoId && vimeoId[1]) {\n          // For Vimeo, we\'ll use a generic thumbnail with video info\n          // Note: Vimeo requires oEmbed API for actual thumbnails\n          return `https://via.placeholder.com/600x337/666/fff?text=Vimeo+Video+${vimeoId[1]}`;\n        }\n      } else if (videoUrl.startsWith("http")) {\n        // For other HTTP URLs, create a generic video thumbnail\n        return `https://via.placeholder.com/600x337/666/fff?text=Video+Content`;\n      }\n    } catch (error) {\n      console.warn("Error creating video thumbnail:", error);\n    }\n\n    return null;\n  } // Function to update video thumbnails with fallbacks\n\n\n  function updateVideoThumbnails() {\n    multiple_videos_popup_$(".embed-module--overlay[data-video-url]").each(function () {\n      var $overlay 
1= multiple_videos_popup_$(this);\n      var $img = $overlay.find(\'img\');\n      var videoUrl = $overlay.data("video-url");\n      var videoType = $overlay.data("video-type"); // Check if image needs thumbnail replacement (placeholder or has data-needs-thumbnail attribute)\n\n      if ($img.length > 0 && ($img.attr(\'src\').includes(\'icon-placeholder.png\') || $img.attr(\'data-needs-thumbnail\') === \'true\')) {\n        var thumbnailUrl = createVideoThumbnail(videoUrl, videoType, $overlay.attr(\'id\'));\n\n        if (thumbnailUrl) {\n          $img.attr(\'src\', thumbnailUrl);\n          $img.removeAttr(\'data-needs-thumbnail\'); // Remove the attribute after updating\n        }\n      }\n    });\n  } // Function to rebind click events (useful after screen resize)\n\n\n  function rebindClickEvents() {\n    // Remove existing event handlers\n    multiple_videos_popup_$(document).off("click.multipleVideosPopup", ".embed-module--overlay[data-video-url]"); // Rebind click events\n\n    multiple_videos_popup_$(document).on("click.multipleVideosPopup", ".embed-module--overlay[data-video-url]", function (e) {\n      handleVideoClick(e, this);\n    });\n  } // Function to handle video click\n\n\n  function handleVideoClick(e, element) {\n    try {\n      // Additional check to ensure the element has a valid data-video-url\n      var $overlay 
1= multiple_videos_popup_$(element);\n\n      if (!$overlay.data("video-url")) {\n        console.warn("Element clicked but no video URL found:", $overlay);\n        return;\n      }\n\n      e.preventDefault();\n      e.stopPropagation();\n      console.log("Video overlay clicked for popup");\n      var videoUrl = $overlay.data("video-url");\n      console.log("Video URL:", videoUrl);\n      console.log("Video URL type:", typeof videoUrl);\n      console.log("Video URL length:", videoUrl ? videoUrl.length : \'undefined\');\n\n      if (videoUrl && typeof videoUrl === \'string\' && videoUrl.trim() !== \'\') {\n        // Create video content using the same logic as EmbedVideoModule\n        var videoContent = "";\n        var autoplayUrl = videoUrl; // Initialize autoplayUrl\n\n        if (videoUrl.startsWith("http")) {\n          // If it\'s an HTTP URL, create iframe with larger dimensions and autoplay\n          try {\n            // Add autoplay parameters for different video platforms\n            if (videoUrl.includes("youtube.com") || videoUrl.includes("youtu.be")) {\n              // YouTube videos - ensure proper embed format and add autoplay\n              if (videoUrl.includes("youtube.com/watch")) {\n                // Convert watch URLs to embed format\n                var videoId = videoUrl.match(/(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/)([^&\\n?#]+)/);\n\n                if (videoId && videoId[1]) {\n                  autoplayUrl = "https://www.youtube.com/embed/" + videoId[1] + "?autoplay=1&mute=1&rel=0&showinfo=0";\n                } else {\n                  console.warn("Could not extract YouTube video ID from URL:", videoUrl);\n                  autoplayUrl = videoUrl; // Fallback to original URL\n                }\n              } else if (videoUrl.includes("?")) {\n                autoplayUrl += "&autoplay=1&mute=1&rel=0&showinfo=0";\n              } else {\n                autoplayUrl += "?autoplay=1&mute=1&rel=0&showinfo=0";\n              }\n            } else if (videoUrl.includes("vimeo.com")) {\n              // Vimeo videos\n              if (videoUrl.includes("?")) {\n                autoplayUrl += "&autoplay=1&muted=1&background=1";\n              } else {\n                autoplayUrl += "?autoplay=1&muted=1&background=1";\n              }\n            } else {\n              // Other video platforms\n              if (videoUrl.includes("?")) {\n                autoplayUrl += "&autoplay=1";\n              } else {\n                autoplayUrl += "?autoplay=1";\n              }\n            }\n          } catch (error) {\n            console.error("Error processing video URL:", error);\n            console.log("Falling back to original URL:", videoUrl);\n            autoplayUrl = videoUrl; // Ensure autoplayUrl is always defined\n          } // Ensure autoplayUrl is defined before using it\n\n\n          if (!autoplayUrl) {\n            console.warn("autoplayUrl is undefined, using original videoUrl");\n            autoplayUrl = videoUrl;\n          }\n\n          videoContent = `<iframe src="${autoplayUrl}" width="100%" height="100%" frameborder="0" allowfullscreen allow="autoplay; encrypted-media" style="max-width: 100%; max-height: 100%; object-fit: contain;"></iframe>`;\n        } else {\n          // If it\'s raw HTML content, use it as is\n          videoContent = videoUrl;\n          autoplayUrl = videoUrl; // Ensure autoplayUrl is defined for non-HTTP URLs\n        } // console.log("Video content created:", videoContent);\n        // Create modal HTML\n\n\n        var modalHtml = `\n                    <div class="video-popup-modal" id="videoModal">\n                        <div class="video-popup-overlay"></div>\n                        <div class="video-popup-content">\n                            <button class="video-popup-close">&times;</button>\n                            <div class="video-popup-body">\n                                <div class="embed-module--video">\n                                    ${videoContent}\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                `; // Add modal to body\n\n        multiple_videos_popup_$("body").append(modalHtml); // Show modal\n\n        multiple_videos_popup_$("#videoModal").addClass("show"); // Handle close button\n\n        multiple_videos_popup_$(".video-popup-close, .video-popup-overlay").on("click", function () {\n          closeVideoPopup();\n        }); // Handle escape key\n\n        multiple_videos_popup_$(document).on("keydown.videoPopup", function (e) {\n          if (e.key === "Escape") {\n            closeVideoPopup();\n          }\n        }); // Prevent body scroll\n\n        multiple_videos_popup_$("body").addClass("modal-open"); // Debug autoplay\n\n        console.log("Video popup opened with URL:", autoplayUrl);\n        console.log("Original video URL:", videoUrl); // Force autoplay for YouTube videos if needed\n\n        if (autoplayUrl && typeof autoplayUrl === \'string\' && autoplayUrl.includes("youtube.com/embed")) {\n          setTimeout(function () {\n            var iframe = multiple_videos_popup_$("#videoModal iframe");\n\n            if (iframe.length > 0) {\n              console.log("YouTube iframe found, attempting to ensure autoplay"); // Sometimes YouTube needs a small delay to properly initialize autoplay\n\n              var currentSrc = iframe.attr("src");\n\n              if (currentSrc && !currentSrc.includes("autoplay=1")) {\n                iframe.attr("src", currentSrc + "&autoplay=1&mute=1");\n              }\n            }\n          }, 500);\n        }\n      } else {\n        console.warn("Invalid video URL provided:", videoUrl);\n      }\n    } catch (error) {\n      console.error("Error in video popup handler:", error);\n      console.error("Error details:", {\n        videoUrl: videoUrl,\n        autoplayUrl: typeof autoplayUrl !== \'undefined\' ? autoplayUrl : \'undefined\',\n        error: error.message\n      });\n    }\n  } // Wait for DOM to be ready and then bind events with a small delay\n\n\n  multiple_videos_popup_$(document).ready(function () {\n    setTimeout(function () {\n      // Update video thumbnails with fallbacks\n      updateVideoThumbnails(); // Debug: Check if elements exist\n\n      var overlays = multiple_videos_popup_$(".embed-module--overlay[data-video-url]");
1 // console.log("Found overlays with data-video-url:", overlays.length);\n      // overlays.each(function(index) {\n      //     console.log("Overlay", index, ":", $(this).attr("id"), "URL:", $(this).data("video-url"));\n      // });\n      // Initial binding of click events\n\n      rebindClickEvents(); // Handle window resize events to rebind click events\n\n      var resizeTimer;\n      multiple_videos_popup_$(window).on("resize", function () {\n        clearTimeout(resizeTimer);\n        resizeTimer = setTimeout(function () {\n          console.log("Window resized, rebinding click events");\n          rebindClickEvents();\n        }, 250); // Wait 250ms after resize stops\n      }); // Test function - manually trigger popup for debugging\n\n      window.testVideoPopup = function () {\n        console.log("Testing video popup manually");\n        var testUrl = "https://www.youtube.com/embed/dQw4w9WgXcQ?autoplay=1&mute=1";\n        var modalHtml = `\n                    <div class="video-popup-modal" id="videoModal">\n                        <div class="video-popup-overlay"></div>\n                        <div class="video-popup-content">\n                            <button class="video-popup-close">&times;</button>\n                            <div class="video-popup-body">\n                                <div class="embed-module--video">\n                                    <iframe src="${testUrl}" width="100%" height="100%" frameborder="0" allowfullscreen allow="autoplay; encrypted-media" style="max-width: 100%; max-height: 100%; object-fit: contain;"></iframe>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                `;\n        multiple_videos_popup_$("body").append(modalHtml);\n        multiple_videos_popup_$("#videoModal").addClass("show");\n        multiple_videos_popup_$(".video-popup-close, .video-popup-overlay").on("click", function () {\n          closeVideoPopup();\n        });\n        multiple_videos_popup_$("body").addClass("modal-open");\n      };\n    }, 100); // Small delay to ensure other functions have initialized\n  });\n\n  function closeVideoPopup() {\n    multiple_videos_popup_$("#videoModal").removeClass("show");\n    setTimeout(function () {\n      multiple_videos_popup_$("#videoModal").remove();\n      multiple_videos_popup_$("body").removeClass("modal-open");\n    }, 300); // Remove event listeners\n\n    multiple_videos_popup_$(document).off("keydown.videoPopup");\n  }\n}\n\n/* harmony default export */ const multiple_videos_popup = (MultipleVideosPopup);\n;// CONCATENATED MODULE: ./node_modules/@splidejs/splide/dist/js/splide.esm.js\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }\n\n/*!\n * Splide.js\n * Version  : 4.1.4\n * License  : MIT\n * Copyright: 2022 Naotoshi Fujita\n */\nvar MEDIA_PREFERS_REDUCED_MOTION = "(prefers-reduced-motion: reduce)";\nvar CREATED = 1;\nvar MOUNTED = 2;\nvar IDLE = 3;\nvar MOVING = 4;\nvar SCROLLING = 5;\nvar DRAGGING = 6;\nvar DESTROYED = 7;\nvar STATES = {\n  CREATED: CREATED,\n  MOUNTED: MOUNTED,\n  IDLE: IDLE,\n  MOVING: MOVING,\n  SCROLLING: SCROLLING,\n  DRAGGING: DRAGGING,\n  DESTROYED: DESTROYED\n};\n\nfunction empty(array) {\n  array.length = 0;\n}\n\nfunction slice(arrayLike, start, end) {\n  return Array.prototype.slice.call(arrayLike, start, end);\n}\n\nfunction apply(func) {\n  return func.bind.apply(func, [null].concat(slice(arguments, 1)));\n}\n\nvar nextTick = setTimeout;\n\nvar noop = function noop() {};\n\nfunction raf(func) {\n  return requestAnimationFrame(func);\n}\n\nfunction typeOf(type, subject) {\n  return typeof subject === type;\n}\n\nfunction isObject(subject) {\n  return !isNull(subject) && typeOf("object", subject);\n}\n\nvar isArray = Array.isArray;\nvar isFunction = apply(typeOf, "function");\nvar isString = apply(typeOf, "string");\nvar isUndefined = apply(typeOf, "undefined");\n\nfunction isNull(subject) {\n  return subject === null;\n}\n\nfunction isHTMLElement(subject) {\n  try {\n    return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction toArray(value) {\n  return isArray(value) ? value : [value];\n}\n\nfunction forEach(values, iteratee) {\n  toArray(values).forEac
1h(iteratee);\n}\n\nfunction includes(array, value) {\n  return array.indexOf(value) > -1;\n}\n\nfunction push(array, items) {\n  array.push.apply(array, toArray(items));\n  return array;\n}\n\nfunction toggleClass(elm, classes, add) {\n  if (elm) {\n    forEach(classes, function (name) {\n      if (name) {\n        elm.classList[add ? "add" : "remove"](name);\n      }\n    });\n  }\n}\n\nfunction addClass(elm, classes) {\n  toggleClass(elm, isString(classes) ? classes.split(" ") : classes, true);\n}\n\nfunction append(parent, children) {\n  forEach(children, parent.appendChild.bind(parent));\n}\n\nfunction before(nodes, ref) {\n  forEach(nodes, function (node) {\n    var parent = (ref || node).parentNode;\n\n    if (parent) {\n      parent.insertBefore(node, ref);\n    }\n  });\n}\n\nfunction matches(elm, selector) {\n  return isHTMLElement(elm) && (elm["msMatchesSelector"] || elm.matches).call(elm, selector);\n}\n\nfunction children(parent, selector) {\n  var children2 = parent ? slice(parent.children) : [];\n  return selector ? children2.filter(function (child) {\n    return matches(child, selector);\n  }) : children2;\n}\n\nfunction child(parent, selector) {\n  return selector ? children(parent, selector)[0] : parent.firstElementChild;\n}\n\nvar ownKeys = Object.keys;\n\nfunction forOwn(object, iteratee, right) {\n  if (object) {\n    (right ? ownKeys(object).reverse() : ownKeys(object)).forEach(function (key) {\n      key !== "__proto__" && iteratee(object[key], key);\n    });\n  }\n\n  return object;\n}\n\nfunction splide_esm_assign(object) {\n  slice(arguments, 1).forEach(function (source) {\n    forOwn(source, function (value, key) {\n      object[key] = source[key];\n    });\n  });\n  return object;\n}\n\nfunction merge(object) {\n  slice(arguments, 1).forEach(function (source) {\n    forOwn(source, function (value, key) {\n      if (isArray(value)) {\n        object[key] = value.slice();\n      } else if (isObject(value)) {\n        object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);\n      } else {\n        object[key] = value;\n      }\n    });\n  });\n  return object;\n}\n\nfunction omit(object, keys) {\n  forEach(keys || ownKeys(object), function (key) {\n    delete object[key];\n  });\n}\n\nfunction removeAttribute(elms, attrs) {\n  forEach(elms, function (elm) {\n    forEach(attrs, function (attr) {\n      elm && elm.removeAttribute(attr);\n    });\n  });\n}\n\nfunction setAttribute(elms, attrs, value) {\n  if (isObject(attrs)) {\n    forOwn(attrs, function (value2, name) {\n      setAttribute(elms, name, value2);\n    });\n  } else {\n    forEach(elms, function (elm) {\n      isNull(value) || value === "" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));\n    });\n  }\n}\n\nfunction create(tag, attrs, parent) {\n  var elm = document.createElement(tag);\n\n  if (attrs) {\n    isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs);\n  }\n\n  parent && append(parent, elm);\n  return elm;\n}\n\nfunction style(elm, prop, value) {\n  if (isUndefined(value)) {\n    return getComputedStyle(elm)[prop];\n  }\n\n  if (!isNull(value)) {\n    elm.style[prop] = "" + value;\n  }\n}\n\nfunction display(elm, display2) {\n  style(elm, "display", display2);\n}\n\nfunction splide_esm_focus(elm) {\n  elm["setActive"] && elm["setActive"]() || elm.focus({\n    preventScroll: true\n  });\n}\n\nfunction getAttribute(elm, attr) {\n  return elm.getAttribute(attr);\n}\n\nfunction hasClass(elm, className) {\n  return elm && elm.classList.contains(className);\n}\n\nfunction rect(target) {\n  return target.getBoundingClientRect();\n}\n\nfunction remove(nodes) {\n  forEach(nodes, function (node) {\n    if (node && node.parentNode) {\n      node.parentNode.removeChild(node);\n    }\n  });\n}\n\nfunction parseHtml(html) {\n  return child(new DOMParser().parseFromString(html, "text/html").body);\n}\n\nfunction prevent(e, stopPropagation) {\n  e.preventDefault();\n\n  if (stopPropagation) {\n    e.stopPropagation();\n    e.stopImmediatePropagation();\n  }\n}\n\nfunction query(parent, selector) {\n  return parent && parent.querySelector(selector);\n}\n\nfunction queryAll(parent, selector) {\n  return selector ? slice(parent.querySelectorAll(selector)) : [];\n}\n\nfunction removeClass(elm, classes) {\n  toggleClass(elm, classes, false);\n}\n\nfunction timeOf(e) {\n  return e.timeStamp;\n}\n\nfunction unit(value) {\n  return isString(value) ? value : value ? value + "px" : "";\n}\n\nvar PROJECT_CODE = "splide";\nvar DATA_ATTRIBUTE = "data-" + PROJECT_CODE;\n\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new Error("[" + PROJECT_CODE + "] " + (message || ""));\n  }\n}\n\nvar min = Math.min,\n    max = Math.max,\n    floor = Math.floor,\n    ceil = Math.
1ceil,\n    abs = Math.abs;\n\nfunction approximatelyEqual(x, y, epsilon) {\n  return abs(x - y) < epsilon;\n}\n\nfunction between(number, x, y, exclusive) {\n  var minimum = min(x, y);\n  var maximum = max(x, y);\n  return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum;\n}\n\nfunction clamp(number, x, y) {\n  var minimum = min(x, y);\n  var maximum = max(x, y);\n  return min(max(minimum, number), maximum);\n}\n\nfunction sign(x) {\n  return +(x > 0) - +(x < 0);\n}\n\nfunction camelToKebab(string) {\n  return string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();\n}\n\nfunction format(string, replacements) {\n  forEach(replacements, function (replacement) {\n    string = string.replace("%s", "" + replacement);\n  });\n  return string;\n}\n\nfunction pad(number) {\n  return number < 10 ? "0" + number : "" + number;\n}\n\nvar ids = {};\n\nfunction uniqueId(prefix) {\n  return "" + prefix + pad(ids[prefix] = (ids[prefix] || 0) + 1);\n}\n\nfunction EventBinder() {\n  var listeners = [];\n\n  function bind(targets, events, callback, options) {\n    forEachEvent(targets, events, function (target, event, namespace) {\n      var isEventTarget = ("addEventListener" in target);\n      var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target["removeListener"].bind(target, callback);\n      isEventTarget ? target.addEventListener(event, callback, options) : target["addListener"](callback);\n      listeners.push([target, event, namespace, callback, remover]);\n    });\n  }\n\n  function unbind(targets, events, callback) {\n    forEachEvent(targets, events, function (target, event, namespace) {\n      listeners = listeners.filter(function (listener) {\n        if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) {\n          listener[4]();\n          return false;\n        }\n\n        return true;\n      });\n    });\n  }\n\n  function dispatch(target, type, detail) {\n    var e;\n    var bubbles = true;\n\n    if (typeof CustomEvent === "function") {\n      e = new CustomEvent(type, {\n        bubbles: bubbles,\n        detail: detail\n      });\n    } else {\n      e = document.createEvent("CustomEvent");\n      e.initCustomEvent(type, bubbles, false, detail);\n    }\n\n    target.dispatchEvent(e);\n    return e;\n  }\n\n  function forEachEvent(targets, events, iteratee) {\n    forEach(targets, function (target) {\n      target && forEach(events, function (events2) {\n        events2.split(" ").forEach(function (eventNS) {\n          var fragment = eventNS.split(".");\n          iteratee(target, fragment[0], fragment[1]);\n        });\n      });\n    });\n  }\n\n  function destroy() {\n    listeners.forEach(function (data) {\
1n      data[4]();\n    });\n    empty(listeners);\n  }\n\n  return {\n    bind: bind,\n    unbind: unbind,\n    dispatch: dispatch,\n    destroy: destroy\n  };\n}\n\nvar EVENT_MOUNTED = "mounted";\nvar EVENT_READY = "ready";\nvar EVENT_MOVE = "move";\nvar EVENT_MOVED = "moved";\nvar EVENT_CLICK = "click";\nvar EVENT_ACTIVE = "active";\nvar EVENT_INACTIVE = "inactive";\nvar EVENT_VISIBLE = "visible";\nvar EVENT_HIDDEN = "hidden";\nvar EVENT_REFRESH = "refresh";\nvar EVENT_UPDATED = "updated";\nvar EVENT_RESIZE = "resize";\nvar EVENT_RESIZED = "resized";\nvar EVENT_DRAG = "drag";\nvar EVENT_DRAGGING = "dragging";\nvar EVENT_DRAGGED = "dragged";\nvar EVENT_SCROLL = "scroll";\nvar EVENT_SCROLLED = "scrolled";\nvar EVENT_OVERFLOW = "overflow";\nvar EVENT_DESTROY = "destroy";\nvar EVENT_ARROWS_MOUNTED = "arrows:mounted";\nvar EVENT_ARROWS_UPDATED = "arrows:updated";\nvar EVENT_PAGINATION_MOUNTED = "pagination:mounted";\nvar EVENT_PAGINATION_UPDATED = "pagination:updated";\nvar EVENT_NAVIGATION_MOUNTED = "navigation:mounted";\nvar EVENT_AUTOPLAY_PLAY = "autoplay:play";\nvar EVENT_AUTOPLAY_PLAYING = "autoplay:playing";\nvar EVENT_AUTOPLAY_PAUSE = "autoplay:pause";\nvar EVENT_LAZYLOAD_LOADED = "lazyload:loaded";\nvar EVENT_SLIDE_KEYDOWN = "sk";\nvar EVENT_SHIFTED = "sh";\nvar EVENT_END_INDEX_CHANGED = "ei";\n\nfunction EventInterface(Splide2) {\n  var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();\n  var binder = EventBinder();\n\n  function on(events, callback) {\n    binder.bind(bus, toArray(events).join(" "), function (e) {\n      callback.apply(callback, isArray(e.detail) ? e.detail : []);\n    });\n  }\n\n  function emit(event) {\n    binder.dispatch(bus, event, slice(arguments, 1));\n  }\n\n  if (Splide2) {\n    Splide2.event.on(EVENT_DESTROY, binder.destroy);\n  }\n\n  return splide_esm_assign(binder, {\n    bus: bus,\n    on: on,\n    off: apply(binder.unbind, bus),\n    emit: emit\n  });\n}\n\nfunction RequestInterval(interval, onInterval, onUpdate, limit) {\n  var now = Date.now;\n  var startTime;\n  var rate = 0;\n  var id;\n  var paused = true;\n  var count = 0;\n\n  function update() {\n    if (!paused) {\n      rate = interval ? min((now() - startTime) / interval, 1) : 1;\n      onUpdate && onUpdate(rate);\n\n      if (rate >= 1) {\n        onInterval();\n        startTime = now();\n\n        if (limit && ++count >= limit) {\n          return pause();\n        }\n      }\n\n      id = raf(update);\n    }\n  }\n\n  function start(resume) {\n    resume || cancel();\n    startTime = now() - (resume ? rate * interval : 0);\n    paused = false;\n    id = raf(update);\n  }\n\n  function pause() {\n    paused = true;\n  }\n\n  function rewind() {\n    startTime = now();\n    rate = 0;\n\n    if (onUpdate) {\n      onUpdate(rate);\n    }\n  }\n\n  function cancel() {\n    id && cancelAnimationFrame(id);\n    rate = 0;\n    id = 0;\n    paused = true;\n  }\n\n  function set(time) {\n    interval = time;\n  }\n\n  function isPaused() {\n    return paused;\n  }\n\n  return {\n    start: start,\n    rewind: rewind,\n    pause: pause,\n    cancel: cancel,\n    set: set,\n    isPaused: isPaused\n  };\n}\n\nfunction State(initialState) {\n  var state = initialState;\n\n  function set(value) {\n    state = value;\n  }\n\n  function is(states) {\n    return includes(toArray(states), state);\n  }\n\n  return {\n    set: set,\n    is: is\n  };\n}\n\nfunction Throttle(func, duration) {\n  var interval = RequestInterval(duration || 0, func, null, 1);\n  return function () {\n    interval.isPaused() && interval.start();\n  };\n}\n\nfunction Media(Splide2, Components2, options) {\n  var state = Splide2.state;\n  var breakpoints = options.breakpoints || {};\n  var reducedMotion = options.reducedMotion || {};\n  var binder = EventBinder();\n  var queries = [];\n\n  function setup() {\n    var isMin = options.mediaQuery === "min";\n    ownKeys(breakpoints).sort(function (n, m) {\n      return isMin ? +n - +m : +m - +n;\n    }
1).forEach(function (key) {\n      register(breakpoints[key], "(" + (isMin ? "min" : "max") + "-width:" + key + "px)");\n    });\n    register(reducedMotion, MEDIA_PREFERS_REDUCED_MOTION);\n    update();\n  }\n\n  function destroy(completely) {\n    if (completely) {\n      binder.destroy();\n    }\n  }\n\n  function register(options2, query) {\n    var queryList = matchMedia(query);\n    binder.bind(queryList, "change", update);\n    queries.push([options2, queryList]);\n  }\n\n  function update() {\n    var destroyed = state.is(DESTROYED);\n    var direction = options.direction;\n    var merged = queries.reduce(function (merged2, entry) {\n      return merge(merged2, entry[1].matches ? entry[0] : {});\n    }, {});\n    omit(options);\n    set(merged);\n\n    if (options.destroy) {\n      Splide2.destroy(options.destroy === "completely");\n    } else if (destroyed) {\n      destroy(true);\n      Splide2.mount();\n    } else {\n      direction !== options.direction && Splide2.refresh();\n    }\n  }\n\n  function reduce(enable) {\n    if (matchMedia(MEDIA_PREFERS_REDUCED_MOTION).matches) {\n      enable ? merge(options, reducedMotion) : omit(options, ownKeys(reducedMotion));\n    }\n  }\n\n  function set(opts, base, notify) {\n    merge(options, opts);\n    base && merge(Object.getPrototypeOf(options), opts);\n\n    if (notify || !state.is(CREATED)) {\n      Splide2.emit(EVENT_UPDATED, options);\n    }\n  }\n\n  return {\n    setup: setup,\n    destroy: destroy,\n    reduce: reduce,\n    set: set\n  };\n}\n\nvar ARROW = "Arrow";\nvar ARROW_LEFT = ARROW + "Left";\nvar ARROW_RIGHT = ARROW + "Right";\nvar ARROW_UP = ARROW + "Up";\nvar ARROW_DOWN = ARROW + "Down";\nvar LTR = "ltr";\nvar RTL = "rtl";\nvar TTB = "ttb";\nvar ORIENTATION_MAP = {\n  width: ["height"],\n  left: ["top", "right"],\n  right: ["bottom", "left"],\n  x: ["y"],\n  X: ["Y"],\n  Y: ["X"],\n  ArrowLeft: [ARROW_UP, ARROW_RIGHT],\n  ArrowRight: [ARROW_DOWN, ARROW_LEFT]\n};\n\nfunction Direction(Splide2, Components2, options) {\n  function resolve(prop, axisOnly, direction) {\n    direction = direction || options.direction;\n    var index = direction === RTL && !axisOnly ? 1 : direction === TTB ? 0 : -1;\n    return ORIENTATION_MAP[prop] && ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function (match, offset) {\n      var replacement = ORIENTATION_MAP[match.toLowerCase()][index] || match;\n      return offset > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement;\n    });\n  }\n\n  function orient(value) {\n    return value * (options.direction === RTL ? 1 : -1);\n  }\n\n  return {\n    resolve: resolve,\n    orient: orient\n  };\n}\n\nvar ROLE = "role";\nvar TAB_INDEX = "tabindex";\nvar DISABLED = "disabled";\nvar ARIA_PREFIX = "aria-";\nvar ARIA_CONTROLS = ARIA_PREFIX + "controls";\nvar ARIA_CURRENT = ARIA_PREFIX + "current";\nvar ARIA_SELECTED = ARIA_PREFIX + "selected";\nvar ARIA_LABEL = ARIA_PREFIX + "label";\nvar ARIA_LABELLEDBY = ARIA_PREFIX + "labelledby";\nvar ARIA_HIDDEN = ARIA_PREFIX + "hidden";\nvar ARIA_ORIENTATION = ARIA_PREFIX + "orientation";\nvar ARIA_ROLEDESCRIPTION = ARIA_PREFIX + "roledescription";\nvar ARIA_LIVE = ARIA_PREFIX + "live";\nvar ARIA_BUSY = ARIA_PREFIX + "busy";\nvar ARIA_ATOMIC = ARIA_PREFIX + "atomic";\nvar ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION];\nvar CLASS_PREFIX = PROJECT_CODE + "__";\nvar STATUS_CLASS_PREFIX = "is-";\nvar CLASS_ROOT = PROJECT_CODE;\nvar CLASS_TRACK = CLASS_PREFIX + "track";\nvar CLASS_LIST = CLASS_PREFIX + "list";\nvar CLASS_SLIDE = CLASS_PREFIX + "slide";\nvar CLASS_CLONE = CLASS_SLIDE + "--clone";\nvar CLASS_CONTAINER = CLASS_SLIDE + "__container";\nvar CLASS_ARROWS = CLASS_PREFIX + "arrows";\nvar CLASS_ARROW = CLASS_PREFIX + "arrow";\nvar CLASS_ARROW_PREV = CLASS_ARROW + "--prev";\nvar CLASS_ARROW_NEXT = CLASS_ARROW + "--next";\nvar CLASS_PAGINATION = CLASS_PREFIX + "pagination";\nvar CLASS_PAGINATION_PAGE = CLASS_PAGINATION + "__page";\nvar CLASS_PROGRESS = CLASS_PREFIX + "progress";\nvar CLASS_PROGRESS_BAR = CLASS_PROGRESS + "__bar";\nvar CLASS_TOGGLE = CLASS_PREFIX + "toggle";\nvar CLASS_TOGGLE_PLAY = CLASS_TOGGLE + "__play";\nvar CLASS_TOGGLE_PAUSE = CLASS_TOGGLE + "__pause";\nvar CLASS_SPINNER = CLASS_PREFIX + "spinner";\nvar CLASS_SR = CLASS_PREFIX + "sr";\nvar CLASS_INITIALIZED = STATUS_CLASS_PREFIX + "initialized";\nvar CLASS_ACTIVE = STATUS_CLASS_PREFIX + "active";\nvar CLASS_PREV = STATUS_CLASS_PREFIX + "prev";\nvar CLASS_NEXT = STATUS_CLASS_PREFIX + "next";\nvar CLASS_VISIBLE = STATUS_CLASS_PREFIX + "visible";\nvar CLASS_LOADING = STATUS_CLASS_PREFIX + "loading";\nvar CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + "focus-in";\nvar CLASS_OVERFLOW = STATUS_CLASS_PREFIX + "overflow";\nvar STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW];\nvar CLASSES = {\n  slide: CLASS_SLIDE,\n  clone: CLASS_CLONE,\n  arrows: CLASS_ARROWS,\n  arrow: CLASS_ARROW,\n  prev: CLASS_ARROW_PREV,\n  next: CLASS_ARROW_NEXT,\n  pagination: CLASS_PAGINATION,\n  page: CLASS_PAGINATION_PAGE,\n  spinner: CLASS_SPINNER\n};\n\nfunction closest(from, selector) {\n  if (isFunction(from.closest)) {\
1n    return from.closest(selector);\n  }\n\n  var elm = from;\n\n  while (elm && elm.nodeType === 1) {\n    if (matches(elm, selector)) {\n      break;\n    }\n\n    elm = elm.parentElement;\n  }\n\n  return elm;\n}\n\nvar FRICTION = 5;\nvar LOG_INTERVAL = 200;\nvar POINTER_DOWN_EVENTS = "touchstart mousedown";\nvar POINTER_MOVE_EVENTS = "touchmove mousemove";\nvar POINTER_UP_EVENTS = "touchend touchcancel mouseup click";\n\nfunction Elements(Splide2, Components2, options) {\n  var _EventInterface = EventInterface(Splide2),\n      on = _EventInterface.on,\n      bind = _EventInterface.bind;\n\n  var root = Splide2.root;\n  var i18n = options.i18n;\n  var elements = {};\n  var slides = [];\n  var rootClasses = [];\n  var trackClasses = [];\n  var track;\n  var list;\n  var isUsingKey;\n\n  function setup() {\n    collect();\n    init();\n    update();\n  }\n\n  function mount() {\n    on(EVENT_REFRESH, destroy);\n    on(EVENT_REFRESH, setup);\n    on(EVENT_UPDATED, update);\n    bind(document, POINTER_DOWN_EVENTS + " keydown", function (e) {\n      isUsingKey = e.type === "keydown";\n    }, {\n      capture: true\n    });\n    bind(root, "focusin", function () {\n      toggleClass(root, CLASS_FOCUS_IN, !!isUsingKey);\n    });\n  }\n\n  function destroy(completely) {\n    var attrs = ALL_ATTRIBUTES.concat("style");\n    empty(slides);\n    removeClass(root, rootClasses);\n    removeClass(track, trackClasses);\n    removeAttribute([track, list], attrs);\n    removeAttribute(root, completely ? attrs : ["style", ARIA_ROLEDESCRIPTION]);\n  }\n\n  function update() {\n    removeClass(root, rootClasses);\n    removeClass(track, trackClasses);\n    rootClasses = getClasses(CLASS_ROOT);\n    trackClasses = getClasses(CLASS_TRACK);\n    addClass(root, rootClasses);\n    addClass(track, trackClasses);\n    setAttribute(root, ARIA_LABEL, options.label);\n    setAttribute(root, ARIA_LABELLEDBY, options.labelledby);\n  }\n\n  function collect() {\n    track = find("." + CLASS_TRACK);\n    list = child(track, "." + CLASS_LIST);\n    assert(track && list, "A track/list element is missing.");\n    push(slides, children(list, "." + CLASS_SLIDE + ":not(." + CLASS_CLONE + ")"));\n    forOwn({\n      arrows: CLASS_ARROWS,\n      pagination: CLASS_PAGINATION,\n      prev: CLASS_ARROW_PREV,\n      next: CLASS_ARROW_NEXT,\n      bar: CLASS_PROGRESS_BAR,\n      toggle: CLASS_TOGGLE\n    }, function (className, key) {\n      elements[key] = find("." + className);\n    });\n    splide_esm_assign(elements, {\n      root: root,\n      track: track,\n      list: list,\n      slides: slides\n    });\n  }\n\n  function init() {\n    var id = root.id || uniqueId(PROJECT_CODE);\n    var role = options.role;\n    root.id = id;\n    track.id = track.id || id + "-track";\n    list.id = list.id || id + "-list";\n\n    if (!getAttribute(root, ROLE) && root.tagName !== "SECTION" && role) {\n      setAttribute(root, ROLE, role);\n    }\n\n    setAttribute(root, ARIA_ROLEDESCRIPTION, i18n.carousel);\n    setAttribute(list, ROLE, "presentation");\n  }\n\n  function find(selector) {\n    var elm = query(root, selector);\n    return elm && closest(elm, "." + CLASS_ROOT) === root ? elm : void 0;\n  }\n\n  function getClasses(base) {\n    return [base + "--" + options.type, base + "--" + options.direction, options.drag && base + "--draggable", options.isNavigation && base + "--nav", base === CLASS_ROOT && CLASS_ACTIVE];\n  }\n\n  return splide_esm_assign(elements, {\n    setup: setup,\n    mount: mount,\n    destroy: destroy\n  });\n}\n\nvar SLIDE = "slide";\nvar LOOP = "loop";\nvar FADE = "fade";\n\nfunction Slide$1(Splide2, index, slideIndex, slide) {\n  var event = EventInterface(Splide2);\n  var on = event.on,\n      emit = event.emit,\n      bind = event.bind;\n  var Components = Splide2.Components,\n      root = Splide2.root,\n      options = Splide2.options;\n  var isNavigation = options.isNavigation,\n      updateOnMove = options.updateOnMove,\n      i18n = options.i18n,\n      pagination = options.pagination,\n      slideFocus = options.slideFocus;\n  var resolve = Components.Direction.resolve;\n  var styles = getAttribute(slide, "style");\n  var label = getAttribute(slide, ARIA_LABEL);\n  var isClone = slideIndex > -1;\n  var container = child(slide, "." + CLASS_CONTAINER);\n  var destroyed;\n\n  function mount() {\n    if (!isClone) {\n      slide.id = root.i
1d + "-slide" + pad(index + 1);\n      setAttribute(slide, ROLE, pagination ? "tabpanel" : "group");\n      setAttribute(slide, ARIA_ROLEDESCRIPTION, i18n.slide);\n      setAttribute(slide, ARIA_LABEL, label || format(i18n.slideLabel, [index + 1, Splide2.length]));\n    }\n\n    listen();\n  }\n\n  function listen() {\n    bind(slide, "click", apply(emit, EVENT_CLICK, self));\n    bind(slide, "keydown", apply(emit, EVENT_SLIDE_KEYDOWN, self));\n    on([EVENT_MOVED, EVENT_SHIFTED, EVENT_SCROLLED], update);\n    on(EVENT_NAVIGATION_MOUNTED, initNavigation);\n\n    if (updateOnMove) {\n      on(EVENT_MOVE, onMove);\n    }\n  }\n\n  function destroy() {\n    destroyed = true;\n    event.destroy();\n    removeClass(slide, STATUS_CLASSES);\n    removeAttribute(slide, ALL_ATTRIBUTES);\n    setAttribute(slide, "style", styles);\n    setAttribute(slide, ARIA_LABEL, label || "");\n  }\n\n  function initNavigation() {\n    var controls = Splide2.splides.map(function (target) {\n      var Slide2 = target.splide.Components.Slides.getAt(index);\n      return Slide2 ? Slide2.slide.id : "";\n    }).join(" ");
1\n    setAttribute(slide, ARIA_LABEL, format(i18n.slideX, (isClone ? slideIndex : index) + 1));\n    setAttribute(slide, ARIA_CONTROLS, controls);\n    setAttribute(slide, ROLE, slideFocus ? "button" : "");\n    slideFocus && removeAttribute(slide, ARIA_ROLEDESCRIPTION);\n  }\n\n  function onMove() {\n    if (!destroyed) {\n      update();\n    }\n  }\n\n  function update() {\n    if (!destroyed) {\n      var curr = Splide2.index;\n      updateActivity();\n      updateVisibility();\n      toggleClass(slide, CLASS_PREV, index === curr - 1);\n      toggleClass(slide, CLASS_NEXT, index === curr + 1);\n    }\n  }\n\n  function updateActivity() {\n    var active = isActive();\n\n    if (active !== hasClass(slide, CLASS_ACTIVE)) {\n      toggleClass(slide, CLASS_ACTIVE, active);\n      setAttribute(slide, ARIA_CURRENT, isNavigation && active || "");\n      emit(active ? EVENT_ACTIVE : EVENT_INACTIVE, self);\n    }\n  }\n\n  function updateVisibility() {\n    var visible = isVisible();\n    var hidden = !visible && (!isActive() || isClone);\n\n    if (!Splide2.state.is([MOVING, SCROLLING])) {\n      setAttribute(slide, ARIA_HIDDEN, hidden || "");\n    }\n\n    setAttribute(queryAll(slide, options.focusableNodes || ""), TAB_INDEX, hidden ? -1 : "");\n\n    if (slideFocus) {\n      setAttribute(slide, TAB_INDEX, hidden ? -1 : 0);\n    }\n\n    if (visible !== hasClass(slide, CLASS_VISIBLE)) {\n      toggleClass(slide, CLASS_VISIBLE, visible);\n      emit(visible ? EVENT_VISIBLE : EVENT_HIDDEN, self);\n    }\n\n    if (!visible && document.activeElement === slide) {\n      var Slide2 = Components.Slides.getAt(Splide2.index);\n      Slide2 && splide_esm_focus(Slide2.slide);\n    }\n  }\n\n  function style$1(prop, value, useContainer) {\n    style(useContainer && container || slide, prop, value);\n  }\n\n  function isActive() {\n    var curr = Splide2.index;\n    return curr === index || options.cloneStatus && curr === slideIndex;\n  }\n\n  function isVisible() {\n    if (Splide2.is(FADE)) {\n      return isActive();\n    }\n\n    var trackRect = rect(Components.Elements.track);\n    var slideRect = rect(slide);\n    var left = resolve("left", true);\n    var right = resolve("right", true);\n    return floor(trackRect[left]) <= ceil(slideRect[left]) && floor(slideRect[right]) <= ceil(trackRect[right]);\n  }\n\n  function isWithin(from, distance) {\n    var diff = abs(from - index);\n\n    if (!isClone && (options.rewind || Splide2.is(LOOP))) {\n      diff = min(diff, Splide2.length - diff);\n    }\n\n    return diff <= distance;\n  }\n\n  var self = {\n    index: index,\n    slideIndex: slideIndex,\n    slide: slide,\n    container: container,\n    isClone: isClone,\n    mount: mount,\n    destroy: destroy,\n    update: update,\n    style: style$1,\n    isWithin: isWithin\n  };\n  return self;\n}\n\nfunction Slides(Splide2, Components2, options) {\n  var _EventInterface2 = EventInterface(Splide2),\n      on = _EventInterface2.on,\n      emit = _EventInterface2.emit,\n      bind = _EventInterface2.bind;\n\n  var _Components2$Elements = Components2.Elements,\n      slides = _Components2$Elements.slides,\n      list = _Components2$Elements.list;\n  var Slides2 = [];\n\n  function mount() {\n    init();\n    on(EVENT_REFRESH, destroy);\n    on(EVENT_REFRESH, init);\n  }\n\n  function init() {\n    slides.forEach(function (slide, index) {\n      register(slide, index, -1);\n    });\n  }\n\n  function destroy() {\n    forEach$1(function (Slide2) {\n      Slide2.destroy();\n    });\n    empty(Slides2);\n  }\n\n  function update() {\n    forEach$1(function (Slide2) {\n      Slide2.update();\n    });\n  }\n\n  function register(slide, index, slideIndex) {\n    var object = Slide$1(Splide2, index, slideIndex, slide);\n    object.mount();\n    Slides2.push(object);\n    Slides2.sort(function (Slide1, Slide2) {\n      return Slide1.index - Slide2.index;\n    });\n  }\n\n  function get(excludeClones) {\n    return excludeClones ? filter(function (Slide2) {\n      return !Slide2.isClone;\n    }) : Slides2;\n  }\n\n  function getIn(page) {\n    var Controller = Components2.Controller;\n    var index = Controller.toIndex(page);\n    var max = Controller.hasFocus() ? 1 : options.perPage;\n    return filter(function (Slide2) {\n      return between(Slide2.index, index, index + max - 1);\n    });\n  }\n\n  function getAt(index) {\n    return filter(index)[0];\n  }
1\n\n  function add(items, index) {\n    forEach(items, function (slide) {\n      if (isString(slide)) {\n        slide = parseHtml(slide);\n      }\n\n      if (isHTMLElement(slide)) {\n        var ref = slides[index];\n        ref ? before(slide, ref) : append(list, slide);\n        addClass(slide, options.classes.slide);\n        observeImages(slide, apply(emit, EVENT_RESIZE));\n      }\n    });\n    emit(EVENT_REFRESH);\n  }\n\n  function remove$1(matcher) {\n    remove(filter(matcher).map(function (Slide2) {\n      return Slide2.slide;\n    }));\n    emit(EVENT_REFRESH);\n  }\n\n  function forEach$1(iteratee, excludeClones) {\n    get(excludeClones).forEach(iteratee);\n  }\n\n  function filter(matcher) {\n    return Slides2.filter(isFunction(matcher) ? matcher : function (Slide2) {\n      return isString(matcher) ? matches(Slide2.slide, matcher) : includes(toArray(matcher), Slide2.index);\n    });\n  }\n\n  function style(prop, value, useContainer) {\n    forEach$1(function (Slide2) {\n      Slide2.style(prop, value, useContainer);\n    });\n  }\n\n  function observeImages(elm, callback) {\n    var images = queryAll(elm, "img");\n    var length = images.length;\n\n    if (length) {\n      images.forEach(function (img) {\n        bind(img, "load error", function () {\n          if (! --length) {\n            callback();\n          }\n        });\n      });\n    } else {\n      callback();\n    }\n  }\n\n  function getLength(excludeClones) {\n    return excludeClones ? slides.length : Slides2.length;\n  }\n\n  function isEnough() {\n    return Slides2.length > options.perPage;\n  }\n\n  return {\n    mount: mount,\n    destroy: destroy,\n    update: update,\n    register: register,\n    get: get,\n    getIn: getIn,\n    getAt: getAt,\n    add: add,\n    remove: remove$1,\n    forEach: forEach$1,\n    filter: filter,\n    style: style,\n    getLength: getLength,\n    isEnough: isEnough\n  };\n}\n\nfunction Layout(Splide2, Components2, options) {\n  var _EventInterface3 = EventInterface(Splide2),\n      on = _EventInterface3.on,\n      bind = _EventInterface3.bind,\n      emit = _EventInterface3.emit;\n\n  var Slides = Components2.Slides;\n  var resolve = Components2.Direction.resolve;\n  var _Components2$Elements2 = Components2.Elements,\n      root = _Components2$Elements2.root,\n      track = _Components2$Elements2.track,\n      list = _Components2$Elements2.list;\n  var getAt = Slides.getAt,\n      styleSlides = Slides.style;\n  var vertical;\n  var rootRect;\n  var overflow;\n\n  function mount() {\n    init();\n    bind(window, "resize load", Throttle(apply(emit, EVENT_RESIZE)));\n    on([EVENT_UPDATED, EVENT_REFRESH], init);\n    on(EVENT_RESIZE, resize);\n  }\n\n  function init() {\n    vertical = options.direction === TTB;\n    style(root, "maxWidth", unit(options.width));\n    style(track, resolve("paddingLeft"), cssPadding(false));\n    style(track, resolve("paddingRight"), cssPadding(true));\n    resize(true);\n  }\n\n  function resize(force) {\n    var newRect = rect(root);\n\n    if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {\n      style(track, "height", cssTrackHeight());\n      styleSlides(resolve("marginRight"), unit(options.gap));\n      styleSlides("width", cssSlideWidth());\n      styleSlides("height", cssSlideHeight(), true);\n      rootRect = newRect;\n      emit(EVENT_RESIZED);\n\n      if (overflow !== (overflow = isOverflow())) {\n        toggleClass(root, CLASS_OVERFLOW, overflow);\n        emit(EVENT_OVERFLOW, overflow);\n      }\n    }\n  }\n\n  function cssPadding(right) {\n    var padding = options.padding;\n    var prop = resolve(right ? "right" : "left");\n    return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || "0px";\n  }\n\n  function cssTrackHeight() {\n    var height = "";\n\n    if (vertical) {\n      height = cssHeight();\n      assert(height, "height or heightRatio is missing.");\n      height = "calc(" + height + " - " + cssPadding(false) + " - " + cssPadding(true) + ")";\n    }\n\n    return height;\n  }\n\n  function cssHeight() {\n    return unit(options.height || rect(list).width * options.heightRatio);\n  }\n\n  function cssSlideWidth() {\n    return options.autoWidth ? null : unit(options.fixedWidth) || (vertical ? "" : cssSlideSize());\n  }\n\n  function cssSlideHeight() {\n    return unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight());\n  }\n\n  function cssSlideSize() {\n    var gap = unit(options.gap);\n    return "calc((100%" + (gap && " + " + gap) + ")/" + (options.perPage || 1) + (gap && " - " + gap) + ")";\n  }\n\n  function listSize() {\n    return rect(list)[resolve("width")];\n  }\n\n  function slideSize(index, withoutGap) {\n    var Slide = getAt(index || 0);\n    return Slide ? rect(Slide.slide)[resolve("width")] + (withoutGap ? 0 : getGap()) : 0;\n  }\n\n  function totalSize(index, withoutGap) {\n    var Slide = getAt(index);\n\n    if (Slide) {\n      var right = rect(Slide.slide)[resolve("right")];\n      var left = rect(list)[resolve("left")];\n      return abs(right - left) + (withoutGap ? 0 : getGap());\n    }\n\n    return 0;\n  }\n\n  function sliderSize(withoutGap) {\n    return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap);\n  }\n\n  function getGap() {\n    var Slide = getAt(0);\n    return Slide && parseFloat(style(Slide.slide, resolve("marginRight"))) || 0;\n  }\n\n  function getPadding(right) {\n    return parseFloat(style(track, resolve("padding" + (right ? "Right" : "Left")))) || 0;\n  }\n\n  function isOverflow() {\n    return Splide2.is(FADE) || sliderSize(true) > listSize();\n  }\n\n  return {\n    mount: mount,\n    resize: resize,\n    listSize: listSize,\n    slideSize: slideSize,\n    sliderSize: sliderSize,\n    totalSize: totalSize,\n    getPadding: getPadding,\n    isOverflow: isOverflow\n  };\n}\n\nvar MULTIPLIER = 2;\n\nfunction Clones(Splide2, Components2, options) {\n  var event = EventInterface(Splide2);\n  var on = event.on;\n  var Elements = Components2.Elements,\n      Slides = Components2.Slides;\n  var resolve = Components2.Direction.resolve;\n  var clones = [];\n  var cloneCount;\n\n  function mount() {\n    on(EVENT_REFRESH, remount);\n    on([EVENT_UPDATED, EVENT_RESIZE], observe);\n\n    if (cloneCount = computeCloneCount()) {\n      generate(cloneCount);\n      Components2.Layout.resize(true);\n    }\n  }\n\n  function remount() {\n    destroy();\n    mount();\n  }\n\n  function destroy() {\n    remove(clones);\n    empty(clones);\n    event.destroy();\n  }\n\n  function observe() {\n    var count = computeCloneCount();\n\n    if (cloneCount !== count) {\n      if (cloneCount < count || !count) {\n        event.emit(EVENT_REFRESH);\n      }\n    }\n  }\n\n  function generate(count) {\n    var slides = Slides.get().slice();\n    var length = slides.length;\n\n    if (length) {\n      while (slides.length < count) {\n        push(slides, slides);\n      }\n\n      push(slides.slice(-count), slides.slice(0, count)).forEac
1h(function (Slide, index) {\n        var isHead = index < count;\n        var clone = cloneDeep(Slide.slide, index);\n        isHead ? before(clone, slides[0].slide) : append(Elements.list, clone);\n        push(clones, clone);\n        Slides.register(clone, index - count + (isHead ? 0 : length), Slide.index);\n      });\n    }\n  }\n\n  function cloneDeep(elm, index) {\n    var clone = elm.cloneNode(true);\n    addClass(clone, options.classes.clone);\n    clone.id = Splide2.root.id + "-clone" + pad(index + 1);\n    return clone;\n  }\n\n  function computeCloneCount() {\n    var clones2 = options.clones;\n\n    if (!Splide2.is(LOOP)) {\n      clones2 = 0;\n    } else if (isUndefined(clones2)) {\n      var fixedSize = options[resolve("fixedWidth")] && Components2.Layout.slideSize(0);\n      var fixedCount = fixedSize && ceil(rect(Elements.track)[resolve("width")] / fixedSize);\n      clones2 = fixedCount || options[resolve("autoWidth")] && Splide2.length || options.perPage * MULTIPLIER;\n    }\n\n    return clones2;\n  }\n\n  return {\n    mount: mount,\n    destroy: destroy\n  };\n}\n\nfunction Move(Splide2, Components2, options) {\n  var _EventInterface4 = EventInterface(Splide2),\n      on = _EventInterface4.on,\n      emit = _EventInterface4.emit;\n\n  var set = Splide2.state.set;\n  var _Components2$Layout = Components2.Layout,\n      slideSize = _Components2$Layout.slideSize,\n      getPadding = _Components2$Layout.getPadding,\n      totalSize = _Components2$Layout.totalSize,\n      listSize = _Components2$Layout.listSize,\n      sliderSize = _Components2$Layout.sliderSize;\n  var _Components2$Directio = Components2.Direction,\n      resolve = _Components2$Directio.resolve,\n      orient = _Components2$Directio.orient;\n  var _Components2$Elements3 = Components2.Elements,\n      list = _Components2$Elements3.list,\n      track = _Components2$Elements3.track;\n  var Transition;\n\n  function mount() {\n    Transition = Components2.Transition;\n    on([EVENT_MOUNTED, EVENT_RESIZED, EVENT_UPDATED, EVENT_REFRESH], reposition);\n  }\n\n  function reposition() {\n    if (!Components2.Controller.isBusy()) {\n      Components2.Scroll.cancel();\n      jump(Splide2.index);\n      Components2.Slides.update();\n    }\n  }\n\n  function move(dest, index, prev, callback) {\n    if (dest !== index && canShift(dest > prev)) {\n      cancel();\n      translate(shift(getPosition(), dest > prev), true);\n    }\n\n    set(MOVING);\n    emit(EVENT_MOVE, index, prev, dest);\n    Transition.start(index, function () {\n      set(IDLE);\n      emit(EVENT_MOVED, index, prev, dest);\n      callback && callback();\n    });\n  }\n\n  function jump(index) {\n    translate(toPosition(index, true));\n  }\n\n  function translate(position, preventLoop) {\n    if (!Splide2.is(FADE)) {\n      var destination = preventLoop ? position : loop(position);\n      style(list, "transform", "translate" + resolve("X") + "(" + destination + "px)");\n      position !== destination && emit(EVENT_SHIFTED);\n    }\n  }\n\n  function loop(position) {\n    if (Splide2.is(LOOP)) {\n      var index = toIndex(position);\n      var exceededMax = index > Components2.Controller.getEnd();\n      var exceededMin = index < 0;\n\n      if (exceededMin || exceededMax) {\n        position = shift(position, exceededMax);\n      }\n    }\n\n    return position;\n  }\n\n  function shift(position, backwards) {\n    var excess = position - getLimit(backwards);\n    var size = sliderSize();\n    position -= orient(size * (ceil(abs(excess) / size) || 1)) * (backwards ? 1 : -1);\n    return position;\n  }\n\n  function cancel() {\n    translate(getPosition(), true);\n    Transition.cancel();\n  }\n\n  function toIndex(position) {\n    var Slides = Components2.Slides.get();\n    var index = 0;\n    var minDistance = Infinity;\n\n    for (var i = 0; i < Slides.length; i++) {\n      var slideIndex = Slides[i].index;\n      var distance = abs(toPosition(slideIndex, true) - position);\n\n      if (distance <= minDistance) {\n        minDistance = distance;\n        index = slideIndex;\n      } else {\n        break;\n      }\n    }\n\n    return index;\n  }\n\n  function toPosition(index, trimming) {\n    var position = orient(totalSize(index - 1) - offset(index));\n    return trimming ? trim(position) : position;\n  }
1\n\n  function getPosition() {\n    var left = resolve("left");\n    return rect(list)[left] - rect(track)[left] + orient(getPadding(false));\n  }\n\n  function trim(position) {\n    if (options.trimSpace && Splide2.is(SLIDE)) {\n      position = clamp(position, 0, orient(sliderSize(true) - listSize()));\n    }\n\n    return position;\n  }\n\n  function offset(index) {\n    var focus = options.focus;\n    return focus === "center" ? (listSize() - slideSize(index, true)) / 2 : +focus * slideSize(index) || 0;\n  }\n\n  function getLimit(max) {\n    return toPosition(max ? Components2.Controller.getEnd() : 0, !!options.trimSpace);\n  }\n\n  function canShift(backwards) {\n    var shifted = orient(shift(getPosition(), backwards));\n    return backwards ? shifted >= 0 : shifted <= list[resolve("scrollWidth")] - rect(track)[resolve("width")];\n  }\n\n  function exceededLimit(max, position) {\n    position = isUndefined(position) ? getPosition() : position;\n    var exceededMin = max !== true && orient(position) < orient(getLimit(false));\n    var exceededMax = max !== false && orient(position) > orient(getLimit(true));\n    return exceededMin || exceededMax;\n  }\n\n  return {\n    mount: mount,\n    move: move,\n    jump: jump,\n    translate: translate,\n    shift: shift,\n    cancel: cancel,\n    toIndex: toIndex,\n    toPosition: toPosition,\n    getPosition: getPosition,\n    getLimit: getLimit,\n    exceededLimit: exceededLimit,\n    reposition: reposition\n  };\n}\n\nfunction Controller(Splide2, Components2, options) {\n  var _EventInterface5 = EventInterface(Splide2),\n      on = _EventInterface5.on,\n      emit = _EventInterface5.emit;\n\n  var Move = Components2.Move;\n  var getPosition = Move.getPosition,\n      getLimit = Move.getLimit,\n      toPosition = Move.toPosition;\n  var _Components2$Slides = Components2.Slides,\n      isEnough = _Components2$Slides.isEnough,\n      getLength = _Components2$Slides.getLength;\n  var omitEnd = options.omitEnd;\n  var isLoop = Splide2.is(LOOP);\n  var isSlide = Splide2.is(SLIDE);\n  var getNext = apply(getAdjacent, false);\n  var getPrev = apply(getAdjacent, true);\n  var currIndex = options.start || 0;\n  var endIndex;\n  var prevIndex = currIndex;\n  var slideCount;\n  var perMove;\n  var perPage;\n\n  function mount() {\n    init();\n    on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init);\n    on(EVENT_RESIZED, onResized);\n  }\n\n  function init() {\n    slideCount = getLength(true);\n    perMove = options.perMove;\n    perPage = options.perPage;\n    endIndex = getEnd();\n    var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1);\n\n    if (index !== currIndex) {\n      currIndex = index;\n      Move.reposition();\n    }\n  }\n\n  function onResized() {\n    if (endIndex !== getEnd()) {\n      emit(EVENT_END_INDEX_CHANGED);\n    }\n  }\n\n  function go(control, allowSameIndex, callback) {\n    if (!isBusy()) {\n      var dest = parse(control);\n      var index = loop(dest);\n\n      if (index > -1 && (allowSameIndex || index !== currIndex)) {\n        setIndex(index);\n        Move.move(dest, index, prevIndex, callback);\n      }\n    }\n  }\n\n  function scroll(destination, duration, snap, callback) {\n    Components2.Scroll.scroll(destination, duration, snap, function () {\n      var index = loop(Move.toIndex(getPosition()));\n      setIndex(omitEnd ? min(index, endIndex) : index);\n      callback && callback();\n    });\n  }\n\n  function parse(control) {\n    var index = currIndex;\n\n    if (isString(control)) {\n      var _ref = control.match(/([+\\-<>])(\\d+)?/) || [],\n          indicator = _ref[1],\n          number = _ref[2];\n\n      if (indicator === "+" || indicator === "-") {\n        index = computeDestIndex(currIndex + +("" + indicator + (+number || 1)), currIndex);\n      } else if (indicator === ">") {\n        index = number ? toIndex(+number) : getNext(true);\n      } else if (indicator === "<") {\n        index = getPrev(true);\n      }\n    } else {\n      index = isLoop ? control : clamp(control, 0, endIndex);\n    }\n\n    return index;\n  }\n\n  function getAdjacent(prev, destination) {\n    var number = perMove || (hasFocus() ? 1 : perPage);\n    var dest = computeDestIndex(currIndex + number * (prev ? -1 : 1), currIndex, !(perMove || hasFocus()));
1\n\n    if (dest === -1 && isSlide) {\n      if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) {\n        return prev ? 0 : endIndex;\n      }\n    }\n\n    return destination ? dest : loop(dest);\n  }\n\n  function computeDestIndex(dest, from, snapPage) {\n    if (isEnough() || hasFocus()) {\n      var index = computeMovableDestIndex(dest);\n\n      if (index !== dest) {\n        from = dest;\n        dest = index;\n        snapPage = false;\n      }\n\n      if (dest < 0 || dest > endIndex) {\n        if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) {\n          dest = toIndex(toPage(dest));\n        } else {\n          if (isLoop) {\n            dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest;\n          } else if (options.rewind) {\n            dest = dest < 0 ? endIndex : 0;\n          } else {\n            dest = -1;\n          }\n        }\n      } else {\n        if (snapPage && dest !== from) {\n          dest = toIndex(toPage(from) + (dest < from ? -1 : 1));\n        }\n      }\n    } else {\n      dest = -1;\n    }\n\n    return dest;\n  }\n\n  function computeMovableDestIndex(dest) {\n    if (isSlide && options.trimSpace === "move" && dest !== currIndex) {\n      var position = getPosition();\n\n      while (position === toPosition(dest, true) && between(dest, 0, Splide2.length - 1, !options.rewind)) {\n        dest < currIndex ? --dest : ++dest;\n      }\n    }\n\n    return dest;\n  }\n\n  function loop(index) {\n    return isLoop ? (index + slideCount) % slideCount || 0 : index;\n  }\n\n  function getEnd() {\n    var end = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage);\n\n    while (omitEnd && end-- > 0) {\n      if (toPosition(slideCount - 1, true) !== toPosition(end, true)) {\n        end++;\n        break;\n      }\n    }\n\n    return clamp(end, 0, slideCount - 1);\n  }\n\n  function toIndex(page) {\n    return clamp(hasFocus() ? page : perPage * page, 0, endIndex);\n  }\n\n  function toPage(index) {\n    return hasFocus() ? min(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage);\n  }\n\n  function toDest(destination) {\n    var closest = Move.toIndex(destination);\n    return isSlide ? clamp(closest, 0, endIndex) : closest;\n  }\n\n  function setIndex(index) {\n    if (index !== currIndex) {\n      prevIndex = currIndex;\n      currIndex = index;\n    }\n  }\n\n  function getIndex(prev) {\n    return prev ? prevIndex : currIndex;\n  }\n\n  function hasFocus() {\n    return !isUndefined(options.focus) || options.isNavigation;\n  }\n\n  function isBusy() {\n    return Splide2.state.is([MOVING, SCROLLING]) && !!options.waitForTransition;\n  }\n\n  return {\n    mount: mount,\n    go: go,\n    scroll: scroll,\n    getNext: getNext,\n    getPrev: getPrev,\n    getAdjacent: getAdjacent,\n    getEnd: getEnd,\n    setIndex: setIndex,\n    getIndex: getIndex,\n    toIndex: toIndex,\n    toPage: toPage,\n    toDest: toDest,\n    hasFocus: hasFocus,\n    isBusy: isBusy\n  };\n}\n\nvar XML_NAME_SPACE = "http://www.w3.org/2000/svg";\nvar PATH = "m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z";\nvar SIZE = 40;\n\nfunction Arrows(Splide2, Components2, options) {\n  var event = EventInterface(Splide2);\n  var on = event.on,\n      bind = event.bind,\n      emit = event.emit;\n  var classes = options.classes,\n      i18n = options.i18n;\n  var Elements = Components2.Elements,\n      Controller = Components2.Controller;\n  var placeholder = Elements.arrows,\n      track = Elements.track;\n  var wrapper = placeholder;\n  var prev = Elements.prev;\n  var next = Elements.next;\n  var created;\n  var wrapperClasses;\n  var arrows = {};\n\n  function mount() {\n    init();\n    on(EVENT_UPDATED, remount);\n  }\n\n  function remount() {\n    destroy();\n    mount();\n  }\n\n  function init() {\n    var enabled = options.arrows;\n\n    if (enabled && !(prev && next)) {\n      createArrows();\n    }\n\n    if (prev && next) {\n      splide_esm_assign(arrows, {\n        prev: prev,\n        next: next\n      });\n      display(wrapper, enabled ? "" : "none");\n      addClass(wrapper, wrapperClasses = CLASS_ARROWS + "--" + options.direction);\n\n      if (enabled) {\n        listen();\n        update();\n        setAttribute([prev, next], ARIA_CONTROLS, track.id);\n        emit(EVENT_ARROWS_MOUNTED, prev, next);\n      }\n    }\n  }\n\n  function destroy() {\n    event.destroy();\n    removeClass(wrapper, wrapperClasses);\n\n    if (created) {\n      remove(placeholder ? [prev, next] : wrapper);\n      prev = next = null;\n    } else {\n      removeAttribute([prev, next], ALL_ATTRIBUTES);\n    }\n  }\n\n  function listen() {\n    on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update);\n    bind(next, "click", apply(go, ">"));\n    bind(prev, "click", apply(go, "<"));\n  }\n\n  function go(control) {\n    Controller.go(control, true);\n  }\n\n  function createArrows() {\n    wrapper = placeholder || create("div", classes.arrows);\n    prev = createArrow(true);\n    next = createArrow(false);\n    created = true;\n    append(wrapper, [prev, next]);\n    !placeholder && before(wrapper, track);\n  }\n\n  function createArrow(prev2) {\n    var arrow = "<button class=\\"" + classes.arrow + " " + (prev2 ? classes.prev : classes.next) + "\\" type=\\"button\\"><svg xmlns=\\"" + XML_NAME_SPACE + "\\" viewBox=\\"0 0 " + SIZE + " " + SIZE + "\\" width=\\"" + SIZE + "\\" height=\\"" + SIZE + "\\" focusable=\\"fal
1se\\"><path d=\\"" + (options.arrowPath || PATH) + "\\" />";\n    return parseHtml(arrow);\n  }\n\n  function update() {\n    if (prev && next) {\n      var index = Splide2.index;\n      var prevIndex = Controller.getPrev();\n      var nextIndex = Controller.getNext();\n      var prevLabel = prevIndex > -1 && index < prevIndex ? i18n.last : i18n.prev;\n      var nextLabel = nextIndex > -1 && index > nextIndex ? i18n.first : i18n.next;\n      prev.disabled = prevIndex < 0;\n      next.disabled = nextIndex < 0;\n      setAttribute(prev, ARIA_LABEL, prevLabel);\n      setAttribute(next, ARIA_LABEL, nextLabel);\n      emit(EVENT_ARROWS_UPDATED, prev, next, prevIndex, nextIndex);\n    }\n  }\n\n  return {\n    arrows: arrows,\n    mount: mount,\n    destroy: destroy,\n    update: update\n  };\n}\n\nvar INTERVAL_DATA_ATTRIBUTE = DATA_ATTRIBUTE + "-interval";\n\nfunction Autoplay(Splide2, Components2, options) {\n  var _EventInterface6 = EventInterface(Splide2),\n      on = _EventInterface6.on,\n      bind = _EventInterface6.bind,\n      emit = _EventInterface6.emit;\n\n  var interval = RequestInterval(options.interval, Splide2.go.bind(Splide2, ">"), onAnimationFrame);\n  var isPaused = interval.isPaused;\n  var Elements = Components2.Elements,\n      _Components2$Elements4 = Components2.Elements,\n      root = _Components2$Elements4.root,\n      toggle = _Components2$Elements4.toggle;\n  var autoplay = options.autoplay;\n  var hovered;\n  var focused;\n  var stopped = autoplay === "pause";\n\n  function mount() {\n    if (autoplay) {\n      listen();\n      toggle && setAttribute(toggle, ARIA_CONTROLS, Elements.track.id);\n      stopped || play();\n      update();\n    }\n  }\n\n  function listen() {\n    if (options.pauseOnHover) {\n      bind(root, "mouseenter mouseleave", function (e) {\n        hovered = e.type === "mouseenter";\n        autoToggle();\n      });\n    }\n\n    if (options.pauseOnFocus) {\n      bind(root, "focusin focusout", function (e) {\n        focused = e.type === "focusin";\n        autoToggle();\n      });\n    }\n\n    if (toggle) {\n      bind(toggle, "click", function () {\n        stopped ? play() : pause(true);\n      });\n    }\n\n    on([EVENT_MOVE, EVENT_SCROLL, EVENT_REFRESH], interval.rewind);\n    on(EVENT_MOVE, onMove);\n  }\n\n  function play() {\n    if (isPaused() && Components2.Slides.isEnough()) {\n      interval.start(!options.resetProgress);\n      focused = hovered = stopped = false;\n      update();\n      emit(EVENT_AUTOPLAY_PLAY);\n    }\n  }\n\n  function pause(stop) {\n    if (stop === void 0) {\n      stop = true;\n    }\n\n    stopped = !!stop;\n    update();\n\n    if (!isPaused()) {\n      interval.pause();\n      emit(EVENT_AUTOPLAY_PAUSE);\n    }\n  }\n\n  function autoToggle() {\n    if (!stopped) {\n      hovered || focused ? pause(false) : play();\n    }\n  }\n\n  function update() {\n    if (toggle) {\n      toggleClass(toggle, CLASS_ACTIVE, !stopped);\n      setAttribute(toggle, ARIA_LABEL, options.i18n[stopped ? "play" : "pause"]);\n    }\n  }\n\n  function onAnimationFrame(rate) {\n    var bar = Elements.bar;\n    bar && style(bar, "width", rate * 100 + "%");\n    emit(EVENT_AUTOPLAY_PLAYING, rate);\n  }\n\n  function onMove(index) {\n    var Slide = Components2.Slides.getAt(index);\n    interval.set(Slide && +getAttribute(Slide.slide, INTERVAL_DATA_ATTRIBUTE) || options.interval);\n  }\n\n  return {\n    mount: mount,\n    destroy: interval.cancel,\n    play: play,\n    pause: pause,\n    isPaused: isPaused\n  };\n}\n\nfunction Cover(Splide2, Components2, options) {\n  var _EventInterface7 = EventInterface(Splide2),\n      on = _EventInterface7.on;\n\n  function mount() {\n    if (options.cover) {\n      on(EVENT_LAZYLOAD_LOADED, apply(toggle, true));\n      on([EVENT_MOUNTED, EVENT_UPDATED, EVENT_REFRESH], apply(cover, true));\n    }\n  }\n\n  function cover(cover2) {\n    Components2.Slides.forEach(function (Slide) {\n      var img = child(Slide.container || Slide.slide, "img");\n\n      if (img && img.src) {\n        toggle(cover2, img, Slide);\n      }\n    });\n  }\n\n  function toggle(cover2, img, Slide) {\n    Slide.style("background", cover2 ? "center/cover no-repeat url(\\"" + img.src + "\\")" : "", true);\n    display(img, cover2 ? "none" : "");\n  }\n\n  return {\n    mount: mount,\n    destroy: apply(cover, false)\n  };\n}\n\nvar BOUNCE_DIFF_THRESHOLD = 10;\nvar BOUNCE_DURATION = 600;
1\nvar FRICTION_FACTOR = 0.6;\nvar BASE_VELOCITY = 1.5;\nvar MIN_DURATION = 800;\n\nfunction Scroll(Splide2, Components2, options) {\n  var _EventInterface8 = EventInterface(Splide2),\n      on = _EventInterface8.on,\n      emit = _EventInterface8.emit;\n\n  var set = Splide2.state.set;\n  var Move = Components2.Move;\n  var getPosition = Move.getPosition,\n      getLimit = Move.getLimit,\n      exceededLimit = Move.exceededLimit,\n      translate = Move.translate;\n  var isSlide = Splide2.is(SLIDE);\n  var interval;\n  var callback;\n  var friction = 1;\n\n  function mount() {\n    on(EVENT_MOVE, clear);\n    on([EVENT_UPDATED, EVENT_REFRESH], cancel);\n  }\n\n  function scroll(destination, duration, snap, onScrolled, noConstrain) {\n    var from = getPosition();\n    clear();\n\n    if (snap && (!isSlide || !exceededLimit())) {\n      var size = Components2.Layout.sliderSize();\n      var offset = sign(destination) * size * floor(abs(destination) / size) || 0;\n      destination = Move.toPosition(Components2.Controller.toDest(destination % size)) + offset;\n    }\n\n    var noDistance = approximatelyEqual(from, destination, 1);\n    friction = 1;\n    duration = noDistance ? 0 : duration || max(abs(destination - from) / BASE_VELOCITY, MIN_DURATION);\n    callback = onScrolled;\n    interval = RequestInterval(duration, onEnd, apply(update, from, destination, noConstrain), 1);\n    set(SCROLLING);\n    emit(EVENT_SCROLL);\n    interval.start();\n  }\n\n  function onEnd() {\n    set(IDLE);\n    callback && callback();\n    emit(EVENT_SCROLLED);\n  }\n\n  function update(from, to, noConstrain, rate) {\n    var position = getPosition();\n    var target = from + (to - from) * easing(rate);\n    var diff = (target - position) * friction;\n    translate(position + diff);\n\n    if (isSlide && !noConstrain && exceededLimit()) {\n      friction *= FRICTION_FACTOR;\n\n      if (abs(diff) < BOUNCE_DIFF_THRESHOLD) {\n        scroll(getLimit(exceededLimit(true)), BOUNCE_DURATION, false, callback, true);\n      }\n    }\n  }\n\n  function clear() {\n    if (interval) {\n      interval.cancel();\n    }\n  }\n\n  function cancel() {\n    if (interval && !interval.isPaused()) {\n      clear();\n      onEnd();\n    }\n  }\n\n  function easing(t) {\n    var easingFunc = options.easingFunc;\n    return easingFunc ? easingFunc(t) : 1 - Math.pow(1 - t, 4);\n  }\n\n  return {\n    mount: mount,\n    destroy: clear,\n    scroll: scroll,\n    cancel: cancel\n  };\n}\n\nvar SCROLL_LISTENER_OPTIONS = {\n  passive: false,\n  capture: true\n};\n\nfunction Drag(Splide2, Components2, options) {\n  var _EventInterface9 = EventInterface(Splide2),\n      on = _EventInterface9.on,\n      emit = _EventInterface9.emit,\n      bind = _EventInterface9.bind,\n      unbind = _EventInterface9.unbind;\n\n  var state = Splide2.state;\n  var Move = Components2.Move,\n      Scroll = Components2.Scroll,\n      Controller = Components2.Controller,\n      track = Components2.Elements.track,\n      reduce = Components2.Media.reduce;\n  var _Components2$Directio2 = Components2.Direction,\n      resolve = _Components2$Directio2.resolve,\n      orient = _Components2$Directio2.orient;\n  var getPosition = Move.getPosition,\n      exceededLimit = Move.exceededLimit;\n  var basePosition;\n  var baseEvent;\n  var prevBaseEvent;\n  var isFree;\n  var dragging;\n  var exceeded = false;\n  var clickPrevented;\n  var disabled;\n  var target;\n\n  function mount() {\n    bind(track, POINTER_MOVE_EVENTS, noop, SCROLL_LISTENER_OPTIONS);\n    bind(track, POINTER_UP_EVENTS, noop, SCROLL_LISTENER_OPTIONS);\n    bind(track, POINTER_DOWN_EVENTS, onPointerDown, SCROLL_LISTENER_OPTIONS);\n    bind(track, "click", onClick, {\n      capture: true\n    });\n    bind(track, "dragstart", prevent);\n    on([EVENT_MOUNTED, EVENT_UPDATED], init);\n  }\n\n  function init() {\n    var drag = options.drag;\n    disable(!drag);\n    isFree = drag === "free";\n  }\n\n  function onPointerDown(e) {\n    clickPrevented = false;\n\n    if (!disabled) {\n      var isTouch = isTouchEvent(e);\n\n      if (isDraggable(e.target) && (isTouch || !e.button)) {\n        if (!Controller.isBusy()) {\n          target = isTouch ? track : window;\n          dragging = state.is([MOVING, SCROLLING]);\n          prevBaseEvent = null;
1\n          bind(target, POINTER_MOVE_EVENTS, onPointerMove, SCROLL_LISTENER_OPTIONS);\n          bind(target, POINTER_UP_EVENTS, onPointerUp, SCROLL_LISTENER_OPTIONS);\n          Move.cancel();\n          Scroll.cancel();\n          save(e);\n        } else {\n          prevent(e, true);\n        }\n      }\n    }\n  }\n\n  function onPointerMove(e) {\n    if (!state.is(DRAGGING)) {\n      state.set(DRAGGING);\n      emit(EVENT_DRAG);\n    }\n\n    if (e.cancelable) {\n      if (dragging) {\n        Move.translate(basePosition + constrain(diffCoord(e)));\n        var expired = diffTime(e) > LOG_INTERVAL;\n        var hasExceeded = exceeded !== (exceeded = exceededLimit());\n\n        if (expired || hasExceeded) {\n          save(e);\n        }\n\n        clickPrevented = true;\n        emit(EVENT_DRAGGING);\n        prevent(e);\n      } else if (isSliderDirection(e)) {\n        dragging = shouldStart(e);\n        prevent(e);\n      }\n    }\n  }\n\n  function onPointerUp(e) {\n    if (state.is(DRAGGING)) {\n      state.set(IDLE);\n      emit(EVENT_DRAGGED);\n    }\n\n    if (dragging) {\n      move(e);\n      prevent(e);\n    }\n\n    unbind(target, POINTER_MOVE_EVENTS, onPointerMove);\n    unbind(target, POINTER_UP_EVENTS, onPointerUp);\n    dragging = false;\n  }\n\n  function onClick(e) {\n    if (!disabled && clickPrevented) {\n      prevent(e, true);\n    }\n  }\n\n  function save(e) {\n    prevBaseEvent = baseEvent;\n    baseEvent = e;\n    basePosition = getPosition();\n  }\n\n  function move(e) {\n    var velocity = computeVelocity(e);\n    var destination = computeDestination(velocity);\n    var rewind = options.rewind && options.rewindByDrag;\n    reduce(false);\n\n    if (isFree) {\n      Controller.scroll(destination, 0, options.snap);\n    } else if (Splide2.is(FADE)) {\n      Controller.go(orient(sign(velocity)) < 0 ? rewind ? "<" : "-" : rewind ? ">" : "+");\n    } else if (Splide2.is(SLIDE) && exceeded && rewind) {\n      Controller.go(exceededLimit(true) ? ">" : "<");\n    } else {\n      Controller.go(Controller.toDest(destination), true);\n    }\n\n    reduce(true);\n  }\n\n  function shouldStart(e) {\n    var thresholds = options.dragMinThreshold;\n    var isObj = isObject(thresholds);\n    var mouse = isObj && thresholds.mouse || 0;\n    var touch = (isObj ? thresholds.touch : +thresholds) || 10;\n    return abs(diffCoord(e)) > (isTouchEvent(e) ? touch : mouse);\n  }\n\n  function isSliderDirection(e) {\n    return abs(diffCoord(e)) > abs(diffCoord(e, true));\n  }\n\n  function computeVelocity(e) {\n    if (Splide2.is(LOOP) || !exceeded) {\n      var time = diffTime(e);\n\n      if (time && time < LOG_INTERVAL) {\n        return diffCoord(e) / time;\n      }\n    }\n\n    return 0;\n  }\n\n  function computeDestination(velocity) {\n    return getPosition() + sign(velocity) * min(abs(velocity) * (options.flickPower || 600), isFree ? Infinity : Components2.Layout.listSize() * (options.flickMaxPages || 1));\n  }\n\n  function diffCoord(e, orthogonal) {\n    return coordOf(e, orthogonal) - coordOf(getBaseEvent(e), orthogonal);\n  }\n\n  function diffTime(e) {\n    return timeOf(e) - timeOf(getBaseEvent(e));\n  }\n\n  function getBaseEvent(e) {\n    return baseEvent === e && prevBaseEvent || baseEvent;\n  }\n\n  function coordOf(e, orthogonal) {\n    return (isTouchEvent(e) ? e.changedTouches[0] : e)["page" + resolve(orthogonal ? "Y" : "X")];\n  }\n\n  function constrain(diff) {\n    return diff / (exceeded && Splide2.is(SLIDE) ? FRICTION : 1);\n  }\n\n  function isDraggable(target2) {\n    var noDrag = options.noDrag;\n    return !matches(target2, "." + CLASS_PAGINATION_PAGE + ", ." + CLASS_ARROW) && (!noDrag || !matches(target2, noDrag));\n  }\n\n  function isTouchEvent(e) {\n    return typeof TouchEvent !== "undefined" && e instanceof TouchEvent;\n  }\n\n  function isDragging() {\n    return dragging;\n  }\n\n  function disable(value) {\n    disabled = value;\n  }\n\n  return {\n    mount: mount,\n    disable: disable,\n    isDragging: isDragging\n  };\n}\n\nvar NORMALIZATION_MAP = {\n  Spacebar: " ",\n  Right: ARROW_RIGHT,\n  Left: ARROW_LEFT,\n  Up: ARROW_UP,\n  Down: ARROW_DOWN\n};\n\nfunction normalizeKey(key) {\n  key = isString(key) ? key : key.key;\n  return NORMALIZATION_MAP[key] || key;\n}\n\nvar KEYBOARD_EVENT = "keydown";\n\nfunction Keyboard(Splide2, Components2, options) {\n  var _EventInterface10 = EventInterface(Splide2),\n      on = _EventInterface10.on,\n      bind = _EventInterface10.bind,\n      unbind = _EventInterface10.unbind;\n\n  var root = Splide2.root;\n  var resolve = Components2.Direction.resolve;\n  var target;\n  var disabled;\n\n  function mount() {\n    init();\n    on(EVENT_UPDATED, destroy);\n    on(EVENT_UPDATED, init);\n    on(EVENT_MOVE, onMove);\n  }
1\n\n  function init() {\n    var keyboard = options.keyboard;\n\n    if (keyboard) {\n      target = keyboard === "global" ? window : root;\n      bind(target, KEYBOARD_EVENT, onKeydown);\n    }\n  }\n\n  function destroy() {\n    unbind(target, KEYBOARD_EVENT);\n  }\n\n  function disable(value) {\n    disabled = value;\n  }\n\n  function onMove() {\n    var _disabled = disabled;\n    disabled = true;\n    nextTick(function () {\n      disabled = _disabled;\n    });\n  }\n\n  function onKeydown(e) {\n    if (!disabled) {\n      var key = normalizeKey(e);\n\n      if (key === resolve(ARROW_LEFT)) {\n        Splide2.go("<");\n      } else if (key === resolve(ARROW_RIGHT)) {\n        Splide2.go(">");\n      }\n    }\n  }\n\n  return {\n    mount: mount,\n    destroy: destroy,\n    disable: disable\n  };\n}\n\nvar SRC_DATA_ATTRIBUTE = DATA_ATTRIBUTE + "-lazy";\nvar SRCSET_DATA_ATTRIBUTE = SRC_DATA_ATTRIBUTE + "-srcset";\nvar IMAGE_SELECTOR = "[" + SRC_DATA_ATTRIBUTE + "], [" + SRCSET_DATA_ATTRIBUTE + "]";\n\nfunction LazyLoad(Splide2, Components2, options) {\n  var _EventInterface11 = EventInterface(Splide2),\n      on = _EventInterface11.on,\n      off = _EventInterface11.off,\n      bind = _EventInterface11.bind,\n      emit = _EventInterface11.emit;\n\n  var isSequential = options.lazyLoad === "sequential";\n  var events = [EVENT_MOVED, EVENT_SCROLLED];\n  var entries = [];\n\n  function mount() {\n    if (options.lazyLoad) {\n      init();\n      on(EVENT_REFRESH, init);\n    }\n  }\n\n  function init() {\n    empty(entries);\n    register();\n\n    if (isSequential) {\n      loadNext();\n    } else {\n      off(events);\n      on(events, check);\n      check();\n    }\n  }\n\n  function register() {\n    Components2.Slides.forEach(function (Slide) {\n      queryAll(Slide.slide, IMAGE_SELECTOR).forEach(function (img) {\n        var src = getAttribute(img, SRC_DATA_ATTRIBUTE);\n        var srcset = getAttribute(img, SRCSET_DATA_ATTRIBUTE);\n\n        if (src !== img.src || srcset !== img.srcset) {\n          var className = options.classes.spinner;\n          var parent = img.parentElement;\n          var spinner = child(parent, "." + className) || create("span", className, parent);\n          entries.push([img, Slide, spinner]);\n          img.src || display(img, "none");\n        }\n      });\n    });\n  }\n\n  function check() {\n    entries = entries.filter(function (data) {\
1n      var distance = options.perPage * ((options.preloadPages || 1) + 1) - 1;\n      return data[1].isWithin(Splide2.index, distance) ? load(data) : true;\n    });\n    entries.length || off(events);\n  }\n\n  function load(data) {\n    var img = data[0];\n    addClass(data[1].slide, CLASS_LOADING);\n    bind(img, "load error", apply(onLoad, data));\n    setAttribute(img, "src", getAttribute(img, SRC_DATA_ATTRIBUTE));\n    setAttribute(img, "srcset", getAttribute(img, SRCSET_DATA_ATTRIBUTE));\n    removeAttribute(img, SRC_DATA_ATTRIBUTE);\n    removeAttribute(img, SRCSET_DATA_ATTRIBUTE);\n  }\n\n  function onLoad(data, e) {\n    var img = data[0],\n        Slide = data[1];\n    removeClass(Slide.slide, CLASS_LOADING);\n\n    if (e.type !== "error") {\n      remove(data[2]);\n      display(img, "");\n      emit(EVENT_LAZYLOAD_LOADED, img, Slide);\n      emit(EVENT_RESIZE);\n    }\n\n    isSequential && loadNext();\n  }\n\n  function loadNext() {\n    entries.length && load(entries.shift());\n  }\n\n  return {\n    mount: mount,\n    destroy: apply(empty, entries),\n    check: check\n  };\n}\n\nfunction Pagination(Splide2, Components2, options) {\n  var event = EventInterface(Splide2);\n  var on = event.on,\n      emit = event.emit,\n      bind = event.bind;\n  var Slides = Components2.Slides,\n      Elements = Components2.Elements,\n      Controller = Components2.Controller;\n  var hasFocus = Controller.hasFocus,\n      getIndex = Controller.getIndex,\n      go = Controller.go;\n  var resolve = Components2.Direction.resolve;\n  var placeholder = Elements.pagination;\n  var items = [];\n  var list;\n  var paginationClasses;\n\n  function mount() {\n    destroy();\n    on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], mount);\n    var enabled = options.pagination;\n    placeholder && display(placeholder, enabled ? "" : "none");\n\n    if (enabled) {\n      on([EVENT_MOVE, EVENT_SCROLL, EVENT_SCROLLED], update);\n      createPagination();\n      update();\n      emit(EVENT_PAGINATION_MOUNTED, {\n        list: list,\n        items: items\n      }, getAt(Splide2.index));\n    }\n  }\n\n  function destroy() {\n    if (list) {\n      remove(placeholder ? slice(list.children) : list);\n      removeClass(list, paginationClasses);\n      empty(items);\n      list = null;\n    }\n\n    event.destroy();\n  }\n\n  function createPagination() {\n    var length = Splide2.length;\n    var classes = options.classes,\n        i18n = options.i18n,\n        perPage = options.perPage;\n    var max = hasFocus() ? Controller.getEnd() + 1 : ceil(length / perPage);\n    list = placeholder || create("ul", classes.pagination, Elements.track.parentElement);\n    addClass(list, paginationClasses = CLASS_PAGINATION + "--" + getDirection());\n    setAttribute(list, ROLE, "tablist");\n    setAttribute(list, ARIA_LABEL, i18n.select);\n    setAttribute(list, ARIA_ORIENTATION, getDirection() === TTB ? "vertical" : "");\n\n    for (var i = 0; i < max; i++) {\n      var li = create("li", null, list);\n      var button = create("button", {\n        class: classes.page,\n        type: "button"\n      }, li);\n      var controls = Slides.getIn(i).map(function (Slide) {\n        return Slide.slide.id;\n      });\n      var text = !hasFocus() && perPage > 1 ? i18n.pageX : i18n.slideX;\n      bind(button, "click", apply(onClick, i));\n\n      if (options.paginationKeyboard) {\n        bind(button, "keydown", apply(onKeydown, i));\n      }\n\n      setAttribute(li, ROLE, "presentation");\n      setAttribute(button, ROLE, "tab");\n      setAttribute(button, ARIA_CONTROLS, controls.join(" "));\n      setAttribute(button, ARIA_LABEL, format(text, i + 1));\n      setAttribute(button, TAB_INDEX, -1);\n      items.push({\n        li: li,\n        button: button,\n        page: i\n      });\n    }\n  }\n\n  function onClick(page) {\n    go(">" + page, true);\n  }\n\n  function onKeydown(page, e) {\n    var length = items.length;\n    var key = normalizeKey(e);\n    var dir = getDirection();\n    var nextPage = -1;\n\n    if (key === resolve(ARROW_RIGHT, false, dir)) {\n      nextPage = ++page % length;\n    } else if (key === resolve(ARROW_LEFT, false, dir)) {\n      nextPage = (--page + length) % length;\n    } else if (key === "Home") {\n      nextPage = 0;\n    } else if (key === "End") {\n      nextPage = length - 1;\n    }\n\n    var item = items[nextPage];\n\n    if (item) {\n      splide_esm_focus(item.button);\n      go(">" + nextPage);\n      prevent(e, true);\n    }\n  }
1\n\n  function getDirection() {\n    return options.paginationDirection || options.direction;\n  }\n\n  function getAt(index) {\n    return items[Controller.toPage(index)];\n  }\n\n  function update() {\n    var prev = getAt(getIndex(true));\n    var curr = getAt(getIndex());\n\n    if (prev) {\n      var button = prev.button;\n      removeClass(button, CLASS_ACTIVE);\n      removeAttribute(button, ARIA_SELECTED);\n      setAttribute(button, TAB_INDEX, -1);\n    }\n\n    if (curr) {\n      var _button = curr.button;\n      addClass(_button, CLASS_ACTIVE);\n      setAttribute(_button, ARIA_SELECTED, true);\n      setAttribute(_button, TAB_INDEX, "");\n    }\n\n    emit(EVENT_PAGINATION_UPDATED, {\n      list: list,\n      items: items\n    }, prev, curr);\n  }\n\n  return {\n    items: items,\n    mount: mount,\n    destroy: destroy,\n    getAt: getAt,\n    update: update\n  };\n}\n\nvar TRIGGER_KEYS = [" ", "Enter"];\n\nfunction Sync(Splide2, Components2, options) {\n  var isNavigation = options.isNavigation,\n      slideFocus = options.slideFocus;\n  var events = [];\n\n  function mount() {\n    Splide2.splides.forEach(function (target) {\n      if (!target.isParent) {\n        sync(Splide2, target.splide);\n        sync(target.splide, Splide2);\n      }\n    });\n\n    if (isNavigation) {\n      navigate();\n    }\n  }\n\n  function destroy() {\n    events.forEach(function (event) {\n      event.destroy();\n    });\n    empty(events);\n  }\n\n  function remount() {\n    destroy();\n    mount();\n  }\n\n  function sync(splide, target) {\n    var event = EventInterface(splide);\n    event.on(EVENT_MOVE, function (index, prev, dest) {\n      target.go(target.is(LOOP) ? dest : index);\n    });\n    events.push(event);\n  }\n\n  function navigate() {\n    var event = EventInterface(Splide2);\n    var on = event.on;\n    on(EVENT_CLICK, onClick);\n    on(EVENT_SLIDE_KEYDOWN, onKeydown);\n    on([EVENT_MOUNTED, EVENT_UPDATED], update);\n    events.push(event);\n    event.emit(EVENT_NAVIGATION_MOUNTED, Splide2.splides);\n  }\n\n  function update() {\n    setAttribute(Components2.Elements.list, ARIA_ORIENTATION, options.direction === TTB ? "vertical" : "");\n  }\n\n  function onClick(Slide) {\n    Splide2.go(Slide.index);\n  }\n\n  function onKeydown(Slide, e) {\n    if (includes(TRIGGER_KEYS, normalizeKey(e))) {\n      onClick(Slide);\n      prevent(e);\n    }\n  }\n\n  return {\n    setup: apply(Components2.Media.set, {\n      slideFocus: isUndefined(slideFocus) ? isNavigation : slideFocus\n    }, true),\n    mount: mount,\n    destroy: destroy,\n    remount: remount\n  };\n}\n\nfunction Wheel(Splide2, Components2, options) {\n  var _EventInterface12 = EventInterface(Splide2),\n      bind = _EventInterface12.bind;\n\n  var lastTime = 0;\n\n  function mount() {\n    if (options.wheel) {\n      bind(Components2.Elements.track, "wheel", onWheel, SCROLL_LISTENER_OPTIONS);\n    }\n  }\n\n  function onWheel(e) {\n    if (e.cancelable) {\n      var deltaY = e.deltaY;\n      var backwards = deltaY < 0;\n      var timeStamp = timeOf(e);\n\n      var _min = options.wheelMinThreshold || 0;\n\n      var sleep = options.wheelSleep || 0;\n\n      if (abs(deltaY) > _min && timeStamp - lastTime > sleep) {\n        Splide2.go(backwards ? "<" : ">");\n        lastTime = timeStamp;\n      }\n\n      shouldPrevent(backwards) && prevent(e);\n    }\n  }\n\n  function shouldPrevent(backwards) {\n    return !options.releaseWheel || Splide2.state.is(MOVING) || Components2.Controller.getAdjacent(backwards) !== -1;\n  }\n\n  return {\n    mount: mount\n  };\n}\n\nvar SR_REMOVAL_DELAY = 90;\n\nfunction Live(Splide2, Components2, options) {\n  var _EventInterface13 = EventInterface(Splide2),\n      on = _EventInterface13.on;\n\n  var track = Components2.Elements.track;\n  var enabled = options.live && !options.isNavigation;\n  var sr = create("span", CLASS_SR);\n  var interval = RequestInterval(SR_REMOVAL_DELAY, apply(toggle, false));\n\n  function mount() {\n    if (enabled) {\n      disable(!Components2.Autoplay.isPaused());\n      setAttribute(track, ARIA_ATOMIC, true);\n      sr.textContent = "\\u2026";\n      on(EVENT_AUTOPLAY_PLAY, apply(disable, true));\n      on(EVENT_AUTOPLAY_PAUSE, apply(disable, false));\n      on([EVENT_MOVED, EVENT_SCROLLED], apply(toggle, true));\n    }\n  }\n\n  function toggle(active) {\n    setAttribute(track, ARIA_BUSY, active);\n\n    if (active) {\n      append(track, sr);\n      interval.start();\n    } else {\n      remove(sr);\n      interval.cancel();\n    }\n  }\n\n  function destroy() {\n    removeAttribute(track, [ARIA_LIVE, ARIA_ATOMIC, ARIA_BUSY]);\n    remove(sr);\n  }\n\n  function disable(disabled) {\n    if (enabled) {\n      setAttribute(track, ARIA_LIVE, disabled ? "off" : "polite");\n    }\n  }\n\n  return {\n    mount: mount,\n    disable: disable,\n    destroy: destroy\n  };\n}\n\nvar ComponentConstructors = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  Media: Media,\n  Direction: Direction,\n  Elements: Elements,\n  Slides: Slides,\n  Layout: Layout,\n  Clones: Clones,\n  Move: Move,\n  Controller: Controller,\n  Arrows: Arrows,\n  Autoplay: Autoplay,\n  Cover: Cover,\n  Scroll: Scroll,\n  Drag: Drag,\n  Keyboard: Keyboard,\n  LazyLoad: LazyLoad,\n  Pagination: Pagination,\n  Sync: Sync,\n  Wheel: Wheel,\n  Live: Live\n});\nvar I18N = {\n  prev: "Previous slide",\n  next: "Next slide",\n  first: "Go to first slide",\n  last: "Go to last slide",\n  slideX: "Go to slide %s",\n  pageX: "Go to page %s",\n  play: "Start autoplay",\n  pause: "Pause autoplay",\n  carousel: "carousel",\n  slide: "slide",\n  select: "Select a slide to show",\n  slideLabel: "%s of %s"\n};
1\nvar DEFAULTS = {\n  type: "slide",\n  role: "region",\n  speed: 400,\n  perPage: 1,\n  cloneStatus: true,\n  arrows: true,\n  pagination: true,\n  paginationKeyboard: true,\n  interval: 5e3,\n  pauseOnHover: true,\n  pauseOnFocus: true,\n  resetProgress: true,\n  easing: "cubic-bezier(0.25, 1, 0.5, 1)",\n  drag: true,\n  direction: "ltr",\n  trimSpace: true,\n  focusableNodes: "a, button, textarea, input, select, iframe",\n  live: true,\n  classes: CLASSES,\n  i18n: I18N,\n  reducedMotion: {\n    speed: 0,\n    rewindSpeed: 0,\n    autoplay: "pause"\n  }\n};\n\nfunction Fade(Splide2, Components2, options) {\n  var Slides = Components2.Slides;\n\n  function mount() {\n    EventInterface(Splide2).on([EVENT_MOUNTED, EVENT_REFRESH], init);\n  }\n\n  function init() {\n    Slides.forEach(function (Slide) {\n      Slide.style("transform", "translateX(-" + 100 * Slide.index + "%)");\n    });\n  }\n\n  function start(index, done) {\n    Slides.style("transition", "opacity " + options.speed + "ms " + options.easing);\n    nextTick(done);\n  }\n\n  return {\n    mount: mount,\n    start: start,\n    cancel: noop\n  };\n}\n\nfunction Slide(Splide2, Components2, options) {\n  var Move = Components2.Move,\n      Controller = Components2.Controller,\n      Scroll = Components2.Scroll;\n  var list = Components2.Elements.list;\n  var transition = apply(style, list, "transition");\n  var endCallback;\n\n  function mount() {\n    EventInterface(Splide2).bind(list, "transitionend", function (e) {\n      if (e.target === list && endCallback) {\n        cancel();\n        endCallback();\n      }\n    });\n  }\n\n  function start(index, done) {\n    var destination = Move.toPosition(index, true);\n    var position = Move.getPosition();\n    var speed = getSpeed(index);\n\n    if (abs(destination - position) >= 1 && speed >= 1) {\n      if (options.useScroll) {\n        Scroll.scroll(destination, speed, false, done);\n      } else {\n        transition("transform " + speed + "ms " + options.easing);\n        Move.translate(destination, true);\n        endCallback = done;\n      }\n    } else {\n      Move.jump(index);\n      done();\n    }\n  }\n\n  function cancel() {\n    transition("");\n    Scroll.cancel();\n  }\n\n  function getSpeed(index) {\n    var rewindSpeed = options.rewindSpeed;\n\n    if (Splide2.is(SLIDE) && rewindSpeed) {\n      var prev = Controller.getIndex(true);\n      var end = Controller.getEnd();\n\n      if (prev === 0 && index >= end || prev >= end && index === 0) {\n        return rewindSpeed;\n      }\n    }\n\n    return options.speed;\n  }\n\n  return {\n    mount: mount,\n    start: start,\n    cancel: cancel\n  };\n}\n\nvar _Splide = /*#__PURE__*/function () {\n  function _Splide(target, options) {\n    this.event = EventInterface();\n    this.Components = {};\n    this.state = State(CREATED);\n    this.splides = [];\n    this._o = {};\n    this._E = {};\n    var root = isString(target) ? query(document, target) : target;\n    assert(root, root + " is invalid.");\n    this.root = root;\n    options = merge({\n      label: getAttribute(root, ARIA_LABEL) || "",\n      labelledby: getAttribute(root, ARIA_LABELLEDBY) || ""\n    }, DEFAULTS, _Splide.defaults, options || {});\n\n    try {\n      merge(options, JSON.parse(getAttribute(root, DATA_ATTRIBUTE)));\n    } catch (e) {\n      assert(false, "Invalid JSON");\n    }\n\n    this._o = Object.create(merge({}, options));\n  }\n\n  var _proto = _Splide.prototype;\n\n  _proto.mount = function mount(Extensions, Transition) {\n    var _this = this;\n\n    var state = this.state,\n        Components2 = this.Components;\n    assert(state.is([CREATED, DESTROYED]), "Already mounted!");\n    state.set(CREATED);\n    this._C = Components2;\n    this._T = Transition || this._T || (this.is(FADE) ? Fade : Slide);\n    this._E = Extensions || this._E;\n    var Constructors = splide_esm_assign({}, ComponentConstructors, this._E, {\n      Transition: this._T\n    });\n    forOwn(Constructors, function (Component, key) {\n      var component = Component(_this, Components2, _this._o);\n      Components2[key] = component;\n      component.setup && component.setup();\n    });\n    forOwn(Components2, function (component) {\n      component.mount && component.mount();\n    });
1\n    this.emit(EVENT_MOUNTED);\n    addClass(this.root, CLASS_INITIALIZED);\n    state.set(IDLE);\n    this.emit(EVENT_READY);\n    return this;\n  };\n\n  _proto.sync = function sync(splide) {\n    this.splides.push({\n      splide: splide\n    });\n    splide.splides.push({\n      splide: this,\n      isParent: true\n    });\n\n    if (this.state.is(IDLE)) {\n      this._C.Sync.remount();\n\n      splide.Components.Sync.remount();\n    }\n\n    return this;\n  };\n\n  _proto.go = function go(control) {\n    this._C.Controller.go(control);\n\n    return this;\n  };\n\n  _proto.on = function on(events, callback) {\n    this.event.on(events, callback);\n    return this;\n  };\n\n  _proto.off = function off(events) {\n    this.event.off(events);\n    return this;\n  };\n\n  _proto.emit = function emit(event) {\n    var _this$event;\n\n    (_this$event = this.event).emit.apply(_this$event, [event].concat(slice(arguments, 1)));\n\n    return this;\n  };\n\n  _proto.add = function add(slides, index) {\n    this._C.Slides.add(slides, index);\n\n    return this;\n  };\n\n  _proto.remove = function remove(matcher) {\n    this._C.Slides.remove(matcher);\n\n    return this;\n  };\n\n  _proto.is = function is(type) {\n    return this._o.type === type;\n  };\n\n  _proto.refresh = function refresh() {\n    this.emit(EVENT_REFRESH);\n    return this;\n  };\n\n  _proto.destroy = function destroy(completely) {\n    if (completely === void 0) {\n      completely = true;\n    }\n\n    var event = this.event,\n        state = this.state;\n\n    if (state.is(CREATED)) {\n      EventInterface(this).on(EVENT_READY, this.destroy.bind(this, completely));\n    } else {\n      forOwn(this._C, function (component) {\n        component.destroy && component.destroy(completely);\n      }, true);\n      event.emit(EVENT_DESTROY);\n      event.destroy();\n      completely && empty(this.splides);\n      state.set(DESTROYED);\n    }\n\n    return this;\n  };\n\n  _createClass(_Splide, [{\n    key: "options",\n    get: function get() {\n      return this._o;\n    },\n    set: function set(options) {\n      this._C.Media.set(options, true, true);\n    }\n  }, {\n    key: "length",\n    get: function get() {\n      return this._C.Slides.getLength(true);\n    }\n  }, {\n    key: "index",\n    get: function get() {\n      return this._C.Controller.getIndex();\n    }\n  }]);\n\n  return _Splide;\n}();\n\nvar Splide = _Splide;\nSplide.defaults = {};\nSplide.STATES = STATES;\nvar CLASS_RENDERED = "is-rendered";\nvar RENDERER_DEFAULT_CONFIG = {\n  listTag: "ul",\n  slideTag: "li"\n};\n\nvar Style = /*#__PURE__*/(/* unused pure expression or super */ null && (function () {\n  function Style(id, options) {\n    this.styles = {};\n    this.id = id;\n    this.options = options;\n  }\n\n  var _proto2 = Style.prototype;\n\n  _proto2.rule = function rule(selector, prop, value, breakpoint) {\n    breakpoint = breakpoint || "default";\n    var selectors = this.styles[breakpoint] = this.styles[breakpoint] || {};\n    var styles = selectors[selector] = selectors[selector] || {};\n    styles[prop] = value;\n  };\n\n  _proto2.build = function build() {\n    var _this2 = this;\n\n    var css = "";\n\n    if (this.styles.default) {\n      css += this.buildSelectors(this.styles.default);\n    }\n\n    Object.keys(this.styles).sort(function (n, m) {\n      return _this2.options.mediaQuery === "min" ? +n - +m : +m - +n;\n    }
1).forEach(function (breakpoint) {\n      if (breakpoint !== "default") {\n        css += "@media screen and (max-width: " + breakpoint + "px) {";\n        css += _this2.buildSelectors(_this2.styles[breakpoint]);\n        css += "}";\n      }\n    });\n    return css;\n  };\n\n  _proto2.buildSelectors = function buildSelectors(selectors) {\n    var _this3 = this;\n\n    var css = "";\n    forOwn(selectors, function (styles, selector) {\n      selector = ("#" + _this3.id + " " + selector).trim();\n      css += selector + " {";\n      forOwn(styles, function (value, prop) {\n        if (value || value === 0) {\n          css += prop + ": " + value + ";";\n        }\n      });\n      css += "}";\n    });\n    return css;\n  };\n\n  return Style;\n}()));\n\nvar SplideRenderer = /*#__PURE__*/(/* unused pure expression or super */ null && (function () {\n  function SplideRenderer(contents, options, config, defaults) {\n    this.slides = [];\n    this.options = {};\n    this.breakpoints = [];\n    merge(DEFAULTS, defaults || {});\n    merge(merge(this.options, DEFAULTS), options || {});\n    this.contents = contents;\n    this.config = splide_esm_assign({}, RENDERER_DEFAULT_CONFIG, config || {});\n    this.id = this.config.id || uniqueId("splide");\n    this.Style = new Style(this.id, this.options);\n    this.Direction = Direction(null, null, this.options);\n    assert(this.contents.length, "Provide at least 1 content.");\n    this.init();\n  }\n\n  SplideRenderer.clean = function clean(splide) {\n    var _EventInterface14 = EventInterface(splide),\n        on = _EventInterface14.on;\n\n    var root = splide.root;\n    var clones = queryAll(root, "." + CLASS_CLONE);\n    on(EVENT_MOUNTED, function () {\n      remove(child(root, "style"));\n    });\n    remove(clones);\n  };\n\n  var _proto3 = SplideRenderer.prototype;\n\n  _proto3.init = function init() {\n    this.parseBreakpoints();\n    this.initSlides();\n    this.registerRootStyles();\n    this.registerTrackStyles();\n    this.registerSlideStyles();\n    this.registerListStyles();\n  };\n\n  _proto3.initSlides = function initSlides() {\n    var _this4 = this;\n\n    push(this.slides, this.contents.map(function (content, index) {\n      content = isString(content) ? {\n        html: content\n      } : content;\n      content.styles = content.styles || {};\n      content.attrs = content.attrs || {};\n\n      _this4.cover(content);\n\n      var classes = _this4.options.classes.slide + " " + (index === 0 ? CLASS_ACTIVE : "");\n      splide_esm_assign(content.attrs, {\n        class: (classes + " " + (content.attrs.class || "")).trim(),\n        style: _this4.buildStyles(content.styles)\n      });\n      return content;\n    }));\n\n    if (this.isLoop()) {\n      this.generateClones(this.slides);\n    }\n  };\n\n  _proto3.registerRootStyles = function registerRootStyles() {\n    var _this5 = this;\n\n    this.breakpoints.forEach(function (_ref2) {\n      var width = _ref2[0],\n          options = _ref2[1];\n\n      _this5.Style.rule(" ", "max-width", unit(options.width), width);\n    });\n  };\n\n  _proto3.registerTrackStyles = function registerTrackStyles() {\n    var _this6 = this;\n\n    var Style2 = this.Style;\n    var selector = "." + CLASS_TRACK;\n    this.breakpoints.forEach(function (_ref3) {\n      var width = _ref3[0],\n          options = _ref3[1];\n      Style2.rule(selector, _this6.resolve("paddingLeft"), _this6.cssPadding(options, false), width);\n      Style2.rule(selector, _this6.resolve("paddingRight"), _this6.cssPadding(options, true), width);\n      Style2.rule(selector, "height", _this6.cssTrackHeight(options), width);\n    });\n  };\n\n  _proto3.registerListStyles = function registerListStyles() {\n    var _this7 = this;\n\n    var Style2 = this.Style;\n    var selector = "." + CLASS_LIST;\n    this.breakpoints.forEach(function (_ref4) {\n      var width = _ref4[0],\n          options = _ref4[1];\n      Style2.rule(selector, "transform", _this7.buildTranslate(options), width);\n\n      if (!_this7.cssSlideHeight(options)) {\n        Style2.rule(selector, "aspect-ratio", _this7.cssAspectRatio(options), width);\n      }\n    });\n  };\n\n  _proto3.registerSlideStyles = function registerSlideStyles() {\n    var _this8 = this;\n\n    var Style2 = this.Style;\n    var selector = "." + CLASS_SLIDE;
1\n    this.breakpoints.forEach(function (_ref5) {\n      var width = _ref5[0],\n          options = _ref5[1];\n      Style2.rule(selector, "width", _this8.cssSlideWidth(options), width);\n      Style2.rule(selector, "height", _this8.cssSlideHeight(options) || "100%", width);\n      Style2.rule(selector, _this8.resolve("marginRight"), unit(options.gap) || "0px", width);\n      Style2.rule(selector + " > img", "display", options.cover ? "none" : "inline", width);\n    });\n  };\n\n  _proto3.buildTranslate = function buildTranslate(options) {\n    var _this$Direction = this.Direction,\n        resolve = _this$Direction.resolve,\n        orient = _this$Direction.orient;\n    var values = [];\n    values.push(this.cssOffsetClones(options));\n    values.push(this.cssOffsetGaps(options));\n\n    if (this.isCenter(options)) {\n      values.push(this.buildCssValue(orient(-50), "%"));\n      values.push.apply(values, this.cssOffsetCenter(options));\n    }\n\n    return values.filter(Boolean).map(function (value) {\n      return "translate" + resolve("X") + "(" + value + ")";\n    }).join(" ");\n  };\n\n  _proto3.cssOffsetClones = function cssOffsetClones(options) {\n    var _this$Direction2 = this.Direction,\n        resolve = _this$Direction2.resolve,\n        orient = _this$Direction2.orient;\n    var cloneCount = this.getCloneCount();\n\n    if (this.isFixedWidth(options)) {\n      var _this$parseCssValue = this.parseCssValue(options[resolve("fixedWidth")]),\n          value = _this$parseCssValue.value,\n          unit2 = _this$parseCssValue.unit;\n\n      return this.buildCssValue(orient(value) * cloneCount, unit2);\n    }\n\n    var percent = 100 * cloneCount / options.perPage;\n    return orient(percent) + "%";\n  };\n\n  _proto3.cssOffsetCenter = function cssOffsetCenter(options) {\n    var _this$Direction3 = this.Direction,\n        resolve = _this$Direction3.resolve,\n        orient = _this$Direction3.orient;\n\n    if (this.isFixedWidth(options)) {\n      var _this$parseCssValue2 = this.parseCssValue(options[resolve("fixedWidth")]),\n          value = _this$parseCssValue2.value,\n          unit2 = _this$parseCssValue2.unit;\n\n      return [this.buildCssValue(orient(value / 2), unit2)];\n    }\n\n    var values = [];\n    var perPage = options.perPage,\n        gap = options.gap;\n    values.push(orient(50 / perPage) + "%");\n\n    if (gap) {\n      var _this$parseCssValue3 = this.parseCssValue(gap),\n          _value = _this$parseCssValue3.value,\n          _unit = _this$parseCssValue3.unit;\n\n      var gapOffset = (_value / perPage - _value) / 2;\n      values.push(this.buildCssValue(orient(gapOffset), _unit));\n    }\n\n    return values;\n  };\n\n  _proto3.cssOffsetGaps = function cssOffsetGaps(options) {\n    var cloneCount = this.getCloneCount();\n\n    if (cloneCount && options.gap) {\n      var orient = this.Direction.orient;\n\n      var _this$parseCssValue4 = this.parseCssValue(options.gap),\n          value = _this$parseCssValue4.value,\n          unit2 = _this$parseCssValue4.unit;\n\n      if (this.isFixedWidth(options)) {\n        return this.buildCssValue(orient(value * cloneCount), unit2);\n      }\n\n      var perPage = options.perPage;\n      var gaps = cloneCount / perPage;\n      return this.buildCssValue(orient(gaps * value), unit2);\n    }\n\n    return "";\n  };\n\n  _proto3.resolve = function resolve(prop) {\n    return camelToKebab(this.Direction.resolve(prop));\n  };\n\n  _proto3.cssPadding = function cssPadding(options, right) {\n    var padding = options.padding;\n    var prop = this.Direction.resolve(right ? "right" : "left", true);\n    return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || "0px";\n  };\n\n  _proto3.cssTrackHeight = function cssTrackHeight(options) {\n    var height = "";\n\n    if (this.isVertical()) {\n      height = this.cssHeight(options);\n      assert(height, \'"height" is missing.\');\n      height = "calc(" + height + " - " + this.cssPadding(options, false) + " - " + this.cssPadding(options, true) + ")";\n    }\n\n    return height;\n  };\n\n  _proto3.cssHeight = function cssHeight(options) {\n    return unit(options.height);\n  };\n\n  _proto3.cssSlideWidth = function cssSlideWidth(options) {\n    return options.autoWidth ? "" : unit(options.fixedWidth) || (this.isVertical() ? "" : this.cssSlideSize(options));\n  };\n\n  _proto3.cssSlideHeight = function cssSlideHeight(options) {\n    return unit(options.fixedHeight) || (this.isVertical() ? options.autoHeight ? "" : this.cssSlideSize(options) : this.cssHeight(options));\n  };\n\n  _proto3.cssSlideSize = function cssSlideSize(options) {\n    var gap = unit(options.gap);\n    return "calc((100%" + (gap && " + " + gap) + ")/" + (options.perPage || 1) + (gap && " - " + gap) + ")";\n  };\n\n  _proto3.cssAspectRatio = function cssAspectRatio(options) {\n    var heightRatio = options.heightRatio;\n    return heightRatio ? "" + 1 / heightRatio : "";\n  };\n\n  _proto3.buildCssValue = function buildCssValue(value, unit2) {\n    return "" + value + unit2;\n  };\n\n  _proto3.parseCssValue = function parseCssValue(value) {\n    if (isString(value)) {\n      var number = parseFloat(value) || 0;\n      var unit2 = value.replace(/\\d*(\\.\\d*)?/, "") || "px";\n      return {\n        value: number,\n        unit: unit2\n      };\n    }\n\n    return {\n      value: value,\n      unit: "px"\n    };\n  };
1\n\n  _proto3.parseBreakpoints = function parseBreakpoints() {\n    var _this9 = this;\n\n    var breakpoints = this.options.breakpoints;\n    this.breakpoints.push(["default", this.options]);\n\n    if (breakpoints) {\n      forOwn(breakpoints, function (options, width) {\n        _this9.breakpoints.push([width, merge(merge({}, _this9.options), options)]);\n      });\n    }\n  };\n\n  _proto3.isFixedWidth = function isFixedWidth(options) {\n    return !!options[this.Direction.resolve("fixedWidth")];\n  };\n\n  _proto3.isLoop = function isLoop() {\n    return this.options.type === LOOP;\n  };\n\n  _proto3.isCenter = function isCenter(options) {\n    if (options.focus === "center") {\n      if (this.isLoop()) {\n        return true;\n      }\n\n      if (this.options.type === SLIDE) {\n        return !this.options.trimSpace;\n      }\n    }\n\n    return false;\n  };\n\n  _proto3.isVertical = function isVertical() {\n    return this.options.direction === TTB;\n  };\n\n  _proto3.buildClasses = function buildClasses() {\n    var options = this.options;\n    return [CLASS_ROOT, CLASS_ROOT + "--" + options.type, CLASS_ROOT + "--" + options.direction, options.drag && CLASS_ROOT + "--draggable", options.isNavigation && CLASS_ROOT + "--nav", CLASS_ACTIVE, !this.config.hidden && CLASS_RENDERED].filter(Boolean).join(" ");\n  };\n\n  _proto3.buildAttrs = function buildAttrs(attrs) {\n    var attr = "";\n    forOwn(attrs, function (value, key) {\n      attr += value ? " " + camelToKebab(key) + "=\\"" + value + "\\"" : "";\n    });\n    return attr.trim();\n  };\n\n  _proto3.buildStyles = function buildStyles(styles) {\n    var style = "";\n    forOwn(styles, function (value, key) {\n      style += " " + camelToKebab(key) + ":" + value + ";";\n    });\n    return style.trim();\n  };
1\n\n  _proto3.renderSlides = function renderSlides() {\n    var _this10 = this;\n\n    var tag = this.config.slideTag;\n    return this.slides.map(function (content) {\n      return "<" + tag + " " + _this10.buildAttrs(content.attrs) + ">" + (content.html || "") + "</" + tag + ">";\n    }).join("");\n  };\n\n  _proto3.cover = function cover(content) {\n    var styles = content.styles,\n        _content$html = content.html,\n        html = _content$html === void 0 ? "" : _content$html;\n\n    if (this.options.cover && !this.options.lazyLoad) {\n      var src = html.match(/<img.*?src\\s*=\\s*([\'"])(.+?)\\1.*?>/);\n\n      if (src && src[2]) {\n        styles.background = "center/cover no-repeat url(\'" + src[2] + "\')";\n      }\n    }\n  };\n\n  _proto3.generateClones = function generateClones(contents) {\n    var classes = this.options.classes;\n    var count = this.getCloneCount();\n    var slides = contents.slice();\n\n    while (slides.length < count) {\n      push(slides, slides);\n    }\n\n    push(slides.slice(-count).reverse(), slides.slice(0, count)).forEach(function (content, index) {\n      var attrs = splide_esm_assign({}, content.attrs, {\n        class: content.attrs.class + " " + classes.clone\n      });\n      var clone = splide_esm_assign({}, content, {\n        attrs: attrs\n      });\n      index < count ? contents.unshift(clone) : contents.push(clone);\n    });\n  };\n\n  _proto3.getCloneCount = function getCloneCount() {\n    if (this.isLoop()) {\n      var options = this.options;\n\n      if (options.clones) {\n        return options.clones;\n      }\n\n      var perPage = max.apply(void 0, this.breakpoints.map(function (_ref6) {\n        var options2 = _ref6[1];\n        return options2.perPage;\n      }));\n      return perPage * ((options.flickMaxPages || 1) + 1);\n    }\n\n    return 0;\n  };\n\n  _proto3.renderArrows = function renderArrows() {\n    var html = "";\n    html += "<div class=\\"" + this.options.classes.arrows + "\\">";\n    html += this.renderArrow(true);\n    html += this.renderArrow(false);\n    html += "</div>";\n    return html;\n  };\n\n  _proto3.renderArrow = function renderArrow(prev) {\n    var _this$options = this.options,\n        classes = _this$options.classes,\n        i18n = _this$options.i18n;\n    var attrs = {\n      class: classes.arrow + " " + (prev ? classes.prev : classes.next),\n      type: "button",\n      ariaLabel: prev ? i18n.prev : i18n.next\n    };\n    return "<button " + this.buildAttrs(attrs) + "><svg xmlns=\\"" + XML_NAME_SPACE + "\\" viewBox=\\"0 0 " + SIZE + " " + SIZE + "\\" width=\\"" + SIZE + "\\" height=\\"" + SIZE + "\\"><path d=\\"" + (this.options.arrowPath || PATH) + "\\" /></svg></button>";\n  };\n\n  _proto3.html = function html() {\n    var _this$config = this.config,\n        rootClass = _this$config.rootClass,\n        listTag = _this$config.listTag,\n        arrows = _this$config.arrows,\n        beforeTrack = _this$config.beforeTrack,\n        afterTrack = _this$config.afterTrack,\n        slider = _this$config.slider,\n        beforeSlider = _this$config.beforeSlider,\n        afterSlider = _this$config.afterSlider;\n    var html = "";\n    html += "<div id=\\"" + this.id + "\\" class=\\"" + this.buildClasses() + " " + (rootClass || "") + "\\">";\n    html += "<style>" + this.Style.build() + "</style>";\n\n    if (slider) {\n      html += beforeSlider || "";\n      html += "<div class=\\"splide__slider\\">";\n    }\n\n    html += beforeTrack || "";\n\n    if (arrows) {\n      html += this.renderArrows();\n    }\n\n    html += "<div class=\\"splide__track\\">";\n    html += "<" + listTag + " class=\\"splide__list\\">";\n    html += this.renderSlides();\n    html += "</" + listTag + ">";\n    html += "</div>";\n    html += afterTrack || "";\n\n    if (slider) {\n      html += "</div>";\n      html += afterSlider || "";\n    }\n\n    html += "</div>";\n    return html;\n  };\n\n  return SplideRenderer;\n}()));\n\n\n\n;// CONCATENATED MODULE: ./src/scripts/module/splide.js\n\n // New slider library using splide.js\n\nconst initSplideOnElement = el => {\n  const opts = {\n    perPage: 3,\n    gap: "1rem",\n    breakpoints: {\n      991: {\n        perPage: 2\n      },\n      767: {\n        perPage: 1\n      }\n    }\n  };\n  new Splide(el, opts).mount();\n};\n\nconst findAndInitSplides = context => {\n  const splideElements = context.querySelectorAll(\'.js-splide:not(.is-initialized)\');
1\n  splideElements.forEach(initSplideOnElement);\n};\n\nfunction splide() {\n  // First, run on the whole document\n  findAndInitSplides(document); // Then, set up a MutationObserver to watch for new nodes\n\n  const observer = new MutationObserver(mutationsList => {\n    for (const mutation of mutationsList) {\n      if (mutation.type === \'childList\' && mutation.addedNodes.length > 0) {\n        mutation.addedNodes.forEach(node => {\n          if (node.nodeType === Node.ELEMENT_NODE) {\n            // If the added node is a slider itself\n            if (node.matches(\'.js-splide\')) {\n              if (!node.classList.contains(\'is-initialized\')) {\n                initSplideOnElement(node);\n              }\n            } else {\n              // If the added node contains sliders\n              findAndInitSplides(node);\n            }\n          }\n        });\n      }\n    }\n  });\n  observer.observe(document.body, {\n    childList: true,\n    subtree: true\n  });\n}\n;// CONCATENATED MODULE: ./src/scripts/module/analytics.js\n/* provided dependency */ var analytics_$ = __webpack_require__(609);\nfunction initAnalytics() {\n  let hovercardTimer;\n  analytics_$(\'[data-analytics]\').on(\'mouseenter\', function () {\n    const _this = analytics_$(this);\n\n    const anaylticsType = _this.data(\'analytics\');\n\n    switch (anaylticsType) {\n      case \'hovercard\':\n        clearTimeout(hovercardTimer);\n        hovercardTimer = setTimeout(() => {\n          window.dataLayer.push({\n            \'event\': \'card_hover_trigger\',\n            \'title\': _this.find(\'[data-analytics-title\').text().trim()\n          });\n        }, 3000);\n        break;\n\n      default:\n        break;\n    }\n  });\n  analytics_$(\'[data-analytics]\').on(\'mouseleave\', function () {\n    clearTimeout(hovercardTimer);\n  });\n}\n;// CONCATENATED MODULE: ./src/scripts/plugins/countUp.js\nvar __assign = undefined && undefined.__assign || function () {\n  __assign = Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n\n      for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n    }\n\n    return t;\n  };\n\n  return __assign.apply(this, arguments);\n}; // playground: stackblitz.com/edit/countup-typescript\n\n\nvar CountUp =\n/** @class */\nfunction () {\n  function CountUp(target, endVal, options) {\n    var _this = this;\n\n    this.endVal = endVal;\n    this.options = options;\n    this.version = \'2.8.0\';\n    this.defaults = {\n      startVal: 0,\n      decimalPlaces: 0,\n      duration: 2,\n      useEasing: true,\n      useGrouping: true,\n      useIndianSeparators: false,\n      smartEasingThreshold: 999,\n      smartEasingAmount: 333,\n      separator: \',\',\n      decimal: \'.\',\n      prefix: \'\',\n      suffix: \'\',\n      enableScrollSpy: false,\n      scrollSpyDelay: 200,\n      scrollSpyOnce: false\n    };\n    this.finalEndVal = null; // for smart easing\n\n    this.useEasing = true;\n    this.countDown = false;\n    this.error = \'\';\n    this.startVal = 0;\n    this.paused = true;\n    this.once = false;\n\n    this.count = function (timestamp) {\n      if (!_this.startTime) {\n        _this.startTime = timestamp;\n      }\n\n      var progress = timestamp - _this.startTime;\n      _this.remaining = _this.duration - progress; // to ease or not to ease\n\n      if (_this.useEasing) {\n        if (_this.countDown) {\n          _this.frameVal = _this.startVal - _this.easingFn(progress, 0, _this.startVal - _this.endVal, _this.duration);\n        } else {\n          _this.frameVal = _this.easingFn(progress, _this.startVal, _this.endVal - _this.startVal, _this.duration);\n        }\n      } else {\n        _this.frameVal = _this.startVal + (_this.endVal - _this.startVal) * (progress / _this.duration);\n      } // don\'t go past endVal since progress can exceed duration in the last frame\n\n\n      var wentPast = _this.countDown ? _this.frameVal < _this.endVal : _this.frameVal > _this.endVal;\n      _this.frameVal = wentPast ? _this.endVal : _this.frameVal; // decimal\n\n      _this.frameVal = Number(_this.frameVal.toFixed(_this.options.decimalPlaces)); // format and print value\n\n      _this.printValue(_this.frameVal); // whether to continue\n\n\n      if (progress < _this.duration) {\n        _this.rAF = requestAnimationFrame(_this.count);\n      } else if (_this.finalEndVal !== null) {\n        // smart easing\n        _this.update(_this.finalEndVal);\n      } else {\n        if (_this.options.onCompleteCallback) {\n          _this.options.onCompleteCallback();\n        }\n      }\n    }; // default format and easing functions\n\n\n    this.formatNumber = function (num) {\n      var neg = num < 0 ? \'-\' : \'\';\n      var result, x1, x2, x3;\n      result = Math.abs(num).toFixed(_this.options.decimalPlaces);\n      result += \'\';\n      var x = result.split(\'.\');\n      x1 = x[0];\n      x2 = x.length > 1 ? _this.options.decimal + x[1] : \'\';\n\n      if (_this.options.useGrouping) {\n        x3 = \'\';\n        var factor = 3,\n            j = 0;\n\n        for (var i = 0, len = x1.length; i < len; ++i) {\n          if (_this.options.useIndianSeparators && i === 4) {\n            factor = 2;\n            j = 1;\n          }\n\n          if (i !== 0 && j % factor === 0) {\n            x3 = _this.options.separator + x3;\n          }\n\n          j++;\n          x3 = x1[len - i - 1] + x3;\n        }\n\n        x1 = x3;\n      } // optional numeral substitution\n\n\n      if (_this.options.numerals && _this.options.numerals.length) {\n        x1 = x1.replace(/[0-9]/g, function (w) {\n          return _this.options.numerals[+w];\n        });\n        x2 = x2.replace(/[0-9]/g, function (w) {\n          return _this.options.numerals[+w];\n        });\n      }\n\n      return neg + _this.options.prefix + x1 + x2 + _this.options.suffix;\n    }; // t: current time, b: beginning value, c: change in value, d: duration\n\n\n    this.easeOutExpo = function (t, b, c, d) {\n      return c * (-Math.pow(2, -10 * t / d) + 1) * 1024 / 1023 + b;\n    };\n\n    this.options = __assign(__assign({}, this.defaults), options);\n    this.formattingFn = this.options.formattingFn ? this.options.formattingFn : this.formatNumber;\n    this.easingFn = this.options.easingFn ? this.options.easingFn : this.easeOutExpo;\n    this.startVal = this.validateValue(this.options.startVal);\n    this.frameVal = this.startVal;\n    this.endVal = this.validateValue(endVal);\n    this.options.decimalPlaces = Math.max( false || this.options.decimalPlaces);\n    this.resetDuration();\n    this.options.separator = String(this.options.separator);\n    this.useEasing = this.options.useEasing;\n\n    if (this.options.separator === \'\') {\n      this.options.useGrouping = false;\n    }\n\n    this.el = typeof target === \'string\' ? document.getElementById(target) : target;\n\n    if (this.el) {\n      this.printValue(this.startVal);\n    } else {\n      this.error = \'[CountUp] target is null or undefined\';\n    } // scroll spy\n\n\n    if (typeof window !== \'undefined\' && this.options.enableScrollSpy) {\
1n      if (!this.error) {\n        // set up global array of onscroll functions to handle multiple instances\n        window[\'onScrollFns\'] = window[\'onScrollFns\'] || [];\n        window[\'onScrollFns\'].push(function () {\n          return _this.handleScroll(_this);\n        });\n\n        window.onscroll = function () {\n          window[\'onScrollFns\'].forEach(function (fn) {\n            return fn();\n          });\n        };\n\n        this.handleScroll(this);\n      } else {\n        console.error(this.error, target);\n      }\n    }\n  }\n\n  CountUp.prototype.handleScroll = function (self) {\n    if (!self || !window || self.once) return;\n    var bottomOfScroll = window.innerHeight + window.scrollY;\n    var rect = self.el.getBoundingClientRect();\n    var topOfEl = rect.top + window.pageYOffset;\n    var bottomOfEl = rect.top + rect.height + window.pageYOffset;\n\n    if (bottomOfEl < bottomOfScroll && bottomOfEl > window.scrollY && self.paused) {\n      // in view\n      self.paused = false;\n      setTimeout(function () {\n        return self.start();\n      }, self.options.scrollSpyDelay);\n      if (self.options.scrollSpyOnce) self.once = true;\n    } else if ((window.scrollY > bottomOfEl || topOfEl > bottomOfScroll) && !self.paused) {\n      // out of view\n      self.reset();\n    }\n  };\n  /**\r\n   * Smart easing works by breaking the animation into 2 parts, the second part being the\r\n   * smartEasingAmount and first part being the total amount minus the smartEasingAmount. It works\r\n   * by disabling easing for the first part and enabling it on the second part. It is used if\r\n   * useEasing is true and the total animation amount exceeds the smartEasingThreshold.\r\n   */\n\n\n  CountUp.prototype.determineDirectionAndSmartEasing = function () {\n    var end = this.finalEndVal ? this.finalEndVal : this.endVal;\n    this.countDown = this.startVal > end;\n    var animateAmount = end - this.startVal;\n\n    if (Math.abs(animateAmount) > this.options.smartEasingThreshold && this.options.useEasing) {\n      this.finalEndVal = end;\n      var up = this.countDown ? 1 : -1;\n      this.endVal = end + up * this.options.smartEasingAmount;\n      this.duration = this.duration / 2;\n    } else {\n      this.endVal = end;\n      this.finalEndVal = null;\n    }\n\n    if (this.finalEndVal !== null) {\n      // setting finalEndVal indicates smart easing\n      this.useEasing = false;\n    } else {\n      this.useEasing = this.options.useEasing;\n    }\n  }; // start animation\n\n\n  CountUp.prototype.start = function (callback) {\n    if (this.error) {\n      return;\n    }\n\n    if (this.options.onStartCallback) {\n      this.options.onStartCallback();\n    }\n\n    if (callback) {\n      this.options.onCompleteCallback = callback;\n    }\n\n    if (this.duration > 0) {\n      this.determineDirectionAndSmartEasing();\n      this.paused = false;\n      this.rAF = requestAnimationFrame(this.count);\n    } else {\n      this.printValue(this.endVal);\n    }\n  }; // pause/resume animation\n\n\n  CountUp.prototype.pauseResume = function () {\n    if (!this.paused) {\n      cancelAnimationFrame(this.rAF);\n    } else {\n      this.startTime = null;\n      this.duration = this.remaining;\n      this.startVal = this.frameVal;\n      this.determineDirectionAndSmartEasing();\n      this.rAF = requestAnimationFrame(this.count);\n    }\n\n    this.paused = !this.paused;\n  }; // reset to startVal so animation can be run again\n\n\n  CountUp.prototype.reset = function () {\n    cancelAnimationFrame(this.rAF);\n    this.paused = true;\n    this.resetDuration();\n    this.startVal = this.validateValue(this.options.startVal);\n    this.frameVal = this.startVal;\n    this.printValue(this.startVal);\n  }; // pass a new endVal and start animation\n\n\n  CountUp.prototype.update = function (newEndVal) {\n    cancelAnimationFrame(this.rAF);\n    this.startTime = null;\n    this.endVal = this.validateValue(newEndVal);\n\n    if (this.endVal === this.frameVal) {\n      return;\n    }\n\n    this.startVal = this.frameVal;\n\n    if (this.finalEndVal == null) {\n      this.resetDuration();\n    }\n\n    this.finalEndVal = null;\n    this.determineDirectionAndSmartEasing();\n    this.rAF = requestAnimationFrame(this.count);\n  };\n\n  CountUp.prototype.printValue = function (val) {\n    var _a;\n\n    if (!this.el) return;\n    var result = this.formattingFn(val);\n\n    if ((_a = this.options.plugin) === null || _a === void 0 ? void 0 : _a.render) {\n      this.options.plugin.render(this.el, result);\n      return;\n    }\n\n    if (this.el.tagName === \'INPUT\') {\n      var input = this.el;\n      input.value = result;\n    } else if (this.el.tagName === \'text\' || this.el.tagName === \'tspan\') {\n      this.el.textContent = result;\n    } else {\n      this.el.innerHTML = result;\n    }\n  };\n\n  CountUp.prototype.ensureNumber = function (n) {\n    return typeof n === \'number\' && !isNaN(n);\n  };\n\n  CountUp.prototype.validateValue = function (value) {\n    var newValue = Number(value);\n\n    if (!this.ensureNumber(newValue)) {\n      this.error = "[CountUp] invalid start or end value: ".concat(value);\n      return null;\n    } else {\n      return newValue;\n    }\n  };\n\n  CountUp.prototype.resetDuration = function () {\n    this.startTime = null;\n    this.duration = Number(this.options.duration) * 1000;\n    this.remaining = this.duration;\n  };\n\n  return CountUp;\n}();\n\n\n;// CONCATENATED MODULE: ./src/scripts/module/stats.js\n\nfunction stats() {\n  if (!document.querySelector(\'.js-stats\')) return;\n  let stats = document.querySelectorAll(\'.js-stats\');\n\n  if (stats.length) {\n    for (let i = 0; i < stats.length;
1 i++) {\n      let statsElement = stats[i].querySelectorAll(\'p\')[0];\n      let value = statsElement.getAttribute(\'data-number\').replace(\',\', \'\');\n      let prefix = statsElement.getAttribute(\'data-prefix\') ?? \'\';\n      let suffix = statsElement.getAttribute(\'data-suffix\') ?? \'\';\n\n      if (value.includes(\'.\')) {\n        let decimalPlaces = value.split(\'.\')[1].length;\n        let countUp = new CountUp(statsElement, parseFloat(value), {\n          decimalPlaces: decimalPlaces,\n          duration: 2,\n          separator: \',\',\n          prefix: prefix,\n          suffix: suffix\n        });\n\n        if (!countUp.error) {\n          countUp.start();\n        } else {\n          console.error(countUp.error);\n        }\n      } else {\n        let countUp = new CountUp(statsElement, parseInt(value), {\n          duration: 2,\n          separator: \',\',\n          prefix: prefix,\n          suffix: suffix\n        });\n\n        if (!countUp.error) {\n          countUp.start();\n        } else {\n          console.error(countUp.error);\n        }\n      }\n    }\n  }\n}\n;// CONCATENATED MODULE: ./src/scripts/app.js\n/* provided dependency */ var app_$ = __webpack_require__(609);\n// import all style file\n //load from node modules\n\n\n\n //import plugin / include function\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n //lazy images\n\nlazysizes_default().init({\n  hFac: 10,\n  loadMode: 1,\n  lazyClass: \'js-lazy\',\n  loadingClass: \'is-loading\',\n  loadedClass: \'is-loaded\',\n  throttleDelay: 100\n}); // Call function on document ready\n\napp_$(document).ready(function () {\n  menu_mega();\n  search_bar();\n  mobile_search_bar();\n  menu_hemburger();\n  accordians();\n  search_reset();\n  tab_featured();\n  mobile_search_filter();\n  search_keyword_highlight();\n  menu_page();\n  match_heights();\n  project_carousel();\n  carousel_featured();\n  lightbox();\n  scroll_down();\n  animate_section();\n  back_to_top();\n  interactive_map();\n  umbraco_form();\n  embed_video();\n  multiple_videos_popup();\n  splide();\n  initAnalytics();\n  stats();\n  acknowledgementModal();\n});\n\nfunction closeModal() {\n  setCookie();\n  var modal = document.getElementById(\'modal\');\n  var body = document.getElementsByTagName(\'body\')[0];\n  modal.classList.remove(\'show\');\n  body.classList.remove(\'modal-open\');\n}\n\nwindow.closeModal = closeModal;\n\nfunction acknowledgementModal() {\n  var modal = document.getElementById(\'modal\');\n  var body = document.getElementsByTagName(\'body\')[0];\n\n  if (!modal) {\n    return;\n  }\n\n  var modalClosed = getCookie("modalClosed");\n\n  if (modalClosed !== "") {\n    closeModal();\n  } else if (modal) {\n    body.classList.add(\'modal-open\');\n    modal.classList.add(\'show\');\n  }\n\n  document.addEventListener(\'keydown\', function (e) {\n    if (e.key === \'Escape\') {\n      closeModal();\n    }\n  });\n  modal.addEventListener(\'click\', function (e) {\n    if (e.target === this) {\n      closeModal();\n    }\n  });\n}\n\nfunction getCookie(cookieName) {\n  var name = cookieName + "=";\n  var decodedCookie = decodeURIComponent(document.cookie);\n  var cookieArray = decodedCookie.split(\';\');\n\n  for (var i = 0; i < cookieArray.length; i++) {\n    var cookie = cookieArray[i];\n\n    while (cookie.charAt(0) === \' \') {\n      cookie = cookie.substring(1);\n    }\n\n    if (cookie.indexOf(name) === 0) {\n      return cookie.substring(name.length, cookie.length);\n    }\n  }\n\n  return "";\n}\n\nfunction setCookie() {\n  const date = new Date();\n  date.setTime(date.getTime() + 90 * 24 * 60 * 60 * 1000); // 90 days from now (approximately 1 quarter)\n\n  const expires = "expires=" + date.toUTCString();\n  document.cookie = "modalClosed=true; " + expires + "; path=/";\n} // Call function on page load\n\n\nimage_loaded();\n\n//# sourceURL=webpack://Transgrid-webpack/./src/scripts/app.js_+_28_modules?')},653:(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("/* provided dependency */ var jQuery = __webpack_require__(609);\n/**\r\n * Plugin Name : Accordion.JS\r\n * Version     : 2.1.1\r\n * Author      : ZeroWP Team\r\n * Author URL  : http://zerowp.com/\r\n * Plugin URL  : http://accordionjs.zerowp.com/\r\n * License     : MIT\r\n */\n;\n\n(function ($) {\n  \"use strict\";\n\n  $.fn.accordionjs = function (options) {\n    // Select all accordions that match a CSS 
1selector\n    if (this.length > 1) {\n      this.each(function () {\n        $(this).accordionjs(options);\n      });\n      return this;\n    } // Current accordion instance\n\n\n    var accordion = this; // Setup utility functions\n\n    var util = {\n      /**\r\n       * Is integer\r\n       *\r\n       * Check if a value is a valid integer number\r\n       *\r\n       * @param {number} value\r\n       * @return {bool}\r\n       */\n      isInteger: function (value) {\n        return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n      },\n      //------------------------------------//--------------------------------------//\n\n      /**\r\n       * Is array\r\n       *\r\n       * Check if a value is a valid array.\r\n       *\r\n       * @param {Array} arg\r\n       * @return {bool}\r\n       */\n      isArray: function (arg) {\n        return Object.prototype.toString.call(arg) === '[object Array]';\n      },\n      //------------------------------------//--------------------------------------//\n\n      /**\r\n       * Is object\r\n       *\r\n       * Check if a value is a valid object.\r\n       *\r\n       * @param {Object} arg\r\n       * @return {bool}\r\n       */\n      isObject: function isObject(arg) {\n        return Object.prototype.toString.call(arg) === '[object Object]';\n      },\n      //------------------------------------//--------------------------------------//\n\n      /**\r\n       * Sections is open\r\n       *\r\n       * Check if a section from current accordion is open.\r\n       *\r\n       * @param {Object}(jQuery) section\r\n       * @return {bool}\r\n       */\n      sectionIsOpen: function (section) {\n        return section.hasClass('acc_active');\n      },\n      //------------------------------------//--------------------------------------//\n\n      /**\r\n       * Get hash\r\n       *\r\n       * Get hash substring without # or false if the window does not have one.\r\n       *\r\n       * @return {string|bool(false)}\r\n       */\n      getHash: function () {\n        if (window.location.hash) {\n          return window.location.hash.substring(1);\n        }\n\n        return false;\n      }\n    };\n    /* Setup options\r\n    ---------------------*/\n\n    var settings = $.extend({\n      // Allow self close.\n      closeAble: false,\n      // Close other sections.\n      closeOther: true,\n      // Animation Speed.\n      slideSpeed: 150,\n      // The section open on first init. A number from 1 to X or false.\n      activeIndex: 1,\n      // Callback when a section is open\n      openSection: false,\n      // function( section ){}\n      // Callback before a section is open\n      beforeOpenSection: false // function( section ){}\n\n    }, options); // Assign to accordion options data-* attributes if they exists\n\n    $.each(settings, function (option) {\n      var data_attr = option.replace(/([A-Z])/g, '-$1').toLowerCase().toString(),\n          //`optionsName` becomes `option-name`\n      new_val = accordion.data(data_attr);\n\n      if (new_val || false === new_val) {\n        settings[option] = new_val;\n      }\n    });\n    /*\r\n    If the activeIndex is false then all sections are closed by default.\r\n    If the closeOther is false then other section will not be closed when\r\n    this is opened. That means, in both cases, sections should be able\r\n    to be closed independently.\r\n    */\n\n    if (settings.activeIndex === false || settings.closeOther === false) {\n      settings.closeAble = true;\n    } //------------------------------------//--------------------------------------//\n\n    /**\r\n     * \"Constructor\"\r\n     *\r\n     * @return void\r\n     */\n\n\n    var init = function () {\n      accordion.create();\n      accordion.openOnClick();\n      $(window).on('load', function () {\n        accordion.openOnHash();\n      });\n      $(window).on('hashchange', function () {\n        accordion.openOnHash();\n      });\n    }; //------------------------------------//--------------------------------------//\n\n    /**\r\n     * Open section\r\n     *\r\n     * Open a single section.\r\n     *\r\n     * @param {Object}(jQuery) section The section to open\r\n     * @param {number} speed\r\n     * @return void\r\n     */\n\n\n    this.openSection = function (section, speed) {\n      // Event before a section is opened\n      $(document).trigger('accjs_before_open_section', [section]); // Callback before a section is opened\n\n      if (typeof settings.beforeOpenSection === \"function\") {\n        settings.beforeOpenSection.call(this, section);\n      } // Setup the collapse speed\n\n\n      speed = speed >= 0 ? speed : settings.slideSpeed; // Get the section content\n\n      var section_content = section.children().eq(1); // .acc_content\n      // Open the section\n\n      section_content.slideDown(speed, function () {\n        // Event when a section is opened\n        $(document).trigger('accjs_open_section', [section]); // Callback when a section is opened\n\n        if (typeof settings.openSection === \"function\") {\n          settings.openSection.call(this, section);\n        }\n      }); // Make active\n\n      section.addClass('acc_active');\n    }; //------------------------------------//--------------------------------------//\n\n    /**\r\n     * Close section\r\n     *\r\n     * Close a single section.\r\n     *\r\n     * @param {Object}(jQuery) section The section to close\r\n     * @param {number} speed\r\n     * @return void\r\n     */\n\n\n    this.closeSection = function (section, speed) {\n      // Event before a section is closed\n      $(document).trigger('accjs_before_close_section', [section]); // Callback before a section is closed\n\n      if (typeof settings.beforeCloseSection === \"function\") {\n        settings.beforeCloseSection.call(this, section);\n      } // Setup the collapse speed\n\n\n      speed = speed >= 0 ? speed : settings.slideSpeed; // Get the section content\n\n      var section_content = section.children().eq(1); // .acc_content\n      // Open the section\n\n      section_content.slideUp(speed, function () {\n        // Event when a section is closed\n        $(document).trigger('accjs_close_section', [section]); // Callback when a section is closed\n\n        if (typeof settings.closeSection === \"function\") {\n          settings.closeSection.call(this, section);\n        }\n      }); // Make inactive\n\n      section.removeClass('acc_active');\n    }; //------------------------------------//--------------------------------------//\n\n    /**\r\n     * Close other sections except this one\r\n     *\r\n     * @param {Object}(jQuery) section The section to exclude\r\n     * @param {number} speed\r\n     * @return void\r\n     */\n\n\n    this.closeOtherSections = function (section, speed) {\n      var this_acc = section.closest('.accordionjs').children();\n      $(this_acc).each(function () {\n        accordion.closeSection($(this).not(section), speed);\n      });\n    }; //------------------------------------//--------------------------------------//\n\n    /**\r\n     * Create the accordion\r\n     *\r\n     * Create the accordion structure. Add the necessary CSS classes and other stuff.\r\n     *\r\n     * @return void\r\n     */\n\n\n    this.create = function () {\n      //Add Main CSS Class\n      accordion.addClass('accordionjs'); // Get all current accordion sections\n\n      var accordion_sections = accordion.children(); //Add classes to accordion head and content for each section\n\n      $.each(accordion_sections, function (index, elem) {\n        accordion.createSingleSection($(elem));\n      }); // //Active index\n\n      if (util.isArray(settings.activeIndex)) {\n        var indexes = settings.activeIndex;\n\n        for (var i = 0; i < indexes.length;
1 i++) {\n          accordion.openSection(accordion_sections.eq(indexes[i] - 1), 0);\n        }\n      } else if (settings.activeIndex > 1) {\n        accordion.openSection(accordion_sections.eq(settings.activeIndex - 1), 0);\n      } else if (false !== settings.activeIndex) {\n        accordion.openSection(accordion_sections.eq(0), 0);\n      }\n    }; //------------------------------------//--------------------------------------//\n\n    /**\r\n     * Create a single section\r\n     *\r\n     * Create the structure of a single section by adding the necessary CSS classes.\r\n     *\r\n     * @param {string} section The section to create. jQuery object.\r\n     * @return void\r\n     */\n\n\n    this.createSingleSection = function (section) {\n      var childs = section.children(); // Create sections if they were not created already\n\n      section.addClass('acc_section'); // Add the necessary CSS classes\n\n      $(childs[0]).addClass('acc_head').prepend('<div class=\"acc_icon_expand\"></div>');\n      $(childs[1]).addClass('acc_content'); // Collapse section content.\n      // Only if it does not have `.acc_active` CSS class set by default.\n\n      if (!section.hasClass('acc_active')) {\n        section.children('.acc_content').hide();\n      }\n    }; //------------------------------------//--------------------------------------//\n\n    /**\r\n     * Open on click\r\n     *\r\n     * Open a section when its header get a click.\r\n     *\r\n     * @return void\r\n     */\n\n\n    this.openOnClick = function () {\n      accordion.on('click', '.acc_head', function (event) {\n        event.stopImmediatePropagation();\n        var section = $(this).closest('.acc_section');\n\n        if (util.sectionIsOpen(section)) {\n          // If closeAble, then close this section but do not touch other.\n          if (settings.closeAble) {\n            accordion.closeSection(section);\n          } // If the accordion contains only one section, act like a toggle.\n          else if (accordion.children().length === 1) {\n              accordion.closeSection(section);\n            }\n        } // Section is closed\n        else {\n            // If closeOther, then close other sections when this is opened.\n            if (settings.closeOther) {\n              accordion.closeOtherSections(section);\n              accordion.openSection(section);\n            } // Else open only this section and do not touch other sections.\n            else {\n                accordion.openSection(section);\n              }\n          }\n      });\n    }; //------------------------------------//--------------------------------------//\n\n    /**\r\n     * Open a section if a hash is present in URL and scroll to it.\r\n     *\r\n     * @return void\r\n     */\n\n\n    this.openOnHash = function () {\n      if (util.getHash()) {\n        var section = $('#' + util.getHash());\n\n        if (section.hasClass('acc_section')) {\n          accordion.openSection(section);\n\n          if (settings.closeOther) {\n            accordion.closeOtherSections(section);\n          }\n\n          $(\"html, body\").animate({\n            scrollTop: parseInt(section.offset().top) - 50\n          }, 150);\n        }\n      }\n    }; //\"Constructor\" init\n\n\n    init();\n    return this;\n  };\n})(jQuery);\n\n//# sourceURL=webpack://Transgrid-webpack/./src/scripts/plugins/accordion.js?")},38:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (root, factory) {\n  if (true) {\n    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(609)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  } else {}\n})(this, function ($) {\n  var has_VML, has_canvas, create_canvas_for, add_shape_to, clear_canvas, shape_from_area, canvas_style, hex_to_decimal, css3color, is_image_loaded, options_from_area;\n  has_canvas = !!document.createElement('canvas').getContext; // VML: more complex\n\n  has_VML = function () {\n    var a = document.createElement('div');
1\n    a.innerHTML = '<v:shape id=\"vml_flag1\" adj=\"1\" />';\n    var b = a.firstChild;\n    b.style.behavior = \"url(#default#VML)\";\n    return b ? typeof b.adj == \"object\" : true;\n  }();\n\n  if (!(has_canvas || has_VML)) {\n    $.fn.maphilight = function () {\n      return this;\n    };\n\n    return;\n  }\n\n  if (has_canvas) {\n    hex_to_decimal = function (hex) {\n      return Math.max(0, Math.min(parseInt(hex, 16), 255));\n    };\n\n    css3color = function (color, opacity) {\n      return 'rgba(' + hex_to_decimal(color.substr(0, 2)) + ',' + hex_to_decimal(color.substr(2, 2)) + ',' + hex_to_decimal(color.substr(4, 2)) + ',' + opacity + ')';\n    };\n\n    create_canvas_for = function (img) {\n      var c = $('<canvas style=\"width:' + $(img).width() + 'px;height:' + $(img).height() + 'px;\"></canvas>').get(0);\n      c.getContext(\"2d\").clearRect(0, 0, $(img).width(), $(img).height());\n      return c;\n    };\n\n    var draw_shape = function (context, shape, coords, x_shift, y_shift) {\n      x_shift = x_
1shift || 0;\n      y_shift = y_shift || 0;\n      context.beginPath();\n\n      if (shape == 'rect') {\n        // x, y, width, height\n        context.rect(coords[0] + x_shift, coords[1] + y_shift, coords[2] - coords[0], coords[3] - coords[1]);\n      } else if (shape == 'poly') {\n        context.moveTo(coords[0] + x_shift, coords[1] + y_shift);\n\n        for (i = 2; i < coords.length; i += 2) {\n          context.lineTo(coords[i] + x_shift, coords[i + 1] + y_shift);\n        }\n      } else if (shape == 'circ') {\n        // x, y, radius, startAngle, endAngle, anticlockwise\n        context.arc(coords[0] + x_shift, coords[1] + y_shift, coords[2], 0, Math.PI * 2, false);\n      }\n\n      context.closePath();\n    };\n\n    add_shape_to = function (canvas, shape, coords, options, name) {\n      var i,\n          context = canvas.getContext('2d'); // Because I don't want to worry about setting things back to a base state\n      // Shadow has to happen first, since it's on the bottom, and it does some clip /\n      // fill operations which would interfere with what comes next.\n\n      if (options.shadow) {\n        context.save();\n\n        if (options.shadowPosition == \"inside\") {\n          // Cause the following stroke to only apply to the inside of the path\n          draw_shape(context, shape, coords);\n          context.clip();\n        } // Redraw the shape shifted off the canvas massively so we can cast a shadow\n        // onto the canvas without having to worry about the stroke or fill (which\n        // cannot have 0 opacity or width, since they're what cast the shadow).\n\n\n        var x_shift = canvas.width * 100;\n        var y_shift = canvas.height * 100;\n        draw_shape(context, shape, coords, x_shift, y_shift);\n        context.shadowOffsetX = options.shadowX - x_shift;\n        context.shadowOffsetY = options.shadowY - y_shift;\n        context.shadowBlur = options.shadowRadius;\n        context.shadowColor = css3color(options.shadowColor, options.shadowOpacity); // Now, work out where to cast the shadow from! It looks better if it's cast\n        // from a fill when it's an outside shadow or a stroke when it's an interior\n        // shadow. Allow the user to override this if they need to.\n\n        var shadowFrom = options.shadowFrom;\n\n        if (!shadowFrom) {\n          if (options.shadowPosition == 'outside') {\n            shadowFrom = 'fill';\n          } else {\n            shadowFrom = 'stroke';\n          }\n        }\n\n        if (shadowFrom == 'stroke') {\n          context.strokeStyle = \"rgba(0,0,0,1)\";\n          context.stroke();\n        } else if (shadowFrom == 'fill') {\n          context.fillStyle = \"rgba(0,0,0,1)\";\n          context.fill();\n        }\n\n        context.restore(); // and now we clean up\n\n        if (options.shadowPosition == \"outside\") {\n          context.save(); // Clear out the center\n\n          draw_shape(context, shape, coords);\n          context.globalCompositeOperation = \"destination-out\";\n          context.fillStyle = \"rgba(0,0,0,1);\";\n          context.fill();\n          context.restore();\n        }\n      }\n\n      context.save();\n      draw_shape(context, shape, coords); // fill has to come after shadow, otherwise the shadow will be drawn over the fill,\n      // which mostly looks weird when the shadow has a high opacity\n\n      if (options.fill) {\n        context.fillStyle = css3color(options.fillColor, options.fillOpacity);\n        context.fill();\n      } // Likewise, stroke has to come at the very end, or it'll wind up under bits of the\n      // shadow or the shadow-background if it's present.\n\n\n      if (options.stroke) {\n        context.strokeStyle = css3color(options.strokeColor, options.strokeOpacity);\n        context.lineWidth = options.strokeWidth;\n        context.stroke();\n      }\n\n      context.restore();\n\n      if (options.fade) {\n        $(canvas).css('opacity', 0).animate({\n          opacity: 1\n        }, 100);\n      }\n    };\n\n    clear_canvas = function (canvas) {\n      canvas.getContext('2d').clearRect(0, 0, canvas.width, canvas.height);\n    };\n  } else {\n    // ie executes this code\n    create_canvas_for = function (img) {\n      return $('<var style=\"zoom:1;overflow:hidden;display:block;width:' + img.width + 'px;
1height:' + img.height + 'px;\"></var>').get(0);\n    };\n\n    add_shape_to = function (canvas, shape, coords, options, name) {\n      var fill, stroke, opacity, e;\n\n      for (var i in coords) {\n        coords[i] = parseInt(coords[i], 10);\n      }\n\n      fill = '<v:fill color=\"#' + options.fillColor + '\" opacity=\"' + (options.fill ? options.fillOpacity : 0) + '\" />';\n      stroke = options.stroke ? 'strokeweight=\"' + options.strokeWidth + '\" stroked=\"t\" strokecolor=\"#' + options.strokeColor + '\"' : 'stroked=\"f\"';\n      opacity = '<v:stroke opacity=\"' + options.strokeOpacity + '\"/>';\n\n      if (shape == 'rect') {\n        e = $('<v:rect name=\"' + name + '\" filled=\"t\" ' + stroke + ' style=\"zoom:1;margin:0;padding:0;display:block;position:absolute;left:' + coords[0] + 'px;top:' + coords[1] + 'px;width:' + (coords[2] - coords[0]) + 'px;height:' + (coords[3] - coords[1]) + 'px;\"></v:rect>');\n      } else if (shape == 'poly') {\n        e = $('<v:shape name=\"' + name + '\" filled=\"t\" ' + stroke + ' coordorigin=\"0,0\" coordsize=\"' + canvas.width + ',' + canvas.height + '\" path=\"m ' + coords[0] + ',' + coords[1] + ' l ' + coords.join(',') + ' x e\" style=\"zoom:1;margin:0;padding:0;display:block;position:absolute;top:0px;left:0px;width:' + canvas.width + 'px;height:' + canvas.height + 'px;\"></v:shape>');\n      } else if (shape == 'circ') {\n        e = $('<v:oval name=\"' + name + '\" filled=\"t\" ' + stroke + ' style=\"zoom:1;margin:0;padding:0;display:block;position:absolute;left:' + (coords[0] - coords[2]) + 'px;top:' + (coords[1] - coords[2]) + 'px;width:' + coords[2] * 2 + 'px;height:' + coords[2] * 2 + 'px;\"></v:oval>');\n      }\n\n      e.get(0).innerHTML = fill + opacity;\n      $(canvas).append(e);\n    };\n\n    clear_canvas = function (canvas) {\n      // jquery1.8 + ie7\n      var $html = $(\"<div>\" + canvas.innerHTML + \"</div>\");\n      $html.children('[name=highlighted]').remove();\n      $(canvas).html($html.html());\n    };\n  }\n\n  shape_from_area = function (area) {\n    var i,\n        coords,\n        shape = (area.getAttribute('shape') || 'rect').toLowerCase().substr(0, 4);\n\n    if (shape === 'defa') {\n      // 'default' doesn't really apply to what we're doing; it's the background state\n      return;\n    }\n\n    coords = (area.getAttribute('coords') || '').split(',');\n\n    for (i = 0; i < coords.length; i++) {\n      coords[i] = parseFloat(coords[i]);\n    }\n\n    return [shape, coords];\n  };\n\n  options_from_area = function (area, options) {\n    var $area = $(area);\n    return $.extend({}, options, $.metadata ? $area.metadata() : false, $area.data('maphilight'));\n  };\n\n  is_image_loaded = function (img) {\n    if (!img.complete) {\n      return false;\n    } // IE\n\n\n    if (typeof img.naturalWidth != \"undefined\" && img.naturalWidth === 0) {\n      return false;\n    } // Others\n\n\n    return true;\n  };\n\n  canvas_style = {\n    position: 'absolute',\n    left: 0,\n    top: 0,\n    padding: 0,\n    border: 0\n  };\n  var ie_hax_done = false;\n\n  $.fn.maphilight = function (opts) {\n    opts = $.extend({}, $.fn.maphilight.defaults, opts);\n\n    if (!has_canvas && !ie_hax_done) {\n      $(window).ready(function () {\n        document.namespaces.add(\"v\", \"urn:schemas-microsoft-com:vml\");\n        var style = document.createStyleSheet();\n        var shapes = ['shape', 'rect', 'oval', 'circ', 'fill', 'stroke', 'imagedata', 'group', 'textbox'];\n        $.each(shapes, function () {\n          style.addRule('v\\\\:' + this, \"behavior: url(#default#VML); antialias:true\");\n        });\n      });\n      ie_hax_done = true;\n    }\n\n    return this.each(function () {\n      var img, wrap, options, map, canvas, canvas_always, highlighted_shape, usemap, imgSrc;\n      img = $(this);\n\n      if (!is_image_loaded(this)) {\n        // If the image isn't fully loaded, this won't work right.  Try again later.\n        return window.setTimeout(function () {\n          img.maphilight(opts);\n        }, 200);\n      }\n\n      options = $.extend({}, opts, $.metadata ? img.metadata() : false, img.data('maphilight')); // jQuery bug with Opera, results in full-url#usemap being returned from jQuery's attr.\n      // So use raw getAttribute instead.\n\n      usemap = img.get(0).getAttribute('usemap');\n\n      if (!usemap) {\n        return;\n      }\n\n      map = $('map[name=\"' + usemap.substr(1) + '\"]');\n\n      if (!(img.is('img,input[type=\"image\"]') && usemap && map.length > 0)) {\n        return;\n      }\n\n      if (img.hasClass('maphilighted')) {\n        // We're redrawing an old map, probably to pick up changes to the options.\n        // Just clear out all the old stuff.\n        var wrapper = img.parent();\n        img.insertBefore(wrapper);\n        wrapper.remove();\n        $(map).unbind('.maphilight');\n      } //Formating the image source. IE > 9 has issue with new line characters\n\n\n      imgSrc = this.src.replace(/[\\n\\r]/g, '');\n      wrap = $('<div></div>').css({\n        display: 'block',\n        background: 'url(\"' + this.src + '\")',\n        \"background-size\": 'contain',\n        \"background-repeat\": 'no-repeat',\n        position: 'relative',\n        padding: 0,\n        width: this.width,\n        height: this.height\n      });\n\n      if (options.wrapClass) {\n        if (options.wrapClass === true) {\n          wrap.addClass($(this).attr('class'));\n        } else {\n          wrap.addClass(options.wrapClass);\n        }\n      } // Firefox has a bug that prevents tabbing into the image map if\n      // we set opacity of the image to 0, but very nearly 0 works!\n\n\n      img.before(wrap).css('opacity', 0.0000000001).css(canvas_style).remove();
1\n\n      if (has_VML) {\n        img.css('filter', 'Alpha(opacity=0)');\n      }\n\n      wrap.append(img);\n      canvas = create_canvas_for(this);\n      $(canvas).css(canvas_style);\n      canvas.height = this.height;\n      canvas.width = this.width;\n      $(map).bind('alwaysOn.maphilight', function () {\n        // Check for areas with alwaysOn set. These are added to a *second* canvas,\n        // which will get around flickering during fading.\n        if (canvas_always) {\n          clear_canvas(canvas_always);\n        }\n\n        if (!has_canvas) {\n          $(canvas).empty();\n        }\n\n        $(map).find('area[coords]').each(function () {\n          var shape, area_options;\n          area_options = options_from_area(this, options);\n\n          if (area_options.alwaysOn) {\n            if (!canvas_always && has_canvas) {\n              canvas_always = create_canvas_for(img[0]);\n              $(canvas_always).css(canvas_style);\n              canvas_always.width = img[0].width;\n              canvas_always.height = img[0].height;\n              img.before(canvas_always);\n            }\n\n            area_options.fade = area_options.alwaysOnFade; // alwaysOn shouldn't fade in initially\n\n            shape = shape_from_area(this);\n\n            if (!shape) {\n              return;\n            }\n\n            if (has_canvas) {\n              add_shape_to(canvas_always, shape[0], shape[1], area_options, \"\");\n            } else {\n              add_shape_to(canvas, shape[0], shape[1], area_options, \"\");\n            }\n          }\n        });\n      }).trigger('alwaysOn.maphilight').bind('mouseover.maphilight focusin.maphilight', function (e) {\n        var shape,\n            area_options,\n            area = e.target;\n        area_options = options_from_area(area, options);\n\n        if (!area_options.neverOn && !area_options.alwaysOn) {\n          shape = shape_from_area(area);\n\n          if (!shape) {\n            return;\n          }\n\n          add_shape_to(canvas, shape[0], shape[1], area_options, \"highlighted\");\n\n          if (area_options.groupBy) {\n            if (typeof area_options.groupBy == 'string') {\n              area_options.groupBy = [area_options.groupBy];\n            }\n\n            var el = $(this);\n            $.each(area_options.groupBy, function (index, groupitem) {\n              var areas; // two ways groupBy might work; attribute and selector\n\n              if (/^[a-zA-Z][\\-a-zA-Z]+$/.test(groupitem)) {\n                areas = map.find('area[' + groupitem + '=\"' + el.attr(groupitem) + '\"]');\n              } else {\n                areas = map.find(groupitem);\n              }\n\n              var first = this;\n              areas.each(function () {\n                if (this != first) {\n                  var subarea_options = options_from_area(this, options);\n\n                  if (!subarea_options.neverOn && !subarea_options.alwaysOn) {\n                    var shape = shape_from_area(this);\n                    add_shape_to(canvas, shape[0], shape[1], subarea_options, \"highlighted\");\n                  }\n                }\n              });\n            });\n          } // workaround for IE7, IE8 not rendering the final rectangle in a group\n\n\n          if (!has_canvas) {\n            $(canvas).append('<v:rect></v:rect>');\n          }\n        }\n      }).bind('mouseout.maphilight focusout.maphilight', function (e) {\n        clear_canvas(canvas);\n      });\n      img.before(canvas); // if we put this after, the mouseover events wouldn't fire.\n\n      img.addClass('maphilighted');\n    });\n  };\n\n  $.fn.maphilight.defaults = {\n    fill: true,\n    fillColor: '000000',\n    fillOpacity: 0.2,\n    stroke: true,\n    strokeColor: 'ff0000',\n    strokeOpacity: 1,\n    strokeWidth: 1,\n    fade: true,\n    alwaysOn: false,\n    neverOn: false,\n    groupBy: false,\n    wrapClass: true,\n    // plenty of shadow:\n    shadow: false,\n    shadowX: 0,\n    shadowY: 0,\n    shadowRadius: 6,\n    shadowColor: '000000',\n    shadowOpacity: 0.8,\n    shadowPosition: 'outside',\n    shadowFrom: false\n  };\n});\n\n//# sourceURL=webpack://Transgrid-webpack/./src/scripts/plugins/jquery.maphilight.js?")},1:(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("/* provided dependency */ var jQuery = __webpack_require__(609);\n(function ($) {\n  // default settings\n  var defaultSettings = {\n    // DESKTOP MODE SETTINGS\n    logo_align: 'left',\n    // align the logo left or right. options (left) or (right)\n    links_align: 'left',\n    // align the links left or right. options (left) or (right)\n    socialBar_align: 'left',\n    // align the socialBar left or right. options (left) or (right)\n    searchBar_align: 'right',\n    // align the search bar left or right. options (left) or (right)\n    trigger: 'click',\n    // show drop down using click or hover. options (hover) or (click)\n    effect: 'fade',\n    // drop down effects. options (fade), (scale), (expand-top), (expand-bottom), (expand-left), (expand-right)\n    effect_speed: 400,\n    // drop down show speed in milliseconds\n    sibling: true,\n    // hide the others showing drop downs if this option true. this option works on if the trigger option is \"click\". options (true) or (false)\n    outside_click_close: true,\n    // hide the showing drop downs when user click outside the menu. this option works if the trigger option is \"click\". options (true) or (false)\n    top_fixed: false,\n    // fixed the menu top of the screen. options (true) or (false)\n    sticky_header: false,\n    // menu fixed on top when scroll down down. options (true) or (false)\n    sticky_header_height: 200,\n    // sticky header height top of the screen. activate sticky header when meet the height. option change the height in px value.\n    menu_position: 'horizontal',\n    // change the menu position. options (horizontal), (vertical-left) or (vertical-right)\n    full_width: true,\n    // make menu full width. options (true) or (false)\n    // MOBILE MODE SETTINGS\n    mobile_settings: {\n      collapse: false,\n      // collapse the menu on click. options (true) or (false)\n      sibling: true,\n      // hide the others showing drop downs when click on current drop down. options (true) or (false)\n      scrollBar: true,\n      // enable the scroll bar. options (true) or (false)\n      scrollBar_height: 400,\n      // scroll bar height in px value. this option works if the scrollBar option true.\n      top_fixed: false,\n      // fixed menu top of the screen. options (true) or (false)\n      sticky_header: false,\n      // menu fixed on top when scroll down down. options (true) or (false)\n      sticky_header_height: 200 // sticky header height top of the screen. activate sticky header when meet the height. option change the height in px value.\n\n    }\n  }; // extend function\n\n  $.fn.megaMenu = function (settings) {\n    settings = $.extend({}, defaultSettings, settings || {});\n    return this.each(function () {\n      // variables\n      var $this = $(this),\n          $ul = 'ul',\n          $li = 'li',\n          $a = 'a',\n          menu_logo = $this.find('.menu-logo'),\n          menu_logo_li = menu_logo.children($li),\n          menu_links = $this.find('.menu-links'),\n          menu_links_li = menu_links.children($li),\n          menu_socialBar = $this.find('.menu-social-bar'),\n          menu_searchBar = $this.find('.menu-search-bar'),\n          mobile_trigger_button = '.menu-mobile-collapse-trigger',\n          mobile_dropDown_trigger = '.mobileTriggerButton',\n          desktop_dropDown_trigger = '.desktopTriggerButton',\n          activeClass = 'active',\n          activeTrigger = 'activeTrigger',\n          activeTriggerMobile = 'activeTriggerMobile',\n          dropDown = '.drop-down-multilevel, .drop-down, .drop-down-tab-bar',\n          desktopTopFixed = 'desktopTopFixed',\n          mobileTopFixed = 'mobileTopFixed',\n          fullWidth = 'menuFullWidth',\n          Canvas; // Main Object\n\n      Canvas = {\n        // menu full width function\n        menu_full_width: function () {\n          // check if the full_width options true\n          if (settings.full_width === true) {\n            // add class menu full width\n            $this.addClass(fullWidth);\n          }\n        },\n        // logo align function\n        logo_Align: function () {\n          // check is the logo align right\n          if (settings.logo_align === 'right') {\n            // add class menu align right\n            menu_logo.addClass('menu-logo-align-right');\n          }\n        },\n        // menu links align right\n        links_Align: function () {\n          // check if the links align right\n          if (settings.links_align === 'right') {\n            // add class menu menu links align\n            menu_links.addClass('menu-links-align-right');\n          }\n        },\n        // menu social bar align right\n        social_bar_Align: function () {\n          // check if the social bar align right\n          if (settings.socialBar_align === 'right') {\n            // add class menu social bar align\n            menu_socialBar.addClass('menu-social-bar-right');\n          }\n        },\n        // menu search bar align right\n        search_bar_Align: function () {\n          // check if the search bar align right\n          if (settings.searchBar_align === 'left') {\n            // add class menu search bar align\n            menu_searchBar.addClass('menu-search-bar-left');\n          }\n        },\n        // mobile collapse trigger button\n        collapse_trigger_button: function () {\n          // check if the collapse true\n          if (settings.mobile_settings.collapse === true) {\n            // append the mobile collapse trigger button\n            menu_logo_li.append('<div class=\"menu-mobile-collapse-trigger\">' + '<span></span>' + '</div>'); // hide the menu links, menu social bar\n\n            var drop_down = menu_links.add(menu_socialBar);\n            drop_down.hide(0); // apply css\n\n            menu_searchBar.addClass(activeClass); // add the click trigger\n\n            $this.find(mobile_trigger_button).on('click', function () {\n              // check if the menu links and menu social bar hide\n              if (drop_down.is(':hidden')) {\
1n                // show the drop down\n                $(this).addClass(activeClass);\n                drop_down.show(0);\n              } else {\n                // hide the drop down\n                $(this).removeClass(activeClass);\n                drop_down.hide(0);\n              }\n\n              return false;\n            });\n          }\n        },\n        // switch effects\n        switch_effects: function () {\n          switch (settings.effect) {\n            case 'fade':\n              $this.find(dropDown).addClass('effect-fade');\n              break;\n\n            case 'scale':\n              $this.find(dropDown).addClass('effect-scale');\n              break;\n\n            case 'expand-top':\n              $this.find(dropDown).addClass('effect-expand-top');\n              break;\n\n            case 'expand-bottom':\n              $this.find(dropDown).addClass('effect-expand-bottom');\n              break;\n\n            case 'expand-left':\n              $this.find(dropDown).addClass('effect-expand-left');\n              break;\n\n            case 'expand-right':\n              $this.find(dropDown).addClass('effect-expand-right');\n              break;\n          }\n        },\n        // transition delay\n        transition_delay: function () {\n          // add the effects class on drop down\n          $this.find(dropDown).css({\n            'webkitTransition': 'none',\n            'transition': 'none'\n          });\n        },\n        // hover trigger for desktop mode\n        hover_trigger: function () {\n          // check if the trigger hover\n          if (settings.trigger === 'hover') {\n            // add the effects class on drop down\n            Canvas.transition_delay(); // add hover trigger\n\n            $this.find(dropDown).parents($li).addClass('hoverTrigger'); // switch effects\n\n            Canvas.switch_effects();\n          }\n        },\n        // click trigger for mobile mode\n        mobile_trigger: function () {\n          // append the mobile trigger div\n          $this.find(dropDown).prev($a).append('<div class=\"mobileTriggerButton\"></div>'); // add the click trigger on mobile trigger div\n\n          $this.find(mobile_dropDown_trigger).on('click', function () {\n            // variables\n            var elem = $(this),\n                parents = elem.parents($a),\n                drop_down = parents.next(dropDown); // check if the drop down is hidden\n\n            if (drop_down.is(':hidden')) {\n              // check if the sibling true\n              if (settings.mobile_settings.sibling === true) {\n                // hide the others opens drop downs\n                elem.parents($this).siblings($ul + ',' + $li).find(dropDown).hide(0); // remove active class\n\n                elem.parents($this).siblings($li).removeClass(activeTriggerMobile);\n                elem.parents($this).siblings($ul).find($li).removeClass(activeTriggerMobile);\n              } // add active class\n\n\n              parents.parent($li).addClass(activeTriggerMobile); // show drop down\n\n              drop_down.show(0);\n            } else {\n              // remove active class\n              parents.parent($li).removeClass(activeTriggerMobile); // hide drop down\n\n              drop_down.hide(0);\n            } // stop a tag going to anywhere\n\n\n            return false;\n          }); // stop icons click behaviour\n\n          $this.find('i.fa.fa-indicator').on('click', function () {\n            return false;\n          });\n        },\n        // click trigger for desktop mode\n        click_trigger: function () {\n          // check if the trigger click\n          if (settings.trigger === 'click') {\n            // append the desktop trigger div\n            $this.find(dropDown).prev($a).append('<div class=\"desktopTriggerButton\"></div>'); // add click trigger div\n\n            $this.find(dropDown).parents($li).addClass('ClickTrigger'); // add the transition on drop down\n\n            Canvas.switch_effects();\n            Canvas.transition_delay(); // add the click trigger on desktop trigger div\n\n            $this.find(desktop_dropDown_trigger).on('click', function (event) {\n              event.stopPropagation();\n              event.stopImmediatePropagation(); // variables\n\n              var elem = $(this),\n                  parents = elem.parents($a),\n                  drop_down = parents.next(dropDown); // check if the drop down is hidden\n\n              if (!drop_down.hasClass(activeClass)) {\n                // check if the sibling true\n                if (settings.sibling === true) {\n                  // hide the others opens drop downs\n                  elem.parents($this).siblings($ul + ',' + $li).find(dropDown).removeClass(activeClass); // remove active class\n\n                  elem.parents($this).siblings($li).removeClass(activeTrigger);\n                  elem.parents($this).siblings($ul).find($li).removeClass(activeTrigger);\n                } // add active class\n\n\n                parents.parent($li).addClass(activeTrigger); // show drop down\n\n                drop_down.addClass(activeClass);\n              } else {\n                // remove active class\n                parents.parent($li).removeClass(activeTrigger); // hide drop down\n\n                drop_down.removeClass(activeClass);\n              } // stop a tag going to anywhere\n              //return false;\n\n            });\n          }\n        },\n        // outside click to close drop downs\n        outside_close: function () {\n          // check if the outside close setting true for desktop\n          if (settings.outside_click_close === true && settings.trigger === 'click' && $this.find(dropDown).is(':visible')) {\n            // add the click trigger on document\n            $(document).off('click').on('click', function (event) {\n              if (!$this.is(event.target) && $this.has(event.target).length === 0) {\n                $this.find(dropDown).removeClass(activeClass);\n                menu_links_li.removeClass('activeTrigger');\n              }\n            });\n          } else {\n            // on mobile mode off the click trigger\n            $(document).off('click');\n          }\n        },\n        // scroll bar for mobile mode\n        scroll_bar: function () {\n          // check if the scroll bar true\n          if (settings.mobile_settings.scrollBar === true) {\n            // add the css on menu links\n            menu_links.css({\n              'maxHeight': settings.mobile_settings.scrollBar_height + 'px',\n              'overflow': 'auto'\n            });\n          }\n        },\n        // menu fixed on top\n        top_Fixed: function () {\n          // check if the top fixed true for desktop mode\n          if (settings.top_fixed === true) {\n            $this.addClass(desktopTopFixed);\n          } // mobile mode top fixed\n\n\n          if (settings.mobile_settings.top_fixed) {\n            $this.addClass(mobileTopFixed);\n          }\n        },\n        // sticky header\n        sticky_Header: function () {\n          // variable\n          var $window = $(window),\n              scrollFlag = true,\n              scrollFlagMobile = true; // media query\n\n          if (!$this.find(dropDown).is(':hidden')) {\
1n            // off the scroll\n            $window.off('scroll'); // check if the sticky header true\n\n            if (settings.sticky_header === true && settings.menu_position === 'horizontal' && settings.top_fixed === false) {\n              // scroll function\n              $window.on('scroll', function () {\n                if ($window.scrollTop() > settings.sticky_header_height) {\n                  // check if flag true\n                  if (scrollFlag === true) {\n                    // fade out\n                    $this.fadeOut(200, function () {\n                      // add class and fade in\n                      $(this).addClass(desktopTopFixed).fadeIn(200);\n                    }); // scroll flag false\n\n                    scrollFlag = false;\n                  }\n                } else {\n                  // check if flag false\n                  if (scrollFlag === false) {\n                    // fade out\n                    $this.fadeOut(200, function () {\n                      // add class and fade in\n                      $(this).removeClass(desktopTopFixed).fadeIn(200);\n                    }); // scroll flag true\n\n                    scrollFlag = true;\n                  }\n                }\n              });\n            }\n          } else {\n            // off the scroll\n            $window.off('scroll'); // check if the mobile sticky true\n\n            if (settings.mobile_settings.sticky_header === true && settings.top_fixed === false) {\n              // on the scroll\n              $window.on('scroll', function () {\n                if ($window.scrollTop() > settings.mobile_settings.sticky_header_height) {\n                  // check if flag true\n                  if (scrollFlagMobile === true) {\n                    // add class\n                    $this.addClass(mobileTopFixed); // flag false\n\n                    scrollFlagMobile = false;\n                  }\n                } else {\n                  // check if flag false\n                  if (scrollFlagMobile === false) {\n                    // remove class\n                    $this.removeClass(mobileTopFixed); // scroll flag true\n\n                    scrollFlagMobile = true;\n                  }\n                }\n              });\n            }\n          }\n        },\n        // position change\n        position: function () {\n          // check if the position left\n          if (settings.menu_position === 'vertical-left') {\n            $this.addClass('vertical-left');\n          } else if (settings.menu_position === 'vertical-right') {\n            $this.addClass('vertical-right');\n          }\n        }\n      }; // call functions\n\n      Canvas.menu_full_width();\n      Canvas.logo_Align();\n      Canvas.links_Align();\n      Canvas.social_bar_Align();\n      Canvas.search_bar_Align();\n      Canvas.collapse_trigger_button();\n      Canvas.hover_trigger();\n      Canvas.mobile_trigger();\n      Canvas.click_trigger();\n      Canvas.outside_close();\n      Canvas.scroll_bar();\n      Canvas.top_Fixed();\n      Canvas.sticky_Header();\n      Canvas.position(); // window resize function used for update the function on windows resize\n\n      $(window).resize(function () {\n        Canvas.outside_close();\n        Canvas.sticky_Header();\n      });\n    });\n  };\n  /*global $, jQuery, document*/\n\n})(jQuery);\n\n//# sourceURL=webpack://Transgrid-webpack/./src/scripts/plugins/jquery.mega-menu.js?")},623:(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("/* provided dependency */ var jQuery = __webpack_require__(609);\n/*\r\n* rwdImageMaps jQuery plugin v1.6\r\n*\r\n* Allows image maps to be used in a responsive design by recalculating the area coordinates to match the actual image size on load and window.resize\r\n*\r\n* Copyright (c) 2016 Matt Stow\r\n* https://github.com/stowball/jQuery-rwdImageMaps\r\n* http://mattstow.com\r\n* Licensed under the MIT license\r\n*/\n;\n\n(function ($) {\n  $.fn.rwdImageMaps = function () {\n    var $img = this;\n\n    var rwdImageMap = function () {\n      $img.each(function () {\n        if (typeof $(this).attr('usemap') == 'undefined') return;\n        var that = this,\n            $that = $(that); // Since WebKit doesn't know the height until after the image has loaded, perform everything in an onload copy\n\n        $('<img />').on('load', function () {\n          var attrW = 'width',\n              attrH = 'height',\n              w = $that.attr(attrW),\n              h = $that.attr(attrH);\n\n          if (!w || !h) {\n            var temp = new Image();\n            temp.src = $that.attr('src');\n            if (!w) w = temp.width;\n            if (!h) h = temp.height;\n          }\n\n          var wPercent = $that.width() / 100,\n              hPercent = $that.height() / 100,\n              map = $that.attr('usemap').replace('#', ''),\n              c = 'coords';\n          $('map[name=\"' + map + '\"]').find('area').each(function () {\n            var $this = $(this);\n            if (!$this.data(c)) $this.data(c, $this.attr(c));\n            var coords = $this.data(c).split(','),\n                coordsPercent = new Array(coords.length);\n\n            for (var i = 0; i < coordsPercent.length; ++i) {\n              if (i % 2 === 0) coordsPercent[i] = parseInt(coords[i] / w * 100 * wPercent);else coordsPercent[i] = parseInt(coords[i] / h * 100 * hPercent);\n            }\n\n            $this.attr(c, coordsPercent.toString());\n          });\n        }).attr('src', $that.attr('src'));\n      });\n    };\n\n    $(window).resize(rwdImageMap).trigger('resize');\n    return this;\n  };\n})(jQuery);\n\n//# sourceURL=webpack://Transgrid-webpack/./src/scripts/plugins/jquery.rwdImageMaps.js?")},614:(module,exports,__webpack_require__)=>{eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\r\n* jquery-match-height 0.7.0 by @liabru\r\n* http://brm.io/jquery-match-height/\r\n* License MIT\r\n*/\n!function (t) {\n  "use strict";\n\n   true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(609)], __WEBPACK_AMD_DEFINE_FACTORY__ = (t),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : 0;\n}(function (t) {\n  var e = -1,\n      o = -1,\n      i = function (t) {\n    return parseFloat(t) || 0;\n  },\n      a = function (e) {\n    var o = 1,\n        a = t(e),\n        n = null,\n        r = [];\n    return a.each(function () {\n      var e = t(this),\n          a = e.offset().top - i(e.css("margin-top")),\n          s = r.length > 0 ? r[r.length - 1] : null;\n      null === s ? r.push(e) : Math.floor(Math.abs(n - a)) <= o ? r[r.length - 1] = s.add(e) : r.push(e), n = a;\n    }), r;\n  },\n      n = function (e) {\n    var o = {\n      byRow: !0,\n      property: "height",\n      target: null,\n      remove: !1\n    };\n    return "object" == typeof e ? t.extend(o, e) : ("boolean" == typeof e ? o.byRow = e : "remove" === e && (o.remove = !0), o);\n  },\n      r = t.fn.matchHeight = function (e) {\n    var o = n(e);\n\n    if (o.remove) {\n      var i = this;\n      return this.css(o.property, ""), t.each(r._groups, function (t, e) {\n        e.elements = e.elements.not(i);\n      }), this;\n    }\n\n    return this.length <= 1 && !o.target ? this : (r._groups.push({\n      elements: this,\n      options: o\n    }), r._apply(this, o), this);\n  };\n\n  r.version = "0.7.0", r._groups = [], r._throttle = 80, r._maintainScroll = !1, r._beforeUpdate = null, r._afterUpdate = null, r._rows = a, r._parse = i, r._parseOptions = n, r._apply = function (e, o) {\
1n    var s = n(o),\n        h = t(e),\n        l = [h],\n        c = t(window).scrollTop(),\n        p = t("html").outerHeight(!0),\n        d = h.parents().filter(":hidden");\n    return d.each(function () {\n      var e = t(this);\n      e.data("style-cache", e.attr("style"));\n    }), d.css("display", "block"), s.byRow && !s.target && (h.each(function () {\n      var e = t(this),\n          o = e.css("display");\n      "inline-block" !== o && "flex" !== o && "inline-flex" !== o && (o = "block"), e.data("style-cache", e.attr("style")), e.css({\n        display: o,\n        "padding-top": "0",\n        "padding-bottom": "0",\n        "margin-top": "0",\n        "margin-bottom": "0",\n        "border-top-width": "0",\n        "border-bottom-width": "0",\n        height: "100px",\n        overflow: "hidden"\n      });\n    }), l = a(h), h.each(function () {\n      var e = t(this);\n      e.attr("style", e.data("style-cache") || "");\n    })), t.each(l, function (e, o) {\n      var a = t(o),\n          n = 0;\n      if (s.target) n = s.target.outerHeight(!1);else {\n        if (s.byRow && a.length <= 1) return void a.css(s.property, "");\n        a.each(function () {\n          var e = t(this),\n              o = e.attr("style"),\n              i = e.css("display");\n          "inline-block" !== i && "flex" !== i && "inline-flex" !== i && (i = "block");\n          var a = {\n            display: i\n          };\n          a[s.property] = "", e.css(a), e.outerHeight(!1) > n && (n = e.outerHeight(!1)), o ? e.attr("style", o) : e.css("display", "");\n        });\n      }\n      a.each(function () {\n        var e = t(this),\n            o = 0;\n        s.target && e.is(s.target) || ("border-box" !== e.css("box-sizing") && (o += i(e.css("border-top-width")) + i(e.css("border-bottom-width")), o += i(e.css("padding-top")) + i(e.css("padding-bottom"))), e.css(s.property, n - o + "px"));\n      });\n    }), d.each(function () {\n      var e = t(this);\n      e.attr("style", e.data("style-cache") || null);\n    }), r._maintainScroll && t(window).scrollTop(c / p * t("html").outerHeight(!0)), this;\n  }, r._applyDataApi = function () {\n    var e = {};\n    t("[data-match-height], [data-mh]").each(function () {\n      var o = t(this),\n          i = o.attr("data-mh") || o.attr("data-match-height");\n      i in e ? e[i] = e[i].add(o) : e[i] = o;\n    }), t.each(e, function () {\n      this.matchHeight(!0);\n    });\n  };\n\n  var s = function (e) {\n    r._beforeUpdate && r._beforeUpdate(e, r._groups), t.each(r._groups, function () {\n      r._apply(this.elements, this.options);\n    }), r._afterUpdate && r._afterUpdate(e, r._groups);\n  };\n\n  r._update = function (i, a) {\n    if (a && "resize" === a.type) {\n      var n = t(window).width();\n      if (n === e) return;\n      e = n;\n    }\n\n    i ? -1 === o && (o = setTimeout(function () {\n      s(a), o = -1;\n    }, r._throttle)) : s(a);\n  }, t(r._applyDataApi), t(window).bind("load", function (t) {\n    r._update(!1, t);\n  }), t(window).bind("resize orientationchange", function (t) {\n    r._update(!0, t);\n  });\n});\n\n//# sourceURL=webpack://Transgrid-webpack/./src/scripts/plugins/matchHeight-min.js?')},90:module=>{eval("(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif( true && 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 = {};
1\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};
1\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;
1\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.naturalWi
1dth > 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}
1\n));\n\n\n//# sourceURL=webpack://Transgrid-webpack/./node_modules/lazysizes/lazysizes.js?")},145:(module,exports,__webpack_require__)=>{eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(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( true && module.exports){\n\t\tfactory(__webpack_require__(90));\n\t} else if (true) {\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(90)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\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);
1\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\n\n//# sourceURL=webpack://Transgrid-webpack/./node_modules/lazysizes/plugins/bgset/ls.bgset.js?")},501:(module,exports,__webpack_require__)=>{eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(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( true && module.exports){\n\t\tfactory(__webpack_require__(90));\n\t} else if (true) {\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(90)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\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)/;
1\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};
1\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\n\n//# sourceURL=webpack://Transgrid-webpack/./node_modules/lazysizes/plugins/respimg/ls.respimg.js?")},729:(module,exports,__webpack_require__)=>{eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! Magnific Popup - v1.1.0 - 2016-02-20\n* http://dimsemenov.com/plugins/magnific-popup/\n* Copyright (c) 2016 Dmitry Semenov; */\n;(function (factory) { \nif (true) { \n // AMD. Register as an anonymous module. \n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(609)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); \n } else {} \n }(function($) { \n\n/*>>core*/\n/**\n * \n * Magnific Popup Core JS file\n * \n */\n\n\n/**\n * Private static constants\n */\nvar CLOSE_EVENT = 'Close',\n\tBEFORE_CLOSE_EVENT = 'BeforeClose',\n\tAFTER_CLOSE_EVENT = 'AfterClose',\n\tBEFORE_APPEND_EVENT = 'BeforeAppend',\n\tMARKUP_PARSE_EVENT = 'MarkupParse',\n\tOPEN_EVENT = 'Open',\n\tCHANGE_EVENT = 'Change',\n\tNS = 'mfp',\n\tEVENT_NS = '.' + NS,\n\tREADY_CLASS = 'mfp-ready',\n\tREMOVING_CLASS = 'mfp-removing',\n\tPREVENT_CLOSE_CLASS = 'mfp-prevent-close';\n\n\n/**\n * Private vars \n */\n/*jshint -W079 */\nvar mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this'\n\tMagnificPopup = function(){},\n\t_isJQ = !!(window.jQuery),\n\t_prevStatus,\n\t_window = $(window),\n\t_document,\n\t_prevContentType,\n\t_wrapClasses,\n\t_currPopupType;\n\n\n/**\n * Private functions\n */\nvar _mfpOn = function(name, f) {\n\t\tmfp.ev.on(NS + name + EVENT_NS, f);\n\t},\n\t_getEl = function(className, appendTo, html, raw) {\n\t\tvar el = document.createElement('div');\n\t\tel.className = 'mfp-'+className;
1\n\t\tif(html) {\n\t\t\tel.innerHTML = html;\n\t\t}\n\t\tif(!raw) {\n\t\t\tel = $(el);\n\t\t\tif(appendTo) {\n\t\t\t\tel.appendTo(appendTo);\n\t\t\t}\n\t\t} else if(appendTo) {\n\t\t\tappendTo.appendChild(el);\n\t\t}\n\t\treturn el;\n\t},\n\t_mfpTrigger = function(e, data) {\n\t\tmfp.ev.triggerHandler(NS + e, data);\n\n\t\tif(mfp.st.callbacks) {\n\t\t\t// converts \"mfpEventName\" to \"eventName\" callback and triggers it if it's present\n\t\t\te = e.charAt(0).toLowerCase() + e.slice(1);\n\t\t\tif(mfp.st.callbacks[e]) {\n\t\t\t\tmfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]);\n\t\t\t}\n\t\t}\n\t},\n\t_getCloseBtn = function(type) {\n\t\tif(type !== _currPopupType || !mfp.currTemplate.closeBtn) {\n\t\t\tmfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) );\n\t\t\t_currPopupType = type;\n\t\t}\n\t\treturn mfp.currTemplate.closeBtn;\n\t},\n\t// Initialize Magnific Popup only when called at least once\n\t_checkInstance = function() {\n\t\tif(!$.magnificPopup.instance) {\n\t\t\t/*jshint -W020 */\n\t\t\tmfp = new MagnificPopup();\n\t\t\tmfp.init();\n\t\t\t$.magnificPopup.instance = mfp;\n\t\t}\n\t},\n\t// CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr\n\tsupportsTransitions = function() {\n\t\tvar s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist\n\t\t\tv = ['ms','O','Moz','Webkit']; // 'v' for vendor\n\n\t\tif( s['transition'] !== undefined ) {\n\t\t\treturn true; \n\t\t}\n\t\t\t\n\t\twhile( v.length ) {\n\t\t\tif( v.pop() + 'Transition' in s ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\t\t\n\t\treturn false;\n\t};\n\n\n\n/**\n * Public functions\n */\nMagnificPopup.prototype = {\n\n\tconstructor: MagnificPopup,\n\n\t/**\n\t * Initializes Magnific Popup plugin. \n\t * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed\n\t */\n\tinit: function() {\n\t\tvar appVersion = navigator.appVersion;\n\t\tmfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener;\n\t\tmfp.isAndroid = (/android/gi).test(appVersion);\n\t\tmfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion);\n\t\tmfp.supportsTransition = supportsTransitions();\n\n\t\t// We disable fixed positioned lightbox on devices that don't handle it nicely.\n\t\t// If you know a better way of detecting this - let me know.\n\t\tmfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) );\n\t\t_document = $(document);\n\n\t\tmfp.popupsCache = {};\n\t},\n\n\t/**\n\t * Opens popup\n\t * @param  data [description]\n\t */\n\topen: function(data) {\n\n\t\tvar i;\n\n\t\tif(data.isObj === false) { \n\t\t\t// convert jQuery collection to array to avoid conflicts later\n\t\t\tmfp.items = data.items.toArray();\n\n\t\t\tmfp.index = 0;\n\t\t\tvar items = data.items,\n\t\t\t\titem;\n\t\t\tfor(i = 0; i < items.length; i++) {\n\t\t\t\titem = items[i];\n\t\t\t\tif(item.parsed) {\n\t\t\t\t\titem = item.el[0];\n\t\t\t\t}\n\t\t\t\tif(item === data.el[0]) {\n\t\t\t\t\tmfp.index = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tmfp.items = $.isArray(data.items) ? data.items : [data.items];\n\t\t\tmfp.index = data.index || 0;\n\t\t}\n\n\t\t// if popup is already opened - we just update the content\n\t\tif(mfp.isOpen) {\n\t\t\tmfp.updateItemHTML();\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tmfp.types = []; \n\t\t_wrapClasses = '';\n\t\tif(data.mainEl && data.mainEl.length) {\n\t\t\tmfp.ev = data.mainEl.eq(0);\n\t\t} else {\n\t\t\tmfp.ev = _document;\n\t\t}\n\n\t\tif(data.key) {\n\t\t\tif(!mfp.popupsCache[data.key]) {\n\t\t\t\tmfp.popupsCache[data.key] = {};\n\t\t\t}\n\t\t\tmfp.currTemplate = mfp.popupsCache[data.key];\n\t\t} else {\n\t\t\tmfp.currTemplate = {};\n\t\t}\n\n\n\n\t\tmfp.st = $.extend(true, {}, $.magnificPopup.defaults, data ); \n\t\tmfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos;\n\n\t\tif(mfp.st.modal) {\n\t\t\tmfp.st.closeOnContentClick = false;\n\t\t\tmfp.st.closeOnBgClick = false;\n\t\t\tmfp.st.showCloseBtn = false;\n\t\t\tmfp.st.enableEscapeKey = false;\n\t\t}\n\t\t\n\n\t\t// Building markup\n\t\t// main containers are created only once\n\t\tif(!mfp.bgOverlay) {\n\n\t\t\t// Dark overlay\n\t\t\tmfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() {\
1n\t\t\t\tmfp.close();\n\t\t\t});\n\n\t\t\tmfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) {\n\t\t\t\tif(mfp._checkIfClose(e.target)) {\n\t\t\t\t\tmfp.close();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmfp.container = _getEl('container', mfp.wrap);\n\t\t}\n\n\t\tmfp.contentContainer = _getEl('content');\n\t\tif(mfp.st.preloader) {\n\t\t\tmfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading);\n\t\t}\n\n\n\t\t// Initializing modules\n\t\tvar modules = $.magnificPopup.modules;\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar n = modules[i];\n\t\t\tn = n.charAt(0).toUpperCase() + n.slice(1);\n\t\t\tmfp['init'+n].call(mfp);\n\t\t}\n\t\t_mfpTrigger('BeforeOpen');\n\n\n\t\tif(mfp.st.showCloseBtn) {\n\t\t\t// Close button\n\t\t\tif(!mfp.st.closeBtnInside) {\n\t\t\t\tmfp.wrap.append( _getCloseBtn() );\n\t\t\t} else {\n\t\t\t\t_mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) {\n\t\t\t\t\tvalues.close_replaceWith = _getCloseBtn(item.type);\n\t\t\t\t});\n\t\t\t\t_wrapClasses += ' mfp-close-btn-in';\n\t\t\t}\n\t\t}\n\n\t\tif(mfp.st.alignTop) {\n\t\t\t_wrapClasses += ' mfp-align-top';\n\t\t}\n\n\t\n\n\t\tif(mfp.fixedContentPos) {\n\t\t\tmfp.wrap.css({\n\t\t\t\toverflow: mfp.st.overflowY,\n\t\t\t\toverflowX: 'hidden',\n\t\t\t\toverflowY: mfp.st.overflowY\n\t\t\t});\n\t\t} else {\n\t\t\tmfp.wrap.css({ \n\t\t\t\ttop: _window.scrollTop(),\n\t\t\t\tposition: 'absolute'\n\t\t\t});\n\t\t}\n\t\tif( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) {\n\t\t\tmfp.bgOverlay.css({\n\t\t\t\theight: _document.height(),\n\t\t\t\tposition: 'absolute'\n\t\t\t});\n\t\t}\n\n\t\t\n\n\t\tif(mfp.st.enableEscapeKey) {\n\t\t\t// Close on ESC key\n\t\t\t_document.on('keyup' + EVENT_NS, function(e) {\n\t\t\t\tif(e.keyCode === 27) {\n\t\t\t\t\tmfp.close();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t_window.on('resize' + EVENT_NS, function() {\n\t\t\tmfp.updateSize();\n\t\t});\n\n\n\t\tif(!mfp.st.closeOnContentClick) {\n\t\t\t_wrapClasses += ' mfp-auto-cursor';\n\t\t}\n\t\t\n\t\tif(_wrapClasses)\n\t\t\tmfp.wrap.addClass(_wrapClasses);\n\n\n\t\t// this triggers recalculation of layout, so we get it once to not to trigger twice\n\t\tvar windowHeight = mfp.wH = _window.height();\n\n\t\t\n\t\tvar windowStyles = {};\n\n\t\tif( mfp.fixedContentPos ) {\n            if(mfp._hasScrollBar(windowHeight)){\n                var s = mfp._getScrollbarSize();\n                if(s) {\n                    windowStyles.marginRight = s;\n                }\n            }\n        }\n\n\t\tif(mfp.fixedContentPos) {\n\t\t\tif(!mfp.isIE7) {\n\t\t\t\twindowStyles.overflow = 'hidden';\n\t\t\t} else {\n\t\t\t\t// ie7 double-scroll bug\n\t\t\t\t$('body, html').css('overflow', 'hidden');\n\t\t\t}\n\t\t}\n\n\t\t\n\t\t\n\t\tvar classesToadd = mfp.st.mainClass;\n\t\tif(mfp.isIE7) {\n\t\t\tclassesToadd += ' mfp-ie7';\n\t\t}\n\t\tif(classesToadd) {\n\t\t\tmfp._addClassToMFP( classesToadd );\n\t\t}\n\n\t\t// add content\n\t\tmfp.updateItemHTML();\n\n\t\t_mfpTrigger('BuildControls');\n\n\t\t// remove scrollbar, add margin e.t.c\n\t\t$('html').css(windowStyles);\n\t\t\n\t\t// add everything to DOM\n\t\tmfp.bgOverlay.add(mfp.wrap).prependTo( mfp.st.prependTo || $(document.body) );\n\n\t\t// Save last focused element\n\t\tmfp._lastFocusedEl = document.activeElement;\n\t\t\n\t\t// Wait for next cycle to allow CSS transition\n\t\tsetTimeout(function() {\n\t\t\t\n\t\t\tif(mfp.content) {\n\t\t\t\tmfp._addClassToMFP(READY_CLASS);\n\t\t\t\tmfp._setFocus();\n\t\t\t} else {\n\t\t\t\t// if content is not defined (not loaded e.t.c) we add class only for BG\n\t\t\t\tmfp.bgOverlay.addClass(READY_CLASS);\n\t\t\t}\n\t\t\t\n\t\t\t// Trap the focus in popup\n\t\t\t_document.on('focusin' + EVENT_NS, mfp._onFocusIn);\n\n\t\t}, 16);\n\n\t\tmfp.isOpen = true;\n\t\tmfp.updateSize(windowHeight);\n\t\t_mfpTrigger(OPEN_EVENT);\n\n\t\treturn data;\n\t},\n\n\t/**\n\t * Closes the popup\n\t */\n\tclose: function() {\n\t\tif(!mfp.isOpen) return;\n\t\t_mfpTrigger(BEFORE_CLOSE_EVENT);\n\n\t\tmfp.isOpen = false;\n\t\t// for CSS3 animation\n\t\tif(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition )  {\n\t\t\tmfp._addClassToMFP(REMOVING_CLASS);
1\n\t\t\tsetTimeout(function() {\n\t\t\t\tmfp._close();\n\t\t\t}, mfp.st.removalDelay);\n\t\t} else {\n\t\t\tmfp._close();\n\t\t}\n\t},\n\n\t/**\n\t * Helper for close() function\n\t */\n\t_close: function() {\n\t\t_mfpTrigger(CLOSE_EVENT);\n\n\t\tvar classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' ';\n\n\t\tmfp.bgOverlay.detach();\n\t\tmfp.wrap.detach();\n\t\tmfp.container.empty();\n\n\t\tif(mfp.st.mainClass) {\n\t\t\tclassesToRemove += mfp.st.mainClass + ' ';\n\t\t}\n\n\t\tmfp._removeClassFromMFP(classesToRemove);\n\n\t\tif(mfp.fixedContentPos) {\n\t\t\tvar windowStyles = {marginRight: ''};\n\t\t\tif(mfp.isIE7) {\n\t\t\t\t$('body, html').css('overflow', '');\n\t\t\t} else {\n\t\t\t\twindowStyles.overflow = '';\n\t\t\t}\n\t\t\t$('html').css(windowStyles);\n\t\t}\n\t\t\n\t\t_document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS);\n\t\tmfp.ev.off(EVENT_NS);\n\n\t\t// clean up DOM elements that aren't removed\n\t\tmfp.wrap.attr('class', 'mfp-wrap').removeAttr('style');\n\t\tmfp.bgOverlay.attr('class', 'mfp-bg');\n\t\tmfp.container.attr('class', 'mfp-container');\n\n\t\t// remove close button from target element\n\t\tif(mfp.st.showCloseBtn &&\n\t\t(!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) {\n\t\t\tif(mfp.currTemplate.closeBtn)\n\t\t\t\tmfp.currTemplate.closeBtn.detach();\n\t\t}\n\n\n\t\tif(mfp.st.autoFocusLast && mfp._lastFocusedEl) {\n\t\t\t$(mfp._lastFocusedEl).focus(); // put tab focus back\n\t\t}\n\t\tmfp.currItem = null;\t\n\t\tmfp.content = null;\n\t\tmfp.currTemplate = null;\n\t\tmfp.prevHeight = 0;\n\n\t\t_mfpTrigger(AFTER_CLOSE_EVENT);\n\t},\n\t\n\tupdateSize: function(winHeight) {\n\n\t\tif(mfp.isIOS) {\n\t\t\t// fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2\n\t\t\tvar zoomLevel = document.documentElement.clientWidth / window.innerWidth;\n\t\t\tvar height = window.innerHeight * zoomLevel;\n\t\t\tmfp.wrap.css('height', height);\n\t\t\tmfp.wH = height;\n\t\t} else {\n\t\t\tmfp.wH = winHeight || _window.height();\n\t\t}\n\t\t// Fixes #84: popup incorrectly positioned with position:relative on body\n\t\tif(!mfp.fixedContentPos) {\n\t\t\tmfp.wrap.css('height', mfp.wH);\n\t\t}\n\n\t\t_mfpTrigger('Resize');\n\n\t},\n\n\t/**\n\t * Set content of popup based on current index\n\t */\n\tupdateItemHTML: function() {\n\t\tvar item = mfp.items[mfp.index];\n\n\t\t// Detach and perform modifications\n\t\tmfp.contentContainer.detach();\n\n\t\tif(mfp.content)\n\t\t\tmfp.content.detach();\n\n\t\tif(!item.parsed) {\n\t\t\titem = mfp.parseEl( mfp.index );\n\t\t}\n\n\t\tvar type = item.type;\n\n\t\t_mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]);\n\t\t// BeforeChange event works like so:\n\t\t// _mfpOn('BeforeChange', function(e, prevType, newType) { });\n\n\t\tmfp.currItem = item;\n\n\t\tif(!mfp.currTemplate[type]) {\n\t\t\tvar markup = mfp.st[type] ? mfp.st[type].markup : false;\n\n\t\t\t// allows to modify markup\n\t\t\t_mfpTrigger('FirstMarkupParse', markup);\n\n\t\t\tif(markup) {\n\t\t\t\tmfp.currTemplate[type] = $(markup);\n\t\t\t} else {\n\t\t\t\t// if there is no markup found we just define that template is parsed\n\t\t\t\tmfp.currTemplate[type] = true;\n\t\t\t}\n\t\t}\n\n\t\tif(_prevContentType && _prevContentType !== item.type) {\n\t\t\tmfp.container.removeClass('mfp-'+_prevContentType+'-holder');\n\t\t}\n\n\t\tvar newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]);\n\t\tmfp.appendContent(newContent, type);\n\n\t\titem.preloaded = true;\n\n\t\t_mfpTrigger(CHANGE_EVENT, item);\n\t\t_prevContentType = item.type;\n\n\t\t// Append container back after its content changed\n\t\tmfp.container.prepend(mfp.contentContainer);\n\n\t\t_mfpTrigger('AfterChange');\n\t},\n\n\n\t/**\n\t * Set HTML content of popup\n\t */\n\tappendContent: function(newContent, type) {\n\t\tmfp.content = newContent;\n\n\t\tif(newContent) {\n\t\t\tif(mfp.st.showCloseBtn && mfp.st.closeBtnInside &&\n\t\t\t\tmfp.currTemplate[type] === true) {\n\t\t\t\t// if there is no markup, we just append close button element inside\n\t\t\t\tif(!mfp.content.find('.mfp-close').length) {\n\t\t\t\t\tmfp.content.append(_getCloseBtn());\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmfp.content = newContent;\n\t\t\t}\n\t\t} else {\n\t\t\tmfp.content = '';\n\t\t}\n\n\t\t_mfpTrigger(BEFORE_APPEND_EVENT);\n\t\tmfp.container.addClass('mfp-'+type+'-holder');\n\n\t\tmfp.contentContainer.append(mfp.content);\n\t},\n\n\n\t/**\n\t * Creates Magnific Popup data object based on given data\n\t * @param  {int} index Index of item to parse\n\t */\n\tparseEl: function(index) {\n\t\tvar item = mfp.items[index],\n\t\t\ttype;\n\n\t\tif(item.tagName) {\n\t\t\titem = { el: $(item) };\n\t\t} else {\n\t\t\ttype = item.type;\n\t\t\titem = { data: item, src: item.src };\n\t\t}\n\n\t\tif(item.el) {\n\t\t\tvar types = mfp.types;\n\n\t\t\t// check for 'mfp-TYPE' class\n\t\t\tfor(var i = 0; i < types.length;
1 i++) {\n\t\t\t\tif( item.el.hasClass('mfp-'+types[i]) ) {\n\t\t\t\t\ttype = types[i];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\titem.src = item.el.attr('data-mfp-src');\n\t\t\tif(!item.src) {\n\t\t\t\titem.src = item.el.attr('href');\n\t\t\t}\n\t\t}\n\n\t\titem.type = type || mfp.st.type || 'inline';\n\t\titem.index = index;\n\t\titem.parsed = true;\n\t\tmfp.items[index] = item;\n\t\t_mfpTrigger('ElementParse', item);\n\n\t\treturn mfp.items[index];\n\t},\n\n\n\t/**\n\t * Initializes single popup or a group of popups\n\t */\n\taddGroup: function(el, options) {\n\t\tvar eHandler = function(e) {\n\t\t\te.mfpEl = this;\n\t\t\tmfp._openClick(e, el, options);\n\t\t};\n\n\t\tif(!options) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tvar eName = 'click.magnificPopup';\n\t\toptions.mainEl = el;\n\n\t\tif(options.items) {\n\t\t\toptions.isObj = true;\n\t\t\tel.off(eName).on(eName, eHandler);\n\t\t} else {\n\t\t\toptions.isObj = false;\n\t\t\tif(options.delegate) {\n\t\t\t\tel.off(eName).on(eName, options.delegate , eHandler);\n\t\t\t} else {\n\t\t\t\toptions.items = el;\n\t\t\t\tel.off(eName).on(eName, eHandler);\n\t\t\t}\n\t\t}\n\t},\n\t_openClick: function(e, el, options) {\n\t\tvar midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick;\n\n\n\t\tif(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn;\n\n\t\tif(disableOn) {\n\t\t\tif($.isFunction(disableOn)) {\n\t\t\t\tif( !disableOn.call(mfp) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else { // else it's number\n\t\t\t\tif( _window.width() < disableOn ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(e.type) {\n\t\t\te.preventDefault();\n\n\t\t\t// This will prevent popup from closing if element is inside and popup is already opened\n\t\t\tif(mfp.isOpen) {\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t}\n\n\t\toptions.el = $(e.mfpEl);\n\t\tif(options.delegate) {\n\t\t\toptions.items = el.find(options.delegate);\n\t\t}\n\t\tmfp.open(options);\n\t},\n\n\n\t/**\n\t * Updates text on preloader\n\t */\n\tupdateStatus: function(status, text) {\n\n\t\tif(mfp.preloader) {\n\t\t\tif(_prevStatus !== status) {\n\t\t\t\tmfp.container.removeClass('mfp-s-'+_prevStatus);\n\t\t\t}\n\n\t\t\tif(!text && status === 'loading') {\n\t\t\t\ttext = mfp.st.tLoading;\n\t\t\t}\n\n\t\t\tvar data = {\n\t\t\t\tstatus: status,\n\t\t\t\ttext: text\n\t\t\t};\n\t\t\t// allows to modify status\n\t\t\t_mfpTrigger('UpdateStatus', data);\n\n\t\t\tstatus = data.status;\n\t\t\ttext = data.text;\n\n\t\t\tmfp.preloader.html(text);\n\n\t\t\tmfp.preloader.find('a').on('click', function(e) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t});\n\n\t\t\tmfp.container.addClass('mfp-s-'+status);\n\t\t\t_prevStatus = status;\n\t\t}\n\t},\n\n\n\t/*\n\t\t\"Private\" helpers that aren't private at all\n\t */\n\t// Check to close popup or not\n\t// \"target\" is an element that was clicked\n\t_checkIfClose: function(target) {\n\n\t\tif($(target).hasClass(PREVENT_CLOSE_CLASS)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar closeOnContent = mfp.st.closeOnContentClick;\n\t\tvar closeOnBg = mfp.st.closeOnBgClick;\n\n\t\tif(closeOnContent && closeOnBg) {\n\t\t\treturn true;\n\t\t} else {\n\n\t\t\t// We close the popup if click is on close button or on preloader. Or if there is no content.\n\t\t\tif(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// if click is outside the content\n\t\t\tif(  (target !== mfp.content[0] && !$.contains(mfp.content[0], target))  ) {\n\t\t\t\tif(closeOnBg) {\n\t\t\t\t\t// last check, if the clicked element is in DOM, (in case it's removed onclick)\n\t\t\t\t\tif( $.contains(document, target) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if(closeOnContent) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t}\n\t\treturn false;\n\t},\n\t_addClassToMFP: function(cName) {\n\t\tmfp.bgOverlay.addClass(cName);\n\t\tmfp.wrap.addClass(cName);\n\t},\n\t_removeClassFromMFP: function(cName) {\n\t\tthis.bgOverlay.removeClass(cName);\n\t\tmfp.wrap.removeClass(cName);\n\t},\n\t_hasScrollBar: function(winHeight) {\n\t\treturn (  (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) );\n\t}
1,\n\t_setFocus: function() {\n\t\t(mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus();\n\t},\n\t_onFocusIn: function(e) {\n\t\tif( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) {\n\t\t\tmfp._setFocus();\n\t\t\treturn false;\n\t\t}\n\t},\n\t_parseMarkup: function(template, values, item) {\n\t\tvar arr;\n\t\tif(item.data) {\n\t\t\tvalues = $.extend(item.data, values);\n\t\t}\n\t\t_mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] );\n\n\t\t$.each(values, function(key, value) {\n\t\t\tif(value === undefined || value === false) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tarr = key.split('_');\n\t\t\tif(arr.length > 1) {\n\t\t\t\tvar el = template.find(EVENT_NS + '-'+arr[0]);\n\n\t\t\t\tif(el.length > 0) {\n\t\t\t\t\tvar attr = arr[1];\n\t\t\t\t\tif(attr === 'replaceWith') {\n\t\t\t\t\t\tif(el[0] !== value[0]) {\n\t\t\t\t\t\t\tel.replaceWith(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if(attr === 'img') {\n\t\t\t\t\t\tif(el.is('img')) {\n\t\t\t\t\t\t\tel.attr('src', value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tel.replaceWith( $('<img>').attr('src', value).attr('class', el.attr('class')) );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tel.attr(arr[1], value);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\ttemplate.find(EVENT_NS + '-'+key).html(value);\n\t\t\t}\n\t\t});\n\t},\n\n\t_getScrollbarSize: function() {\n\t\t// thx David\n\t\tif(mfp.scrollbarSize === undefined) {\n\t\t\tvar scrollDiv = document.createElement(\"div\");\n\t\t\tscrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';\n\t\t\tdocument.body.appendChild(scrollDiv);\n\t\t\tmfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n\t\t\tdocument.body.removeChild(scrollDiv);\n\t\t}\n\t\treturn mfp.scrollbarSize;\n\t}\n\n}; /* MagnificPopup core prototype end */\n\n\n\n\n/**\n * Public static functions\n */\n$.magnificPopup = {\n\tinstance: null,\n\tproto: MagnificPopup.prototype,\n\tmodules: [],\n\n\topen: function(options, index) {\n\t\t_checkInstance();\n\n\t\tif(!options) {\n\t\t\toptions = {};\n\t\t} else {\n\t\t\toptions = $.extend(true, {}, options);\n\t\t}\n\n\t\toptions.isObj = true;\n\t\toptions.index = index || 0;\n\t\treturn this.instance.open(options);\n\t},\n\n\tclose: function() {\n\t\treturn $.magnificPopup.instance && $.magnificPopup.instance.close();\n\t},\n\n\tregisterModule: function(name, module) {\n\t\tif(module.options) {\n\t\t\t$.magnificPopup.defaults[name] = module.options;\n\t\t}\n\t\t$.extend(this.proto, module.proto);\n\t\tthis.modules.push(name);\n\t},\n\n\tdefaults: {\n\n\t\t// Info about options is in docs:\n\t\t// http://dimsemenov.com/plugins/magnific-popup/documentation.html#options\n\n\t\tdisableOn: 0,\n\n\t\tkey: null,\n\n\t\tmidClick: false,\n\n\t\tmainClass: '',\n\n\t\tpreloader: true,\n\n\t\tfocus: '', // CSS selector of input to focus after popup is opened\n\n\t\tcloseOnContentClick: false,\n\n\t\tcloseOnBgClick: true,\n\n\t\tcloseBtnInside: true,\n\n\t\tshowCloseBtn: true,\n\n\t\tenableEscapeKey: true,\n\n\t\tmodal: false,\n\n\t\talignTop: false,\n\n\t\tremovalDelay: 0,\n\n\t\tprependTo: null,\n\n\t\tfixedContentPos: 'auto',\n\n\t\tfixedBgPos: 'auto',\n\n\t\toverflowY: 'auto',\n\n\t\tcloseMarkup: '<button title=\"%title%\" type=\"button\" class=\"mfp-close\">&#215;</button>',\n\n\t\ttClose: 'Close (Esc)',\n\n\t\ttLoading: 'Loading...',\n\n\t\tautoFocusLast: true\n\n\t}\n};\n\n\n\n$.fn.magnificPopup = function(options) {\n\t_checkInstance();\n\n\tvar jqEl = $(this);\n\n\t// We call some API method of first param is a string\n\tif (typeof options === \"string\" ) {\n\n\t\tif(options === 'open') {\n\t\t\tvar items,\n\t\t\t\titemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup,\n\t\t\t\tindex = parseInt(arguments[1], 10) || 0;\n\n\t\t\tif(itemOpts.items) {\n\t\t\t\titems = itemOpts.items[index];\n\t\t\t} else {\n\t\t\t\titems = jqEl;\n\t\t\t\tif(itemOpts.delegate) {\n\t\t\t\t\titems = items.find(itemOpts.delegate);\n\t\t\t\t}\n\t\t\t\titems = items.eq( index );\n\t\t\t}\n\t\t\tmfp._openClick({mfpEl:items}, jqEl, itemOpts);\n\t\t} else {\n\t\t\tif(mfp.isOpen)\n\t\t\t\tmfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1));\n\t\t}\n\n\t} else {\n\t\t// clone options obj\n\t\toptions = $.extend(true, {}, options);\n\n\t\t/*\n\t\t * As Zepto doesn't support .data() method for objects\n\t\t * and it works only in normal browsers\n\t\t * we assign \"options\" object directly to the DOM element. FTW!\n\t\t */\n\t\tif(_isJQ) {\n\t\t\tjqEl.data('magnificPopup', options);\n\t\t} else {\n\t\t\tjqEl[0].magnificPopup = options;\n\t\t}\n\n\t\tmfp.addGroup(jqEl, options);\n\n\t}\n\treturn jqEl;\n};\n\n/*>>core*/\n\n/*>>inline*/\n\nvar INLINE_NS = 'inline',\n\t_hiddenClass,\n\t_inlinePlaceholder,\n\t_lastInlineElement,\n\t_putInlineElementsBack = function() {\
1n\t\tif(_lastInlineElement) {\n\t\t\t_inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach();\n\t\t\t_lastInlineElement = null;\n\t\t}\n\t};\n\n$.magnificPopup.registerModule(INLINE_NS, {\n\toptions: {\n\t\thiddenClass: 'hide', // will be appended with `mfp-` prefix\n\t\tmarkup: '',\n\t\ttNotFound: 'Content not found'\n\t},\n\tproto: {\n\n\t\tinitInline: function() {\n\t\t\tmfp.types.push(INLINE_NS);\n\n\t\t\t_mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() {\n\t\t\t\t_putInlineElementsBack();\n\t\t\t});\n\t\t},\n\n\t\tgetInline: function(item, template) {\n\n\t\t\t_putInlineElementsBack();\n\n\t\t\tif(item.src) {\n\t\t\t\tvar inlineSt = mfp.st.inline,\n\t\t\t\t\tel = $(item.src);\n\n\t\t\t\tif(el.length) {\n\n\t\t\t\t\t// If target element has parent - we replace it with placeholder and put it back after popup is closed\n\t\t\t\t\tvar parent = el[0].parentNode;\n\t\t\t\t\tif(parent && parent.tagName) {\n\t\t\t\t\t\tif(!_inlinePlaceholder) {\n\t\t\t\t\t\t\t_hiddenClass = inlineSt.hiddenClass;\n\t\t\t\t\t\t\t_inlinePlaceholder = _getEl(_hiddenClass);\n\t\t\t\t\t\t\t_hiddenClass = 'mfp-'+_hiddenClass;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// replace target inline element with placeholder\n\t\t\t\t\t\t_lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);\n\t\t\t\t\t}\n\n\t\t\t\t\tmfp.updateStatus('ready');\n\t\t\t\t} else {\n\t\t\t\t\tmfp.updateStatus('error', inlineSt.tNotFound);\n\t\t\t\t\tel = $('<div>');\n\t\t\t\t}\n\n\t\t\t\titem.inlineElement = el;\n\t\t\t\treturn el;\n\t\t\t}\n\n\t\t\tmfp.updateStatus('ready');\n\t\t\tmfp._parseMarkup(template, {}, item);\n\t\t\treturn template;\n\t\t}\n\t}\n});\n\n/*>>inline*/\n\n/*>>ajax*/\nvar AJAX_NS = 'ajax',\n\t_ajaxCur,\n\t_removeAjaxCursor = function() {\n\t\tif(_ajaxCur) {\n\t\t\t$(document.body).removeClass(_ajaxCur);\n\t\t}\n\t},\n\t_destroyAjaxRequest = function() {\n\t\t_removeAjaxCursor();\n\t\tif(mfp.req) {\n\t\t\tmfp.req.abort();\n\t\t}\n\t};\n\n$.magnificPopup.registerModule(AJAX_NS, {\n\n\toptions: {\n\t\tsettings: null,\n\t\tcursor: 'mfp-ajax-cur',\n\t\ttError: '<a href=\"%url%\">The content</a> could not be loaded.'\n\t},\n\n\tproto: {\n\t\tinitAjax: function() {\n\t\t\tmfp.types.push(AJAX_NS);\n\t\t\t_ajaxCur = mfp.st.ajax.cursor;\n\n\t\t\t_mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest);\n\t\t\t_mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest);\n\t\t},\n\t\tgetAjax: function(item) {\n\n\t\t\tif(_ajaxCur) {\n\t\t\t\t$(document.body).addClass(_ajaxCur);\n\t\t\t}\n\n\t\t\tmfp.updateStatus('loading');\n\n\t\t\tvar opts = $.extend({\n\t\t\t\turl: item.src,\n\t\t\t\tsuccess: function(data, textStatus, jqXHR) {\n\t\t\t\t\tvar temp = {\n\t\t\t\t\t\tdata:data,\n\t\t\t\t\t\txhr:jqXHR\n\t\t\t\t\t};\n\n\t\t\t\t\t_mfpTrigger('ParseAjax', temp);\n\n\t\t\t\t\tmfp.appendContent( $(temp.data), AJAX_NS );\n\n\t\t\t\t\titem.finished = true;\n\n\t\t\t\t\t_removeAjaxCursor();\n\n\t\t\t\t\tmfp._setFocus();\n\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tmfp.wrap.addClass(READY_CLASS);\n\t\t\t\t\t}, 16);\n\n\t\t\t\t\tmfp.updateStatus('ready');\n\n\t\t\t\t\t_mfpTrigger('AjaxContentAdded');\n\t\t\t\t},\n\t\t\t\terror: function() {\n\t\t\t\t\t_removeAjaxCursor();\n\t\t\t\t\titem.finished = item.loadError = true;\n\t\t\t\t\tmfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src));\n\t\t\t\t}\n\t\t\t}, mfp.st.ajax.settings);\n\n\t\t\tmfp.req = $.ajax(opts);\n\n\t\t\treturn '';\n\t\t}\n\t}\n});\n\n/*>>ajax*/\n\n/*>>image*/\nvar _imgInterval,\n\t_getTitle = function(item) {\n\t\tif(item.data && item.data.title !== undefined)\n\t\t\treturn item.data.title;\n\n\t\tvar src = mfp.st.image.titleSrc;\n\n\t\tif(src) {\n\t\t\tif($.isFunction(src)) {\n\t\t\t\treturn src.call(mfp, item);\n\t\t\t} else if(item.el) {\n\t\t\t\treturn item.el.attr(src) || '';\n\t\t\t}\n\t\t}\n\t\treturn '';\n\t};\n\n$.magnificPopup.registerModule('image', {\n\n\toptions: {\n\t\tmarkup: '<div class=\"mfp-figure\">'+\n\t\t\t\t\t'<div class=\"mfp-close\"></div>'+\n\t\t\t\t\t'<figure>'+\n\t\t\t\t\t\t'<div class=\"mfp-img\"></div>'+\n\t\t\t\t\t\t'<figcaption>'+\n\t\t\t\t\t\t\t'<div class=\"mfp-bottom-bar\">'+\n\t\t\t\t\t\t\t\t'<div class=\"mfp-title\"></div>'+\n\t\t\t\t\t\t\t\t'<div class=\"mfp-counter\"></div>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t'</figcaption>'+\n\t\t\t\t\t'</figure>'+\n\t\t\t\t'</div>',\n\t\tcursor: 'mfp-zoom-out-cur',\n\t\ttitleSrc: 'title',\n\t\tverticalFit: true,\n\t\ttError: '<a href=\"%url%\">The image</a> could not be loaded.'\n\t}
1,\n\n\tproto: {\n\t\tinitImage: function() {\n\t\t\tvar imgSt = mfp.st.image,\n\t\t\t\tns = '.image';\n\n\t\t\tmfp.types.push('image');\n\n\t\t\t_mfpOn(OPEN_EVENT+ns, function() {\n\t\t\t\tif(mfp.currItem.type === 'image' && imgSt.cursor) {\n\t\t\t\t\t$(document.body).addClass(imgSt.cursor);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_mfpOn(CLOSE_EVENT+ns, function() {\n\t\t\t\tif(imgSt.cursor) {\n\t\t\t\t\t$(document.body).removeClass(imgSt.cursor);\n\t\t\t\t}\n\t\t\t\t_window.off('resize' + EVENT_NS);\n\t\t\t});\n\n\t\t\t_mfpOn('Resize'+ns, mfp.resizeImage);\n\t\t\tif(mfp.isLowIE) {\n\t\t\t\t_mfpOn('AfterChange', mfp.resizeImage);\n\t\t\t}\n\t\t},\n\t\tresizeImage: function() {\n\t\t\tvar item = mfp.currItem;\n\t\t\tif(!item || !item.img) return;\n\n\t\t\tif(mfp.st.image.verticalFit) {\n\t\t\t\tvar decr = 0;\n\t\t\t\t// fix box-sizing in ie7/8\n\t\t\t\tif(mfp.isLowIE) {\n\t\t\t\t\tdecr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10);\n\t\t\t\t}\n\t\t\t\titem.img.css('max-height', mfp.wH-decr);\n\t\t\t}\n\t\t},\n\t\t_onImageHasSize: function(item) {\n\t\t\tif(item.img) {\n\n\t\t\t\titem.hasSize = true;\n\n\t\t\t\tif(_imgInterval) {\n\t\t\t\t\tclearInterval(_imgInterval);\n\t\t\t\t}\n\n\t\t\t\titem.isCheckingImgSize = false;\n\n\t\t\t\t_mfpTrigger('ImageHasSize', item);\n\n\t\t\t\tif(item.imgHidden) {\n\t\t\t\t\tif(mfp.content)\n\t\t\t\t\t\tmfp.content.removeClass('mfp-loading');\n\n\t\t\t\t\titem.imgHidden = false;\n\t\t\t\t}\n\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Function that loops until the image has size to display elements that rely on it asap\n\t\t */\n\t\tfindImageSize: function(item) {\n\n\t\t\tvar counter = 0,\n\t\t\t\timg = item.img[0],\n\t\t\t\tmfpSetInterval = function(delay) {\n\n\t\t\t\t\tif(_imgInterval) {\n\t\t\t\t\t\tclearInterval(_imgInterval);\n\t\t\t\t\t}\n\t\t\t\t\t// decelerating interval that checks for size of an image\n\t\t\t\t\t_imgInterval = setInterval(function() {\n\t\t\t\t\t\tif(img.naturalWidth > 0) {\n\t\t\t\t\t\t\tmfp._onImageHasSize(item);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(counter > 200) {\n\t\t\t\t\t\t\tclearInterval(_imgInterval);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcounter++;\n\t\t\t\t\t\tif(counter === 3) {\n\t\t\t\t\t\t\tmfpSetInterval(10);\n\t\t\t\t\t\t} else if(counter === 40) {\n\t\t\t\t\t\t\tmfpSetInterval(50);\n\t\t\t\t\t\t} else if(counter === 100) {\n\t\t\t\t\t\t\tmfpSetInterval(500);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, delay);\n\t\t\t\t};\n\n\t\t\tmfpSetInterval(1);\n\t\t},\n\n\t\tgetImage: function(item, template) {\n\n\t\t\tvar guard = 0,\n\n\t\t\t\t// image load complete handler\n\t\t\t\tonLoadComplete = function() {\n\t\t\t\t\tif(item) {\n\t\t\t\t\t\tif (item.img[0].complete) {\n\t\t\t\t\t\t\titem.img.off('.mfploader');\n\n\t\t\t\t\t\t\tif(item === mfp.currItem){\n\t\t\t\t\t\t\t\tmfp._onImageHasSize(item);\n\n\t\t\t\t\t\t\t\tmfp.updateStatus('ready');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\titem.hasSize = true;\n\t\t\t\t\t\t\titem.loaded = true;\n\n\t\t\t\t\t\t\t_mfpTrigger('ImageLoadComplete');\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// if image complete check fails 200 times (20 sec), we assume that there was an error.\n\t\t\t\t\t\t\tguard++;\n\t\t\t\t\t\t\tif(guard < 200) {\n\t\t\t\t\t\t\t\tsetTimeout(onLoadComplete,100);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tonLoadError();\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\t// image error handler\n\t\t\t\tonLoadError = function() {\n\t\t\t\t\tif(item) {\n\t\t\t\t\t\titem.img.off('.mfploader');\n\t\t\t\t\t\tif(item === mfp.currItem){\n\t\t\t\t\t\t\tmfp._onImageHasSize(item);\n\t\t\t\t\t\t\tmfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.hasSize = true;\n\t\t\t\t\t\titem.loaded = true;\n\t\t\t\t\t\titem.loadError = true;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\timgSt = mfp.st.image;\n\n\n\t\t\tvar el = template.find('.mfp-img');\n\t\t\tif(el.length) {\n\t\t\t\tvar img = document.createElement('img');\n\t\t\t\timg.className = 'mfp-img';\n\t\t\t\tif(item.el && item.el.find('img').length) {\n\t\t\t\t\timg.alt = item.el.find('img').attr('alt');\n\t\t\t\t}\n\t\t\t\titem.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError);\n\t\t\t\timg.src = item.src;\n\n\t\t\t\t// without clone() \"error\" event is not firing when IMG is replaced by new IMG\n\t\t\t\t// TODO: f
1ind a way to avoid such cloning\n\t\t\t\tif(el.is('img')) {\n\t\t\t\t\titem.img = item.img.clone();\n\t\t\t\t}\n\n\t\t\t\timg = item.img[0];\n\t\t\t\tif(img.naturalWidth > 0) {\n\t\t\t\t\titem.hasSize = true;\n\t\t\t\t} else if(!img.width) {\n\t\t\t\t\titem.hasSize = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmfp._parseMarkup(template, {\n\t\t\t\ttitle: _getTitle(item),\n\t\t\t\timg_replaceWith: item.img\n\t\t\t}, item);\n\n\t\t\tmfp.resizeImage();\n\n\t\t\tif(item.hasSize) {\n\t\t\t\tif(_imgInterval) clearInterval(_imgInterval);\n\n\t\t\t\tif(item.loadError) {\n\t\t\t\t\ttemplate.addClass('mfp-loading');\n\t\t\t\t\tmfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );\n\t\t\t\t} else {\n\t\t\t\t\ttemplate.removeClass('mfp-loading');\n\t\t\t\t\tmfp.updateStatus('ready');\n\t\t\t\t}\n\t\t\t\treturn template;\n\t\t\t}\n\n\t\t\tmfp.updateStatus('loading');\n\t\t\titem.loading = true;\n\n\t\t\tif(!item.hasSize) {\n\t\t\t\titem.imgHidden = true;\n\t\t\t\ttemplate.addClass('mfp-loading');\n\t\t\t\tmfp.findImageSize(item);\n\t\t\t}\n\n\t\t\treturn template;\n\t\t}\n\t}\n});\n\n/*>>image*/\n\n/*>>zoom*/\nvar hasMozTransform,\n\tgetHasMozTransform = function() {\n\t\tif(hasMozTransform === undefined) {\n\t\t\thasMozTransform = document.createElement('p').style.MozTransform !== undefined;\n\t\t}\n\t\treturn hasMozTransform;\n\t};\n\n$.magnificPopup.registerModule('zoom', {\n\n\toptions: {\n\t\tenabled: false,\n\t\teasing: 'ease-in-out',\n\t\tduration: 300,\n\t\topener: function(element) {\n\t\t\treturn element.is('img') ? element : element.find('img');\n\t\t}\n\t},\n\n\tproto: {\n\n\t\tinitZoom: function() {\n\t\t\tvar zoomSt = mfp.st.zoom,\n\t\t\t\tns = '.zoom',\n\t\t\t\timage;\n\n\t\t\tif(!zoomSt.enabled || !mfp.supportsTransition) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar duration = zoomSt.duration,\n\t\t\t\tgetElToAnimate = function(image) {\n\t\t\t\t\tvar newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'),\n\t\t\t\t\t\ttransition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing,\n\t\t\t\t\t\tcssObj = {\n\t\t\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\t\t\tzIndex: 9999,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\t'-webkit-backface-visibility': 'hidden'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tt = 'transition';\n\n\t\t\t\t\tcssObj['-webkit-'+t] = cssObj['-moz-'+t] = cssObj['-o-'+t] = cssObj[t] = transition;\n\n\t\t\t\t\tnewImg.css(cssObj);\n\t\t\t\t\treturn newImg;\n\t\t\t\t},\n\t\t\t\tshowMainContent = function() {\n\t\t\t\t\tmfp.content.css('visibility', 'visible');\n\t\t\t\t},\n\t\t\t\topenTimeout,\n\t\t\t\tanimatedImg;\n\n\t\t\t_mfpOn('BuildControls'+ns, function() {\n\t\t\t\tif(mfp._allowZoom()) {\n\n\t\t\t\t\tclearTimeout(openTimeout);\n\t\t\t\t\tmfp.content.css('visibility', 'hidden');\n\n\t\t\t\t\t// Basically, all code below does is clones existing image, puts in on top of the current one and animated it\n\n\t\t\t\t\timage = mfp._getItemToZoom();\n\n\t\t\t\t\tif(!image) {\n\t\t\t\t\t\tshowMainContent();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tanimatedImg = getElToAnimate(image);\n\n\t\t\t\t\tanimatedImg.css( mfp._getOffset() );\n\n\t\t\t\t\tmfp.wrap.append(animatedImg);\n\n\t\t\t\t\topenTimeout = setTimeout(function() {\n\t\t\t\t\t\tanimatedImg.css( mfp._getOffset( true ) );\n\t\t\t\t\t\topenTimeout = setTimeout(function() {\n\n\t\t\t\t\t\t\tshowMainContent();\n\n\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\tanimatedImg.remove();\n\t\t\t\t\t\t\t\timage = animatedImg = null;\n\t\t\t\t\t\t\t\t_mfpTrigger('ZoomAnimationEnded');\n\t\t\t\t\t\t\t}, 16); // avoid blink when switching images\n\n\t\t\t\t\t\t}, duration); // this timeout equals animation duration\n\n\t\t\t\t\t}, 16); // by adding this timeout we avoid short glitch at the beginning of animation\n\n\n\t\t\t\t\t// L
1ots of timeouts...\n\t\t\t\t}\n\t\t\t});\n\t\t\t_mfpOn(BEFORE_CLOSE_EVENT+ns, function() {\n\t\t\t\tif(mfp._allowZoom()) {\n\n\t\t\t\t\tclearTimeout(openTimeout);\n\n\t\t\t\t\tmfp.st.removalDelay = duration;\n\n\t\t\t\t\tif(!image) {\n\t\t\t\t\t\timage = mfp._getItemToZoom();\n\t\t\t\t\t\tif(!image) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tanimatedImg = getElToAnimate(image);\n\t\t\t\t\t}\n\n\t\t\t\t\tanimatedImg.css( mfp._getOffset(true) );\n\t\t\t\t\tmfp.wrap.append(animatedImg);\n\t\t\t\t\tmfp.content.css('visibility', 'hidden');\n\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tanimatedImg.css( mfp._getOffset() );\n\t\t\t\t\t}, 16);\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\t_mfpOn(CLOSE_EVENT+ns, function() {\n\t\t\t\tif(mfp._allowZoom()) {\n\t\t\t\t\tshowMainContent();\n\t\t\t\t\tif(animatedImg) {\n\t\t\t\t\t\tanimatedImg.remove();\n\t\t\t\t\t}\n\t\t\t\t\timage = null;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t_allowZoom: function() {\n\t\t\treturn mfp.currItem.type === 'image';\n\t\t},\n\n\t\t_getItemToZoom: function() {\n\t\t\tif(mfp.currItem.hasSize) {\n\t\t\t\treturn mfp.currItem.img;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Get element postion relative to viewport\n\t\t_getOffset: function(isLarge) {\n\t\t\tvar el;\n\t\t\tif(isLarge) {\n\t\t\t\tel = mfp.currItem.img;\n\t\t\t} else {\n\t\t\t\tel = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem);\n\t\t\t}\n\n\t\t\tvar offset = el.offset();\n\t\t\tvar paddingTop = parseInt(el.css('padding-top'),10);\n\t\t\tvar paddingBottom = parseInt(el.css('padding-bottom'),10);\n\t\t\toffset.top -= ( $(window).scrollTop() - paddingTop );\n\n\n\t\t\t/*\n\n\t\t\tAnimating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa.\n\n\t\t\t */\n\t\t\tvar obj = {\n\t\t\t\twidth: el.width(),\n\t\t\t\t// fix Zepto height+padding issue\n\t\t\t\theight: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop\n\t\t\t};\n\n\t\t\t// I hate to do this, but there is no another option\n\t\t\tif( getHasMozTransform() ) {\n\t\t\t\tobj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)';\n\t\t\t} else {\n\t\t\t\tobj.left = offset.left;\n\t\t\t\tobj.top = offset.top;\n\t\t\t}\n\t\t\treturn obj;\n\t\t}\n\n\t}\n});\n\n\n\n/*>>zoom*/\n\n/*>>iframe*/\n\nvar IFRAME_NS = 'iframe',\n\t_emptyPage = '//about:blank',\n\n\t_fixIframeBugs = function(isShowing) {\n\t\tif(mfp.currTemplate[IFRAME_NS]) {\n\t\t\tvar el = mfp.currTemplate[IFRAME_NS].find('iframe');\n\t\t\tif(el.length) {\n\t\t\t\t// reset src after the popup is closed to avoid \"video keeps playing after popup is closed\" bug\n\t\t\t\tif(!isShowing) {\n\t\t\t\t\tel[0].src = _emptyPage;\n\t\t\t\t}\n\n\t\t\t\t// IE8 black screen bug fix\n\t\t\t\tif(mfp.isIE8) {\n\t\t\t\t\tel.css('display', isShowing ? 'block' : 'none');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n$.magnificPopup.registerModule(IFRAME_NS, {\n\n\toptions: {\n\t\tmarkup: '<div class=\"mfp-iframe-scaler\">'+\n\t\t\t\t\t'<div class=\"mfp-close\"></div>'+\n\t\t\t\t\t'<iframe class=\"mfp-iframe\" src=\"//about:blank\" frameborder=\"0\" allowfullscreen></iframe>'+\n\t\t\t\t'</div>',\n\n\t\tsrcAction: 'iframe_src',\n\n\t\t// we don't care and support only one default type of URL by default\n\t\tpatterns: {\n\t\t\tyoutube: {\n\t\t\t\tindex: 'youtube.com',\n\t\t\t\tid: 'v=',\n\t\t\t\tsrc: '//www.youtube.com/embed/%id%?autoplay=1'\n\t\t\t},\n\t\t\tvimeo: {\n\t\t\t\tindex: 'vimeo.com/',\n\t\t\t\tid: '/',\n\t\t\t\tsrc: '//player.vimeo.com/video/%id%?autoplay=1'\n\t\t\t},\n\t\t\tgmaps: {\n\t\t\t\tindex: '//maps.google.',\n\t\t\t\tsrc: '%id%&output=embed'\n\t\t\t}\n\t\t}\n\t},\n\n\tproto: {\n\t\tinitIframe: function() {\n\t\t\tmfp.types.push(IFRAME_NS);\n\n\t\t\t_mfpOn('BeforeChange', function(e, prevType, newType) {\n\t\t\t\tif(prevType !== newType) {\n\t\t\t\t\tif(prevType === IFRAME_NS) {\n\t\t\t\t\t\t_fixIframeBugs(); // iframe if removed\n\t\t\t\t\t} else if(newType === IFRAME_NS) {\n\t\t\t\t\t\t_fixIframeBugs(true); // iframe is showing\n\t\t\t\t\t}\n\t\t\t\t}// else {\n\t\t\t\t\t// iframe source is switched, don't do anything\n\t\t\t\t//}\n\t\t\t});
1\n\n\t\t\t_mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function() {\n\t\t\t\t_fixIframeBugs();\n\t\t\t});\n\t\t},\n\n\t\tgetIframe: function(item, template) {\n\t\t\tvar embedSrc = item.src;\n\t\t\tvar iframeSt = mfp.st.iframe;\n\n\t\t\t$.each(iframeSt.patterns, function() {\n\t\t\t\tif(embedSrc.indexOf( this.index ) > -1) {\n\t\t\t\t\tif(this.id) {\n\t\t\t\t\t\tif(typeof this.id === 'string') {\n\t\t\t\t\t\t\tembedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tembedSrc = this.id.call( this, embedSrc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tembedSrc = this.src.replace('%id%', embedSrc );\n\t\t\t\t\treturn false; // break;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar dataObj = {};\n\t\t\tif(iframeSt.srcAction) {\n\t\t\t\tdataObj[iframeSt.srcAction] = embedSrc;\n\t\t\t}\n\t\t\tmfp._parseMarkup(template, dataObj, item);\n\n\t\t\tmfp.updateStatus('ready');\n\n\t\t\treturn template;\n\t\t}\n\t}\n});\n\n\n\n/*>>iframe*/\n\n/*>>gallery*/\n/**\n * Get looped index depending on number of slides\n */\nvar _getLoopedId = function(index) {\n\t\tvar numSlides = mfp.items.length;\n\t\tif(index > numSlides - 1) {\n\t\t\treturn index - numSlides;\n\t\t} else  if(index < 0) {\n\t\t\treturn numSlides + index;\n\t\t}\n\t\treturn index;\n\t},\n\t_replaceCurrTotal = function(text, curr, total) {\n\t\treturn text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total);\n\t};\n\n$.magnificPopup.registerModule('gallery', {\n\n\toptions: {\n\t\tenabled: false,\n\t\tarrowMarkup: '<button title=\"%title%\" type=\"button\" class=\"mfp-arrow mfp-arrow-%dir%\"></button>',\n\t\tpreload: [0,2],\n\t\tnavigateByImgClick: true,\n\t\tarrows: true,\n\n\t\ttPrev: 'Previous (Left arrow key)',\n\t\ttNext: 'Next (Right arrow key)',\n\t\ttCounter: '%curr% of %total%'\n\t},\n\n\tproto: {\n\t\tinitGallery: function() {\n\n\t\t\tvar gSt = mfp.st.gallery,\n\t\t\t\tns = '.mfp-gallery';\n\n\t\t\tmfp.direction = true; // true - next, false - prev\n\n\t\t\tif(!gSt || !gSt.enabled ) return false;\n\n\t\t\t_wrapClasses += ' mfp-gallery';\n\n\t\t\t_mfpOn(OPEN_EVENT+ns, function() {\n\n\t\t\t\tif(gSt.navigateByImgClick) {\n\t\t\t\t\tmfp.wrap.on('click'+ns, '.mfp-img', function() {\n\t\t\t\t\t\tif(mfp.items.length > 1) {\n\t\t\t\t\t\t\tmfp.next();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t_document.on('keydown'+ns, function(e) {\n\t\t\t\t\tif (e.keyCode === 37) {\n\t\t\t\t\t\tmfp.prev();\n\t\t\t\t\t} else if (e.keyCode === 39) {\n\t\t\t\t\t\tmfp.next();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t_mfpOn('UpdateStatus'+ns, function(e, data) {\n\t\t\t\tif(data.text) {\n\t\t\t\t\tdata.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item) {\n\t\t\t\tvar l = mfp.items.length;\n\t\t\t\tvalues.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : '';\n\t\t\t});\n\n\t\t\t_mfpOn('BuildControls' + ns, function() {\n\t\t\t\tif(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) {\n\t\t\t\t\tvar markup = gSt.arrowMarkup,\n\t\t\t\t\t\tarrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS),\n\t\t\t\t\t\tarrowRight = mfp.arrowRight = $( markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right') ).addClass(PREVENT_CLOSE_CLASS);\n\n\t\t\t\t\tarrowLeft.click(function() {\n\t\t\t\t\t\tmfp.prev();\n\t\t\t\t\t});\n\t\t\t\t\tarrowRight.click(function() {\n\t\t\t\t\t\tmfp.next();\n\t\t\t\t\t});\n\n\t\t\t\t\tmfp.container.append(arrowLeft.add(arrowRight));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_mfpOn(CHANGE_EVENT+ns, function() {\n\t\t\t\tif(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout);\n\n\t\t\t\tmfp._preloadTimeout = setTimeout(function() {\n\t\t\t\t\tmfp.preloadNearbyImages();\n\t\t\t\t\tmfp._preloadTimeout = null;\n\t\t\t\t}, 16);\n\t\t\t});\n\n\n\t\t\t_mfpOn(CLOSE_EVENT+ns, function() {\n\t\t\t\t_document.off(ns);\n\t\t\t\tmfp.wrap.off('click'+ns);\n\t\t\t\tmfp.arrowRight = mfp.arrowLeft = null;\n\t\t\t});\n\n\t\t}
1,\n\t\tnext: function() {\n\t\t\tmfp.direction = true;\n\t\t\tmfp.index = _getLoopedId(mfp.index + 1);\n\t\t\tmfp.updateItemHTML();\n\t\t},\n\t\tprev: function() {\n\t\t\tmfp.direction = false;\n\t\t\tmfp.index = _getLoopedId(mfp.index - 1);\n\t\t\tmfp.updateItemHTML();\n\t\t},\n\t\tgoTo: function(newIndex) {\n\t\t\tmfp.direction = (newIndex >= mfp.index);\n\t\t\tmfp.index = newIndex;\n\t\t\tmfp.updateItemHTML();\n\t\t},\n\t\tpreloadNearbyImages: function() {\n\t\t\tvar p = mfp.st.gallery.preload,\n\t\t\t\tpreloadBefore = Math.min(p[0], mfp.items.length),\n\t\t\t\tpreloadAfter = Math.min(p[1], mfp.items.length),\n\t\t\t\ti;\n\n\t\t\tfor(i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) {\n\t\t\t\tmfp._preloadItem(mfp.index+i);\n\t\t\t}\n\t\t\tfor(i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) {\n\t\t\t\tmfp._preloadItem(mfp.index-i);\n\t\t\t}\n\t\t},\n\t\t_preloadItem: function(index) {\n\t\t\tindex = _getLoopedId(index);\n\n\t\t\tif(mfp.items[index].preloaded) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar item = mfp.items[index];\n\t\t\tif(!item.parsed) {\n\t\t\t\titem = mfp.parseEl( index );\n\t\t\t}\n\n\t\t\t_mfpTrigger('LazyLoad', item);\n\n\t\t\tif(item.type === 'image') {\n\t\t\t\titem.img = $('<img class=\"mfp-img\" />').on('load.mfploader', function() {\n\t\t\t\t\titem.hasSize = true;\n\t\t\t\t}).on('error.mfploader', function() {\n\t\t\t\t\titem.hasSize = true;\n\t\t\t\t\titem.loadError = true;\n\t\t\t\t\t_mfpTrigger('LazyLoadError', item);\n\t\t\t\t}).attr('src', item.src);\n\t\t\t}\n\n\n\t\t\titem.preloaded = true;\n\t\t}\n\t}\n});\n\n/*>>gallery*/\n\n/*>>retina*/\n\nvar RETINA_NS = 'retina';\n\n$.magnificPopup.registerModule(RETINA_NS, {\n\toptions: {\n\t\treplaceSrc: function(item) {\n\t\t\treturn item.src.replace(/\\.\\w+$/, function(m) { return '@2x' + m; });\n\t\t},\n\t\tratio: 1 // Function or number.  Set to 1 to disable.\n\t},\n\tproto: {\n\t\tinitRetina: function() {\n\t\t\tif(window.devicePixelRatio > 1) {\n\n\t\t\t\tvar st = mfp.st.retina,\n\t\t\t\t\tratio = st.ratio;\n\n\t\t\t\tratio = !isNaN(ratio) ? ratio : ratio();\n\n\t\t\t\tif(ratio > 1) {\n\t\t\t\t\t_mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item) {\n\t\t\t\t\t\titem.img.css({\n\t\t\t\t\t\t\t'max-width': item.img[0].naturalWidth / ratio,\n\t\t\t\t\t\t\t'width': '100%'\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\t_mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item) {\n\t\t\t\t\t\titem.src = st.replaceSrc(item, ratio);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n});\n\n/*>>retina*/\n _checkInstance(); }));\n\n//# sourceURL=webpack://Transgrid-webpack/./node_modules/magnific-popup/dist/jquery.magnific-popup.js?")},154:(module,exports,__webpack_require__)=>{eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n     _ _      _       _\n ___| (_) ___| | __  (_)___\n/ __| | |/ __| |/ /  | / __|\n\\__ \\ | | (__|   < _ | \\__ \\\n|___/_|_|\\___|_|\\_(_)/ |___/\n                   |__/\n\n Version: 1.8.1\n  Author: Ken Wheeler\n Website: http://kenwheeler.github.io\n    Docs: http://kenwheeler.github.io/slick\n    Repo: http://github.com/kenwheeler/slick\n  Issues: http://github.com/kenwheeler/slick/issues\n\n */\n/* global window, document, define, jQuery, setInterval, clearInterval */\n;(function(factory) {\n    'use strict';\n    if (true) {\n        !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(609)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n    } else {}\n\n}(function($) {\n    'use strict';\n    var Slick = window.Slick || {};\n\n    Slick = (function() {\n\n        var instanceUid = 0;\n\n        function Slick(element, settings) {\n\n            var _ = this, dataSettings;\n\n            _.defaults = {\n                accessibility: true,\n                adaptiveHeight: false,\n                appendArrows: $(element),\n                appendDots: $(element),\n                arrows: true,\n                asNavFor: null,\n                prevArrow: '<button class=\"slick-prev\" aria-label=\"Previous\" type=\"button\">Previous</button>',\n                nextArrow: '<button class=\"slick-next\" aria-label=\"Next\" type=\"button\">Next</button>',\n                autoplay: false,\n                autoplaySpeed: 3000,\n                centerMode: false,\n                centerPadding: '50px',\n                cssEase: 'ease',\n                customPaging: function(slider, i) {\n                    return $('<button type=\"button\" />').text(i + 1);\n                },\n                dots: false,\n                dotsClass: 'slick-dots',\n                draggable: true,\n                easing: 'linear',\n                edgeFriction: 0.35,\n                fade: false,\n                focusOnSelect: false,\n                focusOnChange: false,\n                infinite: true,\n                initialSlide: 0,\n                lazyLoad: 'ondemand',\n                mobileFirst: false,\n                pauseOnHover: true,\n                pauseOnFocus: true,\n                pauseOnDotsHover: false,\n                respondTo: 'window',\n                responsive: null,\n                rows: 1,\n                rtl: false,\n                slide: '',\n                slidesPerRow: 1,\n                slidesToShow: 1,\n                slidesToScroll: 1,\n                speed: 500,\n                swipe: true,\n                swipeToSlide: false,\n                touchMove: true,\n                touchThreshold: 5,\n                useCSS: true,\n                useTransform: true,\n                variableWidth: false,\n                vertical: false,\n                verticalSwiping: false,\n                waitForAnimate: true,\n                zIndex: 1000\n            };\n\n            _.initials = {\n                animating: false,\n                dragging: false,\n                autoPlayTimer: null,\n                currentDirection: 0,\n                currentLeft: null,\n                currentSlide: 0,\n                direction: 1,\n                $dots: null,\n                listWidth: null,\n                listHeight: null,\n                loadIndex: 0,\n                $nextArrow: null,\n                $prevArrow: null,\n                scrolling: false,\n                slideCount: null,\n                slideWidth: null,\n                $slideTrack: null,\n                $slides: null,\n                sliding: false,\n                slideOffset: 0,\n                swipeLeft: null,\n                swiping: false,\n                $list: null,\n                touchObject: {},\n                transformsEnabled: false,\n                unslicked: fal
1se\n            };\n\n            $.extend(_, _.initials);\n\n            _.activeBreakpoint = null;\n            _.animType = null;\n            _.animProp = null;\n            _.breakpoints = [];\n            _.breakpointSettings = [];\n            _.cssTransitions = false;\n            _.focussed = false;\n            _.interrupted = false;\n            _.hidden = 'hidden';\n            _.paused = true;\n            _.positionProp = null;\n            _.respondTo = null;\n            _.rowCount = 1;\n            _.shouldClick = true;\n            _.$slider = $(element);\n            _.$slidesCache = null;\n            _.transformType = null;\n            _.transitionType = null;\n            _.visibilityChange = 'visibilitychange';\n            _.windowWidth = 0;\n            _.windowTimer = null;\n\n            dataSettings = $(element).data('slick') || {};\n\n            _.options = $.extend({}, _.defaults, settings, dataSettings);\n\n            _.currentSlide = _.options.initialSlide;\n\n            _.originalSettings = _.options;\n\n            if (typeof document.mozHidden !== 'undefined') {\n                _.hidden = 'mozHidden';\n                _.visibilityChange = 'mozvisibilitychange';\n            } else if (typeof document.webkitHidden !== 'undefined') {\n                _.hidden = 'webkitHidden';\n                _.visibilityChange = 'webkitvisibilitychange';\n            }\n\n            _.autoPlay = $.proxy(_.autoPlay, _);\n            _.autoPlayClear = $.proxy(_.autoPlayClear, _);\n            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);\n            _.changeSlide = $.proxy(_.changeSlide, _);\n            _.clickHandler = $.proxy(_.clickHandler, _);\n            _.selectHandler = $.proxy(_.selectHandler, _);\n            _.setPosition = $.proxy(_.setPosition, _);\n            _.swipeHandler = $.proxy(_.swipeHandler, _);\n            _.dragHandler = $.proxy(_.dragHandler, _);\n            _.keyHandler = $.proxy(_.keyHandler, _);\n\n            _.instanceUid = instanceUid++;\n\n            // A simple way to check for HTML strings\n            // Strict HTML recognition (must start with <)\n            // Extracted from jQuery v1.11 source\n            _.htmlExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*)$/;\n\n\n            _.registerBreakpoints();\n            _.init(true);\n\n        }\n\n        return Slick;\n\n    }());\n\n    Slick.prototype.activateADA = function() {\n        var _ = this;\n\n        _.$slideTrack.find('.slick-active').attr({\n            'aria-hidden': 'false'\n        }).find('a, input, button, select').attr({\n            'tabindex': '0'\n        });\n\n    };\n\n    Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {\n\n        var _ = this;\n\n        if (typeof(index) === 'boolean') {\n            addBefore = index;\n            index = null;\n        } else if (index < 0 || (index >= _.slideCount)) {\n            return false;\n        }\n\n        _.unload();\n\n        if (typeof(index) === 'number') {\n            if (index === 0 && _.$slides.length === 0) {\n                $(markup).appendTo(_.$slideTrack);\n            } else if (addBefore) {\n                $(markup).insertBefore(_.$slides.eq(index));\n            } else {\n                $(markup).insertAfter(_.$slides.eq(index));\n            }\n        } else {\n            if (addBefore === true) {\n                $(markup).prependTo(_.$slideTrack);\n            } else {\n                $(markup).appendTo(_.$slideTrack);\n            }\n        }\n\n        _.$slides = _.$slideTrack.children(this.options.slide);\n\n        _.$slideTrack.children(this.options.slide).detach();\n\n        _.$slideTrack.append(_.$slides);\n\n        _.$slides.each(function(index, element) {\n            $(element).attr('data-slick-index', index);\n        });\n\n        _.$slidesCache = _.$slides;\n\n        _.reinit();\n\n    };\n\n    Slick.prototype.animateHeight = function() {\n        var _ = this;\n        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n            _.$list.animate({\n                height: targetHeight\n            }, _.options.speed);\n        }\n    };\n\n    Slick.prototype.animateSlide = function(targetLeft, callback) {\n\n        var animProps = {},\n            _ = this;\n\n        _.animateHeight();\n\n        if (_.options.rtl === true && _.options.vertical === false) {\n            targetLeft = -targetLeft;\n        }\n        if (_.transformsEnabled === false) {\n            if (_.options.vertical === false) {\n                _.$slideTrack.animate({\n                    left: targetLeft\n                }, _.options.speed, _.options.easing, callback);\n            } else {\n                _.$slideTrack.animate({\n                    top: targetLeft\n                }, _.options.speed, _.options.easing, callback);\n            }\n\n        } else {\n\n            if (_.cssTransitions === false) {\n                if (_.options.rtl === true) {\n                    _.currentLeft = -(_.currentLeft);\n                }\n                $({\n                    animStart: _.currentLeft\n                }).animate({\n                    animStart: targetLeft\n                }, {\n                    duration: _.options.speed,\n                    easing: _.options.easing,\n                    step: function(now) {\n                        now = Math.ceil(now);\n                        if (_.options.vertical === false) {\n                            animProps[_.animType] = 'translate(' +\n                                now + 'px, 0px)';\n                            _.$slideTrack.css(animProps);\n                        } else {\n                            animProps[_.animType] = 'translate(0px,' +\n                                now + 'px)';\n                            _.$slideTrack.css(animProps);\n                        }\n                    }
1,\n                    complete: function() {\n                        if (callback) {\n                            callback.call();\n                        }\n                    }\n                });\n\n            } else {\n\n                _.applyTransition();\n                targetLeft = Math.ceil(targetLeft);\n\n                if (_.options.vertical === false) {\n                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';\n                } else {\n                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';\n                }\n                _.$slideTrack.css(animProps);\n\n                if (callback) {\n                    setTimeout(function() {\n\n                        _.disableTransition();\n\n                        callback.call();\n                    }, _.options.speed);\n                }\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.getNavTarget = function() {\n\n        var _ = this,\n            asNavFor = _.options.asNavFor;\n\n        if ( asNavFor && asNavFor !== null ) {\n            asNavFor = $(asNavFor).not(_.$slider);\n        }\n\n        return asNavFor;\n\n    };\n\n    Slick.prototype.asNavFor = function(index) {\n\n        var _ = this,\n            asNavFor = _.getNavTarget();\n\n        if ( asNavFor !== null && typeof asNavFor === 'object' ) {\n            asNavFor.each(function() {\n                var target = $(this).slick('getSlick');\n                if(!target.unslicked) {\n                    target.slideHandler(index, true);\n                }\n            });\n        }\n\n    };\n\n    Slick.prototype.applyTransition = function(slide) {\n\n        var _ = this,\n            transition = {};\n\n        if (_.options.fade === false) {\n            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;\n        } else {\n            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;\n        }\n\n        if (_.options.fade === false) {\n            _.$slideTrack.css(transition);\n        } else {\n            _.$slides.eq(slide).css(transition);\n        }\n\n    };\n\n    Slick.prototype.autoPlay = function() {\n\n        var _ = this;\n\n        _.autoPlayClear();\n\n        if ( _.slideCount > _.options.slidesToShow ) {\n            _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );\n        }\n\n    };\n\n    Slick.prototype.autoPlayClear = function() {\n\n        var _ = this;\n\n        if (_.autoPlayTimer) {\n            clearInterval(_.autoPlayTimer);\n        }\n\n    };\n\n    Slick.prototype.autoPlayIterator = function() {\n\n        var _ = this,\n            slideTo = _.currentSlide + _.options.slidesToScroll;\n\n        if ( !_.paused && !_.interrupted && !_.focussed ) {\n\n            if ( _.options.infinite === false ) {\n\n                if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {\n                    _.direction = 0;\n                }\n\n                else if ( _.direction === 0 ) {\n\n                    slideTo = _.currentSlide - _.options.slidesToScroll;\n\n                    if ( _.currentSlide - 1 === 0 ) {\n                        _.direction = 1;\n                    }\n\n                }\n\n            }\n\n            _.slideHandler( slideTo );\n\n        }\n\n    };\n\n    Slick.prototype.buildArrows = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true ) {\n\n            _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');\n            _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');\n\n            if( _.slideCount > _.options.slidesToShow ) {\n\n                _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n                _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n\n                if (_.htmlExpr.test(_.options.prevArrow)) {\n                    _.$prevArrow.prependTo(_.options.appendArrows);\n                }\n\n                if (_.htmlExpr.test(_.options.nextArrow)) {\n                    _.$nextArrow.appendTo(_.options.appendArrows);\n                }\n\n                if (_.options.infinite !== true) {\n                    _.$prevArrow\n                        .addClass('slick-disabled')\n                        .attr('aria-disabled', 'true');\n                }\n\n            } else {\n\n                _.$prevArrow.add( _.$nextArrow )\n\n                    .addClass('slick-hidden')\n                    .attr({\n                        'aria-disabled': 'true',\n                        'tabindex': '-1'\n                    });\n\n            }\n\n        }\n\n    };
1\n\n    Slick.prototype.buildDots = function() {\n\n        var _ = this,\n            i, dot;\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$slider.addClass('slick-dotted');\n\n            dot = $('<ul />').addClass(_.options.dotsClass);\n\n            for (i = 0; i <= _.getDotCount(); i += 1) {\n                dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));\n            }\n\n            _.$dots = dot.appendTo(_.options.appendDots);\n\n            _.$dots.find('li').first().addClass('slick-active');\n\n        }\n\n    };\n\n    Slick.prototype.buildOut = function() {\n\n        var _ = this;\n\n        _.$slides =\n            _.$slider\n                .children( _.options.slide + ':not(.slick-cloned)')\n                .addClass('slick-slide');\n\n        _.slideCount = _.$slides.length;\n\n        _.$slides.each(function(index, element) {\n            $(element)\n                .attr('data-slick-index', index)\n                .data('originalStyling', $(element).attr('style') || '');\n        });\n\n        _.$slider.addClass('slick-slider');\n\n        _.$slideTrack = (_.slideCount === 0) ?\n            $('<div class=\"slick-track\"/>').appendTo(_.$slider) :\n            _.$slides.wrapAll('<div class=\"slick-track\"/>').parent();\n\n        _.$list = _.$slideTrack.wrap(\n            '<div class=\"slick-list\"/>').parent();\n        _.$slideTrack.css('opacity', 0);\n\n        if (_.options.centerMode === true || _.options.swipeToSlide === true) {\n            _.options.slidesToScroll = 1;\n        }\n\n        $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');\n\n        _.setupInfinite();\n\n        _.buildArrows();\n\n        _.buildDots();\n\n        _.updateDots();\n\n\n        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n        if (_.options.draggable === true) {\n            _.$list.addClass('draggable');\n        }\n\n    };\n\n    Slick.prototype.buildRows = function() {\n\n        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;\n\n        newSlides = document.createDocumentFragment();\n        originalSlides = _.$slider.children();\n\n        if(_.options.rows > 0) {\n\n            slidesPerSection = _.options.slidesPerRow * _.options.rows;\n            numOfSlides = Math.ceil(\n                originalSlides.length / slidesPerSection\n            );\n\n            for(a = 0; a < numOfSlides; a++){\n                var slide = document.createElement('div');\n                for(b = 0; b < _.options.rows; b++) {\n                    var row = document.createElement('div');\n                    for(c = 0; c < _.options.slidesPerRow; c++) {\n                        var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));\n                        if (originalSlides.get(target)) {\n                            row.appendChild(originalSlides.get(target));\n                        }\n                    }\n                    slide.appendChild(row);\n                }\n                newSlides.appendChild(slide);\n            }\n\n            _.$slider.empty().append(newSlides);\n            _.$slider.children().children().children()\n                .css({\n                    'width':(100 / _.options.slidesPerRow) + '%',\n                    'display': 'inline-block'\n                });\n\n        }\n\n    };\n\n    Slick.prototype.checkResponsive = function(initial, forceUpdate) {\n\n        var _ = this,\n            breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;\n        var sliderWidth = _.$slider.width();\n        var windowWidth = window.innerWidth || $(window).width();\n\n        if (_.respondTo === 'window') {\n            respondToWidth = windowWidth;\n        } else if (_.respondTo === 'slider') {\n            respondToWidth = sliderWidth;\n        } else if (_.respondTo === 'min') {\n            respondToWidth = Math.min(windowWidth, sliderWidth);\n        }
1\n\n        if ( _.options.responsive &&\n            _.options.responsive.length &&\n            _.options.responsive !== null) {\n\n            targetBreakpoint = null;\n\n            for (breakpoint in _.breakpoints) {\n                if (_.breakpoints.hasOwnProperty(breakpoint)) {\n                    if (_.originalSettings.mobileFirst === false) {\n                        if (respondToWidth < _.breakpoints[breakpoint]) {\n                            targetBreakpoint = _.breakpoints[breakpoint];\n                        }\n                    } else {\n                        if (respondToWidth > _.breakpoints[breakpoint]) {\n                            targetBreakpoint = _.breakpoints[breakpoint];\n                        }\n                    }\n                }\n            }\n\n            if (targetBreakpoint !== null) {\n                if (_.activeBreakpoint !== null) {\n                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {\n                        _.activeBreakpoint =\n                            targetBreakpoint;\n                        if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n                            _.unslick(targetBreakpoint);\n                        } else {\n                            _.options = $.extend({}, _.originalSettings,\n                                _.breakpointSettings[\n                                    targetBreakpoint]);\n                            if (initial === true) {\n                                _.currentSlide = _.options.initialSlide;\n                            }\n                            _.refresh(initial);\n                        }\n                        triggerBreakpoint = targetBreakpoint;\n                    }\n                } else {\n                    _.activeBreakpoint = targetBreakpoint;\n                    if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n                        _.unslick(targetBreakpoint);\n                    } else {\n                        _.options = $.extend({}, _.originalSettings,\n                            _.breakpointSettings[\n                                targetBreakpoint]);\n                        if (initial === true) {\n                            _.currentSlide = _.options.initialSlide;\n                        }\n                        _.refresh(initial);\n                    }\n                    triggerBreakpoint = targetBreakpoint;\n                }\n            } else {\n                if (_.activeBreakpoint !== null) {\n                    _.activeBreakpoint = null;\n                    _.options = _.originalSettings;\n                    if (initial === true) {\n                        _.currentSlide = _.options.initialSlide;\n                    }\n                    _.refresh(initial);\n                    triggerBreakpoint = targetBreakpoint;\n                }\n            }\n\n            // only trigger breakpoints during an actual break. not on initialize.\n            if( !initial && triggerBreakpoint !== false ) {\n                _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);\n            }\n        }\n\n    };\n\n    Slick.prototype.changeSlide = function(event, dontAnimate) {\n\n        var _ = this,\n            $target = $(event.currentTarget),\n            indexOffset, slideOffset, unevenOffset;\n\n        // If target is a link, prevent default action.\n        if($target.is('a')) {\n            event.preventDefault();\n        }\n\n        // If target is not the <li> element (ie: a child), find the <li>.\n        if(!$target.is('li')) {\n            $target = $target.closest('li');\n        }\n\n        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);\n        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;\n\n        switch (event.data.message) {\n\n            case 'previous':\n                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;\n                if (_.slideCount > _.options.slidesToShow) {\n                    _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);\n                }\n                break;\n\n            case 'next':\n                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;\n                if (_.slideCount > _.options.slidesToShow) {\n                    _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);\n                }\n                break;\n\n            case 'index':\n                var index = event.data.index === 0 ? 0 :\n                    event.data.index || $target.index() * _.options.slidesToScroll;\n\n                _.slideHandler(_.checkNavigable(index), false, dontAnimate);\n                $target.children().trigger('focus');\n                break;\n\n            default:\n                return;\n        }\n\n    };\n\n    Slick.prototype.checkNavigable = function(index) {\n\n        var _ = this,\n            navigables, prevNavigable;\n\n        navigables = _.getNavigableIndexes();\n        prevNavigable = 0;\n        if (index > navigables[navigables.length - 1]) {\n            index = navigables[navigables.length - 1];\n        } else {\n            for (var n in navigables) {\n                if (index < navigables[n]) {\n                    index = prevNavigable;\n                    break;\n                }\n                prevNavigable = navigables[n];\n            }\n        }\n\n        return index;\n    };
1\n\n    Slick.prototype.cleanUpEvents = function() {\n\n        var _ = this;\n\n        if (_.options.dots && _.$dots !== null) {\n\n            $('li', _.$dots)\n                .off('click.slick', _.changeSlide)\n                .off('mouseenter.slick', $.proxy(_.interrupt, _, true))\n                .off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n            if (_.options.accessibility === true) {\n                _.$dots.off('keydown.slick', _.keyHandler);\n            }\n        }\n\n        _.$slider.off('focus.slick blur.slick');\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n            _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);\n            _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);\n\n            if (_.options.accessibility === true) {\n                _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler);\n                _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler);\n            }\n        }\n\n        _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);\n        _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);\n        _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);
1\n        _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);\n\n        _.$list.off('click.slick', _.clickHandler);\n\n        $(document).off(_.visibilityChange, _.visibility);\n\n        _.cleanUpSlideEvents();\n\n        if (_.options.accessibility === true) {\n            _.$list.off('keydown.slick', _.keyHandler);\n        }\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().off('click.slick', _.selectHandler);\n        }\n\n        $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);\n\n        $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);\n\n        $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);\n\n        $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);\n\n    };\n\n    Slick.prototype.cleanUpSlideEvents = function() {\n\n        var _ = this;\n\n        _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));\n        _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n    };\n\n    Slick.prototype.cleanUpRows = function() {\n\n        var _ = this, originalSlides;\n\n        if(_.options.rows > 0) {\n            originalSlides = _.$slides.children().children();\n            originalSlides.removeAttr('style');\n            _.$slider.empty().append(originalSlides);\n        }\n\n    };\n\n    Slick.prototype.clickHandler = function(event) {\n\n        var _ = this;\n\n        if (_.shouldClick === false) {\n            event.stopImmediatePropagation();\n            event.stopPropagation();\n            event.preventDefault();\n        }\n\n    };\n\n    Slick.prototype.destroy = function(refresh) {\n\n        var _ = this;\n\n        _.autoPlayClear();\n\n        _.touchObject = {};\n\n        _.cleanUpEvents();\n\n        $('.slick-cloned', _.$slider).detach();\n\n        if (_.$dots) {\n            _.$dots.remove();\n        }\n\n        if ( _.$prevArrow && _.$prevArrow.length ) {\n\n            _.$prevArrow\n                .removeClass('slick-disabled slick-arrow slick-hidden')\n                .removeAttr('aria-hidden aria-disabled tabindex')\n                .css('display','');\n\n            if ( _.htmlExpr.test( _.options.prevArrow )) {\n                _.$prevArrow.remove();\n            }\n        }\n\n        if ( _.$nextArrow && _.$nextArrow.length ) {\n\n            _.$nextArrow\n                .removeClass('slick-disabled slick-arrow slick-hidden')\n                .removeAttr('aria-hidden aria-disabled tabindex')\n                .css('display','');\n\n            if ( _.htmlExpr.test( _.options.nextArrow )) {\n                _.$nextArrow.remove();\n            }\n        }\n\n\n        if (_.$slides) {\n\n            _.$slides\n                .removeClass('slick-slide slick-active slick-center slick-visible slick-current')\n                .removeAttr('aria-hidden')\n                .removeAttr('data-slick-index')\n                .each(function(){\n                    $(this).attr('style', $(this).data('originalStyling'));\n                });\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slideTrack.detach();\n\n            _.$list.detach();\n\n            _.$slider.append(_.$slides);\n        }\n\n        _.cleanUpRows();\n\n        _.$slider.removeClass('slick-slider');\n        _.$slider.removeClass('slick-initialized');\n        _.$slider.removeClass('slick-dotted');\n\n        _.unslicked = true;\n\n        if(!refresh) {\n            _.$slider.trigger('destroy', [_]);\n        }\n\n    };\n\n    Slick.prototype.disableTransition = function(slide) {\n\n        var _ = this,\n            transition = {};\n\n        transition[_.transitionType] = '';\n\n        if (_.options.fade === false) {\n            _.$slideTrack.css(transition);\n        } else {\n            _.$slides.eq(slide).css(transition);\n        }\n\n    };\n\n    Slick.prototype.fadeSlide = function(slideIndex, callback) {\n\n        var _ = this;\n\n        if (_.cssTransitions === false) {\n\n            _.$slides.eq(slideIndex).css({\n                zIndex: _.options.zIndex\n            });\n\n            _.$slides.eq(slideIndex).animate({\n                opacity: 1\n            }, _.options.speed, _.options.easing, callback);\n\n        } else {\n\n            _.applyTransition(slideIndex);\n\n            _.$slides.eq(slideIndex).css({\n                opacity: 1,\n                zIndex: _.options.zIndex\n            });\n\n            if (callback) {\n                setTimeout(function() {\
1n\n                    _.disableTransition(slideIndex);\n\n                    callback.call();\n                }, _.options.speed);\n            }\n\n        }\n\n    };\n\n    Slick.prototype.fadeSlideOut = function(slideIndex) {\n\n        var _ = this;\n\n        if (_.cssTransitions === false) {\n\n            _.$slides.eq(slideIndex).animate({\n                opacity: 0,\n                zIndex: _.options.zIndex - 2\n            }, _.options.speed, _.options.easing);\n\n        } else {\n\n            _.applyTransition(slideIndex);\n\n            _.$slides.eq(slideIndex).css({\n                opacity: 0,\n                zIndex: _.options.zIndex - 2\n            });\n\n        }\n\n    };\n\n    Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {\n\n        var _ = this;\n\n        if (filter !== null) {\n\n            _.$slidesCache = _.$slides;\n\n            _.unload();\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);\n\n            _.reinit();\n\n        }\n\n    };\n\n    Slick.prototype.focusHandler = function() {\n\n        var _ = this;\n\n        _.$slider\n            .off('focus.slick blur.slick')\n            .on('focus.slick blur.slick', '*', function(event) {\n\n            event.stopImmediatePropagation();\n            var $sf = $(this);\n\n            setTimeout(function() {\n\n                if( _.options.pauseOnFocus ) {\n                    _.focussed = $sf.is(':focus');\n                    _.autoPlay();\n                }\n\n            }, 0);\n\n        });\n    };\n\n    Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {\n\n        var _ = this;\n        return _.currentSlide;\n\n    };\n\n    Slick.prototype.getDotCount = function() {\n\n        var _ = this;\n\n        var breakPoint = 0;\n        var counter = 0;\n        var pagerQty = 0;\n\n        if (_.options.infinite === true) {\n            if (_.slideCount <= _.options.slidesToShow) {\n                 ++pagerQty;\n            } else {\n                while (breakPoint < _.slideCount) {\n                    ++pagerQty;\n                    breakPoint = counter + _.options.slidesToScroll;\n                    counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n                }\n            }\n        } else if (_.options.centerMode === true) {\n            pagerQty = _.slideCount;\n        } else if(!_.options.asNavFor) {\n            pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);\n        }else {\n            while (breakPoint < _.slideCount) {\n                ++pagerQty;\n                breakPoint = counter + _.options.slidesToScroll;\n                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n            }\n        }\n\n        return pagerQty - 1;\n\n    };\n\n    Slick.prototype.getLeft = function(slideIndex) {\n\n        var _ = this,\n            targetLeft,\n            verticalHeight,\n            verticalOffset = 0,\n            targetSlide,\n            coef;\n\n        _.slideOffset = 0;\n        verticalHeight = _.$slides.first().outerHeight(true);\n\n        if (_.options.infinite === true) {\n            if (_.slideCount > _.options.slidesToShow) {\n                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;\n                coef = -1\n\n                if (_.options.vertical === true && _.options.centerMode === true) {\n                    if (_.options.slidesToShow === 2) {\n                        coef = -1.5;\n                    } else if (_.options.slidesToShow === 1) {\n                        coef = -2\n                    }\n                }\n                verticalOffset = (verticalHeight * _.options.slidesToShow) * coef;\n            }\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {\n                    if (slideIndex > _.slideCount) {\n                        _.slideOffset = ((_.options.slidesToShow - (sl
1ideIndex - _.slideCount)) * _.slideWidth) * -1;\n                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;\n                    } else {\n                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;\n                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;\n                    }\n                }\n            }\n        } else {\n            if (slideIndex + _.options.slidesToShow > _.slideCount) {\n                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;\n                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;\n            }\n        }\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            _.slideOffset = 0;\n            verticalOffset = 0;\n        }\n\n        if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) {\n            _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2);\n        } else if (_.options.centerMode === true && _.options.infinite === true) {\n            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;\n        } else if (_.options.centerMode === true) {\n            _.slideOffset = 0;\n            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);\n        }\n\n        if (_.options.vertical === false) {\n            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;\n        } else {\n            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;\n        }\n\n        if (_.options.variableWidth === true) {\n\n            if (_.slideCount <= _.options.slidesToShow || _.o
1ptions.infinite === false) {\n                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n            } else {\n                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);\n            }\n\n            if (_.options.rtl === true) {\n                if (targetSlide[0]) {\n                    targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n                } else {\n                    targetLeft =  0;\n                }\n            } else {\n                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n            }\n\n            if (_.options.centerMode === true) {\n                if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n                } else {\n                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);\n                }\n\n                if (_.options.rtl === true) {\n                    if (targetSlide[0]) {\n                        targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n                    } else {\n                        targetLeft =  0;\n                    }\n                } else {\n                    targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n                }\n\n                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;\n            }\n        }\n\n        return targetLeft;\n\n    };\n\n    Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {\n\n        var _ = this;\n\n        return _.options[option];\n\n    };\n\n    Slick.prototype.getNavigableIndexes = function() {\n\n        var _ = this,\n            breakPoint = 0,\n            counter = 0,\n            indexes = [],\n            max;\n\n        if (_.options.infinite === false) {\n            max = _.slideCount;\n        } else {\n            breakPoint = _.options.slidesToScroll * -1;\n            counter = _.options.slidesToScroll * -1;\n            max = _.slideCount * 2;\n        }\n\n        while (breakPoint < max) {\n            indexes.push(breakPoint);\n            breakPoint = counter + _.options.slidesToScroll;\n            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n        }\n\n        return indexes;\n\n    };\n\n    Slick.prototype.getSlick = function() {\n\n        return this;\n\n    };\n\n    Slick.prototype.getSlideCount = function() {\n\n        var _ = this,\n            slidesTraversed, swipedSlide, centerOffset;\n\n        centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;\n\n        if (_.options.swipeToSlide === true) {\n            _.$slideTrack.find('.slick-slide').each(function(index, slide) {\n                if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {\n                    swipedSlide = slide;\n                    return false;\n                }\n            });\n\n            slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;\n\n            return slidesTraversed;\n\n        } else {\n            return _.options.slidesToScroll;\n        }\n\n    };\n\n    Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {\n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'index',\n                index: parseInt(slide)\n            }\n        }, dontAnimate);\n\n    };\n\n    Slick.prototype.init = function(creation) {\n\n        var _ = this;\n\n        if (!$(_.$slider).hasClass('slick-initialized')) {\n\n            $(_.$slider).addClass('slick-initialized');\n\n            _.buildRows();\n            _.buildOut();\n            _.setProps();\n            _.startLoad();\n            _.loadSlider();\n            _.initializeEvents();\n            _.updateArrows();\n            _.updateDots();\n            _.checkResponsive(true);\n            _.focusHandler();\n\n        }\n\n        if (creation) {\n            _.$slider.trigger('init', [_]);\n        }\n\n        if (_.options.accessibility === true) {\n            _.initADA();\n        }\n\n        if ( _.options.autoplay ) {\n\n            _.paused = false;\n            _.autoPlay();\n\n        }\n\n    };
1\n\n    Slick.prototype.initADA = function() {\n        var _ = this,\n                numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow),\n                tabControlIndexes = _.getNavigableIndexes().filter(function(val) {\n                    return (val >= 0) && (val < _.slideCount);\n                });\n\n        _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({\n            'aria-hidden': 'true',\n            'tabindex': '-1'\n        }).find('a, input, button, select').attr({\n            'tabindex': '-1'\n        });\n\n        if (_.$dots !== null) {\n            _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {\n                var slideControlIndex = tabControlIndexes.indexOf(i);\n\n                $(this).attr({\n                    'role': 'tabpanel',\n                    'id': 'slick-slide' + _.instanceUid + i,\n                    'tabindex': -1\n                });\n\n                if (slideControlIndex !== -1) {\n                   var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex\n                   if ($('#' + ariaButtonControl).length) {\n                     $(this).attr({\n                         'aria-describedby': ariaButtonControl\n                     });\n                   }\n                }\n            });\n\n            _.$dots.attr('role', 'tablist').find('li').each(function(i) {\n                var mappedSlideIndex = tabControlIndexes[i];\n\n                $(this).attr({\n                    'role': 'presentation'\n                });\n\n                $(this).find('button').first().attr({\n                    'role': 'tab',\n                    'id': 'slick-slide-control' + _.instanceUid + i,\n                    'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex,\n                    'aria-label': (i + 1) + ' of ' + numDotGroups,\n                    'aria-selected': null,\n                    'tabindex': '-1'\n                });\n\n            }).eq(_.currentSlide).find('button').attr({\n                'aria-selected': 'true',\n                'tabindex': '0'\n            }).end();\n        }\n\n        for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) {\n          if (_.options.focusOnChange) {\n            _.$slides.eq(i).attr({'tabindex': '0'});\n          } else {\n            _.$slides.eq(i).removeAttr('tabindex');\n          }\n        }\n\n        _.activateADA();\n\n    };\n\n    Slick.prototype.initArrowEvents = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n            _.$prevArrow\n               .off('click.slick')\n               .on('click.slick', {\n                    message: 'previous'\n               }, _.changeSlide);\n            _.$nextArrow\n               .off('click.slick')\n               .on('click.slick', {\n                    message: 'next'\n               }, _.changeSlide);\n\n            if (_.options.accessibility === true) {\n                _.$prevArrow.on('keydown.slick', _.keyHandler);\n                _.$nextArrow.on('keydown.slick', _.keyHandler);\n            }\n        }\n\n    };\n\n    Slick.prototype.initDotEvents = function() {\n\n        var _ = this;\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n            $('li', _.$dots).on('click.slick', {\n                message: 'index'\n            }, _.changeSlide);\n\n            if (_.options.accessibility === true) {\n                _.$dots.on('keydown.slick', _.keyHandler);\n            }\n        }\n\n        if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) {\n\n            $('li', _.$dots)\n                .on('mouseenter.slick', $.proxy(_.interrupt, _, true))\n                .on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n        }\n\n    };\n\n    Slick.prototype.initSlideEvents = function() {\n\n        var _ = this;\n\n        if ( _.options.pauseOnHover ) {\n\n            _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));
1\n            _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n        }\n\n    };\n\n    Slick.prototype.initializeEvents = function() {\n\n        var _ = this;\n\n        _.initArrowEvents();\n\n        _.initDotEvents();\n        _.initSlideEvents();\n\n        _.$list.on('touchstart.slick mousedown.slick', {\n            action: 'start'\n        }, _.swipeHandler);\n        _.$list.on('touchmove.slick mousemove.slick', {\n            action: 'move'\n        }, _.swipeHandler);\n        _.$list.on('touchend.slick mouseup.slick', {\n            action: 'end'\n        }, _.swipeHandler);\n        _.$list.on('touchcancel.slick mouseleave.slick', {\n            action: 'end'\n        }, _.swipeHandler);\n\n        _.$list.on('click.slick', _.clickHandler);\n\n        $(document).on(_.visibilityChange, $.proxy(_.visibility, _));\n\n        if (_.options.accessibility === true) {\n            _.$list.on('keydown.slick', _.keyHandler);\n        }\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n        }\n\n        $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));\n\n        $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));\n\n        $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);\n\n        $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);\n        $(_.setPosition);\n\n    };\n\n    Slick.prototype.initUI = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$prevArrow.show();\n            _.$nextArrow.show();\n\n        }\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$dots.show();\n\n        }\n\n    };\n\n    Slick.prototype.keyHandler = function(event) {\n\n        var _ = this;\n         //Dont slide if the cursor is inside the form fields and arrow keys are pressed\n        if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {\n            if (event.keyCode === 37 && _.options.accessibility === true) {\n                _.changeSlide({\n                    data: {\n                        message: _.options.rtl === true ? 'next' :  'previous'\n                    }\n                });\n            } else if (event.keyCode === 39 && _.options.accessibility === true) {\n                _.changeSlide({\n                    data: {\n                        message: _.options.rtl === true ? 'previous' : 'next'\n                    }\n                });\n            }\n        }\n\n    };\n\n    Slick.prototype.lazyLoad = function() {\n\n        var _ = this,\n            loadRange, cloneRange, rangeStart, rangeEnd;\n\n        function loadImages(imagesScope) {\n\n            $('img[data-lazy]', imagesScope).each(function() {\n\n                var image = $(this),\n                    imageSource = $(this).attr('data-lazy'),\n                    imageSrcSet = $(this).attr('data-srcset'),\n                    imageSizes  = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'),\n                    imageToLoad = document.createElement('img');\n\n                imageToLoad.onload = function() {\n\n                    image\n                        .animate({ opacity: 0 }, 100, function() {\n\n                            if (imageSrcSet) {\n                                image\n                                    .attr('srcset', imageSrcSet );\n\n                                if (imageSizes) {\n                                    image\n                                        .attr('sizes', imageSizes );\n                                }\n                            }\n\n                            image\n                                .attr('src', imageSource)\n                                .animate({ opacity: 1 }, 200, function() {\n                                    image\n                                        .removeAttr('data-lazy data-srcset data-sizes')\n                                        .removeClass('slick-loading');\n                                });\n                            _.$slider.trigger('lazyLoaded', [_, image, imageSource]);\n                        });\n\n                };
1\n\n                imageToLoad.onerror = function() {\n\n                    image\n                        .removeAttr( 'data-lazy' )\n                        .removeClass( 'slick-loading' )\n                        .addClass( 'slick-lazyload-error' );\n\n                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n                };\n\n                imageToLoad.src = imageSource;\n\n            });\n\n        }\n\n        if (_.options.centerMode === true) {\n            if (_.options.infinite === true) {\n                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);\n                rangeEnd = rangeStart + _.options.slidesToShow + 2;\n            } else {\n                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));\n                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;\n            }\n        } else {\n            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;\n            rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);\n            if (_.options.fade === true) {\n                if (rangeStart > 0) rangeStart--;\n                if (rangeEnd <= _.slideCount) rangeEnd++;\n            }\n        }\n\n        loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);\n\n        if (_.options.lazyLoad === 'anticipated') {\n            var prevSlide = rangeStart - 1,\n                nextSlide = rangeEnd,\n                $slides = _.$slider.find('.slick-slide');\n\n            for (var i = 0; i < _.options.slidesToScroll; i++) {\n                if (prevSlide < 0) prevSlide = _.slideCount - 1;\n                loadRange = loadRange.add($slides.eq(prevSlide));\n                loadRange = loadRange.add($slides.eq(nextSlide));\n                prevSlide--;\n                nextSlide++;\n            }\n        }\n\n        loadImages(loadRange);\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            cloneRange = _.$slider.find('.slick-slide');\n            loadImages(cloneRange);\n        } else\n        if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {\n            cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);\n            loadImages(cloneRange);\n        } else if (_.currentSlide === 0) {\n            cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);\n            loadImages(cloneRange);\n        }\n\n    };\n\n    Slick.prototype.loadSlider = function() {\n\n        var _ = this;\n\n        _.setPosition();\n\n        _.$slideTrack.css({\n            opacity: 1\n        });\n\n        _.$slider.removeClass('slick-loading');\n\n        _.initUI();\n\n        if (_.options.lazyLoad === 'progressive') {\n            _.progressiveLazyLoad();\n        }\n\n    };\n\n    Slick.prototype.next = Slick.prototype.slickNext = function() {\n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'next'\n            }\n        });\n\n    };\n\n    Slick.prototype.orientationChange = function() {\n\n        var _ = this;\n\n        _.checkResponsive();\n        _.setPosition();\n\n    };\n\n    Slick.prototype.pause = Slick.prototype.slickPause = function() {\n\n        var _ = this;\n\n        _.autoPlayClear();\n        _.paused = true;\n\n    };\n\n    Slick.prototype.play = Slick.prototype.slickPlay = function() {\n\n        var _ = this;\n\n        _.autoPlay();\n        _.options.autoplay = true;\n        _.paused = false;\n        _.focussed = false;\n        _.interrupted = false;\n\n    };\n\n    Slick.prototype.postSlide = function(index) {\n\n        var _ = this;\n\n        if( !_.unslicked ) {\n\n            _.$slider.trigger('afterChange', [_, index]);\n\n            _.animating = false;\n\n            if (_.slideCount > _.options.slidesToShow) {\n                _.setPosition();\n            }\n\n            _.swipeLeft = null;\n\n            if ( _.options.autoplay ) {\n                _.autoPlay();\n            }\n\n            if (_.options.accessibility === true) {\n                _.initADA();\n\n                if (_.options.focusOnChange) {\n                    var $currentSlide = $(_.$slides.get(_.currentSlide));\n                    $currentSlide.attr('tabindex', 0).focus();\n                }\n            }\n\n        }\n\n    };\n\n    Slick.prototype.prev = Slick.prototype.slickPrev = function() {\
1n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'previous'\n            }\n        });\n\n    };\n\n    Slick.prototype.preventDefault = function(event) {\n\n        event.preventDefault();\n\n    };\n\n    Slick.prototype.progressiveLazyLoad = function( tryCount ) {\n\n        tryCount = tryCount || 1;\n\n        var _ = this,\n            $imgsToLoad = $( 'img[data-lazy]', _.$slider ),\n            image,\n            imageSource,\n            imageSrcSet,\n            imageSizes,\n            imageToLoad;\n\n        if ( $imgsToLoad.length ) {\n\n            image = $imgsToLoad.first();\n            imageSource = image.attr('data-lazy');\n            imageSrcSet = image.attr('data-srcset');\n            imageSizes  = image.attr('data-sizes') || _.$slider.attr('data-sizes');\n            imageToLoad = document.createElement('img');\n\n            imageToLoad.onload = function() {\n\n                if (imageSrcSet) {\n                    image\n                        .attr('srcset', imageSrcSet );\n\n                    if (imageSizes) {\n                        image\n                            .attr('sizes', imageSizes );\n                    }\n                }\n\n                image\n                    .attr( 'src', imageSource )\n                    .removeAttr('data-lazy data-srcset data-sizes')\n                    .removeClass('slick-loading');\n\n                if ( _.options.adaptiveHeight === true ) {\n                    _.setPosition();\n                }\n\n                _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);\n                _.progressiveLazyLoad();\n\n            };\n\n            imageToLoad.onerror = function() {\n\n                if ( tryCount < 3 ) {\n\n                    /**\n                     * try to load the image 3 times,\n                     * leave a slight delay so we don't get\n                     * servers blocking the request.\n                     */\n                    setTimeout( function() {\n                        _.progressiveLazyLoad( tryCount + 1 );\n                    }, 500 );\n\n                } else {\n\n                    image\n                        .removeAttr( 'data-lazy' )\n                        .removeClass( 'slick-loading' )\n                        .addClass( 'slick-lazyload-error' );\n\n                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n                    _.progressiveLazyLoad();\n\n                }\n\n            };\n\n            imageToLoad.src = imageSource;\n\n        } else {\n\n            _.$slider.trigger('allImagesLoaded', [ _ ]);\n\n        }\n\n    };\n\n    Slick.prototype.refresh = function( initializing ) {\n\n        var _ = this, currentSlide, lastVisibleIndex;\n\n        lastVisibleIndex = _.slideCount - _.options.slidesToShow;\n\n        // in non-infinite sliders, we don't want to go past the\n        // last visible index.\n        if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {\n            _.currentSlide = lastVisibleIndex;\n        }\n\n        // if less slides than to show, go to start.\n        if ( _.slideCount <= _.options.slidesToShow ) {\n            _.currentSlide = 0;\n\n        }\n\n        currentSlide = _.currentSlide;\n\n        _.destroy(true);\n\n        $.extend(_, _.initials, { currentSlide: currentSlide });\n\n        _.init();\n\n        if( !initializing ) {\n\n            _.changeSlide({\n                data: {\n                    message: 'index',\n                    index: currentSlide\n                }\n            }, false);\n\n        }\n\n    };\n\n    Slick.prototype.registerBreakpoints = function() {\n\n        var _ = this, breakpoint, currentBreakpoint, l,\n            responsiveSettings = _.options.responsive || null;\n\n        if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {\n\n            _.respondTo = _.options.respondTo || 'window';\n\n            for ( breakpoint in responsiveSettings ) {\n\n                l = _.breakpoints.length-1;\n\n                if (responsiveSettings.hasOwnProperty(breakpoint)) {\n                    currentBreakpoint = responsiveSettings[breakpoint].breakpoint;\n\n                    // loop through the breakpoints and cut out any existing\n                    // ones with the same breakpoint number, we don't want dupes.\n                    while( l >= 0 ) {\n                        if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {\n                            _.breakpoints.splice(l,1);\n                        }\n                        l--;\n                    }\n\n                    _.breakpoints.push(currentBreakpoint);\n                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;\n\n                }\n\n            }\n\n            _.breakpoints.sort(function(a, b) {\n                return ( _.options.mobileFirst ) ? a-b : b-a;\n            });\n\n        }\n\n    };
1\n\n    Slick.prototype.reinit = function() {\n\n        var _ = this;\n\n        _.$slides =\n            _.$slideTrack\n                .children(_.options.slide)\n                .addClass('slick-slide');\n\n        _.slideCount = _.$slides.length;\n\n        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {\n            _.currentSlide = _.currentSlide - _.options.slidesToScroll;\n        }\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            _.currentSlide = 0;\n        }\n\n        _.registerBreakpoints();\n\n        _.setProps();\n        _.setupInfinite();\n        _.buildArrows();\n        _.updateArrows();\n        _.initArrowEvents();\n        _.buildDots();\n        _.updateDots();\n        _.initDotEvents();\n        _.cleanUpSlideEvents();\n        _.initSlideEvents();\n\n        _.checkResponsive(false, true);\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n        }\n\n        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n        _.setPosition();\n        _.focusHandler();\n\n        _.paused = !_.options.autoplay;\n        _.autoPlay();\n\n        _.$slider.trigger('reInit', [_]);\n\n    };\n\n    Slick.prototype.resize = function() {\n\n        var _ = this;\n\n        if ($(window).width() !== _.windowWidth) {\n            clearTimeout(_.windowDelay);\n            _.windowDelay = window.setTimeout(function() {\n                _.windowWidth = $(window).width();\n                _.checkResponsive();\n                if( !_.unslicked ) { _.setPosition(); }\n            }, 50);\n        }\n    };\n\n    Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {\n\n        var _ = this;\n\n        if (typeof(index) === 'boolean') {\n            removeBefore = index;\n            index = removeBefore === true ? 0 : _.slideCount - 1;\n        } else {\n            index = removeBefore === true ? --index : index;\n        }\n\n        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {\n            return false;\n        }\n\n        _.unload();\n\n        if (removeAll === true) {\n            _.$slideTrack.children().remove();\n        } else {\n            _.$slideTrack.children(this.options.slide).eq(index).remove();\n        }\n\n        _.$slides = _.$slideTrack.children(this.options.slide);\n\n        _.$slideTrack.children(this.options.slide).detach();\n\n        _.$slideTrack.append(_.$slides);\n\n        _.$slidesCache = _.$slides;\n\n        _.reinit();\n\n    };\n\n    Slick.prototype.setCSS = function(position) {\n\n        var _ = this,\n            positionProps = {},\n            x, y;\n\n        if (_.options.rtl === true) {\n            position = -position;\n        }\n        x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';\n        y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';\n\n        positionProps[_.positionProp] = position;\n\n        if (_.transformsEnabled === false) {\n            _.$slideTrack.css(positionProps);\n        } else {\n            positionProps = {};\n            if (_.cssTransitions === false) {\n                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';\n                _.$slideTrack.css(positionProps);\n            } else {\n                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';\n                _.$slideTrack.css(positionProps);\n            }\n        }\n\n    };\n\n    Slick.prototype.setDimensions = function() {\n\n        var _ = this;\n\n        if (_.options.vertical === false) {\n            if (_.options.centerMode === true) {\n                _.$list.css({\n                    padding: ('0px ' + _.options.centerPadding)\n                });\n            }\n        } else {\n            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);\n            if (_.options.centerMode === true) {\n                _.$list.css({\n                    padding: (_.options.centerPadding + ' 0px')\n                });\n            }\n        }\n\n        _.listWidth = _.$list.width();\n        _.listHeight = _.$list.height();\n\n\n        if (_.options.vertical === false && _.options.variableWidth === false) {\n            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);\n            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));\n\n        } else if (_.options.variableWidth === true) {\n            _.$slideTrack.width(5000 * _.slideCount);\n        } else {\n            _.slideWidth = Math.ceil(_.listWidth);\n            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));\n        }\n\n        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();\n        if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);\n\n    };
1\n\n    Slick.prototype.setFade = function() {\n\n        var _ = this,\n            targetLeft;\n\n        _.$slides.each(function(index, element) {\n            targetLeft = (_.slideWidth * index) * -1;\n            if (_.options.rtl === true) {\n                $(element).css({\n                    position: 'relative',\n                    right: targetLeft,\n                    top: 0,\n                    zIndex: _.options.zIndex - 2,\n                    opacity: 0\n                });\n            } else {\n                $(element).css({\n                    position: 'relative',\n                    left: targetLeft,\n                    top: 0,\n                    zIndex: _.options.zIndex - 2,\n                    opacity: 0\n                });\n            }\n        });\n\n        _.$slides.eq(_.currentSlide).css({\n            zIndex: _.options.zIndex - 1,\n            opacity: 1\n        });\n\n    };\n\n    Slick.prototype.setHeight = function() {\n\n        var _ = this;\n\n        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n            _.$list.css('height', targetHeight);\n        }\n\n    };\n\n    Slick.prototype.setOption =\n    Slick.prototype.slickSetOption = function() {\n\n        /**\n         * accepts arguments in format of:\n         *\n         *  - for changing a single option's value:\n         *     .slick(\"setOption\", option, value, refresh )\n         *\n         *  - for changing a set of responsive options:\n         *     .slick(\"setOption\", 'responsive', [{}, ...], refresh )\n         *\n         *  - for updating multiple values at once (not responsive)\n         *     .slick(\"setOption\", { 'option': value, ... }, refresh )\n         */\n\n        var _ = this, l, item, option, value, refresh = false, type;\n\n        if( $.type( arguments[0] ) === 'object' ) {\n\n            option =  arguments[0];\n            refresh = arguments[1];\n            type = 'multiple';\n\n        } else if ( $.type( arguments[0] ) === 'string' ) {\n\n            option =  arguments[0];\n            value = arguments[1];\n            refresh = arguments[2];\n\n            if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {\n\n                type = 'responsive';\n\n            } else if ( typeof arguments[1] !== 'undefined' ) {\n\n                type = 'single';\n\n            }\n\n        }\n\n        if ( type === 'single' ) {\n\n            _.options[option] = value;\n\n\n        } else if ( type === 'multiple' ) {\n\n            $.each( option , function( opt, val ) {\n\n                _.options[opt] = val;\n\n            });\n\n\n        } else if ( type === 'responsive' ) {\n\n            for ( item in value ) {\n\n                if( $.type( _.options.responsive ) !== 'array' ) {\n\n                    _.options.responsive = [ value[item] ];\n\n                } else {\n\n                    l = _.options.responsive.length-1;\n\n                    // loop through the responsive object and splice out duplicates.\n                    while( l >= 0 ) {\n\n                        if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {\n\n                            _.options.responsive.splice(l,1);\n\n                        }\n\n                        l--;\n\n                    }\n\n                    _.options.responsive.push( value[item] );\n\n                }\n\n            }\n\n        }\n\n        if ( refresh ) {\n\n            _.unload();\n            _.reinit();\n\n        }\n\n    };\n\n    Slick.prototype.setPosition = function() {\n\n        var _ = this;\n\n        _.setDimensions();\n\n        _.setHeight();\n\n        if (_.options.fade === false) {\n            _.setCSS(_.getLeft(_.currentSlide));\n        } else {\n            _.setFade();\n        }\n\n        _.$slider.trigger('setPosition', [_]);\n\n    };\n\n    Slick.prototype.setProps = function() {\n\n        var _ = this,\n            bodyStyle = document.body.style;\n\n        _.positionProp = _.options.vertical === true ? 'top' : 'left';\n\n        if (_.positionProp === 'top') {\n            _.$slider.addClass('slick-vertical');\n        } else {\n            _.$slider.removeClass('slick-vertical');\n        }\n\n        if (bodyStyle.WebkitTransition !== undefined ||\n            bodyStyle.MozTransition !== undefined ||\n            bodyStyle.msTransition !== undefined) {\n            if (_.options.useCSS === true) {\n                _.cssTransitions = true;\n            }\n        }\n\n        if ( _.options.fade ) {\n            if ( typeof _.options.zIndex === 'number' ) {\n                if( _.options.zIndex < 3 ) {\n                    _.o
1ptions.zIndex = 3;\n                }\n            } else {\n                _.options.zIndex = _.defaults.zIndex;\n            }\n        }\n\n        if (bodyStyle.OTransform !== undefined) {\n            _.animType = 'OTransform';\n            _.transformType = '-o-transform';\n            _.transitionType = 'OTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.MozTransform !== undefined) {\n            _.animType = 'MozTransform';\n            _.transformType = '-moz-transform';\n            _.transitionType = 'MozTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.webkitTransform !== undefined) {\n            _.animType = 'webkitTransform';\n            _.transformType = '-webkit-transform';\n            _.transitionType = 'webkitTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.msTransform !== undefined) {\n            _.animType = 'msTransform';\n            _.transformType = '-ms-transform';\n            _.transitionType = 'msTransition';\n            if (bodyStyle.msTransform === undefined) _.animType = false;\n        }\n        if (bodyStyle.transform !== undefined && _.animType !== false) {\n            _.animType = 'transform';\n            _.transformType = 'transform';\n            _.transitionType = 'transition';\n        }\n        _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);\n    };\n\n\n    Slick.prototype.setSlideClasses = function(index) {\n\n        var _ = this,\n            centerOffset, allSlides, indexOffset, remainder;\n\n        allSlides = _.$slider\n            .find('.slick-slide')\n            .removeClass('slick-active slick-center slick-current')\n            .attr('aria-hidden', 'true');\n\n        _.$slides\n            .eq(index)\n            .addClass('slick-current');\n\n        if (_.options.centerMode === true) {\n\n            var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0;\n\n            centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n            if (_.options.infinite === true) {\n\n                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {\n                    _.$slides\n                        .slice(index - centerOffset + evenCoef, index + centerOffset + 1)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                } else {\n\n                    indexOffset = _.options.slidesToShow + index;\n                    allSlides\n                        .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                }\n\n                if (index === 0) {\n\n                    allSlides\n                        .eq(allSlides.length - 1 - _.options.slidesToShow)\n                        .addClass('slick-center');\n\n                } else if (index === _.slideCount - 1) {\n\n                    allSlides\n                        .eq(_.options.slidesToShow)\n                        .addClass('slick-center');\n\n                }\n\n            }\n\n            _.$slides\n                .eq(index)\n                .addClass('slick-center');\n\n        } else {\n\n            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {\n\n                _.$slides\n                    .slice(index, index + _.options.slidesToShow)\n                    .addClass('slick-active')\n                    .attr('aria-hidden', 'false');\n\n            } else if (allSlides.length <= _.options.slidesToShow) {\n\n                allSlides\n                    .addClass('slick-active')\n                    .attr('aria-hidden', 'false');\n\n            } else {\n\n                remainder = _.slideCount % _.options.slidesToShow;\n                indexOffset = _.options.infinite === true ? _.o
1ptions.slidesToShow + index : index;\n\n                if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {\n\n                    allSlides\n                        .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                } else {\n\n                    allSlides\n                        .slice(indexOffset, indexOffset + _.options.slidesToShow)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                }\n\n            }\n\n        }\n\n        if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') {\n            _.lazyLoad();\n        }\n    };\n\n    Slick.prototype.setupInfinite = function() {\n\n        var _ = this,\n            i, slideIndex, infiniteCount;\n\n        if (_.options.fade === true) {\n            _.options.centerMode = false;\n        }\n\n        if (_.options.infinite === true && _.options.fade === false) {\n\n            slideIndex = null;\n\n            if (_.slideCount > _.options.slidesToShow) {\n\n                if (_.options.centerMode === true) {\n                    infiniteCount = _.options.slidesToShow + 1;\n                } else {\n                    infiniteCount = _.options.slidesToShow;\n                }\n\n                for (i = _.slideCount; i > (_.slideCount -\n                        infiniteCount); i -= 1) {\n                    slideIndex = i - 1;\n                    $(_.$slides[slideIndex]).clone(true).attr('id', '')\n                        .attr('data-slick-index', slideIndex - _.slideCount)\n                        .prependTo(_.$slideTrack).addClass('slick-cloned');\n                }\n                for (i = 0; i < infiniteCount  + _.slideCount; i += 1) {\n                    slideIndex = i;\n                    $(_.$slides[slideIndex]).clone(true).attr('id', '')\n                        .attr('data-slick-index', slideIndex + _.slideCount)\n                        .appendTo(_.$slideTrack).addClass('slick-cloned');\n                }\n                _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {\n                    $(this).attr('id', '');\n                });\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.interrupt = function( toggle ) {\n\n        var _ = this;\n\n        if( !toggle ) {\n            _.autoPlay();\n        }\n        _.interrupted = toggle;\n\n    };\n\n    Slick.prototype.selectHandler = function(event) {\n\n        var _ = this;\n\n        var targetElement =\n            $(event.target).is('.slick-slide') ?\n                $(event.target) :\n                $(event.target).parents('.slick-slide');\n\n        var index = parseInt(targetElement.attr('data-slick-index'));\n\n        if (!index) index = 0;\n\n        if (_.slideCount <= _.options.slidesToShow) {\n\n            _.slideHandler(index, false, true);\n            return;\n\n        }\n\n        _.slideHandler(index);\n\n    };\n\n    Slick.prototype.slideHandler = function(index, sync, dontAnimate) {\n\n        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,\n            _ = this, navTarget;\n\n        sync = sync || false;\n\n        if (_.animating === true && _.options.waitForAnimate === true) {\n            return;\n        }\n\n        if (_.options.fade === true && _.currentSlide === index) {\n            return;\n        }\n\n        if (sync === false) {\n            _.asNavFor(index);\n        }\n\n        targetSlide = index;\n        targetLeft = _.getLeft(targetSlide);\n        slideLeft = _.getLeft(_.currentSlide);\n\n        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;\n\n        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {\n            if (_.options.fade === false) {\n                targetSlide = _.currentSlide;\n                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n                    _.animateSlide(slideLeft, function() {\
1n                        _.postSlide(targetSlide);\n                    });\n                } else {\n                    _.postSlide(targetSlide);\n                }\n            }\n            return;\n        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {\n            if (_.options.fade === false) {\n                targetSlide = _.currentSlide;\n                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n                    _.animateSlide(slideLeft, function() {\n                        _.postSlide(targetSlide);\n                    });\n                } else {\n                    _.postSlide(targetSlide);\n                }\n            }\n            return;\n        }\n\n        if ( _.options.autoplay ) {\n            clearInterval(_.autoPlayTimer);\n        }\n\n        if (targetSlide < 0) {\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);\n            } else {\n                animSlide = _.slideCount + targetSlide;\n            }\n        } else if (targetSlide >= _.slideCount) {\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                animSlide = 0;\n            } else {\n                animSlide = targetSlide - _.slideCount;\n            }\n        } else {\n            animSlide = targetSlide;\n        }\n\n        _.animating = true;\n\n        _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);\n\n        oldSlide = _.currentSlide;\n        _.currentSlide = animSlide;\n\n        _.setSlideClasses(_.currentSlide);\n\n        if ( _.options.asNavFor ) {\n\n            navTarget = _.getNavTarget();\n            navTarget = navTarget.slick('getSlick');\n\n            if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {\n                navTarget.setSlideClasses(_.currentSlide);\n            }\n\n        }\n\n        _.updateDots();\n        _.updateArrows();\n\n        if (_.options.fade === true) {\n            if (dontAnimate !== true) {\n\n                _.fadeSlideOut(oldSlide);\n\n                _.fadeSlide(animSlide, function() {\n                    _.postSlide(animSlide);\n                });\n\n            } else {\n                _.postSlide(animSlide);\n            }\n            _.animateHeight();\n            return;\n        }\n\n        if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n            _.animateSlide(targetLeft, function() {\n                _.postSlide(animSlide);\n            });\n        } else {\n            _.postSlide(animSlide);\n        }\n\n    };\n\n    Slick.prototype.startLoad = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$prevArrow.hide();\n            _.$nextArrow.hide();\n\n        }\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$dots.hide();\n\n        }\n\n        _.$slider.addClass('slick-loading');\n\n    };\n\n    Slick.prototype.swipeDirection = function() {\n\n        var xDist, yDist, r, swipeAngle, _ = this;\n\n        xDist = _.touchObject.startX - _.touchObject.curX;\n        yDist = _.touchObject.startY - _.touchObject.curY;\n        r = Math.atan2(yDist, xDist);\n\n        swipeAngle = Math.round(r * 180 / Math.PI);\n        if (swipeAngle < 0) {\n            swipeAngle = 360 - Math.abs(swipeAngle);\n        }\n\n        if ((swipeAngle <= 45) && (swipeAngle >= 0)) {\n            return (_.options.rtl === false ? 'left' : 'right');\n        }\n        if ((swipeAngle <= 360) && (swipeAngle >= 315)) {\n            return (_.options.rtl === false ? 'left' : 'right');\n        }\n        if ((swipeAngle >= 135) && (swipeAngle <= 225)) {\n            return (_.options.rtl === false ? 'right' : 'left');\n        }\n        if (_.options.verticalSwiping === true) {\n            if ((swipeAngle >= 35) && (swipeAngle <= 135)) {\n                return 'down';\n            } else {\n                return 'up';\n            }\n        }\n\n        return 'vertical';\n\n    };\n\n    Slick.prototype.swipeEnd = function(event) {\n\n        var _ = this,\n            slideCount,\n            direction;\n\n        _.dragging = false;\n        _.swiping = false;\n\n        if (_.scrolling) {\n            _.scrolling = false;\n            return false;\n        }\n\n        _.interrupted = false;\n        _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;\n\n        if ( _.touchObject.curX === undefined ) {\n            return false;\n        }\n\n        if ( _.touchObject.edgeHit === true ) {\n            _.$slider.trigger('edge', [_, _.swipeDirection() ]);\n        }\n\n        if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {\n\n            direction = _.swipeDirection();\n\n            switch ( direction ) {\n\n                case 'left':\n                case 'down':\n\n                    slideCount =\n                        _.o
1ptions.swipeToSlide ?\n                            _.checkNavigable( _.currentSlide + _.getSlideCount() ) :\n                            _.currentSlide + _.getSlideCount();\n\n                    _.currentDirection = 0;\n\n                    break;\n\n                case 'right':\n                case 'up':\n\n                    slideCount =\n                        _.options.swipeToSlide ?\n                            _.checkNavigable( _.currentSlide - _.getSlideCount() ) :\n                            _.currentSlide - _.getSlideCount();\n\n                    _.currentDirection = 1;\n\n                    break;\n\n                default:\n\n\n            }\n\n            if( direction != 'vertical' ) {\n\n                _.slideHandler( slideCount );\n                _.touchObject = {};\n                _.$slider.trigger('swipe', [_, direction ]);\n\n            }\n\n        } else {\n\n            if ( _.touchObject.startX !== _.touchObject.curX ) {\n\n                _.slideHandler( _.currentSlide );\n                _.touchObject = {};\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.swipeHandler = function(event) {\n\n        var _ = this;\n\n        if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {\n            return;\n        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {\n            return;\n        }\n\n        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?\n            event.originalEvent.touches.length : 1;\n\n        _.touchObject.minSwipe = _.listWidth / _.options\n            .touchThreshold;\n\n        if (_.options.verticalSwiping === true) {\n            _.touchObject.minSwipe = _.listHeight / _.options\n                .touchThreshold;\n        }\n\n        switch (event.data.action) {\n\n            case 'start':\n                _.swipeStart(event);\n                break;\n\n            case 'move':\n                _.swipeMove(event);\n                break;\n\n            case 'end':\n                _.swipeEnd(event);\n                break;\n\n        }\n\n    };\n\n    Slick.prototype.swipeMove = function(event) {\n\n        var _ = this,\n            edgeWasHit = false,\n            curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength;\n\n        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;\n\n        if (!_.dragging || _.scrolling || touches && touches.length !== 1) {\n            return false;\n        }\n\n        curLeft = _.getLeft(_.currentSlide);\n\n        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;\n        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;\n\n        _.touchObject.swipeLength = Math.round(Math.sqrt(\n            Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));\n\n        verticalSwipeLength = Math.round(Math.sqrt(\n            Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));\n\n        if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) {\n            _.scrolling = true;\n            return false;\n        }\n\n        if (_.options.verticalSwiping === true) {\n            _.touchObject.swipeLength = verticalSwipeLength;\n        }\n\n        swipeDirection = _.swipeDirection();\n\n        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {\n            _.swiping = true;\n            event.preventDefault();\n        }\n\n        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);\n        if (_.options.verticalSwiping === true) {\n            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;\n        }\n\n\n        swipeLength = _.touchObject.swipeLength;\n\n        _.touchObject.edgeHit = false;\n\n        if (_.options.infinite === false) {\n            if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {\n                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;\n                _.touchObject.edgeHit = true;\n            }\n        }\n\n        if (_.options.vertical === false) {\n            _.swipeLeft = curLeft + swipeLength * positionOffset;\n        } else {\n            _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;\n        }\n        if (_.options.verticalSwiping === true) {\n            _.swipeLeft = curLeft + swipeLength * positionOffset;\n        }\n\n        if (_.options.fade === true || _.options.touchMove === false) {\n            return false;\n        }\n\n        if (_.animating === true) {\n            _.swipeLeft = null;\n            return false;\n        }\n\n        _.setCSS(_.swipeLeft);\n\n    };\n\n    Slick.prototype.swipeStart = function(event) {\n\n        var _ = this,\n            touches;\n\n        _.interrupted = true;\n\n        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {\n            _.touchObject = {};\n            return false;\n        }\n\n        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {\n            touches = event.originalEvent.touches[0];\n        }\n\n        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;\n        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;\n\n        _.dragging = true;\n\n    };\n\n    Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {\
1n\n        var _ = this;\n\n        if (_.$slidesCache !== null) {\n\n            _.unload();\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slidesCache.appendTo(_.$slideTrack);\n\n            _.reinit();\n\n        }\n\n    };\n\n    Slick.prototype.unload = function() {\n\n        var _ = this;\n\n        $('.slick-cloned', _.$slider).remove();\n\n        if (_.$dots) {\n            _.$dots.remove();\n        }\n\n        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {\n            _.$prevArrow.remove();\n        }\n\n        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {\n            _.$nextArrow.remove();\n        }\n\n        _.$slides\n            .removeClass('slick-slide slick-active slick-visible slick-current')\n            .attr('aria-hidden', 'true')\n            .css('width', '');\n\n    };\n\n    Slick.prototype.unslick = function(fromBreakpoint) {\n\n        var _ = this;\n        _.$slider.trigger('unslick', [_, fromBreakpoint]);\n        _.destroy();\n\n    };\n\n    Slick.prototype.updateArrows = function() {\n\n        var _ = this,\n            centerOffset;\n\n        centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n        if ( _.options.arrows === true &&\n            _.slideCount > _.options.slidesToShow &&\n            !_.options.infinite ) {\n\n            _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n            _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            if (_.currentSlide === 0) {\n\n                _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {\n\n                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {\n\n                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.updateDots = function() {\n\n        var _ = this;\n\n        if (_.$dots !== null) {\n\n            _.$dots\n                .find('li')\n                    .removeClass('slick-active')\n                    .end();\n\n            _.$dots\n                .find('li')\n                .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))\n                .addClass('slick-active');\n\n        }\n\n    };\n\n    Slick.prototype.visibility = function() {\n\n        var _ = this;\n\n        if ( _.options.autoplay ) {\n\n            if ( document[_.hidden] ) {\n\n                _.interrupted = true;\n\n            } else {\n\n                _.interrupted = false;\n\n            }\n\n        }\n\n    };\n\n    $.fn.slick = function() {\n        var _ = this,\n            opt = arguments[0],\n            args = Array.prototype.slice.call(arguments, 1),\n            l = _.length,\n            i,\n            ret;\n        for (i = 0; i < l; i++) {\n            if (typeof opt == 'object' || typeof opt == 'undefined')\n                _[i].slick = new Slick(_[i], opt);\n            else\n                ret = _[i].slick[opt].apply(_[i].slick, args);\n            if (typeof ret != 'undefined') return ret;\n        }\n        return _;\n    };\n\n}));\n\n\n//# sourceURL=webpack://Transgrid-webpack/./node_modules/slick-carousel/slick/slick.js?")},682:()=>{eval("/*!\nWaypoints - 4.0.1\nCopyright © 2011-2016 Caleb Troughton\nLicensed under the MIT license.\nhttps://github.com/imakewebthings/waypoints/blob/master/licenses.txt\n*/\n(function() {\n  'use strict'\n\n  var keyCounter = 0\n  var allWaypoints = {}\n\n  /* http://imakewebthings.com/waypoints/api/waypoint */\n  function Waypoint(options) {\n    if (!options) {\n      throw new Error('No options passed to Waypoint constructor')\n    }\n    if (!options.element) {\n      throw new Error('No element option passed to Waypoint constructor')\n    }\n    if (!options.handler) {\n      throw new Error('No handler option passed to Waypoint constructor')\n    }\n\n    this.key = 'waypoint-' + keyCounter\n    this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options)\n    this.element = this.options.element\n    this.adapter = new Waypoint.Adapter(this.element)\n    this.callback = options.handler\n    this.axis = this.options.horizontal ? 'horizontal' : 'vertical'\n    this.enabled = this.options.enabled\n    this.triggerPoint = null\n    this.group = Waypoint.Group.findOrCreate({\n      name: this.options.group,\n      axis: this.axis\n    })\n    this.context = Waypoint.Context.findOrCreateByElement(this.options.context)\n\n    if (Waypoint.offsetAliases[this.options.offset]) {\n      this.options.offset = Waypoint.offsetAliases[this.options.offset]\n    }\n    this.group.add(this)\n    this.context.add(this)\n    allWaypoints[this.key] = this\n    keyCounter += 1\n  }\n\n  /* Private */\n  Waypoint.prototype.queueTrigger = function(direction) {\n    this.group.queueTrigger(this, direction)\n  }\n\n  /* Private */\n  Waypoint.prototype.trigger = function(args) {\n    if (!this.enabled) {\n      return\n    }\n    if (this.callback) {\n      this.callback.apply(this, args)\n    }\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/destroy */\n  Waypoint.prototype.destroy = function() {\
1n    this.context.remove(this)\n    this.group.remove(this)\n    delete allWaypoints[this.key]\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/disable */\n  Waypoint.prototype.disable = function() {\n    this.enabled = false\n    return this\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/enable */\n  Waypoint.prototype.enable = function() {\n    this.context.refresh()\n    this.enabled = true\n    return this\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/next */\n  Waypoint.prototype.next = function() {\n    return this.group.next(this)\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/previous */\n  Waypoint.prototype.previous = function() {\n    return this.group.previous(this)\n  }\n\n  /* Private */\n  Waypoint.invokeAll = function(method) {\n    var allWaypointsArray = []\n    for (var waypointKey in allWaypoints) {\n      allWaypointsArray.push(allWaypoints[waypointKey])\n    }\n    for (var i = 0, end = allWaypointsArray.length; i < end; i++) {\n      allWaypointsArray[i][method]()\n    }\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/destroy-all */\n  Waypoint.destroyAll = function() {\n    Waypoint.invokeAll('destroy')\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/disable-all */\n  Waypoint.disableAll = function() {\n    Waypoint.invokeAll('disable')\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/enable-all */\n  Waypoint.enableAll = function() {\n    Waypoint.Context.refreshAll()\n    for (var wayp
1ointKey in allWaypoints) {\n      allWaypoints[waypointKey].enabled = true\n    }\n    return this\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/refresh-all */\n  Waypoint.refreshAll = function() {\n    Waypoint.Context.refreshAll()\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/viewport-height */\n  Waypoint.viewportHeight = function() {\n    return window.innerHeight || document.documentElement.clientHeight\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/viewport-width */\n  Waypoint.viewportWidth = function() {\n    return document.documentElement.clientWidth\n  }\n\n  Waypoint.adapters = []\n\n  Waypoint.defaults = {\n    context: window,\n    continuous: true,\n    enabled: true,\n    group: 'default',\n    horizontal: false,\n    offset: 0\n  }\n\n  Waypoint.offsetAliases = {\n    'bottom-in-view': function() {\n      return this.context.innerHeight() - this.adapter.outerHeight()\n    },\n    'right-in-view': function() {\n      return this.context.innerWidth() - this.adapter.outerWidth()\n    }\n  }\n\n  window.Waypoint = Waypoint\n}())\n;(function() {\n  'use strict'\n\n  function requestAnimationFrameShim(callback) {\n    window.setTimeout(callback, 1000 / 60)\n  }\n\n  var keyCounter = 0\n  var contexts = {}\n  var Waypoint = window.Waypoint\n  var oldWindowLoad = window.onload\n\n  /* http://imakewebthings.com/waypoints/api/context */\n  function Context(element) {\n    this.element = element\n    this.Adapter = Waypoint.Adapter\n    this.adapter = new this.Adapter(element)\n    this.key = 'waypoint-context-' + keyCounter\n    this.didScroll = false\n    this.didResize = false\n    this.oldScroll = {\n      x: this.adapter.scrollLeft(),\n      y: this.adapter.scrollTop()\n    }\n    this.waypoints = {\n      vertical: {},\n      horizontal: {}\n    }\n\n    element.waypointContextKey = this.key\n    contexts[element.waypointContextKey] = this\n    keyCounter += 1\n    if (!Waypoint.windowContext) {\n      Waypoint.windowContext = true\n      Waypoint.windowContext = new Context(window)\n    }\n\n    this.createThrottledScrollHandler()\n    this.createThrottledResizeHandler()\n  }\n\n  /* Private */\n  Context.prototype.add = function(waypoint) {\n    var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical'\n    this.waypoints[axis][waypoint.key] = waypoint\n    this.refresh()\n  }\n\n  /* Private */\n  Context.prototype.checkEmpty = function() {\n    var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal)\n    var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical)\n    var isWindow = this.element == this.element.window\n    if (horizontalEmpty && verticalEmpty && !isWindow) {\n      this.adapter.off('.waypoints')\n      delete contexts[this.key]\n    }\n  }\n\n  /* Private */\n  Context.prototype.createThrottledResizeHandler = function() {\n    var self = this\n\n    function resizeHandler() {\n      self.handleResize()\n      self.didResize = false\n    }\n\n    this.adapter.on('resize.waypoints', function() {\n      if (!self.didResize) {\n        self.didResize = true\n        Waypoint.requestAnimationFrame(resizeHandler)\n      }\n    })\n  }\n\n  /* Private */\n  Context.prototype.createThrottledScrollHandler = function() {\n    var self = this\n    function scrollHandler() {\n      self.handleScroll()\n      self.didScroll = false\n    }\n\n    this.adapter.on('scroll.waypoints', function() {\n      if (!self.didScroll || Waypoint.isTouch) {\n        self.didScroll = true\n        Waypoint.requestAnimationFrame(scrollHandler)\n      }\n    })\n  }\n\n  /* Private */\n  Context.prototype.handleResize = function() {\n    Waypoint.Context.refreshAll()\n  }\n\n  /* Private */\n  Context.prototype.handleScroll = function() {\n    var triggeredGroups = {}\n    var axes = {\n      horizontal: {\n        newScroll: this.adapter.scrollLeft(),\n        oldScroll: this.oldScroll.x,\n        forward: 'right',\n        backward: 'left'\n      },\n      vertical: {\n        newScroll: this.adapter.scrollTop(),\n        oldScroll: this.oldScroll.y,\n        forward: 'down',\n        backward: 'up'\n      }\n    }\n\n    for (var axisKey in axes) {\n      var axis = axes[axisKey]\n      var isForward = axis.newScroll > axis.oldScroll\n      var direction = isForward ? axis.forward : axis.backward\n\n      for (var wayp
1ointKey in this.waypoints[axisKey]) {\n        var waypoint = this.waypoints[axisKey][waypointKey]\n        if (waypoint.triggerPoint === null) {\n          continue\n        }\n        var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint\n        var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint\n        var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint\n        var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint\n        if (crossedForward || crossedBackward) {\n          waypoint.queueTrigger(direction)\n          triggeredGroups[waypoint.group.id] = waypoint.group\n        }\n      }\n    }\n\n    for (var groupKey in triggeredGroups) {\n      triggeredGroups[groupKey].flushTriggers()\n    }\n\n    this.oldScroll = {\n      x: axes.horizontal.newScroll,\n      y: axes.vertical.newScroll\n    }\n  }\n\n  /* Private */\n  Context.prototype.innerHeight = function() {\n    /*eslint-disable eqeqeq */\n    if (this.element == this.element.window) {\n      return Waypoint.viewportHeight()\n    }\n    /*eslint-enable eqeqeq */\n    return this.adapter.innerHeight()\n  }\n\n  /* Private */\n  Context.prototype.remove = function(waypoint) {\n    delete this.waypoints[waypoint.axis][waypoint.key]\n    this.checkEmpty()\n  }\n\n  /* Private */\n  Context.prototype.innerWidth = function() {\n    /*eslint-disable eqeqeq */\n    if (this.element == this.element.window) {\n      return Waypoint.viewportWidth()\n    }\n    /*eslint-enable eqeqeq */\n    return this.adapter.innerWidth()\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/context-destroy */\n  Context.prototype.destroy = function() {\n    var allWaypoints = []\n    for (var axis in this.waypoints) {\n      for (var wayp
1ointKey in this.waypoints[axis]) {\n        allWaypoints.push(this.waypoints[axis][waypointKey])\n      }\n    }\n    for (var i = 0, end = allWaypoints.length; i < end; i++) {\n      allWaypoints[i].destroy()\n    }\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/context-refresh */\n  Context.prototype.refresh = function() {\n    /*eslint-disable eqeqeq */\n    var isWindow = this.element == this.element.window\n    /*eslint-enable eqeqeq */\n    var contextOffset = isWindow ? undefined : this.adapter.offset()\n    var triggeredGroups = {}\n    var axes\n\n    this.handleScroll()\n    axes = {\n      horizontal: {\n        contextOffset: isWindow ? 0 : contextOffset.left,\n        contextScroll: isWindow ? 0 : this.oldScroll.x,\n        contextDimension: this.innerWidth(),\n        oldScroll: this.oldScroll.x,\n        forward: 'right',\n        backward: 'left',\n        offsetProp: 'left'\n      },\n      vertical: {\n        contextOffset: isWindow ? 0 : contextOffset.top,\n        contextScroll: isWindow ? 0 : this.oldScroll.y,\n        contextDimension: this.innerHeight(),\n        oldScroll: this.oldScroll.y,\n        forward: 'down',\n        backward: 'up',\n        offsetProp: 'top'\n      }\n    }\n\n    for (var axisKey in axes) {\n      var axis = axes[axisKey]\n      for (var wayp
1ointKey in this.waypoints[axisKey]) {\n        var waypoint = this.waypoints[axisKey][waypointKey]\n        var adjustment = waypoint.options.offset\n        var oldTriggerPoint = waypoint.triggerPoint\n        var elementOffset = 0\n        var freshWaypoint = oldTriggerPoint == null\n        var contextModifier, wasBeforeScroll, nowAfterScroll\n        var triggeredBackward, triggeredForward\n\n        if (waypoint.element !== waypoint.element.window) {\n          elementOffset = waypoint.adapter.offset()[axis.offsetProp]\n        }\n\n        if (typeof adjustment === 'function') {\n          adjustment = adjustment.apply(waypoint)\n        }\n        else if (typeof adjustment === 'string') {\n          adjustment = parseFloat(adjustment)\n          if (waypoint.options.offset.indexOf('%') > - 1) {\n            adjustment = Math.ceil(axis.contextDimension * adjustment / 100)\n          }\n        }\n\n        contextModifier = axis.contextScroll - axis.contextOffset\n        waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment)\n        wasBeforeScroll = oldTriggerPoint < axis.oldScroll\n        nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll\n        triggeredBackward = wasBeforeScroll && nowAfterScroll\n        triggeredForward = !wasBeforeScroll && !nowAfterScroll\n\n        if (!freshWaypoint && triggeredBackward) {\n          waypoint.queueTrigger(axis.backward)\n          triggeredGroups[waypoint.group.id] = waypoint.group\n        }\n        else if (!freshWaypoint && triggeredForward) {\n          waypoint.queueTrigger(axis.forward)\n          triggeredGroups[waypoint.group.id] = waypoint.group\n        }\n        else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) {\n          waypoint.queueTrigger(axis.forward)\n          triggeredGroups[waypoint.group.id] = waypoint.group\n        }\n      }\n    }\n\n    Waypoint.requestAnimationFrame(function() {\n      for (var groupKey in triggeredGroups) {\n        triggeredGroups[groupKey].flushTriggers()\n      }\n    })\n\n    return this\n  }\n\n  /* Private */\n  Context.findOrCreateByElement = function(element) {\n    return Context.findByElement(element) || new Context(element)\n  }\n\n  /* Private */\n  Context.refreshAll = function() {\n    for (var contextId in contexts) {\n      contexts[contextId].refresh()\n    }\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/context-find-by-element */\n  Context.findByElement = function(element) {\n    return contexts[element.waypointContextKey]\n  }\n\n  window.onload = function() {\n    if (oldWindowLoad) {\n      oldWindowLoad()\n    }\n    Context.refreshAll()\n  }\n\n\n  Waypoint.requestAnimationFrame = function(callback) {\n    var requestFn = window.requestAnimationFrame ||\n      window.mozRequestAnimationFrame ||\n      window.webkitRequestAnimationFrame ||\n      requestAnimationFrameShim\n    requestFn.call(window, callback)\n  }\n  Waypoint.Context = Context\n}())\n;(function() {\n  'use strict'\n\n  function byTriggerPoint(a, b) {\n    return a.triggerPoint - b.triggerPoint\n  }\n\n  function byReverseTriggerPoint(a, b) {\n    return b.triggerPoint - a.triggerPoint\n  }\n\n  var groups = {\n    vertical: {},\n    horizontal: {}\n  }\n  var Waypoint = window.Waypoint\n\n  /* http://imakewebthings.com/waypoints/api/group */\n  function Group(options) {\n    this.name = options.name\n    this.axis = options.axis\n    this.id = this.name + '-' + this.axis\n    this.waypoints = []\n    this.clearTriggerQueues()\n    groups[this.axis][this.name] = this\n  }\n\n  /* Private */\n  Group.prototype.add = function(waypoint) {\n    this.waypoints.push(waypoint)\n  }\n\n  /* Private */\n  Group.prototype.clearTriggerQueues = function() {\n    this.triggerQueues = {\n      up: [],\n      down: [],\n      left: [],\n      right: []\n    }\n  }\n\n  /* Private */\n  Group.prototype.flushTriggers = function() {\n    for (var direction in this.triggerQueues) {\n      var waypoints = this.triggerQueues[direction]\n      var reverse = direction === 'up' || direction === 'left'\n      waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint)\n      for (var i = 0, end = waypoints.length; i < end; i += 1) {\n        var waypoint = waypoints[i]\n        if (waypoint.options.continuous || i === waypoints.length - 1) {\n          waypoint.trigger([direction])\n        }\n      }\n    }\n    this.clearTriggerQueues()\n  }\n\n  /* Private */\n  Group.prototype.next = function(waypoint) {\n    this.waypoints.sort(byTriggerPoint)\n    var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n    var isLast = index === this.waypoints.length - 1\n    return isLast ? null : this.waypoints[index + 1]\n  }\n\n  /* Private */\n  Group.prototype.previous = function(waypoint) {\n    this.waypoints.sort(byTriggerPoint)\n    var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n    return index ? this.waypoints[index - 1] : null\n  }\n\n  /* Private */\n  Group.prototype.queueTrigger = function(waypoint, direction) {\n    this.triggerQueues[direction].push(waypoint)\n  }\n\n  /* Private */\n  Group.prototype.remove = function(waypoint) {\n    var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n    if (index > -1) {\n      this.waypoints.splice(index, 1)\n    }\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/first */\n  Group.prototype.first = function() {\
1n    return this.waypoints[0]\n  }\n\n  /* Public */\n  /* http://imakewebthings.com/waypoints/api/last */\n  Group.prototype.last = function() {\n    return this.waypoints[this.waypoints.length - 1]\n  }\n\n  /* Private */\n  Group.findOrCreate = function(options) {\n    return groups[options.axis][options.name] || new Group(options)\n  }\n\n  Waypoint.Group = Group\n}())\n;(function() {\n  'use strict'\n\n  var Waypoint = window.Waypoint\n\n  function isWindow(element) {\n    return element === element.window\n  }\n\n  function getWindow(element) {\n    if (isWindow(element)) {\n      return element\n    }\n    return element.defaultView\n  }\n\n  function NoFrameworkAdapter(element) {\n    this.element = element\n    this.handlers = {}\n  }\n\n  NoFrameworkAdapter.prototype.innerHeight = function() {\n    var isWin = isWindow(this.element)\n    return isWin ? this.element.innerHeight : this.element.clientHeight\n  }\n\n  NoFrameworkAdapter.prototype.innerWidth = function() {\n    var isWin = isWindow(this.element)\n    return isWin ? this.element.innerWidth : this.element.clientWidth\n  }\n\n  NoFrameworkAdapter.prototype.off = function(event, handler) {\n    function removeListeners(element, listeners, handler) {\n      for (var i = 0, end = listeners.length - 1; i < end; i++) {\n        var listener = listeners[i]\n        if (!handler || handler === listener) {\n          element.removeEventListener(listener)\n        }\n      }\n    }\n\n    var eventParts = event.split('.')\n    var eventType = eventParts[0]\n    var namespace = eventParts[1]\n    var element = this.element\n\n    if (namespace && this.handlers[namespace] && eventType) {\n      removeListeners(element, this.handlers[namespace][eventType], handler)\n      this.handlers[namespace][eventType] = []\n    }\n    else if (eventType) {\n      for (var ns in this.handlers) {\n        removeListeners(element, this.handlers[ns][eventType] || [], handler)\n        this.handlers[ns][eventType] = []\n      }\n    }\n    else if (namespace && this.handlers[namespace]) {\n      for (var type in this.handlers[namespace]) {\n        removeListeners(element, this.handlers[namespace][type], handler)\n      }\n      this.handlers[namespace] = {}\n    }\n  }\n\n  /* Adapted from jQuery 1.x offset() */\n  NoFrameworkAdapter.prototype.offset = function() {\n    if (!this.element.ownerDocument) {\n      return null\n    }\n\n    var documentElement = this.element.ownerDocument.documentElement\n    var win = getWindow(this.element.ownerDocument)\n    var rect = {\n      top: 0,\n      left: 0\n    }\n\n    if (this.element.getBoundingClientRect) {\n      rect = this.element.getBoundingClientRect()\n    }\n\n    return {\n      top: rect.top + win.pageYOffset - documentElement.clientTop,\n      left: rect.left + win.pageXOffset - documentElement.clientLeft\n    }\n  }\n\n  NoFrameworkAdapter.prototype.on = function(event, handler) {\n    var eventParts = event.split('.')\n    var eventType = eventParts[0]\n    var namespace = eventParts[1] || '__default'\n    var nsHandlers = this.handlers[namespace] = this.handlers[namespace] || {}\n    var nsTypeList = nsHandlers[eventType] = nsHandlers[eventType] || []\n\n    nsTypeList.push(handler)\n    this.element.addEventListener(eventType, handler)\n  }\n\n  NoFrameworkAdapter.prototype.outerHeight = function(includeMargin) {\n    var height = this.innerHeight()\n    var computedStyle\n\n    if (includeMargin && !isWindow(this.element)) {\n      computedStyle = window.getComputedStyle(this.element)\n      height += parseInt(computedStyle.marginTop, 10)\n      height += parseInt(computedStyle.marginBottom, 10)\n    }\n\n    return height\n  }\n\n  NoFrameworkAdapter.prototype.outerWidth = function(includeMargin) {\n    var width = this.innerWidth()\n    var computedStyle\n\n    if (includeMargin && !isWindow(this.element)) {\n      computedStyle = window.getComputedStyle(this.element)\n      width += parseInt(computedStyle.marginLeft, 10)\n      width += parseInt(computedStyle.marginRight, 10)\n    }\n\n    return width\n  }
1\n\n  NoFrameworkAdapter.prototype.scrollLeft = function() {\n    var win = getWindow(this.element)\n    return win ? win.pageXOffset : this.element.scrollLeft\n  }\n\n  NoFrameworkAdapter.prototype.scrollTop = function() {\n    var win = getWindow(this.element)\n    return win ? win.pageYOffset : this.element.scrollTop\n  }\n\n  NoFrameworkAdapter.extend = function() {\n    var args = Array.prototype.slice.call(arguments)\n\n    function merge(target, obj) {\n      if (typeof target === 'object' && typeof obj === 'object') {\n        for (var key in obj) {\n          if (obj.hasOwnProperty(key)) {\n            target[key] = obj[key]\n          }\n        }\n      }\n\n      return target\n    }\n\n    for (var i = 1, end = args.length; i < end; i++) {\n      merge(args[0], args[i])\n    }\n    return args[0]\n  }\n\n  NoFrameworkAdapter.inArray = function(element, array, i) {\n    return array == null ? -1 : array.indexOf(element, i)\n  }\n\n  NoFrameworkAdapter.isEmptyObject = function(obj) {\n    /* eslint no-unused-vars: 0 */\n    for (var name in obj) {\n      return false\n    }\n    return true\n  }\n\n  Waypoint.adapters.push({\n    name: 'noframework',\n    Adapter: NoFrameworkAdapter\n  })\n  Waypoint.Adapter = NoFrameworkAdapter\n}())\n;\n\n//# sourceURL=webpack://Transgrid-webpack/./node_modules/waypoints/lib/noframework.waypoints.js?")},609:n=>{"use strict";n.exports=jQuery}},__webpack_module_cache__={};function __webpack_require__(n){var t=__webpack_module_cache__[n];if(void 0!==t)return t.exports;var e=__webpack_module_cache__[n]={exports:{}};return __webpack_modules__[n].call(e.exports,e,e.exports,__webpack_require__),e.exports}__webpack_require__.n=n=>{var t=n&&n.__esModule?()=>n.default:()=>n;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(n,t)=>{for(var e in t)__webpack_require__.o(t,e)&&!__webpack_require__.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},__webpack_require__.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t);var __webpack_exports__=__webpack_require__(809)})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.