PageSourceSearch

https://ntk-mir.ru/bitrix/cache/js/s1/ntk_new/template_3f581e86bb0…0b7ff3f5c18f67058360_v1.js?1789636053637403

js ntk-mir.ru collected 2026-10-07 17:39:35 UTC 637,403 bytes, 11,883 lines download raw bytes

1
2; /* Start:"a:4:{s:4:"full";s:63:"/local/templates/ntk_new/js/jquery-3.7.1.min.js?174016440087533";s:6:"source";s:47:"/local/templates/ntk_new/js/jquery-3.7.1.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
vendor: 22,881 bytes, lines 3-4
3/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */
4!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){m(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n="",r=0,i=e.nodeType;if(!i)while(t=e[r++])n+=ce.text(t);return 1===i||11===i?e.textContent:9===i?e.documentElement.textContent:3===i||4===i?e.nodeValue:n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var pe=oe.pop,de=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=new RegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function p(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+"").replace(f,p)};var ye=C,me=s;!function(){var e,b,w,o,a,T,r,C,d,i,k=me,S=ce.expando,E=0,n=0,s=W(),c=W(),u=W(),h=W(),l=function(e,t){return e===t&&(a=!0),0},f="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",t="(?:\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",p="\\["+ge+"*("+t+")(?:"+ge+"*([*^$|!~]?=)"+ge+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+t+"))|)"+ge+"*\\]",g=":("+t+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+p+")*)|.*)\\)|)",v=new RegExp(ge+"+","g"),y=new RegExp("^"+ge+"*,"+ge+"*"),m=new RegExp("^"+ge+"*([>+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="<a id='"+S+"' href='' disabled='disabled'></a><select id='"+S+"-\r\\' disabled='disabled'><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0<I(t,T,null,[e]).length},I.contains=function(e,t){return(e.ownerDocument||e)!=T&&V(e),ce.contains(e,t)},I.attr=function(e,t){(e.ownerDocument||e)!=T&&V(e);var n=b.attrHandle[t.toLowerCase()],r=n&&ue.call(b.attrHandle,t.toLowerCase())?n(e,t,!C):void 0;return void 0!==r?r:e.getAttribute(t)},I.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ce.uniqueSort=function(e){var t,n=[],r=0,i=0;if(a=!le.sortStable,o=!le.sortStable&&ae.call(e,0),de.call(e,l),a){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)he.call(e,n[r],1)}return o=null,e},ce.fn.uniqueSort=function(){return this.pushStack(ce.uniqueSort(ae.apply(this)))},(b=ce.expr={cacheLength:50,createPseudo:F,match:D,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(v," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(d,e,t,h,g){var v="nth"!==d.slice(0,3),y="last"!==d.slice(-4),m="of-type"===e;return 1===h&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u=v!==y?"nextSibling":"previousSibling",l=e.parentNode,c=m&&e.nodeName.toLowerCase(),f=!n&&!m,p=!1;if(l){if(v){while(u){o=e;while(o=o[u])if(m?fe(o,c):1===o.nodeType)return!1;s=u="only"===d&&!s&&"nextSibling"}return!0}if(s=[y?l.firstChild:l.lastChild],y&&f){p=(a=(r=(i=l[S]||(l[S]={}))[d]||[])[0]===E&&r[1])&&r[2],o=a&&l.childNodes[a];while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if(1===o.nodeType&&++p&&o===e){i[d]=[E,a,p];break}}else if(f&&(p=a=(r=(i=e[S]||(e[S]={}))[d]||[])[0]===E&&r[1]),!1===p)while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if((m?fe(o,c):1===o.nodeType)&&++p&&(f&&((i=o[S]||(o[S]={}))[d]=[E,p]),o===e))break;return(p-=g)===h||p%h==0&&0<=p/h}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||I.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?F(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=se.call(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:F(function(e){var r=[],i=[],s=ne(e.replace(ve,"$1"));return s[S]?F(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:F(function(t){return function(e){return 0<I(t,e).length}}),contains:F(function(t){return t=t.replace(O,P),function(e){return-1<(e.textContent||ce.text(e)).indexOf(t)}}),lang:F(function(n){return A.test(n||"")||I.error("unsupported lang: "+n),n=n.replace(O,P).toLowerCase(),function(e){var t;do{if(t=C?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=ie.location&&ie.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===r},focus:function(e){return e===function(){try{return T.activeElement}catch(e){}}()&&T.hasFocus()&&!!(e.type||e.href||~e.tabIndex)},enabled:z(!1),disabled:z(!0),checked:function(e){return fe(e,"input")&&!!e.checked||fe(e,"option")&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return q.test(e.nodeName)},input:function(e){return N.test(e.nodeName)},button:function(e){return fe(e,"input")&&"button"===e.type||fe(e,"button")},text:function(e){var t;return fe(e,"input")&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:X(function(){return[0]}),last:X(function(e,t){return[t-1]}),eq:X(function(e,t,n){return[n<0?n+t:n]}),even:X(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:X(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:X(function(e,t,n){var r;for(r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:X(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=B(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=_(e);function G(){}function Y(e,t){var n,r,i,o,a,s,u,l=c[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=y.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=m.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(ve," ")}),a=a.slice(n.length)),b.filter)!(r=D[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?I.error(e):c(e,s).slice(0)}function Q(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function J(a,e,t){var s=e.dir,u=e.next,l=u||s,c=t&&"parentNode"===l,f=n++;return e.first?function(e,t,n){while(e=e[s])if(1===e.nodeType||c)return a(e,t,n);return!1}:function(e,t,n){var r,i,o=[E,f];if(n){while(e=e[s])if((1===e.nodeType||c)&&a(e,t,n))return!0}else while(e=e[s])if(1===e.nodeType||c)if(i=e[S]||(e[S]={}),u&&fe(e,u))e=e[s]||e;else{if((r=i[l])&&r[0]===E&&r[1]===f)return o[2]=r[2];if((i[l]=o)[2]=a(e,t,n))return!0}return!1}}function K(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Z(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function ee(d,h,g,v,y,e){return v&&!v[S]&&(v=ee(v)),y&&!y[S]&&(y=ee(y,e)),F(function(e,t,n,r){var i,o,a,s,u=[],l=[],c=t.length,f=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)I(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),p=!d||!e&&h?f:Z(f,u,d,n,r);if(g?g(p,s=y||(e?d:c||v)?[]:t,n,r):s=p,v){i=Z(s,l),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(s[l[o]]=!(p[l[o]]=a))}if(e){if(y||d){if(y){i=[],o=s.length;while(o--)(a=s[o])&&i.push(p[o]=a);y(null,s=[],i,r)}o=s.length;while(o--)(a=s[o])&&-1<(i=y?se.call(e,a):u[o])&&(e[i]=!(t[i]=a))}}else s=Z(s===t?s.splice(c,s.length):s),y?y(null,t,s,r):k.apply(t,s)})}function te(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=J(function(e){return e===i},a,!0),l=J(function(e){return-1<se.call(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!=w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[J(K(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return ee(1<s&&K(c),1<s&&Q(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(ve,"$1"),t,s<n&&te(e.slice(s,n)),n<r&&te(e=e.slice(n)),n<r&&Q(e))}c.push(t)}return K(c)}function ne(e,t){var n,v,y,m,x,r,i=[],o=[],a=u[e+" "];if(!a){t||(t=Y(e)),n=t.length;while(n--)(a=te(t[n]))[S]?i.push(a):o.push(a);(a=u(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=E+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==T||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==T||(V(o),n=!C);while(s=v[a++])if(s(o,t||T,n)){k.call(r,o);break}i&&(E=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=pe.call(r));f=Z(f)}k.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&ce.uniqueSort(r)}return i&&(E=h,w=p),c},m?F(r):r))).selector=e}return a}function re(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&Y(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&C&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(O,P),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=D.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(O,P),H.test(o[0].type)&&U(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&Q(o)))return k.apply(n,r),n;break}}}return(l||ne(e,c))(r,t,!C,n,!t||H.test(e)&&U(t.parentNode)||t),n}G.prototype=b.filters=b.pseudos,b.setFilters=new G,le.sortStable=S.split("").sort(l).join("")===S,V(),le.sortDetached=$(function(e){return 1&e.compareDocumentPosition(T.createElement("fieldset"))}),ce.find=I,ce.expr[":"]=ce.expr.pseudos,ce.unique=ce.uniqueSort,I.compile=ne,I.select=re,I.setDocument=V,I.tokenize=Y,I.escape=ce.escapeSelector,I.getText=ce.text,I.isXML=ce.isXMLDoc,I.selectors=ce.expr,I.support=ce.support,I.uniqueSort=ce.uniqueSort}();var d=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&ce(e).is(n))break;r.push(e)}return r},h=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},b=ce.expr.match.needsContext,w=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1<se.call(n,e)!==r}):ce.filter(n,e,r)}ce.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ce.find.matchesSelector(r,e)?[r]:[]:ce.find.matches(e,ce.grep(t,function(e){return 1===e.nodeType}))},ce.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(ce(e).filter(function(){for(t=0;t<r;t++)if(ce.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)ce.find(e,i[t],n);return 1<r?ce.uniqueSort(n):n},filter:function(e){return this.pushStack(T(this,e||[],!1))},not:function(e){return this.pushStack(T(this,e||[],!0))},is:function(e){return!!T(this,"string"==typeof e&&b.test(e)?ce(e):e||[],!1).length}});var k,S=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}
vendor: 1,967 bytes, line 4
4return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(ce.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&ce(e);if(!b.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&ce.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?ce.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?se.call(ce(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ce.uniqueSort(ce.merge(this.get(),ce(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ce.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return d(e,"parentNode")},parentsUntil:function(e,t,n){return d(e,"parentNode",n)},next:function(e){return A(e,"nextSibling")},prev:function(e){return A(e,"previousSibling")},nextAll:function(e){return d(e,"nextSibling")},prevAll:function(e){return d(e,"previousSibling")},nextUntil:function(e,t,n){return d(e,"nextSibling",n)},prevUntil:function(e,t,n){return d(e,"previousSibling",n)},siblings:function(e){return h((e.parentNode||{}).firstChild,e)},children:function(e){return h(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(fe(e,"template")&&(e=e.content||e),ce.merge([],e.childNodes))}},function(r,i){ce.fn[r]=function(e,t){var n=ce.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=ce.filter(t,n)),1<this.length&&(j[r]||
vendor: 9,546 bytes, line 4
4ce.uniqueSort(n),E.test(r)&&n.reverse()),this.pushStack(n)}});var D=/[^\x20\t\r\n\f]+/g;function N(e){return e}function q(e){throw e}function L(e,t,n,r){var i;try{e&&v(i=e.promise)?i.call(e).done(t).fail(n):e&&v(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}ce.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},ce.each(e.match(D)||[],function(e,t){n[t]=!0}),n):ce.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){ce.each(e,function(e,t){v(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==x(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return ce.each(arguments,function(e,t){var n;while(-1<(n=ce.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<ce.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},ce.extend({Deferred:function(e){var o=[["notify","progress",ce.Callbacks("memory"),ce.Callbacks("memory"),2],["resolve","done",ce.Callbacks("once memory"),ce.Callbacks("once memory"),0,"resolved"],["reject","fail",ce.Callbacks("once memory"),ce.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return ce.Deferred(function(r){ce.each(o,function(e,t){var n=v(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&v(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,v(t)?s?t.call(e,l(u,o,N,s),l(u,o,q,s)):(u++,t.call(e,l(u,o,N,s),l(u,o,q,s),l(u,o,N,o.notifyWith))):(a!==N&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){ce.Deferred.exceptionHook&&ce.Deferred.exceptionHook(e,t.error),u<=i+1&&(a!==q&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(ce.Deferred.getErrorHook?t.error=ce.Deferred.getErrorHook():ce.Deferred.getStackHook&&(t.error=ce.Deferred.getStackHook()),ie.setTimeout(t))}}return ce.Deferred(function(e){o[0][3].add(l(0,e,v(r)?r:N,e.notifyWith)),o[1][3].add(l(0,e,v(t)?t:N)),o[2][3].add(l(0,e,v(n)?n:q))}).promise()},promise:function(e){return null!=e?ce.extend(e,a):a}},s={};return ce.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=ae.call(arguments),o=ce.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?ae.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(L(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||v(i[t]&&i[t].then)))return o.then();while(t--)L(i[t],a(t),o.reject);return o.promise()}});var H=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;ce.Deferred.exceptionHook=function(e,t){ie.console&&ie.console.warn&&e&&H.test(e.name)&&ie.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},ce.readyException=function(e){ie.setTimeout(function(){throw e})};var O=ce.Deferred();function P(){C.removeEventListener("DOMContentLoaded",P),ie.removeEventListener("load",P),ce.ready()}ce.fn.ready=function(e){return O.then(e)["catch"](function(e){ce.readyException(e)}),this},ce.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--ce.readyWait:ce.isReady)||(ce.isReady=!0)!==e&&0<--ce.readyWait||O.resolveWith(C,[ce])}}),ce.ready.then=O.then,"complete"===C.readyState||"loading"!==C.readyState&&!C.documentElement.doScroll?ie.setTimeout(ce.ready):(C.addEventListener("DOMContentLoaded",P),ie.addEventListener("load",P));var M=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n))for(s in i=!0,n)M(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,v(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(ce(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},R=/^-ms-/,I=/-([a-z])/g;function W(e,t){return t.toUpperCase()}function F(e){return e.replace(R,"ms-").replace(I,W)}var $=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function B(){this.expando=ce.expando+B.uid++}B.uid=1,B.prototype={cache:function(e){var t=e[this.expando];return t||(t={},$(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[F(t)]=n;else for(r in t)i[F(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][F(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(F):(t=F(t))in r?[t]:t.match(D)||[]).length;while(n--)delete r[t[n]]}(void 0===t||ce.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!ce.isEmptyObject(t)}};var _=new B,z=new B,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,U=/[A-Z]/g;function V(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(U,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:X.test(i)?JSON.parse(i):i)}catch(e){}z.set(e,t,n)}else n=void 0;return n}ce.extend({hasData:function(e){return z.hasData(e)||_.hasData(e)},data:function(e,t,n){return z.access(e,t,n)},removeData:function(e,t){z.remove(e,t)},_data:function(e,t,n){return _.access(e,t,n)},_removeData:function(e,t){_.remove(e,t)}}),ce.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=z.get(o),1===o.nodeType&&!_.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=F(r.slice(5)),V(o,r,i[r]));_.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){z.set(this,n)}):M(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=z.get(o,n))?t:void 0!==(t=V(o,n))?t:void 0;this.each(function(){z.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){z.remove(this,e)})}}),ce.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=_.get(e,t),n&&(!r||Array.isArray(n)?r=_.access(e,t,ce.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=ce.queue(e,t),r=n.length,i=n.shift(),o=ce._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){ce.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return _.get(e,n)||_.access(e,n,{empty:ce.Callbacks("once memory").add(function(){_.remove(e,[t+"queue",n])})})}}),ce.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?ce.queue(this[0],t):void 0===n?this:this.each(function(){var e=ce.queue(this,t,n);ce._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&ce.dequeue(this,t)})},dequeue:function(e){return this.each(function(){ce.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ce.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=_.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var G=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Y=new RegExp("^(?:([+-])=|)("+G+")([a-z%]*)$","i"),Q=["Top","Right","Bottom","Left"],J=C.documentElement,K=function(e){return ce.contains(e.ownerDocument,e)},Z={composed:!0};J.getRootNode&&(K=function(e){return ce.contains(e.ownerDocument,e)||e.getRootNode(Z)===e.ownerDocument});var ee=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&K(e)&&"none"===ce.css(e,"display")};function te(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return ce.css(e,t,"")},u=s(),l=n&&n[3]||(ce.cssNumber[t]?"":"px"),c=e.nodeType&&(ce.cssNumber[t]||"px"!==l&&+u)&&Y.exec(ce.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)ce.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,ce.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ne={};function re(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=_.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ee(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ne[s])||
vendor: 8,814 bytes, line 4
4(o=a.body.appendChild(a.createElement(s)),u=ce.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ne[s]=u)))):"none"!==n&&(l[c]="none",_.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}ce.fn.extend({show:function(){return re(this,!0)},hide:function(){return re(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?ce(this).show():ce(this).hide()})}});var xe,be,we=/^(?:checkbox|radio)$/i,Te=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="<textarea>x</textarea>",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="<option></option>",le.option=!!xe.lastChild;var ke={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n<r;n++)_.set(e[n],"globalEval",!t||_.get(t[n],"globalEval"))}ke.tbody=ke.tfoot=ke.colgroup=ke.caption=ke.thead,ke.th=ke.td,le.option||(ke.optgroup=ke.option=[1,"<select multiple='multiple'>","</select>"]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))ce.merge(p,o.nodeType?[o]:o);else if(je.test(o)){a=a||f.appendChild(t.createElement("div")),s=(Te.exec(o)||["",""])[1].toLowerCase(),u=ke[s]||ke._default,a.innerHTML=u[1]+ce.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;ce.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<ce.inArray(o,r))i&&i.push(o);else if(l=K(o),a=Se(f.appendChild(o),"script"),l&&Ee(a),n){c=0;while(o=a[c++])Ce.test(o.type||"")&&n.push(o)}return f}var De=/^([^.]*)(?:\.(.+)|)/;function Ne(){return!0}function qe(){return!1}function Le(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Le(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=qe;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return ce().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=ce.guid++)),e.each(function(){ce.event.add(this,t,i,r,n)})}function He(e,r,t){t?(_.set(e,r,!1),ce.event.add(e,r,{namespace:!1,handler:function(e){var t,n=_.get(this,r);if(1&e.isTrigger&&this[r]){if(n)(ce.event.special[r]||{}).delegateType&&e.stopPropagation();else if(n=ae.call(arguments),_.set(this,r,n),this[r](),t=_.get(this,r),_.set(this,r,!1),n!==t)return e.stopImmediatePropagation(),e.preventDefault(),t}else n&&(_.set(this,r,ce.event.trigger(n[0],n.slice(1),this)),e.stopPropagation(),e.isImmediatePropagationStopped=Ne)}})):void 0===_.get(e,r)&&ce.event.add(e,r,Ne)}ce.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.get(t);if($(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&ce.find.matchesSelector(J,i),n.guid||(n.guid=ce.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof ce&&ce.event.triggered!==e.type?ce.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(D)||[""]).length;while(l--)d=g=(s=De.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=ce.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=ce.event.special[d]||{},c=ce.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ce.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),ce.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.hasData(e)&&_.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(D)||[""]).length;while(l--)if(d=g=(s=De.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=ce.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||ce.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)ce.event.remove(e,d+t[l],n,r,!0);ce.isEmptyObject(u)&&_.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=ce.event.fix(e),l=(_.get(this,"events")||Object.create(null))[u.type]||[],c=ce.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=ce.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((ce.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<ce(i,this).index(l):ce.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(ce.Event.prototype,t,{enumerable:!0,configurable:!0,get:v(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[ce.expando]?e:new ce.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click",!0),!1},trigger:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click"),!0},_default:function(e){var t=e.target;return we.test(t.type)&&t.click&&fe(t,"input")&&_.get(t,"click")||fe(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},ce.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},ce.Event=function(e,t){if(!(this instanceof ce.Event))return new ce.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ne:qe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&ce.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[ce.expando]=!0},ce.Event.prototype={constructor:ce.Event,isDefaultPrevented:qe,isPropagationStopped:qe,isImmediatePropagationStopped:qe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ne,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ne,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ne,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},ce.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},ce.event.addProp),ce.each({focus:"focusin",blur:"focusout"},function(r,i){function o(e){if(C.documentMode){var t=_.get(this,"handle"),n=ce.event.fix(e);
vendor: 14,182 bytes, line 4
4n.type="focusin"===e.type?"focus":"blur",n.isSimulated=!0,t(e),n.target===n.currentTarget&&t(n)}else ce.event.simulate(i,e.target,ce.event.fix(e))}ce.event.special[r]={setup:function(){var e;if(He(this,r,!0),!C.documentMode)return!1;(e=_.get(this,i))||this.addEventListener(i,o),_.set(this,i,(e||0)+1)},trigger:function(){return He(this,r),!0},teardown:function(){var e;if(!C.documentMode)return!1;(e=_.get(this,i)-1)?_.set(this,i,e):(this.removeEventListener(i,o),_.remove(this,i))},_default:function(e){return _.get(e.target,r)},delegateType:i},ce.event.special[i]={setup:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i);n||(C.documentMode?this.addEventListener(i,o):e.addEventListener(r,o,!0)),_.set(t,i,(n||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i)-1;n?_.set(t,i,n):(C.documentMode?this.removeEventListener(i,o):e.removeEventListener(r,o,!0),_.remove(t,i))}}}),ce.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){ce.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||ce.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),ce.fn.extend({on:function(e,t,n,r){return Le(this,e,t,n,r)},one:function(e,t,n,r){return Le(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ce(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=qe),this.each(function(){ce.event.remove(this,e,n,t)})}});var Oe=/<script|<style|<link/i,Pe=/checked\s*(?:[^=]|=\s*.checked.)/i,Me=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)ce.event.add(t,i,s[i][n]);z.hasData(e)&&(o=z.access(e),a=ce.extend({},o),z.set(t,a))}}function $e(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=v(d);if(h||1<f&&"string"==typeof d&&!le.checkClone&&Pe.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),$e(t,r,i,o)});if(f&&(t=(e=Ae(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=ce.map(Se(e,"script"),Ie)).length;c<f;c++)u=e,c!==p&&(u=ce.clone(u,!0,!0),s&&ce.merge(a,Se(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,ce.map(a,We),c=0;c<s;c++)u=a[c],Ce.test(u.type||"")&&!_.access(u,"globalEval")&&ce.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?ce._evalUrl&&!u.noModule&&ce._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):m(u.textContent.replace(Me,""),u,l))}return n}function Be(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ce.cleanData(Se(r)),r.parentNode&&(n&&K(r)&&Ee(Se(r,"script")),r.parentNode.removeChild(r));return e}ce.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=K(e);if(!(le.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ce.isXMLDoc(e)))for(a=Se(c),r=0,i=(o=Se(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&we.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||Se(e),a=a||Se(c),r=0,i=o.length;r<i;r++)Fe(o[r],a[r]);else Fe(e,c);return 0<(a=Se(c,"script")).length&&Ee(a,!f&&Se(e,"script")),c},cleanData:function(e){for(var t,n,r,i=ce.event.special,o=0;void 0!==(n=e[o]);o++)if($(n)){if(t=n[_.expando]){if(t.events)for(r in t.events)i[r]?ce.event.remove(n,r):ce.removeEvent(n,r,t.handle);n[_.expando]=void 0}n[z.expando]&&(n[z.expando]=void 0)}}}),ce.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return M(this,function(e){return void 0===e?ce.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return $e(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Re(this,e).appendChild(e)})},prepend:function(){return $e(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Re(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ce.cleanData(Se(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return ce.clone(this,e,t)})},html:function(e){return M(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Oe.test(e)&&!ke[(Te.exec(e)||["",""])[1].toLowerCase()]){e=ce.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(ce.cleanData(Se(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return $e(this,arguments,function(e){var t=this.parentNode;ce.inArray(this,n)<0&&(ce.cleanData(Se(this)),t&&t.replaceChild(e,this))},n)}}),ce.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){ce.fn[e]=function(e){for(var t,n=[],r=ce(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),ce(r[o])[a](t),s.apply(n,t.get());return this.pushStack(n)}});var _e=new RegExp("^("+G+")(?!px)[a-z%]+$","i"),ze=/^--/,Xe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=ie),t.getComputedStyle(e)},Ue=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ve=new RegExp(Q.join("|"),"i");function Ge(e,t,n){var r,i,o,a,s=ze.test(t),u=e.style;return(n=n||Xe(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace(ve,"$1")||void 0),""!==a||K(e)||(a=ce.style(e,t)),!le.pixelBoxStyles()&&_e.test(a)&&Ve.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+"":a}function Ye(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",J.appendChild(u).appendChild(l);var e=ie.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),J.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=C.createElement("div"),l=C.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",le.clearCloneStyle="content-box"===l.style.backgroundClip,ce.extend(le,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=C.createElement("table"),t=C.createElement("tr"),n=C.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="box-sizing:content-box;border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",J.appendChild(e).appendChild(t).appendChild(n),r=ie.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,J.removeChild(e)),a}}))}();var Qe=["Webkit","Moz","ms"],Je=C.createElement("div").style,Ke={};function Ze(e){var t=ce.cssProps[e]||Ke[e];return t||(e in Je?e:Ke[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Qe.length;while(n--)if((e=Qe[n]+t)in Je)return e}(e)||e)}var et=/^(none|table(?!-c[ea]).+)/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function rt(e,t,n){var r=Y.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function it(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=ce.css(e,n+Q[a],!0,i)),r?("content"===n&&(u-=ce.css(e,"padding"+Q[a],!0,i)),"margin"!==n&&(u-=ce.css(e,"border"+Q[a]+"Width",!0,i))):(u+=ce.css(e,"padding"+Q[a],!0,i),"padding"!==n?u+=ce.css(e,"border"+Q[a]+"Width",!0,i):s+=ce.css(e,"border"+Q[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u+l}function ot(e,t,n){var r=Xe(e),i=(!le.boxSizingReliable()||n)&&"border-box"===ce.css(e,"boxSizing",!1,r),o=i,a=Ge(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(_e.test(a)){if(!n)return a;a="auto"}return(!le.boxSizingReliable()&&i||!le.reliableTrDimensions()&&fe(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===ce.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===ce.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+it(e,t,n||(i?"border":"content"),o,r,a)+"px"}function at(e,t,n,r,i){return new at.prototype.init(e,t,n,r,i)}ce.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ge(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=F(t),u=ze.test(t),l=e.style;if(u||(t=Ze(s)),a=ce.cssHooks[t]||ce.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=Y.exec(n))&&i[1]&&(n=te(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(ce.cssNumber[s]?"":"px")),le.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=F(t);return ze.test(t)||(t=Ze(s)),(a=ce.cssHooks[t]||ce.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ge(e,t,r)),"normal"===i&&t in nt&&(i=nt[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),ce.each(["height","width"],function(e,u){ce.cssHooks[u]={get:function(e,t,n){if(t)return!et.test(ce.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?ot(e,u,n):Ue(e,tt,function(){return ot(e,u,n)})},set:function(e,t,n){var r,i=Xe(e),o=!le.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===ce.css(e,"boxSizing",!1,i),s=n?it(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-it(e,u,"border",!1,i)-.5)),s&&(r=Y.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=ce.css(e,u)),rt(0,t,s)}}}),ce.cssHooks.marginLeft=Ye(le.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ge(e,"marginLeft"))||e.getBoundingClientRect().left-Ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),ce.each({margin:"",padding:"",border:"Width"},function(i,o){ce.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+Q[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(ce.cssHooks[i+o].set=rt)}),ce.fn.extend({css:function(e,t){return M(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Xe(e),i=t.length;a<i;a++)o[t[a]]=ce.css(e,t[a],!1,r);return o}return void 0!==n?ce.style(e,t,n):ce.css(e,t)},e,t,1<arguments.length)}}),((ce.Tween=at).prototype={constructor:at,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||ce.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ce.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=ce.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}}).init.prototype=at.prototype,(at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=ce.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){ce.fx.step[e.prop]?ce.fx.step[e.prop](e):1!==e.elem.nodeType||!ce.cssHooks[e.prop]&&null==e.elem.style[Ze(e.prop)]?e.elem[e.prop]=e.now:ce.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ce.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ce.fx=at.prototype.init,ce.fx.step={};var st,ut,lt,ct,ft=/^(?:toggle|show|hide)$/,pt=/queueHooks$/;function dt(){ut&&(!1===C.hidden&&ie.requestAnimationFrame?ie.requestAnimationFrame(dt):ie.setTimeout(dt,ce.fx.interval),ce.fx.tick())}function ht(){return ie.setTimeout(function(){st=void 0}),st=Date.now()}function gt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=Q[r])]=i["padding"+n]=e;
vendor: 4,590 bytes, line 4
4return t&&(i.opacity=i.width=e),i}function vt(e,t,n){for(var r,i=(yt.tweeners[t]||[]).concat(yt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function yt(o,e,t){var n,a,r=0,i=yt.prefilters.length,s=ce.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=st||ht(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:ce.extend({},e),opts:ce.extend(!0,{specialEasing:{},easing:ce.easing._default},t),originalProperties:e,originalOptions:t,startTime:st||ht(),duration:t.duration,tweens:[],createTween:function(e,t){var n=ce.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=F(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=ce.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=yt.prefilters[r].call(l,o,c,l.opts))return v(n.stop)&&(ce._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return ce.map(c,vt,l),v(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),ce.fx.timer(ce.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}ce.Animation=ce.extend(yt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return te(n.elem,e,Y.exec(t),n),n}]},tweener:function(e,t){v(e)?(t=e,e=["*"]):e=e.match(D);for(var n,r=0,i=e.length;r<i;r++)n=e[r],yt.tweeners[n]=yt.tweeners[n]||[],yt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ee(e),v=_.get(e,"fxshow");for(r in n.queue||(null==(a=ce._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,ce.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ft.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||ce.style(e,r)}if((u=!ce.isEmptyObject(t))||!ce.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=_.get(e,"display")),"none"===(c=ce.css(e,"display"))&&(l?c=l:(re([e],!0),l=e.style.display||l,c=ce.css(e,"display"),re([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===ce.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=_.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&re([e],!0),p.done(function(){for(r in g||re([e]),_.remove(e,"fxshow"),d)ce.style(e,r,d[r])})),u=vt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?yt.prefilters.unshift(e):yt.prefilters.push(e)}}),ce.speed=function(e,t,n){var r=e&&"object"==typeof e?ce.extend({},e):{complete:n||!n&&t||v(e)&&e,duration:e,easing:n&&t||t&&!v(t)&&t};return ce.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in ce.fx.speeds?r.duration=ce.fx.speeds[r.duration]:r.duration=ce.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){v(r.old)&&r.old.call(this),r.queue&&ce.dequeue(this,r.queue)},r},ce.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ee).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=ce.isEmptyObject(t),o=ce.speed(e,n,r),a=function(){var e=yt(this,ce.extend({},t),o);(i||_.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=ce.timers,r=_.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&pt.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1)
vendor: 13,972 bytes, line 4
4);!e&&o||ce.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=_.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=ce.timers,o=n?n.length:0;for(t.finish=!0,ce.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),ce.each(["toggle","show","hide"],function(e,r){var i=ce.fn[r];ce.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(gt(r,!0),e,t,n)}}),ce.each({slideDown:gt("show"),slideUp:gt("hide"),slideToggle:gt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){ce.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),ce.timers=[],ce.fx.tick=function(){var e,t=0,n=ce.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||ce.fx.stop(),st=void 0},ce.fx.timer=function(e){ce.timers.push(e),ce.fx.start()},ce.fx.interval=13,ce.fx.start=function(){ut||(ut=!0,dt())},ce.fx.stop=function(){ut=null},ce.fx.speeds={slow:600,fast:200,_default:400},ce.fn.delay=function(r,e){return r=ce.fx&&ce.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=ie.setTimeout(e,r);t.stop=function(){ie.clearTimeout(n)}})},lt=C.createElement("input"),ct=C.createElement("select").appendChild(C.createElement("option")),lt.type="checkbox",le.checkOn=""!==lt.value,le.optSelected=ct.selected,(lt=C.createElement("input")).value="t",lt.type="radio",le.radioValue="t"===lt.value;var mt,xt=ce.expr.attrHandle;ce.fn.extend({attr:function(e,t){return M(this,ce.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){ce.removeAttr(this,e)})}}),ce.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ce.prop(e,t,n):(1===o&&ce.isXMLDoc(e)||(i=ce.attrHooks[t.toLowerCase()]||(ce.expr.match.bool.test(t)?mt:void 0)),void 0!==n?null===n?void ce.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=ce.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!le.radioValue&&"radio"===t&&fe(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(D);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),mt={set:function(e,t,n){return!1===t?ce.removeAttr(e,n):e.setAttribute(n,n),n}},ce.each(ce.expr.match.bool.source.match(/\w+/g),function(e,t){var a=xt[t]||ce.find.attr;xt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=xt[o],xt[o]=r,r=null!=a(e,t,n)?o:null,xt[o]=i),r}});var bt=/^(?:input|select|textarea|button)$/i,wt=/^(?:a|area)$/i;function Tt(e){return(e.match(D)||[]).join(" ")}function Ct(e){return e.getAttribute&&e.getAttribute("class")||""}function kt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(D)||[]}ce.fn.extend({prop:function(e,t){return M(this,ce.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[ce.propFix[e]||e]})}}),ce.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ce.isXMLDoc(e)||(t=ce.propFix[t]||t,i=ce.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=ce.find.attr(e,"tabindex");return t?parseInt(t,10):bt.test(e.nodeName)||wt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),le.optSelected||(ce.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ce.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ce.propFix[this.toLowerCase()]=this}),ce.fn.extend({addClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).addClass(t.call(this,e,Ct(this)))}):(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++)i=e[o],n.indexOf(" "+i+" ")<0&&(n+=i+" ");a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).removeClass(t.call(this,e,Ct(this)))}):arguments.length?(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(" "+i+" "))n=n.replace(" "+i+" "," ")}a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return v(t)?this.each(function(e){ce(this).toggleClass(t.call(this,e,Ct(this),n),n)}):"boolean"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=kt(t),this.each(function(){if(s)for(o=ce(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&"boolean"!==a||((r=Ct(this))&&_.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":_.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+Tt(Ct(n))+" ").indexOf(t))return!0;return!1}});var St=/\r/g;ce.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=v(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,ce(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=ce.map(t,function(e){return null==e?"":e+""})),(r=ce.valHooks[this.type]||ce.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=ce.valHooks[t.type]||ce.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(St,""):null==e?"":e:void 0}}),ce.extend({valHooks:{option:{get:function(e){var t=ce.find.attr(e,"value");return null!=t?t:Tt(ce.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!fe(n.parentNode,"optgroup"))){if(t=ce(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=ce.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<ce.inArray(ce.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ce.each(["radio","checkbox"],function(){ce.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<ce.inArray(ce(e).val(),t)}},le.checkOn||(ce.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Et=ie.location,jt={guid:Date.now()},At=/\?/;ce.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new ie.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||ce.error("Invalid XML: "+(n?ce.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Dt=/^(?:focusinfocus|focusoutblur)$/,Nt=function(e){e.stopPropagation()};ce.extend(ce.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||C],d=ue.call(e,"type")?e.type:e,h=ue.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||C,3!==n.nodeType&&8!==n.nodeType&&!Dt.test(d+ce.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[ce.expando]?e:new ce.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:ce.makeArray(t,[e]),c=ce.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!y(n)){for(s=c.delegateType||d,Dt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||C)&&p.push(a.defaultView||a.parentWindow||ie)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(_.get(o,"events")||Object.create(null))[e.type]&&_.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&$(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!$(n)||u&&v(n[d])&&!y(n)&&((a=n[u])&&(n[u]=null),ce.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Nt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Nt),ce.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=ce.extend(new ce.Event,n,{type:e,isSimulated:!0});ce.event.trigger(r,null,t)}}),ce.fn.extend({trigger:function(e,t){return this.each(function(){ce.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return ce.event.trigger(e,t,n,!0)}});var qt=/\[\]$/,Lt=/\r?\n/g,Ht=/^(?:submit|button|image|reset|file)$/i,Ot=/^(?:input|select|textarea|keygen)/i;function Pt(n,e,r,i){var t;if(Array.isArray(e))ce.each(e,function(e,t){r||qt.test(n)?i(n,t):Pt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==x(e))i(n,e);else for(t in e)Pt(n+"["+t+"]",e[t],r,i)}ce.param=function(e,t){var n,r=[],i=function(e,t){var n=v(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!ce.isPlainObject(e))ce.each(e,function(){i(this.name,this.value)});else for(n in e)Pt(n,e[n],t,i);return r.join("&")},ce.fn.extend({serialize:function(){return ce.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ce.prop(this,"elements");return e?ce.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ce(this).is(":disabled")&&Ot.test(this.nodeName)&&!Ht.test(e)&&(this.checked||!we.test(e))}).map(function(e,t){var n=ce(this).val();return null==n?null:Array.isArray(n)?ce.map(n,function(e){return{name:t.name,value:e.replace(Lt,"\r\n")}}):{name:t.name,value:n.replace(Lt,"\r\n")}}).get()}});var Mt=/%20/g,Rt=/#.*$/,It=/([?&])_=[^&]*/,Wt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ft=/^(?:GET|HEAD)$/,$t=/^\/\//,Bt={},_t={},zt="*/".concat("*"),Xt=C.createElement("a");function Ut(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(D)||[];if(v(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Vt(t,i,o,a){var s={},u=t===_t;function l(e){var r;return s[e]=!0,ce.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Gt(e,t){var n,r,i=ce.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&ce.extend(!0,e,r),e}Xt.href=Et.href,ce.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":ce.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,ce.ajaxSettings),t):Gt(ce.ajaxSettings,e)},ajaxPrefilter:Ut(Bt),ajaxTransport:Ut(_t),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=ce.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?ce(y):ce.event,x=ce.Deferred(),b=ce.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Wt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace($t,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(D)||[""],null==v.crossDomain){r=C.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Xt.protocol+"//"+Xt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=ce.param(v.data,v.traditional)),Vt(Bt,v,t,T),h)return T;for(i in(g=ce.event&&v.global)&&0==ce.active++&&ce.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ft.test(v.type),f=v.url.replace(Rt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Mt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(At.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(It,"$1"),o=(At.test(f)?"&":"?")+"_="+jt.guid+++o),v.url=f+o),v.ifModified&&(ce.lastModified[f]&&T.setRequestHeader("If-Modified-Since",ce.lastModified[f]),ce.etag[f]&&T.setRequestHeader("If-None-Match",ce.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+zt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);
vendor: 9,033 bytes, line 4
4if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Vt(_t,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=ie.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&ie.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<ce.inArray("script",v.dataTypes)&&ce.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(ce.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(ce.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--ce.active||ce.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return ce.get(e,t,n,"json")},getScript:function(e,t){return ce.get(e,void 0,t,"script")}}),ce.each(["get","post"],function(e,i){ce[i]=function(e,t,n,r){return v(t)&&(r=r||n,n=t,t=void 0),ce.ajax(ce.extend({url:e,type:i,dataType:r,data:t,success:n},ce.isPlainObject(e)&&e))}}),ce.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),ce._evalUrl=function(e,t,n){return ce.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){ce.globalEval(e,t,n)}})},ce.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=ce(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return v(n)?this.each(function(e){ce(this).wrapInner(n.call(this,e))}):this.each(function(){var e=ce(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=v(t);return this.each(function(e){ce(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){ce(this).replaceWith(this.childNodes)}),this}}),ce.expr.pseudos.hidden=function(e){return!ce.expr.pseudos.visible(e)},ce.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},ce.ajaxSettings.xhr=function(){try{return new ie.XMLHttpRequest}catch(e){}};var Yt={0:200,1223:204},Qt=ce.ajaxSettings.xhr();le.cors=!!Qt&&"withCredentials"in Qt,le.ajax=Qt=!!Qt,ce.ajaxTransport(function(i){var o,a;if(le.cors||Qt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Yt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&ie.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),ce.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),ce.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return ce.globalEval(e),e}}}),ce.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),ce.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=ce("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=Tt(e.slice(s)),e=e.slice(0,s)),v(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&ce.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?ce("<div>").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return 
vendor: 3,073 bytes, lines 4-18
4M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var en=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;ce.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),v(e))return r=ae.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(ae.call(arguments)))}).guid=e.guid=e.guid||ce.guid++,i},ce.holdReady=function(e){e?ce.readyWait++:ce.ready(!0)},ce.isArray=Array.isArray,ce.parseJSON=JSON.parse,ce.nodeName=fe,ce.isFunction=v,ce.isWindow=y,ce.camelCase=F,ce.type=x,ce.now=Date.now,ce.isNumeric=function(e){var t=ce.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},ce.trim=function(e){return null==e?"":(e+"").replace(en,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return ce});var tn=ie.jQuery,nn=ie.$;return ce.noConflict=function(e){return ie.$===ce&&(ie.$=nn),e&&ie.jQuery===ce&&(ie.jQuery=tn),ce},"undefined"==typeof e&&(ie.jQuery=ie.$=ce),ce});
5
6/* End */
7;
8; /* Start:"a:4:{s:4:"full";s:67:"/local/templates/ntk_new/lib/jquery.fancybox.min.js?174016440068265";s:6:"source";s:51:"/local/templates/ntk_new/lib/jquery.fancybox.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
9// ==================================================
10// fancyBox v3.5.7
11//
12// Licensed GPLv3 for open source use
13// or fancyBox Commercial License for commercial use
14//
15// http://fancyapps.com/fancybox/
16// Copyright 2019 fancyApps
17//
18// ==================================================�
vendor: 31,973 bytes, lines 18-19
18
19!function(t,e,n,o){"use strict";function i(t,e){var o,i,a,s=[],r=0;t&&t.isDefaultPrevented()||(t.preventDefault(),e=e||{},t&&t.data&&(e=h(t.data.options,e)),o=e.$target||n(t.currentTarget).trigger("blur"),(a=n.fancybox.getInstance())&&a.$trigger&&a.$trigger.is(o)||(e.selector?s=n(e.selector):(i=o.attr("data-fancybox")||"",i?(s=t.data?t.data.items:[],s=s.length?s.filter('[data-fancybox="'+i+'"]'):n('[data-fancybox="'+i+'"]')):s=[o]),r=n(s).index(o),r<0&&(r=0),a=n.fancybox.open(s,e,r),a.$trigger=o))}if(t.console=t.console||{info:function(t){}},n){if(n.fn.fancybox)return void console.info("fancyBox already initialized");var a={closeExisting:!1,loop:!1,gutter:50,keyboard:!0,preventCaptionOverlap:!0,arrows:!0,infobar:!0,smallBtn:"auto",toolbar:"auto",buttons:["zoom","slideShow","thumbs","close"],idleTime:3,protect:!1,modal:!1,image:{preload:!1},ajax:{settings:{data:{fancybox:!0}}},iframe:{tpl:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" allowfullscreen="allowfullscreen" allow="autoplay; fullscreen" src=""></iframe>',preload:!0,css:{},attr:{scrolling:"auto"}},video:{tpl:'<video class="fancybox-video" controls controlsList="nodownload" poster="{{poster}}"><source src="{{src}}" type="{{format}}" />Sorry, your browser doesn\'t support embedded videos, <a href="{{src}}">download</a> and watch with your favorite video player!</video>',format:"",autoStart:!0},defaultType:"image",animationEffect:"zoom",animationDuration:366,zoomOpacity:"auto",transitionEffect:"fade",transitionDuration:366,slideClass:"",baseClass:"",baseTpl:'<div class="fancybox-container" role="dialog" tabindex="-1"><div class="fancybox-bg"></div><div class="fancybox-inner"><div class="fancybox-infobar"><span data-fancybox-index></span>&nbsp;/&nbsp;<span data-fancybox-count></span></div><div class="fancybox-toolbar">{{buttons}}</div><div class="fancybox-navigation">{{arrows}}</div><div class="fancybox-stage"></div><div class="fancybox-caption"><div class="fancybox-caption__body"></div></div></div></div>',spinnerTpl:'<div class="fancybox-loading"></div>',errorTpl:'<div class="fancybox-error"><p>{{ERROR}}</p></div>',btnTpl:{download:'<a download data-fancybox-download class="fancybox-button fancybox-button--download" title="{{DOWNLOAD}}" href="javascript:;"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.62 17.09V19H5.38v-1.91zm-2.97-6.96L17 11.45l-5 4.87-5-4.87 1.36-1.32 2.68 2.64V5h1.92v7.77z"/></svg></a>',zoom:'<button data-fancybox-zoom class="fancybox-button fancybox-button--zoom" title="{{ZOOM}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.7 17.3l-3-3a5.9 5.9 0 0 0-.6-7.6 5.9 5.9 0 0 0-8.4 0 5.9 5.9 0 0 0 0 8.4 5.9 5.9 0 0 0 7.7.7l3 3a1 1 0 0 0 1.3 0c.4-.5.4-1 0-1.5zM8.1 13.8a4 4 0 0 1 0-5.7 4 4 0 0 1 5.7 0 4 4 0 0 1 0 5.7 4 4 0 0 1-5.7 0z"/></svg></button>',close:'<button data-fancybox-close class="fancybox-button fancybox-button--close" title="{{CLOSE}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 10.6L6.6 5.2 5.2 6.6l5.4 5.4-5.4 5.4 1.4 1.4 5.4-5.4 5.4 5.4 1.4-1.4-5.4-5.4 5.4-5.4-1.4-1.4-5.4 5.4z"/></svg></button>',arrowLeft:'<button data-fancybox-prev class="fancybox-button fancybox-button--arrow_left" title="{{PREV}}"><div><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11.28 15.7l-1.34 1.37L5 12l4.94-5.07 1.34 1.38-2.68 2.72H19v1.94H8.6z"/></svg></div></button>',arrowRight:'<button data-fancybox-next class="fancybox-button fancybox-button--arrow_right" title="{{NEXT}}"><div><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.4 12.97l-2.68 2.72 1.34 1.38L19 12l-4.94-5.07-1.34 1.38 2.68 2.72H5v1.94z"/></svg></div></button>',smallBtn:'<button type="button" data-fancybox-close class="fancybox-button fancybox-close-small" title="{{CLOSE}}"><svg xmlns="http://www.w3.org/2000/svg" version="1" viewBox="0 0 24 24"><path d="M13 12l5-5-1-1-5 5-5-5-1 1 5 5-5 5 1 1 5-5 5 5 1-1z"/></svg></button>'},parentEl:"body",hideScrollbar:!0,autoFocus:!0,backFocus:!0,trapFocus:!0,fullScreen:{autoStart:!1},touch:{vertical:!0,momentum:!0},hash:null,media:{},slideShow:{autoStart:!1,speed:3e3},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"},wheel:"auto",onInit:n.noop,beforeLoad:n.noop,afterLoad:n.noop,beforeShow:n.noop,afterShow:n.noop,beforeClose:n.noop,afterClose:n.noop,onActivate:n.noop,onDeactivate:n.noop,clickContent:function(t,e){return"image"===t.type&&"zoom"},clickSlide:"close",clickOutside:"close",dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1,mobile:{preventCaptionOverlap:!1,idleTime:!1,clickContent:function(t,e){return"image"===t.type&&"toggleControls"},clickSlide:function(t,e){return"image"===t.type?"toggleControls":"close"},dblclickContent:function(t,e){return"image"===t.type&&"zoom"},dblclickSlide:function(t,e){return"image"===t.type&&"zoom"}},lang:"en",i18n:{en:{CLOSE:"Close",NEXT:"Next",PREV:"Previous",ERROR:"The requested content cannot be loaded. <br/> Please try again later.",PLAY_START:"Start slideshow",PLAY_STOP:"Pause slideshow",FULL_SCREEN:"Full screen",THUMBS:"Thumbnails",DOWNLOAD:"Download",SHARE:"Share",ZOOM:"Zoom"},de:{CLOSE:"Schlie&szlig;en",NEXT:"Weiter",PREV:"Zur&uuml;ck",ERROR:"Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es sp&auml;ter nochmal.",PLAY_START:"Diaschau starten",PLAY_STOP:"Diaschau beenden",FULL_SCREEN:"Vollbild",THUMBS:"Vorschaubilder",DOWNLOAD:"Herunterladen",SHARE:"Teilen",ZOOM:"Vergr&ouml;&szlig;ern"}}},s=n(t),r=n(e),c=0,l=function(t){return t&&t.hasOwnProperty&&t instanceof n},d=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),u=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),f=function(){var t,n=e.createElement("fakeelement"),o={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(t in o)if(void 0!==n.style[t])return o[t];return"transitionend"}(),p=function(t){return t&&t.length&&t[0].offsetHeight},h=function(t,e){var o=n.extend(!0,{},t,e);return n.each(e,function(t,e){n.isArray(e)&&(o[t]=e)}),o},g=function(t){var o,i;return!(!t||t.ownerDocument!==e)&&(n(".fancybox-container").css("pointer-events","none"),o={x:t.getBoundingClientRect().left+t.offsetWidth/2,y:t.getBoundingClientRect().top+t.offsetHeight/2},i=e.elementFromPoint(o.x,o.y)===t,n(".fancybox-container").css("pointer-events",""),i)},b=function(t,e,o){var i=this;i.opts=h({index:o},n.fancybox.defaults),n.isPlainObject(e)&&(i.opts=h(i.opts,e)),n.fancybox.isMobile&&(i.opts=h(i.opts,i.opts.mobile)),i.id=i.opts.id||++c,i.currIndex=parseInt(i.opts.index,10)||0,i.prevIndex=null,i.prevPos=null,i.currPos=0,i.firstRun=!0,i.group=[],i.slides={},i.addContent(t),i.group.length&&i.init()};n.extend(b.prototype,{init:function(){var o,i,a=this,s=a.group[a.currIndex],r=s.opts;r.closeExisting&&n.fancybox.close(!0),n("body").addClass("fancybox-active"),!n.fancybox.getInstance()&&!1!==r.hideScrollbar&&!n.fancybox.isMobile&&e.body.scrollHeight>t.innerHeight&&(n("head").append('<style id="fancybox-style-noscroll" type="text/css">.compensate-for-scrollbar{margin-right:'+(t.innerWidth-e.documentElement.clientWidth)+"px;}</style>"),n("body").addClass("compensate-for-scrollbar")),i="",n.each(r.buttons,function(t,e){i+=r.btnTpl[e]||""}),o=n(a.translate(a,r.baseTpl.replace("{{buttons}}",i).replace("{{arrows}}",r.btnTpl.arrowLeft+r.btnTpl.arrowRight))).attr("id","fancybox-container-"+a.id).addClass(r.baseClass).data("FancyBox",a).appendTo(r.parentEl),a.$refs={container:o},["bg","inner","infobar","toolbar","stage","caption","navigation"].forEach(function(t){a.$refs[t]=o.find(".fancybox-"+t)}),a.trigger("onInit"),a.activate(),a.jumpTo(a.currIndex)},translate:function(t,e){var n=t.opts.i18n[t.opts.lang]||t.opts.i18n.en;return e.replace(/\{\{(\w+)\}\}/g,function(t,e){return void 0===n[e]?t:n[e]})},addContent:function(t){var e,o=this,i=n.makeArray(t);n.each(i,function(t,e){var i,a,s,r,c,l={},d={};n.isPlainObject(e)?(l=e,d=e.opts||e):"object"===n.type(e)&&n(e).length?(i=n(e),d=i.data()||{},d=n.extend(!0,{},d,d.options),d.$orig=i,l.src=o.opts.src||d.src||i.attr("href"),l.type||l.src||(l.type="inline",l.src=e)):l={type:"html",src:e+""},l.opts=n.extend(!0,{},o.opts,d),n.isArray(d.buttons)&&(l.opts.buttons=d.buttons),n.fancybox.isMobile&&l.opts.mobile&&(l.opts=h(l.opts,l.opts.mobile)),a=l.type||l.opts.type,r=l.src||"",!a&&r&&((s=r.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i))?(a="video",l.opts.video.format||(l.opts.video.format="video/"+("ogv"===s[1]?"ogg":s[1]))):r.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)?a="image":r.match(/\.(pdf)((\?|#).*)?$/i)?(a="iframe",l=n.extend(!0,l,{contentType:"pdf",opts:{iframe:{preload:!1}}})):"#"===r.charAt(0)&&(a="inline")),a?l.type=a:o.trigger("objectNeedsType",l),l.contentType||(l.contentType=n.inArray(l.type,["html","inline","ajax"])>-1?"html":l.type),l.index=o.group.length,"auto"==l.opts.smallBtn&&(l.opts.smallBtn=n.inArray(l.type,["html","inline","ajax"])>-1),"auto"===l.opts.toolbar&&(l.opts.toolbar=!l.opts.smallBtn),l.$thumb=l.opts.$thumb||null,l.opts.$trigger&&l.index===o.opts.index&&(l.$thumb=l.opts.$trigger.find("img:first"),l.$thumb.length&&(l.opts.$orig=l.opts.$trigger)),l.$thumb&&l.$thumb.length||!l.opts.$orig||(l.$thumb=l.opts.$orig.find("img:first")),l.$thumb&&!l.$thumb.length&&(l.$thumb=null),l.thumb=l.opts.thumb||(l.$thumb?l.$thumb[0].src:null),"function"===n.type(l.opts.caption)&&(l.opts.caption=l.opts.caption.apply(e,[o,l])),"function"===n.type(o.opts.caption)&&(l.opts.caption=o.opts.caption.apply(e,[o,l])),l.opts.caption instanceof n||(l.opts.caption=void 0===l.opts.caption?"":l.opts.caption+""),"ajax"===l.type&&(c=r.split(/\s+/,2),c.length>1&&(l.src=c.shift(),l.opts.filter=c.shift())),l.opts.modal&&(l.opts=n.extend(!0,l.opts,{trapFocus:!0,infobar:0,toolbar:0,smallBtn:0,keyboard:0,slideShow:0,fullScreen:0,thumbs:0,touch:0,clickContent:!1,clickSlide:!1,clickOutside:!1,dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1})),o.group.push(l)}),Object.keys(o.slides).length&&(o.updateControls(),(e=o.Thumbs)&&e.isActive&&(e.create(),e.focus()))},addEvents:function(){var e=this;e.removeEvents(),e.$refs.container.on("click.fb-close","[data-fancybox-close]",function(t){t.stopPropagation(),t.preventDefault(),e.close(t)}).on("touchstart.fb-prev click.fb-prev","[data-fancybox-prev]",function(t){t.stopPropagation(),t.preventDefault(),e.previous()}).on("touchstart.fb-next click.fb-next","[data-fancybox-next]",function(t){t.stopPropagation(),t.preventDefault(),e.next()}).on("click.fb","[data-fancybox-zoom]",function(t){e[e.isScaledDown()?"scaleToActual":"scaleToFit"]()}),s.on("orientationchange.fb resize.fb",function(t){t&&t.originalEvent&&"resize"===t.originalEvent.type?(e.requestId&&u(e.requestId),e.requestId=d(function(){e.update(t)})):(e.current&&"iframe"===e.current.type&&e.$refs.stage.hide(),setTimeout(function(){e.$refs.stage.show(),e.update(t)},n.fancybox.isMobile?600:250))}),r.on("keydown.fb",function(t){var o=n.fancybox?n.fancybox.getInstance():null,i=o.current,a=t.keyCode||t.which;if(9==a)return void(i.opts.trapFocus&&e.focus(t));if(!(!i.opts.keyboard||t.ctrlKey||t.altKey||t.shiftKey||n(t.target).is("input,textarea,video,audio,select")))return 8===a||27===a?(t.preventDefault(),void e.close(t)):37===a||38===a?(t.preventDefault(),void e.previous()):39===a||40===a?(t.preventDefault(),void e.next()):void e.trigger("afterKeydown",t,a)}),e.group[e.currIndex].opts.idleTime&&(e.idleSecondsCounter=0,r.on("mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle",function(t){e.idleSecondsCounter=0,e.isIdle&&e.showControls(),e.isIdle=!1}),e.idleInterval=t.setInterval(function(){++e.idleSecondsCounter>=e.group[e.currIndex].opts.idleTime&&!e.isDragging&&(e.isIdle=!0,e.idleSecondsCounter=0,e.hideControls())},1e3))},removeEvents:function(){var e=this;s.off("orientationchange.fb resize.fb"),r.off("keydown.fb .fb-idle"),this.$refs.container.off(".fb-close .fb-prev .fb-next"),e.idleInterval&&(t.clearInterval(e.idleInterval),e.idleInterval=null)},previous:function(t){return this.jumpTo(this.currPos-1,t)},next:function(t){return this.jumpTo(this.currPos+1,t)},jumpTo:function(t,e){var o,i,a,s,r,c,l,d,u,f=this,h=f.group.length;if(!(f.isDragging||f.isClosing||f.isAnimating&&f.firstRun)){if(t=parseInt(t,10),!(a=f.current?f.current.opts.loop:f.opts.loop)&&(t<0||t>=h))return!1;if(o=f.firstRun=!Object.keys(f.slides).length,r=f.current,f.prevIndex=f.currIndex,f.prevPos=f.currPos,s=f.createSlide(t),h>1&&((a||s.index<h-1)&&f.createSlide(t+1),(a||s.index>0)&&f.createSlide(t-1)),f.current=s,f.currIndex=s.index,f.currPos=s.pos,f.trigger("beforeShow",o),f.updateControls(),s.forcedDuration=void 0,n.isNumeric(e)?s.forcedDuration=e:e=s.opts[o?"animationDuration":"transitionDuration"],e=parseInt(e,10),i=f.isMoved(s),s.$slide.addClass("fancybox-slide--current"),o)return s.opts.animationEffect&&e&&f.$refs.container.css("transition-duration",e+"ms"),f.$refs.container.addClass("fancybox-is-open").trigger("focus"),f.loadSlide(s),void f.preload("image");c=n.fancybox.getTranslate(r.$slide),l=n.fancybox.getTranslate(f.$refs.stage),n.each(f.slides,function(t,e){n.fancybox.stop(e.$slide,!0)}),r.pos!==s.pos&&(r.isComplete=!1),r.$slide.removeClass("fancybox-slide--complete fancybox-slide--current"),i?(u=c.left-(r.pos*c.width+r.pos*r.opts.gutter),n.each(f.slides,function(t,o){o.$slide.removeClass("fancybox-animated").removeClass(function(t,e){return(e.match(/(^|\s)fancybox-fx-\S+/g)||[]).join(" ")});var i=o.pos*c.width+o.pos*o.opts.gutter;n.fancybox.setTranslate(o.$slide,{top:0,left:i-l.left+u}),o.pos!==s.pos&&o.$slide.addClass("fancybox-slide--"+(o.pos>s.pos?"next":"previous")),p(o.$slide),n.fancybox.animate(o.$slide,{top:0,left:(o.pos-s.pos)*c.width+(o.pos-s.pos)*o.opts.gutter},e,function(){o.$slide.css({transform:"",opacity:""}).removeClass("fancybox-slide--next fancybox-slide--previous"),o.pos===f.currPos&&f.complete()})})):e&&s.opts.transitionEffect&&(d="fancybox-animated fancybox-fx-"+s.opts.transitionEffect,r.$slide.addClass("fancybox-slide--"+(r.pos>s.pos?"next":"previous")),n.fancybox.animate(r.$slide,d,e,function(){r.$slide.removeClass(d).removeClass("fancybox-slide--next fancybox-slide--previous")},!1)),s.isLoaded?f.revealContent(s):f.loadSlide(s),f.preload("image")}},createSlide:function(t){var e,o,i=this;return o=t%i.group.length,o=o<0?i.group.length+o:o,!i.slides[t]&&i.group[o]&&(e=n('<div class="fancybox-slide"></div>').appendTo(i.$refs.stage),i.slides[t]=n.extend(!0,{},i.group[o],{pos:t,$slide:e,isLoaded:!1}),i.updateSlide(i.slides[t])),i.slides[t]},scaleToActual:function(t,e,o){var i,a,s,r,c,l=this,d=l.current,u=d.$content,f=n.fancybox.getTranslate(d.$slide).width,p=n.fancybox.getTranslate(d.$slide).height,h=d.width,g=d.height;l.isAnimating||l.isMoved()||!u||"image"!=d.type||!d.isLoaded||d.hasError||(l.isAnimating=!0,n.fancybox.stop(u),t=void 0===t?.5*f:t,e=void 0===e?.5*p:e,i=n.fancybox.getTranslate(u),i.top-=n.fancybox.getTranslate(d.$slide).top,i.left-=n.fancybox.getTranslate(d.$slide).left,r=h/i.width,c=g/i.height,a=.5*f-.5*h,s=.5*p-.5*g,h>f&&(a=i.left*r-(t*r-t),a>0&&(a=0),a<f-h&&(a=f-h)),g>p&&(s=i.top*c-(e*c-e),s>0&&(s=0),s<p-g&&(s=p-g)),l.updateCursor(h,g),n.fancybox.animate(u,{top:s,left:a,scaleX:r,scaleY:c},o||366,function(){l.isAnimating=!1}),l.SlideShow&&l.SlideShow.isActive&&l.SlideShow.stop())},scaleToFit:function(t){var e,o=this,i=o.current,a=i.$content;o.isAnimating||o.isMoved()||!a||"image"!=i.type||!i.isLoaded||i.hasError||(o.isAnimating=!0,n.fancybox.stop(a),e=o.getFitPos(i),o.updateCursor(e.width,e.height),n.fancybox.animate(a,{top:e.top,left:e.left,scaleX:e.width/a.width(),scaleY:e.height/a.height()},t||366,function(){o.isAnimating=!1}))},getFitPos:function(t){var e,o,i,a,s=this,r=t.$content,c=t.$slide,l=t.width||t.opts.width,d=t.height||t.opts.height,u={};return!!(t.isLoaded&&r&&r.length)&&(e=n.fancybox.getTranslate(s.$refs.stage).width,o=n.fancybox.getTranslate(s.$refs.stage).height,e-=parseFloat(c.css("paddingLeft"))+parseFloat(c.css("paddingRight"))+parseFloat(r.css("marginLeft"))+parseFloat(r.css("marginRight")),o-=parseFloat(c.css("paddingTop"))+parseFloat(c.css("paddingBottom"))+parseFloat(r.css("marginTop"))+parseFloat(r.css("marginBottom")),l&&d||(l=e,d=o),i=Math.min(1,e/l,o/d),l*=i,d*=i,l>e-.5&&(l=e),d>o-.5&&(d=o),"image"===t.type?(u.top=Math.floor(.5*(o-d))+parseFloat(c.css("paddingTop")),u.left=Math.floor(.5*(e-l))+parseFloat(c.css("paddingLeft"))):"video"===t.contentType&&(a=t.opts.width&&t.opts.height?l/d:t.opts.ratio||16/9,d>l/a?d=l/a:l>d*a&&(l=d*a)),u.width=l,u.height=d,u)},update:function(t){var e=this;n.each(e.slides,function(n,o){e.updateSlide(o,t)})},updateSlide:function(t,e){var o=this,i=t&&t.$content,a=t.width||t.opts.width,s=t.height||t.opts.height,r=t.$slide;o.adjustCaption(t),i&&(a||s||"video"===t.contentType)&&!t.hasError&&(n.fancybox.stop(i),n.fancybox.setTranslate(i,o.getFitPos(t)),t.pos===o.currPos&&(o.isAnimating=!1,o.updateCursor())),o.adjustLayout(t),r.length&&(r.trigger("refresh"),t.pos===o.currPos&&o.$refs.toolbar.add(o.$refs.navigation.find(".fancybox-button--arrow_right")).toggleClass("compensate-for-scrollbar",r.get(0).scrollHeight>r.get(0).clientHeight)),o.trigger("onUpdate",t,e)},centerSlide:function(t){var e=this,o=e.current,i=o.$slide;!e.isClosing&&o&&(i.siblings().css({transform:"",opacity:""}),i.parent().children().removeClass("fancybox-slide--previous fancybox-slide--next"),n.fancybox.animate(i,{top:0,left:0,opacity:1},void 0===t?0:t,function(){i.css({transform:"",opacity:""}),o.isComplete||e.complete()},!1))},isMoved:function(t){var e,o,i=t||this.current;return!!i&&(o=n.fancybox.getTranslate(this.$refs.stage),e=n.fancybox.getTranslate(i.$slide),!i.$slide.hasClass("fancybox-animated")&&(Math.abs(e.top-o.top)>.5||Math.abs(e.left-o.left)>.5))},updateCursor:function(t,e){var o,i,a=this,s=a.current,r=a.$refs.container;s&&!a.isClosing&&a.Guestures&&(r.removeClass("fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan"),o=a.canPan(t,e),i=!!o||a.isZoomable(),r.toggleClass("fancybox-is-zoomable",i),n("[data-fancybox-zoom]").prop("disabled",!i),o?r.addClass("fancybox-can-pan"):i&&("zoom"===s.opts.clickContent||n.isFunction(s.opts.clickContent)&&"zoom"==s.opts.clickContent(s))?r.addClass("fancybox-can-zoomIn"):s.opts.touch&&(s.opts.touch.vertical||a.group.length>1)&&"video"!==s.contentType&&r.addClass("fancybox-can-swipe"))},isZoomable:function(){var t,e=this,n=e.current;if(n&&!e.isClosing&&"image"===n.type&&!n.hasError){if(!n.isLoaded)return!0;if((t=e.getFitPos(n))&&(n.width>t.width||n.height>t.height))return!0}return!1},isScaledDown:function(t,e){var o=this,i=!1,a=o.current,s=a.$content;return void 0!==t&&void 0!==e?i=t<a.width&&e<a.height:s&&(i=n.fancybox.getTranslate(s),i=i.width<a.width&&i.height<a.height),i},canPan:function(t,e){var o=this,i=o.current,a=null,s=!1;return"image"===i.type&&(i.isComplete||t&&e)&&!i.hasError&&(s=o.getFitPos(i),void 0!==t&&void 0!==e?a={width:t,height:e}:i.isComplete&&(a=n.fancybox.getTranslate(i.$content)),a&&s&&(s=Math.abs(a.width-s.width)>1.5||Math.abs(a.height-s.height)>1.5)),s},loadSlide:function(t){var e,o,i,a=this;if(!t.isLoading&&!t.isLoaded){if(t.isLoading=!0,!1===a.trigger("beforeLoad",t))return t.isLoading=!1,!1;switch(e=t.type,o=t.$slide,o.off("refresh").trigger("onReset").addClass(t.opts.slideClass),e){case"image":a.setImage(t);break;case"iframe":a.setIframe(t);break;case"html":a.setContent(t,t.src||t.content);break;case"video":a.setContent(t,t.opts.video.tpl.replace(/\{\{src\}\}/gi,t.src).replace("{{format}}",t.opts.videoFormat||t.opts.video.format||"").replace("{{poster}}",t.thumb||""));break;case"inline":n(t.src).length?a.setContent(t,n(t.src)):a.setError(t);break;case"ajax":a.showLoading(t),i=n.ajax(n.extend({},t.opts.ajax.settings,{url:t.src,success:function(e,n){"success"===n&&a.setContent(t,e)},error:function(e,n){e&&"abort"!==n&&a.setError(t)}})),o.one("onReset",function(){i.abort()});break;default:a.setError(t)}return!0}},setImage:function(t){var o,i=this;setTimeout(function(){var e=t.$image;i.isClosing||!t.isLoading||e&&e.length&&e[0].complete||t.hasError||i.showLoading(t)},50),i.checkSrcset(t),t.$content=n('<div class="fancybox-content"></div>').addClass("fancybox-is-hidden").appendTo(t.$slide.addClass("fancybox-slide--image")),!1!==t.opts.preload&&t.opts.width&&t.opts.height&&t.thumb&&(t.width=t.opts.width,t.height=t.opts.height,o=e.createElement("img"),o.onerror=function(){n(this).remove(),t.$ghost=null},o.onload=function(){i.afterLoad(t)},t.$ghost=n(o).addClass("fancybox-image").appendTo(t.$content).attr("src",t.thumb)),i.setBigImage(t)},checkSrcset:function(e){var n,o,i,a,s=e.opts.srcset||e.opts.image.srcset;if(s){i=t.devicePixelRatio||1,a=t.innerWidth*i,o=s.split(",").map(function(t){var e={};return t.trim().split(/\s+/).forEach(function(t,n){var o=parseInt(t.substring(0,t.length-1),10);if(0===n)return e.url=t;o&&(e.value=o,e.postfix=t[t.length-1])}),e}),o.sort(function(t,e){return t.value-e.value});for(var r=0;r<o.length;r++){var c=o[r];if("w"===c.postfix&&c.value>=a||"x"===c.postfix&&c.value>=i){n=c;break}}!n&&o.length&&(n=o[o.length-1]),n&&(e.src=n.url,e.width&&e.height&&"w"==n.postfix&&(e.height=e.width/e.height*n.value,e.width=n.value),e.opts.srcset=s)}},setBigImage:function(t){var o=this,i=e.createElement("img"),a=n(i);t.$image=a.one("error",function(){o.setError(t)}).one("load",function(){var e;t.$ghost||(o.resolveImageSlideSize(t,this.naturalWidth,this.naturalHeight),o.afterLoad(t)),o.isClosing||(t.opts.srcset&&(e=t.opts.sizes,e&&"auto"!==e||(e=(t.width/t.height>1&&s.width()/s.height()>1?"100":Math.round(t.width/t.height*100))+"vw"),a.attr("sizes",e).attr("srcset",t.opts.srcset)),t.$ghost&&setTimeout(function(){t.$ghost&&!o.isClosing&&t.$ghost.hide()},Math.min(300,Math.max(1e3,t.height/1600))),o.hideLoading(t))}).addClass("fancybox-image").attr("src",t.src).appendTo(t.$content),(i.complete||"complete"==i.readyState)&&a.naturalWidth&&a.naturalHeight?a.trigger("load"):i.error&&a.trigger("error")},resolveImageSlideSize:function(t,e,n){var o=parseInt(t.opts.width,10),i=parseInt(t.opts.height,10);t.width=e,t.height=n,o>0&&(t.width=o,t.height=Math.floor(o*n/e)),i>0&&(t.width=Math.floor(i*e/n),t.height=i)},setIframe:function(t){var e,o=this,i=t.opts.iframe,a=t.$slide;t.$content=n('<div class="fancybox-content'+(i.preload?" fancybox-is-hidden":"")+'"></div>').css(i.css).appendTo(a),a.addClass("fancybox-slide--"+t.contentType),t.$iframe=e=n(i.tpl.replace(/\{rnd\}/g,(new Date).getTime())).attr(i.attr).appendTo(t.$content),i.preload?(o.showLoading(t),e.on("load.fb error.fb",function(e){this.isReady=1,t.$slide.trigger("refresh"),o.afterLoad(t)}),a.on("refresh.fb",function(){var n,o,s=t.$content,r=i.css.width,c=i.css.height;if(1===e[0].isReady){try{n=e.contents(),o=n.find("body")}catch(t){}o&&o.length&&o.children().length&&(a.css("overflow","visible"),s.css({width:"100%","max-width":"100%",height:"9999px"}),void 0===r&&(r=Math.ceil(Math.max(o[0].clientWidth,o.outerWidth(!0)))),s.css("width",r||"").css("max-width",""),void 0===c&&(c=Math.ceil(Math.max(o[0].clientHeight,o.outerHeight(!0)))),s.css("height",c||""),a.css("overflow","auto")),s.removeClass("fancybox-is-hidden")}})):o.afterLoad(t),e.attr("src",t.src),a.one("onReset",function(){try{n(this).find("iframe").hide().unbind().attr("src","//about:blank")}catch(t){}n(this).off("refresh.fb").empty(),t.isLoaded=!1,t.isRevealed=!1})},setContent:function(t,e){var o=this;o.isClosing||(o.hideLoading(t),t.$content&&n.fancybox.stop(t.$content),t.$slide.empty(),l(e)&&e.parent().length?((e.hasClass("fancybox-content")||e.parent().hasClass("fancybox-content"))&&e.parents(".fancybox-slide").trigger("onReset"),t.$placeholder=n("<div>").hide().insertAfter(e),e.css("display","inline-block")):t.hasError||("string"===n.type(e)&&(e=n("<div>").append(n.trim(e)).contents()),t.opts.filter&&(e=n("<div>").html(e).find(t.opts.filter))),t.$slide.one("onReset",function(){n(this).find("video,audio").trigger("pause"),t.$placeholder&&(t.$placeholder.after(e.removeClass("fancybox-content").hide()).remove(),t.$placeholder=null),t.$smallBtn&&(t.$smallBtn.remove(),t.$smallBtn=null),t.hasError||(n(this).empty(),t.isLoaded=!1,t.isRevealed=!1)}),n(e).appendTo(t.$slide),n(e).is("video,audio")&&(n(e).addClass("fancybox-video"),n(e).wrap("<div></div>"),t.contentType="video",t.opts.width=t.opts.width||n(e).attr("width"),t.opts.height=t.opts.height||n(e).attr("height")),t.$content=t.$slide.children().filter("div,form,main,video,audio,article,.fancybox-content").first(),t.$content.siblings().hide(),t.$content.length||(t.$content=t.$slide.wrapInner("<div></div>").children().first()),t.$content.addClass("fancybox-content"),t.$slide.addClass("fancybox-slide--"+t.contentType),o.afterLoad(t))},setError:function(t){t.hasError=!0,t.$slide.trigger("onReset").removeClass("fancybox-slide--"+t.contentType).addClass("fancybox-slide--error"),t.contentType="html",this.setContent(t,this.translate(t,t.opts.errorTpl)),t.pos===this.currPos&&(this.isAnimating=!1)},showLoading:function(t){var e=this;(t=t||e.current)&&!t.$spinner&&(t.$spinner=n(e.translate(e,e.opts.spinnerTpl)).appendTo(t.$slide).hide().fadeIn("fast"))},hideLoading:function(t){var e=this;(t=t||e.current)&&t.$spinner&&(t.$spinner.stop().remove(),delete t.$spinner)},afterLoad:function(t){var e=this;e.isClosing||(t.isLoading=!1,t.isLoaded=!0,e.trigger("afterLoad",t),e.hideLoading(t),!t.opts.smallBtn||t.$smallBtn&&t.$smallBtn.length||(t.$smallBtn=n(e.translate(t,t.opts.btnTpl.smallBtn)).appendTo(t.$content)),t.opts.protect&&t.$content&&!t.hasError&&(t.$content.on("contextmenu.fb",function(t){return 2==t.button&&t.preventDefault(),!0}),"image"===t.type&&n('<div class="fancybox-spaceball"></div>').appendTo(t.$content)),e.adjustCaption(t),e.adjustLayout(t),t.pos===e.currPos&&e.updateCursor(),e.revealContent(t))},adjustCaption:function(t){var e,n=this,o=t||n.current,i=o.opts.caption,a=o.opts.preventCaptionOverlap,s=n.$refs.caption,r=!1;s.toggleClass("fancybox-caption--separate",a),a&&i&&i.length&&(o.pos!==n.currPos?(e=s.clone().appendTo(s.parent()),e.children().eq(0).empty().html(i),r=e.outerHeight(!0),e.empty().remove()):n.$caption&&(r=n.$caption.outerHeight(!0)),o.$slide.css("padding-bottom",r||""))},adjustLayout:function(t){var e,n,o,i,a=this,s=t||a.current;s.isLoaded&&!0!==s.opts.disableLayoutFix&&(s.$content.css("margin-bottom",""),s.$content.outerHeight()>s.$slide.height()+.5&&(o=s.$slide[0].style["padding-bottom"],i=s.$slide.css("padding-bottom"),parseFloat(i)>0&&(e=s.$slide[0].scrollHeight,s.$slide.css("padding-bottom",0),Math.abs(e-s.$slide[0].scrollHeight)<1&&(n=i),s.$slide.css("padding-bottom",o))),s.$content.css("margin-bottom",n))},revealContent:function(t){var e,o,i,a,s=this,r=t.$slide,c=!1,l=!1,d=s.isMoved(t),u=t.isRevealed;return t.isRevealed=!0,e=t.opts[s.firstRun?"animationEffect":"transitionEffect"],i=t.opts[s.firstRun?"animationDuration":"transitionDuration"],i=parseInt(void 0===t.forcedDuration?i:t.forcedDuration,10),!d&&t.pos===s.currPos&&i||(e=!1),"zoom"===e&&(t.pos===s.currPos&&i&&"image"===t.type&&!t.hasError&&(l=s.getThumbPos(t))?c=s.getFitPos(t):e="fade"),"zoom"===e?(s.isAnimating=!0,c.scaleX=c.width/l.width,c.scaleY=c.height/l.height,a=t.opts.zoomOpacity,"auto"==a&&(a=Math.abs(t.width/t.height-l.width/l.height)>.1),a&&(l.opacity=.1,c.opacity=1),n.fancybox.setTranslate(t.$content.removeClass("fancybox-is-hidden"),l),p(t.$content),void n.fancybox.animate(t.$content,c,i,function(){s.isAnimating=!1,s.complete()})):(s.updateSlide(t),e?(n.fancybox.stop(r),o="fancybox-slide--"+(t.pos>=s.prevPos?"next":"previous")+" fancybox-animated fancybox-fx-"+e,r.addClass(o).removeClass("fancybox-slide--current"),t.$content.removeClass("fancybox-is-hidden"),p(r),"image"!==t.type&&t.$content.hide().show(0),void n.fancybox.animate(r,"fancybox-slide--current",i,function(){r.removeClass(o).css({transform:"",opacity:""}),t.pos===s.currPos&&s.complete()},!0)):(t.$content.removeClass("fancybox-is-hidden"),u||!d||"image"!==t.type||t.hasError||t.$content.hide().fadeIn("fast"),void(t.pos===s.currPos&&s.complete())))},getThumbPos:function(t){var e,o,i,a,s,r=!1,c=t.$thumb;return!(!c||!g(c[0]))&&(e=n.fancybox.getTranslate(c),o=parseFloat(c.css("border-top-width")||0),i=parseFloat(c.css("border-right-width")||0),a=parseFloat(c.css("border-bottom-width")||0),s=parseFloat(c.css("border-left-width")||0),r={top:e.top+o,left:e.left+s,width:e.width-i-s,height:e.height-o-a,scaleX:1,scaleY:1},e.width>0&&e.height>0&&r)},complete:function(){var t,e=this,o=e.current,i={};!e.isMoved()&&o.isLoaded&&(o.isComplete||(o.isComplete=!0,o.$slide.siblings().trigger("onReset"),e.preload("inline"),p(o.$slide),o.$slide.addClass("fancybox-slide--complete"),n.each(e.slides,function(t,o){o.pos>=e.currPos-1&&o.pos<=e.currPos+1?i[o.pos]=o:o&&(n.fancybox.stop(o.$slide),o.$slide.off().remove())}),e.slides=i),e.isAnimating=!1,e.updateCursor(),e.trigger("afterShow"),o.opts.video.autoStart&&o.$slide.find("video,audio").filter(":visible:first").trigger("play").one("ended",function(){Document.exitFullscreen?Document.exitFullscreen():this.webkitExitFullscreen&&this.webkitExitFullscreen(),e.next()}),o.opts.autoFocus&&"html"===o.contentType&&(t=o.$content.find("input[autofocus]:enabled:visible:first"),t.length?t.trigger("focus"):e.focus(null,!0)),o.$slide.scrollTop(0).scrollLeft(0))},preload:function(t){var e,n,o=this;o.group.length<2||(n=o.slides[o.currPos+1],e=o.slides[o.currPos-1],e&&e.type===t&&o.loadSlide(e),n&&n.type===t&&o.loadSlide(n))},focus:function(t,o){var i,a,s=this,r=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])","button:not([disabled]):not([aria-hidden])","iframe","object","embed","video","audio","[contenteditable]",'[tabindex]:not([tabindex^="-"])'].join(",");s.isClosing||(i=!t&&s.current&&s.current.isComplete?s.current.$slide.find("*:visible"+(o?":not(.fancybox-close-small)":"")):s.$refs.container.find("*:visible"),i=i.filter(r).filter(function(){return"hidden"!==n(this).css("visibility")&&!n(this).hasClass("disabled")}),i.length?(a=i.index(e.activeElement),t&&t.shiftKey?(a<0||0==a)&&(t.preventDefault(),i.eq(i.length-1).trigger("focus")):(a<0||a==i.length-1)&&(t&&t.preventDefault(),i.eq(0).trigger("focus"))):s.$refs.container.trigger("focus"))},activate:function(){var t=this;n(".fancybox-container").each(function(){var e=n(this).data("FancyBox");e&&e.id!==t.id&&!e.isClosing&&(e.trigger("onDeactivate"),e.removeEvents(),e.isVisible=!1)}),t.isVisible=!0,(t.current||t.isIdle)&&(t.update(),t.updateControls()),t.trigger("onActivate"),t.addEvents()},close:function(t,e){var o,i,a,s,r,c,l,u=this,f=u.current,h=function(){u.cleanUp(t)};return!u.isClosing&&(u.isClosing=!0,!1===u.trigger("beforeClose",t)?(u.isClosing=!1,d(function(){u.update()}),!1):(u.removeEvents(),a=f.$content,o=f.opts.animationEffect,i=n.isNumeric(e)?e:o?f.opts.animationDuration:0,f.$slide.removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"),!0!==t?n.fancybox.stop(f.$slide):o=!1,f.$slide.siblings().trigger("onReset").remove(),i&&u.$refs.container.removeClass("fancybox-is-open").addClass("fancybox-is-closing").css("transition-duration",i+"ms"),u.hideLoading(f),u.hideControls(!0),u.updateCursor(),"zoom"!==o||a&&i&&"image"===f.type&&!u.isMoved()&&!f.hasError&&(l=u.getThumbPos(f))||(o="fade"),"zoom"===o?(n.fancybox.stop(a),s=n.fancybox.getTranslate(a),c={top:s.top,left:s.left,scaleX:s.width/l.width,scaleY:s.height/l.height,width:l.width,height:l.height},r=f.opts.zoomOpacity,
19�
vendor: 30,962 bytes, lines 19-20
19
20"auto"==r&&(r=Math.abs(f.width/f.height-l.width/l.height)>.1),r&&(l.opacity=0),n.fancybox.setTranslate(a,c),p(a),n.fancybox.animate(a,l,i,h),!0):(o&&i?n.fancybox.animate(f.$slide.addClass("fancybox-slide--previous").removeClass("fancybox-slide--current"),"fancybox-animated fancybox-fx-"+o,i,h):!0===t?setTimeout(h,i):h(),!0)))},cleanUp:function(e){var o,i,a,s=this,r=s.current.opts.$orig;s.current.$slide.trigger("onReset"),s.$refs.container.empty().remove(),s.trigger("afterClose",e),s.current.opts.backFocus&&(r&&r.length&&r.is(":visible")||(r=s.$trigger),r&&r.length&&(i=t.scrollX,a=t.scrollY,r.trigger("focus"),n("html, body").scrollTop(a).scrollLeft(i))),s.current=null,o=n.fancybox.getInstance(),o?o.activate():(n("body").removeClass("fancybox-active compensate-for-scrollbar"),n("#fancybox-style-noscroll").remove())},trigger:function(t,e){var o,i=Array.prototype.slice.call(arguments,1),a=this,s=e&&e.opts?e:a.current;if(s?i.unshift(s):s=a,i.unshift(a),n.isFunction(s.opts[t])&&(o=s.opts[t].apply(s,i)),!1===o)return o;"afterClose"!==t&&a.$refs?a.$refs.container.trigger(t+".fb",i):r.trigger(t+".fb",i)},updateControls:function(){var t=this,o=t.current,i=o.index,a=t.$refs.container,s=t.$refs.caption,r=o.opts.caption;o.$slide.trigger("refresh"),r&&r.length?(t.$caption=s,s.children().eq(0).html(r)):t.$caption=null,t.hasHiddenControls||t.isIdle||t.showControls(),a.find("[data-fancybox-count]").html(t.group.length),a.find("[data-fancybox-index]").html(i+1),a.find("[data-fancybox-prev]").prop("disabled",!o.opts.loop&&i<=0),a.find("[data-fancybox-next]").prop("disabled",!o.opts.loop&&i>=t.group.length-1),"image"===o.type?a.find("[data-fancybox-zoom]").show().end().find("[data-fancybox-download]").attr("href",o.opts.image.src||o.src).show():o.opts.toolbar&&a.find("[data-fancybox-download],[data-fancybox-zoom]").hide(),n(e.activeElement).is(":hidden,[disabled]")&&t.$refs.container.trigger("focus")},hideControls:function(t){var e=this,n=["infobar","toolbar","nav"];!t&&e.current.opts.preventCaptionOverlap||n.push("caption"),this.$refs.container.removeClass(n.map(function(t){return"fancybox-show-"+t}).join(" ")),this.hasHiddenControls=!0},showControls:function(){var t=this,e=t.current?t.current.opts:t.opts,n=t.$refs.container;t.hasHiddenControls=!1,t.idleSecondsCounter=0,n.toggleClass("fancybox-show-toolbar",!(!e.toolbar||!e.buttons)).toggleClass("fancybox-show-infobar",!!(e.infobar&&t.group.length>1)).toggleClass("fancybox-show-caption",!!t.$caption).toggleClass("fancybox-show-nav",!!(e.arrows&&t.group.length>1)).toggleClass("fancybox-is-modal",!!e.modal)},toggleControls:function(){this.hasHiddenControls?this.showControls():this.hideControls()}}),n.fancybox={version:"3.5.7",defaults:a,getInstance:function(t){var e=n('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox"),o=Array.prototype.slice.call(arguments,1);return e instanceof b&&("string"===n.type(t)?e[t].apply(e,o):"function"===n.type(t)&&t.apply(e,o),e)},open:function(t,e,n){return new b(t,e,n)},close:function(t){var e=this.getInstance();e&&(e.close(),!0===t&&this.close(t))},destroy:function(){this.close(!0),r.add("body").off("click.fb-start","**")},isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),use3d:function(){var n=e.createElement("div");return t.getComputedStyle&&t.getComputedStyle(n)&&t.getComputedStyle(n).getPropertyValue("transform")&&!(e.documentMode&&e.documentMode<11)}(),getTranslate:function(t){var e;return!(!t||!t.length)&&(e=t[0].getBoundingClientRect(),{top:e.top||0,left:e.left||0,width:e.width,height:e.height,opacity:parseFloat(t.css("opacity"))})},setTranslate:function(t,e){var n="",o={};if(t&&e)return void 0===e.left&&void 0===e.top||(n=(void 0===e.left?t.position().left:e.left)+"px, "+(void 0===e.top?t.position().top:e.top)+"px",n=this.use3d?"translate3d("+n+", 0px)":"translate("+n+")"),void 0!==e.scaleX&&void 0!==e.scaleY?n+=" scale("+e.scaleX+", "+e.scaleY+")":void 0!==e.scaleX&&(n+=" scaleX("+e.scaleX+")"),n.length&&(o.transform=n),void 0!==e.opacity&&(o.opacity=e.opacity),void 0!==e.width&&(o.width=e.width),void 0!==e.height&&(o.height=e.height),t.css(o)},animate:function(t,e,o,i,a){var s,r=this;n.isFunction(o)&&(i=o,o=null),r.stop(t),s=r.getTranslate(t),t.on(f,function(c){(!c||!c.originalEvent||t.is(c.originalEvent.target)&&"z-index"!=c.originalEvent.propertyName)&&(r.stop(t),n.isNumeric(o)&&t.css("transition-duration",""),n.isPlainObject(e)?void 0!==e.scaleX&&void 0!==e.scaleY&&r.setTranslate(t,{top:e.top,left:e.left,width:s.width*e.scaleX,height:s.height*e.scaleY,scaleX:1,scaleY:1}):!0!==a&&t.removeClass(e),n.isFunction(i)&&i(c))}),n.isNumeric(o)&&t.css("transition-duration",o+"ms"),n.isPlainObject(e)?(void 0!==e.scaleX&&void 0!==e.scaleY&&(delete e.width,delete e.height,t.parent().hasClass("fancybox-slide--image")&&t.parent().addClass("fancybox-is-scaling")),n.fancybox.setTranslate(t,e)):t.addClass(e),t.data("timer",setTimeout(function(){t.trigger(f)},o+33))},stop:function(t,e){t&&t.length&&(clearTimeout(t.data("timer")),e&&t.trigger(f),t.off(f).css("transition-duration",""),t.parent().removeClass("fancybox-is-scaling"))}},n.fn.fancybox=function(t){var e;return t=t||{},e=t.selector||!1,e?n("body").off("click.fb-start",e).on("click.fb-start",e,{options:t},i):this.off("click.fb-start").on("click.fb-start",{items:this,options:t},i),this},r.on("click.fb-start","[data-fancybox]",i),r.on("click.fb-start","[data-fancybox-trigger]",function(t){n('[data-fancybox="'+n(this).attr("data-fancybox-trigger")+'"]').eq(n(this).attr("data-fancybox-index")||0).trigger("click.fb-start",{$trigger:n(this)})}),function(){var t=null;r.on("mousedown mouseup focus blur",".fancybox-button",function(e){switch(e.type){case"mousedown":t=n(this);break;case"mouseup":t=null;break;case"focusin":n(".fancybox-button").removeClass("fancybox-focus"),n(this).is(t)||n(this).is("[disabled]")||n(this).addClass("fancybox-focus");break;case"focusout":n(".fancybox-button").removeClass("fancybox-focus")}})}()}}(window,document,jQuery),function(t){"use strict";var e={youtube:{matcher:/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i,params:{autoplay:1,autohide:1,fs:1,rel:0,hd:1,wmode:"transparent",enablejsapi:1,html5:1},paramPlace:8,type:"iframe",url:"https://www.youtube-nocookie.com/embed/$4",thumb:"https://img.youtube.com/vi/$4/hqdefault.jpg"},vimeo:{matcher:/^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/,params:{autoplay:1,hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1},paramPlace:3,type:"iframe",url:"//player.vimeo.com/video/$2"},instagram:{matcher:/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,type:"image",url:"//$1/p/$2/media/?size=l"},gmap_place:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/?ll="+(t[9]?t[9]+"&z="+Math.floor(t[10])+(t[12]?t[12].replace(/^\//,"&"):""):t[12]+"").replace(/\?/,"&")+"&output="+(t[12]&&t[12].indexOf("layer=c")>0?"svembed":"embed")}},gmap_search:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/maps?q="+t[5].replace("query=","q=").replace("api=1","")+"&output=embed"}}},n=function(e,n,o){if(e)return o=o||"","object"===t.type(o)&&(o=t.param(o,!0)),t.each(n,function(t,n){e=e.replace("$"+t,n||"")}),o.length&&(e+=(e.indexOf("?")>0?"&":"?")+o),e};t(document).on("objectNeedsType.fb",function(o,i,a){var s,r,c,l,d,u,f,p=a.src||"",h=!1;s=t.extend(!0,{},e,a.opts.media),t.each(s,function(e,o){if(c=p.match(o.matcher)){if(h=o.type,f=e,u={},o.paramPlace&&c[o.paramPlace]){d=c[o.paramPlace],"?"==d[0]&&(d=d.substring(1)),d=d.split("&");for(var i=0;i<d.length;++i){var s=d[i].split("=",2);2==s.length&&(u[s[0]]=decodeURIComponent(s[1].replace(/\+/g," ")))}}return l=t.extend(!0,{},o.params,a.opts[e],u),p="function"===t.type(o.url)?o.url.call(this,c,l,a):n(o.url,c,l),r="function"===t.type(o.thumb)?o.thumb.call(this,c,l,a):n(o.thumb,c),"youtube"===e?p=p.replace(/&t=((\d+)m)?(\d+)s/,function(t,e,n,o){return"&start="+((n?60*parseInt(n,10):0)+parseInt(o,10))}):"vimeo"===e&&(p=p.replace("&%23","#")),!1}}),h?(a.opts.thumb||a.opts.$thumb&&a.opts.$thumb.length||(a.opts.thumb=r),"iframe"===h&&(a.opts=t.extend(!0,a.opts,{iframe:{preload:!1,attr:{scrolling:"no"}}})),t.extend(a,{type:h,src:p,origSrc:a.src,contentSource:f,contentType:"image"===h?"image":"gmap_place"==f||"gmap_search"==f?"map":"video"})):p&&(a.type=a.opts.defaultType)});var o={youtube:{src:"https://www.youtube.com/iframe_api",class:"YT",loading:!1,loaded:!1},vimeo:{src:"https://player.vimeo.com/api/player.js",class:"Vimeo",loading:!1,loaded:!1},load:function(t){var e,n=this;if(this[t].loaded)return void setTimeout(function(){n.done(t)});this[t].loading||(this[t].loading=!0,e=document.createElement("script"),e.type="text/javascript",e.src=this[t].src,"youtube"===t?window.onYouTubeIframeAPIReady=function(){n[t].loaded=!0,n.done(t)}:e.onload=function(){n[t].loaded=!0,n.done(t)},document.body.appendChild(e))},done:function(e){var n,o,i;"youtube"===e&&delete window.onYouTubeIframeAPIReady,(n=t.fancybox.getInstance())&&(o=n.current.$content.find("iframe"),"youtube"===e&&void 0!==YT&&YT?i=new YT.Player(o.attr("id"),{events:{onStateChange:function(t){0==t.data&&n.next()}}}):"vimeo"===e&&void 0!==Vimeo&&Vimeo&&(i=new Vimeo.Player(o),i.on("ended",function(){n.next()})))}};t(document).on({"afterShow.fb":function(t,e,n){e.group.length>1&&("youtube"===n.contentSource||"vimeo"===n.contentSource)&&o.load(n.contentSource)}})}(jQuery),function(t,e,n){"use strict";var o=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),i=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),a=function(e){var n=[];e=e.originalEvent||e||t.e,e=e.touches&&e.touches.length?e.touches:e.changedTouches&&e.changedTouches.length?e.changedTouches:[e];for(var o in e)e[o].pageX?n.push({x:e[o].pageX,y:e[o].pageY}):e[o].clientX&&n.push({x:e[o].clientX,y:e[o].clientY});return n},s=function(t,e,n){return e&&t?"x"===n?t.x-e.x:"y"===n?t.y-e.y:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)):0},r=function(t){if(t.is('a,area,button,[role="button"],input,label,select,summary,textarea,video,audio,iframe')||n.isFunction(t.get(0).onclick)||t.data("selectable"))return!0;for(var e=0,o=t[0].attributes,i=o.length;e<i;e++)if("data-fancybox-"===o[e].nodeName.substr(0,14))return!0;return!1},c=function(e){var n=t.getComputedStyle(e)["overflow-y"],o=t.getComputedStyle(e)["overflow-x"],i=("scroll"===n||"auto"===n)&&e.scrollHeight>e.clientHeight,a=("scroll"===o||"auto"===o)&&e.scrollWidth>e.clientWidth;return i||a},l=function(t){for(var e=!1;;){if(e=c(t.get(0)))break;if(t=t.parent(),!t.length||t.hasClass("fancybox-stage")||t.is("body"))break}return e},d=function(t){var e=this;e.instance=t,e.$bg=t.$refs.bg,e.$stage=t.$refs.stage,e.$container=t.$refs.container,e.destroy(),e.$container.on("touchstart.fb.touch mousedown.fb.touch",n.proxy(e,"ontouchstart"))};d.prototype.destroy=function(){var t=this;t.$container.off(".fb.touch"),n(e).off(".fb.touch"),t.requestId&&(i(t.requestId),t.requestId=null),t.tapped&&(clearTimeout(t.tapped),t.tapped=null)},d.prototype.ontouchstart=function(o){var i=this,c=n(o.target),d=i.instance,u=d.current,f=u.$slide,p=u.$content,h="touchstart"==o.type;if(h&&i.$container.off("mousedown.fb.touch"),(!o.originalEvent||2!=o.originalEvent.button)&&f.length&&c.length&&!r(c)&&!r(c.parent())&&(c.is("img")||!(o.originalEvent.clientX>c[0].clientWidth+c.offset().left))){if(!u||d.isAnimating||u.$slide.hasClass("fancybox-animated"))return o.stopPropagation(),void o.preventDefault();i.realPoints=i.startPoints=a(o),i.startPoints.length&&(u.touch&&o.stopPropagation(),i.startEvent=o,i.canTap=!0,i.$target=c,i.$content=p,i.opts=u.opts.touch,i.isPanning=!1,i.isSwiping=!1,i.isZooming=!1,i.isScrolling=!1,i.canPan=d.canPan(),i.startTime=(new Date).getTime(),i.distanceX=i.distanceY=i.distance=0,i.canvasWidth=Math.round(f[0].clientWidth),i.canvasHeight=Math.round(f[0].clientHeight),i.contentLastPos=null,i.contentStartPos=n.fancybox.getTranslate(i.$content)||{top:0,left:0},i.sliderStartPos=n.fancybox.getTranslate(f),i.stagePos=n.fancybox.getTranslate(d.$refs.stage),i.sliderStartPos.top-=i.stagePos.top,i.sliderStartPos.left-=i.stagePos.left,i.contentStartPos.top-=i.stagePos.top,i.contentStartPos.left-=i.stagePos.left,n(e).off(".fb.touch").on(h?"touchend.fb.touch touchcancel.fb.touch":"mouseup.fb.touch mouseleave.fb.touch",n.proxy(i,"ontouchend")).on(h?"touchmove.fb.touch":"mousemove.fb.touch",n.proxy(i,"ontouchmove")),n.fancybox.isMobile&&e.addEventListener("scroll",i.onscroll,!0),((i.opts||i.canPan)&&(c.is(i.$stage)||i.$stage.find(c).length)||(c.is(".fancybox-image")&&o.preventDefault(),n.fancybox.isMobile&&c.parents(".fancybox-caption").length))&&(i.isScrollable=l(c)||l(c.parent()),n.fancybox.isMobile&&i.isScrollable||o.preventDefault(),(1===i.startPoints.length||u.hasError)&&(i.canPan?(n.fancybox.stop(i.$content),i.isPanning=!0):i.isSwiping=!0,i.$container.addClass("fancybox-is-grabbing")),2===i.startPoints.length&&"image"===u.type&&(u.isLoaded||u.$ghost)&&(i.canTap=!1,i.isSwiping=!1,i.isPanning=!1,i.isZooming=!0,n.fancybox.stop(i.$content),i.centerPointStartX=.5*(i.startPoints[0].x+i.startPoints[1].x)-n(t).scrollLeft(),i.centerPointStartY=.5*(i.startPoints[0].y+i.startPoints[1].y)-n(t).scrollTop(),i.percentageOfImageAtPinchPointX=(i.centerPointStartX-i.contentStartPos.left)/i.contentStartPos.width,i.percentageOfImageAtPinchPointY=(i.centerPointStartY-i.contentStartPos.top)/i.contentStartPos.height,i.startDistanceBetweenFingers=s(i.startPoints[0],i.startPoints[1]))))}},d.prototype.onscroll=function(t){var n=this;n.isScrolling=!0,e.removeEventListener("scroll",n.onscroll,!0)},d.prototype.ontouchmove=function(t){var e=this;return void 0!==t.originalEvent.buttons&&0===t.originalEvent.buttons?void e.ontouchend(t):e.isScrolling?void(e.canTap=!1):(e.newPoints=a(t),void((e.opts||e.canPan)&&e.newPoints.length&&e.newPoints.length&&(e.isSwiping&&!0===e.isSwiping||t.preventDefault(),e.distanceX=s(e.newPoints[0],e.startPoints[0],"x"),e.distanceY=s(e.newPoints[0],e.startPoints[0],"y"),e.distance=s(e.newPoints[0],e.startPoints[0]),e.distance>0&&(e.isSwiping?e.onSwipe(t):e.isPanning?e.onPan():e.isZooming&&e.onZoom()))))},d.prototype.onSwipe=function(e){var a,s=this,r=s.instance,c=s.isSwiping,l=s.sliderStartPos.left||0;if(!0!==c)"x"==c&&(s.distanceX>0&&(s.instance.group.length<2||0===s.instance.current.index&&!s.instance.current.opts.loop)?l+=Math.pow(s.distanceX,.8):s.distanceX<0&&(s.instance.group.length<2||s.instance.current.index===s.instance.group.length-1&&!s.instance.current.opts.loop)?l-=Math.pow(-s.distanceX,.8):l+=s.distanceX),s.sliderLastPos={top:"x"==c?0:s.sliderStartPos.top+s.distanceY,left:l},s.requestId&&(i(s.requestId),s.requestId=null),s.requestId=o(function(){s.sliderLastPos&&(n.each(s.instance.slides,function(t,e){var o=e.pos-s.instance.currPos;n.fancybox.setTranslate(e.$slide,{top:s.sliderLastPos.top,left:s.sliderLastPos.left+o*s.canvasWidth+o*e.opts.gutter})}),s.$container.addClass("fancybox-is-sliding"))});else if(Math.abs(s.distance)>10){if(s.canTap=!1,r.group.length<2&&s.opts.vertical?s.isSwiping="y":r.isDragging||!1===s.opts.vertical||"auto"===s.opts.vertical&&n(t).width()>800?s.isSwiping="x":(a=Math.abs(180*Math.atan2(s.distanceY,s.distanceX)/Math.PI),s.isSwiping=a>45&&a<135?"y":"x"),"y"===s.isSwiping&&n.fancybox.isMobile&&s.isScrollable)return void(s.isScrolling=!0);r.isDragging=s.isSwiping,s.startPoints=s.newPoints,n.each(r.slides,function(t,e){var o,i;n.fancybox.stop(e.$slide),o=n.fancybox.getTranslate(e.$slide),i=n.fancybox.getTranslate(r.$refs.stage),e.$slide.css({transform:"",opacity:"","transition-duration":""}).removeClass("fancybox-animated").removeClass(function(t,e){return(e.match(/(^|\s)fancybox-fx-\S+/g)||[]).join(" ")}),e.pos===r.current.pos&&(s.sliderStartPos.top=o.top-i.top,s.sliderStartPos.left=o.left-i.left),n.fancybox.setTranslate(e.$slide,{top:o.top-i.top,left:o.left-i.left})}),r.SlideShow&&r.SlideShow.isActive&&r.SlideShow.stop()}},d.prototype.onPan=function(){var t=this;if(s(t.newPoints[0],t.realPoints[0])<(n.fancybox.isMobile?10:5))return void(t.startPoints=t.newPoints);t.canTap=!1,t.contentLastPos=t.limitMovement(),t.requestId&&i(t.requestId),t.requestId=o(function(){n.fancybox.setTranslate(t.$content,t.contentLastPos)})},d.prototype.limitMovement=function(){var t,e,n,o,i,a,s=this,r=s.canvasWidth,c=s.canvasHeight,l=s.distanceX,d=s.distanceY,u=s.contentStartPos,f=u.left,p=u.top,h=u.width,g=u.height;return i=h>r?f+l:f,a=p+d,t=Math.max(0,.5*r-.5*h),e=Math.max(0,.5*c-.5*g),n=Math.min(r-h,.5*r-.5*h),o=Math.min(c-g,.5*c-.5*g),l>0&&i>t&&(i=t-1+Math.pow(-t+f+l,.8)||0),l<0&&i<n&&(i=n+1-Math.pow(n-f-l,.8)||0),d>0&&a>e&&(a=e-1+Math.pow(-e+p+d,.8)||0),d<0&&a<o&&(a=o+1-Math.pow(o-p-d,.8)||0),{top:a,left:i}},d.prototype.limitPosition=function(t,e,n,o){var i=this,a=i.canvasWidth,s=i.canvasHeight;return n>a?(t=t>0?0:t,t=t<a-n?a-n:t):t=Math.max(0,a/2-n/2),o>s?(e=e>0?0:e,e=e<s-o?s-o:e):e=Math.max(0,s/2-o/2),{top:e,left:t}},d.prototype.onZoom=function(){var e=this,a=e.contentStartPos,r=a.width,c=a.height,l=a.left,d=a.top,u=s(e.newPoints[0],e.newPoints[1]),f=u/e.startDistanceBetweenFingers,p=Math.floor(r*f),h=Math.floor(c*f),g=(r-p)*e.percentageOfImageAtPinchPointX,b=(c-h)*e.percentageOfImageAtPinchPointY,m=(e.newPoints[0].x+e.newPoints[1].x)/2-n(t).scrollLeft(),v=(e.newPoints[0].y+e.newPoints[1].y)/2-n(t).scrollTop(),y=m-e.centerPointStartX,x=v-e.centerPointStartY,w=l+(g+y),$=d+(b+x),S={top:$,left:w,scaleX:f,scaleY:f};e.canTap=!1,e.newWidth=p,e.newHeight=h,e.contentLastPos=S,e.requestId&&i(e.requestId),e.requestId=o(function(){n.fancybox.setTranslate(e.$content,e.contentLastPos)})},d.prototype.ontouchend=function(t){var o=this,s=o.isSwiping,r=o.isPanning,c=o.isZooming,l=o.isScrolling;if(o.endPoints=a(t),o.dMs=Math.max((new Date).getTime()-o.startTime,1),o.$container.removeClass("fancybox-is-grabbing"),n(e).off(".fb.touch"),e.removeEventListener("scroll",o.onscroll,!0),o.requestId&&(i(o.requestId),o.requestId=null),o.isSwiping=!1,o.isPanning=!1,o.isZooming=!1,o.isScrolling=!1,o.instance.isDragging=!1,o.canTap)return o.onTap(t);o.speed=100,o.velocityX=o.distanceX/o.dMs*.5,o.velocityY=o.distanceY/o.dMs*.5,r?o.endPanning():c?o.endZooming():o.endSwiping(s,l)},d.prototype.endSwiping=function(t,e){var o=this,i=!1,a=o.instance.group.length,s=Math.abs(o.distanceX),r="x"==t&&a>1&&(o.dMs>130&&s>10||s>50);o.sliderLastPos=null,"y"==t&&!e&&Math.abs(o.distanceY)>50?(n.fancybox.animate(o.instance.current.$slide,{top:o.sliderStartPos.top+o.distanceY+150*o.velocityY,opacity:0},200),i=o.instance.close(!0,250)):r&&o.distanceX>0?i=o.instance.previous(300):r&&o.distanceX<0&&(i=o.instance.next(300)),!1!==i||"x"!=t&&"y"!=t||o.instance.centerSlide(200),o.$container.removeClass("fancybox-is-sliding")},d.prototype.endPanning=function(){var t,e,o,i=this;i.contentLastPos&&(!1===i.opts.momentum||i.dMs>350?(t=i.contentLastPos.left,e=i.contentLastPos.top):(t=i.contentLastPos.left+500*i.velocityX,e=i.contentLastPos.top+500*i.velocityY),o=i.limitPosition(t,e,i.contentStartPos.width,i.contentStartPos.height),o.width=i.contentStartPos.width,o.height=i.contentStartPos.height,n.fancybox.animate(i.$content,o,366))},d.prototype.endZooming=function(){var t,e,o,i,a=this,s=a.instance.current,r=a.newWidth,c=a.newHeight;a.contentLastPos&&(t=a.contentLastPos.left,e=a.contentLastPos.top,i={top:e,left:t,width:r,height:c,scaleX:1,scaleY:1},n.fancybox.setTranslate(a.$content,i),r<a.canvasWidth&&c<a.canvasHeight?a.instance.scaleToFit(150):r>s.width||c>s.height?a.instance.scaleToActual(a.centerPointStartX,a.centerPointStartY,150):(o=a.limitPosition(t,e,r,c),n.fancybox.animate(a.$content,o,150)))},d.prototype.onTap=function(e){var o,i=this,s=n(e.target),r=i.instance,c=r.current,l=e&&a(e)||i.startPoints,d=l[0]?l[0].x-n(t).scrollLeft()-i.stagePos.left:0,u=l[0]?l[0].y-n(t).scrollTop()-i.stagePos.top:0,f=function(t){var o=c.opts[t];if(n.isFunction(o)&&(o=o.apply(r,[c,e])),o)switch(o){case"close":r.close(i.startEvent);break;case"toggleControls":r.toggleControls();break;case"next":r.next();break;case"nextOrClose":r.group.length>1?r.next():r.close(i.startEvent);break;case"zoom":"image"==c.type&&(c.isLoaded||c.$ghost)&&(r.canPan()?r.scaleToFit():r.isScaledDown()?r.scaleToActual(d,u):r.group.length<2&&r.close(i.startEvent))}};if((!e.originalEvent||2!=e.originalEvent.button)&&(s.is("img")||!(d>s[0].clientWidth+s.offset().left))){if(s.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container"))o="Outside";else if(s.is(".fancybox-slide"))o="Slide";else{if(!r.current.$content||!r.current.$content.find(s).addBack().filter(s).length)return;o="Content"}if(i.tapped){if(clearTimeout(i.tapped),i.tapped=null,Math.abs(d-i.tapX)>50||Math.abs(u-i.tapY)>50)return this;f("dblclick"+o)}else i.tapX=d,i.tapY=u,c.opts["dblclick"+o]&&c.opts["dblclick"+o]!==c.opts["click"+o]?i.tapped=setTimeout(function(){i.tapped=null,r.isAnimating||f("click"+o)},500):f("click"+o);return this}},n(e).on("onActivate.fb",function(t,e){e&&!e.Guestures&&(e.Guestures=new d(e))}).on("beforeClose.fb",function(t,e){e&&e.Guestures&&e.Guestures.destroy()})}(window,document,jQuery),function(t,e){"use strict";e.extend(!0,e.fancybox.defaults,{btnTpl:{slideShow:'<button data-fancybox-play class="fancybox-button fancybox-button--play" title="{{PLAY_START}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6.5 5.4v13.2l11-6.6z"/></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.33 5.75h2.2v12.5h-2.2V5.75zm5.15 0h2.2v12.5h-2.2V5.75z"/></svg></button>'},slideShow:{autoStart:!1,speed:3e3,progress:!0}});var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{timer:null,isActive:!1,$button:null,init:function(){var t=this,n=t.instance,o=n.group[n.currIndex].opts.slideShow;t.$button=n.$refs.toolbar.find("[data-fancybox-play]").on("click",function(){t.toggle()}),n.group.length<2||!o?t.$button.hide():o.progress&&(t.$progress=e('<div class="fancybox-progress"></div>').appendTo(n.$refs.inner))},set:function(t){var n=this,o=n.instance,i=o.current;i&&(!0===t||i.opts.loop||o.currIndex<o.group.length-1)?n.isActive&&"video"!==i.contentType&&(n.$progress&&e.fancybox.animate(n.$progress.show(),{scaleX:1},i.opts.slideShow.speed),n.timer=setTimeout(function(){o.current.opts.loop||o.current.index!=o.group.length-1?o.next():o.jumpTo(0)},i.opts.slideShow.speed)):(n.stop(),o.idleSecondsCounter=0,o.showControls())},clear:function(){var t=this;clearTimeout(t.timer),t.timer=null,t.$progress&&t.$progress.removeAttr("style").hide()},start:function(){var t=this,e=t.instance.current;e&&(t.$button.attr("title",(e.opts.i18n[e.opts.lang]||e.opts.i18n.en).PLAY_STOP).removeClass("fancybox-button--play").addClass("fancybox-button--pause"),t.isActive=!0,e.isComplete&&t.set(!0),t.instance.trigger("onSlideShowChange",!0))},stop:function(){var t=this,e=t.instance.current;t.clear(),t.$button.attr("title",(e.opts.i18n[e.opts.lang]||e.opts.i18n.en).PLAY_START).removeClass("fancybox-button--pause").addClass("fancybox-button--play"),t.isActive=!1,t.instance.trigger("onSlideShowChange",!1),t.$progress&&t.$progress.removeAttr("style").hide()},toggle:function(){var t=this;t.isActive?t.stop():t.start()}}),e(t).on({"onInit.fb":function(t,e){e&&!e.SlideShow&&(e.SlideShow=new n(e))},"beforeShow.fb":function(t,e,n,o){var i=e&&e.SlideShow;o?i&&n.opts.slideShow.autoStart&&i.start():i&&i.isActive&&i.clear()},"afterShow.fb":function(t,e,n){var o=e&&e.SlideShow;o&&o.isActive&&o.set()},"afterKeydown.fb":function(n,o,i,a,s){var r=o&&o.SlideShow;!r||!i.opts.slideShow||80!==s&&32!==s||e(t.activeElement).is("button,a,input")||(a.preventDefault(),r.toggle())},"beforeClose.fb onDeactivate.fb":function(t,e){var n=e&&e.SlideShow;n&&n.stop()}}),e(t).on("visibilitychange",function(){var n=e.fancybox.getInstance(),o=n&&n.SlideShow;o&&o.isActive&&(t.hidden?o.clear():o.set())})}(document,jQuery),function(t,e){"use strict";var n=function(){for(var e=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],n={},o=0;o<e.length;o++){var i=e[o];if(i&&i[1]in t){for(var a=0;a<i.length;a++)n[e[0][a]]=i[a];return n}}return!1}();if(n){var o={request:function(e){e=e||t.documentElement,e[n.requestFullscreen](e.ALLOW_KEYBOARD_INPUT)},exit:function(){t[n.exitFullscreen]()},toggle:function(e){e=e||t.documentElement,this.isFullscreen()?this.exit():this.request(e)},isFullscreen:function(){return Boolean(t[n.fullscreenElement])},enabled:function(){return Boolean(t[n.fullscreenEnabled])}};e.extend(!0,e.fancybox.defaults,{btnTpl:{fullScreen:'<button data-fancybox-fullscreen class="fancybox-button fancybox-button--fsenter" title="{{FULL_SCREEN}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"/></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5 16h3v3h2v-5H5zm3-8H5v2h5V5H8zm6 11h2v-3h3v-2h-5zm2-11V5h-2v5h5V8z"/></svg></button>'},fullScreen:{autoStart:!1}}),e(t).on(n.fullscreenchange,function(){var t=o.isFullscreen(),n=e.fancybox.getInstance();n&&(n.current&&"image"===n.current.type&&n.isAnimating&&(n.isAnimating=!1,n.update(!0,!0,0),n.isComplete||n.complete()),n.trigger("onFullscreenChange",t),n.$refs.container.toggleClass("fancybox-is-fullscreen",t),n.$refs.toolbar.find("[data-fancybox-fullscreen]").toggleClass("fancybox-button--fsenter",!t).toggleClass("fancybox-button--fsexit",t))})}e(t).on({"onInit.fb":function(t,e){var i;if(!n)return void e.$refs.toolbar.find("[data-fancybox-fullscreen]").remove();e&&e.group[e.currIndex].opts.fullScreen?(i=e.$refs.container,i.on("click.fb-fullscreen","[data-fancybox-fullscreen]",function(t){t.stopPropagation(),t.preventDefault(),o.toggle()}),e.opts.fullScreen&&!0===e.opts.fullScreen.autoStart&&o.request(),e.FullScreen=o):e&&e.$refs.toolbar.find("[data-fancybox-fullscreen]").hide()},"afterKeydown.fb":function(t,e,n,o,i){e&&e.FullScreen&&70===i&&(o.preventDefault(),e.FullScreen.toggle())},"beforeClose.fb":function(t,e){e&&e.FullScreen&&e.$refs.container.hasClass("fancybox-is-fullscreen")&&o.exit()}})}(document,jQuery),function(t,e){"use strict";var n="fancybox-thumbs";e.fancybox.defaults=e.extend(!0,{btnTpl:{thumbs:'<button data-fancybox-thumbs class="fancybox-button fancybox-button--thumbs" title="{{THUMBS}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14.59 14.59h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76H5.65V5.65z"/></svg></button>'},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"}},e.fancybox.defaults);var o=function(t){this.init(t)};e.extend(o.prototype,{$button:null,$grid:null,$list:null,isVisible:!1,isActive:!1,init:function(t){var e=this,n=t.group,o=0;e.instance=t,e.opts=n[t.currIndex].opts.thumbs,t.Thumbs=e,e.$button=t.$refs.toolbar.find("[data-fancybox-thumbs]");for(var i=0,a=n.length;i<a&&(n[i].thumb&&o++,!(o>1));i++);o>1&&e.opts?(e.$button.removeAttr("style").on("click",function(){e.toggle()}),e.isActive=!0):e.$button.hide()},create:function(){var t,o=this,i=o.instance,a=o.opts.parentEl,s=[];o.$grid||(o.$grid=e('<div class="'+n+" "+n+"-"+o.opts.axis+'"></div>').appendTo(i.$refs.container.find(a).addBack().filter(a)),o.$grid.on("click","a",function(){i.jumpTo(e(this).attr("data-index"))})),o.$list||(o.$list=e('<div class="'+n+'__list">').appendTo(o.$grid)),e.each(i.group,function(e,n){t=n.thumb,t||"image"!==n.type||(t=n.src),s.push('<a href="javascript:;" tabindex="0" data-index="'+e+'"'+(t&&t.length?' style="background-image:url('+t+')"':'class="fancybox-thumbs-missing"')+"></a>")}),o.$list[0].innerHTML=s.join(""),"x"===o.opts.axis&&o.$list.width(parseInt(o.$grid.css("padding-right"),10)+i.group.length*o.$list.children().eq(0).outerWidth(!0))},focus:function(t){var e,n,o=this,i=o.$list,a=o.$grid;o.instance.current&&(e=i.children().removeClass("fancybox-thumbs-active").filter('[data-index="'+o.instance.current.index+'"]').addClass("fancybox-thumbs-active"),n=e.position(),"y"===o.opts.axis&&(n.top<0||n.top>i.height()-e.outerHeight())?i.stop().animate({scrollTop:i.scrollTop()+n.top},t):"x"===o.opts.axis&&(n.left<a.scrollLeft()||n.left>a.scrollLeft()+(a.width()-e.outerWidth()))&&i.parent().stop().animate({scrollLeft:n.left},t))},update:function(){var t=this;t.instance.$refs.container.toggleClass("fancybox-show-thumbs",this.isVisible),t.isVisible?(t.$grid||t.create(),t.instance.trigger("onThumbsShow"),t.focus(0)):t.$grid&&t.instance.trigger("onThumbsHide"),t.instance.update()},hide:function(){this.isVisible=!1,this.update()},show:function(){this.isVisible=!0,this.update()},toggle:function(){this.isVisible=!this.isVisible,this.update()}}),e(t).on({"onInit.fb":function(t,e){var n;e&&!e.Thumbs&&(n=new o(e),n.isActive&&!0===n.opts.autoStart&&n.show())},"beforeShow.fb":function(t,e,n,o){var i=e&&e.Thumbs;i&&i.isVisible&&i.focus(o?0:250)},"afterKeydown.fb":function(t,e,n,o,i){var a=e&&e.Thumbs;a&&a.isActive&&71===i&&(o.preventDefault(),a.toggle())},"beforeClose.fb":function(t,e){var n=e&&e.Thumbs;n&&n.isVisible&&!1!==n.opts.hideOnClose&&n.$grid.hide()}})}(document,jQuery),function(t,e){"use strict";function n(t){var e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})}e.extend(!0,e.fancybox.defaults,{btnTpl:{share:'<button data-fancybox-share class="fancybox-button fancybox-button--share" title="{{SHARE}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M2.55 19c1.4-8.4 9.1-9.8 11.9-9.8V5l7 7-7 6.3v-3.5c-2.8 0-10.5 2.1-11.9 4.2z"/></svg></button>'},share:{url:function(t,e){return!t.currentHash&&"inline"!==e.type&&"html"!==e.type&&(e.origSrc||e.src)||window.location},
vendor: 2,330 bytes, lines 20-21
20
21tpl:'<div class="fancybox-share"><h1>{{SHARE}}</h1><p><a class="fancybox-share__button fancybox-share__button--fb" href="https://www.facebook.com/sharer/sharer.php?u={{url}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m287 456v-299c0-21 6-35 35-35h38v-63c-7-1-29-3-55-3-54 0-91 33-91 94v306m143-254h-205v72h196" /></svg><span>Facebook</span></a><a class="fancybox-share__button fancybox-share__button--tw" href="https://twitter.com/intent/tweet?url={{url}}&text={{descr}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m456 133c-14 7-31 11-47 13 17-10 30-27 37-46-15 10-34 16-52 20-61-62-157-7-141 75-68-3-129-35-169-85-22 37-11 86 26 109-13 0-26-4-37-9 0 39 28 72 65 80-12 3-25 4-37 2 10 33 41 57 77 57-42 30-77 38-122 34 170 111 378-32 359-208 16-11 30-25 41-42z" /></svg><span>Twitter</span></a><a class="fancybox-share__button fancybox-share__button--pt" href="https://www.pinterest.com/pin/create/button/?url={{url}}&description={{descr}}&media={{media}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m265 56c-109 0-164 78-164 144 0 39 15 74 47 87 5 2 10 0 12-5l4-19c2-6 1-8-3-13-9-11-15-25-15-45 0-58 43-110 113-110 62 0 96 38 96 88 0 67-30 122-73 122-24 0-42-19-36-44 6-29 20-60 20-81 0-19-10-35-31-35-25 0-44 26-44 60 0 21 7 36 7 36l-30 125c-8 37-1 83 0 87 0 3 4 4 5 2 2-3 32-39 42-75l16-64c8 16 31 29 56 29 74 0 124-67 124-157 0-69-58-132-146-132z" fill="#fff"/></svg><span>Pinterest</span></a></p><p><input class="fancybox-share__input" type="text" value="{{url_raw}}" onclick="select()" /></p></div>'}}),e(t).on("click","[data-fancybox-share]",function(){var t,o,i=e.fancybox.getInstance(),a=i.current||null;a&&("function"===e.type(a.opts.share.url)&&(t=a.opts.share.url.apply(a,[i,a])),o=a.opts.share.tpl.replace(/\{\{media\}\}/g,"image"===a.type?encodeURIComponent(a.src):"").replace(/\{\{url\}\}/g,encodeURIComponent(t)).replace(/\{\{url_raw\}\}/g,n(t)).replace(/\{\{descr\}\}/g,i.$caption?encodeURIComponent(i.$caption.text()):""),e.fancybox.open({src:i.translate(i,o),type:"html",opts:{touch:!1,animationEffect:!1,afterLoad:function(t,e){i.$refs.container.one("beforeClose.fb",function(){t.close(null,0)}),e.$content.find(".fancybox-share__button").click(function(){return window.open(this.href,"Share","width=550, height=450"),!1})}
21,mobile:{autoFocus:!1}}}))})}(document,jQuery),function(t,e,n){"use strict";function o(){var e=t.location.hash.substr(1),n=e.split("-"),o=n.length>1&&/^\+?\d+$/.test(n[n.length-1])?parseInt(n.pop(-1),10)||1:1,i=n.join("-");return{hash:e,index:o<1?1:o,gallery:i}}function i(t){""!==t.gallery&&n("[data-fancybox='"+n.escapeSelector(t.gallery)+"']").eq(t.index-1).focus().trigger("click.fb-start")}function a(t){var e,n;return!!t&&(e=t.current?t.current.opts:t.opts,""!==(n=e.hash||(e.$orig?e.$orig.data("fancybox")||e.$orig.data("fancybox-trigger"):""))&&n)}n.escapeSelector||(n.escapeSelector=function(t){return(t+"").replace(/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t})}),n(function(){!1!==n.fancybox.defaults.hash&&(n(e).on({"onInit.fb":function(t,e){var n,i;!1!==e.group[e.currIndex].opts.hash&&(n=o(),(i=a(e))&&n.gallery&&i==n.gallery&&(e.currIndex=n.index-1))},"beforeShow.fb":function(n,o,i,s){var r;i&&!1!==i.opts.hash&&(r=a(o))&&(o.currentHash=r+(o.group.length>1?"-"+(i.index+1):""),t.location.hash!=="#"+o.currentHash&&(s&&!o.origHash&&(o.origHash=t.location.hash),o.hashTimer&&clearTimeout(o.hashTimer),o.hashTimer=setTimeout(function(){"replaceState"in t.history?(t.history[s?"pushState":"replaceState"]({},e.title,t.location.pathname+t.location.search+"#"+o.currentHash),s&&(o.hasCreatedHistory=!0)):t.location.hash=o.currentHash,o.hashTimer=null},300)))},"beforeClose.fb":function(n,o,i){i&&!1!==i.opts.hash&&(clearTimeout(o.hashTimer),o.currentHash&&o.hasCreatedHistory?t.history.back():o.currentHash&&("replaceState"in t.history?t.history.replaceState({},e.title,t.location.pathname+t.location.search+(o.origHash||"")):t.location.hash=o.origHash),o.currentHash=null)}}),n(t).on("hashchange.fb",function(){var t=o(),e=null;n.each(n(".fancybox-container").get().reverse(),function(t,o){var i=n(o).data("FancyBox");if(i&&i.currentHash)return e=i,!1}),e?e.currentHash===t.gallery+"-"+t.index||1===t.index&&e.currentHash==t.gallery||(e.currentHash=null,e.close()):""!==t.gallery&&i(t)}),setTimeout(function(){n.fancybox.getInstance()||i(o())},50))})}(window,document,jQuery),function(t,e){"use strict";var n=(new Date).getTime();e(t).on({"onInit.fb":function(t,e,o){e.$refs.stage.on("mousewheel DOMMouseScroll wheel MozMousePixelScroll",function(t){var o=e.current,i=(new Date).getTime();e.group.length<2||!1===o.opts.wheel||"auto"===o.opts.wheel&&"image"!==o.type||(t.preventDefault(),t.stopPropagation(),o.$slide.hasClass("fancybox-animated")||(t=t.originalEvent||t,i-n<250||(n=i,e[(-t.deltaY||-t.deltaX||t.wheelDelta||-t.detail)<0?"next":"previous"]())))})}})}(document,jQuery);
22/* End */
23;
24; /* Start:"a:4:{s:4:"full";s:65:"/local/templates/ntk_new/js/jquery.maskedinput.js?174016440011290";s:6:"source";s:49:"/local/templates/ntk_new/js/jquery.maskedinput.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
25(function (factory) {
26    if (typeof define === 'function' && define.amd) {
27        // AMD. Register as an anonymous module.
28        define(['jquery'], factory);
29    } else if (typeof exports === 'object') {
30        // Node/CommonJS
31        factory(require('jquery'));
32    } else {
33        // Browser globals
34        factory(jQuery);
35    }
36}(function ($) {
37
38var ua = navigator.userAgent,
39	iPhone = /iphone/i.test(ua),
40	chrome = /chrome/i.test(ua),
41	android = /android/i.test(ua),
42	caretTimeoutId;
43
44$.mask = {
45	//Predefined character definitions
46	definitions: {
47		'9': "[0-9]",
48		'a': "[A-Za-z]",
49		'*': "[A-Za-z0-9]"
50	},
51	autoclear: true,
52	dataName: "rawMaskFn",
53	placeholder: '_'
54};
55
56$.fn.extend({
57	//Helper Function for Caret positioning
58	caret: function(begin, end) {
59		var range;
60
61		if (this.length === 0 || this.is(":hidden")) {
62			return;
63		}
64
65		if (typeof begin == 'number') {
66			end = (typeof end === 'number') ? end : begin;
67			return this.each(function() {
68				if (this.setSelectionRange) {
69					this.setSelectionRange(begin, end);
70				} else if (this.createTextRange) {
71					range = this.createTextRange();
72					range.collapse(true);
73					range.moveEnd('character', end);
74					range.moveStart('character', begin);
75					range.select();					
76				}
77			});
78		} else {
79			if (this[0].setSelectionRange) {
80				begin = this[0].selectionStart;
81				end = this[0].selectionEnd;
82			} else if (document.selection && document.selection.createRange) {
83				range = document.selection.createRange();
84				begin = 0 - range.duplicate().moveStart('character', -100000);
85				end = begin + range.text.length;
86			}			
87			return { begin: begin, end: end };
88		}
89	},
90	unmask: function() {
91		return this.trigger("unmask");
92	},
93	mask: function(mask, settings) {
94		var input,
95			defs,
96			tests,
97			partialPosition,
98			firstNonMaskPos,
99            lastRequiredNonMaskPos,
100            len,
101            oldVal;
102
103		if (!mask && this.length > 0) {
104			input = $(this[0]);
105            var fn = input.data($.mask.dataName)
106			return fn?fn():undefined;
107		}
108
109		settings = $.extend({
110			autoclear: $.mask.autoclear,
111			placeholder: $.mask.placeholder, // Load default placeholder
112			completed: null
113		}, settings);
114
115
116		defs = $.mask.definitions;
117		tests = [];
118		partialPosition = len = mask.length;
119		firstNonMaskPos = null;
120
121		$.each(mask.split(""), function(i, c) {
122			if (c == '?') {
123				len--;
124				partialPosition = i;
125			} else if (defs[c]) {
126				tests.push(new RegExp(defs[c]));
127				if (firstNonMaskPos === null) {
128					firstNonMaskPos = tests.length - 1;
129				}
130                if(i < partialPosition){
131                    lastRequiredNonMaskPos = tests.length - 1;
132                }
133			} else {
134				tests.push(null);
135			}
136		});
137
138		return this.trigger("unmask").each(function() {
139			var input = $(this),
140				buffer = $.map(
141    				mask.split(""),
142    				function(c, i) {
143    					if (c != '?') {
144    						return defs[c] ? getPlaceholder(i) : c;
145    					}
146    				}),
147				defaultBuffer = buffer.join(''),
148				focusText = input.val();
149
150            function tryFireCompleted(){
151                if (!settings.completed) {
152                    return;
153                }
154
155                for (var i = firstNonMaskPos; i <= lastRequiredNonMaskPos; i++) {
156                    if (tests[i] && buffer[i] === getPlaceholder(i)) {
157                        return;
158                    }
159                }
160                settings.completed.call(input);
161            }
162
163            function getPlaceholder(i){
164                if(i < settings.placeholder.length)
165                    return settings.placeholder.charAt(i);
166                return settings.placeholder.charAt(0);
167            }
168
169			function seekNext(pos) {
170				while (++pos < len && !tests[pos]);
171				return pos;
172			}
173
174			function seekPrev(pos) {
175				while (--pos >= 0 && !tests[pos]);
176				return pos;
177			}
178
179			function shiftL(begin,end) {
180				var i,
181					j;
182
183				if (begin<0) {
184					return;
185				}
186
187				for (i = begin, j = seekNext(end); i < len; i++) {
188					if (tests[i]) {
189						if (j < len && tests[i].test(buffer[j])) {
190							buffer[i] = buffer[j];
191							buffer[j] = getPlaceholder(j);
192						} else {
193							break;
194						}
195
196						j = seekNext(j);
197					}
198				}
199				writeBuffer();
200				input.caret(Math.max(firstNonMaskPos, begin));
201			}
202
203			function shiftR(pos) {
204				var i,
205					c,
206					j,
207					t;
208
209				for (i = pos, c = getPlaceholder(pos); i < len; i++) {
210					if (tests[i]) {
211						j = seekNext(i);
212						t = buffer[i];
213						buffer[i] = c;
214						if (j < len && tests[j].test(t)) {
215							c = t;
216						} else {
217							break;
218						}
219					}
220				}
221			}
222
223            function androidInputEvent(e) {
224                var curVal = input.val();
225                var pos = input.caret();
226                if (oldVal && oldVal.length && oldVal.length > curVal.length ) {
227                    // a deletion or backspace happened
228                    checkVal(true);
229                    while (pos.begin > 0 && !tests[pos.begin-1])
230                          pos.begin--;
231                    if (pos.begin === 0)
232                    {
233                       while (pos.begin < firstNonMaskPos && !tests[pos.begin])
234                          pos.begin++;
235                    }
236                    input.caret(pos.begin,pos.begin);
237                } else {
238                    var pos2 = checkVal(true);
239                    while (pos.begin < len && !tests[pos.begin])
240                          pos.begin++;
241
242                    input.caret(pos.begin,pos.begin);
243                }
244
245                tryFireCompleted();
246            }
247
248            function blurEvent(e) {
249                checkVal();
250
251                if (input.val() != focusText)
252                    input.change();
253            }
254
255			function keydownEvent(e) {
256                if (input.prop("readonly")){
257                    return;
258                }
259
260				var k = e.which || e.keyCode,
261					pos,
262					begin,
263					end;
264                    oldVal = input.val();
265				//backspace, delete, and escape get special treatment
266				if (k === 8 || k === 46 || (iPhone && k === 127)) {
267					pos = input.caret();
268					begin = pos.begin;
269					end = pos.end;
270
271					if (end - begin === 0) {
272						begin=k!==46?seekPrev(begin):(end=seekNext(begin-1));
273						end=k===46?seekNext(end):end;
274					}
275					clearBuffer(begin, end);
276					shiftL(begin, end - 1);
277
278					e.preventDefault();
279				} else if( k === 13 ) { // enter
280					blurEvent.call(this, e);
281				} else if (k === 27) { // escape
282					input.val(focusText);
283					input.caret(0, checkVal());
284					e.preventDefault();
285				}
286			}
287
288			function keypressEvent(e) {
289                if (input.prop("readonly")){
290                    return;
291                }
292
293				var k = e.which || e.keyCode,
294					pos = input.caret(),
295					p,
296					c,
297					next;
298
299				if (e.ctrlKey || e.altKey || e.metaKey || k < 32) {//Ignore
300					return;
301				} else if ( k && k !== 13 ) {
302					if (pos.end - pos.begin !== 0){
303						clearBuffer(pos.begin, pos.end);
304						shiftL(pos.begin, pos.end-1);
305					}
306
307					p = seekNext(pos.begin - 1);
308					if (p < len) {
309						c = String.fromCharCode(k);
310						if (tests[p].test(c)) {
311							shiftR(p);
312
313							buffer[p] = c;
314							writeBuffer();
315							next = seekNext(p);
316
317							if(android){
318								//Path for CSP Violation on FireFox OS 1.1
319								var proxy = function() {
320									$.proxy($.fn.caret,input,next)();
321								};
322
323								setTimeout(proxy,0);
324							}else{
325								input.caret(next);
326							}
327                            if(pos.begin <= lastRequiredNonMaskPos){
328		                         tryFireCompleted();
329                             }
330						}
331					}
332					e.preventDefault();
333				}
334			}
335
336			function clearBuffer(start, end) {
337				var i;
338				for (i = start; i < end && i < len; i++) {
339					if (tests[i]) {
340						buffer[i] = getPlaceholder(i);
341					}
342				}
343			}
344
345			function writeBuffer() { input.val(buffer.join('')); }
346
347			function checkVal(allow) {
348				//try to place characters where they belong
349				var test = input.val(),
350					lastMatch = -1,
351					i,
352					c,
353					pos;
354
355				for (i = 0, pos = 0; i < len; i++) {
356					if (tests[i]) {
357						buffer[i] = getPlaceholder(i);
358						while (pos++ < test.length) {
359							c = test.charAt(pos - 1);
360							if (tests[i].test(c)) {
361								buffer[i] = c;
362								lastMatch = i;
363								break;
364							}
365						}
366						if (pos > test.length) {
367							clearBuffer(i + 1, len);
368							break;
369						}
370					} else {
371                        if (buffer[i] === test.charAt(pos)) {
372                            pos++;
373                        }
374                        if( i < partialPosition){
375                            lastMatch = i;
376                        }
377					}
378				}
379				if (allow) {
380					writeBuffer();
381				} else if (lastMatch + 1 < partialPosition) {
382					if (settings.autoclear || buffer.join('') === defaultBuffer) {
383						// Invalid value. Remove it and replace it with the
384						// mask, which is the default behavior.
385						if(input.val()) input.val("");
386						clearBuffer(0, len);
387					} else {
388						// Invalid value, but we opt to show the value to the
389						// user and allow them to correct their mistake.
390						writeBuffer();
391					}
392				} else {
393					writeBuffer();
394					input.val(input.val().substring(0, lastMatch + 1));
395				}
396				return (partialPosition ? i : firstNonMaskPos);
vendor: 43,149 bytes, lines 397-466
397			}
398
399			input.data($.mask.dataName,function(){
400				return $.map(buffer, function(c, i) {
401					return tests[i]&&c!=getPlaceholder(i) ? c : null;
402				}).join('');
403			});
404
405
406			input
407				.one("unmask", function() {
408					input
409						.off(".mask")
410						.removeData($.mask.dataName);
411				})
412				.on("focus.mask", function() {
413                    if (input.prop("readonly")){
414                        return;
415                    }
416
417					clearTimeout(caretTimeoutId);
418					var pos;
419
420					focusText = input.val();
421
422					pos = checkVal();
423
424					caretTimeoutId = setTimeout(function(){
425                        if(input.get(0) !== document.activeElement){
426                            return;
427                        }
428						writeBuffer();
429						if (pos == mask.replace("?","").length) {
430							input.caret(0, pos);
431						} else {							
432							input.caret(pos);
433						}
434					}, 10);
435				})
436				.on("blur.mask", blurEvent)
437				.on("keydown.mask", keydownEvent)
438				.on("keypress.mask", keypressEvent)
439				.on("input.mask paste.mask", function() {
440                    if (input.prop("readonly")){
441                        return;
442                    }
443
444					setTimeout(function() {
445						var pos=checkVal(true);
446						input.caret(pos);						
447                        tryFireCompleted();
448					}, 0);
449				});
450                if (chrome && android)
451                {
452                    input
453                        .off('input.mask')
454                        .on('input.mask', androidInputEvent);
455                }
456				checkVal(); //Perform initial check for existing values
457		});
458	}
459});
460}));
461
462/* End */
463;
464; /* Start:"a:4:{s:4:"full";s:70:"/local/templates/ntk_new/lib/jquery.suggestions.min.js?171977400059051";s:6:"source";s:54:"/local/templates/ntk_new/lib/jquery.suggestions.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
465!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):t(e.jQuery)}(this,function(e){"use strict";function t(e,t){return function(n,i){var s,o=[];return t(i)&&(s=k.splitTokens(k.split(n,e)),y.each(i,function(t,i){var a=t.value;if(k.stringEncloses(n,a))return!1;var r=k.splitTokens(k.split(a,e));0===y.minus(s,r).length&&o.push(i)})),1===o.length?o[0]:-1}}function n(e,t){var n=e.data&&e.data[t];return n&&new RegExp("^"+k.escapeRegExChars(n)+"(["+w+"]|$)","i").test(e.value)}function i(e,t){var n=/<strong>/;return n.test(t)&&!n.test(e)?t:e}function s(e,t,n,s,o){var a=this;return i(a.highlightMatches(e,n,s,o),a.highlightMatches(t,n,s,o))}function o(e){this.urlSuffix=e.toLowerCase(),this.noSuggestionsHint="Неизвестное значение",this.matchers=[L.matchByNormalizedQuery(),L.matchByWords()]}function a(t,n){var i=this;i.element=t,i.el=e(t),i.suggestions=[],i.badQueries=[],i.selectedIndex=-1,i.currentValue=i.element.value,i.intervalId=0,i.cachedResponse={},i.enrichmentCache={},i.currentRequest=null,i.inputPhase=e.Deferred(),i.fetchPhase=e.Deferred(),i.enrichPhase=e.Deferred(),i.onChangeTimeout=null,i.triggering={},i.$wrapper=null,i.options=e.extend({},B,n),i.classes=x,i.disabled=!1,i.selection=null,i.$viewport=e(window),i.$body=e(document.body),i.type=null,i.status={},i.setupElement(),i.initializer=e.Deferred(),i.el.is(":visible")?i.initializer.resolve():i.deferInitialization(),i.initializer.done(e.proxy(i.initialize,i))}function r(){j.each(Q,function(e){e.abort()}),Q={}}function l(){K=null,B.geoLocation=G}function u(t){return e.map(t,function(e){var t=j.escapeHtml(e.text);return t&&e.matched&&(t="<strong>"+t+"</strong>"),t}).join("")}function c(t,n){var i=t.split(", ");return 1===i.length?t:e.map(i,function(e){return'<span class="'+n+'">'+e+"</span>"}).join(", ")}function d(t,n){var i=!1;return e.each(t,function(e,t){if(i=t.value==n.value&&t!=n)return!1}),i}function f(e,t){var n=t.selection,i=n&&n.data&&t.bounds;return i&&y.each(t.bounds.all,function(t,s){return i=n.data[t]===e.data[t]}),i}function p(e){var t=e.replace(/^(\d{2})(\d*?)(0+)$/g,"$1$2"),n=t.length,i=-1;return n<=2?i=2:n>2&&n<=5?i=5:n>5&&n<=8?i=8:n>8&&n<=11?i=11:n>11&&n<=15?i=15:n>15&&(i=19),k.padEnd(t,i,"0")}function h(e){this.plan=e.status.plan,this.isMobile=e.isMobile;var t=e.getContainer();this.element=pe.selectByClass(x.promo,t)}function g(){new h(this).show()}e=e&&e.hasOwnProperty("default")?e.default:e;var m={isArray:function(e){return Array.isArray(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.call(e)},isEmptyObject:function(e){return 0===Object.keys(e).length&&e.constructor===Object},isPlainObject:function(e){return void 0!==e&&"object"==typeof e&&null!==e&&!e.nodeType&&e!==e.window&&!(e.constructor&&!Object.prototype.hasOwnProperty.call(e.constructor.prototype,"isPrototypeOf"))}},y={compact:function(e){return e.filter(function(e){return!!e})},each:function(e,t){if(Array.isArray(e))return void e.some(function(e,n){return!1===t(e,n)});Object.keys(e).some(function(n){var i=e[n];return!1===t(i,n)})},intersect:function(e,t){var n=[];return Array.isArray(e)&&Array.isArray(t)?e.filter(function(e){return-1!==t.indexOf(e)}):n},minus:function(e,t){return t&&0!==t.length?e.filter(function(e){return-1===t.indexOf(e)}):e},makeArray:function(e){return m.isArray(e)?Array.prototype.slice.call(e):[e]},minusWithPartialMatching:function(e,t){return t&&0!==t.length?e.filter(function(e){return!t.some(function(t){return 0===t.indexOf(e)})}):e},slice:function(e,t){return Array.prototype.slice.call(e,t)}},v={delay:function(e,t){return setTimeout(e,t||0)}},b={areSame:function e(t,n){var i=!0;return typeof t==typeof n&&("object"==typeof t&&null!=t&&null!=n?(y.each(t,function(t,s){return i=e(t,n[s])}),i):t===n)},assign:function(e,t){if("function"==typeof Object.assign)return Object.assign.apply(null,arguments);if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var n=Object(e),i=1;i<arguments.length;i++){var s=arguments[i];if(null!=s)for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&(n[o]=s[o])}return n},clone:function(e){return JSON.parse(JSON.stringify(e))},compact:function(e){var t=b.clone(e);return y.each(t,function(e,n){null!==e&&void 0!==e&&""!==e||delete t[n]}),t},fieldsAreNotEmpty:function(e,t){if(!m.isPlainObject(e))return!1;var n=!0;return y.each(t,function(t,i){return n=!!e[t]}),n},getDeepValue:function e(t,n){var i=n.split("."),s=i.shift();return t&&(i.length?e(t[s],i.join(".")):t[s])},indexObjectsById:function(e,t,n){var i={};return y.each(e,function(e,s){var o=e[t],a={};n&&(a[n]=s),i[o]=b.assign(a,e)}),i}},_={ENTER:13,ESC:27,TAB:9,SPACE:32,UP:38,DOWN:40},x={hint:"suggestions-hint",mobile:"suggestions-mobile",nowrap:"suggestions-nowrap",promo:"suggestions-promo",promo_desktop:"suggestions-promo-desktop",selected:"suggestions-selected",suggestion:"suggestions-suggestion",subtext:"suggestions-subtext",subtext_inline:"suggestions-subtext suggestions-subtext_inline",subtext_delimiter:"suggestions-subtext-delimiter",subtext_label:"suggestions-subtext suggestions-subtext_label",removeConstraint:"suggestions-remove",value:"suggestions-value"},S=".suggestions",w="\\s\"'~\\*\\.,:\\|\\[\\]\\(\\)\\{\\}<>№",C=new RegExp("["+w+"]+","g"),E=new RegExp("[\\-\\+\\\\\\?!@#$%^&]+","g"),k={escapeHtml:function(e){var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return e&&y.each(t,function(t,n){e=e.replace(new RegExp(n,"g"),t)}),e},escapeRegExChars:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},formatToken:function(e){return e&&e.toLowerCase().replace(/[ёЁ]/g,"е")},getWordExtractorRegExp:function(){return new RegExp("([^"+w+"]*)(["+w+"]*)","g")},normalize:function(e,t){return k.split(e,t).join(" ")},padEnd:function(e,t,n){return String.prototype.padEnd?e.padEnd(t,n):(t>>=0,n=String(void 0!==n?n:" "),e.length>t?String(e):(t-=e.length,t>n.length&&(n+=n.repeat(t/n.length)),String(e)+n.slice(0,t)))},split:function(e,t){e=e.toLowerCase(),e=e.replace("ё","е").replace(/(\d+)([а-я]{2,})/g,"$1 $2").replace(/([а-я]+)(\d+)/g,"$1 $2");var n=y.compact(e.split(C)),i=n.pop(),s=y.minus(n,t);return s.push(i),s},splitTokens:function(e){var t=[];return y.each(e,function(e,n){var i=e.split(E);t=t.concat(y.compact(i))}),t},stringEncloses:function(e,t){return e.length>t.length&&-1!==e.toLowerCase().indexOf(t.toLowerCase())},tokenize:function(e,t){var n=y.compact(k.formatToken(e).split(C)),i=y.minus(n,t),s=y.minus(n,i);return n=k.withSubTokens(i.concat(s))},withSubTokens:function(e){var t=[];return y.each(e,function(e,n){var i=e.split(E);t.push(e),i.length>1&&(t=t.concat(y.compact(i)))}),t}},P={Deferred:function(){return e.Deferred()},ajax:function(t){return e.ajax(t)},extend:function(){return e.extend.apply(null,arguments)},isJqObject:function(t){return t instanceof e},param:function(t){return e.param(t)},proxy:function(t,n){return e.proxy(t,n)},select:function(t){return e(t)},supportsCors:function(){return e.support.cors}},T={getDefaultType:function(){return P.supportsCors()?"POST":"GET"},getDefaultContentType:function(){return P.supportsCors()?"application/json":"application/x-www-form-urlencoded"},fixURLProtocol:function(e){return P.supportsCors()?e:e.replace(/^https?:/,location.protocol)},addUrlParams:function(e,t){return e+(/\?/.test(e)?"&":"?")+P.param(t)},serialize:function(e){return P.supportsCors()?JSON.stringify(e,function(e,t){return null===t?void 0:t}):(e=b.compact(e),P.param(e,!0))}},V=function(){var e=0;return function(t){return(t||"")+ ++e}}(),j={escapeRegExChars:k.escapeRegExChars,escapeHtml:k.escapeHtml,formatToken:k.formatToken,normalize:k.normalize,reWordExtractor:k.getWordExtractorRegExp,stringEncloses:k.stringEncloses,addUrlParams:T.addUrlParams,getDefaultContentType:T.getDefaultContentType,getDefaultType:T.getDefaultType,fixURLProtocol:T.fixURLProtocol,serialize:T.serialize,arrayMinus:y.minus,arrayMinusWithPartialMatching:y.minusWithPartialMatching,arraysIntersection:y.intersect,compact:y.compact,each:y.each,makeArray:y.makeArray,slice:y.slice,delay:v.delay,areSame:b.areSame,compactObject:b.compact,getDeepValue:b.getDeepValue,fieldsNotEmpty:b.fieldsAreNotEmpty,indexBy:b.indexObjectsById,isArray:m.isArray,isEmptyObject:m.isEmptyObject,isFunction:m.isFunction,isPlainObject:m.isPlainObject,uniqueId:V},B={autoSelectFirst:!1,serviceUrl:"https://suggestions.dadata.ru/suggestions/api/4_1/rs",url:null,onSearchStart:e.noop,onSearchComplete:e.noop,onSearchError:e.noop,onSuggestionsFetch:null,onSelect:null,onSelectNothing:null,onInvalidateSelection:null,minChars:1,deferRequestBy:100,enrichmentEnabled:!0,params:{},paramName:"query",timeout:3e3,formatResult:null,formatSelected:null,noCache:!1,containerClass:"suggestions-suggestions",tabDisabled:!1,triggerSelectOnSpace:!1,triggerSelectOnEnter:!0,triggerSelectOnBlur:!0,preventBadQueries:!1,hint:"Выберите вариант или продолжите ввод",noSuggestionsHint:null,type:null,requestMode:"suggest",count:5,$helpers:null,headers:null,scrollOnFocus:!0,mobileWidth:980,initializeInterval:100},O=function(e){return function(t){if(0===t.length)return!1;if(1===t.length)return!0;var n=e(t[0].value);return 0===t.filter(function(t){return 0!==e(t.value).indexOf(n)}).length}}(function(e){return e}),L={matchByNormalizedQuery:function(e){return function(t,n){var i=k.normalize(t,e),s=[];return y.each(n,function(n,o){var a=n.value.toLowerCase();return!k.stringEncloses(t,a)&&(!(a.indexOf(i)>0)&&void(i===k.normalize(a,e)&&s.push(o)))}),1===s.length?s[0]:-1}},matchByWords:function(e){return t(e,O)},matchByWordsAddress:function(e){return t(e,O)},matchByFields:function(e){return function(t,n){var i=k.splitTokens(k.split(t)),s=[];return 1===n.length&&(e&&y.each(e,function(e,t){var i=b.getDeepValue(n[0],t),o=i&&k.splitTokens(k.split(i,e));o&&o.length&&(s=s.concat(o))}),0===y.minusWithPartialMatching(i,s).length)?0:-1}}},R=["ао","аобл","дом","респ","а/я","аал","автодорога","аллея","арбан","аул","б-р","берег","бугор","вал","вл","волость","въезд","высел","г","городок","гск","д","двлд","днп","дор","дп","ж/д_будка","ж/д_казарм","ж/д_оп","ж/д_платф","ж/д_пост","ж/д_рзд","ж/д_ст","жилзона","жилрайон","жт","заезд","заимка","зона","к","казарма","канал","кв","кв-л","км","кольцо","комн","кордон","коса","кп","край","линия","лпх","м","массив","местность","мкр","мост","н/п","наб","нп","обл","округ","остров","оф","п","п/о","п/р","п/ст","парк","пгт","пер","переезд","пл","пл-ка","платф","погост","полустанок","починок","пр-кт","проезд","промзона","просек","просека","проселок","проток","протока","проулок","р-н","рзд","россия","рп","ряды","с","с/а","с/мо","с/о","с/п","с/с","сад","сквер","сл","снт","спуск","ст","ст-ца","стр","тер","тракт","туп","у","ул","уч-к","ф/х","ферма","х","ш","бульвар","владение","выселки","гаражно-строительный","город","деревня","домовладение","дорога","квартал","километр","комната","корпус","литер","леспромхоз","местечко","микрорайон","набережная","область","переулок","платформа","площадка","площадь","поселение","поселок","проспект","разъезд","район","республика","село","сельсовет","слобода","сооружение","станица","станция","строение","территория","тупик","улица","улус","участок","хутор","шоссе"],D=[{id:"kladr_id",fields:["kladr_id"],forBounds:!1,forLocations:!0},{id:"postal_code",fields:["postal_code"],forBounds:!1,forLocations:!0},{id:"country",fields:["country"],forBounds:!1,forLocations:!0},{id:"region_fias_id",fields:["region_fias_id"],forBounds:!1,forLocations:!0},{id:"region_type_full",fields:["region_type_full"],forBounds:!1,forLocations:!0,kladrFormat:{digits:2,zeros:11},fiasType:"region_fias_id"},{id:"region",fields:["region","region_type","region_type_full","region_with_type"],forBounds:!0,forLocations:!0,kladrFormat:{digits:2,zeros:11},fiasType:"region_fias_id"},{id:"area_fias_id",fields:["area_fias_id"],forBounds:!1,forLocations:!0},{id:"area_type_full",fields:["area_type_full"],forBounds:!1,forLocations:!0,kladrFormat:{digits:5,zeros:8},fiasType:"area_fias_id"},{id:"area",fields:["area","area_type","area_type_full","area_with_type"],forBounds:!0,forLocations:!0,kladrFormat:{digits:5,zeros:8},fiasType:"area_fias_id"},{id:"city_fias_id",fields:["city_fias_id"],forBounds:!1,forLocations:!0},{id:"city_type_full",fields:["city_type_full"],forBounds:!1,forLocations:!0,kladrFormat:{digits:8,zeros:5},fiasType:"city_fias_id"},{id:"city",fields:["city","city_type","city_type_full","city_with_type"],forBounds:!0,forLocations:!0,kladrFormat:{digits:8,zeros:5},fiasType:"city_fias_id"},{id:"city_district_fias_id",fields:["city_district_fias_id"],forBounds:!1,forLocations:!0},{id:"city_district_type_full",fields:["city_district_type_full"],forBounds:!1,forLocations:!0,kladrFormat:{digits:11,zeros:2},fiasType:"city_district_fias_id"},{id:"city_district",fields:["city_district","city_district_type","city_district_type_full","city_district_with_type"],forBounds:!0,forLocations:!0,kladrFormat:{digits:11,zeros:2},fiasType:"city_district_fias_id"},{id:"settlement_fias_id",fields:["settlement_fias_id"],forBounds:!1,forLocations:!0},{id:"settlement_type_full",fields:["settlement_type_full"],forBounds:!1,forLocations:!0,kladrFormat:{digits:11,zeros:2},fiasType:"settlement_fias_id"},{id:"settlement",fields:["settlement","settlement_type","settlement_type_full","settlement_with_type"],forBounds:!0,forLocations:!0,kladrFormat:{digits:11,zeros:2},fiasType:"settlement_fias_id"},{id:"street_fias_id",fields:["street_fias_id"],forBounds:!1,forLocations:!0},{id:"street_type_full",fields:["street_type_full"],forBounds:!1,forLocations:!0,kladrFormat:{digits:15,zeros:2},fiasType:"street_fias_id"},{id:"street",fields:["street","street_type","street_type_full","street_with_type"],forBounds:!0,forLocations:!0,kladrFormat:{digits:15,zeros:2},fiasType:"street_fias_id"},{id:"house",fields:["house","house_type","house_type_full","block","block_type"],forBounds:!0,forLocations:!1,kladrFormat:{digits:19}}],I={urlSuffix:"address",noSuggestionsHint:"Неизвестный адрес",matchers:[L.matchByNormalizedQuery(R),L.matchByWordsAddress(R)],dataComponents:D,dataComponentsById:b.indexObjectsById(D,"id","index"),unformattableTokens:R,enrichmentEnabled:!0,enrichmentMethod:"suggest",enrichmentParams:{count:1,locations:null,locations_boost:null,from_bound:null,to_bound:null},getEnrichmentQuery:function(e){return e.unrestricted_value},geoEnabled:!0,isDataComplete:function(e){var t=[this.bounds.to||"flat"],n=e.data;return!m.isPlainObject(n)||b.fieldsAreNotEmpty(n,t)},composeValue:function(e,t){var n=e.region_with_type||y.compact([e.region,e.region_type]).join(" ")||e.region_type_full,i=e.area_with_type||y.compact([e.area_type,e.area]).join(" ")||e.area_type_full,s=e.city_with_type||y.compact([e.city_type,e.city]).join(" ")||e.city_type_full,o=e.settlement_with_type||y.compact([e.settlement_type,e.settlement]).join(" ")||e.settlement_type_full,a=e.city_district_with_type||y.compact([e.city_district_type,e.city_district]).join(" ")||e.city_district_type_full,r=e.street_with_type||y.compact([e.street_type,e.street]).join(" ")||e.street_type_full,l=y.compact([e.house_type,e.house,e.block_type,e.block]).join(" "),u=y.compact([e.flat_type,e.flat]).join(" "),c=e.postal_box&&"а/я "+e.postal_box;return n===s&&(n=""),t&&t.saveCityDistrict||(t&&t.excludeCityDistrict?a="":a&&!e.city_district_fias_id&&(a="")),y.compact([n,i,s,a,o,r,l,u,c]).join(", ")},formatResult:function(){var e=[],t=!1;return D.forEach(function(n){t&&e.push(n.id),"city_district"===n.id&&(t=!0)}),function(t,n,i,s){var o,a,r,l=this,u=i.data&&i.data.city_district_with_type,c=s&&s.unformattableTokens,d=i.data&&i.data.history_values;return d&&d.length>0&&(o=k.tokenize(n,c),a=this.type.findUnusedTokens(o,t),(r=this.type.getFormattedHistoryValues(a,d))&&(t+=r)),t=l.highlightMatches(t,n,i,s),t=l.wrapFormattedValue(t,i),u&&(!l.bounds.own.length||l.bounds.own.indexOf("street")>=0)&&!m.isEmptyObject(l.copyDataComponents(i.data,e))&&(t+='<div class="'+l.classes.subtext+'">'+l.highlightMatches(u,n,i)+"</div>"),t}}(),findUnusedTokens:function(e,t){return e.filter(function(e){return-1===t.indexOf(e)})},getFormattedHistoryValues:function(e,t){var n=[],i="";return t.forEach(function(t){y.each(e,function(e){if(t.toLowerCase().indexOf(e)>=0)return n.push(t),!1})}),n.length>0&&(i=" (бывш. "+n.join(", ")+")"),i},getSuggestionValue:function(e,t){var n=null;return t.hasSameValues?n=e.options.restrict_value?this.getValueWithinConstraints(e,t.suggestion):e.bounds.own.length?this.getValueWithinBounds(e,t.suggestion):t.suggestion.unrestricted_value:t.hasBeenEnriched&&e.options.restrict_value&&(n=this.getValueWithinConstraints(e,t.suggestion,{excludeCityDistrict:!0})),n},getValueWithinConstraints:function(e,t,n){return this.composeValue(e.getUnrestrictedData(t.data),n)},getValueWithinBounds:function(e,t,n){var i=e.copyDataComponents(t.data,e.bounds.own.concat(["city_district_fias_id"]));return this.composeValue(i,n)}},q={urlSuffix:"fio",noSuggestionsHint:!1,matchers:[L.matchByNormalizedQuery(),L.matchByWords()],fieldNames:{surname:"фамилия",name:"имя",patronymic:"отчество"},isDataComplete:function(e){var t,i=this,s=i.options.params,o=e.data;return m.isFunction(s)&&(s=s.call(i.element,e.value)),s&&s.parts?t=s.parts.map(function(e){return e.toLowerCase()}):(t=["surname","name"],n(e,"surname")&&t.push("patronymic")),b.fieldsAreNotEmpty(o,t)},composeValue:function(e){return y.compact([e.surname,e.name,e.patronymic]).join(" ")}},$={LEGAL:[2,2,5,1],INDIVIDUAL:[2,2,6,2]},F={urlSuffix:"party",noSuggestionsHint:"Неизвестная организация",matchers:[L.matchByFields({value:null,"data.address.value":R,"data.inn":null,"data.ogrn":null})],dataComponents:D,enrichmentEnabled:!0,enrichmentMethod:"findById",enrichmentParams:{count:1,locations_boost:null},getEnrichmentQuery:function(e){return e.data.hid},geoEnabled:!0,formatResult:function(e,t,n,o){var a=this,r=a.type.formatResultInn.call(a,n,t),l=a.highlightMatches(b.getDeepValue(n.data,"ogrn"),t,n),u=i(r,l),c=a.highlightMatches(b.getDeepValue(n.data,"management.name"),t,n),d=b.getDeepValue(n.data,"address.value")||"";return a.isMobile&&((o||(o={})).maxLength=50),e=s.call(a,e,b.getDeepValue(n.data,"name.latin"),t,n,o),e=a.wrapFormattedValue(e,n),d&&(d=d.replace(/^(\d{6}?\s+|Россия,\s+)/i,""),d=a.isMobile?d.replace(new RegExp("^([^"+w+"]+["+w+"]+[^"+w+"]+).*"),"$1"):a.highlightMatches(d,t,n,{unformattableTokens:R})),(u||d||c)&&(e+='<div class="'+a.classes.subtext+'"><span class="'+a.classes.subtext_inline+'">'+(u||"")+"</span>"+(i(d,c)||"")+"</div>"),e},formatResultInn:function(e,t){var n,i,s=this,o=e.data&&e.data.inn,a=$[e.data&&e.data.type],r=/\d/;if(o)return i=s.highlightMatches(o,t,e),a&&(i=i.split(""),n=a.map(function(e){for(var t,n="";e&&(t=i.shift());)n+=t,r.test(t)&&e--;return n}),i=n.join('<span class="'+s.classes.subtext_delimiter+'"></span>')+i.join("")),i}},A={urlSuffix:"email",noSuggestionsHint:!1,matchers:[L.matchByNormalizedQuery()],isQueryRequestable:function(e){return this.options.suggest_local||e.indexOf("@")>=0}},z={urlSuffix:"bank",noSuggestionsHint:"Неизвестный банк",matchers:[L.matchByFields({value:null,"data.bic":null,"data.swift":null})],dataComponents:D,geoEnabled:!0,formatResult:function(e,t,n,i){var s=this,o=s.highlightMatches(b.getDeepValue(n.data,"bic"),t,n),a=b.getDeepValue(n.data,"address.value")||"";return e=s.highlightMatches(e,t,n,i),e=s.wrapFormattedValue(e,n),a&&(a=a.replace(/^\d{6}( РОССИЯ)?, /i,""),a=s.isMobile?a.replace(new RegExp("^([^"+w+"]+["+w+"]+[^"+w+"]+).*"),"$1"):s.highlightMatches(a,t,n,{unformattableTokens:R})),(o||a)&&(e+='<div class="'+s.classes.subtext+'"><span class="'+s.classes.subtext_inline+'">'+o+"</span>"+a+"</div>"),e},formatSelected:function(e){return b.getDeepValue(e,"data.name.payment")||null}},N={NAME:q,ADDRESS:I,PARTY:F,EMAIL:A,BANK:z};N.get=function(e){return N.hasOwnProperty(e)?N[e]:new o(e)},P.extend(B,{suggest_local:!0});var M={chains:{},on:function(e,t){return this.get(e).push(t),this},get:function(e){var t=this.chains;return t[e]||(t[e]=[])}},H={suggest:{defaultParams:{type:j.getDefaultType(),dataType:"json",contentType:j.getDefaultContentType()},addTypeInUrl:!0},"iplocate/address":{defaultParams:{type:"GET",dataType:"json"},addTypeInUrl:!1},status:{defaultParams:{type:"GET",dataType:"json"},addTypeInUrl:!0},findById:{defaultParams:{type:j.getDefaultType(),dataType:"json",contentType:j.getDefaultContentType()},addTypeInUrl:!0}},W={suggest:{method:"suggest",userSelect:!0,updateValue:!0,enrichmentEnabled:!0},findById:{method:"findById",userSelect:!1,updateValue:!1,enrichmentEnabled:!1}};a.prototype={initialize:function(){var e=this;e.uniqueId=j.uniqueId("i"),e.createWrapper(),e.notify("initialize"),e.bindWindowEvents(),e.setOptions(),e.fixPosition()},deferInitialization:function(){var e,t=this,n="mouseover focus keydown",i=function(){t.initializer.resolve(),t.enable()};t.initializer.always(function(){t.el.off(n,i),clearInterval(e)}),t.disabled=!0,t.el.on(n,i),e=setInterval(function(){t.el.is(":visible")&&i()},t.options.initializeInterval)},isInitialized:function(){return"resolved"===this.initializer.state()},dispose:function(){var e=this;e.initializer.reject(),e.notify("dispose"),e.el.removeData("suggestions").removeClass("suggestions-input"),e.unbindWindowEvents(),e.removeWrapper(),e.el.trigger("suggestions-dispose")},notify:function(t){var n=this,i=j.slice(arguments,1);return e.map(M.get(t),function(e){return e.apply(n,i)})},createWrapper:function(){var t=this;t.$wrapper=e('<div class="suggestions-wrapper"/>'),t.el.after(t.$wrapper),t.$wrapper.on("mousedown"+S,e.proxy(t.onMousedown,t))},removeWrapper:function(){var t=this;t.$wrapper&&t.$wrapper.remove(),e(t.options.$helpers).off(S)},onMousedown:function(t){var n=this;t.preventDefault(),n.cancelBlur=!0,j.delay(function(){delete n.cancelBlur}),0==e(t.target).closest(".ui-menu-item").length&&j.delay(function(){e(document).one("mousedown",function(t){var i=n.el.add(n.$wrapper).add(n.options.$helpers);n.options.floating&&(i=i.add(n.$container)),i=i.filter(function(){return this===t.target||e.contains(this,t.target)}),i.length||n.hide()})})},bindWindowEvents:function(){var t=this,n=e.proxy(t.fixPosition,t);t.$viewport.on("resize"+S+t.uniqueId,n).on("scroll"+S+t.uniqueId,n)},unbindWindowEvents:function(){this.$viewport.off("resize"+S+this.uniqueId).off("scroll"+S+this.uniqueId)},scrollToTop:function(){var t=this,n=t.options.scrollOnFocus;!0===n&&(n=t.el),n instanceof e&&n.length>0&&e("body,html").animate({scrollTop:n.offset().top},"fast")},setOptions:function(t){var n=this;e.extend(n.options,t),n.type=N.get(n.options.type),e.each({requestMode:W},function(t,i){if(n[t]=i[n.options[t]],!n[t])throw n.disable(),"`"+t+"` option is incorrect! Must be one of: "+e.map(i,function(e,t){return'"'+t+'"'}).join(", ")}),e(n.options.$helpers).off(S).on("mousedown"+S,e.proxy(n.onMousedown,n)),n.isInitialized()&&n.notify("setOptions")},fixPosition:function(t){var n,i,s=this,o={};s.isMobile=s.$viewport.width()<=s.options.mobileWidth,s.isInitialized()&&(!t||"scroll"!=t.type||s.options.floating||s.isMobile)&&(s.$container.appendTo(s.options.floating?s.$body:s.$wrapper),s.notify("resetPosition"),s.el.css("paddingLeft",""),s.el.css("paddingRight",""),o.paddingLeft=parseFloat(s.el.css("paddingLeft")),o.paddingRight=parseFloat(s.el.css("paddingRight")),e.extend(o,s.el.offset()),o.borderTop="none"==s.el.css("border-top-style")?0:parseFloat(s.el.css("border-top-width")),o.borderLeft="none"==s.el.css("border-left-style")?0:parseFloat(s.el.css("border-left-width")),o.innerHeight=s.el.innerHeight(),o.innerWidth=s.el.innerWidth(),o.outerHeight=s.el.outerHeight(),o.componentsLeft=0,o.componentsRight=0,n=s.$wrapper.offset(),i={top:o.top-n.top,left:o.left-n.left},s.notify("fixPosition",i,o),o.componentsLeft>o.paddingLeft&&s.el.css("paddingLeft",o.componentsLeft+"px"),o.componentsRight>o.paddingRight&&s.el.css("paddingRight",o.componentsRight+"px"))},clearCache:function(){this.cachedResponse={},this.enrichmentCache={},this.badQueries=[]},clear:function(){var e=this,t=e.selection;e.isInitialized()&&(e.clearCache(),e.currentValue="",e.selection=null,e.hide(),e.suggestions=[],e.el.val(""),e.el.trigger("suggestions-clear"),e.notify("clear"),e.trigger("InvalidateSelection",t))},disable:function(){var e=this;e.disabled=!0,e.abortRequest(),e.visible&&e.hide()},enable:function(){this.disabled=!1},isUnavailable:function(){return this.disabled},update:function(){var e=this,t=e.el.val();e.isInitialized()&&(e.currentValue=t,e.isQueryRequestable(t)?e.updateSuggestions(t):e.hide())},setSuggestion:function(t){var n,i,s=this;e.isPlainObject(t)&&e.isPlainObject(t.data)&&(t=e.extend(!0,{},t),s.isUnavailable()&&s.initializer&&"pending"===s.initializer.state()&&(s.initializer.resolve(),s.enable()),s.bounds.own.length&&(s.checkValueBounds(t),n=s.copyDataComponents(t.data,s.bounds.all),t.data.kladr_id&&(n.kladr_id=s.getBoundedKladrId(t.data.kladr_id,s.bounds.all)),t.data=n),s.selection=t,s.suggestions=[t],i=s.getSuggestionValue(t)||"",s.currentValue=i,s.el.val(i),s.abortRequest(),s.el.trigger("suggestions-set"))},fixData:function(){var t=this,n=t.extendedCurrentValue(),i=t.el.val(),s=e.Deferred();s.done(function(e){t.selectSuggestion(e,0,i,{hasBeenEnriched:!0}),t.el.trigger("suggestions-fixdata",e)}).fail(function(){t.selection=null,t.el.trigger("suggestions-fixdata")}),t.isQueryRequestable(n)?(t.currentValue=n,t.getSuggestions(n,{count:1,from_bound:null,to_bound:null}).done(function(e){var t=e[0];t?s.resolve(t):s.reject()}).fail(function(){s.reject()})):s.reject()},extendedCurrentValue:function(){var t=this,n=t.getParentInstance(),i=n&&n.extendedCurrentValue(),s=e.trim(t.el.val());return j.compact([i,s]).join(" ")},getAjaxParams:function(t,n){var i=this,s=e.trim(i.options.token),o=e.trim(i.options.partner),r=i.options.serviceUrl,l=i.options.url,u=H[t],c=e.extend({timeout:i.options.timeout},u.defaultParams),d={};return l?r=l:(/\/$/.test(r)||(r+="/"),r+=t,u.addTypeInUrl&&(r+="/"+i.type.urlSuffix)),r=j.fixURLProtocol(r),e.support.cors?(s&&(d.Authorization="Token "+s),o&&(d["X-Partner"]=o),d["X-Version"]=a.version,c.headers||(c.headers={}),c.xhrFields||(c.xhrFields={}),e.extend(c.headers,i.options.headers,d),c.xhrFields.withCredentials=!1):(s&&(d.token=s),o&&(d.partner=o),d.version=a.version,r=j.addUrlParams(r,d)),c.url=r,e.extend(c,n)},isQueryRequestable:function(e){var t,n=this;return t=e.length>=n.options.minChars,t&&n.type.isQueryRequestable&&(t=n.type.isQueryRequestable.call(n,e)),t},constructRequestParams:function(t,n){var i=this,s=i.options,o=e.isFunction(s.params)?s.params.call(i.element,t):e.extend({},s.params);return i.type.constructRequestParams&&e.extend(o,i.type.constructRequestParams.call(i)),e.each(i.notify("requestParams"),function(t,n){e.extend(o,n)}),o[s.paramName]=t,e.isNumeric(s.count)&&s.count>0&&(o.count=s.count),e.extend(o,n)},updateSuggestions:function(e){var t=this;t.fetchPhase=t.getSuggestions(e).done(function(n){t.assignSuggestions(n,e)})},getSuggestions:function(t,n,i){var s,o=this,a=o.options,r=i&&i.noCallbacks,l=i&&i.useEnrichmentCache,u=i&&i.method||o.requestMode.method,c=o.constructRequestParams(t,n),d=e.param(c||{}),f=e.Deferred();return s=o.cachedResponse[d],s&&e.isArray(s.suggestions)?f.resolve(s.suggestions):o.isBadQuery(t)?f.reject():r||!1!==a.onSearchStart.call(o.element,c)?o.doGetSuggestions(c,u).done(function(e){o.processResponse(e)&&t==o.currentValue?(a.noCache||(l?o.enrichmentCache[t]=e.suggestions[0]:(o.enrichResponse(e,t),o.cachedResponse[d]=e,a.preventBadQueries&&0===e.suggestions.length&&o.badQueries.push(t))),f.resolve(e.suggestions)):f.reject(),r||a.onSearchComplete.call(o.element,t,e.suggestions)}).fail(function(e,n,i){f.reject(),r||"abort"===n||a.onSearchError.call(o.element,t,e,n,i)}):f.reject(),f},doGetSuggestions:function(t,n){var i=this,s=e.ajax(i.getAjaxParams(n,{data:j.serialize(t)}));return i.abortRequest(),i.currentRequest=s,i.notify("request"),s.always(function(){i.currentRequest=null,i.notify("request")}),s},isBadQuery:function(t){if(!this.options.preventBadQueries)return!1;var n=!1;return e.each(this.badQueries,function(e,i){return!(n=0===t.indexOf(i))}),n},abortRequest:function(){var e=this;e.currentRequest&&e.currentRequest.abort()},processResponse:function(t){var n,i=this;return!(!t||!e.isArray(t.suggestions))&&(i.verifySuggestionsFormat(t.suggestions),i.setUnrestrictedValues(t.suggestions),e.isFunction(i.options.onSuggestionsFetch)&&(n=i.options.onSuggestionsFetch.call(i.element,t.suggestions),e.isArray(n)&&(t.suggestions=n)),!0)},verifySuggestionsFormat:function(t){"string"==typeof t[0]&&e.each(t,function(e,n){t[e]={value:n,data:null}})},getSuggestionValue:function(t,n){var i,s=this,o=s.options.formatSelected||s.type.formatSelected,a=n&&n.hasSameValues,r=n&&n.hasBeenEnriched,l=null;return e.isFunction(o)&&(i=o.call(s,t)),"string"!=typeof i&&(i=t.value,s.type.getSuggestionValue&&null!==(l=s.type.getSuggestionValue(s,{suggestion:t,hasSameValues:a,hasBeenEnriched:r}))&&(i=l)),i},hasSameValues:function(t){var n=!1;return e.each(this.suggestions,function(e,i){if(i.value===t.value&&i!==t)return n=!0,!1}),n},assignSuggestions:function(e,t){var n=this;n.suggestions=e,n.notify("assignSuggestions",t)},shouldRestrictValues:function(){var e=this;return e.options.restrict_value&&e.constraints&&1==Object.keys(e.constraints).length},setUnrestrictedValues:function(t){var n=this,i=n.shouldRestrictValues(),s=n.getFirstConstraintLabel();e.each(t,function(e,t){t.unrestricted_value||(t.unrestricted_value=i?s+", "+t.value:t.value)})},areSuggestionsSame:function(e,t){return e&&t&&e.value===t.value&&j.areSame(e.data,t.data)},getNoSuggestionsHint:function(){var e=this;return!1!==e.options.noSuggestionsHint&&(e.options.noSuggestionsHint||e.type.noSuggestionsHint)}};var U={setupElement:function(){this.el.attr("autocomplete","off").attr("autocorrect","off").attr("autocapitalize","off").attr("spellcheck","false").addClass("suggestions-input").css("box-sizing","border-box")},bindElementEvents:function(){var t=this;t.el.on("keydown"+S,e.proxy(t.onElementKeyDown,t)),t.el.on(["keyup"+S,"cut"+S,"paste"+S,"input"+S].join(" "),e.proxy(t.onElementKeyUp,t)),t.el.on("blur"+S,e.proxy(t.onElementBlur,t)),t.el.on("focus"+S,e.proxy(t.onElementFocus,t))},unbindElementEvents:function(){this.el.off(S)},onElementBlur:function(){var e=this;if(e.cancelBlur)return void(e.cancelBlur=!1);e.options.triggerSelectOnBlur?e.isUnavailable()||e.selectCurrentValue({noSpace:!0}).always(function(){e.hide()}):e.hide(),e.fetchPhase.abort&&e.fetchPhase.abort()},onElementFocus:function(){var t=this;t.cancelFocus||j.delay(e.proxy(t.completeOnFocus,t)),t.cancelFocus=!1},onElementKeyDown:function(e){var t=this;if(!t.isUnavailable())if(t.visible){switch(e.which){case _.ESC:t.el.val(t.currentValue),t.hide(),t.abortRequest();break;case _.TAB:if(!1===t.options.tabDisabled)return;break;case _.ENTER:t.options.triggerSelectOnEnter&&t.selectCurrentValue();break;case _.SPACE:return void(t.options.triggerSelectOnSpace&&t.isCursorAtEnd()&&(e.preventDefault(),t.selectCurrentValue({continueSelecting:!0,dontEnrich:!0}).fail(function(){t.currentValue+=" ",t.el.val(t.currentValue),t.proceedChangedValue()})));case _.UP:t.moveUp();break;case _.DOWN:t.moveDown();break;default:return}e.stopImmediatePropagation(),e.preventDefault()}else switch(e.which){case _.DOWN:t.suggest();break;case _.ENTER:t.options.triggerSelectOnEnter&&t.triggerOnSelectNothing()}},onElementKeyUp:function(e){var t=this;if(!t.isUnavailable()){switch(e.which){case _.UP:case _.DOWN:case _.ENTER:return}clearTimeout(t.onChangeTimeout),t.inputPhase.reject(),t.currentValue!==t.el.val()&&t.proceedChangedValue()}},proceedChangedValue:function(){var t=this;t.abortRequest(),t.inputPhase=e.Deferred().done(e.proxy(t.onValueChange,t)),t.options.deferRequestBy>0?t.onChangeTimeout=j.delay(function(){t.inputPhase.resolve()},t.options.deferRequestBy):t.inputPhase.resolve()},onValueChange:function(){var e,t=this
466;t.selection&&(e=t.selection,t.selection=null,t.trigger("InvalidateSelection",e)),t.selectedIndex=-1,t.update(),t.notify("valueChange")},completeOnFocus:function(){var e=this;e.isUnavailable()||e.isElementFocused()&&(e.fixPosition(),e.update(),e.isMobile&&(e.setCursorAtEnd(),e.scrollToTop()))},isElementFocused:function(){return document.activeElement===this.element},isElementDisabled:function(){return Boolean(this.element.getAttribute("disabled")||this.element.getAttribute("readonly"))},isCursorAtEnd:function(){var e,t,n=this,i=n.el.val().length;try{if("number"==typeof(e=n.element.selectionStart))return e===i}catch(e){}return!document.selection||(t=document.selection.createRange(),t.moveStart("character",-i),i===t.text.length)},setCursorAtEnd:function(){var e=this.element;try{e.selectionEnd=e.selectionStart=e.value.length,e.scrollLeft=e.scrollWidth}catch(t){e.value=e.value}}};e.extend(a.prototype,U),M.on("initialize",U.bindElementEvents).on("dispose",U.unbindElementEvents);var Q={};r();var Z={checkStatus:function(){function e(e){j.isFunction(t.options.onSearchError)&&t.options.onSearchError.call(t.element,null,s,"error",e)}var t=this,n=t.options.token&&t.options.token.trim()||"",i=t.options.type+n,s=Q[i];s||(s=Q[i]=P.ajax(t.getAjaxParams("status"))),s.done(function(n,i,s){if(n.search){var o=s.getResponseHeader("X-Plan");n.plan=o,P.extend(t.status,n)}else e("Service Unavailable")}).fail(function(){e(s.statusText)})}};a.resetTokens=r,P.extend(a.prototype,Z),M.on("setOptions",Z.checkStatus);var K,G=!0,J={checkLocation:function(){var t=this,n=t.options.geoLocation;t.type.geoEnabled&&n&&(t.geoLocation=e.Deferred(),e.isPlainObject(n)||e.isArray(n)?t.geoLocation.resolve(n):(K||(K=e.ajax(t.getAjaxParams("iplocate/address"))),K.done(function(e){var n=e&&e.location&&e.location.data;n&&n.kladr_id?t.geoLocation.resolve(n):t.geoLocation.reject()}).fail(function(){t.geoLocation.reject()})))},getGeoLocation:function(){return this.geoLocation},constructParams:function(){var t=this,n={};return t.geoLocation&&e.isFunction(t.geoLocation.promise)&&"resolved"==t.geoLocation.state()&&t.geoLocation.done(function(t){n.locations_boost=e.makeArray(t)}),n}};"GET"!=j.getDefaultType()&&(e.extend(B,{geoLocation:G}),e.extend(a,{resetLocation:l}),e.extend(a.prototype,{getGeoLocation:J.getGeoLocation}),M.on("setOptions",J.checkLocation).on("requestParams",J.constructParams));var X={enrichSuggestion:function(t,n){var i=this,s=e.Deferred();if(!i.options.enrichmentEnabled||!i.type.enrichmentEnabled||!i.requestMode.enrichmentEnabled||n&&n.dontEnrich)return s.resolve(t);if(t.data&&null!=t.data.qc)return s.resolve(t);i.disableDropdown();var o=i.type.getEnrichmentQuery(t),a=i.type.enrichmentParams,r={noCallbacks:!0,useEnrichmentCache:!0,method:i.type.enrichmentMethod};return i.currentValue=o,i.enrichPhase=i.getSuggestions(o,a,r).always(function(){i.enableDropdown()}).done(function(e){var n=e&&e[0];s.resolve(n||t,!!n)}).fail(function(){s.resolve(t)}),s},enrichResponse:function(t,n){var i=this,s=i.enrichmentCache[n];s&&e.each(t.suggestions,function(e,i){if(i.value===n)return t.suggestions[e]=s,!1})}};e.extend(a.prototype,X);var Y={width:"auto",floating:!1},ee={createContainer:function(){var t=this,n="."+t.classes.suggestion,i=t.options,s=e("<div/>").addClass(i.containerClass).css({position:"absolute",display:"none"});t.$container=s,s.on("click"+S,n,e.proxy(t.onSuggestionClick,t))},getContainer:function(){return this.$container.get(0)},removeContainer:function(){var e=this;e.options.floating&&e.$container.remove()},setContainerOptions:function(){var t=this;t.$container.off("mousedown.suggestions"),t.options.floating&&t.$container.on("mousedown.suggestions",e.proxy(t.onMousedown,t))},onSuggestionClick:function(t){var n,i=this,s=e(t.target);if(!i.dropdownDisabled){for(i.cancelFocus=!0,i.el.focus();s.length&&!(n=s.attr("data-index"));)s=s.closest("."+i.classes.suggestion);n&&!isNaN(n)&&i.select(+n)}},setDropdownPosition:function(e,t){var n,i=this,s=i.$viewport.scrollLeft();i.isMobile?(n=i.options.floating?{left:s+"px",top:t.top+t.outerHeight+"px"}:{left:e.left-t.left+s+"px",top:e.top+t.outerHeight+"px"},n.width=i.$viewport.width()+"px"):(n=i.options.floating?{left:t.left+"px",top:t.top+t.borderTop+t.innerHeight+"px"}:{left:e.left+"px",top:e.top+t.borderTop+t.innerHeight+"px"},j.delay(function(){var e=i.options.width;"auto"===e&&(e=i.el.outerWidth()),i.$container.outerWidth(e)})),i.$container.toggleClass(i.classes.mobile,i.isMobile).css(n),i.containerItemsPadding=t.left+t.borderLeft+t.paddingLeft-s},setItemsPositions:function(){var e=this;e.getSuggestionsItems().css("paddingLeft",e.isMobile?e.containerItemsPadding+"px":"")},getSuggestionsItems:function(){return this.$container.children("."+this.classes.suggestion)},toggleDropdownEnabling:function(e){this.dropdownDisabled=!e,this.$container.attr("disabled",!e)},disableDropdown:function(){this.toggleDropdownEnabling(!1)},enableDropdown:function(){this.toggleDropdownEnabling(!0)},hasSuggestionsToChoose:function(){var t=this;return t.suggestions.length>1||1===t.suggestions.length&&(!t.selection||e.trim(t.suggestions[0].value)!==e.trim(t.selection.value))},suggest:function(){var t=this,n=t.options,i=[];if(t.requestMode.userSelect){if(t.hasSuggestionsToChoose())!t.isMobile&&n.hint&&t.suggestions.length&&i.push('<div class="'+t.classes.hint+'">'+n.hint+"</div>"),t.selectedIndex=-1,t.suggestions.forEach(function(e,n){e==t.selection&&(t.selectedIndex=n),t.buildSuggestionHtml(e,n,i)});else{if(t.suggestions.length)return void t.hide();var s=t.getNoSuggestionsHint();if(!s)return void t.hide();i.push('<div class="'+t.classes.hint+'">'+s+"</div>")}i.push('<div class="'+x.promo+'"></div>'),i.push("</div>"),t.$container.html(i.join("")),n.autoSelectFirst&&-1===t.selectedIndex&&(t.selectedIndex=0),-1!==t.selectedIndex&&t.getSuggestionsItems().eq(t.selectedIndex).addClass(t.classes.selected),e.isFunction(n.beforeRender)&&n.beforeRender.call(t.element,t.$container),t.$container.show(),t.visible=!0,t.fixPosition(),t.setItemsPositions()}},buildSuggestionHtml:function(e,t,n){n.push('<div class="'+this.classes.suggestion+'" data-index="'+t+'">');var i=this.options.formatResult||this.type.formatResult||this.formatResult;n.push(i.call(this,e.value,this.currentValue,e,{unformattableTokens:this.type.unformattableTokens}));var s=this.makeSuggestionLabel(this.suggestions,e);s&&n.push('<span class="'+this.classes.subtext_label+'">'+j.escapeHtml(s)+"</span>"),n.push("</div>")},wrapFormattedValue:function(e,t){var n=this,i=j.getDeepValue(t.data,"state.status");return'<span class="'+n.classes.value+'"'+(i?' data-suggestion-status="'+i+'"':"")+">"+e+"</span>"},formatResult:function(e,t,n,i){var s=this;return e=s.highlightMatches(e,t,n,i),s.wrapFormattedValue(e,n)},highlightMatches:function(t,n,i,s){var o,a,r,l,d,f,p,h=this,g=[],m=s&&s.unformattableTokens,y=s&&s.maxLength,v=j.reWordExtractor();if(!t)return"";for(o=k.tokenize(n,m),a=e.map(o,function(e){return new RegExp("^((.*)([\\-\\+\\\\\\?!@#$%^&]+))?("+j.escapeRegExChars(e)+")([^\\-\\+\\\\\\?!@#$%^&]*[\\-\\+\\\\\\?!@#$%^&]*)","i")});(r=v.exec(t))&&r[0];)l=r[1],g.push({text:l,hasUpperCase:l.toLowerCase()!==l,formatted:j.formatToken(l),matchable:!0}),r[2]&&g.push({text:r[2]});for(d=0;d<g.length;d++)f=g[d],!f.matchable||f.matched||-1!==e.inArray(f.formatted,m)&&!f.hasUpperCase||e.each(a,function(e,t){var n,i=t.exec(f.formatted),s=d+1;if(i)return i={before:i[1]||"",beforeText:i[2]||"",beforeDelimiter:i[3]||"",text:i[4]||"",after:i[5]||""},i.before&&(g.splice(d,0,{text:f.text.substr(0,i.beforeText.length),formatted:i.beforeText,matchable:!0},{text:i.beforeDelimiter}),s+=2,n=i.before.length,f.text=f.text.substr(n),f.formatted=f.formatted.substr(n),d--),n=i.text.length+i.after.length,f.formatted.length>n&&(g.splice(s,0,{text:f.text.substr(n),formatted:f.formatted.substr(n),matchable:!0}),f.text=f.text.substr(0,n),f.formatted=f.formatted.substr(0,n)),i.after&&(n=i.text.length,g.splice(s,0,{text:f.text.substr(n),formatted:f.formatted.substr(n)}),f.text=f.text.substr(0,n),f.formatted=f.formatted.substr(0,n)),f.matched=!0,!1});if(y){for(d=0;d<g.length&&y>=0;d++)f=g[d],(y-=f.text.length)<0&&(f.text=f.text.substr(0,f.text.length+y)+"...");g.length=d}return p=u(g),c(p,h.classes.nowrap)},makeSuggestionLabel:function(t,n){var i,s,o=this,a=o.type.fieldNames,r={},l=j.reWordExtractor(),u=[];
466if(a&&d(t,n)&&n.data&&(e.each(a,function(e){var t=n.data[e];t&&(r[e]=j.formatToken(t))}),!e.isEmptyObject(r))){for(;(i=l.exec(j.formatToken(n.value)))&&(s=i[1]);)e.each(r,function(e,t){if(t==s)return u.push(a[e]),delete r[e],!1});if(u.length)return u.join(", ")}},hide:function(){var e=this;e.visible=!1,e.selectedIndex=-1,e.$container.hide().empty()},activate:function(e){var t,n,i=this,s=i.classes.selected;return!i.dropdownDisabled&&(n=i.getSuggestionsItems(),n.removeClass(s),i.selectedIndex=e,-1!==i.selectedIndex&&n.length>i.selectedIndex)?(t=n.eq(i.selectedIndex),t.addClass(s),t):null},deactivate:function(e){var t=this;t.dropdownDisabled||(t.selectedIndex=-1,t.getSuggestionsItems().removeClass(t.classes.selected),e&&t.el.val(t.currentValue))},moveUp:function(){var e=this;if(!e.dropdownDisabled)return-1===e.selectedIndex?void(e.suggestions.length&&e.adjustScroll(e.suggestions.length-1)):0===e.selectedIndex?void e.deactivate(!0):void e.adjustScroll(e.selectedIndex-1)},moveDown:function(){var e=this;if(!e.dropdownDisabled)return e.selectedIndex===e.suggestions.length-1?void e.deactivate(!0):void e.adjustScroll(e.selectedIndex+1)},adjustScroll:function(e){var t,n,i,s=this,o=s.activate(e),a=s.$container.scrollTop();o&&o.length&&(t=o.position().top,t<0?s.$container.scrollTop(a+t):(n=t+o.outerHeight(),i=s.$container.innerHeight(),n>i&&s.$container.scrollTop(a-i+n)),s.el.val(s.suggestions[e].value))}};e.extend(B,Y),e.extend(a.prototype,ee),M.on("initialize",ee.createContainer).on("dispose",ee.removeContainer).on("setOptions",ee.setContainerOptions).on("fixPosition",ee.setDropdownPosition).on("fixPosition",ee.setItemsPositions).on("assignSuggestions",ee.suggest);var te={addon:null},ne={NONE:"none",SPINNER:"spinner",CLEAR:"clear"},ie=function(e){var t=P.select('<span class="suggestions-addon"/>');this.owner=e,this.$el=t,this.type=ne.NONE,this.visible=!1,this.initialPadding=null,t.on("click",P.proxy(this,"onClick"))};ie.prototype={checkType:function(){var e=this.owner.options.addon,t=!1;y.each(ne,function(n,i){if(t=n==e)return!1}),t||(e=this.owner.isMobile?ne.CLEAR:ne.SPINNER),e!=this.type&&(this.type=e,this.$el.attr("data-addon-type",e),this.toggle(!0))},isEnabled:function(){return!this.owner.isElementDisabled()},toggle:function(e){var t;switch(this.type){case ne.CLEAR:t=!!this.owner.currentValue;break;case ne.SPINNER:t=!!this.owner.currentRequest;break;default:t=!1}this.isEnabled()||(t=!1),t!=this.visible&&(this.visible=t,t?this.show(e):this.hide(e))},show:function(e){var t=this,n={opacity:1};e?(this.$el.show().css(n),this.showBackground(!0)):this.$el.stop(!0,!0).delay(50).queue(function(){t.$el.show(),t.showBackground(),t.$el.dequeue()}).animate(n,"fast")},hide:function(e){var t=this,n={opacity:0};e&&this.$el.hide().css(n),this.$el.stop(!0).animate(n,{duration:"fast",complete:function(){t.$el.hide(),t.hideBackground()}})},fixPosition:function(e,t){var n=t.innerHeight;this.checkType(),this.$el.css({left:e.left+t.borderLeft+t.innerWidth-n+"px",top:e.top+t.borderTop+"px",height:n,width:n}),this.initialPadding=t.paddingRight,this.width=n,this.visible&&(t.componentsRight+=n)},showBackground:function(e){var t=this.owner.el,n={paddingRight:this.width};this.width>this.initialPadding&&(this.stopBackground(),e?t.css(n):t.animate(n,{duration:"fast",queue:"addon"}).dequeue("addon"))},hideBackground:function(e){var t=this.owner.el,n={paddingRight:this.initialPadding};this.width>this.initialPadding&&(this.stopBackground(!0),e?t.css(n):t.delay(1e3,"addon").animate(n,{duration:"fast",queue:"addon"}).dequeue("addon"))},stopBackground:function(e){this.owner.el.stop("addon",!0,e)},onClick:function(e){this.isEnabled()&&this.type==ne.CLEAR&&this.owner.clear()}};var se={createAddon:function(){var e=new ie(this);this.$wrapper.append(e.$el),this.addon=e},fixAddonPosition:function(e,t){this.addon.fixPosition(e,t)},checkAddonType:function(){this.addon.checkType()},checkAddonVisibility:function(){this.addon.toggle()},stopBackground:function(){this.addon.stopBackground()}};P.extend(B,te),M.on("initialize",se.createAddon).on("setOptions",se.checkAddonType).on("fixPosition",se.fixAddonPosition).on("clear",se.checkAddonVisibility).on("valueChange",se.checkAddonVisibility).on("request",se.checkAddonVisibility).on("resetPosition",se.stopBackgroun
466d);var oe={constraints:null,restrict_value:!1},ae=["region_fias_id","area_fias_id","city_fias_id","city_district_fias_id","settlement_fias_id","street_fias_id"],re=function(e,t){var n,i,s=this,o={};s.instance=t,s.fields={},s.specificity=-1,m.isPlainObject(e)&&t.type.dataComponents&&y.each(t.type.dataComponents,function(t,n){var i=t.id;t.forLocations&&e[i]&&(s.fields[i]=e[i],s.specificity=n)}),n=Object.keys(s.fields),i=y.intersect(n,ae),i.length?(y.each(i,function(e,t){o[e]=s.fields[e]}),s.fields=o,s.specificity=s.getFiasSpecificity(i)):s.fields.kladr_id&&(s.fields={kladr_id:s.fields.kladr_id},s.significantKladr=p(s.fields.kladr_id),s.specificity=s.getKladrSpecificity(s.significantKladr))};P.extend(re.prototype,{getLabel:function(){return this.instance.type.composeValue(this.fields,{saveCityDistrict:!0})},getFields:function(){return this.fields},isValid:function(){return!m.isEmptyObject(this.fields)},getKladrSpecificity:function(e){var t=-1,n=e.length;return y.each(this.instance.type.dataComponents,function(e,i){e.kladrFormat&&n===e.kladrFormat.digits&&(t=i)}),t},getFiasSpecificity:function(e){var t=-1;return y.each(this.instance.type.dataComponents,function(n,i){n.fiasType&&e.indexOf(n.fiasType)>-1&&t<i&&(t=i)}),t},containsData:function(e){var t=!0;return this.fields.kladr_id?!!e.kladr_id&&0===e.kladr_id.indexOf(this.significantKladr):(y.each(this.fields,function(n,i){return t=!!e[i]&&e[i].toLowerCase()===n.toLowerCase()}),t)}}),a.ConstraintLocation=re;var le=function(e,t){this.id=V("c"),this.deletable=!!e.deletable,this.instance=t;var n=y.makeArray(e&&(e.locations||e.restrictions));this.locations=n.map(function(e){return new re(e,t)}),this.locations=this.locations.filter(function(e){return e.isValid()}),this.label=e.label,null==this.label&&t.type.composeValue&&(this.label=this.locations.map(function(e){return e.getLabel()}).join(", ")),this.label&&this.isValid()&&(this.$el=P.select(document.createElement("li")).append(P.select(document.createElement("span")).text(this.label)).attr("data-constraint-id",this.id),this.deletable&&this.$el.append(P.select(document.createElement("span")).addClass(t.classes.removeConstraint)))};P.extend(le.prototype,{isValid:function(){return this.locations.length>0},getFields:function(){return this.locations.map(function(e){return e.getFields()})}});var ue={createConstraints:function(){var e=this;e.constraints={},e.$constraints=P.select('<ul class="suggestions-constraints"/>'),e.$wrapper.append(e.$constraints),e.$constraints.on("click","."+e.classes.removeConstraint,P.proxy(e.onConstraintRemoveClick,e))},setConstraintsPosition:function(e,t){var n=this;n.$constraints.css({left:e.left+t.borderLeft+t.paddingLeft+"px",top:e.top+t.borderTop+Math.round((t.innerHeight-n.$constraints.height())/2)+"px"}),t.componentsLeft+=n.$constraints.outerWidth(!0)+t.paddingLeft},onConstraintRemoveClick:function(e){var t=this,n=P.select(e.target).closest("li"),i=n.attr("data-constraint-id");delete t.constraints[i],t.update(),n.fadeOut("fast",function(){t.removeConstraint(i)})},setupConstraints:function(){var e,t=this,n=t.options.constraints;if(!n)return void t.unbindFromParent();P.isJqObject(n)||"string"==typeof n||"number"==typeof n.nodeType?(e=P.select(n),e.is(t.constraints)||(t.unbindFromParent(),e.is(t.el)||(t.constraints=e,t.bindToParent()))):(t._constraintsUpdating=!0,y.each(t.constraints,function(e,n){t.removeConstraint(n)}),y.each(y.makeArray(n),function(e,n){t.addConstraint(e)}),t._constraintsUpdating=!1,t.fixPosition())},filteredLocation:function(e){var t=[],n={};if(y.each(this.type.dataComponents,function(){this.forLocations&&t.push(this.id)}),m.isPlainObject(e)&&y.each(e,function(e,i){e&&t.indexOf(i)>=0&&(n[i]=e)}),!m.isEmptyObject(n))return n.kladr_id?{kladr_id:n.kladr_id}:n},addConstraint:function(e){var t=this;e=new le(e,t),e.isValid()&&(t.constraints[e.id]=e,e.$el&&(t.$constraints.append(e.$el),t._constraintsUpdating||t.fixPosition()))},removeConstraint:function(e){var t=this;delete t.constraints[e],t.$constraints.children('[data-constraint-id="'+e+'"]').remove(),t._constraintsUpdating||t.fixPosition()},constructConstraintsParams:function(){for(var e,t,n=this,i=[],s=n.constraints,o={};P.isJqObject(s)&&(e=s.suggestions())&&!(t=b.getDeepValue(e,"selection.data"));)s=e.constraints;
vendor: 8,773 bytes, line 466
466return P.isJqObject(s)?(t=new re(t,e).getFields())&&(n.bounds.own.indexOf("city")>-1&&delete t.city_fias_id,o.locations=[t],o.restrict_value=!0):s&&(y.each(s,function(e,t){i=i.concat(e.getFields())}),i.length&&(o.locations=i,o.restrict_value=n.options.restrict_value)),o},getFirstConstraintLabel:function(){var e=this,t=m.isPlainObject(e.constraints)&&Object.keys(e.constraints)[0];return t?e.constraints[t].label:""},bindToParent:function(){var e=this;e.constraints.on(["suggestions-select."+e.uniqueId,"suggestions-invalidateselection."+e.uniqueId,"suggestions-clear."+e.uniqueId].join(" "),P.proxy(e.onParentSelectionChanged,e)).on("suggestions-dispose."+e.uniqueId,P.proxy(e.onParentDispose,e))},unbindFromParent:function(){var e=this,t=e.constraints;P.isJqObject(t)&&t.off("."+e.uniqueId)},onParentSelectionChanged:function(e,t,n){("suggestions-select"!==e.type||n)&&this.clear()},onParentDispose:function(e){this.unbindFromParent()},getParentInstance:function(){return P.isJqObject(this.constraints)&&this.constraints.suggestions()},shareWithParent:function(e){var t=this.getParentInstance();t&&t.type===this.type&&!f(e,t)&&(t.shareWithParent(e),t.setSuggestion(e))},getUnrestrictedData:function(e){var t=this,n=[],i={},s=-1;return y.each(t.constraints,function(t,n){y.each(t.locations,function(t,n){t.containsData(e)&&t.specificity>s&&(s=t.specificity)})}),s>=0?(e.region_kladr_id&&e.region_kladr_id===e.city_kladr_id&&n.push.apply(n,t.type.dataComponentsById.city.fields),y.each(t.type.dataComponents.slice(0,s+1),function(e,t){n.push.apply(n,e.fields)}),y.each(e,function(e,t){-1===n.indexOf(t)&&(i[t]=e)})):i=e,i}};P.extend(B,oe),P.extend(a.prototype,ue),"GET"!=T.getDefaultType()&&M.on("initialize",ue.createConstraints).on("setOptions",ue.setupConstraints).on("fixPosition",ue.setConstraintsPosition).on("requestParams",ue.constructConstraintsParams).on("dispose",ue.unbindFromParent);var ce={proceedQuery:function(e){var t=this;e.length>=t.options.minChars?t.updateSuggestions(e):t.hide()},selectCurrentValue:function(e){var t=this,n=P.Deferred();return t.inputPhase.resolve(),t.fetchPhase.done(function(){var i;t.selection&&!t.visible?n.reject():(i=t.findSuggestionIndex(),t.select(i,e),-1===i?n.reject():n.resolve(i))}).fail(function(){n.reject()}),n},selectFoundSuggestion:function(){var e=this;e.requestMode.userSelect||e.select(0)},findSuggestionIndex:function(){var e,t=this,n=t.selectedIndex;return-1===n&&(e=t.el.val().trim())&&t.type.matchers.some(function(i){return-1!==(n=i(e,t.suggestions))}),n},select:function(e,t){var n,i=this,s=i.suggestions[e],o=t&&t.continueSelecting,a=i.currentValue;if(!i.triggering.Select){if(!s)return o||i.selection||i.triggerOnSelectNothing(),void i.onSelectComplete(o);n=i.hasSameValues(s),i.enrichSuggestion(s,t).done(function(s,o){var r=P.extend({hasBeenEnriched:o,hasSameValues:n},t);i.selectSuggestion(s,e,a,r)})}},selectSuggestion:function(e,t,n,i){var s=this,o=i.continueSelecting,a=!s.type.isDataComplete||s.type.isDataComplete.call(s,e),r=s.selection;s.triggering.Select||(s.type.alwaysContinueSelecting&&(o=!0),a&&(o=!1),i.hasBeenEnriched&&s.suggestions[t]&&(s.suggestions[t].data=e.data),s.requestMode.updateValue&&(s.checkValueBounds(e),s.currentValue=s.getSuggestionValue(e,i),!s.currentValue||i.noSpace||a||(s.currentValue+=" "),s.el.val(s.currentValue)),s.currentValue?(s.selection=e,s.areSuggestionsSame(e,r)||s.trigger("Select",e,s.currentValue!=n),s.requestMode.userSelect&&s.onSelectComplete(o)):(s.selection=null,s.triggerOnSelectNothing()),s.shareWithParent(e))},onSelectComplete:function(e){var t=this;e?(t.selectedIndex=-1,t.updateSuggestions(t.currentValue)):t.hide()},triggerOnSelectNothing:function(){var e=this;e.triggering.SelectNothing||e.trigger("SelectNothing",e.currentValue)},trigger:function(e){var t=this,n=j.slice(arguments,1),i=t.options["on"+e];t.triggering[e]=!0,j.isFunction(i)&&i.apply(t.element,n),t.el.trigger.call(t.el,"suggestions-"+e.toLowerCase(),n),t.triggering[e]=!1}};P.extend(a.prototype,ce),M.on("assignSuggestions",ce.selectFoundSuggestion);var de={bounds:null},fe={setupBounds:function(){this.bounds={from:null,to:null}},setBoundsOptions:function(){var t,n,i=this,s=[],o=e.trim(i.options.bounds).split("-"),a=o[0],r=o[o.length-1],l=[],u=[];i.type.dataComponents&&e.each(i.type.dataComponents,function(){this.forBounds&&s.push(this.id)}),-1===e.inArray(a,s)&&(a=null),n=e.inArray(r,s),-1!==n&&n!==s.length-1||(r=null),(a||r)&&(t=!a,e.each(s,function(e,n){if(n==a&&(t=!0),u.push(n),t&&l.push(n),n==r)return!1})),i.bounds.from=a,i.bounds.to=r,i.bounds.all=u,i.bounds.own=l},constructBoundsParams:function(){var e=this,t={};return e.bounds.from&&(t.from_bound={value:e.bounds.from}),e.bounds.to&&(t.to_bound={value:e.bounds.to}),t},checkValueBounds:function(e){var t,n=this;if(n.bounds.own.length&&n.type.composeValue){var i=n.bounds.own.slice(0);1===i.length&&"city_district"===i[0]&&i.push("city_district_fias_id"),t=n.copyDataComponents(e.data,i),e.value=n.type.composeValue(t)}},copyDataComponents:function(t,n){var i={},s=this.type.dataComponentsById;return s&&e.each(n,function(n,o){e.each(s[o].fields,function(e,n){null!=t[n]&&(i[n]=t[n])})}),i},getBoundedKladrId:function(t,n){var i,s=n[n.length-1];return e.each(this.type.dataComponents,function(e,t){if(t.id===s)return i=t.kladrFormat,!1}),t.substr(0,i.digits)+new Array((i.zeros||0)+1).join("0")}};e.extend(B,de),e.extend(a.prototype,fe),M.on("initialize",fe.setupBounds).on("setOptions",fe.setBoundsOptions).on("requestParams",fe.constructBoundsParams);var pe={selectByClass:function(e,t){var n="."+e;return t?t.querySelector(n):document.querySelector(n)},addClass:function(e,t){var n=e.className.split(" ");-1===n.indexOf(t)&&n.push(t),e.className=n.join(" ")},setStyle:function(e,t,n){e.style[t]=n},listenTo:function(e,t,n,i){e.addEventListener(t,i,!1),n&&(eventsByNamespace[n]||(eventsByNamespace[n]=[]),eventsByNamespace[n].push({eventName:t,element:e,callback:i}))},stopListeningNamespace:function(e){var t=eventsByNamespace[e];t&&t.forEach(function(e){e.element.removeEventListener(e.eventName,e.callback,!1)})}};h.prototype.show=function(){"FREE"===this.plan&&this.element&&(this.setStyles(),this.setHtml())},h.prototype.setStyles=function(){this.element.style.display="block",this.isMobile||this.element.classList.add(x.promo_desktop)},h.prototype.setHtml=function(){this.element.innerHTML='<a target="_blank" href="https://dadata.ru/suggestions/?utm_source=dadata&utm_medium=module&utm_campaign=suggestions-jquery"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 167.55 38.92"><defs><style>.cls-1{fill:#cdcccc;}.cls-2{fill:#ef4741;}.cls-3{fill:#fff;}</style></defs><title>dadata-logo</title><path class="cls-1" d="M192.61,153.07H196v-3.15h-3.39Zm9.55-14.46v-2.45h-3v16.91h3.14V142.2a4.39,4.39,0,0,1,4.23-3.7h1.75v-2.69h-1.54C203.75,135.81,202.35,137.76,202.16,138.61Zm20.2-2.45v11.3a5,5,0,0,1-4.65,3.66,7.19,7.19,0,0,1-2-.23,2,2,0,0,1-1.12-.6,2.38,2.38,0,0,1-.44-.86,4.38,4.38,0,0,1-.1-1V136.16h-3.14v12.4a4.83,4.83,0,0,0,1.26,3.65q1.26,1.21,4.61,1.21c3.38,0,4.62-.91,5.56-2.34v2h3.14V136.16Z" transform="translate(-57.96 -122.27)"/><rect class="cls-2" width="131.91" height="38.92" rx="3" ry="3"/><path class="cls-3" d="M119.34,130.39h-9.18v22.68h10.23c3.84,0,10.18-.35,10.18-6.88v-8.91C130.56,130.74,123.18,130.39,119.34,130.39Zm5.77,15.2c0,3.27-2.38,3.6-5.09,3.6h-4.41V134.27H119c2.71,0,6.14.33,6.14,3.6Zm-48-15.2H68v22.68H78.18c3.84,0,10.18-.35,10.18-6.88v-8.91C88.36,130.74,81,130.39,77.14,130.39Zm5.77,15.2c0,3.27-2.38,3.6-5.09,3.6H73.41V134.27h3.36c2.71,0,6.14.33,6.14,3.6Zm74-14.32h-5.1V148a6.28,6.28,0,0,0,.4,2.36,4,4,0,0,0,1,1.54,4.56,4.56,0,0,0,1.57.88,8.16,8.16,0,0,0,1.85.42q.89.08,2.08.09a24.23,24.23,0,0,0,2.83-.17v-2.87h-1.82a3.08,3.08,0,0,1-2.31-.61,3.79,3.79,0,0,1-.52-2.36V139h4.65v-3.14h-4.65Zm21,5.68q-1.82-1.14-6.5-1.13h-5.92v.25l.73,2.9h5.19a5,5,0,0,1,2.5.5,2.37,2.37,0,0,1,.72,2v1.15H168.9q-3,0-4.12,1.17T163.62,148c0,2.21.37,3.14,1.12,3.84s2.2,1.22,4.48,1.22h7.06c1.76,0,3.45-.83,3.45-2.82v-8.81Q179.73,138.08,177.91,136.94Zm-3.29,13.3h-3.35a4.27,4.27,0,0,1-2.22-.35q-.44-.35-.44-2t.42-2.06a3.55,3.55,0,0,1,2.1-.38h3.49Zm-27.5-13.3q-1.82-1.14-6.5-1.13h-5.92v.25l.73,2.9h5.19a5,5,0,0,1,2.5.5,2.38,2.38,0,0,1,.72,2v1.15h-5.73q-3,0-4.12,1.17T132.84,148c0,2.21.37,3.14,1.12,3.84s2.2,1.22,4.48,1.22h7.06c1.77,0,3.45-.83,3.45-2.82v-8.81Q148.94,138.08,147.13,136.94Zm-3.28,13.3h-3.35a4.27,4.27,0,0,1-2.22-.35q-.44-.35-.44-2t.42-2.06a3.55,3.55,0,0,1,2.1-.38h3.49Zm-38.92-13.3q-1.82-1.14-6.5-1.13H92.5v.25l.73,2.9h5.19a5,5,0,0,1,2.5.5,2.38,2.38,0,0,1,.72,2v1.15H95.91q-3,0-4.12,1.17T90.63,148c0,2.21.37,3.14,1.12,3.84s2.2,1.22,4.48,1.22h7.06c1.77,0,3.45-.83,3.45-2.82v-8.81Q106.74,138.08,104.92,136.94Zm-3.28,13.3H98.29a4.27,4.27,0,0,1-2.22-.35q-.44-.35-.44-2t.42-2.06a3.55,3.5
4665,0,0,1,2.1-.38h3.49Z" transform="translate(-57.96 -122.27)"/></svg></a>'},M.on("assignSuggestions",g),a.defaultOptions=B,a.version="19.4.2",e.Suggestions=a,e.fn.suggestions=function(t,n){return 0===arguments.length?this.first().data("suggestions"):this.each(function(){var i=e(this),s=i.data("suggestions");"string"==typeof t?s&&"function"==typeof s[t]&&s[t](n):(s&&s.dispose&&s.dispose(),s=new a(this,t),i.data("suggestions",s))})}});
467/* End */
468;
469; /* Start:"a:4:{s:4:"full";s:70:"/local/templates/ntk_new/lib/jquery.datetimepicker.js?1742756400112261";s:6:"source";s:53:"/local/templates/ntk_new/lib/jquery.datetimepicker.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
470/*!
471 * @copyright Copyright &copy; Kartik Visweswaran, Krajee.com, 2014 - 2020
472 * @version 1.3.6
473 *
474 * Date formatter utility library that allows formatting date/time variables or Date objects using PHP DateTime format.
475 * This library is a standalone javascript library and does not depend on other libraries or plugins like jQuery. The
476 * library also adds support for Universal Module Definition (UMD).
477 * 
478 * @see http://php.net/manual/en/function.date.php
479 *
480 * For more JQuery plugins visit http://plugins.krajee.com
481 * For more Yii related demos visit http://demos.krajee.com
482 */!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():t.DateFormatter=e()}("undefined"!=typeof self?self:this,function(){var t,e;return e={DAY:864e5,HOUR:3600,defaults:{dateSettings:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],meridiem:["AM","PM"],ordinal:function(t){var e=t%10,n={1:"st",2:"nd",3:"rd"};return 1!==Math.floor(t%100/10)&&n[e]?n[e]:"th"}},separators:/[ \-+\/.:@]/g,validParts:/[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,intParts:/[djwNzmnyYhHgGis]/g,tzParts:/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,tzClip:/[^-+\dA-Z]/g},getInt:function(t,e){return parseInt(t,e?e:10)},compare:function(t,e){return"string"==typeof t&&"string"==typeof e&&t.toLowerCase()===e.toLowerCase()},lpad:function(t,n,r){var a=t.toString();return r=r||"0",a.length<n?e.lpad(r+a,n):a},merge:function(t){var n,r;for(t=t||{},n=1;n<arguments.length;n++)if(r=arguments[n])for(var a in r)r.hasOwnProperty(a)&&("object"==typeof r[a]?e.merge(t[a],r[a]):t[a]=r[a]);return t},getIndex:function(t,e){for(var n=0;n<e.length;n++)if(e[n].toLowerCase()===t.toLowerCase())return n;return-1}},t=function(t){var n=this,r=e.merge(e.defaults,t);n.dateSettings=r.dateSettings,n.separators=r.separators,n.validParts=r.validParts,n.intParts=r.intParts,n.tzParts=r.tzParts,n.tzClip=r.tzClip},t.prototype={constructor:t,getMonth:function(t){var n,r=this;return n=e.getIndex(t,r.dateSettings.monthsShort)+1,0===n&&(n=e.getIndex(t,r.dateSettings.months)+1),n},parseDate:function(t,n){var r,a,u,i,o,s,c,f,l,d,g=this,h=!1,m=!1,p=g.dateSettings,y={date:null,year:null,month:null,day:null,hour:0,min:0,sec:0};if(!t)return null;if(t instanceof Date)return t;if("U"===n)return u=e.getInt(t),u?new Date(1e3*u):t;switch(typeof t){case"number":return new Date(t);case"string":break;default:return null}if(r=n.match(g.validParts),!r||0===r.length)throw new Error("Invalid date format definition.");for(u=r.length-1;u>=0;u--)"S"===r[u]&&r.splice(u,1);for(a=t.replace(g.separators,"\x00").split("\x00"),u=0;u<a.length;u++)switch(i=a[u],o=e.getInt(i),r[u]){case"y":case"Y":if(!o)return null;l=i.length,y.year=2===l?e.getInt((70>o?"20":"19")+i):o,h=!0;break;case"m":case"n":case"M":case"F":if(isNaN(o)){if(s=g.getMonth(i),!(s>0))return null;y.month=s}else{if(!(o>=1&&12>=o))return null;y.month=o}h=!0;break;case"d":case"j":if(!(o>=1&&31>=o))return null;y.day=o,h=!0;break;case"g":case"h":if(c=r.indexOf("a")>-1?r.indexOf("a"):r.indexOf("A")>-1?r.indexOf("A"):-1,d=a[c],-1!==c)f=e.compare(d,p.meridiem[0])?0:e.compare(d,p.meridiem[1])?12:-1,o>=1&&12>=o&&-1!==f?y.hour=o%12===0?f:o+f:o>=0&&23>=o&&(y.hour=o);else{if(!(o>=0&&23>=o))return null;y.hour=o}m=!0;break;case"G":case"H":if(!(o>=0&&23>=o))return null;y.hour=o,m=!0;break;case"i":if(!(o>=0&&59>=o))return null;y.min=o,m=!0;break;case"s":if(!(o>=0&&59>=o))return null;y.sec=o,m=!0}if(h===!0){var D=y.year||0,v=y.month?y.month-1:0,S=y.day||1;y.date=new Date(D,v,S,y.hour,y.min,y.sec,0)}else{if(m!==!0)return null;y.date=new Date(0,0,0,y.hour,y.min,y.sec,0)}return y.date},guessDate:function(t,n){if("string"!=typeof t)return t;var r,a,u,i,o,s,c=this,f=t.replace(c.separators,"\x00").split("\x00"),l=/^[djmn]/g,d=n.match(c.validParts),g=new Date,h=0;if(!l.test(d[0]))return t;for(u=0;
vendor: 4,345 bytes, lines 482-517
482u<f.length;u++){if(h=2,o=f[u],s=e.getInt(o.substr(0,2)),isNaN(s))return null;switch(u){case 0:"m"===d[0]||"n"===d[0]?g.setMonth(s-1):g.setDate(s);break;case 1:"m"===d[0]||"n"===d[0]?g.setDate(s):g.setMonth(s-1);break;case 2:if(a=g.getFullYear(),r=o.length,h=4>r?r:4,a=e.getInt(4>r?a.toString().substr(0,4-r)+o:o.substr(0,4)),!a)return null;g.setFullYear(a);break;case 3:g.setHours(s);break;case 4:g.setMinutes(s);break;case 5:g.setSeconds(s)}i=o.substr(h),i.length>0&&f.splice(u+1,0,i)}return g},parseFormat:function(t,n){var r,a=this,u=a.dateSettings,i=/\\?(.?)/gi,o=function(t,e){return r[t]?r[t]():e};return r={d:function(){return e.lpad(r.j(),2)},D:function(){return u.daysShort[r.w()]},j:function(){return n.getDate()},l:function(){return u.days[r.w()]},N:function(){return r.w()||7},w:function(){return n.getDay()},z:function(){var t=new Date(r.Y(),r.n()-1,r.j()),n=new Date(r.Y(),0,1);return Math.round((t-n)/e.DAY)},W:function(){var t=new Date(r.Y(),r.n()-1,r.j()-r.N()+3),n=new Date(t.getFullYear(),0,4);return e.lpad(1+Math.round((t-n)/e.DAY/7),2)},F:function(){return u.months[n.getMonth()]},m:function(){return e.lpad(r.n(),2)},M:function(){return u.monthsShort[n.getMonth()]},n:function(){return n.getMonth()+1},t:function(){return new Date(r.Y(),r.n(),0).getDate()},L:function(){var t=r.Y();return t%4===0&&t%100!==0||t%400===0?1:0},o:function(){var t=r.n(),e=r.W(),n=r.Y();return n+(12===t&&9>e?1:1===t&&e>9?-1:0)},Y:function(){return n.getFullYear()},y:function(){return r.Y().toString().slice(-2)},a:function(){return r.A().toLowerCase()},A:function(){var t=r.G()<12?0:1;return u.meridiem[t]},B:function(){var t=n.getUTCHours()*e.HOUR,r=60*n.getUTCMinutes(),a=n.getUTCSeconds();return e.lpad(Math.floor((t+r+a+e.HOUR)/86.4)%1e3,3)},g:function(){return r.G()%12||12},G:function(){return n.getHours()},h:function(){return e.lpad(r.g(),2)},H:function(){return e.lpad(r.G(),2)},i:function(){return e.lpad(n.getMinutes(),2)},s:function(){return e.lpad(n.getSeconds(),2)},u:function(){return e.lpad(1e3*n.getMilliseconds(),6)},e:function(){var t=/\((.*)\)/.exec(String(n))[1];return t||"Coordinated Universal Time"},I:function(){var t=new Date(r.Y(),0),e=Date.UTC(r.Y(),0),n=new Date(r.Y(),6),a=Date.UTC(r.Y(),6);return t-e!==n-a?1:0},O:function(){var t=n.getTimezoneOffset(),r=Math.abs(t);return(t>0?"-":"+")+e.lpad(100*Math.floor(r/60)+r%60,4)},P:function(){var t=r.O();return t.substr(0,3)+":"+t.substr(3,2)},T:function(){var t=(String(n).match(a.tzParts)||[""]).pop().replace(a.tzClip,"");return t||"UTC"},Z:function(){return 60*-n.getTimezoneOffset()},c:function(){return"Y-m-d\\TH:i:sP".replace(i,o)},r:function(){return"D, d M Y H:i:s O".replace(i,o)},U:function(){return n.getTime()/1e3||0}},o(t,t)},formatDate:function(t,n){var r,a,u,i,o,s=this,c="",f="\\";if("string"==typeof t&&(t=s.parseDate(t,n),!t))return null;if(t instanceof Date){for(u=n.length,r=0;u>r;r++)o=n.charAt(r),"S"!==o&&o!==f&&(r>0&&n.charAt(r-1)===f?c+=o:(i=s.parseFormat(o,t),r!==u-1&&s.intParts.test(o)&&"S"===n.charAt(r+1)&&(a=e.getInt(i)||0,i+=s.dateSettings.ordinal(a)),c+=i));return c}return""}},t});
483/**
484 * @preserve jQuery DateTimePicker
485 * @homepage http://xdsoft.net/jqplugins/datetimepicker/
486 * @author Chupurnov Valeriy (<[email protected]>)
487 */
488
489/**
490 * @param {jQuery} $
491 */
492var datetimepickerFactory = function ($) {
493	'use strict';
494
495	var default_options  = {
496		i18n: {
497			ar: { // Arabic
498				months: [
499					"كانون الثاني", "شباط", "آذار", "نيسان", "مايو", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول"
500				],
501				dayOfWeekShort: [
502					"ن", "ث", "ع", "خ", "ج", "س", "ح"
503				],
504				dayOfWeek: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"]
505			},
506			ro: { // Romanian
507				months: [
508					"Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"
509				],
510				dayOfWeekShort: [
511					"Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ"
512				],
513				dayOfWeek: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă"]
514			},
515			id: { // Indonesian
516				months: [
517					"Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "
517November", "Desember"
518				],
519				dayOfWeekShort: [
520					"Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"
521				],
522				dayOfWeek: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"]
523			},
524			is: { // Icelandic
525				months: [
526					"Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"
527				],
528				dayOfWeekShort: [
529					"Sun", "Mán", "Þrið", "Mið", "Fim", "Fös", "Lau"
530				],
531				dayOfWeek: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur"]
532			},
533			bg: { // Bulgarian
534				months: [
535					"Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"
536				],
537				dayOfWeekShort: [
538					"Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"
539				],
540				dayOfWeek: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота"]
541			},
542			fa: { // Persian/Farsi
543				months: [
544					'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'
545				],
546				dayOfWeekShort: [
547					'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'
548				],
549				dayOfWeek: ["یک‌شنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنج‌شنبه", "جمعه", "شنبه", "یک‌شنبه"]
550			},
551			ru: { // Russian
552				months: [
553					'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'
554				],
555				dayOfWeekShort: [
556					"Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"
557				],
558				dayOfWeek: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"]
559			},
560			uk: { // Ukrainian
561				months: [
562					'Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'
563				],
564				dayOfWeekShort: [
565					"Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб
vendor: 19,707 bytes, lines 565-1016
565"
566				],
567				dayOfWeek: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота"]
568			},
569			en: { // English
570				months: [
571					"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
572				],
573				dayOfWeekShort: [
574					"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
575				],
576				dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
577			},
578			el: { // Ελληνικά
579				months: [
580					"Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"
581				],
582				dayOfWeekShort: [
583					"Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ"
584				],
585				dayOfWeek: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"]
586			},
587			de: { // German
588				months: [
589					'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'
590				],
591				dayOfWeekShort: [
592					"So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"
593				],
594				dayOfWeek: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]
595			},
596			nl: { // Dutch
597				months: [
598					"januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"
599				],
600				dayOfWeekShort: [
601					"zo", "ma", "di", "wo", "do", "vr", "za"
602				],
603				dayOfWeek: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"]
604			},
605			tr: { // Turkish
606				months: [
607					"Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"
608				],
609				dayOfWeekShort: [
610					"Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts"
611				],
612				dayOfWeek: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"]
613			},
614			fr: { //French
615				months: [
616					"Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"
617				],
618				dayOfWeekShort: [
619					"Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"
620				],
621				dayOfWeek: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"]
622			},
623			es: { // Spanish
624				months: [
625					"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"
626				],
627				dayOfWeekShort: [
628					"Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"
629				],
630				dayOfWeek: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"]
631			},
632			th: { // Thai
633				months: [
634					'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'
635				],
636				dayOfWeekShort: [
637					'อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'
638				],
639				dayOfWeek: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"]
640			},
641			pl: { // Polish
642				months: [
643					"styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień"
644				],
645				dayOfWeekShort: [
646					"nd", "pn", "wt", "śr", "cz", "pt", "sb"
647				],
648				dayOfWeek: ["niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota"]
649			},
650			pt: { // Portuguese
651				months: [
652					"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
653				],
654				dayOfWeekShort: [
655					"Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab"
656				],
657				dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"]
658			},
659			ch: { // Simplified Chinese
660				months: [
661					"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
662				],
663				dayOfWeekShort: [
664					"日", "一", "二", "三", "四", "五", "六"
665				]
666			},
667			se: { // Swedish
668				months: [
669					"Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September",  "Oktober", "November", "December"
670				],
671				dayOfWeekShort: [
672					"Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"
673				]
674			},
675			km: { // Khmer (ភាសាខ្មែរ)
676				months: [
677					"មករា​", "កុម្ភៈ", "មិនា​", "មេសា​", "ឧសភា​", "មិថុនា​", "កក្កដា​", "សីហា​", "កញ្ញា​", "តុលា​", "វិច្ឆិកា", "ធ្នូ​"
678				],
679				dayOfWeekShort: ["អាទិ​", "ច័ន្ទ​", "អង្គារ​", "ពុធ​", "ព្រហ​​", "សុក្រ​", "សៅរ៍"],
680				dayOfWeek: ["អាទិត្យ​", "ច័ន្ទ​", "អង្គារ​", "ពុធ​", "ព្រហស្បតិ៍​", "សុក្រ​", "សៅរ៍"]
681			},
682			kr: { // Korean
683				months: [
684					"1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"
685				],
686				dayOfWeekShort: [
687					"일", "월", "화", "수", "목", "금", "토"
688				],
689				dayOfWeek: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"]
690			},
691			it: { // Italian
692				months: [
693					"Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"
694				],
695				dayOfWeekShort: [
696					"Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"
697				],
698				dayOfWeek: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"]
699			},
700			da: { // Dansk
701				months: [
702					"Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"
703				],
704				dayOfWeekShort: [
705					"Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"
706				],
707				dayOfWeek: ["søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"]
708			},
709			no: { // Norwegian
710				months: [
711					"Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"
712				],
713				dayOfWeekShort: [
714					"Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"
715				],
716				dayOfWeek: ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag']
717			},
718			ja: { // Japanese
719				months: [
720					"1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"
721				],
722				dayOfWeekShort: [
723					"日", "月", "火", "水", "木", "金", "土"
724				],
725				dayOfWeek: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜"]
726			},
727			vi: { // Vietnamese
728				months: [
729					"Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12"
730				],
731				dayOfWeekShort: [
732					"CN", "T2", "T3", "T4", "T5", "T6", "T7"
733				],
734				dayOfWeek: ["Chủ nhật", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ năm", "Thứ sáu", "Thứ bảy"]
735			},
736			sl: { // Slovenščina
737				months: [
738					"Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"
739				],
740				dayOfWeekShort: [
741					"Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob"
742				],
743				dayOfWeek: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota"]
744			},
745			cs: { // Čeština
746				months: [
747					"Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"
748				],
749				dayOfWeekShort: [
750					"Ne", "Po", "Út", "St", "Čt", "Pá", "So"
751				]
752			},
753			hu: { // Hungarian
754				months: [
755					"Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"
756				],
757				dayOfWeekShort: [
758					"Va", "Hé", "Ke", "Sze", "Cs", "Pé", "Szo"
759				],
760				dayOfWeek: ["vasárnap", "hétfő", "kedd", "szerda", "csütörtök", "péntek", "szombat"]
761			},
762			az: { //Azerbaijanian (Azeri)
763				months: [
764					"Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"
765				],
766				dayOfWeekShort: [
767					"B", "Be", "Ça", "Ç", "Ca", "C", "Ş"
768				],
769				dayOfWeek: ["Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə"]
770			},
771			bs: { //Bosanski
772				months: [
773					"Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"
774				],
775				dayOfWeekShort: [
776					"Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"
777				],
778				dayOfWeek: ["Nedjelja","Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"]
779			},
780			ca: { //Català
781				months: [
782					"Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"
783				],
784				dayOfWeekShort: [
785					"Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds"
786				],
787				dayOfWeek: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"]
788			},
789			'en-GB': { //English (British)
790				months: [
791					"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
792				],
793				dayOfWeekShort: [
794					"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
795				],
796				dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
797			},
798			et: { //"Eesti"
799				months: [
800					"Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"
801				],
802				dayOfWeekShort: [
803					"P", "E", "T", "K", "N", "R", "L"
804				],
805				dayOfWeek: ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev"]
806			},
807			eu: { //Euskara
808				months: [
809					"Urtarrila", "Otsaila", "Martxoa", "Apirila", "Maiatza", "Ekaina", "Uztaila", "Abuztua", "Iraila", "Urria", "Azaroa", "Abendua"
810				],
811				dayOfWeekShort: [
812					"Ig.", "Al.", "Ar.", "Az.", "Og.", "Or.", "La."
813				],
814				dayOfWeek: ['Igandea', 'Astelehena', 'Asteartea', 'Asteazkena', 'Osteguna', 'Ostirala', 'Larunbata']
815			},
816			fi: { //Finnish (Suomi)
817				months: [
818					"Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"
819				],
820				dayOfWeekShort: [
821					"Su", "Ma", "Ti", "Ke", "To", "Pe", "La"
822				],
823				dayOfWeek: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"]
824			},
825			gl: { //Galego
826				months: [
827					"Xan", "Feb", "Maz", "Abr", "Mai", "Xun", "Xul", "Ago", "Set", "Out", "Nov", "Dec"
828				],
829				dayOfWeekShort: [
830					"Dom", "Lun", "Mar", "Mer", "Xov", "Ven", "Sab"
831				],
832				dayOfWeek: ["Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado"]
833			},
834			hr: { //Hrvatski
835				months: [
836					"Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"
837				],
838				dayOfWeekShort: [
839					"Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"
840				],
841				dayOfWeek: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"]
842			},
843			ko: { //Korean (한국어)
844				months: [
845					"1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"
846				],
847				dayOfWeekShort: [
848					"일", "월", "화", "수", "목", "금", "토"
849				],
850				dayOfWeek: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"]
851			},
852			lt: { //Lithuanian (lietuvių)
853				months: [
854					"Sausio", "Vasario", "Kovo", "Balandžio", "Gegužės", "Birželio", "Liepos", "Rugpjūčio", "Rugsėjo", "Spalio", "Lapkričio", "Gruodžio"
855				],
856				dayOfWeekShort: [
857					"Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Šeš"
858				],
859				dayOfWeek: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis"]
860			},
861			lv: { //Latvian (Latviešu)
862				months: [
863					"Janvāris", "Februāris", "Marts", "Aprīlis ", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"
864				],
865				dayOfWeekShort: [
866					"Sv", "Pr", "Ot", "Tr", "Ct", "Pk", "St"
867				],
868				dayOfWeek: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena"]
869			},
870			mk: { //Macedonian (Македонски)
871				months: [
872					"јануари", "февруари", "март", "април", "мај", "јуни", "јули", "август", "септември", "октомври", "ноември", "декември"
873				],
874				dayOfWeekShort: [
875					"нед", "пон", "вто", "сре", "чет", "пет", "саб"
876				],
877				dayOfWeek: ["Недела", "Понеделник", "Вторник", "Среда", "Четврток", "Петок", "Сабота"]
878			},
879			mn: { //Mongolian (Монгол)
880				months: [
881					"1-р сар", "2-р сар", "3-р сар", "4-р сар", "5-р сар", "6-р сар", "7-р сар", "8-р сар", "9-р сар", "10-р сар", "11-р сар", "12-р сар"
882				],
883				dayOfWeekShort: [
884					"Дав", "Мяг", "Лха", "Пүр", "Бсн", "Бям", "Ням"
885				],
886				dayOfWeek: ["Даваа", "Мягмар", "Лхагва", "Пүрэв", "Баасан", "Бямба", "Ням"]
887			},
888			'pt-BR': { //Português(Brasil)
889				months: [
890					"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
891				],
892				dayOfWeekShort: [
893					"Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"
894				],
895				dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"]
896			},
897			sk: { //Slovenčina
898				months: [
899					"Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"
900				],
901				dayOfWeekShort: [
902					"Ne", "Po", "Ut", "St", "Å t", "Pi", "So"
903				],
904				dayOfWeek: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota"]
905			},
906			sq: { //Albanian (Shqip)
907				months: [
908					"Janar", "Shkurt", "Mars", "Prill", "Maj", "Qershor", "Korrik", "Gusht", "Shtator", "Tetor", "Nëntor", "Dhjetor"
909				],
910				dayOfWeekShort: [
911					"Die", "Hën", "Mar", "Mër", "Enj", "Pre", "Shtu"
912				],
913				dayOfWeek: ["E Diel", "E Hënë", "E Martē", "E Mërkurë", "E Enjte", "E Premte", "E Shtunë"]
914			},
915			'sr-YU': { //Serbian (Srpski)
916				months: [
917					"Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"
918				],
919				dayOfWeekShort: [
920					"Ned", "Pon", "Uto", "Sre", "čet", "Pet", "Sub"
921				],
922				dayOfWeek: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota"]
923			},
924			sr: { //Serbian Cyrillic (Српски)
925				months: [
926					"јануар", "фебруар", "март", "април", "мај", "јун", "јул", "август", "септембар", "октобар", "новембар", "децембар"
927				],
928				dayOfWeekShort: [
929					"нед", "пон", "уто", "сре", "чет", "пет", "суб"
930				],
931				dayOfWeek: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота"]
932			},
933			sv: { //Svenska
934				months: [
935					"Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"
936				],
937				dayOfWeekShort: [
938					"Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"
939				],
940				dayOfWeek: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag"]
941			},
942			'zh-TW': { //Traditional Chinese (繁體中文)
943				months: [
944					"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
945				],
946				dayOfWeekShort: [
947					"日", "一", "二", "三", "四", "五", "六"
948				],
949				dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
950			},
951			zh: { //Simplified Chinese (简体中文)
952				months: [
953					"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
954				],
955				dayOfWeekShort: [
956					"日", "一", "二", "三", "四", "五", "六"
957				],
958				dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
959			},
960			ug:{ // Uyghur(ئۇيغۇرچە)
961				months: [
962					"1-ئاي","2-ئاي","3-ئاي","4-ئاي","5-ئاي","6-ئاي","7-ئاي","8-ئاي","9-ئاي","10-ئاي","11-ئاي","12-ئاي"
963				],
964				dayOfWeek: [
965					"يەكشەنبە", "دۈشەنبە","سەيشەنبە","چارشەنبە","پەيشەنبە","جۈمە","شەنبە"
966				]
967			},
968			he: { //Hebrew (עברית)
969				months: [
970					'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'
971				],
972				dayOfWeekShort: [
973					'א\'', 'ב\'', 'ג\'', 'ד\'', 'ה\'', 'ו\'', 'שבת'
974				],
975				dayOfWeek: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"]
976			},
977			hy: { // Armenian
978				months: [
979					"Հունվար", "Փետրվար", "Մարտ", "Ապրիլ", "Մայիս", "Հունիս", "Հուլիս", "Օգոստոս", "Սեպտեմբեր", "Հոկտեմբեր", "Նոյեմբեր", "Դեկտեմբեր"
980				],
981				dayOfWeekShort: [
982					"Կի", "Երկ", "Երք", "Չոր", "Հնգ", "Ուրբ", "Շբթ"
983				],
984				dayOfWeek: ["Կիրակի", "Երկուշաբթի", "Երեքշաբթի", "Չորեքշաբթի", "Հինգշաբթի", "Ուրբաթ", "Շաբաթ"]
985			},
986			kg: { // Kyrgyz
987				months: [
988					'Үчтүн айы', 'Бирдин айы', 'Жалган Куран', 'Чын Куран', 'Бугу', 'Кулжа', 'Теке', 'Баш Оона', 'Аяк Оона', 'Тогуздун айы', 'Жетинин айы', 'Бештин айы'
989				],
990				dayOfWeekShort: [
991					"Жек", "Дүй", "Шей", "Шар", "Бей", "Жум", "Ише"
992				],
993				dayOfWeek: [
994					"Жекшемб", "Дүйшөмб", "Шейшемб", "Шаршемб", "Бейшемби", "Жума", "Ишенб"
995				]
996			},
997			rm: { // Romansh
998				months: [
999					"Schaner", "Favrer", "Mars", "Avrigl", "Matg", "Zercladur", "Fanadur", "Avust", "Settember", "October", "November", "December"
1000				],
1001				dayOfWeekShort: [
1002					"Du", "Gli", "Ma", "Me", "Gie", "Ve", "So"
1003				],
1004				dayOfWeek: [
1005					"Dumengia", "Glindesdi", "Mardi", "Mesemna", "Gievgia", "Venderdi", "Sonda"
1006				]
1007			},
1008			ka: { // Georgian
1009				months: [
1010					'იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი'
1011				],
1012				dayOfWeekShort: [
1013					"კვ", "ორშ", "სამშ", "ოთხ", "ხუთ", "პარ", "შაბ"
1014				],
1015				dayOfWeek: ["კვირა", "ორშაბათი", "სამშაბათი", "ოთხშაბათი", "ხუთშაბათი", "პარასკევი", "შაბათი"]
1016			}
vendor: 3,550 bytes, lines 1016-1163
1016,
1017			kk: { // Kazakh
1018				months: [
1019					'Қаңтар', 'Ақпан', 'Наурыз', 'Сәуір', 'Мамыр', 'Маусым', 'Шілде', 'Тамыз', 'Қыркүйек', 'Қазан', 'Қараша', 'Желтоқсан'
1020				],
1021				dayOfWeekShort: [
1022					"Жк", "Дс", "Сс", "Ср", "Бс", "Жм", "Сб"
1023				],
1024				dayOfWeek: ["Жексенбі", "Дүйсенбі", "Сейсенбі", "Сәрсенбі", "Бейсенбі", "Жұма", "Сенбі"]
1025			}
1026		},
1027
1028		ownerDocument: document,
1029		contentWindow: window,
1030
1031		value: '',
1032		rtl: false,
1033
1034		format:	'Y/m/d H:i',
1035		formatTime:	'H:i',
1036		formatDate:	'Y/m/d',
1037
1038		startDate:	false, // new Date(), '1986/12/08', '-1970/01/05','-1970/01/05',
1039		step: 60,
1040		monthChangeSpinner: true,
1041
1042		closeOnDateSelect: false,
1043		closeOnTimeSelect: true,
1044		closeOnWithoutClick: true,
1045		closeOnInputClick: true,
1046		openOnFocus: true,
1047
1048		timepicker: true,
1049		datepicker: true,
1050		weeks: false,
1051
1052		defaultTime: false,	// use formatTime format (ex. '10:00' for formatTime:	'H:i')
1053		defaultDate: false,	// use formatDate format (ex new Date() or '1986/12/08' or '-1970/01/05' or '-1970/01/05')
1054
1055		minDate: false,
1056		maxDate: false,
1057		minTime: false,
1058		maxTime: false,
1059		minDateTime: false,
1060		maxDateTime: false,
1061
1062		allowTimes: [],
1063		opened: false,
1064		initTime: true,
1065		inline: false,
1066		theme: '',
1067		touchMovedThreshold: 5,
1068
1069		onSelectDate: function () {},
1070		onSelectTime: function () {},
1071		onChangeMonth: function () {},
1072		onGetWeekOfYear: function () {},
1073		onChangeYear: function () {},
1074		onChangeDateTime: function () {},
1075		onShow: function () {},
1076		onClose: function () {},
1077		onGenerate: function () {},
1078
1079		withoutCopyright: true,
1080		inverseButton: false,
1081		hours12: false,
1082		next: 'xdsoft_next',
1083		prev : 'xdsoft_prev',
1084		dayOfWeekStart: 0,
1085		parentID: 'body',
1086		timeHeightInTimePicker: 25,
1087		timepickerScrollbar: true,
1088		todayButton: true,
1089		prevButton: true,
1090		nextButton: true,
1091		defaultSelect: true,
1092
1093		scrollMonth: true,
1094		scrollTime: true,
1095		scrollInput: true,
1096
1097		lazyInit: false,
1098		mask: false,
1099		validateOnBlur: true,
1100		allowBlank: true,
1101		yearStart: 1950,
1102		yearEnd: 2050,
1103		monthStart: 0,
1104		monthEnd: 11,
1105		style: '',
1106		id: '',
1107		fixed: false,
1108		roundTime: 'round', // ceil, floor
1109		className: '',
1110		weekends: [],
1111		highlightedDates: [],
1112		highlightedPeriods: [],
1113		allowDates : [],
1114		allowDateRe : null,
1115		disabledDates : [],
1116		disabledWeekDays: [],
1117		yearOffset: 0,
1118		beforeShowDay: null,
1119
1120		enterLikeTab: true,
1121        showApplyButton: false,
1122        insideParent: false,
1123	};
1124
1125	var dateHelper = null,
1126		defaultDateHelper = null,
1127		globalLocaleDefault = 'en',
1128		globalLocale = 'en';
1129
1130	var dateFormatterOptionsDefault = {
1131		meridiem: ['AM', 'PM']
1132	};
1133
1134	var initDateFormatter = function(){
1135		var locale = default_options.i18n[globalLocale],
1136			opts = {
1137				days: locale.dayOfWeek,
1138				daysShort: locale.dayOfWeekShort,
1139				months: locale.months,
1140				monthsShort: $.map(locale.months, function(n){ return n.substring(0, 3) })
1141			};
1142
1143		if (typeof DateFormatter === 'function') {
1144			dateHelper = defaultDateHelper = new DateFormatter({
1145				dateSettings: $.extend({}, dateFormatterOptionsDefault, opts)
1146			});
1147		}
1148	};
1149
1150	var dateFormatters = {
1151		moment: {
1152			default_options:{
1153				format: 'YYYY/MM/DD HH:mm',
1154				formatDate: 'YYYY/MM/DD',
1155				formatTime: 'HH:mm',
1156			},
1157			formatter: {
1158				parseDate: function (date, format) {
1159					if(isFormatStandard(format)){
1160						return defaultDateHelper.parseDate(date, format);
1161					}
1162					var d = moment(date, format);
1163					return d.isValid() ? d.toDate() : false;
1164				},
1165
1166				formatDate: function (date, format) {
1167					if(isFormatStandard(format)){
1168						return defaultDateHelper.formatDate(date, format);
1169					}
1170					return moment(date).format(format);
1171				},
1172
1173				formatMask: function(format){
1174					return format
1175						.replace(/Y{4}/g, '9999')
1176						.replace(/Y{2}/g, '99')
1177						.replace(/M{2}/g, '19')
1178						.replace(/D{2}/g, '39')
1179						.replace(/H{2}/g, '29')
1180						.replace(/m{2}/g, '59')
1181						.replace(/s{2}/g, '59');
1182				},
1183			}
1184		}
1185	}
1186
1187	// for locale settings
1188	$.datetimepicker = {
1189		setLocale: function(locale){
1190			var newLocale = default_options.i18n[locale] ? locale : globalLocaleDefault;
1191			if (globalLocale !== newLocale) {
1192				globalLocale = newLocale;
1193				// reinit date formatter
1194				initDateFormatter();
1195			}
1196		},
1197
1198		setDateFormatter: function(dateFormatter) {
1199			if(typeof dateFormatter === 'string' && dateFormatters.hasOwnProperty(dateFormatter)){
1200				var df = dateFormatters[dateFormatter];
1201				$.extend(default_options, df.default_options);
1202				dateHelper = df.formatter;
1203			}
1204			else {
1205				dateHelper = dateFormatter;
1206			}
1207		},
1208	};
1209
1210	var standardFormats = {
1211		RFC_2822: 'D, d M Y H:i:s O',
1212		ATOM: 'Y-m-d\TH:i:sP',
1213		ISO_8601: 'Y-m-d\TH:i:sO',
1214		RFC_822: 'D, d M y H:i:s O',
1215		RFC_850: 'l, d-M-y H:i:s T',
1216		RFC_1036: 'D, d M y H:i:s O',
1217		RFC_1123: 'D, d M Y H:i:s O',
1218		RSS: 'D, d M Y H:i:s O',
1219		W3C: 'Y-m-d\TH:i:sP'
1220	}
1221
1222	var isFormatStandard = function(format){
1223		return Object.values(standardFormats).indexOf(format) === -1 ? false : true;
1224	}
1225
1226	$.extend($.datetimepicker, standardFormats);
1227
1228	// first init date formatter
1229	initDateFormatter();
1230
1231	// fix for ie8
1232	if (!window.getComputedStyle) {
1233		window.getComputedStyle = function (el) {
1234			this.el = el;
1235			this.getPropertyValue = function (prop) {
1236				var re = /(-([a-z]))/g;
1237				if (prop === 'float') {
1238					prop = 'styleFloat';
1239				}
1240				if (re.test(prop)) {
1241					prop = prop.replace(re, function (a, b, c) {
1242						return c.toUpperCase();
1243					});
1244				}
1245				return el.currentStyle[prop] || null;
1246			};
1247			return this;
1248		};
1249	}
1250	if (!Array.prototype.indexOf) {
1251		Array.prototype.indexOf = function (obj, start) {
1252			var i, j;
1253			for (i = (start || 0), j = this.length; i < j; i += 1) {
1254				if (this[i] === obj) { return i; }
1255			}
1256			return -1;
1257		};
1258	}
1259
1260	Date.prototype.countDaysInMonth = function () {
1261		return new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate();
1262	};
1263
1264	$.fn.xdsoftScroller = function (options, percent) {
1265		return this.each(function () {
1266			var timeboxparent = $(this),
1267				pointerEventToXY = function (e) {
1268					var out = {x: 0, y: 0},
1269						touch;
1270					if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') {
1271						touch  = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
1272						out.x = touch.clientX;
1273						out.y = touch.clientY;
1274					} else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'mousemove' || e.type === 'mouseover' || e.type === 'mouseout' || e.type === 'mouseenter' || e.type === 'mouseleave') {
1275						out.x = e.clientX;
1276						out.y = e.clientY;
1277					}
1278					return out;
1279				},
1280				getWheelDelta = function (e) {
1281					var deltaY = 0;
1282
1283					if ('detail' in e) { deltaY = e.detail; }
1284					if ('wheelDelta' in e) { deltaY = -e.wheelDelta / 120; }
1285					if ('wheelDeltaY' in e) { deltaY = -e.wheelDeltaY / 120; }
1286					if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { deltaY = 0; }
1287
1288					deltaY *= 10;
1289
1290					if ('deltaY' in e) { deltaY = -e.deltaY; }
1291
1292					if (deltaY && e.deltaMode) {
1293						if (e.deltaMode === 1) {
1294							deltaY *= 40;
1295						} else {
1296							deltaY *= 800;
1297						}
1298					}
1299
1300					return deltaY;
1301				},
1302				timebox,
1303				timeboxTop = 0,
1304				parentHeight,
1305				height,
1306				scrollbar,
1307				scroller,
1308				maximumOffset = 100,
1309				start = false,
1310				startY = 0,
1311				startTop = 0,
1312				h1 = 0,
1313				touchStart = false,
1314				startTopScroll = 0,
1315				calcOffset = function () {};
1316
1317			if (percent === 'hide') {
1318				timeboxparent.find('.xdsoft_scrollbar').hide();
1319				return;
1320			}
1321
1322			if (!$(this).hasClass('xdsoft_scroller_box')) {
1323				timebox = timeboxparent.children().eq(0);
1324				timeboxTop = Math.abs(parseInt(timebox.css('marginTop'), 10));
1325				parentHeight = timeboxparent[0].clientHeight;
1326				height = timebox[0].offsetHeight;
1327				scrollbar = $('<div class="xdsoft_scrollbar"></div>');
vendor: 64,676 bytes, lines 1328-3166
1328				scroller = $('<div class="xdsoft_scroller"></div>');
1329				scrollbar.append(scroller);
1330
1331				timeboxparent.addClass('xdsoft_scroller_box').append(scrollbar);
1332				calcOffset = function calcOffset(event) {
1333					var offset = pointerEventToXY(event).y - startY + startTopScroll;
1334					if (offset < 0) {
1335						offset = 0;
1336					}
1337					if (offset + scroller[0].offsetHeight > h1) {
1338						offset = h1 - scroller[0].offsetHeight;
1339					}
1340					timeboxparent.trigger('scroll_element.xdsoft_scroller', [maximumOffset ? offset / maximumOffset : 0]);
1341				};
1342
1343				scroller
1344					.on('touchstart.xdsoft_scroller mousedown.xdsoft_scroller', function (event) {
1345						if (!parentHeight) {
1346							timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);
1347						}
1348
1349						startY = pointerEventToXY(event).y;
1350						startTopScroll = parseInt(scroller.css('marginTop'), 10);
1351						h1 = scrollbar[0].offsetHeight;
1352
1353						if (event.type === 'mousedown' || event.type === 'touchstart') {
1354							if (options.ownerDocument) {
1355								$(options.ownerDocument.body).addClass('xdsoft_noselect');
1356							}
1357							$([options.ownerDocument.body, options.contentWindow]).on('touchend mouseup.xdsoft_scroller', function arguments_callee() {
1358								$([options.ownerDocument.body, options.contentWindow]).off('touchend mouseup.xdsoft_scroller', arguments_callee)
1359									.off('mousemove.xdsoft_scroller', calcOffset)
1360									.removeClass('xdsoft_noselect');
1361							});
1362							$(options.ownerDocument.body).on('mousemove.xdsoft_scroller', calcOffset);
1363						} else {
1364							touchStart = true;
1365							event.stopPropagation();
1366							event.preventDefault();
1367						}
1368					})
1369					.on('touchmove', function (event) {
1370						if (touchStart) {
1371							event.preventDefault();
1372							calcOffset(event);
1373						}
1374					})
1375					.on('touchend touchcancel', function () {
1376						touchStart =  false;
1377						startTopScroll = 0;
1378					});
1379
1380				timeboxparent
1381					.on('scroll_element.xdsoft_scroller', function (event, percentage) {
1382						if (!parentHeight) {
1383							timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percentage, true]);
1384						}
1385						percentage = percentage > 1 ? 1 : (percentage < 0 || isNaN(percentage)) ? 0 : percentage;
1386						timeboxTop = parseFloat(Math.abs((timebox[0].offsetHeight - parentHeight) * percentage).toFixed(4));
1387
1388						scroller.css('marginTop', maximumOffset * percentage);
1389						timebox.css('marginTop', -timeboxTop);
1390					})
1391					.on('resize_scroll.xdsoft_scroller', function (event, percentage, noTriggerScroll) {
1392						var percent, sh;
1393						parentHeight = timeboxparent[0].clientHeight;
1394						height = timebox[0].offsetHeight;
1395						percent = parentHeight / height;
1396						sh = percent * scrollbar[0].offsetHeight;
1397						if (percent > 1) {
1398							scroller.hide();
1399						} else {
1400							scroller.show();
1401							scroller.css('height', parseInt(sh > 10 ? sh : 10, 10));
1402							maximumOffset = scrollbar[0].offsetHeight - scroller[0].offsetHeight;
1403							if (noTriggerScroll !== true) {
1404								timeboxparent.trigger('scroll_element.xdsoft_scroller', [percentage || timeboxTop / (height - parentHeight)]);
1405							}
1406						}
1407					});
1408
1409				timeboxparent.on('mousewheel', function (event) {
1410					var deltaY = getWheelDelta(event.originalEvent);
1411					var top = Math.max(0, timeboxTop - deltaY);
1412					timeboxparent.trigger('scroll_element.xdsoft_scroller', [top / (height - parentHeight)]);
1413					event.stopPropagation();
1414					return false;
1415				});
1416
1417				timeboxparent.on('touchstart', function (event) {
1418					start = pointerEventToXY(event);
1419					startTop = timeboxTop;
1420				});
1421
1422				timeboxparent.on('touchmove', function (event) {
1423					if (start) {
1424						event.preventDefault();
1425						var coord = pointerEventToXY(event);
1426						timeboxparent.trigger('scroll_element.xdsoft_scroller', [(startTop - (coord.y - start.y)) / (height - parentHeight)]);
1427					}
1428				});
1429
1430				timeboxparent.on('touchend touchcancel', function () {
1431					start = false;
1432					startTop = 0;
1433				});
1434			}
1435			timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);
1436		});
1437	};
1438
1439	$.fn.datetimepicker = function (opt, opt2) {
1440		var result = this,
1441			KEY0 = 48,
1442			KEY9 = 57,
1443			_KEY0 = 96,
1444			_KEY9 = 105,
1445            CTRLKEY = 17,
1446            CMDKEY = 91,
1447			DEL = 46,
1448			ENTER = 13,
1449			ESC = 27,
1450			BACKSPACE = 8,
1451			ARROWLEFT = 37,
1452			ARROWUP = 38,
1453			ARROWRIGHT = 39,
1454			ARROWDOWN = 40,
1455			TAB = 9,
1456			F5 = 116,
1457			AKEY = 65,
1458			CKEY = 67,
1459			VKEY = 86,
1460			ZKEY = 90,
1461			YKEY = 89,
1462            ctrlDown	=	false,
1463            cmdDown = false,
1464			options = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options),
1465
1466			lazyInitTimer = 0,
1467			createDateTimePicker,
1468			destroyDateTimePicker,
1469
1470			lazyInit = function (input) {
1471				input
1472					.on('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', function initOnActionCallback() {
1473						if (input.is(':disabled') || input.data('xdsoft_datetimepicker')) {
1474							return;
1475						}
1476						clearTimeout(lazyInitTimer);
1477						lazyInitTimer = setTimeout(function () {
1478
1479							if (!input.data('xdsoft_datetimepicker')) {
1480								createDateTimePicker(input);
1481							}
1482							input
1483								.off('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', initOnActionCallback)
1484								.trigger('open.xdsoft');
1485						}, 100);
1486					});
1487			};
1488
1489		createDateTimePicker = function (input) {
1490			var datetimepicker = $('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'),
1491				xdsoft_copyright = $('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),
1492				datepicker = $('<div class="xdsoft_datepicker active"></div>'),
1493				month_picker = $('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button>' +
1494					'<div class="xdsoft_label xdsoft_month"><span></span><i></i></div>' +
1495					'<div class="xdsoft_label xdsoft_year"><span></span><i></i></div>' +
1496					'<button type="button" class="xdsoft_next"></button></div>'),
1497				calendar = $('<div class="xdsoft_calendar"></div>'),
1498				timepicker = $('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),
1499				timeboxparent = timepicker.find('.xdsoft_time_box').eq(0),
1500				timebox = $('<div class="xdsoft_time_variant"></div>'),
1501				applyButton = $('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),
1502
1503				monthselect = $('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),
1504				yearselect = $('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),
1505				triggerAfterOpen = false,
1506				XDSoft_datetime,
1507
1508				xchangeTimer,
1509				timerclick,
1510				current_time_index,
1511				setPos,
1512				timer = 0,
1513				_xdsoft_datetime,
1514				forEachAncestorOf;
1515
1516			if (options.id) {
1517				datetimepicker.attr('id', options.id);
1518			}
1519			if (options.style) {
1520				datetimepicker.attr('style', options.style);
1521			}
1522			if (options.weeks) {
1523				datetimepicker.addClass('xdsoft_showweeks');
1524			}
1525			if (options.rtl) {
1526				datetimepicker.addClass('xdsoft_rtl');
1527			}
1528
1529			datetimepicker.addClass('xdsoft_' + options.theme);
1530			datetimepicker.addClass(options.className);
1531
1532			month_picker
1533				.find('.xdsoft_month span')
1534				.after(monthselect);
1535			month_picker
1536				.find('.xdsoft_year span')
1537				.after(yearselect);
1538
1539			month_picker
1540				.find('.xdsoft_month,.xdsoft_year')
1541				.on('touchstart mousedown.xdsoft', function (event) {
1542					var select = $(this).find('.xdsoft_select').eq(0),
1543						val = 0,
1544						top = 0,
1545						visible = select.is(':visible'),
1546						items,
1547						i;
1548
1549					month_picker
1550						.find('.xdsoft_select')
1551						.hide();
1552					if (_xdsoft_datetime.currentTime) {
1553						val = _xdsoft_datetime.currentTime[$(this).hasClass('xdsoft_month') ? 'getMonth' : 'getFullYear']();
1554					}
1555
1556					select[visible ? 'hide' : 'show']();
1557					for (items = select.find('div.xdsoft_option'), i = 0; i < items.length; i += 1) {
1558						if (items.eq(i).data('value') === val) {
1559							break;
1560						} else {
1561							top += items[0].offsetHeight;
1562						}
1563					}
1564
1565					select.xdsoftScroller(options, top / (select.children()[0].offsetHeight - (select[0].clientHeight)));
1566					event.stopPropagation();
1567					return false;
1568				});
1569
1570			var handleTouchMoved = function (event) {
1571				var evt = event.originalEvent;
1572				var touchPosition = evt.touches ? evt.touches[0] : evt;
1573				this.touchStartPosition = this.touchStartPosition || touchPosition;
1574				var xMovement = Math.abs(this.touchStartPosition.clientX - touchPosition.clientX);
1575				var yMovement = Math.abs(this.touchStartPosition.clientY - touchPosition.clientY);
1576				var distance = Math.sqrt(xMovement * xMovement + yMovement * yMovement);
1577				if(distance > options.touchMovedThreshold) {
1578					this.touchMoved = true;
1579				}
1580			}
1581
1582			month_picker
1583				.find('.xdsoft_select')
1584				.xdsoftScroller(options)
1585				.on('touchstart mousedown.xdsoft', function (event) {
1586					var evt = event.originalEvent;
1587					this.touchMoved = false;
1588					this.touchStartPosition = evt.touches ? evt.touches[0] : evt;
1589					event.stopPropagation();
1590					event.preventDefault();
1591				})
1592				.on('touchmove', '.xdsoft_option', handleTouchMoved)
1593				.on('touchend mousedown.xdsoft', '.xdsoft_option', function () {
1594					if (!this.touchMoved) {
1595						if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) {
1596							_xdsoft_datetime.currentTime = _xdsoft_datetime.now();
1597						}
1598
1599						var year = _xdsoft_datetime.currentTime.getFullYear();
1600						if (_xdsoft_datetime && _xdsoft_datetime.currentTime) {
1601							_xdsoft_datetime.currentTime[$(this).parent().parent().hasClass('xdsoft_monthselect') ? 'setMonth' : 'setFullYear']($(this).data('value'));
1602						}
1603
1604						$(this).parent().parent().hide();
1605
1606						datetimepicker.trigger('xchange.xdsoft');
1607						if (options.onChangeMonth && typeof options.onChangeMonth === 'function') {
1608							options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
1609						}
1610
1611						if (year !== _xdsoft_datetime.currentTime.getFullYear() && typeof options.onChangeYear === 'function') {
1612							options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
1613						}
1614					}
1615				});
1616
1617			datetimepicker.getValue = function () {
1618				return _xdsoft_datetime.getCurrentTime();
1619			};
1620
1621			datetimepicker.setOptions = function (_options) {
1622				var highlightedDates = {};
1623
1624				options = $.extend(true, {}, options, _options);
1625
1626				if (_options.allowTimes && Array.isArray(_options.allowTimes) && _options.allowTimes.length) {
1627					options.allowTimes = $.extend(true, [], _options.allowTimes);
1628				}
1629
1630				if (_options.weekends && Array.isArray(_options.weekends) && _options.weekends.length) {
1631					options.weekends = $.extend(true, [], _options.weekends);
1632				}
1633
1634				if (_options.allowDates && Array.isArray(_options.allowDates) && _options.allowDates.length) {
1635					options.allowDates = $.extend(true, [], _options.allowDates);
1636				}
1637
1638				if (_options.allowDateRe && Object.prototype.toString.call(_options.allowDateRe)==="[object String]") {
1639					options.allowDateRe = new RegExp(_options.allowDateRe);
1640				}
1641
1642				if (_options.highlightedDates && Array.isArray(_options.highlightedDates) && _options.highlightedDates.length) {
1643					$.each(_options.highlightedDates, function (index, value) {
1644						var splitData = $.map(value.split(','), $.trim),
1645							exDesc,
1646							hDate = new HighlightedDate(dateHelper.parseDate(splitData[0], options.formatDate), splitData[1], splitData[2]), // date, desc, style
1647							keyDate = dateHelper.formatDate(hDate.date, options.formatDate);
1648						if (highlightedDates[keyDate] !== undefined) {
1649							exDesc = highlightedDates[keyDate].desc;
1650							if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) {
1651								highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc;
1652							}
1653						} else {
1654							highlightedDates[keyDate] = hDate;
1655						}
1656					});
1657
1658					options.highlightedDates = $.extend(true, [], highlightedDates);
1659				}
1660
1661				if (_options.highlightedPeriods && Array.isArray(_options.highlightedPeriods) && _options.highlightedPeriods.length) {
1662					highlightedDates = $.extend(true, [], options.highlightedDates);
1663					$.each(_options.highlightedPeriods, function (index, value) {
1664						var dateTest, // start date
1665							dateEnd,
1666							desc,
1667							hDate,
1668							keyDate,
1669							exDesc,
1670							style;
1671						if (Array.isArray(value)) {
1672							dateTest = value[0];
1673							dateEnd = value[1];
1674							desc = value[2];
1675							style = value[3];
1676						}
1677						else {
1678							var splitData = $.map(value.split(','), $.trim);
1679							dateTest = dateHelper.parseDate(splitData[0], options.formatDate);
1680							dateEnd = dateHelper.parseDate(splitData[1], options.formatDate);
1681							desc = splitData[2];
1682							style = splitData[3];
1683						}
1684
1685						while (dateTest <= dateEnd) {
1686							hDate = new HighlightedDate(dateTest, desc, style);
1687							keyDate = dateHelper.formatDate(dateTest, options.formatDate);
1688							dateTest.setDate(dateTest.getDate() + 1);
1689							if (highlightedDates[keyDate] !== undefined) {
1690								exDesc = highlightedDates[keyDate].desc;
1691								if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) {
1692									highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc;
1693								}
1694							} else {
1695								highlightedDates[keyDate] = hDate;
1696							}
1697						}
1698					});
1699
1700					options.highlightedDates = $.extend(true, [], highlightedDates);
1701				}
1702
1703				if (_options.disabledDates && Array.isArray(_options.disabledDates) && _options.disabledDates.length) {
1704					options.disabledDates = $.extend(true, [], _options.disabledDates);
1705				}
1706
1707				if (_options.disabledWeekDays && Array.isArray(_options.disabledWeekDays) && _options.disabledWeekDays.length) {
1708					options.disabledWeekDays = $.extend(true, [], _options.disabledWeekDays);
1709				}
1710
1711				if ((options.open || options.opened) && (!options.inline)) {
1712					input.trigger('open.xdsoft');
1713				}
1714
1715				if (options.inline) {
1716					triggerAfterOpen = true;
1717					datetimepicker.addClass('xdsoft_inline');
1718					input.after(datetimepicker).hide();
1719				}
1720
1721				if (options.inverseButton) {
1722					options.next = 'xdsoft_prev';
1723					options.prev = 'xdsoft_next';
1724				}
1725
1726				if (options.datepicker) {
1727					datepicker.addClass('active');
1728				} else {
1729					datepicker.removeClass('active');
1730				}
1731
1732				if (options.timepicker) {
1733					timepicker.addClass('active');
1734				} else {
1735					timepicker.removeClass('active');
1736				}
1737
1738				if (options.value) {
1739					_xdsoft_datetime.setCurrentTime(options.value);
1740					if (input && input.val) {
1741						input.val(_xdsoft_datetime.str);
1742					}
1743				}
1744
1745				if (isNaN(options.dayOfWeekStart)) {
1746					options.dayOfWeekStart = 0;
1747				} else {
1748					options.dayOfWeekStart = parseInt(options.dayOfWeekStart, 10) % 7;
1749				}
1750
1751				if (!options.timepickerScrollbar) {
1752					timeboxparent.xdsoftScroller(options, 'hide');
1753				}
1754
1755				if (options.minDate && /^[\+\-](.*)$/.test(options.minDate)) {
1756					options.minDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.minDate), options.formatDate);
1757				}
1758
1759				if (options.maxDate &&  /^[\+\-](.*)$/.test(options.maxDate)) {
1760					options.maxDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.maxDate), options.formatDate);
1761				}
1762
1763                if (options.minDateTime &&  /^\+(.*)$/.test(options.minDateTime)) {
1764                	options.minDateTime = _xdsoft_datetime.strToDateTime(options.minDateTime).dateFormat(options.formatDate);
1765                }
1766
1767                if (options.maxDateTime &&  /^\+(.*)$/.test(options.maxDateTime)) {
1768                	options.maxDateTime = _xdsoft_datetime.strToDateTime(options.maxDateTime).dateFormat(options.formatDate);
1769                }
1770
1771				applyButton.toggle(options.showApplyButton);
1772
1773				month_picker
1774					.find('.xdsoft_today_button')
1775					.css('visibility', !options.todayButton ? 'hidden' : 'visible');
1776
1777				month_picker
1778					.find('.' + options.prev)
1779					.css('visibility', !options.prevButton ? 'hidden' : 'visible');
1780
1781				month_picker
1782					.find('.' + options.next)
1783					.css('visibility', !options.nextButton ? 'hidden' : 'visible');
1784
1785				setMask(options);
1786
1787				if (options.validateOnBlur) {
1788					input
1789						.off('blur.xdsoft')
1790						.on('blur.xdsoft', function () {
1791							if (options.allowBlank && (!$(this).val().trim().length ||
1792									(typeof options.mask === "string" && $(this).val().trim() === options.mask.replace(/[0-9]/g, '_')))) {
1793								$(this).val(null);
1794								datetimepicker.data('xdsoft_datetime').empty();
1795							} else {
1796								var d = dateHelper.parseDate($(this).val(), options.format);
1797								if (d) { // parseDate() may skip some invalid parts like date or time, so make it clear for user: show parsed date/time
1798									$(this).val(dateHelper.formatDate(d, options.format));
1799								} else {
1800									var splittedHours   = +([$(this).val()[0], $(this).val()[1]].join('')),
1801										splittedMinutes = +([$(this).val()[2], $(this).val()[3]].join(''));
1802
1803									// parse the numbers as 0312 => 03:12
1804									if (!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) {
1805										$(this).val([splittedHours, splittedMinutes].map(function (item) {
1806											return item > 9 ? item : '0' + item;
1807										}).join(':'));
1808									} else {
1809										$(this).val(dateHelper.formatDate(_xdsoft_datetime.now(), options.format));
1810									}
1811								}
1812								datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
1813							}
1814
1815							datetimepicker.trigger('changedatetime.xdsoft');
1816							datetimepicker.trigger('close.xdsoft');
1817						});
1818				}
1819				options.dayOfWeekStartPrev = (options.dayOfWeekStart === 0) ? 6 : options.dayOfWeekStart - 1;
1820
1821				datetimepicker
1822					.trigger('xchange.xdsoft')
1823					.trigger('afterOpen.xdsoft');
1824			};
1825
1826			datetimepicker
1827				.data('options', options)
1828				.on('touchstart mousedown.xdsoft', function (event) {
1829					event.stopPropagation();
1830					event.preventDefault();
1831					yearselect.hide();
1832					monthselect.hide();
1833					return false;
1834				});
1835
1836			//scroll_element = timepicker.find('.xdsoft_time_box');
1837			timeboxparent.append(timebox);
1838			timeboxparent.xdsoftScroller(options);
1839
1840			datetimepicker.on('afterOpen.xdsoft', function () {
1841				timeboxparent.xdsoftScroller(options);
1842			});
1843
1844			datetimepicker
1845				.append(datepicker)
1846				.append(timepicker);
1847
1848			if (options.withoutCopyright !== true) {
1849				datetimepicker
1850					.append(xdsoft_copyright);
1851			}
1852
1853			datepicker
1854				.append(month_picker)
1855				.append(calendar)
1856				.append(applyButton);
1857
1858            if (options.insideParent) {
1859                $(input).parent().append(datetimepicker);
1860            } else {
1861                $(options.parentID).append(datetimepicker);
1862            }
1863
1864			XDSoft_datetime = function () {
1865				var _this = this;
1866				_this.now = function (norecursion) {
1867					var d = new Date(),
1868						date,
1869						time;
1870
1871					if (!norecursion && options.defaultDate) {
1872						date = _this.strToDateTime(options.defaultDate);
1873						d.setFullYear(date.getFullYear());
1874						d.setMonth(date.getMonth());
1875						d.setDate(date.getDate());
1876					}
1877
1878					d.setFullYear(d.getFullYear());
1879
1880					if (!norecursion && options.defaultTime) {
1881						time = _this.strtotime(options.defaultTime);
1882						d.setHours(time.getHours());
1883						d.setMinutes(time.getMinutes());
1884						d.setSeconds(time.getSeconds());
1885						d.setMilliseconds(time.getMilliseconds());
1886					}
1887					return d;
1888				};
1889
1890				_this.isValidDate = function (d) {
1891					if (Object.prototype.toString.call(d) !== "[object Date]") {
1892						return false;
1893					}
1894					return !isNaN(d.getTime());
1895				};
1896
1897				_this.setCurrentTime = function (dTime, requireValidDate) {
1898					if (typeof dTime === 'string') {
1899						_this.currentTime = _this.strToDateTime(dTime);
1900					}
1901					else if (_this.isValidDate(dTime)) {
1902						_this.currentTime = dTime;
1903					}
1904					else if (!dTime && !requireValidDate && options.allowBlank && !options.inline) {
1905						_this.currentTime = null;
1906					}
1907					else {
1908						_this.currentTime = _this.now();
1909					}
1910
1911					datetimepicker.trigger('xchange.xdsoft');
1912				};
1913
1914				_this.empty = function () {
1915					_this.currentTime = null;
1916				};
1917
1918				_this.getCurrentTime = function () {
1919					return _this.currentTime;
1920				};
1921
1922				_this.nextMonth = function () {
1923
1924					if (_this.currentTime === undefined || _this.currentTime === null) {
1925						_this.currentTime = _this.now();
1926					}
1927
1928					var month = _this.currentTime.getMonth() + 1,
1929						year;
1930					if (month === 12) {
1931						_this.currentTime.setFullYear(_this.currentTime.getFullYear() + 1);
1932						month = 0;
1933					}
1934
1935					year = _this.currentTime.getFullYear();
1936
1937					_this.currentTime.setDate(
1938						Math.min(
1939							new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),
1940							_this.currentTime.getDate()
1941						)
1942					);
1943					_this.currentTime.setMonth(month);
1944
1945					if (options.onChangeMonth && typeof options.onChangeMonth === 'function') {
1946						options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
1947					}
1948
1949					if (year !== _this.currentTime.getFullYear() && typeof options.onChangeYear === 'function') {
1950						options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
1951					}
1952
1953					datetimepicker.trigger('xchange.xdsoft');
1954					return month;
1955				};
1956
1957				_this.prevMonth = function () {
1958
1959					if (_this.currentTime === undefined || _this.currentTime === null) {
1960						_this.currentTime = _this.now();
1961					}
1962
1963					var month = _this.currentTime.getMonth() - 1;
1964					if (month === -1) {
1965						_this.currentTime.setFullYear(_this.currentTime.getFullYear() - 1);
1966						month = 11;
1967					}
1968					_this.currentTime.setDate(
1969						Math.min(
1970							new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),
1971							_this.currentTime.getDate()
1972						)
1973					);
1974					_this.currentTime.setMonth(month);
1975					if (options.onChangeMonth && typeof options.onChangeMonth === 'function') {
1976						options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
1977					}
1978					datetimepicker.trigger('xchange.xdsoft');
1979					return month;
1980				};
1981
1982				_this.getWeekOfYear = function (datetime) {
1983					if (options.onGetWeekOfYear && typeof options.onGetWeekOfYear === 'function') {
1984						var week = options.onGetWeekOfYear.call(datetimepicker, datetime);
1985						if (typeof week !== 'undefined') {
1986							return week;
1987						}
1988					}
1989					var onejan = new Date(datetime.getFullYear(), 0, 1);
1990
1991					//First week of the year is th one with the first Thursday according to ISO8601
1992					if (onejan.getDay() !== 4) {
1993						onejan.setMonth(0, 1 + ((4 - onejan.getDay()+ 7) % 7));
1994					}
1995
1996					return Math.ceil((((datetime - onejan) / 86400000) + onejan.getDay() + 1) / 7);
1997				};
1998
1999				_this.strToDateTime = function (sDateTime) {
2000					var tmpDate = [], timeOffset, currentTime;
2001
2002					if (sDateTime && sDateTime instanceof Date && _this.isValidDate(sDateTime)) {
2003						return sDateTime;
2004					}
2005
2006					tmpDate = /^([+-]{1})(.*)$/.exec(sDateTime);
2007
2008					if (tmpDate) {
2009						tmpDate[2] = dateHelper.parseDate(tmpDate[2], options.formatDate);
2010					}
2011
2012					if (tmpDate  && tmpDate[2]) {
2013						timeOffset = tmpDate[2].getTime() - (tmpDate[2].getTimezoneOffset()) * 60000;
2014						currentTime = new Date((_this.now(true)).getTime() + parseInt(tmpDate[1] + '1', 10) * timeOffset);
2015					} else {
2016						currentTime = sDateTime ? dateHelper.parseDate(sDateTime, options.format) : _this.now();
2017					}
2018
2019					if (!_this.isValidDate(currentTime)) {
2020						currentTime = _this.now();
2021					}
2022
2023					return currentTime;
2024				};
2025
2026				_this.strToDate = function (sDate) {
2027					if (sDate && sDate instanceof Date && _this.isValidDate(sDate)) {
2028						return sDate;
2029					}
2030
2031					var currentTime = sDate ? dateHelper.parseDate(sDate, options.formatDate) : _this.now(true);
2032					if (!_this.isValidDate(currentTime)) {
2033						currentTime = _this.now(true);
2034					}
2035					return currentTime;
2036				};
2037
2038				_this.strtotime = function (sTime) {
2039					if (sTime && sTime instanceof Date && _this.isValidDate(sTime)) {
2040						return sTime;
2041					}
2042					var currentTime = sTime ? dateHelper.parseDate(sTime, options.formatTime) : _this.now(true);
2043					if (!_this.isValidDate(currentTime)) {
2044						currentTime = _this.now(true);
2045					}
2046					return currentTime;
2047				};
2048
2049				_this.str = function () {
2050					var format = options.format;
2051					if (options.yearOffset) {
2052						format = format.replace('Y', _this.currentTime.getFullYear() + options.yearOffset);
2053						format = format.replace('y', String(_this.currentTime.getFullYear() + options.yearOffset).substring(2, 4));
2054					}
2055					return dateHelper.formatDate(_this.currentTime, format);
2056				};
2057				_this.currentTime = this.now();
2058			};
2059
2060			_xdsoft_datetime = new XDSoft_datetime();
2061
2062			applyButton.on('touchend click', function (e) {//pathbrite
2063				e.preventDefault();
2064				datetimepicker.data('changed', true);
2065				_xdsoft_datetime.setCurrentTime(getCurrentValue());
2066				input.val(_xdsoft_datetime.str());
2067				datetimepicker.trigger('close.xdsoft');
2068			});
2069			month_picker
2070				.find('.xdsoft_today_button')
2071				.on('touchend mousedown.xdsoft', function () {
2072					datetimepicker.data('changed', true);
2073					_xdsoft_datetime.setCurrentTime(0, true);
2074					datetimepicker.trigger('afterOpen.xdsoft');
2075				}).on('dblclick.xdsoft', function () {
2076				var currentDate = _xdsoft_datetime.getCurrentTime(), minDate, maxDate;
2077				currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());
2078				minDate = _xdsoft_datetime.strToDate(options.minDate);
2079				minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
2080				if (currentDate < minDate) {
2081					return;
2082				}
2083				maxDate = _xdsoft_datetime.strToDate(options.maxDate);
2084				maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate());
2085				if (currentDate > maxDate) {
2086					return;
2087				}
2088				input.val(_xdsoft_datetime.str());
2089				input.trigger('change');
2090				datetimepicker.trigger('close.xdsoft');
2091			});
2092			month_picker
2093				.find('.xdsoft_prev,.xdsoft_next')
2094				.on('touchend mousedown.xdsoft', function () {
2095					var $this = $(this),
2096						timer = 0,
2097						stop = false;
2098
2099					(function arguments_callee1(v) {
2100						if ($this.hasClass(options.next)) {
2101							_xdsoft_datetime.nextMonth();
2102						} else if ($this.hasClass(options.prev)) {
2103							_xdsoft_datetime.prevMonth();
2104						}
2105						if (options.monthChangeSpinner) {
2106							if (!stop) {
2107								timer = setTimeout(arguments_callee1, v || 100);
2108							}
2109						}
2110					}(500));
2111
2112					$([options.ownerDocument.body, options.contentWindow]).on('touchend mouseup.xdsoft', function arguments_callee2() {
2113						clearTimeout(timer);
2114						stop = true;
2115						$([options.ownerDocument.body, options.contentWindow]).off('touchend mouseup.xdsoft', arguments_callee2);
2116					});
2117				});
2118
2119			timepicker
2120				.find('.xdsoft_prev,.xdsoft_next')
2121				.on('touchend mousedown.xdsoft', function () {
2122					var $this = $(this),
2123						timer = 0,
2124						stop = false,
2125						period = 110;
2126					(function arguments_callee4(v) {
2127						var pheight = timeboxparent[0].clientHeight,
2128							height = timebox[0].offsetHeight,
2129							top = Math.abs(parseInt(timebox.css('marginTop'), 10));
2130						/**
2131						 *  Fixes a bug which happens if:
2132						 *  top is < the timeHeightInTimePicker, it will cause the up arrow to stop working
2133						 *  same for the down arrow if it's not exactly on the pixel
2134						 */
2135						if (top < options.timeHeightInTimePicker) {
2136							top = options.timeHeightInTimePicker;
2137						} else if ($this.hasClass(options.next) && (height - pheight) < top) {
2138							timebox.css('marginTop', '-' + height + 'px');
2139						}
2140
2141						if ($this.hasClass(options.next) && (height - pheight) > top) {
2142							timebox.css('marginTop', '-' + (top + options.timeHeightInTimePicker) + 'px');
2143						} else if ($this.hasClass(options.prev) && top - options.timeHeightInTimePicker >= 0) {
2144							timebox.css('marginTop', '-' + (top - options.timeHeightInTimePicker) + 'px');
2145						}
2146						/**
2147						 * Fixed bug:
2148						 * When using css3 transition, it will cause a bug that you cannot scroll the timepicker list.
2149						 * The reason is that the transition-duration time, if you set it to 0, all things fine, otherwise, this
2150						 * would cause a bug when you use jquery.css method.
2151						 * Let's say: * { transition: all .5s ease; }
2152						 * jquery timebox.css('marginTop') will return the original value which is before you clicking the next/prev button,
2153						 * meanwhile the timebox[0].style.marginTop will return the right value which is after you clicking the
2154						 * next/prev button.
2155						 *
2156						 * What we should do:
2157						 * Replace timebox.css('marginTop') with timebox[0].style.marginTop.
2158						 */
2159						timeboxparent.trigger('scroll_element.xdsoft_scroller', [Math.abs(parseInt(timebox[0].style.marginTop, 10) / (height - pheight))]);
2160						period = (period > 10) ? 10 : period - 10;
2161						if (!stop) {
2162							timer = setTimeout(arguments_callee4, v || period);
2163						}
2164					}(500));
2165					$([options.ownerDocument.body, options.contentWindow]).on('touchend mouseup.xdsoft', function arguments_callee5() {
2166						clearTimeout(timer);
2167						stop = true;
2168						$([options.ownerDocument.body, options.contentWindow])
2169							.off('touchend mouseup.xdsoft', arguments_callee5);
2170					});
2171				});
2172
2173			xchangeTimer = 0;
2174			// base handler - generating a calendar and timepicker
2175			datetimepicker
2176				.on('xchange.xdsoft', function (event) {
2177					clearTimeout(xchangeTimer);
2178					xchangeTimer = setTimeout(function () {
2179
2180						if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null || isNaN(_xdsoft_datetime.currentTime.getTime())) {
2181							_xdsoft_datetime.currentTime = _xdsoft_datetime.now();
2182						}
2183
2184						var table =	'',
2185							start = new Date(_xdsoft_datetime.currentTime.getFullYear(), _xdsoft_datetime.currentTime.getMonth(), 1, 12, 0, 0),
2186							i = 0,
2187							j,
2188							today = _xdsoft_datetime.now(),
2189							maxDate = false,
2190							minDate = false,
2191							minDateTime = false,
2192							maxDateTime = false,
2193							hDate,
2194							day,
2195							d,
2196							y,
2197							m,
2198							w,
2199							classes = [],
2200							customDateSettings,
2201							newRow = true,
2202							time = '',
2203							h,
2204							line_time,
2205							description;
2206
2207						while (start.getDay() !== options.dayOfWeekStart) {
2208							start.setDate(start.getDate() - 1);
2209						}
2210
2211						table += '<table><thead><tr>';
2212
2213						if (options.weeks) {
2214							table += '<th></th>';
2215						}
2216
2217						for (j = 0; j < 7; j += 1) {
2218							table += '<th>' + options.i18n[globalLocale].dayOfWeekShort[(j + options.dayOfWeekStart) % 7] + '</th>';
2219						}
2220
2221						table += '</tr></thead>';
2222						table += '<tbody>';
2223
2224						if (options.maxDate !== false) {
2225							maxDate = _xdsoft_datetime.strToDate(options.maxDate);
2226							maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59, 59, 999);
2227						}
2228
2229						if (options.minDate !== false) {
2230							minDate = _xdsoft_datetime.strToDate(options.minDate);
2231							minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
2232						}
2233
2234                        if (options.minDateTime !== false) {
2235							minDateTime = _xdsoft_datetime.strToDate(options.minDateTime);
2236							minDateTime = new Date(minDateTime.getFullYear(), minDateTime.getMonth(), minDateTime.getDate(), minDateTime.getHours(), minDateTime.getMinutes(), minDateTime.getSeconds());
2237						}
2238
2239                        if (options.maxDateTime !== false) {
2240							maxDateTime = _xdsoft_datetime.strToDate(options.maxDateTime);
2241							maxDateTime = new Date(maxDateTime.getFullYear(), maxDateTime.getMonth(), maxDateTime.getDate(), maxDateTime.getHours(), maxDateTime.getMinutes(), maxDateTime.getSeconds());
2242						}
2243
2244						var maxDateTimeDay;
2245						if (maxDateTime !== false) {
2246							maxDateTimeDay = ((maxDateTime.getFullYear() * 12) + maxDateTime.getMonth()) * 31 + maxDateTime.getDate();
2247						}
2248
2249						while (i < _xdsoft_datetime.currentTime.countDaysInMonth() || start.getDay() !== options.dayOfWeekStart || _xdsoft_datetime.currentTime.getMonth() === start.getMonth()) {
2250							classes = [];
2251							i += 1;
2252
2253							day = start.getDay();
2254							d = start.getDate();
2255							y = start.getFullYear();
2256							m = start.getMonth();
2257							w = _xdsoft_datetime.getWeekOfYear(start);
2258							description = '';
2259
2260							classes.push('xdsoft_date');
2261
2262							if (options.beforeShowDay && typeof options.beforeShowDay.call === 'function') {
2263								customDateSettings = options.beforeShowDay.call(datetimepicker, start);
2264							} else {
2265								customDateSettings = null;
2266							}
2267
2268							if(options.allowDateRe && Object.prototype.toString.call(options.allowDateRe) === "[object RegExp]"){
2269								if(!options.allowDateRe.test(dateHelper.formatDate(start, options.formatDate))){
2270									classes.push('xdsoft_disabled');
2271								}
2272							}
2273
2274							if(options.allowDates && options.allowDates.length>0){
2275								if(options.allowDates.indexOf(dateHelper.formatDate(start, options.formatDate)) === -1){
2276									classes.push('xdsoft_disabled');
2277								}
2278							}
2279
2280							var currentDay = ((start.getFullYear() * 12) + start.getMonth()) * 31 + start.getDate();
2281							if ((maxDate !== false && start > maxDate) || (minDateTime !== false && start < minDateTime)  || (minDate !== false && start < minDate) || (maxDateTime !== false && currentDay > maxDateTimeDay) || (customDateSettings && customDateSettings[0] === false)) {
2282								classes.push('xdsoft_disabled');
2283							}
2284
2285							if (options.disabledDates.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1) {
2286								classes.push('xdsoft_disabled');
2287							}
2288
2289							if (options.disabledWeekDays.indexOf(day) !== -1) {
2290								classes.push('xdsoft_disabled');
2291							}
2292
2293							if (input.is('[disabled]')) {
2294								classes.push('xdsoft_disabled');
2295							}
2296
2297							if (customDateSettings && customDateSettings[1] !== "") {
2298								classes.push(customDateSettings[1]);
2299							}
2300
2301							if (_xdsoft_datetime.currentTime.getMonth() !== m) {
2302								classes.push('xdsoft_other_month');
2303							}
2304
2305							if ((options.defaultSelect || datetimepicker.data('changed')) && dateHelper.formatDate(_xdsoft_datetime.currentTime, options.formatDate) === dateHelper.formatDate(start, options.formatDate)) {
2306								classes.push('xdsoft_current');
2307							}
2308
2309							if (dateHelper.formatDate(today, options.formatDate) === dateHelper.formatDate(start, options.formatDate)) {
2310								classes.push('xdsoft_today');
2311							}
2312
2313							if (start.getDay() === 0 || start.getDay() === 6 || options.weekends.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1) {
2314								classes.push('xdsoft_weekend');
2315							}
2316
2317							if (options.highlightedDates[dateHelper.formatDate(start, options.formatDate)] !== undefined) {
2318								hDate = options.highlightedDates[dateHelper.formatDate(start, options.formatDate)];
2319								classes.push(hDate.style === undefined ? 'xdsoft_highlighted_default' : hDate.style);
2320								description = hDate.desc === undefined ? '' : hDate.desc;
2321							}
2322
2323							if (options.beforeShowDay && typeof options.beforeShowDay === 'function') {
2324								classes.push(options.beforeShowDay(start));
2325							}
2326
2327							if (newRow) {
2328								table += '<tr>';
2329								newRow = false;
2330								if (options.weeks) {
2331									table += '<th>' + w + '</th>';
2332								}
2333							}
2334
2335							table += '<td data-date="' + d + '" data-month="' + m + '" data-year="' + y + '"' + ' class="xdsoft_date xdsoft_day_of_week' + start.getDay() + ' ' + classes.join(' ') + '" title="' + description + '">' +
2336								'<div>' + d + '</div>' +
2337								'</td>';
2338
2339							if (start.getDay() === options.dayOfWeekStartPrev) {
2340								table += '</tr>';
2341								newRow = true;
2342							}
2343
2344							start.setDate(d + 1);
2345						}
2346						table += '</tbody></table>';
2347
2348						calendar.html(table);
2349
2350						month_picker.find('.xdsoft_label span').eq(0).text(options.i18n[globalLocale].months[_xdsoft_datetime.currentTime.getMonth()]);
2351						month_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear() + options.yearOffset);
2352
2353						// generate timebox
2354						time = '';
2355						h = '';
2356						m = '';
2357
2358						var minTimeMinutesOfDay = 0;
2359						if (options.minTime !== false) {
2360						    var t = _xdsoft_datetime.strtotime(options.minTime);
2361						    minTimeMinutesOfDay = 60 * t.getHours() + t.getMinutes();
2362						}
2363						var maxTimeMinutesOfDay = 24 * 60;
2364						if (options.maxTime !== false) {
2365						    var t = _xdsoft_datetime.strtotime(options.maxTime);
2366						    maxTimeMinutesOfDay = 60 * t.getHours() + t.getMinutes();
2367						}
2368
2369						if (options.minDateTime !== false) {
2370							var t = _xdsoft_datetime.strToDateTime(options.minDateTime);
2371						        var currentDayIsMinDateTimeDay = dateHelper.formatDate(_xdsoft_datetime.currentTime, options.formatDate) === dateHelper.formatDate(t, options.formatDate);
2372							if (currentDayIsMinDateTimeDay) {
2373								var m = 60 * t.getHours() + t.getMinutes();
2374								if (m > minTimeMinutesOfDay) minTimeMinutesOfDay = m;
2375							}
2376						}
2377
2378						if (options.maxDateTime !== false) {
2379							var t = _xdsoft_datetime.strToDateTime(options.maxDateTime);
2380						        var currentDayIsMaxDateTimeDay = dateHelper.formatDate(_xdsoft_datetime.currentTime, options.formatDate) === dateHelper.formatDate(t, options.formatDate);
2381							if (currentDayIsMaxDateTimeDay) {
2382								var m = 60 * t.getHours() + t.getMinutes();
2383								if (m < maxTimeMinutesOfDay) maxTimeMinutesOfDay = m;
2384							}
2385						}
2386
2387						line_time = function line_time(h, m) {
2388							var now = _xdsoft_datetime.now(), current_time,
2389								isALlowTimesInit = options.allowTimes && Array.isArray(options.allowTimes) && options.allowTimes.length;
2390							now.setHours(h);
2391							h = parseInt(now.getHours(), 10);
2392							now.setMinutes(m);
2393							m = parseInt(now.getMinutes(), 10);
2394							classes = [];
2395							var currentMinutesOfDay = 60 * h + m;
2396							if (input.is('[disabled]') || (currentMinutesOfDay >= maxTimeMinutesOfDay) || (currentMinutesOfDay < minTimeMinutesOfDay)) {
2397								classes.push('xdsoft_disabled');
2398							}
2399
2400							current_time = new Date(_xdsoft_datetime.currentTime);
2401							current_time.setHours(parseInt(_xdsoft_datetime.currentTime.getHours(), 10));
2402
2403							if (!isALlowTimesInit) {
2404								current_time.setMinutes(Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step);
2405							}
2406
2407							if ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && current_time.getHours() === parseInt(h, 10) && ((!isALlowTimesInit && options.step > 59) || current_time.getMinutes() === parseInt(m, 10))) {
2408								if (options.defaultSelect || datetimepicker.data('changed')) {
2409									classes.push('xdsoft_current');
2410								} else if (options.initTime) {
2411									classes.push('xdsoft_init_time');
2412								}
2413							}
2414							if (parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10)) {
2415								classes.push('xdsoft_today');
2416							}
2417							time += '<div class="xdsoft_time ' + classes.join(' ') + '" data-hour="' + h + '" data-minute="' + m + '">' + dateHelper.formatDate(now, options.formatTime) + '</div>';
2418						};
2419
2420						if (!options.allowTimes || !Array.isArray(options.allowTimes) || !options.allowTimes.length) {
2421							for (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1) {
2422								for (j = 0; j < 60; j += options.step) {
2423								        var currentMinutesOfDay = i * 60 + j;
2424								        if (currentMinutesOfDay < minTimeMinutesOfDay) continue;
2425								        if (currentMinutesOfDay >= maxTimeMinutesOfDay) continue;
2426									h = (i < 10 ? '0' : '') + i;
2427									m = (j < 10 ? '0' : '') + j;
2428									line_time(h, m);
2429								}
2430							}
2431						} else {
2432							for (i = 0; i < options.allowTimes.length; i += 1) {
2433								h = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours();
2434								m = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes();
2435								line_time(h, m);
2436							}
2437						}
2438
2439						timebox.html(time);
2440
2441						opt = '';
2442
2443						for (i = parseInt(options.yearStart, 10); i <= parseInt(options.yearEnd, 10); i += 1) {
2444							opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getFullYear() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + (i + options.yearOffset) + '</div>';
2445						}
2446						yearselect.children().eq(0)
2447							.html(opt);
2448
2449						for (i = parseInt(options.monthStart, 10), opt = ''; i <= parseInt(options.monthEnd, 10); i += 1) {
2450							opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getMonth() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + options.i18n[globalLocale].months[i] + '</div>';
2451						}
2452						monthselect.children().eq(0).html(opt);
2453						$(datetimepicker)
2454							.trigger('generate.xdsoft');
2455					}, 10);
2456					event.stopPropagation();
2457				})
2458				.on('afterOpen.xdsoft', function () {
2459					if (options.timepicker) {
2460						var classType, pheight, height, top;
2461						if (timebox.find('.xdsoft_current').length) {
2462							classType = '.xdsoft_current';
2463						} else if (timebox.find('.xdsoft_init_time').length) {
2464							classType = '.xdsoft_init_time';
2465						}
2466						if (classType) {
2467							pheight = timeboxparent[0].clientHeight;
2468							height = timebox[0].offsetHeight;
2469							top = timebox.find(classType).index() * options.timeHeightInTimePicker + 1;
2470							if ((height - pheight) < top) {
2471								top = height - pheight;
2472							}
2473							timeboxparent.trigger('scroll_element.xdsoft_scroller', [parseInt(top, 10) / (height - pheight)]);
2474						} else {
2475							timeboxparent.trigger('scroll_element.xdsoft_scroller', [0]);
2476						}
2477					}
2478				});
2479
2480			timerclick = 0;
2481			calendar
2482				.on('touchend click.xdsoft', 'td', function (xdevent) {
2483					xdevent.stopPropagation();  // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap
2484					timerclick += 1;
2485					var $this = $(this),
2486						currentTime = _xdsoft_datetime.currentTime;
2487
2488					if (currentTime === undefined || currentTime === null) {
2489						_xdsoft_datetime.currentTime = _xdsoft_datetime.now();
2490						currentTime = _xdsoft_datetime.currentTime;
2491					}
2492
2493					if ($this.hasClass('xdsoft_disabled')) {
2494						return false;
2495					}
2496
2497					currentTime.setDate(1);
2498					currentTime.setFullYear($this.data('year'));
2499					currentTime.setMonth($this.data('month'));
2500					currentTime.setDate($this.data('date'));
2501
2502					datetimepicker.trigger('select.xdsoft', [currentTime]);
2503
2504					input.val(_xdsoft_datetime.str());
2505
2506					if (options.onSelectDate &&	typeof options.onSelectDate === 'function') {
2507						options.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
2508					}
2509
2510					datetimepicker.data('changed', true);
2511					datetimepicker.trigger('xchange.xdsoft');
2512					datetimepicker.trigger('changedatetime.xdsoft');
2513					if ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === false && !options.timepicker))) && !options.inline) {
2514						datetimepicker.trigger('close.xdsoft');
2515					}
2516					setTimeout(function () {
2517						timerclick = 0;
2518					}, 200);
2519				});
2520
2521			timebox
2522				.on('touchstart', 'div', function (xdevent) {
2523					this.touchMoved = false;
2524				})
2525				.on('touchmove', 'div', handleTouchMoved)
2526				.on('touchend click.xdsoft', 'div', function (xdevent) {
2527					if (!this.touchMoved) {
2528						xdevent.stopPropagation();
2529						var $this = $(this),
2530							currentTime = _xdsoft_datetime.currentTime;
2531
2532						if (currentTime === undefined || currentTime === null) {
2533							_xdsoft_datetime.currentTime = _xdsoft_datetime.now();
2534							currentTime = _xdsoft_datetime.currentTime;
2535						}
2536
2537						if ($this.hasClass('xdsoft_disabled')) {
2538							return false;
2539						}
2540						currentTime.setHours($this.data('hour'));
2541						currentTime.setMinutes($this.data('minute'));
2542						datetimepicker.trigger('select.xdsoft', [currentTime]);
2543
2544						datetimepicker.data('input').val(_xdsoft_datetime.str());
2545
2546						if (options.onSelectTime && typeof options.onSelectTime === 'function') {
2547							options.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
2548						}
2549						datetimepicker.data('changed', true);
2550						datetimepicker.trigger('xchange.xdsoft');
2551						datetimepicker.trigger('changedatetime.xdsoft');
2552						if (options.inline !== true && options.closeOnTimeSelect === true) {
2553							datetimepicker.trigger('close.xdsoft');
2554						}
2555					}
2556				});
2557
2558			datepicker
2559				.on('mousewheel.xdsoft', function (event) {
2560					if (!options.scrollMonth) {
2561						return true;
2562					}
2563					if (event.deltaY < 0) {
2564						_xdsoft_datetime.nextMonth();
2565					} else {
2566						_xdsoft_datetime.prevMonth();
2567					}
2568					return false;
2569				});
2570
2571			input
2572				.on('mousewheel.xdsoft', function (event) {
2573					if (!options.scrollInput) {
2574						return true;
2575					}
2576					if (!options.datepicker && options.timepicker) {
2577						current_time_index = timebox.find('.xdsoft_current').length ? timebox.find('.xdsoft_current').eq(0).index() : 0;
2578						if (current_time_index + event.deltaY >= 0 && current_time_index + event.deltaY < timebox.children().length) {
2579							current_time_index += event.deltaY;
2580						}
2581						if (timebox.children().eq(current_time_index).length) {
2582							timebox.children().eq(current_time_index).trigger('mousedown');
2583						}
2584						return false;
2585					}
2586					if (options.datepicker && !options.timepicker) {
2587						datepicker.trigger(event, [event.deltaY, event.deltaX, event.deltaY]);
2588						if (input.val) {
2589							input.val(_xdsoft_datetime.str());
2590						}
2591						datetimepicker.trigger('changedatetime.xdsoft');
2592						return false;
2593					}
2594				});
2595
2596			datetimepicker
2597				.on('changedatetime.xdsoft', function (event) {
2598					if (options.onChangeDateTime && typeof options.onChangeDateTime === 'function') {
2599						var $input = datetimepicker.data('input');
2600						options.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event);
2601						delete options.value;
2602						$input.trigger('change');
2603					}
2604				})
2605				.on('generate.xdsoft', function () {
2606					if (options.onGenerate && typeof options.onGenerate === 'function') {
2607						options.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
2608					}
2609					if (triggerAfterOpen) {
2610						datetimepicker.trigger('afterOpen.xdsoft');
2611						triggerAfterOpen = false;
2612					}
2613				})
2614				.on('click.xdsoft', function (xdevent) {
2615					xdevent.stopPropagation();
2616				});
2617
2618			current_time_index = 0;
2619
2620			/**
2621			 * Runs the callback for each of the specified node's ancestors.
2622			 *
2623			 * Return FALSE from the callback to stop ascending.
2624			 *
2625			 * @param {DOMNode} node
2626			 * @param {Function} callback
2627			 * @returns {undefined}
2628			 */
2629			forEachAncestorOf = function (node, callback) {
2630				do {
2631					node = node.parentNode;
2632
2633					if (!node || callback(node) === false) {
2634						break;
2635					}
2636				} while (node.nodeName !== 'HTML');
2637			};
2638
2639			/**
2640			 * Sets the position of the picker.
2641			 *
2642			 * @returns {undefined}
2643			 */
2644			setPos = function () {
2645				var dateInputOffset,
2646					dateInputElem,
2647					verticalPosition,
2648					left,
2649					position,
2650					datetimepickerElem,
2651					dateInputHasFixedAncestor,
2652					$dateInput,
2653					windowWidth,
2654					verticalAnchorEdge,
2655					datetimepickerCss,
2656					windowHeight,
2657					windowScrollTop;
2658
2659				$dateInput = datetimepicker.data('input');
2660				dateInputOffset = $dateInput.offset();
2661				dateInputElem = $dateInput[0];
2662
2663				verticalAnchorEdge = 'top';
2664				verticalPosition = (dateInputOffset.top + dateInputElem.offsetHeight) - 1;
2665				left = dateInputOffset.left;
2666				position = "absolute";
2667
2668				windowWidth = $(options.contentWindow).width();
2669				windowHeight = $(options.contentWindow).height();
2670				windowScrollTop = $(options.contentWindow).scrollTop();
2671
2672				if ((options.ownerDocument.documentElement.clientWidth - dateInputOffset.left) < datepicker.parent().outerWidth(true)) {
2673					var diff = datepicker.parent().outerWidth(true) - dateInputElem.offsetWidth;
2674					left = left - diff;
2675				}
2676
2677				if ($dateInput.parent().css('direction') === 'rtl') {
2678					left -= (datetimepicker.outerWidth() - $dateInput.outerWidth());
2679				}
2680
2681				if (options.fixed) {
2682					verticalPosition -= windowScrollTop;
2683					left -= $(options.contentWindow).scrollLeft();
2684					position = "fixed";
2685				} else {
2686					dateInputHasFixedAncestor = false;
2687
2688					forEachAncestorOf(dateInputElem, function (ancestorNode) {
2689						if (ancestorNode === null) {
2690							return false;
2691						}
2692
2693						if (options.contentWindow.getComputedStyle(ancestorNode).getPropertyValue('position') === 'fixed') {
2694							dateInputHasFixedAncestor = true;
2695							return false;
2696						}
2697					});
2698
2699					if (dateInputHasFixedAncestor && !options.insideParent) {
2700						position = 'fixed';
2701
2702						//If the picker won't fit entirely within the viewport then display it above the date input.
2703						if (verticalPosition + datetimepicker.outerHeight() > windowHeight + windowScrollTop) {
2704							verticalAnchorEdge = 'bottom';
2705							verticalPosition = (windowHeight + windowScrollTop) - dateInputOffset.top;
2706						} else {
2707							verticalPosition -= windowScrollTop;
2708						}
2709					} else {
2710						if (verticalPosition + datetimepicker[0].offsetHeight > windowHeight + windowScrollTop) {
2711							verticalPosition = dateInputOffset.top - datetimepicker[0].offsetHeight + 1;
2712						}
2713					}
2714
2715					if (verticalPosition < 0) {
2716						verticalPosition = 0;
2717					}
2718
2719					if (left + dateInputElem.offsetWidth > windowWidth) {
2720						left = windowWidth - dateInputElem.offsetWidth;
2721					}
2722				}
2723
2724				datetimepickerElem = datetimepicker[0];
2725
2726				forEachAncestorOf(datetimepickerElem, function (ancestorNode) {
2727					var ancestorNodePosition;
2728
2729					ancestorNodePosition = options.contentWindow.getComputedStyle(ancestorNode).getPropertyValue('position');
2730
2731					if (ancestorNodePosition === 'relative' && windowWidth >= ancestorNode.offsetWidth) {
2732						left = left - ((windowWidth - ancestorNode.offsetWidth) / 2);
2733						return false;
2734					}
2735				});
2736
2737				datetimepickerCss = {
2738					position: position,
2739					left: options.insideParent ? dateInputElem.offsetLeft : left,
2740					top: '',  //Initialize to prevent previous values interfering with new ones.
2741					bottom: ''  //Initialize to prevent previous values interfering with new ones.
2742				};
2743
2744				if (options.insideParent) {
2745                    datetimepickerCss[verticalAnchorEdge] = dateInputElem.offsetTop + dateInputElem.offsetHeight;
2746                } else {
2747                    datetimepickerCss[verticalAnchorEdge] = verticalPosition;
2748                }
2749
2750				datetimepicker.css(datetimepickerCss);
2751			};
2752
2753			datetimepicker
2754				.on('open.xdsoft', function (event) {
2755					var onShow = true;
2756					if (options.onShow && typeof options.onShow === 'function') {
2757						onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
2758					}
2759					if (onShow !== false) {
2760						datetimepicker.show();
2761						setPos();
2762						$(options.contentWindow)
2763							.off('resize.xdsoft', setPos)
2764							.on('resize.xdsoft', setPos);
2765
2766						if (options.closeOnWithoutClick) {
2767							$([options.ownerDocument.body, options.contentWindow]).on('touchstart mousedown.xdsoft', function arguments_callee6() {
2768								datetimepicker.trigger('close.xdsoft');
2769								$([options.ownerDocument.body, options.contentWindow]).off('touchstart mousedown.xdsoft', arguments_callee6);
2770							});
2771						}
2772					}
2773				})
2774				.on('close.xdsoft', function (event) {
2775					var onClose = true;
2776					month_picker
2777						.find('.xdsoft_month,.xdsoft_year')
2778						.find('.xdsoft_select')
2779						.hide();
2780					if (options.onClose && typeof options.onClose === 'function') {
2781						onClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
2782					}
2783					if (onClose !== false && !options.opened && !options.inline) {
2784						datetimepicker.hide();
2785					}
2786					event.stopPropagation();
2787				})
2788				.on('toggle.xdsoft', function () {
2789					if (datetimepicker.is(':visible')) {
2790						datetimepicker.trigger('close.xdsoft');
2791					} else {
2792						datetimepicker.trigger('open.xdsoft');
2793					}
2794				})
2795				.data('input', input);
2796
2797			timer = 0;
2798
2799			datetimepicker.data('xdsoft_datetime', _xdsoft_datetime);
2800			datetimepicker.setOptions(options);
2801
2802			function getCurrentValue() {
2803				var ct = false, time;
2804
2805				if (options.startDate) {
2806					ct = _xdsoft_datetime.strToDate(options.startDate);
2807				} else {
2808					ct = options.value || ((input && input.val && input.val()) ? input.val() : '');
2809					if (ct) {
2810						ct = _xdsoft_datetime.strToDateTime(ct);
2811						if (options.yearOffset) {
2812							ct = new Date(ct.getFullYear() - options.yearOffset, ct.getMonth(), ct.getDate(), ct.getHours(), ct.getMinutes(), ct.getSeconds(), ct.getMilliseconds());
2813						}
2814					} else if (options.defaultDate) {
2815						ct = _xdsoft_datetime.strToDateTime(options.defaultDate);
2816						if (options.defaultTime) {
2817							time = _xdsoft_datetime.strtotime(options.defaultTime);
2818							ct.setHours(time.getHours());
2819							ct.setMinutes(time.getMinutes());
2820						}
2821					}
2822				}
2823
2824				if (ct && _xdsoft_datetime.isValidDate(ct)) {
2825					datetimepicker.data('changed', true);
2826				} else {
2827					ct = '';
2828				}
2829
2830				return ct || 0;
2831			}
2832
2833			function setMask(options) {
2834
2835				var isValidValue = function (mask, value) {
2836						var reg = mask
2837							.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g, '\\$1')
2838							.replace(/_/g, '{digit+}')
2839							.replace(/([0-9]{1})/g, '{digit$1}')
2840							.replace(/\{digit([0-9]{1})\}/g, '[0-$1_]{1}')
2841							.replace(/\{digit[\+]\}/g, '[0-9_]{1}');
2842						return (new RegExp(reg)).test(value);
2843					},
2844					getCaretPos = function (input) {
2845						try {
2846							if (options.ownerDocument.selection && options.ownerDocument.selection.createRange) {
2847								var range = options.ownerDocument.selection.createRange();
2848								return range.getBookmark().charCodeAt(2) - 2;
2849							}
2850							if (input.setSelectionRange) {
2851								return input.selectionStart;
2852							}
2853						} catch (e) {
2854							return 0;
2855						}
2856					},
2857					setCaretPos = function (node, pos) {
2858						node = (typeof node === "string" || node instanceof String) ? options.ownerDocument.getElementById(node) : node;
2859						if (!node) {
2860							return false;
2861						}
2862						if (node.createTextRange) {
2863							var textRange = node.createTextRange();
2864							textRange.collapse(true);
2865							textRange.moveEnd('character', pos);
2866							textRange.moveStart('character', pos);
2867							textRange.select();
2868							return true;
2869						}
2870						if (node.setSelectionRange) {
2871							node.setSelectionRange(pos, pos);
2872							return true;
2873						}
2874						return false;
2875					};
2876
2877				if(options.mask) {
2878					input.off('keydown.xdsoft');
2879				}
2880
2881				if (options.mask === true) {
2882					if (dateHelper.formatMask) {
2883						options.mask = dateHelper.formatMask(options.format)
2884					} else {
2885						options.mask = options.format
2886							.replace(/Y/g, '9999')
2887							.replace(/F/g, '9999')
2888							.replace(/m/g, '19')
2889							.replace(/d/g, '39')
2890							.replace(/H/g, '29')
2891							.replace(/i/g, '59')
2892							.replace(/s/g, '59');
2893					}
2894				}
2895
2896				if (typeof options.mask === 'string') {
2897					if (!isValidValue(options.mask, input.val())) {
2898						input.val(options.mask.replace(/[0-9]/g, '_'));
2899						setCaretPos(input[0], 0);
2900					}
2901
2902					input.on('paste.xdsoft', function (event) {
2903					    // couple options here
2904					    // 1. return false - tell them they can't paste
2905					    // 2. insert over current characters - minimal validation
2906					    // 3. full fledged parsing and validation
2907					    // let's go option 2 for now
2908
2909					    // fires multiple times for some reason
2910
2911					    // https://stackoverflow.com/a/30496488/1366033
2912					    var clipboardData = event.clipboardData || event.originalEvent.clipboardData || window.clipboardData,
2913						pastedData = clipboardData.getData('text'),
2914						val = this.value,
2915						pos = this.selectionStart
2916
2917					    var valueBeforeCursor = val.substr(0, pos);
2918					    var valueAfterPaste = val.substr(pos + pastedData.length);
2919
2920					    val = valueBeforeCursor + pastedData + valueAfterPaste;
2921					    pos += pastedData.length;
2922
2923					    if (isValidValue(options.mask, val)) {
2924						this.value = val;
2925						setCaretPos(this, pos);
2926					    } else if (val.trim() === '') {
2927						this.value = options.mask.replace(/[0-9]/g, '_');
2928					    } else {
2929						input.trigger('error_input.xdsoft');
2930					    }
2931
2932					    event.preventDefault();
2933					    return false;
2934					  });
2935
2936					  input.on('keydown.xdsoft', function (event) {
2937					    var val = this.value,
2938						key = event.which,
2939						pos = this.selectionStart,
2940						selEnd = this.selectionEnd,
2941						hasSel = pos !== selEnd,
2942						digit;
2943
2944					    // only alow these characters
2945					    if (((key >=  KEY0 && key <=  KEY9)  ||
2946						 (key >= _KEY0 && key <= _KEY9)) ||
2947						 (key === BACKSPACE || key === DEL)) {
2948
2949					      // get char to insert which is new character or placeholder ('_')
2950					      digit = (key === BACKSPACE || key === DEL) ? '_' :
2951							  String.fromCharCode((_KEY0 <= key && key <= _KEY9) ? key - KEY0 : key);
2952
2953						// we're deleting something, we're not at the start, and have normal cursor, move back one
2954						// if we have a selection length, cursor actually sits behind deletable char, not in front
2955						if (key === BACKSPACE && pos && !hasSel) {
2956						    pos -= 1;
2957						}
2958
2959						// don't stop on a separator, continue whatever direction you were going
2960						//   value char - keep incrementing position while on separator char and we still have room
2961						//   del char   - keep decrementing position while on separator char and we still have room
2962						while (true) {
2963						  var maskValueAtCurPos = options.mask.substr(pos, 1);
2964						  var posShorterThanMaskLength = pos < options.mask.length;
2965						  var posGreaterThanZero = pos > 0;
2966						  var notNumberOrPlaceholder = /[^0-9_]/;
2967						  var curPosOnSep = notNumberOrPlaceholder.test(maskValueAtCurPos);
2968						  var continueMovingPosition = curPosOnSep && posShorterThanMaskLength && posGreaterThanZero
2969
2970						  // if we hit a real char, stay where we are
2971						  if (!continueMovingPosition) break;
2972
2973						  // hitting backspace in a selection, you can possibly go back any further - go forward
2974						  pos += (key === BACKSPACE && !hasSel) ? -1 : 1;
2975
2976                        }
2977
2978                        if (event.metaKey) {    // cmd has been pressed
2979                            pos = 0;
2980                            hasSel = true;
2981                        }
2982
2983						if (hasSel) {
2984						  // pos might have moved so re-calc length
2985						  var selLength = selEnd - pos
2986
2987						  // if we have a selection length we will wipe out entire selection and replace with default template for that range
2988						  var defaultBlank = options.mask.replace(/[0-9]/g, '_');
2989						  var defaultBlankSelectionReplacement = defaultBlank.substr(pos, selLength);
2990						  var selReplacementRemainder = defaultBlankSelectionReplacement.substr(1) // might be empty
2991
2992						  var valueBeforeSel = val.substr(0, pos);
2993						  var insertChars = digit + selReplacementRemainder;
2994						  var charsAfterSelection = val.substr(pos + selLength);
2995
2996						  val = valueBeforeSel + insertChars + charsAfterSelection
2997
2998						} else {
2999						  var valueBeforeCursor = val.substr(0, pos);
3000						  var insertChar = digit;
3001						  var valueAfterNextChar = val.substr(pos + 1);
3002
3003						  val = valueBeforeCursor + insertChar + valueAfterNextChar
3004						}
3005
3006						if (val.trim() === '') {
3007						  // if empty, set to default
3008						    val = defaultBlank
3009						} else {
3010						  // if at the last character don't need to do anything
3011						    if (pos === options.mask.length) {
3012							event.preventDefault();
3013							return false;
3014						    }
3015						}
3016
3017						// resume cursor location
3018						pos += (key === BACKSPACE) ? 0 : 1;
3019						// don't stop on a separator, continue whatever direction you were going
3020						while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {
3021						    pos += (key === BACKSPACE) ? 0 : 1;
3022						}
3023
3024						if (isValidValue(options.mask, val)) {
3025						    this.value = val;
3026						    setCaretPos(this, pos);
3027						} else if (val.trim() === '') {
3028						    this.value = options.mask.replace(/[0-9]/g, '_');
3029						} else {
3030						    input.trigger('error_input.xdsoft');
3031						}
3032					    } else {
3033						if (([AKEY, CKEY, VKEY, ZKEY, YKEY].indexOf(key) !== -1 && ctrlDown) || [ESC, ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, F5, CTRLKEY, TAB, ENTER].indexOf(key) !== -1) {
3034						    return true;
3035						}
3036					    }
3037
3038					    event.preventDefault();
3039					    return false;
3040					  });
3041				}
3042			}
3043
3044			_xdsoft_datetime.setCurrentTime(getCurrentValue());
3045
3046			input
3047				.data('xdsoft_datetimepicker', datetimepicker)
3048				.on('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', function () {
3049					if (input.is(':disabled') || (input.data('xdsoft_datetimepicker').is(':visible') && options.closeOnInputClick)) {
3050						return;
3051					}
3052					if (!options.openOnFocus) {
3053						return;
3054					}
3055					clearTimeout(timer);
3056					timer = setTimeout(function () {
3057						if (input.is(':disabled')) {
3058							return;
3059						}
3060
3061						triggerAfterOpen = true;
3062						_xdsoft_datetime.setCurrentTime(getCurrentValue(), true);
3063						if(options.mask) {
3064							setMask(options);
3065						}
3066						datetimepicker.trigger('open.xdsoft');
3067					}, 100);
3068				})
3069				.on('keydown.xdsoft', function (event) {
3070					var elementSelector,
3071						key = event.which;
3072					if ([ENTER].indexOf(key) !== -1 && options.enterLikeTab) {
3073						elementSelector = $("input:visible,textarea:visible,button:visible,a:visible");
3074						datetimepicker.trigger('close.xdsoft');
3075						elementSelector.eq(elementSelector.index(this) + 1).focus();
3076						return false;
3077					}
3078					if ([TAB].indexOf(key) !== -1) {
3079						datetimepicker.trigger('close.xdsoft');
3080						return true;
3081					}
3082				})
3083				.on('blur.xdsoft', function () {
3084					datetimepicker.trigger('close.xdsoft');
3085				});
3086		};
3087		destroyDateTimePicker = function (input) {
3088			var datetimepicker = input.data('xdsoft_datetimepicker');
3089			if (datetimepicker) {
3090				datetimepicker.data('xdsoft_datetime', null);
3091				datetimepicker.remove();
3092				input
3093					.data('xdsoft_datetimepicker', null)
3094					.off('.xdsoft');
3095				$(options.contentWindow).off('resize.xdsoft');
3096				$([options.contentWindow, options.ownerDocument.body]).off('mousedown.xdsoft touchstart');
3097				if (input.unmousewheel) {
3098					input.unmousewheel();
3099				}
3100			}
3101		};
3102		$(options.ownerDocument)
3103            .off('keydown.xdsoftctrl keyup.xdsoftctrl')
3104            .off('keydown.xdsoftcmd keyup.xdsoftcmd')
3105			.on('keydown.xdsoftctrl', function (e) {
3106				if (e.keyCode === CTRLKEY) {
3107					ctrlDown = true;
3108                }
3109			})
3110			.on('keyup.xdsoftctrl', function (e) {
3111				if (e.keyCode === CTRLKEY) {
3112					ctrlDown = false;
3113                }
3114            })
3115            .on('keydown.xdsoftcmd', function (e) {
3116                if (e.keyCode === CMDKEY) {
3117                    cmdDown = true;
3118                }
3119			})
3120			.on('keyup.xdsoftcmd', function (e) {
3121                if (e.keyCode === CMDKEY) {
3122                    cmdDown = false;
3123                }
3124			});
3125
3126		this.each(function () {
3127			var datetimepicker = $(this).data('xdsoft_datetimepicker'), $input;
3128			if (datetimepicker) {
3129				if (typeof opt === 'string') {
3130					switch (opt) {
3131						case 'show':
3132							$(this).select().focus();
3133							datetimepicker.trigger('open.xdsoft');
3134							break;
3135						case 'hide':
3136							datetimepicker.trigger('close.xdsoft');
3137							break;
3138						case 'toggle':
3139							datetimepicker.trigger('toggle.xdsoft');
3140							break;
3141						case 'destroy':
3142							destroyDateTimePicker($(this));
3143							break;
3144						case 'reset':
3145							this.value = this.defaultValue;
3146							if (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(dateHelper.parseDate(this.value, options.format))) {
3147								datetimepicker.data('changed', false);
3148							}
3149							datetimepicker.data('xdsoft_datetime').setCurrentTime(this.value);
3150							break;
3151						case 'validate':
3152							$input = datetimepicker.data('input');
3153							$input.trigger('blur.xdsoft');
3154							break;
3155						default:
3156							if (datetimepicker[opt] && typeof datetimepicker[opt] === 'function') {
3157								result = datetimepicker[opt](opt2);
3158							}
3159					}
3160				} else {
3161					datetimepicker
3162						.setOptions(opt);
3163				}
3164				return 0;
3165			}
3166			if (typeof opt
vendor: 9,026 bytes, lines 3166-3422
3166 !== 'string') {
3167				if (!options.lazyInit || options.open || options.inline) {
3168					createDateTimePicker($(this));
3169				} else {
3170					lazyInit($(this));
3171				}
3172			}
3173		});
3174
3175		return result;
3176	};
3177
3178	$.fn.datetimepicker.defaults = default_options;
3179
3180	function HighlightedDate(date, desc, style) {
3181		"use strict";
3182		this.date = date;
3183		this.desc = desc;
3184		this.style = style;
3185	}
3186};
3187;(function (factory) {
3188	if ( typeof define === 'function' && define.amd ) {
3189		// AMD. Register as an anonymous module.
3190		define(['jquery', 'jquery-mousewheel'], factory);
3191	} else if (typeof exports === 'object') {
3192		// Node/CommonJS style for Browserify
3193		module.exports = factory(require('jquery'));;
3194	} else {
3195		// Browser globals
3196		factory(jQuery);
3197	}
3198}(datetimepickerFactory));
3199
3200
3201
3202/*!
3203 * jQuery Mousewheel 3.1.13
3204 *
3205 * Copyright jQuery Foundation and other contributors
3206 * Released under the MIT license
3207 * http://jquery.org/license
3208 */
3209
3210(function (factory) {
3211    if ( typeof define === 'function' && define.amd ) {
3212        // AMD. Register as an anonymous module.
3213        define(['jquery'], factory);
3214    } else if (typeof exports === 'object') {
3215        // Node/CommonJS style for Browserify
3216        module.exports = factory;
3217    } else {
3218        // Browser globals
3219        factory(jQuery);
3220    }
3221}(function ($) {
3222
3223    var toFix  = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
3224        toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?
3225                    ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
3226        slice  = Array.prototype.slice,
3227        nullLowestDeltaTimeout, lowestDelta;
3228
3229    if ( $.event.fixHooks ) {
3230        for ( var i = toFix.length; i; ) {
3231            $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
3232        }
3233    }
3234
3235    var special = $.event.special.mousewheel = {
3236        version: '3.1.12',
3237
3238        setup: function() {
3239            if ( this.addEventListener ) {
3240                for ( var i = toBind.length; i; ) {
3241                    this.addEventListener( toBind[--i], handler, false );
3242                }
3243            } else {
3244                this.onmousewheel = handler;
3245            }
3246            // Store the line height and page height for this particular element
3247            $.data(this, 'mousewheel-line-height', special.getLineHeight(this));
3248            $.data(this, 'mousewheel-page-height', special.getPageHeight(this));
3249        },
3250
3251        teardown: function() {
3252            if ( this.removeEventListener ) {
3253                for ( var i = toBind.length; i; ) {
3254                    this.removeEventListener( toBind[--i], handler, false );
3255                }
3256            } else {
3257                this.onmousewheel = null;
3258            }
3259            // Clean up the data we added to the element
3260            $.removeData(this, 'mousewheel-line-height');
3261            $.removeData(this, 'mousewheel-page-height');
3262        },
3263
3264        getLineHeight: function(elem) {
3265            var $elem = $(elem),
3266                $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();
3267            if (!$parent.length) {
3268                $parent = $('body');
3269            }
3270            return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;
3271        },
3272
3273        getPageHeight: function(elem) {
3274            return $(elem).height();
3275        },
3276
3277        settings: {
3278            adjustOldDeltas: true, // see shouldAdjustOldDeltas() below
3279            normalizeOffset: true  // calls getBoundingClientRect for each event
3280        }
3281    };
3282
3283    $.fn.extend({
3284        mousewheel: function(fn) {
3285            return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
3286        },
3287
3288        unmousewheel: function(fn) {
3289            return this.unbind('mousewheel', fn);
3290        }
3291    });
3292
3293
3294    function handler(event) {
3295        var orgEvent   = event || window.event,
3296            args       = slice.call(arguments, 1),
3297            delta      = 0,
3298            deltaX     = 0,
3299            deltaY     = 0,
3300            absDelta   = 0,
3301            offsetX    = 0,
3302            offsetY    = 0;
3303        event = $.event.fix(orgEvent);
3304        event.type = 'mousewheel';
3305
3306        // Old school scrollwheel delta
3307        if ( 'detail'      in orgEvent ) { deltaY = orgEvent.detail * -1;      }
3308        if ( 'wheelDelta'  in orgEvent ) { deltaY = orgEvent.wheelDelta;       }
3309        if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY;      }
3310        if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }
3311
3312        // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
3313        if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
3314            deltaX = deltaY * -1;
3315            deltaY = 0;
3316        }
3317
3318        // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
3319        delta = deltaY === 0 ? deltaX : deltaY;
3320
3321        // New school wheel delta (wheel event)
3322        if ( 'deltaY' in orgEvent ) {
3323            deltaY = orgEvent.deltaY * -1;
3324            delta  = deltaY;
3325        }
3326        if ( 'deltaX' in orgEvent ) {
3327            deltaX = orgEvent.deltaX;
3328            if ( deltaY === 0 ) { delta  = deltaX * -1; }
3329        }
3330
3331        // No change actually happened, no reason to go any further
3332        if ( deltaY === 0 && deltaX === 0 ) { return; }
3333
3334        // Need to convert lines and pages to pixels if we aren't already in pixels
3335        // There are three delta modes:
3336        //   * deltaMode 0 is by pixels, nothing to do
3337        //   * deltaMode 1 is by lines
3338        //   * deltaMode 2 is by pages
3339        if ( orgEvent.deltaMode === 1 ) {
3340            var lineHeight = $.data(this, 'mousewheel-line-height');
3341            delta  *= lineHeight;
3342            deltaY *= lineHeight;
3343            deltaX *= lineHeight;
3344        } else if ( orgEvent.deltaMode === 2 ) {
3345            var pageHeight = $.data(this, 'mousewheel-page-height');
3346            delta  *= pageHeight;
3347            deltaY *= pageHeight;
3348            deltaX *= pageHeight;
3349        }
3350
3351        // Store lowest absolute delta to normalize the delta values
3352        absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
3353
3354        if ( !lowestDelta || absDelta < lowestDelta ) {
3355            lowestDelta = absDelta;
3356
3357            // Adjust older deltas if necessary
3358            if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
3359                lowestDelta /= 40;
3360            }
3361        }
3362
3363        // Adjust older deltas if necessary
3364        if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
3365            // Divide all the things by 40!
3366            delta  /= 40;
3367            deltaX /= 40;
3368            deltaY /= 40;
3369        }
3370
3371        // Get a whole, normalized value for the deltas
3372        delta  = Math[ delta  >= 1 ? 'floor' : 'ceil' ](delta  / lowestDelta);
3373        deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);
3374        deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);
3375
3376        // Normalise offsetX and offsetY properties
3377        if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
3378            var boundingRect = this.getBoundingClientRect();
3379            offsetX = event.clientX - boundingRect.left;
3380            offsetY = event.clientY - boundingRect.top;
3381        }
3382
3383        // Add information to the event object
3384        event.deltaX = deltaX;
3385        event.deltaY = deltaY;
3386        event.deltaFactor = lowestDelta;
3387        event.offsetX = offsetX;
3388        event.offsetY = offsetY;
3389        // Go ahead and set deltaMode to 0 since we converted to pixels
3390        // Although this is a little odd since we overwrite the deltaX/Y
3391        // properties with normalized deltas.
3392        event.deltaMode = 0;
3393
3394        // Add event and delta to the front of the arguments
3395        args.unshift(event, delta, deltaX, deltaY);
3396
3397        // Clearout lowestDelta after sometime to better
3398        // handle multiple device types that give different
3399        // a different lowestDelta
3400        // Ex: trackpad = 3 and mouse wheel = 120
3401        if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
3402        nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);
3403
3404        return ($.event.dispatch || $.event.handle).apply(this, args);
3405    }
3406
3407    function nullLowestDelta() {
3408        lowestDelta = null;
3409    }
3410
3411    function shouldAdjustOldDeltas(orgEvent, absDelta) {
3412        // If this is an older event and the delta is divisable by 120,
3413        // then we are assuming that the browser is treating this as an
3414        // older mouse wheel event and that we should divide the deltas
3415        // by 40 to try and get a more usable deltaFactor.
3416        // Side note, this actually impacts the reported scroll distance
3417        // in older browsers and can cause scrolling to be slower than native.
3418        // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
3419        return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;
3420    }
3421
3422}));
vendor: 285,622 bytes, lines 3423-11437
3423
3424/* End */
3425;
3426; /* Start:"a:4:{s:4:"full";s:55:"/local/templates/ntk_new/lib/swiper.js?1719817022288320";s:6:"source";s:38:"/local/templates/ntk_new/lib/swiper.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
3427/**
3428 * Swiper 4.5.0
3429 * Most modern mobile touch slider and framework with hardware accelerated transitions
3430 * http://www.idangero.us/swiper/
3431 *
3432 * Copyright 2014-2019 Vladimir Kharlampidi
3433 *
3434 * Released under the MIT License
3435 *
3436 * Released on: February 22, 2019
3437 */
3438
3439(function (global, factory) {
3440  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3441  typeof define === 'function' && define.amd ? define(factory) :
3442  (global = global || self, global.Swiper = factory());
3443}(this, function () { 'use strict';
3444
3445  /**
3446   * SSR Window 1.0.1
3447   * Better handling for window object in SSR environment
3448   * https://github.com/nolimits4web/ssr-window
3449   *
3450   * Copyright 2018, Vladimir Kharlampidi
3451   *
3452   * Licensed under MIT
3453   *
3454   * Released on: July 18, 2018
3455   */
3456  var doc = (typeof document === 'undefined') ? {
3457    body: {},
3458    addEventListener: function addEventListener() {},
3459    removeEventListener: function removeEventListener() {},
3460    activeElement: {
3461      blur: function blur() {},
3462      nodeName: '',
3463    },
3464    querySelector: function querySelector() {
3465      return null;
3466    },
3467    querySelectorAll: function querySelectorAll() {
3468      return [];
3469    },
3470    getElementById: function getElementById() {
3471      return null;
3472    },
3473    createEvent: function createEvent() {
3474      return {
3475        initEvent: function initEvent() {},
3476      };
3477    },
3478    createElement: function createElement() {
3479      return {
3480        children: [],
3481        childNodes: [],
3482        style: {},
3483        setAttribute: function setAttribute() {},
3484        getElementsByTagName: function getElementsByTagName() {
3485          return [];
3486        },
3487      };
3488    },
3489    location: { hash: '' },
3490  } : document; // eslint-disable-line
3491
3492  var win = (typeof window === 'undefined') ? {
3493    document: doc,
3494    navigator: {
3495      userAgent: '',
3496    },
3497    location: {},
3498    history: {},
3499    CustomEvent: function CustomEvent() {
3500      return this;
3501    },
3502    addEventListener: function addEventListener() {},
3503    removeEventListener: function removeEventListener() {},
3504    getComputedStyle: function getComputedStyle() {
3505      return {
3506        getPropertyValue: function getPropertyValue() {
3507          return '';
3508        },
3509      };
3510    },
3511    Image: function Image() {},
3512    Date: function Date() {},
3513    screen: {},
3514    setTimeout: function setTimeout() {},
3515    clearTimeout: function clearTimeout() {},
3516  } : window; // eslint-disable-line
3517
3518  /**
3519   * Dom7 2.1.3
3520   * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
3521   * http://framework7.io/docs/dom.html
3522   *
3523   * Copyright 2019, Vladimir Kharlampidi
3524   * The iDangero.us
3525   * http://www.idangero.us/
3526   *
3527   * Licensed under MIT
3528   *
3529   * Released on: February 11, 2019
3530   */
3531
3532  var Dom7 = function Dom7(arr) {
3533    var self = this;
3534    // Create array-like object
3535    for (var i = 0; i < arr.length; i += 1) {
3536      self[i] = arr[i];
3537    }
3538    self.length = arr.length;
3539    // Return collection with methods
3540    return this;
3541  };
3542
3543  function $(selector, context) {
3544    var arr = [];
3545    var i = 0;
3546    if (selector && !context) {
3547      if (selector instanceof Dom7) {
3548        return selector;
3549      }
3550    }
3551    if (selector) {
3552        // String
3553      if (typeof selector === 'string') {
3554        var els;
3555        var tempParent;
3556        var html = selector.trim();
3557        if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
3558          var toCreate = 'div';
3559          if (html.indexOf('<li') === 0) { toCreate = 'ul'; }
3560          if (html.indexOf('<tr') === 0) { toCreate = 'tbody'; }
3561          if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) { toCreate = 'tr'; }
3562          if (html.indexOf('<tbody') === 0) { toCreate = 'table'; }
3563          if (html.indexOf('<option') === 0) { toCreate = 'select'; }
3564          tempParent = doc.createElement(toCreate);
3565          tempParent.innerHTML = html;
3566          for (i = 0; i < tempParent.childNodes.length; i += 1) {
3567            arr.push(tempParent.childNodes[i]);
3568          }
3569        } else {
3570          if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {
3571            // Pure ID selector
3572            els = [doc.getElementById(selector.trim().split('#')[1])];
3573          } else {
3574            // Other selectors
3575            els = (context || doc).querySelectorAll(selector.trim());
3576          }
3577          for (i = 0; i < els.length; i += 1) {
3578            if (els[i]) { arr.push(els[i]); }
3579          }
3580        }
3581      } else if (selector.nodeType || selector === win || selector === doc) {
3582        // Node/element
3583        arr.push(selector);
3584      } else if (selector.length > 0 && selector[0].nodeType) {
3585        // Array of elements or instance of Dom
3586        for (i = 0; i < selector.length; i += 1) {
3587          arr.push(selector[i]);
3588        }
3589      }
3590    }
3591    return new Dom7(arr);
3592  }
3593
3594  $.fn = Dom7.prototype;
3595  $.Class = Dom7;
3596  $.Dom7 = Dom7;
3597
3598  function unique(arr) {
3599    var uniqueArray = [];
3600    for (var i = 0; i < arr.length; i += 1) {
3601      if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); }
3602    }
3603    return uniqueArray;
3604  }
3605
3606  // Classes and attributes
3607  function addClass(className) {
3608    if (typeof className === 'undefined') {
3609      return this;
3610    }
3611    var classes = className.split(' ');
3612    for (var i = 0; i < classes.length; i += 1) {
3613      for (var j = 0; j < this.length; j += 1) {
3614        if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.add(classes[i]); }
3615      }
3616    }
3617    return this;
3618  }
3619  function removeClass(className) {
3620    var classes = className.split(' ');
3621    for (var i = 0; i < classes.length; i += 1) {
3622      for (var j = 0; j < this.length; j += 1) {
3623        if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.remove(classes[i]); }
3624      }
3625    }
3626    return this;
3627  }
3628  function hasClass(className) {
3629    if (!this[0]) { return false; }
3630    return this[0].classList.contains(className);
3631  }
3632  function toggleClass(className) {
3633    var classes = className.split(' ');
3634    for (var i = 0; i < classes.length; i += 1) {
3635      for (var j = 0; j < this.length; j += 1) {
3636        if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.toggle(classes[i]); }
3637      }
3638    }
3639    return this;
3640  }
3641  function attr(attrs, value) {
3642    var arguments$1 = arguments;
3643
3644    if (arguments.length === 1 && typeof attrs === 'string') {
3645      // Get attr
3646      if (this[0]) { return this[0].getAttribute(attrs); }
3647      return undefined;
3648    }
3649
3650    // Set attrs
3651    for (var i = 0; i < this.length; i += 1) {
3652      if (arguments$1.length === 2) {
3653        // String
3654        this[i].setAttribute(attrs, value);
3655      } else {
3656        // Object
3657        // eslint-disable-next-line
3658        for (var attrName in attrs) {
3659          this[i][attrName] = attrs[attrName];
3660          this[i].setAttribute(attrName, attrs[attrName]);
3661        }
3662      }
3663    }
3664    return this;
3665  }
3666  // eslint-disable-next-line
3667  function removeAttr(attr) {
3668    for (var i = 0; i < this.length; i += 1) {
3669      this[i].removeAttribute(attr);
3670    }
3671    return this;
3672  }
3673  function data(key, value) {
3674    var el;
3675    if (typeof value === 'undefined') {
3676      el = this[0];
3677      // Get value
3678      if (el) {
3679        if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {
3680          return el.dom7ElementDataStorage[key];
3681        }
3682
3683        var dataKey = el.getAttribute(("data-" + key));
3684        if (dataKey) {
3685          return dataKey;
3686        }
3687        return undefined;
3688      }
3689      return undefined;
3690    }
3691
3692    // Set value
3693    for (var i = 0; i < this.length; i += 1) {
3694      el = this[i];
3695      if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; }
3696      el.dom7ElementDataStorage[key] = value;
3697    }
3698    return this;
3699  }
3700  // Transforms
3701  // eslint-disable-next-line
3702  function transform(transform) {
3703    for (var i = 0; i < this.length; i += 1) {
3704      var elStyle = this[i].style;
3705      elStyle.webkitTransform = transform;
3706      elStyle.transform = transform;
3707    }
3708    return this;
3709  }
3710  function transition(duration) {
3711    if (typeof duration !== 'string') {
3712      duration = duration + "ms"; // eslint-disable-line
3713    }
3714    for (var i = 0; i < this.length; i += 1) {
3715      var elStyle = this[i].style;
3716      elStyle.webkitTransitionDuration = duration;
3717      elStyle.transitionDuration = duration;
3718    }
3719    return this;
3720  }
3721  // Events
3722  function on() {
3723    var assign;
3724
3725    var args = [], len = arguments.length;
3726    while ( len-- ) args[ len ] = arguments[ len ];
3727    var eventType = args[0];
3728    var targetSelector = args[1];
3729    var listener = args[2];
3730    var capture = args[3];
3731    if (typeof args[1] === 'function') {
3732      (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);
3733      targetSelector = undefined;
3734    }
3735    if (!capture) { capture = false; }
3736
3737    function handleLiveEvent(e) {
3738      var target = e.target;
3739      if (!target) { return; }
3740      var eventData = e.target.dom7EventData || [];
3741      if (eventData.indexOf(e) < 0) {
3742        eventData.unshift(e);
3743      }
3744      if ($(target).is(targetSelector)) { listener.apply(target, eventData); }
3745      else {
3746        var parents = $(target).parents(); // eslint-disable-line
3747        for (var k = 0; k < parents.length; k += 1) {
3748          if ($(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); }
3749        }
3750      }
3751    }
3752    function handleEvent(e) {
3753      var eventData = e && e.target ? e.target.dom7EventData || [] : [];
3754      if (eventData.indexOf(e) < 0) {
3755        eventData.unshift(e);
3756      }
3757      listener.apply(this, eventData);
3758    }
3759    var events = eventType.split(' ');
3760    var j;
3761    for (var i = 0; i < this.length; i += 1) {
3762      var el = this[i];
3763      if (!targetSelector) {
3764        for (j = 0; j < events.length; j += 1) {
3765          var event = events[j];
3766          if (!el.dom7Listeners) { el.dom7Listeners = {}; }
3767          if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; }
3768          el.dom7Listeners[event].push({
3769            listener: listener,
3770            proxyListener: handleEvent,
3771          });
3772          el.addEventListener(event, handleEvent, capture);
3773        }
3774      } else {
3775        // Live events
3776        for (j = 0; j < events.length; j += 1) {
3777          var event$1 = events[j];
3778          if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; }
3779          if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; }
3780          el.dom7LiveListeners[event$1].push({
3781            listener: listener,
3782            proxyListener: handleLiveEvent,
3783          });
3784          el.addEventListener(event$1, handleLiveEvent, capture);
3785        }
3786      }
3787    }
3788    return this;
3789  }
3790  function off() {
3791    var assign;
3792
3793    var args = [], len = arguments.length;
3794    while ( len-- ) args[ len ] = arguments[ len ];
3795    var eventType = args[0];
3796    var targetSelector = args[1];
3797    var listener = args[2];
3798    var capture = args[3];
3799    if (typeof args[1] === 'function') {
3800      (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);
3801      targetSelector = undefined;
3802    }
3803    if (!capture) { capture = false; }
3804
3805    var events = eventType.split(' ');
3806    for (var i = 0; i < events.length; i += 1) {
3807      var event = events[i];
3808      for (var j = 0; j < this.length; j += 1) {
3809        var el = this[j];
3810        var handlers = (void 0);
3811        if (!targetSelector && el.dom7Listeners) {
3812          handlers = el.dom7Listeners[event];
3813        } else if (targetSelector && el.dom7LiveListeners) {
3814          handlers = el.dom7LiveListeners[event];
3815        }
3816        if (handlers && handlers.length) {
3817          for (var k = handlers.length - 1; k >= 0; k -= 1) {
3818            var handler = handlers[k];
3819            if (listener && handler.listener === listener) {
3820              el.removeEventListener(event, handler.proxyListener, capture);
3821              handlers.splice(k, 1);
3822            } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
3823              el.removeEventListener(event, handler.proxyListener, capture);
3824              handlers.splice(k, 1);
3825            } else if (!listener) {
3826              el.removeEventListener(event, handler.proxyListener, capture);
3827              handlers.splice(k, 1);
3828            }
3829          }
3830        }
3831      }
3832    }
3833    return this;
3834  }
3835  function trigger() {
3836    var args = [], len = arguments.length;
3837    while ( len-- ) args[ len ] = arguments[ len ];
3838
3839    var events = args[0].split(' ');
3840    var eventData = args[1];
3841    for (var i = 0; i < events.length; i += 1) {
3842      var event = events[i];
3843      for (var j = 0; j < this.length; j += 1) {
3844        var el = this[j];
3845        var evt = (void 0);
3846        try {
3847          evt = new win.CustomEvent(event, {
3848            detail: eventData,
3849            bubbles: true,
3850            cancelable: true,
3851          });
3852        } catch (e) {
3853          evt = doc.createEvent('Event');
3854          evt.initEvent(event, true, true);
3855          evt.detail = eventData;
3856        }
3857        // eslint-disable-next-line
3858        el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; });
3859        el.dispatchEvent(evt);
3860        el.dom7EventData = [];
3861        delete el.dom7EventData;
3862      }
3863    }
3864    return this;
3865  }
3866  function transitionEnd(callback) {
3867    var events = ['webkitTransitionEnd', 'transitionend'];
3868    var dom = this;
3869    var i;
3870    function fireCallBack(e) {
3871      /* jshint validthis:true */
3872      if (e.target !== this) { return; }
3873      callback.call(this, e);
3874      for (i = 0; i < events.length; i += 1) {
3875        dom.off(events[i], fireCallBack);
3876      }
3877    }
3878    if (callback) {
3879      for (i = 0; i < events.length; i += 1) {
3880        dom.on(events[i], fireCallBack);
3881      }
3882    }
3883    return this;
3884  }
3885  function outerWidth(includeMargins) {
3886    if (this.length > 0) {
3887      if (includeMargins) {
3888        // eslint-disable-next-line
3889        var styles = this.styles();
3890        return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));
3891      }
3892      return this[0].offsetWidth;
3893    }
3894    return null;
3895  }
3896  function outerHeight(includeMargins) {
3897    if (this.length > 0) {
3898      if (includeMargins) {
3899        // eslint-disable-next-line
3900        var styles = this.styles();
3901        return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));
3902      }
3903      return this[0].offsetHeight;
3904    }
3905    return null;
3906  }
3907  function offset() {
3908    if (this.length > 0) {
3909      var el = this[0];
3910      var box = el.getBoundingClientRect();
3911      var body = doc.body;
3912      var clientTop = el.clientTop || body.clientTop || 0;
3913      var clientLeft = el.clientLeft || body.clientLeft || 0;
3914      var scrollTop = el === win ? win.scrollY : el.scrollTop;
3915      var scrollLeft = el === win ? win.scrollX : el.scrollLeft;
3916      return {
3917        top: (box.top + scrollTop) - clientTop,
3918        left: (box.left + scrollLeft) - clientLeft,
3919      };
3920    }
3921
3922    return null;
3923  }
3924  function styles() {
3925    if (this[0]) { return win.getComputedStyle(this[0], null); }
3926    return {};
3927  }
3928  function css(props, value) {
3929    var i;
3930    if (arguments.length === 1) {
3931      if (typeof props === 'string') {
3932        if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); }
3933      } else {
3934        for (i = 0; i < this.length; i += 1) {
3935          // eslint-disable-next-line
3936          for (var prop in props) {
3937            this[i].style[prop] = props[prop];
3938          }
3939        }
3940        return this;
3941      }
3942    }
3943    if (arguments.length === 2 && typeof props === 'string') {
3944      for (i = 0; i < this.length; i += 1) {
3945        this[i].style[props] = value;
3946      }
3947      return this;
3948    }
3949    return this;
3950  }
3951  // Iterate over the collection passing elements to `callback`
3952  function each(callback) {
3953    // Don't bother continuing without a callback
3954    if (!callback) { return this; }
3955    // Iterate over the current collection
3956    for (var i = 0; i < this.length; i += 1) {
3957      // If the callback returns false
3958      if (callback.call(this[i], i, this[i]) === false) {
3959        // End the loop early
3960        return this;
3961      }
3962    }
3963    // Return `this` to allow chained DOM operations
3964    return this;
3965  }
3966  // eslint-disable-next-line
3967  function html(html) {
3968    if (typeof html === 'undefined') {
3969      return this[0] ? this[0].innerHTML : undefined;
3970    }
3971
3972    for (var i = 0; i < this.length; i += 1) {
3973      this[i].innerHTML = html;
3974    }
3975    return this;
3976  }
3977  // eslint-disable-next-line
3978  function text(text) {
3979    if (typeof text === 'undefined') {
3980      if (this[0]) {
3981        return this[0].textContent.trim();
3982      }
3983      return null;
3984    }
3985
3986    for (var i = 0; i < this.length; i += 1) {
3987      this[i].textContent = text;
3988    }
3989    return this;
3990  }
3991  function is(selector) {
3992    var el = this[0];
3993    var compareWith;
3994    var i;
3995    if (!el || typeof selector === 'undefined') { return false; }
3996    if (typeof selector === 'string') {
3997      if (el.matches) { return el.matches(selector); }
3998      else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); }
3999      else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); }
4000
4001      compareWith = $(selector);
4002      for (i = 0; i < compareWith.length; i += 1) {
4003        if (compareWith[i] === el) { return true; }
4004      }
4005      return false;
4006    } else if (selector === doc) { return el === doc; }
4007    else if (selector === win) { return el === win; }
4008
4009    if (selector.nodeType || selector instanceof Dom7) {
4010      compareWith = selector.nodeType ? [selector] : selector;
4011      for (i = 0; i < compareWith.length; i += 1) {
4012        if (compareWith[i] === el) { return true; }
4013      }
4014      return false;
4015    }
4016    return false;
4017  }
4018  function index() {
4019    var child = this[0];
4020    var i;
4021    if (child) {
4022      i = 0;
4023      // eslint-disable-next-line
4024      while ((child = child.previousSibling) !== null) {
4025        if (child.nodeType === 1) { i += 1; }
4026      }
4027      return i;
4028    }
4029    return undefined;
4030  }
4031  // eslint-disable-next-line
4032  function eq(index) {
4033    if (typeof index === 'undefined') { return this; }
4034    var length = this.length;
4035    var returnIndex;
4036    if (index > length - 1) {
4037      return new Dom7([]);
4038    }
4039    if (index < 0) {
4040      returnIndex = length + index;
4041      if (returnIndex < 0) { return new Dom7([]); }
4042      return new Dom7([this[returnIndex]]);
4043    }
4044    return new Dom7([this[index]]);
4045  }
4046  function append() {
4047    var args = [], len = arguments.length;
4048    while ( len-- ) args[ len ] = arguments[ len ];
4049
4050    var newChild;
4051
4052    for (var k = 0; k < args.length; k += 1) {
4053      newChild = args[k];
4054      for (var i = 0; i < this.length; i += 1) {
4055        if (typeof newChild === 'string') {
4056          var tempDiv = doc.createElement('div');
4057          tempDiv.innerHTML = newChild;
4058          while (tempDiv.firstChild) {
4059            this[i].appendChild(tempDiv.firstChild);
4060          }
4061        } else if (newChild instanceof Dom7) {
4062          for (var j = 0; j < newChild.length; j += 1) {
4063            this[i].appendChild(newChild[j]);
4064          }
4065        } else {
4066          this[i].appendChild(newChild);
4067        }
4068      }
4069    }
4070
4071    return this;
4072  }
4073  function prepend(newChild) {
4074    var i;
4075    var j;
4076    for (i = 0; i < this.length; i += 1) {
4077      if (typeof newChild === 'string') {
4078        var tempDiv = doc.createElement('div');
4079        tempDiv.innerHTML = newChild;
4080        for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
4081          this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
4082        }
4083      } else if (newChild instanceof Dom7) {
4084        for (j = 0; j < newChild.length; j += 1) {
4085          this[i].insertBefore(newChild[j], this[i].childNodes[0]);
4086        }
4087      } else {
4088        this[i].insertBefore(newChild, this[i].childNodes[0]);
4089      }
4090    }
4091    return this;
4092  }
4093  function next(selector) {
4094    if (this.length > 0) {
4095      if (selector) {
4096        if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
4097          return new Dom7([this[0].nextElementSibling]);
4098        }
4099        return new Dom7([]);
4100      }
4101
4102      if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); }
4103      return new Dom7([]);
4104    }
4105    return new Dom7([]);
4106  }
4107  function nextAll(selector) {
4108    var nextEls = [];
4109    var el = this[0];
4110    if (!el) { return new Dom7([]); }
4111    while (el.nextElementSibling) {
4112      var next = el.nextElementSibling; // eslint-disable-line
4113      if (selector) {
4114        if ($(next).is(selector)) { nextEls.push(next); }
4115      } else { nextEls.push(next); }
4116      el = next;
4117    }
4118    return new Dom7(nextEls);
4119  }
4120  function prev(selector) {
4121    if (this.length > 0) {
4122      var el = this[0];
4123      if (selector) {
4124        if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
4125          return new Dom7([el.previousElementSibling]);
4126        }
4127        return new Dom7([]);
4128      }
4129
4130      if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); }
4131      return new Dom7([]);
4132    }
4133    return new Dom7([]);
4134  }
4135  function prevAll(selector) {
4136    var prevEls = [];
4137    var el = this[0];
4138    if (!el) { return new Dom7([]); }
4139    while (el.previousElementSibling) {
4140      var prev = el.previousElementSibling; // eslint-disable-line
4141      if (selector) {
4142        if ($(prev).is(selector)) { prevEls.push(prev); }
4143      } else { prevEls.push(prev); }
4144      el = prev;
4145    }
4146    return new Dom7(prevEls);
4147  }
4148  function parent(selector) {
4149    var parents = []; // eslint-disable-line
4150    for (var i = 0; i < this.length; i += 1) {
4151      if (this[i].parentNode !== null) {
4152        if (selector) {
4153          if ($(this[i].parentNode).is(selector)) { parents.push(this[i].parentNode); }
4154        } else {
4155          parents.push(this[i].parentNode);
4156        }
4157      }
4158    }
4159    return $(unique(parents));
4160  }
4161  function parents(selector) {
4162    var parents = []; // eslint-disable-line
4163    for (var i = 0; i < this.length; i += 1) {
4164      var parent = this[i].parentNode; // eslint-disable-line
4165      while (parent) {
4166        if (selector) {
4167          if ($(parent).is(selector)) { parents.push(parent); }
4168        } else {
4169          parents.push(parent);
4170        }
4171        parent = parent.parentNode;
4172      }
4173    }
4174    return $(unique(parents));
4175  }
4176  function closest(selector) {
4177    var closest = this; // eslint-disable-line
4178    if (typeof selector === 'undefined') {
4179      return new Dom7([]);
4180    }
4181    if (!closest.is(selector)) {
4182      closest = closest.parents(selector).eq(0);
4183    }
4184    return closest;
4185  }
4186  function find(selector) {
4187    var foundElements = [];
4188    for (var i = 0; i < this.length; i += 1) {
4189      var found = this[i].querySelectorAll(selector);
4190      for (var j = 0; j < found.length; j += 1) {
4191        foundElements.push(found[j]);
4192      }
4193    }
4194    return new Dom7(foundElements);
4195  }
4196  function children(selector) {
4197    var children = []; // eslint-disable-line
4198    for (var i = 0; i < this.length; i += 1) {
4199      var childNodes = this[i].childNodes;
4200
4201      for (var j = 0; j < childNodes.length; j += 1) {
4202        if (!selector) {
4203          if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); }
4204        } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {
4205          children.push(childNodes[j]);
4206        }
4207      }
4208    }
4209    return new Dom7(unique(children));
4210  }
4211  function remove() {
4212    for (var i = 0; i < this.length; i += 1) {
4213      if (this[i].parentNode) { this[i].parentNode.removeChild(this[i]); }
4214    }
4215    return this;
4216  }
4217  function add() {
4218    var args = [], len = arguments.length;
4219    while ( len-- ) args[ len ] = arguments[ len ];
4220
4221    var dom = this;
4222    var i;
4223    var j;
4224    for (i = 0; i < args.length; i += 1) {
4225      var toAdd = $(args[i]);
4226      for (j = 0; j < toAdd.length; j += 1) {
4227        dom[dom.length] = toAdd[j];
4228        dom.length += 1;
4229      }
4230    }
4231    return dom;
4232  }
4233
4234  var Methods = {
4235    addClass: addClass,
4236    removeClass: removeClass,
4237    hasClass: hasClass,
4238    toggleClass: toggleClass,
4239    attr: attr,
4240    removeAttr: removeAttr,
4241    data: data,
4242    transform: transform,
4243    transition: transition,
4244    on: on,
4245    off: off,
4246    trigger: trigger,
4247    transitionEnd: transitionEnd,
4248    outerWidth: outerWidth,
4249    outerHeight: outerHeight,
4250    offset: offset,
4251    css: css,
4252    each: each,
4253    html: html,
4254    text: text,
4255    is: is,
4256    index: index,
4257    eq: eq,
4258    append: append,
4259    prepend: prepend,
4260    next: next,
4261    nextAll: nextAll,
4262    prev: prev,
4263    prevAll: prevAll,
4264    parent: parent,
4265    parents: parents,
4266    closest: closest,
4267    find: find,
4268    children: children,
4269    remove: remove,
4270    add: add,
4271    styles: styles,
4272  };
4273
4274  Object.keys(Methods).forEach(function (methodName) {
4275    $.fn[methodName] = Methods[methodName];
4276  });
4277
4278  var Utils = {
4279    deleteProps: function deleteProps(obj) {
4280      var object = obj;
4281      Object.keys(object).forEach(function (key) {
4282        try {
4283          object[key] = null;
4284        } catch (e) {
4285          // no getter for object
4286        }
4287        try {
4288          delete object[key];
4289        } catch (e) {
4290          // something got wrong
4291        }
4292      });
4293    },
4294    nextTick: function nextTick(callback, delay) {
4295      if ( delay === void 0 ) delay = 0;
4296
4297      return setTimeout(callback, delay);
4298    },
4299    now: function now() {
4300      return Date.now();
4301    },
4302    getTranslate: function getTranslate(el, axis) {
4303      if ( axis === void 0 ) axis = 'x';
4304
4305      var matrix;
4306      var curTransform;
4307      var transformMatrix;
4308
4309      var curStyle = win.getComputedStyle(el, null);
4310
4311      if (win.WebKitCSSMatrix) {
4312        curTransform = curStyle.transform || curStyle.webkitTransform;
4313        if (curTransform.split(',').length > 6) {
4314          curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', ');
4315        }
4316        // Some old versions of Webkit choke when 'none' is passed; pass
4317        // empty string instead in this case
4318        transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
4319      } else {
4320        transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
4321        matrix = transformMatrix.toString().split(',');
4322      }
4323
4324      if (axis === 'x') {
4325        // Latest Chrome and webkits Fix
4326        if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m41; }
4327        // Crazy IE10 Matrix
4328        else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); }
4329        // Normal Browsers
4330        else { curTransform = parseFloat(matrix[4]); }
4331      }
4332      if (axis === 'y') {
4333        // Latest Chrome and webkits Fix
4334        if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m42; }
4335        // Crazy IE10 Matrix
4336        else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); }
4337        // Normal Browsers
4338        else { curTransform = parseFloat(matrix[5]); }
4339      }
4340      return curTransform || 0;
4341    },
4342    parseUrlQuery: function parseUrlQuery(url) {
4343      var query = {};
4344      var urlToParse = url || win.location.href;
4345      var i;
4346      var params;
4347      var param;
4348      var length;
4349      if (typeof urlToParse === 'string' && urlToParse.length) {
4350        urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : '';
4351        params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; });
4352        length = params.length;
4353
4354        for (i = 0; i < length; i += 1) {
4355          param = params[i].replace(/#\S+/g, '').split('=');
4356          query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';
4357        }
4358      }
4359      return query;
4360    },
4361    isObject: function isObject(o) {
4362      return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
4363    },
4364    extend: function extend() {
4365      var args = [], len$1 = arguments.length;
4366      while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];
4367
4368      var to = Object(args[0]);
4369      for (var i = 1; i < args.length; i += 1) {
4370        var nextSource = args[i];
4371        if (nextSource !== undefined && nextSource !== null) {
4372          var keysArray = Object.keys(Object(nextSource));
4373          for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
4374            var nextKey = keysArray[nextIndex];
4375            var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
4376            if (desc !== undefined && desc.enumerable) {
4377              if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
4378                Utils.extend(to[nextKey], nextSource[nextKey]);
4379              } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
4380                to[nextKey] = {};
4381                Utils.extend(to[nextKey], nextSource[nextKey]);
4382              } else {
4383                to[nextKey] = nextSource[nextKey];
4384              }
4385            }
4386          }
4387        }
4388      }
4389      return to;
4390    },
4391  };
4392
4393  var Support = (function Support() {
4394    var testDiv = doc.createElement('div');
4395    return {
4396      touch: (win.Modernizr && win.Modernizr.touch === true) || (function checkTouch() {
4397        return !!((win.navigator.maxTouchPoints > 0) || ('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch));
4398      }()),
4399
4400      pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent || ('maxTouchPoints' in win.navigator && win.navigator.maxTouchPoints > 0)),
4401      prefixedPointerEvents: !!win.navigator.msPointerEnabled,
4402
4403      transition: (function checkTransition() {
4404        var style = testDiv.style;
4405        return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);
4406      }()),
4407      transforms3d: (win.Modernizr && win.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {
4408        var style = testDiv.style;
4409        return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style);
4410      }()),
4411
4412      flexbox: (function checkFlexbox() {
4413        var style = testDiv.style;
4414        var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');
4415        for (var i = 0; i < styles.length; i += 1) {
4416          if (styles[i] in style) { return true; }
4417        }
4418        return false;
4419      }()),
4420
4421      observer: (function checkObserver() {
4422        return ('MutationObserver' in win || 'WebkitMutationObserver' in win);
4423      }()),
4424
4425      passiveListener: (function checkPassiveListener() {
4426        var supportsPassive = false;
4427        try {
4428          var opts = Object.defineProperty({}, 'passive', {
4429            // eslint-disable-next-line
4430            get: function get() {
4431              supportsPassive = true;
4432            },
4433          });
4434          win.addEventListener('testPassiveListener', null, opts);
4435        } catch (e) {
4436          // No support
4437        }
4438        return supportsPassive;
4439      }()),
4440
4441      gestures: (function checkGestures() {
4442        return 'ongesturestart' in win;
4443      }()),
4444    };
4445  }());
4446
4447  var Browser = (function Browser() {
4448    function isSafari() {
4449      var ua = win.navigator.userAgent.toLowerCase();
4450      return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);
4451    }
4452    return {
4453      isIE: !!win.navigator.userAgent.match(/Trident/g) || !!win.navigator.userAgent.match(/MSIE/g),
4454      isEdge: !!win.navigator.userAgent.match(/Edge/g),
4455      isSafari: isSafari(),
4456      isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent),
4457    };
4458  }());
4459
4460  var SwiperClass = function SwiperClass(params) {
4461    if ( params === void 0 ) params = {};
4462
4463    var self = this;
4464    self.params = params;
4465
4466    // Events
4467    self.eventsListeners = {};
4468
4469    if (self.params && self.params.on) {
4470      Object.keys(self.params.on).forEach(function (eventName) {
4471        self.on(eventName, self.params.on[eventName]);
4472      });
4473    }
4474  };
4475
4476  var staticAccessors = { components: { configurable: true } };
4477
4478  SwiperClass.prototype.on = function on (events, handler, priority) {
4479    var self = this;
4480    if (typeof handler !== 'function') { return self; }
4481    var method = priority ? 'unshift' : 'push';
4482    events.split(' ').forEach(function (event) {
4483      if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; }
4484      self.eventsListeners[event][method](handler);
4485    });
4486    return self;
4487  };
4488
4489  SwiperClass.prototype.once = function once (events, handler, priority) {
4490    var self = this;
4491    if (typeof handler !== 'function') { return self; }
4492    function onceHandler() {
4493        var args = [], len = arguments.length;
4494        while ( len-- ) args[ len ] = arguments[ len ];
4495
4496      handler.apply(self, args);
4497      self.off(events, onceHandler);
4498      if (onceHandler.f7proxy) {
4499        delete onceHandler.f7proxy;
4500      }
4501    }
4502    onceHandler.f7proxy = handler;
4503    return self.on(events, onceHandler, priority);
4504  };
4505
4506  SwiperClass.prototype.off = function off (events, handler) {
4507    var self = this;
4508    if (!self.eventsListeners) { return self; }
4509    events.split(' ').forEach(function (event) {
4510      if (typeof handler === 'undefined') {
4511        self.eventsListeners[event] = [];
4512      } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {
4513        self.eventsListeners[event].forEach(function (eventHandler, index) {
4514          if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {
4515            self.eventsListeners[event].splice(index, 1);
4516          }
4517        });
4518      }
4519    });
4520    return self;
4521  };
4522
4523  SwiperClass.prototype.emit = function emit () {
4524      var args = [], len = arguments.length;
4525      while ( len-- ) args[ len ] = arguments[ len ];
4526
4527    var self = this;
4528    if (!self.eventsListeners) { return self; }
4529    var events;
4530    var data;
4531    var context;
4532    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
4533      events = args[0];
4534      data = args.slice(1, args.length);
4535      context = self;
4536    } else {
4537      events = args[0].events;
4538      data = args[0].data;
4539      context = args[0].context || self;
4540    }
4541    var eventsArray = Array.isArray(events) ? events : events.split(' ');
4542    eventsArray.forEach(function (event) {
4543      if (self.eventsListeners && self.eventsListeners[event]) {
4544        var handlers = [];
4545        self.eventsListeners[event].forEach(function (eventHandler) {
4546          handlers.push(eventHandler);
4547        });
4548        handlers.forEach(function (eventHandler) {
4549          eventHandler.apply(context, data);
4550        });
4551      }
4552    });
4553    return self;
4554  };
4555
4556  SwiperClass.prototype.useModulesParams = function useModulesParams (instanceParams) {
4557    var instance = this;
4558    if (!instance.modules) { return; }
4559    Object.keys(instance.modules).forEach(function (moduleName) {
4560      var module = instance.modules[moduleName];
4561      // Extend params
4562      if (module.params) {
4563        Utils.extend(instanceParams, module.params);
4564      }
4565    });
4566  };
4567
4568  SwiperClass.prototype.useModules = function useModules (modulesParams) {
4569      if ( modulesParams === void 0 ) modulesParams = {};
4570
4571    var instance = this;
4572    if (!instance.modules) { return; }
4573    Object.keys(instance.modules).forEach(function (moduleName) {
4574      var module = instance.modules[moduleName];
4575      var moduleParams = modulesParams[moduleName] || {};
4576      // Extend instance methods and props
4577      if (module.instance) {
4578        Object.keys(module.instance).forEach(function (modulePropName) {
4579          var moduleProp = module.instance[modulePropName];
4580          if (typeof moduleProp === 'function') {
4581            instance[modulePropName] = moduleProp.bind(instance);
4582          } else {
4583            instance[modulePropName] = moduleProp;
4584          }
4585        });
4586      }
4587      // Add event listeners
4588      if (module.on && instance.on) {
4589        Object.keys(module.on).forEach(function (moduleEventName) {
4590          instance.on(moduleEventName, module.on[moduleEventName]);
4591        });
4592      }
4593
4594      // Module create callback
4595      if (module.create) {
4596        module.create.bind(instance)(moduleParams);
4597      }
4598    });
4599  };
4600
4601  staticAccessors.components.set = function (components) {
4602    var Class = this;
4603    if (!Class.use) { return; }
4604    Class.use(components);
4605  };
4606
4607  SwiperClass.installModule = function installModule (module) {
4608      var params = [], len = arguments.length - 1;
4609      while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];
4610
4611    var Class = this;
4612    if (!Class.prototype.modules) { Class.prototype.modules = {}; }
4613    var name = module.name || (((Object.keys(Class.prototype.modules).length) + "_" + (Utils.now())));
4614    Class.prototype.modules[name] = module;
4615    // Prototype
4616    if (module.proto) {
4617      Object.keys(module.proto).forEach(function (key) {
4618        Class.prototype[key] = module.proto[key];
4619      });
4620    }
4621    // Class
4622    if (module.static) {
4623      Object.keys(module.static).forEach(function (key) {
4624        Class[key] = module.static[key];
4625      });
4626    }
4627    // Callback
4628    if (module.install) {
4629      module.install.apply(Class, params);
4630    }
4631    return Class;
4632  };
4633
4634  SwiperClass.use = function use (module) {
4635      var params = [], len = arguments.length - 1;
4636      while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];
4637
4638    var Class = this;
4639    if (Array.isArray(module)) {
4640      module.forEach(function (m) { return Class.installModule(m); });
4641      return Class;
4642    }
4643    return Class.installModule.apply(Class, [ module ].concat( params ));
4644  };
4645
4646  Object.defineProperties( SwiperClass, staticAccessors );
4647
4648  function updateSize () {
4649    var swiper = this;
4650    var width;
4651    var height;
4652    var $el = swiper.$el;
4653    if (typeof swiper.params.width !== 'undefined') {
4654      width = swiper.params.width;
4655    } else {
4656      width = $el[0].clientWidth;
4657    }
4658    if (typeof swiper.params.height !== 'undefined') {
4659      height = swiper.params.height;
4660    } else {
4661      height = $el[0].clientHeight;
4662    }
4663    if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {
4664      return;
4665    }
4666
4667    // Subtract paddings
4668    width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);
4669    height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);
4670
4671    Utils.extend(swiper, {
4672      width: width,
4673      height: height,
4674      size: swiper.isHorizontal() ? width : height,
4675    });
4676  }
4677
4678  function updateSlides () {
4679    var swiper = this;
4680    var params = swiper.params;
4681
4682    var $wrapperEl = swiper.$wrapperEl;
4683    var swiperSize = swiper.size;
4684    var rtl = swiper.rtlTranslate;
4685    var wrongRTL = swiper.wrongRTL;
4686    var isVirtual = swiper.virtual && params.virtual.enabled;
4687    var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
4688    var slides = $wrapperEl.children(("." + (swiper.params.slideClass)));
4689    var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
4690    var snapGrid = [];
4691    var slidesGrid = [];
4692    var slidesSizesGrid = [];
4693
4694    var offsetBefore = params.slidesOffsetBefore;
4695    if (typeof offsetBefore === 'function') {
4696      offsetBefore = params.slidesOffsetBefore.call(swiper);
4697    }
4698
4699    var offsetAfter = params.slidesOffsetAfter;
4700    if (typeof offsetAfter === 'function') {
4701      offsetAfter = params.slidesOffsetAfter.call(swiper);
4702    }
4703
4704    var previousSnapGridLength = swiper.snapGrid.length;
4705    var previousSlidesGridLength = swiper.snapGrid.length;
4706
4707    var spaceBetween = params.spaceBetween;
4708    var slidePosition = -offsetBefore;
4709    var prevSlideSize = 0;
4710    var index = 0;
4711    if (typeof swiperSize === 'undefined') {
4712      return;
4713    }
4714    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
4715      spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;
4716    }
4717
4718    swiper.virtualSize = -spaceBetween;
4719
4720    // reset margins
4721    if (rtl) { slides.css({ marginLeft: '', marginTop: '' }); }
4722    else { slides.css({ marginRight: '', marginBottom: '' }); }
4723
4724    var slidesNumberEvenToRows;
4725    if (params.slidesPerColumn > 1) {
4726      if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
4727        slidesNumberEvenToRows = slidesLength;
4728      } else {
4729        slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
4730      }
4731      if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
4732        slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
4733      }
4734    }
4735
4736    // Calc slides
4737    var slideSize;
4738    var slidesPerColumn = params.slidesPerColumn;
4739    var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
4740    var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
4741    for (var i = 0; i < slidesLength; i += 1) {
4742      slideSize = 0;
4743      var slide = slides.eq(i);
4744      if (params.slidesPerColumn > 1) {
4745        // Set slides order
4746        var newSlideOrderIndex = (void 0);
4747        var column = (void 0);
4748        var row = (void 0);
4749        if (params.slidesPerColumnFill === 'column') {
4750          column = Math.floor(i / slidesPerColumn);
4751          row = i - (column * slidesPerColumn);
4752          if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {
4753            row += 1;
4754            if (row >= slidesPerColumn) {
4755              row = 0;
4756              column += 1;
4757            }
4758          }
4759          newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);
4760          slide
4761            .css({
4762              '-webkit-box-ordinal-group': newSlideOrderIndex,
4763              '-moz-box-ordinal-group': newSlideOrderIndex,
4764              '-ms-flex-order': newSlideOrderIndex,
4765              '-webkit-order': newSlideOrderIndex,
4766              order: newSlideOrderIndex,
4767            });
4768        } else {
4769          row = Math.floor(i / slidesPerRow);
4770          column = i - (row * slidesPerRow);
4771        }
4772        slide
4773          .css(
4774            ("margin-" + (swiper.isHorizontal() ? 'top' : 'left')),
4775            (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + "px"))
4776          )
4777          .attr('data-swiper-column', column)
4778          .attr('data-swiper-row', row);
4779      }
4780      if (slide.css('display') === 'none') { continue; } // eslint-disable-line
4781
4782      if (params.slidesPerView === 'auto') {
4783        var slideStyles = win.getComputedStyle(slide[0], null);
4784        var currentTransform = slide[0].style.transform;
4785        var currentWebKitTransform = slide[0].style.webkitTransform;
4786        if (currentTransform) {
4787          slide[0].style.transform = 'none';
4788        }
4789        if (currentWebKitTransform) {
4790          slide[0].style.webkitTransform = 'none';
4791        }
4792        if (params.roundLengths) {
4793          slideSize = swiper.isHorizontal()
4794            ? slide.outerWidth(true)
4795            : slide.outerHeight(true);
4796        } else {
4797          // eslint-disable-next-line
4798          if (swiper.isHorizontal()) {
4799            var width = parseFloat(slideStyles.getPropertyValue('width'));
4800            var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));
4801            var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));
4802            var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));
4803            var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));
4804            var boxSizing = slideStyles.getPropertyValue('box-sizing');
4805            if (boxSizing && boxSizing === 'border-box') {
4806              slideSize = width + marginLeft + marginRight;
4807            } else {
4808              slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;
4809            }
4810          } else {
4811            var height = parseFloat(slideStyles.getPropertyValue('height'));
4812            var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));
4813            var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));
4814            var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));
4815            var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));
4816            var boxSizing$1 = slideStyles.getPropertyValue('box-sizing');
4817            if (boxSizing$1 && boxSizing$1 === 'border-box') {
4818              slideSize = height + marginTop + marginBottom;
4819            } else {
4820              slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;
4821            }
4822          }
4823        }
4824        if (currentTransform) {
4825          slide[0].style.transform = currentTransform;
4826        }
4827        if (currentWebKitTransform) {
4828          slide[0].style.webkitTransform = currentWebKitTransform;
4829        }
4830        if (params.roundLengths) { slideSize = Math.floor(slideSize); }
4831      } else {
4832        slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;
4833        if (params.roundLengths) { slideSize = Math.floor(slideSize); }
4834
4835        if (slides[i]) {
4836          if (swiper.isHorizontal()) {
4837            slides[i].style.width = slideSize + "px";
4838          } else {
4839            slides[i].style.height = slideSize + "px";
4840          }
4841        }
4842      }
4843      if (slides[i]) {
4844        slides[i].swiperSlideSize = slideSize;
4845      }
4846      slidesSizesGrid.push(slideSize);
4847
4848
4849      if (params.centeredSlides) {
4850        slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;
4851        if (prevSlideSize === 0 && i !== 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }
4852        if (i === 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }
4853        if (Math.abs(slidePosition) < 1 / 1000) { slidePosition = 0; }
4854        if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }
4855        if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }
4856        slidesGrid.push(slidePosition);
4857      } else {
4858        if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }
4859        if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }
4860        slidesGrid.push(slidePosition);
4861        slidePosition = slidePosition + slideSize + spaceBetween;
4862      }
4863
4864      swiper.virtualSize += slideSize + spaceBetween;
4865
4866      prevSlideSize = slideSize;
4867
4868      index += 1;
4869    }
4870    swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
4871    var newSlidesGrid;
4872
4873    if (
4874      rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
4875      $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") });
4876    }
4877    if (!Support.flexbox || params.setWrapperSize) {
4878      if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
4879      else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
4880    }
4881
4882    if (params.slidesPerColumn > 1) {
4883      swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
4884      swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
4885      if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
4886      else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
4887      if (params.centeredSlides) {
4888        newSlidesGrid = [];
4889        for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) {
4890          var slidesGridItem = snapGrid[i$1];
4891          if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); }
4892          if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(slidesGridItem); }
4893        }
4894        snapGrid = newSlidesGrid;
4895      }
4896    }
4897
4898    // Remove last grid elements depending on width
4899    if (!params.centeredSlides) {
4900      newSlidesGrid = [];
4901      for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {
4902        var slidesGridItem$1 = snapGrid[i$2];
4903        if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); }
4904        if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) {
4905          newSlidesGrid.push(slidesGridItem$1);
4906        }
4907      }
4908      snapGrid = newSlidesGrid;
4909      if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
4910        snapGrid.push(swiper.virtualSize - swiperSize);
4911      }
4912    }
4913    if (snapGrid.length === 0) { snapGrid = [0]; }
4914
4915    if (params.spaceBetween !== 0) {
4916      if (swiper.isHorizontal()) {
4917        if (rtl) { slides.css({ marginLeft: (spaceBetween + "px") }); }
4918        else { slides.css({ marginRight: (spaceBetween + "px") }); }
4919      } else { slides.css({ marginBottom: (spaceBetween + "px") }); }
4920    }
4921
4922    if (params.centerInsufficientSlides) {
4923      var allSlidesSize = 0;
4924      slidesSizesGrid.forEach(function (slideSizeValue) {
4925        allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
4926      });
4927      allSlidesSize -= params.spaceBetween;
4928      if (allSlidesSize < swiperSize) {
4929        var allSlidesOffset = (swiperSize - allSlidesSize) / 2;
4930        snapGrid.forEach(function (snap, snapIndex) {
4931          snapGrid[snapIndex] = snap - allSlidesOffset;
4932        });
4933        slidesGrid.forEach(function (snap, snapIndex) {
4934          slidesGrid[snapIndex] = snap + allSlidesOffset;
4935        });
4936      }
4937    }
4938
4939    Utils.extend(swiper, {
4940      slides: slides,
4941      snapGrid: snapGrid,
4942      slidesGrid: slidesGrid,
4943      slidesSizesGrid: slidesSizesGrid,
4944    });
4945
4946    if (slidesLength !== previousSlidesLength) {
4947      swiper.emit('slidesLengthChange');
4948    }
4949    if (snapGrid.length !== previousSnapGridLength) {
4950      if (swiper.params.watchOverflow) { swiper.checkOverflow(); }
4951      swiper.emit('snapGridLengthChange');
4952    }
4953    if (slidesGrid.length !== previousSlidesGridLength) {
4954      swiper.emit('slidesGridLengthChange');
4955    }
4956
4957    if (params.watchSlidesProgress || params.watchSlidesVisibility) {
4958      swiper.updateSlidesOffset();
4959    }
4960  }
4961
4962  function updateAutoHeight (speed) {
4963    var swiper = this;
4964    var activeSlides = [];
4965    var newHeight = 0;
4966    var i;
4967    if (typeof speed === 'number') {
4968      swiper.setTransition(speed);
4969    } else if (speed === true) {
4970      swiper.setTransition(swiper.params.speed);
4971    }
4972    // Find slides currently in view
4973    if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
4974      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
4975        var index = swiper.activeIndex + i;
4976        if (index > swiper.slides.length) { break; }
4977        activeSlides.push(swiper.slides.eq(index)[0]);
4978      }
4979    } else {
4980      activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
4981    }
4982
4983    // Find new height from highest slide in view
4984    for (i = 0; i < activeSlides.length; i += 1) {
4985      if (typeof activeSlides[i] !== 'undefined') {
4986        var height = activeSlides[i].offsetHeight;
4987        newHeight = height > newHeight ? height : newHeight;
4988      }
4989    }
4990
4991    // Update Height
4992    if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + "px")); }
4993  }
4994
4995  function updateSlidesOffset () {
4996    var swiper = this;
4997    var slides = swiper.slides;
4998    for (var i = 0; i < slides.length; i += 1) {
4999      slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
5000    }
5001  }
5002
5003  function updateSlidesProgress (translate) {
5004    if ( translate === void 0 ) translate = (this && this.translate) || 0;
5005
5006    var swiper = this;
5007    var params = swiper.params;
5008
5009    var slides = swiper.slides;
5010    var rtl = swiper.rtlTranslate;
5011
5012    if (slides.length === 0) { return; }
5013    if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); }
5014
5015    var offsetCenter = -translate;
5016    if (rtl) { offsetCenter = translate; }
5017
5018    // Visible Slides
5019    slides.removeClass(params.slideVisibleClass);
5020
5021    swiper.visibleSlidesIndexes = [];
5022    swiper.visibleSlides = [];
5023
5024    for (var i = 0; i < slides.length; i += 1) {
5025      var slide = slides[i];
5026      var slideProgress = (
5027        (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset
5028      ) / (slide.swiperSlideSize + params.spaceBetween);
5029      if (params.watchSlidesVisibility) {
5030        var slideBefore = -(offsetCenter - slide.swiperSlideOffset);
5031        var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
5032        var isVisible = (slideBefore >= 0 && slideBefore < swiper.size)
5033                  || (slideAfter > 0 && slideAfter <= swiper.size)
5034                  || (slideBefore <= 0 && slideAfter >= swiper.size);
5035        if (isVisible) {
5036          swiper.visibleSlides.push(slide);
5037          swiper.visibleSlidesIndexes.push(i);
5038          slides.eq(i).addClass(params.slideVisibleClass);
5039        }
5040      }
5041      slide.progress = rtl ? -slideProgress : slideProgress;
5042    }
5043    swiper.visibleSlides = $(swiper.visibleSlides);
5044  }
5045
5046  function updateProgress (translate) {
5047    if ( translate === void 0 ) translate = (this && this.translate) || 0;
5048
5049    var swiper = this;
5050    var params = swiper.params;
5051
5052    var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
5053    var progress = swiper.progress;
5054    var isBeginning = swiper.isBeginning;
5055    var isEnd = swiper.isEnd;
5056    var wasBeginning = isBeginning;
5057    var wasEnd = isEnd;
5058    if (translatesDiff === 0) {
5059      progress = 0;
5060      isBeginning = true;
5061      isEnd = true;
5062    } else {
5063      progress = (translate - swiper.minTranslate()) / (translatesDiff);
5064      isBeginning = progress <= 0;
5065      isEnd = progress >= 1;
5066    }
5067    Utils.extend(swiper, {
5068      progress: progress,
5069      isBeginning: isBeginning,
5070      isEnd: isEnd,
5071    });
5072
5073    if (params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateSlidesProgress(translate); }
5074
5075    if (isBeginning && !wasBeginning) {
5076      swiper.emit('reachBeginning toEdge');
5077    }
5078    if (isEnd && !wasEnd) {
5079      swiper.emit('reachEnd toEdge');
5080    }
5081    if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {
5082      swiper.emit('fromEdge');
5083    }
5084
5085    swiper.emit('progress', progress);
5086  }
5087
5088  function updateSlidesClasses () {
5089    var swiper = this;
5090
5091    var slides = swiper.slides;
5092    var params = swiper.params;
5093    var $wrapperEl = swiper.$wrapperEl;
5094    var activeIndex = swiper.activeIndex;
5095    var realIndex = swiper.realIndex;
5096    var isVirtual = swiper.virtual && params.virtual.enabled;
5097
5098    slides.removeClass(((params.slideActiveClass) + " " + (params.slideNextClass) + " " + (params.slidePrevClass) + " " + (params.slideDuplicateActiveClass) + " " + (params.slideDuplicateNextClass) + " " + (params.slideDuplicatePrevClass)));
5099
5100    var activeSlide;
5101    if (isVirtual) {
5102      activeSlide = swiper.$wrapperEl.find(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + activeIndex + "\"]"));
5103    } else {
5104      activeSlide = slides.eq(activeIndex);
5105    }
5106
5107    // Active classes
5108    activeSlide.addClass(params.slideActiveClass);
5109
5110    if (params.loop) {
5111      // Duplicate to all looped slides
5112      if (activeSlide.hasClass(params.slideDuplicateClass)) {
5113        $wrapperEl
5114          .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + realIndex + "\"]"))
5115          .addClass(params.slideDuplicateActiveClass);
5116      } else {
5117        $wrapperEl
5118          .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]"))
5119          .addClass(params.slideDuplicateActiveClass);
5120      }
5121    }
5122    // Next Slide
5123    var nextSlide = activeSlide.nextAll(("." + (params.slideClass))).eq(0).addClass(params.slideNextClass);
5124    if (params.loop && nextSlide.length === 0) {
5125      nextSlide = slides.eq(0);
5126      nextSlide.addClass(params.slideNextClass);
5127    }
5128    // Prev Slide
5129    var prevSlide = activeSlide.prevAll(("." + (params.slideClass))).eq(0).addClass(params.slidePrevClass);
5130    if (params.loop && prevSlide.length === 0) {
5131      prevSlide = slides.eq(-1);
5132      prevSlide.addClass(params.slidePrevClass);
5133    }
5134    if (params.loop) {
5135      // Duplicate to all looped slides
5136      if (nextSlide.hasClass(params.slideDuplicateClass)) {
5137        $wrapperEl
5138          .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]"))
5139          .addClass(params.slideDuplicateNextClass);
5140      } else {
5141        $wrapperEl
5142          .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]"))
5143          .addClass(params.slideDuplicateNextClass);
5144      }
5145      if (prevSlide.hasClass(params.slideDuplicateClass)) {
5146        $wrapperEl
5147          .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]"))
5148          .addClass(params.slideDuplicatePrevClass);
5149      } else {
5150        $wrapperEl
5151          .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]"))
5152          .addClass(params.slideDuplicatePrevClass);
5153      }
5154    }
5155  }
5156
5157  function updateActiveIndex (newActiveIndex) {
5158    var swiper = this;
5159    var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
5160    var slidesGrid = swiper.slidesGrid;
5161    var snapGrid = swiper.snapGrid;
5162    var params = swiper.params;
5163    var previousIndex = swiper.activeIndex;
5164    var previousRealIndex = swiper.realIndex;
5165    var previousSnapIndex = swiper.snapIndex;
5166    var activeIndex = newActiveIndex;
5167    var snapIndex;
5168    if (typeof activeIndex === 'undefined') {
5169      for (var i = 0; i < slidesGrid.length; i += 1) {
5170        if (typeof slidesGrid[i + 1] !== 'undefined') {
5171          if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {
5172            activeIndex = i;
5173          } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
5174            activeIndex = i + 1;
5175          }
5176        } else if (translate >= slidesGrid[i]) {
5177          activeIndex = i;
5178        }
5179      }
5180      // Normalize slideIndex
5181      if (params.normalizeSlideIndex) {
5182        if (activeIndex < 0 || typeof activeIndex === 'undefined') { activeIndex = 0; }
5183      }
5184    }
5185    if (snapGrid.indexOf(translate) >= 0) {
5186      snapIndex = snapGrid.indexOf(translate);
5187    } else {
5188      snapIndex = Math.floor(activeIndex / params.slidesPerGroup);
5189    }
5190    if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }
5191    if (activeIndex === previousIndex) {
5192      if (snapIndex !== previousSnapIndex) {
5193        swiper.snapIndex = snapIndex;
5194        swiper.emit('snapIndexChange');
5195      }
5196      return;
5197    }
5198
5199    // Get real index
5200    var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
5201
5202    Utils.extend(swiper, {
5203      snapIndex: snapIndex,
5204      realIndex: realIndex,
5205      previousIndex: previousIndex,
5206      activeIndex: activeIndex,
5207    });
5208    swiper.emit('activeIndexChange');
5209    swiper.emit('snapIndexChange');
5210    if (previousRealIndex !== realIndex) {
5211      swiper.emit('realIndexChange');
5212    }
5213    swiper.emit('slideChange');
5214  }
5215
5216  function updateClickedSlide (e) {
5217    var swiper = this;
5218    var params = swiper.params;
5219    var slide = $(e.target).closest(("." + (params.slideClass)))[0];
5220    var slideFound = false;
5221    if (slide) {
5222      for (var i = 0; i < swiper.slides.length; i += 1) {
5223        if (swiper.slides[i] === slide) { slideFound = true; }
5224      }
5225    }
5226
5227    if (slide && slideFound) {
5228      swiper.clickedSlide = slide;
5229      if (swiper.virtual && swiper.params.virtual.enabled) {
5230        swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);
5231      } else {
5232        swiper.clickedIndex = $(slide).index();
5233      }
5234    } else {
5235      swiper.clickedSlide = undefined;
5236      swiper.clickedIndex = undefined;
5237      return;
5238    }
5239    if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
5240      swiper.slideToClickedSlide();
5241    }
5242  }
5243
5244  var update = {
5245    updateSize: updateSize,
5246    updateSlides: updateSlides,
5247    updateAutoHeight: updateAutoHeight,
5248    updateSlidesOffset: updateSlidesOffset,
5249    updateSlidesProgress: updateSlidesProgress,
5250    updateProgress: updateProgress,
5251    updateSlidesClasses: updateSlidesClasses,
5252    updateActiveIndex: updateActiveIndex,
5253    updateClickedSlide: updateClickedSlide,
5254  };
5255
5256  function getTranslate (axis) {
5257    if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y';
5258
5259    var swiper = this;
5260
5261    var params = swiper.params;
5262    var rtl = swiper.rtlTranslate;
5263    var translate = swiper.translate;
5264    var $wrapperEl = swiper.$wrapperEl;
5265
5266    if (params.virtualTranslate) {
5267      return rtl ? -translate : translate;
5268    }
5269
5270    var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);
5271    if (rtl) { currentTranslate = -currentTranslate; }
5272
5273    return currentTranslate || 0;
5274  }
5275
5276  function setTranslate (translate, byController) {
5277    var swiper = this;
5278    var rtl = swiper.rtlTranslate;
5279    var params = swiper.params;
5280    var $wrapperEl = swiper.$wrapperEl;
5281    var progress = swiper.progress;
5282    var x = 0;
5283    var y = 0;
5284    var z = 0;
5285
5286    if (swiper.isHorizontal()) {
5287      x = rtl ? -translate : translate;
5288    } else {
5289      y = translate;
5290    }
5291
5292    if (params.roundLengths) {
5293      x = Math.floor(x);
5294      y = Math.floor(y);
5295    }
5296
5297    if (!params.virtualTranslate) {
5298      if (Support.transforms3d) { $wrapperEl.transform(("translate3d(" + x + "px, " + y + "px, " + z + "px)")); }
5299      else { $wrapperEl.transform(("translate(" + x + "px, " + y + "px)")); }
5300    }
5301    swiper.previousTranslate = swiper.translate;
5302    swiper.translate = swiper.isHorizontal() ? x : y;
5303
5304    // Check if we need to update progress
5305    var newProgress;
5306    var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
5307    if (translatesDiff === 0) {
5308      newProgress = 0;
5309    } else {
5310      newProgress = (translate - swiper.minTranslate()) / (translatesDiff);
5311    }
5312    if (newProgress !== progress) {
5313      swiper.updateProgress(translate);
5314    }
5315
5316    swiper.emit('setTranslate', swiper.translate, byController);
5317  }
5318
5319  function minTranslate () {
5320    return (-this.snapGrid[0]);
5321  }
5322
5323  function maxTranslate () {
5324    return (-this.snapGrid[this.snapGrid.length - 1]);
5325  }
5326
5327  var translate = {
5328    getTranslate: getTranslate,
5329    setTranslate: setTranslate,
5330    minTranslate: minTranslate,
5331    maxTranslate: maxTranslate,
5332  };
5333
5334  function setTransition (duration, byController) {
5335    var swiper = this;
5336
5337    swiper.$wrapperEl.transition(duration);
5338
5339    swiper.emit('setTransition', duration, byController);
5340  }
5341
5342  function transitionStart (runCallbacks, direction) {
5343    if ( runCallbacks === void 0 ) runCallbacks = true;
5344
5345    var swiper = this;
5346    var activeIndex = swiper.activeIndex;
5347    var params = swiper.params;
5348    var previousIndex = swiper.previousIndex;
5349    if (params.autoHeight) {
5350      swiper.updateAutoHeight();
5351    }
5352
5353    var dir = direction;
5354    if (!dir) {
5355      if (activeIndex > previousIndex) { dir = 'next'; }
5356      else if (activeIndex < previousIndex) { dir = 'prev'; }
5357      else { dir = 'reset'; }
5358    }
5359
5360    swiper.emit('transitionStart');
5361
5362    if (runCallbacks && activeIndex !== previousIndex) {
5363      if (dir === 'reset') {
5364        swiper.emit('slideResetTransitionStart');
5365        return;
5366      }
5367      swiper.emit('slideChangeTransitionStart');
5368      if (dir === 'next') {
5369        swiper.emit('slideNextTransitionStart');
5370      } else {
5371        swiper.emit('slidePrevTransitionStart');
5372      }
5373    }
5374  }
5375
5376  function transitionEnd$1 (runCallbacks, direction) {
5377    if ( runCallbacks === void 0 ) runCallbacks = true;
5378
5379    var swiper = this;
5380    var activeIndex = swiper.activeIndex;
5381    var previousIndex = swiper.previousIndex;
5382    swiper.animating = false;
5383    swiper.setTransition(0);
5384
5385    var dir = direction;
5386    if (!dir) {
5387      if (activeIndex > previousIndex) { dir = 'next'; }
5388      else if (activeIndex < previousIndex) { dir = 'prev'; }
5389      else { dir = 'reset'; }
5390    }
5391
5392    swiper.emit('transitionEnd');
5393
5394    if (runCallbacks && activeIndex !== previousIndex) {
5395      if (dir === 'reset') {
5396        swiper.emit('slideResetTransitionEnd');
5397        return;
5398      }
5399      swiper.emit('slideChangeTransitionEnd');
5400      if (dir === 'next') {
5401        swiper.emit('slideNextTransitionEnd');
5402      } else {
5403        swiper.emit('slidePrevTransitionEnd');
5404      }
5405    }
5406  }
5407
5408  var transition$1 = {
5409    setTransition: setTransition,
5410    transitionStart: transitionStart,
5411    transitionEnd: transitionEnd$1,
5412  };
5413
5414  function slideTo (index, speed, runCallbacks, internal) {
5415    if ( index === void 0 ) index = 0;
5416    if ( speed === void 0 ) speed = this.params.speed;
5417    if ( runCallbacks === void 0 ) runCallbacks = true;
5418
5419    var swiper = this;
5420    var slideIndex = index;
5421    if (slideIndex < 0) { slideIndex = 0; }
5422
5423    var params = swiper.params;
5424    var snapGrid = swiper.snapGrid;
5425    var slidesGrid = swiper.slidesGrid;
5426    var previousIndex = swiper.previousIndex;
5427    var activeIndex = swiper.activeIndex;
5428    var rtl = swiper.rtlTranslate;
5429    if (swiper.animating && params.preventInteractionOnTransition) {
5430      return false;
5431    }
5432
5433    var snapIndex = Math.floor(slideIndex / params.slidesPerGroup);
5434    if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }
5435
5436    if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
5437      swiper.emit('beforeSlideChangeStart');
5438    }
5439
5440    var translate = -snapGrid[snapIndex];
5441
5442    // Update progress
5443    swiper.updateProgress(translate);
5444
5445    // Normalize slideIndex
5446    if (params.normalizeSlideIndex) {
5447      for (var i = 0; i < slidesGrid.length; i += 1) {
5448        if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
5449          slideIndex = i;
5450        }
5451      }
5452    }
5453    // Directions locks
5454    if (swiper.initialized && slideIndex !== activeIndex) {
5455      if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
5456        return false;
5457      }
5458      if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
5459        if ((activeIndex || 0) !== slideIndex) { return false; }
5460      }
5461    }
5462
5463    var direction;
5464    if (slideIndex > activeIndex) { direction = 'next'; }
5465    else if (slideIndex < activeIndex) { direction = 'prev'; }
5466    else { direction = 'reset'; }
5467
5468
5469    // Update Index
5470    if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {
5471      swiper.updateActiveIndex(slideIndex);
5472      // Update Height
5473      if (params.autoHeight) {
5474        swiper.updateAutoHeight();
5475      }
5476      swiper.updateSlidesClasses();
5477      if (params.effect !== 'slide') {
5478        swiper.setTranslate(translate);
5479      }
5480      if (direction !== 'reset') {
5481        swiper.transitionStart(runCallbacks, direction);
5482        swiper.transitionEnd(runCallbacks, direction);
5483      }
5484      return false;
5485    }
5486
5487    if (speed === 0 || !Support.transition) {
5488      swiper.setTransition(0);
5489      swiper.setTranslate(translate);
5490      swiper.updateActiveIndex(slideIndex);
5491      swiper.updateSlidesClasses();
5492      swiper.emit('beforeTransitionStart', speed, internal);
5493      swiper.transitionStart(runCallbacks, direction);
5494      swiper.transitionEnd(runCallbacks, direction);
5495    } else {
5496      swiper.setTransition(speed);
5497      swiper.setTranslate(translate);
5498      swiper.updateActiveIndex(slideIndex);
5499      swiper.updateSlidesClasses();
5500      swiper.emit('beforeTransitionStart', speed, internal);
5501      swiper.transitionStart(runCallbacks, direction);
5502      if (!swiper.animating) {
5503        swiper.animating = true;
5504        if (!swiper.onSlideToWrapperTransitionEnd) {
5505          swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
5506            if (!swiper || swiper.destroyed) { return; }
5507            if (e.target !== this) { return; }
5508            swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
5509            swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
5510            swiper.onSlideToWrapperTransitionEnd = null;
5511            delete swiper.onSlideToWrapperTransitionEnd;
5512            swiper.transitionEnd(runCallbacks, direction);
5513          };
5514        }
5515        swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
5516        swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
5517      }
5518    }
5519
5520    return true;
5521  }
5522
5523  function slideToLoop (index, speed, runCallbacks, internal) {
5524    if ( index === void 0 ) index = 0;
5525    if ( speed === void 0 ) speed = this.params.speed;
5526    if ( runCallbacks === void 0 ) runCallbacks = true;
5527
5528    var swiper = this;
5529    var newIndex = index;
5530    if (swiper.params.loop) {
5531      newIndex += swiper.loopedSlides;
5532    }
5533
5534    return swiper.slideTo(newIndex, speed, runCallbacks, internal);
5535  }
5536
5537  /* eslint no-unused-vars: "off" */
5538  function slideNext (speed, runCallbacks, internal) {
5539    if ( speed === void 0 ) speed = this.params.speed;
5540    if ( runCallbacks === void 0 ) runCallbacks = true;
5541
5542    var swiper = this;
5543    var params = swiper.params;
5544    var animating = swiper.animating;
5545    if (params.loop) {
5546      if (animating) { return false; }
5547      swiper.loopFix();
5548      // eslint-disable-next-line
5549      swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
5550      return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);
5551    }
5552    return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);
5553  }
5554
5555  /* eslint no-unused-vars: "off" */
5556  function slidePrev (speed, runCallbacks, internal) {
5557    if ( speed === void 0 ) speed = this.params.speed;
5558    if ( runCallbacks === void 0 ) runCallbacks = true;
5559
5560    var swiper = this;
5561    var params = swiper.params;
5562    var animating = swiper.animating;
5563    var snapGrid = swiper.snapGrid;
5564    var slidesGrid = swiper.slidesGrid;
5565    var rtlTranslate = swiper.rtlTranslate;
5566
5567    if (params.loop) {
5568      if (animating) { return false; }
5569      swiper.loopFix();
5570      // eslint-disable-next-line
5571      swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
5572    }
5573    var translate = rtlTranslate ? swiper.translate : -swiper.translate;
5574    function normalize(val) {
5575      if (val < 0) { return -Math.floor(Math.abs(val)); }
5576      return Math.floor(val);
5577    }
5578    var normalizedTranslate = normalize(translate);
5579    var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); });
5580    var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); });
5581
5582    var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
5583    var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
5584    var prevIndex;
5585    if (typeof prevSnap !== 'undefined') {
5586      prevIndex = slidesGrid.indexOf(prevSnap);
5587      if (prevIndex < 0) { prevIndex = swiper.activeIndex - 1; }
5588    }
5589    return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
5590  }
5591
5592  /* eslint no-unused-vars: "off" */
5593  function slideReset (speed, runCallbacks, internal) {
5594    if ( speed === void 0 ) speed = this.params.speed;
5595    if ( runCallbacks === void 0 ) runCallbacks = true;
5596
5597    var swiper = this;
5598    return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
5599  }
5600
5601  /* eslint no-unused-vars: "off" */
5602  function slideToClosest (speed, runCallbacks, internal) {
5603    if ( speed === void 0 ) speed = this.params.speed;
5604    if ( runCallbacks === void 0 ) runCallbacks = true;
5605
5606    var swiper = this;
5607    var index = swiper.activeIndex;
5608    var snapIndex = Math.floor(index / swiper.params.slidesPerGroup);
5609
5610    if (snapIndex < swiper.snapGrid.length - 1) {
5611      var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
5612
5613      var currentSnap = swiper.snapGrid[snapIndex];
5614      var nextSnap = swiper.snapGrid[snapIndex + 1];
5615
5616      if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) {
5617        index = swiper.params.slidesPerGroup;
5618      }
5619    }
5620
5621    return swiper.slideTo(index, speed, runCallbacks, internal);
5622  }
5623
5624  function slideToClickedSlide () {
5625    var swiper = this;
5626    var params = swiper.params;
5627    var $wrapperEl = swiper.$wrapperEl;
5628
5629    var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
5630    var slideToIndex = swiper.clickedIndex;
5631    var realIndex;
5632    if (params.loop) {
5633      if (swiper.animating) { return; }
5634      realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
5635      if (params.centeredSlides) {
5636        if (
5637          (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))
5638          || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))
5639        ) {
5640          swiper.loopFix();
5641          slideToIndex = $wrapperEl
5642            .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")"))
5643            .eq(0)
5644            .index();
5645
5646          Utils.nextTick(function () {
5647            swiper.slideTo(slideToIndex);
5648          });
5649        } else {
5650          swiper.slideTo(slideToIndex);
5651        }
5652      } else if (slideToIndex > swiper.slides.length - slidesPerView) {
5653        swiper.loopFix();
5654        slideToIndex = $wrapperEl
5655          .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")"))
5656          .eq(0)
5657          .index();
5658
5659        Utils.nextTick(function () {
5660          swiper.slideTo(slideToIndex);
5661        });
5662      } else {
5663        swiper.slideTo(slideToIndex);
5664      }
5665    } else {
5666      swiper.slideTo(slideToIndex);
5667    }
5668  }
5669
5670  var slide = {
5671    slideTo: slideTo,
5672    slideToLoop: slideToLoop,
5673    slideNext: slideNext,
5674    slidePrev: slidePrev,
5675    slideReset: slideReset,
5676    slideToClosest: slideToClosest,
5677    slideToClickedSlide: slideToClickedSlide,
5678  };
5679
5680  function loopCreate () {
5681    var swiper = this;
5682    var params = swiper.params;
5683    var $wrapperEl = swiper.$wrapperEl;
5684    // Remove duplicated slides
5685    $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass))).remove();
5686
5687    var slides = $wrapperEl.children(("." + (params.slideClass)));
5688
5689    if (params.loopFillGroupWithBlank) {
5690      var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);
5691      if (blankSlidesNum !== params.slidesPerGroup) {
5692        for (var i = 0; i < blankSlidesNum; i += 1) {
5693          var blankNode = $(doc.createElement('div')).addClass(((params.slideClass) + " " + (params.slideBlankClass)));
5694          $wrapperEl.append(blankNode);
5695        }
5696        slides = $wrapperEl.children(("." + (params.slideClass)));
5697      }
5698    }
5699
5700    if (params.slidesPerView === 'auto' && !params.loopedSlides) { params.loopedSlides = slides.length; }
5701
5702    swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);
5703    swiper.loopedSlides += params.loopAdditionalSlides;
5704    if (swiper.loopedSlides > slides.length) {
5705      swiper.loopedSlides = slides.length;
5706    }
5707
5708    var prependSlides = [];
5709    var appendSlides = [];
5710    slides.each(function (index, el) {
5711      var slide = $(el);
5712      if (index < swiper.loopedSlides) { appendSlides.push(el); }
5713      if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); }
5714      slide.attr('data-swiper-slide-index', index);
5715    });
5716    for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) {
5717      $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass));
5718    }
5719    for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) {
5720      $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass));
5721    }
5722  }
5723
5724  function loopFix () {
5725    var swiper = this;
5726    var params = swiper.params;
5727    var activeIndex = swiper.activeIndex;
5728    var slides = swiper.slides;
5729    var loopedSlides = swiper.loopedSlides;
5730    var allowSlidePrev = swiper.allowSlidePrev;
5731    var allowSlideNext = swiper.allowSlideNext;
5732    var snapGrid = swiper.snapGrid;
5733    var rtl = swiper.rtlTranslate;
5734    var newIndex;
5735    swiper.allowSlidePrev = true;
5736    swiper.allowSlideNext = true;
5737
5738    var snapTranslate = -snapGrid[activeIndex];
5739    var diff = snapTranslate - swiper.getTranslate();
5740
5741
5742    // Fix For Negative Oversliding
5743    if (activeIndex < loopedSlides) {
5744      newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;
5745      newIndex += loopedSlides;
5746      var slideChanged = swiper.slideTo(newIndex, 0, false, true);
5747      if (slideChanged && diff !== 0) {
5748        swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
5749      }
5750    } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) {
5751      // Fix For Positive Oversliding
5752      newIndex = -slides.length + activeIndex + loopedSlides;
5753      newIndex += loopedSlides;
5754      var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true);
5755      if (slideChanged$1 && diff !== 0) {
5756        swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
5757      }
5758    }
5759    swiper.allowSlidePrev = allowSlidePrev;
5760    swiper.allowSlideNext = allowSlideNext;
5761  }
5762
5763  function loopDestroy () {
5764    var swiper = this;
5765    var $wrapperEl = swiper.$wrapperEl;
5766    var params = swiper.params;
5767    var slides = swiper.slides;
5768    $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + ",." + (params.slideClass) + "." + (params.slideBlankClass))).remove();
5769    slides.removeAttr('data-swiper-slide-index');
5770  }
5771
5772  var loop = {
5773    loopCreate: loopCreate,
5774    loopFix: loopFix,
5775    loopDestroy: loopDestroy,
5776  };
5777
5778  function setGrabCursor (moving) {
5779    var swiper = this;
5780    if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }
5781    var el = swiper.el;
5782    el.style.cursor = 'move';
5783    el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
5784    el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
5785    el.style.cursor = moving ? 'grabbing' : 'grab';
5786  }
5787
5788  function unsetGrabCursor () {
5789    var swiper = this;
5790    if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }
5791    swiper.el.style.cursor = '';
5792  }
5793
5794  var grabCursor = {
5795    setGrabCursor: setGrabCursor,
5796    unsetGrabCursor: unsetGrabCursor,
5797  };
5798
5799  function appendSlide (slides) {
5800    var swiper = this;
5801    var $wrapperEl = swiper.$wrapperEl;
5802    var params = swiper.params;
5803    if (params.loop) {
5804      swiper.loopDestroy();
5805    }
5806    if (typeof slides === 'object' && 'length' in slides) {
5807      for (var i = 0; i < slides.length; i += 1) {
5808        if (slides[i]) { $wrapperEl.append(slides[i]); }
5809      }
5810    } else {
5811      $wrapperEl.append(slides);
5812    }
5813    if (params.loop) {
5814      swiper.loopCreate();
5815    }
5816    if (!(params.observer && Support.observer)) {
5817      swiper.update();
5818    }
5819  }
5820
5821  function prependSlide (slides) {
5822    var swiper = this;
5823    var params = swiper.params;
5824    var $wrapperEl = swiper.$wrapperEl;
5825    var activeIndex = swiper.activeIndex;
5826
5827    if (params.loop) {
5828      swiper.loopDestroy();
5829    }
5830    var newActiveIndex = activeIndex + 1;
5831    if (typeof slides === 'object' && 'length' in slides) {
5832      for (var i = 0; i < slides.length; i += 1) {
5833        if (slides[i]) { $wrapperEl.prepend(slides[i]); }
5834      }
5835      newActiveIndex = activeIndex + slides.length;
5836    } else {
5837      $wrapperEl.prepend(slides);
5838    }
5839    if (params.loop) {
5840      swiper.loopCreate();
5841    }
5842    if (!(params.observer && Support.observer)) {
5843      swiper.update();
5844    }
5845    swiper.slideTo(newActiveIndex, 0, false);
5846  }
5847
5848  function addSlide (index, slides) {
5849    var swiper = this;
5850    var $wrapperEl = swiper.$wrapperEl;
5851    var params = swiper.params;
5852    var activeIndex = swiper.activeIndex;
5853    var activeIndexBuffer = activeIndex;
5854    if (params.loop) {
5855      activeIndexBuffer -= swiper.loopedSlides;
5856      swiper.loopDestroy();
5857      swiper.slides = $wrapperEl.children(("." + (params.slideClass)));
5858    }
5859    var baseLength = swiper.slides.length;
5860    if (index <= 0) {
5861      swiper.prependSlide(slides);
5862      return;
5863    }
5864    if (index >= baseLength) {
5865      swiper.appendSlide(slides);
5866      return;
5867    }
5868    var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
5869
5870    var slidesBuffer = [];
5871    for (var i = baseLength - 1; i >= index; i -= 1) {
5872      var currentSlide = swiper.slides.eq(i);
5873      currentSlide.remove();
5874      slidesBuffer.unshift(currentSlide);
5875    }
5876
5877    if (typeof slides === 'object' && 'length' in slides) {
5878      for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {
5879        if (slides[i$1]) { $wrapperEl.append(slides[i$1]); }
5880      }
5881      newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
5882    } else {
5883      $wrapperEl.append(slides);
5884    }
5885
5886    for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) {
5887      $wrapperEl.append(slidesBuffer[i$2]);
5888    }
5889
5890    if (params.loop) {
5891      swiper.loopCreate();
5892    }
5893    if (!(params.observer && Support.observer)) {
5894      swiper.update();
5895    }
5896    if (params.loop) {
5897      swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
5898    } else {
5899      swiper.slideTo(newActiveIndex, 0, false);
5900    }
5901  }
5902
5903  function removeSlide (slidesIndexes) {
5904    var swiper = this;
5905    var params = swiper.params;
5906    var $wrapperEl = swiper.$wrapperEl;
5907    var activeIndex = swiper.activeIndex;
5908
5909    var activeIndexBuffer = activeIndex;
5910    if (params.loop) {
5911      activeIndexBuffer -= swiper.loopedSlides;
5912      swiper.loopDestroy();
5913      swiper.slides = $wrapperEl.children(("." + (params.slideClass)));
5914    }
5915    var newActiveIndex = activeIndexBuffer;
5916    var indexToRemove;
5917
5918    if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
5919      for (var i = 0; i < slidesIndexes.length; i += 1) {
5920        indexToRemove = slidesIndexes[i];
5921        if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }
5922        if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }
5923      }
5924      newActiveIndex = Math.max(newActiveIndex, 0);
5925    } else {
5926      indexToRemove = slidesIndexes;
5927      if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }
5928      if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }
5929      newActiveIndex = Math.max(newActiveIndex, 0);
5930    }
5931
5932    if (params.loop) {
5933      swiper.loopCreate();
5934    }
5935
5936    if (!(params.observer && Support.observer)) {
5937      swiper.update();
5938    }
5939    if (params.loop) {
5940      swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
5941    } else {
5942      swiper.slideTo(newActiveIndex, 0, false);
5943    }
5944  }
5945
5946  function removeAllSlides () {
5947    var swiper = this;
5948
5949    var slidesIndexes = [];
5950    for (var i = 0; i < swiper.slides.length; i += 1) {
5951      slidesIndexes.push(i);
5952    }
5953    swiper.removeSlide(slidesIndexes);
5954  }
5955
5956  var manipulation = {
5957    appendSlide: appendSlide,
5958    prependSlide: prependSlide,
5959    addSlide: addSlide,
5960    removeSlide: removeSlide,
5961    removeAllSlides: removeAllSlides,
5962  };
5963
5964  var Device = (function Device() {
5965    var ua = win.navigator.userAgent;
5966
5967    var device = {
5968      ios: false,
5969      android: false,
5970      androidChrome: false,
5971      desktop: false,
5972      windows: false,
5973      iphone: false,
5974      ipod: false,
5975      ipad: false,
5976      cordova: win.cordova || win.phonegap,
5977      phonegap: win.cordova || win.phonegap,
5978    };
5979
5980    var windows = ua.match(/(Windows Phone);?[\s\/]+([\d.]+)?/); // eslint-disable-line
5981    var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
5982    var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
5983    var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
5984    var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
5985
5986
5987    // Windows
5988    if (windows) {
5989      device.os = 'windows';
5990      device.osVersion = windows[2];
5991      device.windows = true;
5992    }
5993    // Android
5994    if (android && !windows) {
5995      device.os = 'android';
5996      device.osVersion = android[2];
5997      device.android = true;
5998      device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
5999    }
6000    if (ipad || iphone || ipod) {
6001      device.os = 'ios';
6002      device.ios = true;
6003    }
6004    // iOS
6005    if (iphone && !ipod) {
6006      device.osVersion = iphone[2].replace(/_/g, '.');
6007      device.iphone = true;
6008    }
6009    if (ipad) {
6010      device.osVersion = ipad[2].replace(/_/g, '.');
6011      device.ipad = true;
6012    }
6013    if (ipod) {
6014      device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
6015      device.iphone = true;
6016    }
6017    // iOS 8+ changed UA
6018    if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
6019      if (device.osVersion.split('.')[0] === '10') {
6020        device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
6021      }
6022    }
6023
6024    // Desktop
6025    device.desktop = !(device.os || device.android || device.webView);
6026
6027    // Webview
6028    device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);
6029
6030    // Minimal UI
6031    if (device.os && device.os === 'ios') {
6032      var osVersionArr = device.osVersion.split('.');
6033      var metaViewport = doc.querySelector('meta[name="viewport"]');
6034      device.minimalUi = !device.webView
6035        && (ipod || iphone)
6036        && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7)
6037        && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;
6038    }
6039
6040    // Pixel Ratio
6041    device.pixelRatio = win.devicePixelRatio || 1;
6042
6043    // Export object
6044    return device;
6045  }());
6046
6047  function onTouchStart (event) {
6048    var swiper = this;
6049    var data = swiper.touchEventsData;
6050    var params = swiper.params;
6051    var touches = swiper.touches;
6052    if (swiper.animating && params.preventInteractionOnTransition) {
6053      return;
6054    }
6055    var e = event;
6056    if (e.originalEvent) { e = e.originalEvent; }
6057    data.isTouchEvent = e.type === 'touchstart';
6058    if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; }
6059    if (!data.isTouchEvent && 'button' in e && e.button > 0) { return; }
6060    if (data.isTouched && data.isMoved) { return; }
6061    if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : ("." + (params.noSwipingClass)))[0]) {
6062      swiper.allowClick = true;
6063      return;
6064    }
6065    if (params.swipeHandler) {
6066      if (!$(e).closest(params.swipeHandler)[0]) { return; }
6067    }
6068
6069    touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
6070    touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
6071    var startX = touches.currentX;
6072    var startY = touches.currentY;
6073
6074    // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore
6075
6076    var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
6077    var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
6078    if (
6079      edgeSwipeDetection
6080      && ((startX <= edgeSwipeThreshold)
6081      || (startX >= win.screen.width - edgeSwipeThreshold))
6082    ) {
6083      return;
6084    }
6085
6086    Utils.extend(data, {
6087      isTouched: true,
6088      isMoved: false,
6089      allowTouchCallbacks: true,
6090      isScrolling: undefined,
6091      startMoving: undefined,
6092    });
6093
6094    touches.startX = startX;
6095    touches.startY = startY;
6096    data.touchStartTime = Utils.now();
6097    swiper.allowClick = true;
6098    swiper.updateSize();
6099    swiper.swipeDirection = undefined;
6100    if (params.threshold > 0) { data.allowThresholdMove = false; }
6101    if (e.type !== 'touchstart') {
6102      var preventDefault = true;
6103      if ($(e.target).is(data.formElements)) { preventDefault = false; }
6104      if (
6105        doc.activeElement
6106        && $(doc.activeElement).is(data.formElements)
6107        && doc.activeElement !== e.target
6108      ) {
6109        doc.activeElement.blur();
6110      }
6111
6112      var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
6113      if (params.touchStartForcePreventDefault || shouldPreventDefault) {
6114        e.preventDefault();
6115      }
6116    }
6117    swiper.emit('touchStart', e);
6118  }
6119
6120  function onTouchMove (event) {
6121    var swiper = this;
6122    var data = swiper.touchEventsData;
6123    var params = swiper.params;
6124    var touches = swiper.touches;
6125    var rtl = swiper.rtlTranslate;
6126    var e = event;
6127    if (e.originalEvent) { e = e.originalEvent; }
6128    if (!data.isTouched) {
6129      if (data.startMoving && data.isScrolling) {
6130        swiper.emit('touchMoveOpposite', e);
6131      }
6132      return;
6133    }
6134    if (data.isTouchEvent && e.type === 'mousemove') { return; }
6135    var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
6136    var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
6137    if (e.preventedByNestedSwiper) {
6138      touches.startX = pageX;
6139      touches.startY = pageY;
6140      return;
6141    }
6142    if (!swiper.allowTouchMove) {
6143      // isMoved = true;
6144      swiper.allowClick = false;
6145      if (data.isTouched) {
6146        Utils.extend(touches, {
6147          startX: pageX,
6148          startY: pageY,
6149          currentX: pageX,
6150          currentY: pageY,
6151        });
6152        data.touchStartTime = Utils.now();
6153      }
6154      return;
6155    }
6156    if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
6157      if (swiper.isVertical()) {
6158        // Vertical
6159        if (
6160          (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())
6161          || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())
6162        ) {
6163          data.isTouched = false;
6164          data.isMoved = false;
6165          return;
6166        }
6167      } else if (
6168        (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())
6169        || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())
6170      ) {
6171        return;
6172      }
6173    }
6174    if (data.isTouchEvent && doc.activeElement) {
6175      if (e.target === doc.activeElement && $(e.target).is(data.formElements)) {
6176        data.isMoved = true;
6177        swiper.allowClick = false;
6178        return;
6179      }
6180    }
6181    if (data.allowTouchCallbacks) {
6182      swiper.emit('touchMove', e);
6183    }
6184    if (e.targetTouches && e.targetTouches.length > 1) { return; }
6185
6186    touches.currentX = pageX;
6187    touches.currentY = pageY;
6188
6189    var diffX = touches.currentX - touches.startX;
6190    var diffY = touches.currentY - touches.startY;
6191    if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) < swiper.params.threshold) { return; }
6192
6193    if (typeof data.isScrolling === 'undefined') {
6194      var touchAngle;
6195      if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {
6196        data.isScrolling = false;
6197      } else {
6198        // eslint-disable-next-line
6199        if ((diffX * diffX) + (diffY * diffY) >= 25) {
6200          touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;
6201          data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);
6202        }
6203      }
6204    }
6205    if (data.isScrolling) {
6206      swiper.emit('touchMoveOpposite', e);
6207    }
6208    if (typeof data.startMoving === 'undefined') {
6209      if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
6210        data.startMoving = true;
6211      }
6212    }
6213    if (data.isScrolling) {
6214      data.isTouched = false;
6215      return;
6216    }
6217    if (!data.startMoving) {
6218      return;
6219    }
6220    swiper.allowClick = false;
6221    e.preventDefault();
6222    if (params.touchMoveStopPropagation && !params.nested) {
6223      e.stopPropagation();
6224    }
6225
6226    if (!data.isMoved) {
6227      if (params.loop) {
6228        swiper.loopFix();
6229      }
6230      data.startTranslate = swiper.getTranslate();
6231      swiper.setTransition(0);
6232      if (swiper.animating) {
6233        swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
6234      }
6235      data.allowMomentumBounce = false;
6236      // Grab Cursor
6237      if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
6238        swiper.setGrabCursor(true);
6239      }
6240      swiper.emit('sliderFirstMove', e);
6241    }
6242    swiper.emit('sliderMove', e);
6243    data.isMoved = true;
6244
6245    var diff = swiper.isHorizontal() ? diffX : diffY;
6246    touches.diff = diff;
6247
6248    diff *= params.touchRatio;
6249    if (rtl) { diff = -diff; }
6250
6251    swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
6252    data.currentTranslate = diff + data.startTranslate;
6253
6254    var disableParentSwiper = true;
6255    var resistanceRatio = params.resistanceRatio;
6256    if (params.touchReleaseOnEdges) {
6257      resistanceRatio = 0;
6258    }
6259    if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {
6260      disableParentSwiper = false;
6261      if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); }
6262    } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
6263      disableParentSwiper = false;
6264      if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio )); }
6265    }
6266
6267    if (disableParentSwiper) {
6268      e.preventedByNestedSwiper = true;
6269    }
6270
6271    // Directions locks
6272    if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
6273      data.currentTranslate = data.startTranslate;
6274    }
6275    if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
6276      data.currentTranslate = data.startTranslate;
6277    }
6278
6279
6280    // Threshold
6281    if (params.threshold > 0) {
6282      if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
6283        if (!data.allowThresholdMove) {
6284          data.allowThresholdMove = true;
6285          touches.startX = touches.currentX;
6286          touches.startY = touches.currentY;
6287          data.currentTranslate = data.startTranslate;
6288          touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
6289          return;
6290        }
6291      } else {
6292        data.currentTranslate = data.startTranslate;
6293        return;
6294      }
6295    }
6296
6297    if (!params.followFinger) { return; }
6298
6299    // Update active index in free mode
6300    if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
6301      swiper.updateActiveIndex();
6302      swiper.updateSlidesClasses();
6303    }
6304    if (params.freeMode) {
6305      // Velocity
6306      if (data.velocities.length === 0) {
6307        data.velocities.push({
6308          position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
6309          time: data.touchStartTime,
6310        });
6311      }
6312      data.velocities.push({
6313        position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
6314        time: Utils.now(),
6315      });
6316    }
6317    // Update progress
6318    swiper.updateProgress(data.currentTranslate);
6319    // Update translate
6320    swiper.setTranslate(data.currentTranslate);
6321  }
6322
6323  function onTouchEnd (event) {
6324    var swiper = this;
6325    var data = swiper.touchEventsData;
6326
6327    var params = swiper.params;
6328    var touches = swiper.touches;
6329    var rtl = swiper.rtlTranslate;
6330    var $wrapperEl = swiper.$wrapperEl;
6331    var slidesGrid = swiper.slidesGrid;
6332    var snapGrid = swiper.snapGrid;
6333    var e = event;
6334    if (e.originalEvent) { e = e.originalEvent; }
6335    if (data.allowTouchCallbacks) {
6336      swiper.emit('touchEnd', e);
6337    }
6338    data.allowTouchCallbacks = false;
6339    if (!data.isTouched) {
6340      if (data.isMoved && params.grabCursor) {
6341        swiper.setGrabCursor(false);
6342      }
6343      data.isMoved = false;
6344      data.startMoving = false;
6345      return;
6346    }
6347    // Return Grab Cursor
6348    if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
6349      swiper.setGrabCursor(false);
6350    }
6351
6352    // Time diff
6353    var touchEndTime = Utils.now();
6354    var timeDiff = touchEndTime - data.touchStartTime;
6355
6356    // Tap, doubleTap, Click
6357    if (swiper.allowClick) {
6358      swiper.updateClickedSlide(e);
6359      swiper.emit('tap', e);
6360      if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) {
6361        if (data.clickTimeout) { clearTimeout(data.clickTimeout); }
6362        data.clickTimeout = Utils.nextTick(function () {
6363          if (!swiper || swiper.destroyed) { return; }
6364          swiper.emit('click', e);
6365        }, 300);
6366      }
6367      if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {
6368        if (data.clickTimeout) { clearTimeout(data.clickTimeout); }
6369        swiper.emit('doubleTap', e);
6370      }
6371    }
6372
6373    data.lastClickTime = Utils.now();
6374    Utils.nextTick(function () {
6375      if (!swiper.destroyed) { swiper.allowClick = true; }
6376    });
6377
6378    if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
6379      data.isTouched = false;
6380      data.isMoved = false;
6381      data.startMoving = false;
6382      return;
6383    }
6384    data.isTouched = false;
6385    data.isMoved = false;
6386    data.startMoving = false;
6387
6388    var currentPos;
6389    if (params.followFinger) {
6390      currentPos = rtl ? swiper.translate : -swiper.translate;
6391    } else {
6392      currentPos = -data.currentTranslate;
6393    }
6394
6395    if (params.freeMode) {
6396      if (currentPos < -swiper.minTranslate()) {
6397        swiper.slideTo(swiper.activeIndex);
6398        return;
6399      }
6400      if (currentPos > -swiper.maxTranslate()) {
6401        if (swiper.slides.length < snapGrid.length) {
6402          swiper.slideTo(snapGrid.length - 1);
6403        } else {
6404          swiper.slideTo(swiper.slides.length - 1);
6405        }
6406        return;
6407      }
6408
6409      if (params.freeModeMomentum) {
6410        if (data.velocities.length > 1) {
6411          var lastMoveEvent = data.velocities.pop();
6412          var velocityEvent = data.velocities.pop();
6413
6414          var distance = lastMoveEvent.position - velocityEvent.position;
6415          var time = lastMoveEvent.time - velocityEvent.time;
6416          swiper.velocity = distance / time;
6417          swiper.velocity /= 2;
6418          if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
6419            swiper.velocity = 0;
6420          }
6421          // this implies that the user stopped moving a finger then released.
6422          // There would be no events with distance zero, so the last event is stale.
6423          if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {
6424            swiper.velocity = 0;
6425          }
6426        } else {
6427          swiper.velocity = 0;
6428        }
6429        swiper.velocity *= params.freeModeMomentumVelocityRatio;
6430
6431        data.velocities.length = 0;
6432        var momentumDuration = 1000 * params.freeModeMomentumRatio;
6433        var momentumDistance = swiper.velocity * momentumDuration;
6434
6435        var newPosition = swiper.translate + momentumDistance;
6436        if (rtl) { newPosition = -newPosition; }
6437
6438        var doBounce = false;
6439        var afterBouncePosition;
6440        var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
6441        var needsLoopFix;
6442        if (newPosition < swiper.maxTranslate()) {
6443          if (params.freeModeMomentumBounce) {
6444            if (newPosition + swiper.maxTranslate() < -bounceAmount) {
6445              newPosition = swiper.maxTranslate() - bounceAmount;
6446            }
6447            afterBouncePosition = swiper.maxTranslate();
6448            doBounce = true;
6449            data.allowMomentumBounce = true;
6450          } else {
6451            newPosition = swiper.maxTranslate();
6452          }
6453          if (params.loop && params.centeredSlides) { needsLoopFix = true; }
6454        } else if (newPosition > swiper.minTranslate()) {
6455          if (params.freeModeMomentumBounce) {
6456            if (newPosition - swiper.minTranslate() > bounceAmount) {
6457              newPosition = swiper.minTranslate() + bounceAmount;
6458            }
6459            afterBouncePosition = swiper.minTranslate();
6460            doBounce = true;
6461            data.allowMomentumBounce = true;
6462          } else {
6463            newPosition = swiper.minTranslate();
6464          }
6465          if (params.loop && params.centeredSlides) { needsLoopFix = true; }
6466        } else if (params.freeModeSticky) {
6467          var nextSlide;
6468          for (var j = 0; j < snapGrid.length; j += 1) {
6469            if (snapGrid[j] > -newPosition) {
6470              nextSlide = j;
6471              break;
6472            }
6473          }
6474
6475          if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
6476            newPosition = snapGrid[nextSlide];
6477          } else {
6478            newPosition = snapGrid[nextSlide - 1];
6479          }
6480          newPosition = -newPosition;
6481        }
6482        if (needsLoopFix) {
6483          swiper.once('transitionEnd', function () {
6484            swiper.loopFix();
6485          });
6486        }
6487        // Fix duration
6488        if (swiper.velocity !== 0) {
6489          if (rtl) {
6490            momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
6491          } else {
6492            momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
6493          }
6494        } else if (params.freeModeSticky) {
6495          swiper.slideToClosest();
6496          return;
6497        }
6498
6499        if (params.freeModeMomentumBounce && doBounce) {
6500          swiper.updateProgress(afterBouncePosition);
6501          swiper.setTransition(momentumDuration);
6502          swiper.setTranslate(newPosition);
6503          swiper.transitionStart(true, swiper.swipeDirection);
6504          swiper.animating = true;
6505          $wrapperEl.transitionEnd(function () {
6506            if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { return; }
6507            swiper.emit('momentumBounce');
6508
6509            swiper.setTransition(params.speed);
6510            swiper.setTranslate(afterBouncePosition);
6511            $wrapperEl.transitionEnd(function () {
6512              if (!swiper || swiper.destroyed) { return; }
6513              swiper.transitionEnd();
6514            });
6515          });
6516        } else if (swiper.velocity) {
6517          swiper.updateProgress(newPosition);
6518          swiper.setTransition(momentumDuration);
6519          swiper.setTranslate(newPosition);
6520          swiper.transitionStart(true, swiper.swipeDirection);
6521          if (!swiper.animating) {
6522            swiper.animating = true;
6523            $wrapperEl.transitionEnd(function () {
6524              if (!swiper || swiper.destroyed) { return; }
6525              swiper.transitionEnd();
6526            });
6527          }
6528        } else {
6529          swiper.updateProgress(newPosition);
6530        }
6531
6532        swiper.updateActiveIndex();
6533        swiper.updateSlidesClasses();
6534      } else if (params.freeModeSticky) {
6535        swiper.slideToClosest();
6536        return;
6537      }
6538
6539      if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
6540        swiper.updateProgress();
6541        swiper.updateActiveIndex();
6542        swiper.updateSlidesClasses();
6543      }
6544      return;
6545    }
6546
6547    // Find current slide
6548    var stopIndex = 0;
6549    var groupSize = swiper.slidesSizesGrid[0];
6550    for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {
6551      if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {
6552        if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {
6553          stopIndex = i;
6554          groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];
6555        }
6556      } else if (currentPos >= slidesGrid[i]) {
6557        stopIndex = i;
6558        groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
6559      }
6560    }
6561
6562    // Find current slide size
6563    var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
6564
6565    if (timeDiff > params.longSwipesMs) {
6566      // Long touches
6567      if (!params.longSwipes) {
6568        swiper.slideTo(swiper.activeIndex);
6569        return;
6570      }
6571      if (swiper.swipeDirection === 'next') {
6572        if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + params.slidesPerGroup); }
6573        else { swiper.slideTo(stopIndex); }
6574      }
6575      if (swiper.swipeDirection === 'prev') {
6576        if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + params.slidesPerGroup); }
6577        else { swiper.slideTo(stopIndex); }
6578      }
6579    } else {
6580      // Short swipes
6581      if (!params.shortSwipes) {
6582        swiper.slideTo(swiper.activeIndex);
6583        return;
6584      }
6585      if (swiper.swipeDirection === 'next') {
6586        swiper.slideTo(stopIndex + params.slidesPerGroup);
6587      }
6588      if (swiper.swipeDirection === 'prev') {
6589        swiper.slideTo(stopIndex);
6590      }
6591    }
6592  }
6593
6594  function onResize () {
6595    var swiper = this;
6596
6597    var params = swiper.params;
6598    var el = swiper.el;
6599
6600    if (el && el.offsetWidth === 0) { return; }
6601
6602    // Breakpoints
6603    if (params.breakpoints) {
6604      swiper.setBreakpoint();
6605    }
6606
6607    // Save locks
6608    var allowSlideNext = swiper.allowSlideNext;
6609    var allowSlidePrev = swiper.allowSlidePrev;
6610    var snapGrid = swiper.snapGrid;
6611
6612    // Disable locks on resize
6613    swiper.allowSlideNext = true;
6614    swiper.allowSlidePrev = true;
6615
6616    swiper.updateSize();
6617    swiper.updateSlides();
6618
6619    if (params.freeMode) {
6620      var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());
6621      swiper.setTranslate(newTranslate);
6622      swiper.updateActiveIndex();
6623      swiper.updateSlidesClasses();
6624
6625      if (params.autoHeight) {
6626        swiper.updateAutoHeight();
6627      }
6628    } else {
6629      swiper.updateSlidesClasses();
6630      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
6631        swiper.slideTo(swiper.slides.length - 1, 0, false, true);
6632      } else {
6633        swiper.slideTo(swiper.activeIndex, 0, false, true);
6634      }
6635    }
6636    // Return locks after resize
6637    swiper.allowSlidePrev = allowSlidePrev;
6638    swiper.allowSlideNext = allowSlideNext;
6639
6640    if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
6641      swiper.checkOverflow();
6642    }
6643  }
6644
6645  function onClick (e) {
6646    var swiper = this;
6647    if (!swiper.allowClick) {
6648      if (swiper.params.preventClicks) { e.preventDefault(); }
6649      if (swiper.params.preventClicksPropagation && swiper.animating) {
6650        e.stopPropagation();
6651        e.stopImmediatePropagation();
6652      }
6653    }
6654  }
6655
6656  function attachEvents() {
6657    var swiper = this;
6658    var params = swiper.params;
6659    var touchEvents = swiper.touchEvents;
6660    var el = swiper.el;
6661    var wrapperEl = swiper.wrapperEl;
6662
6663    {
6664      swiper.onTouchStart = onTouchStart.bind(swiper);
6665      swiper.onTouchMove = onTouchMove.bind(swiper);
6666      swiper.onTouchEnd = onTouchEnd.bind(swiper);
6667    }
6668
6669    swiper.onClick = onClick.bind(swiper);
6670
6671    var target = params.touchEventsTarget === 'container' ? el : wrapperEl;
6672    var capture = !!params.nested;
6673
6674    // Touch Events
6675    {
6676      if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {
6677        target.addEventListener(touchEvents.start, swiper.onTouchStart, false);
6678        doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
6679        doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
6680      } else {
6681        if (Support.touch) {
6682          var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
6683          target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
6684          target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture);
6685          target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
6686        }
6687        if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
6688          target.addEventListener('mousedown', swiper.onTouchStart, false);
6689          doc.addEventListener('mousemove', swiper.onTouchMove, capture);
6690          doc.addEventListener('mouseup', swiper.onTouchEnd, false);
6691        }
6692      }
6693      // Prevent Links Clicks
6694      if (params.preventClicks || params.preventClicksPropagation) {
6695        target.addEventListener('click', swiper.onClick, true);
6696      }
6697    }
6698
6699    // Resize handler
6700    swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);
6701  }
6702
6703  function detachEvents() {
6704    var swiper = this;
6705
6706    var params = swiper.params;
6707    var touchEvents = swiper.touchEvents;
6708    var el = swiper.el;
6709    var wrapperEl = swiper.wrapperEl;
6710
6711    var target = params.touchEventsTarget === 'container' ? el : wrapperEl;
6712    var capture = !!params.nested;
6713
6714    // Touch Events
6715    {
6716      if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {
6717        target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
6718        doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
6719        doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
6720      } else {
6721        if (Support.touch) {
6722          var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
6723          target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
6724          target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
6725          target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
6726        }
6727        if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
6728          target.removeEventListener('mousedown', swiper.onTouchStart, false);
6729          doc.removeEventListener('mousemove', swiper.onTouchMove, capture);
6730          doc.removeEventListener('mouseup', swiper.onTouchEnd, false);
6731        }
6732      }
6733      // Prevent Links Clicks
6734      if (params.preventClicks || params.preventClicksPropagation) {
6735        target.removeEventListener('click', swiper.onClick, true);
6736      }
6737    }
6738
6739    // Resize handler
6740    swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);
6741  }
6742
6743  var events = {
6744    attachEvents: attachEvents,
6745    detachEvents: detachEvents,
6746  };
6747
6748  function setBreakpoint () {
6749    var swiper = this;
6750    var activeIndex = swiper.activeIndex;
6751    var initialized = swiper.initialized;
6752    var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0;
6753    var params = swiper.params;
6754    var breakpoints = params.breakpoints;
6755    if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; }
6756
6757    // Set breakpoint for window width and update parameters
6758    var breakpoint = swiper.getBreakpoint(breakpoints);
6759
6760    if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
6761      var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
6762      if (breakpointOnlyParams) {
6763        ['slidesPerView', 'spaceBetween', 'slidesPerGroup'].forEach(function (param) {
6764          var paramValue = breakpointOnlyParams[param];
6765          if (typeof paramValue === 'undefined') { return; }
6766          if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
6767            breakpointOnlyParams[param] = 'auto';
6768          } else if (param === 'slidesPerView') {
6769            breakpointOnlyParams[param] = parseFloat(paramValue);
6770          } else {
6771            breakpointOnlyParams[param] = parseInt(paramValue, 10);
6772          }
6773        });
6774      }
6775
6776      var breakpointParams = breakpointOnlyParams || swiper.originalParams;
6777      var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
6778      var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
6779
6780      if (directionChanged && initialized) {
6781        swiper.changeDirection();
6782      }
6783
6784      Utils.extend(swiper.params, breakpointParams);
6785
6786      Utils.extend(swiper, {
6787        allowTouchMove: swiper.params.allowTouchMove,
6788        allowSlideNext: swiper.params.allowSlideNext,
6789        allowSlidePrev: swiper.params.allowSlidePrev,
6790      });
6791
6792      swiper.currentBreakpoint = breakpoint;
6793
6794      if (needsReLoop && initialized) {
6795        swiper.loopDestroy();
6796        swiper.loopCreate();
6797        swiper.updateSlides();
6798        swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);
6799      }
6800
6801      swiper.emit('breakpoint', breakpointParams);
6802    }
6803  }
6804
6805  function getBreakpoint (breakpoints) {
6806    var swiper = this;
6807    // Get breakpoint for window width
6808    if (!breakpoints) { return undefined; }
6809    var breakpoint = false;
6810    var points = [];
6811    Object.keys(breakpoints).forEach(function (point) {
6812      points.push(point);
6813    });
6814    points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); });
6815    for (var i = 0; i < points.length; i += 1) {
6816      var point = points[i];
6817      if (swiper.params.breakpointsInverse) {
6818        if (point <= win.innerWidth) {
6819          breakpoint = point;
6820        }
6821      } else if (point >= win.innerWidth && !breakpoint) {
6822        breakpoint = point;
6823      }
6824    }
6825    return breakpoint || 'max';
6826  }
6827
6828  var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint };
6829
6830  function addClasses () {
6831    var swiper = this;
6832    var classNames = swiper.classNames;
6833    var params = swiper.params;
6834    var rtl = swiper.rtl;
6835    var $el = swiper.$el;
6836    var suffixes = [];
6837
6838    suffixes.push('initialized');
6839    suffixes.push(params.direction);
6840
6841    if (params.freeMode) {
6842      suffixes.push('free-mode');
6843    }
6844    if (!Support.flexbox) {
6845      suffixes.push('no-flexbox');
6846    }
6847    if (params.autoHeight) {
6848      suffixes.push('autoheight');
6849    }
6850    if (rtl) {
6851      suffixes.push('rtl');
6852    }
6853    if (params.slidesPerColumn > 1) {
6854      suffixes.push('multirow');
6855    }
6856    if (Device.android) {
6857      suffixes.push('android');
6858    }
6859    if (Device.ios) {
6860      suffixes.push('ios');
6861    }
6862    // WP8 Touch Events Fix
6863    if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {
6864      suffixes.push(("wp8-" + (params.direction)));
6865    }
6866
6867    suffixes.forEach(function (suffix) {
6868      classNames.push(params.containerModifierClass + suffix);
6869    });
6870
6871    $el.addClass(classNames.join(' '));
6872  }
6873
6874  function removeClasses () {
6875    var swiper = this;
6876    var $el = swiper.$el;
6877    var classNames = swiper.classNames;
6878
6879    $el.removeClass(classNames.join(' '));
6880  }
6881
6882  var classes = { addClasses: addClasses, removeClasses: removeClasses };
6883
6884  function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {
6885    var image;
6886    function onReady() {
6887      if (callback) { callback(); }
6888    }
6889    if (!imageEl.complete || !checkForComplete) {
6890      if (src) {
6891        image = new win.Image();
6892        image.onload = onReady;
6893        image.onerror = onReady;
6894        if (sizes) {
6895          image.sizes = sizes;
6896        }
6897        if (srcset) {
6898          image.srcset = srcset;
6899        }
6900        if (src) {
6901          image.src = src;
6902        }
6903      } else {
6904        onReady();
6905      }
6906    } else {
6907      // image already loaded...
6908      onReady();
6909    }
6910  }
6911
6912  function preloadImages () {
6913    var swiper = this;
6914    swiper.imagesToLoad = swiper.$el.find('img');
6915    function onReady() {
6916      if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; }
6917      if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; }
6918      if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
6919        if (swiper.params.updateOnImagesReady) { swiper.update(); }
6920        swiper.emit('imagesReady');
6921      }
6922    }
6923    for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {
6924      var imageEl = swiper.imagesToLoad[i];
6925      swiper.loadImage(
6926        imageEl,
6927        imageEl.currentSrc || imageEl.getAttribute('src'),
6928        imageEl.srcset || imageEl.getAttribute('srcset'),
6929        imageEl.sizes || imageEl.getAttribute('sizes'),
6930        true,
6931        onReady
6932      );
6933    }
6934  }
6935
6936  var images = {
6937    loadImage: loadImage,
6938    preloadImages: preloadImages,
6939  };
6940
6941  function checkOverflow() {
6942    var swiper = this;
6943    var wasLocked = swiper.isLocked;
6944
6945    swiper.isLocked = swiper.snapGrid.length === 1;
6946    swiper.allowSlideNext = !swiper.isLocked;
6947    swiper.allowSlidePrev = !swiper.isLocked;
6948
6949    // events
6950    if (wasLocked !== swiper.isLocked) { swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); }
6951
6952    if (wasLocked && wasLocked !== swiper.isLocked) {
6953      swiper.isEnd = false;
6954      swiper.navigation.update();
6955    }
6956  }
6957
6958  var checkOverflow$1 = { checkOverflow: checkOverflow };
6959
6960  var defaults = {
6961    init: true,
6962    direction: 'horizontal',
6963    touchEventsTarget: 'container',
6964    initialSlide: 0,
6965    speed: 300,
6966    //
6967    preventInteractionOnTransition: false,
6968
6969    // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).
6970    edgeSwipeDetection: false,
6971    edgeSwipeThreshold: 20,
6972
6973    // Free mode
6974    freeMode: false,
6975    freeModeMomentum: true,
6976    freeModeMomentumRatio: 1,
6977    freeModeMomentumBounce: true,
6978    freeModeMomentumBounceRatio: 1,
6979    freeModeMomentumVelocityRatio: 1,
6980    freeModeSticky: false,
6981    freeModeMinimumVelocity: 0.02,
6982
6983    // Autoheight
6984    autoHeight: false,
6985
6986    // Set wrapper width
6987    setWrapperSize: false,
6988
6989    // Virtual Translate
6990    virtualTranslate: false,
6991
6992    // Effects
6993    effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
6994
6995    // Breakpoints
6996    breakpoints: undefined,
6997    breakpointsInverse: false,
6998
6999    // Slides grid
7000    spaceBetween: 0,
7001    slidesPerView: 1,
7002    slidesPerColumn: 1,
7003    slidesPerColumnFill: 'column',
7004    slidesPerGroup: 1,
7005    centeredSlides: false,
7006    slidesOffsetBefore: 0, // in px
7007    slidesOffsetAfter: 0, // in px
7008    normalizeSlideIndex: true,
7009    centerInsufficientSlides: false,
7010
7011    // Disable swiper and hide navigation when container not overflow
7012    watchOverflow: false,
7013
7014    // Round length
7015    roundLengths: false,
7016
7017    // Touches
7018    touchRatio: 1,
7019    touchAngle: 45,
7020    simulateTouch: true,
7021    shortSwipes: true,
7022    longSwipes: true,
7023    longSwipesRatio: 0.5,
7024    longSwipesMs: 300,
7025    followFinger: true,
7026    allowTouchMove: true,
7027    threshold: 0,
7028    touchMoveStopPropagation: true,
7029    touchStartPreventDefault: true,
7030    touchStartForcePreventDefault: false,
7031    touchReleaseOnEdges: false,
7032
7033    // Unique Navigation Elements
7034    uniqueNavElements: true,
7035
7036    // Resistance
7037    resistance: true,
7038    resistanceRatio: 0.85,
7039
7040    // Progress
7041    watchSlidesProgress: false,
7042    watchSlidesVisibility: false,
7043
7044    // Cursor
7045    grabCursor: false,
7046
7047    // Clicks
7048    preventClicks: true,
7049    preventClicksPropagation: true,
7050    slideToClickedSlide: false,
7051
7052    // Images
7053    preloadImages: true,
7054    updateOnImagesReady: true,
7055
7056    // loop
7057    loop: false,
7058    loopAdditionalSlides: 0,
7059    loopedSlides: null,
7060    loopFillGroupWithBlank: false,
7061
7062    // Swiping/no swiping
7063    allowSlidePrev: true,
7064    allowSlideNext: true,
7065    swipeHandler: null, // '.swipe-handler',
7066    noSwiping: true,
7067    noSwipingClass: 'swiper-no-swiping',
7068    noSwipingSelector: null,
7069
7070    // Passive Listeners
7071    passiveListeners: true,
7072
7073    // NS
7074    containerModifierClass: 'swiper-container-', // NEW
7075    slideClass: 'swiper-slide',
7076    slideBlankClass: 'swiper-slide-invisible-blank',
7077    slideActiveClass: 'swiper-slide-active',
7078    slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
7079    slideVisibleClass: 'swiper-slide-visible',
7080    slideDuplicateClass: 'swiper-slide-duplicate',
7081    slideNextClass: 'swiper-slide-next',
7082    slideDuplicateNextClass: 'swiper-slide-duplicate-next',
7083    slidePrevClass: 'swiper-slide-prev',
7084    slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
7085    wrapperClass: 'swiper-wrapper',
7086
7087    // Callbacks
7088    runCallbacksOnInit: true,
7089  };
7090
7091  /* eslint no-param-reassign: "off" */
7092
7093  var prototypes = {
7094    update: update,
7095    translate: translate,
7096    transition: transition$1,
7097    slide: slide,
7098    loop: loop,
7099    grabCursor: grabCursor,
7100    manipulation: manipulation,
7101    events: events,
7102    breakpoints: breakpoints,
7103    checkOverflow: checkOverflow$1,
7104    classes: classes,
7105    images: images,
7106  };
7107
7108  var extendedDefaults = {};
7109
7110  var Swiper = /*@__PURE__*/(function (SwiperClass) {
7111    function Swiper() {
7112      var assign;
7113
7114      var args = [], len = arguments.length;
7115      while ( len-- ) args[ len ] = arguments[ len ];
7116      var el;
7117      var params;
7118      if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
7119        params = args[0];
7120      } else {
7121        (assign = args, el = assign[0], params = assign[1]);
7122      }
7123      if (!params) { params = {}; }
7124
7125      params = Utils.extend({}, params);
7126      if (el && !params.el) { params.el = el; }
7127
7128      SwiperClass.call(this, params);
7129
7130      Object.keys(prototypes).forEach(function (prototypeGroup) {
7131        Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
7132          if (!Swiper.prototype[protoMethod]) {
7133            Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
7134          }
7135        });
7136      });
7137
7138      // Swiper Instance
7139      var swiper = this;
7140      if (typeof swiper.modules === 'undefined') {
7141        swiper.modules = {};
7142      }
7143      Object.keys(swiper.modules).forEach(function (moduleName) {
7144        var module = swiper.modules[moduleName];
7145        if (module.params) {
7146          var moduleParamName = Object.keys(module.params)[0];
7147          var moduleParams = module.params[moduleParamName];
7148          if (typeof moduleParams !== 'object' || moduleParams === null) { return; }
7149          if (!(moduleParamName in params && 'enabled' in moduleParams)) { return; }
7150          if (params[moduleParamName] === true) {
7151            params[moduleParamName] = { enabled: true };
7152          }
7153          if (
7154            typeof params[moduleParamName] === 'object'
7155            && !('enabled' in params[moduleParamName])
7156          ) {
7157            params[moduleParamName].enabled = true;
7158          }
7159          if (!params[moduleParamName]) { params[moduleParamName] = { enabled: false }; }
7160        }
7161      });
7162
7163      // Extend defaults with modules params
7164      var swiperParams = Utils.extend({}, defaults);
7165      swiper.useModulesParams(swiperParams);
7166
7167      // Extend defaults with passed params
7168      swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);
7169      swiper.originalParams = Utils.extend({}, swiper.params);
7170      swiper.passedParams = Utils.extend({}, params);
7171
7172      // Save Dom lib
7173      swiper.$ = $;
7174
7175      // Find el
7176      var $el = $(swiper.params.el);
7177      el = $el[0];
7178
7179      if (!el) {
7180        return undefined;
7181      }
7182
7183      if ($el.length > 1) {
7184        var swipers = [];
7185        $el.each(function (index, containerEl) {
7186          var newParams = Utils.extend({}, params, { el: containerEl });
7187          swipers.push(new Swiper(newParams));
7188        });
7189        return swipers;
7190      }
7191
7192      el.swiper = swiper;
7193      $el.data('swiper', swiper);
7194
7195      // Find Wrapper
7196      var $wrapperEl = $el.children(("." + (swiper.params.wrapperClass)));
7197
7198      // Extend Swiper
7199      Utils.extend(swiper, {
7200        $el: $el,
7201        el: el,
7202        $wrapperEl: $wrapperEl,
7203        wrapperEl: $wrapperEl[0],
7204
7205        // Classes
7206        classNames: [],
7207
7208        // Slides
7209        slides: $(),
7210        slidesGrid: [],
7211        snapGrid: [],
7212        slidesSizesGrid: [],
7213
7214        // isDirection
7215        isHorizontal: function isHorizontal() {
7216          return swiper.params.direction === 'horizontal';
7217        },
7218        isVertical: function isVertical() {
7219          return swiper.params.direction === 'vertical';
7220        },
7221        // RTL
7222        rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
7223        rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
7224        wrongRTL: $wrapperEl.css('display') === '-webkit-box',
7225
7226        // Indexes
7227        activeIndex: 0,
7228        realIndex: 0,
7229
7230        //
7231        isBeginning: true,
7232        isEnd: false,
7233
7234        // Props
7235        translate: 0,
7236        previousTranslate: 0,
7237        progress: 0,
7238        velocity: 0,
7239        animating: false,
7240
7241        // Locks
7242        allowSlideNext: swiper.params.allowSlideNext,
7243        allowSlidePrev: swiper.params.allowSlidePrev,
7244
7245        // Touch Events
7246        touchEvents: (function touchEvents() {
7247          var touch = ['touchstart', 'touchmove', 'touchend'];
7248          var desktop = ['mousedown', 'mousemove', 'mouseup'];
7249          if (Support.pointerEvents) {
7250            desktop = ['pointerdown', 'pointermove', 'pointerup'];
7251          } else if (Support.prefixedPointerEvents) {
7252            desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];
7253          }
7254          swiper.touchEventsTouch = {
7255            start: touch[0],
7256            move: touch[1],
7257            end: touch[2],
7258          };
7259          swiper.touchEventsDesktop = {
7260            start: desktop[0],
7261            move: desktop[1],
7262            end: desktop[2],
7263          };
7264          return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
7265        }()),
7266        touchEventsData: {
7267          isTouched: undefined,
7268          isMoved: undefined,
7269          allowTouchCallbacks: undefined,
7270          touchStartTime: undefined,
7271          isScrolling: undefined,
7272          currentTranslate: undefined,
7273          startTranslate: undefined,
7274          allowThresholdMove: undefined,
7275          // Form elements to match
7276          formElements: 'input, select, option, textarea, button, video',
7277          // Last click time
7278          lastClickTime: Utils.now(),
7279          clickTimeout: undefined,
7280          // Velocities
7281          velocities: [],
7282          allowMomentumBounce: undefined,
7283          isTouchEvent: undefined,
7284          startMoving: undefined,
7285        },
7286
7287        // Clicks
7288        allowClick: true,
7289
7290        // Touches
7291        allowTouchMove: swiper.params.allowTouchMove,
7292
7293        touches: {
7294          startX: 0,
7295          startY: 0,
7296          currentX: 0,
7297          currentY: 0,
7298          diff: 0,
7299        },
7300
7301        // Images
7302        imagesToLoad: [],
7303        imagesLoaded: 0,
7304
7305      });
7306
7307      // Install Modules
7308      swiper.useModules();
7309
7310      // Init
7311      if (swiper.params.init) {
7312        swiper.init();
7313      }
7314
7315      // Return app instance
7316      return swiper;
7317    }
7318
7319    if ( SwiperClass ) Swiper.__proto__ = SwiperClass;
7320    Swiper.prototype = Object.create( SwiperClass && SwiperClass.prototype );
7321    Swiper.prototype.constructor = Swiper;
7322
7323    var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } };
7324
7325    Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () {
7326      var swiper = this;
7327      var params = swiper.params;
7328      var slides = swiper.slides;
7329      var slidesGrid = swiper.slidesGrid;
7330      var swiperSize = swiper.size;
7331      var activeIndex = swiper.activeIndex;
7332      var spv = 1;
7333      if (params.centeredSlides) {
7334        var slideSize = slides[activeIndex].swiperSlideSize;
7335        var breakLoop;
7336        for (var i = activeIndex + 1; i < slides.length; i += 1) {
7337          if (slides[i] && !breakLoop) {
7338            slideSize += slides[i].swiperSlideSize;
7339            spv += 1;
7340            if (slideSize > swiperSize) { breakLoop = true; }
7341          }
7342        }
7343        for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) {
7344          if (slides[i$1] && !breakLoop) {
7345            slideSize += slides[i$1].swiperSlideSize;
7346            spv += 1;
7347            if (slideSize > swiperSize) { breakLoop = true; }
7348          }
7349        }
7350      } else {
7351        for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) {
7352          if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) {
7353            spv += 1;
7354          }
7355        }
7356      }
7357      return spv;
7358    };
7359
7360    Swiper.prototype.update = function update () {
7361      var swiper = this;
7362      if (!swiper || swiper.destroyed) { return; }
7363      var snapGrid = swiper.snapGrid;
7364      var params = swiper.params;
7365      // Breakpoints
7366      if (params.breakpoints) {
7367        swiper.setBreakpoint();
7368      }
7369      swiper.updateSize();
7370      swiper.updateSlides();
7371      swiper.updateProgress();
7372      swiper.updateSlidesClasses();
7373
7374      function setTranslate() {
7375        var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
7376        var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
7377        swiper.setTranslate(newTranslate);
7378        swiper.updateActiveIndex();
7379        swiper.updateSlidesClasses();
7380      }
7381      var translated;
7382      if (swiper.params.freeMode) {
7383        setTranslate();
7384        if (swiper.params.autoHeight) {
7385          swiper.updateAutoHeight();
7386        }
7387      } else {
7388        if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
7389          translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
7390        } else {
7391          translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
7392        }
7393        if (!translated) {
7394          setTranslate();
7395        }
7396      }
7397      if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
7398        swiper.checkOverflow();
7399      }
7400      swiper.emit('update');
7401    };
7402
7403    Swiper.prototype.changeDirection = function changeDirection (newDirection, needUpdate) {
7404      if ( needUpdate === void 0 ) needUpdate = true;
7405
7406      var swiper = this;
7407      var currentDirection = swiper.params.direction;
7408      if (!newDirection) {
7409        // eslint-disable-next-line
7410        newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
7411      }
7412      if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {
7413        return swiper;
7414      }
7415
7416      if (currentDirection === 'vertical') {
7417        swiper.$el
7418          .removeClass(((swiper.params.containerModifierClass) + "vertical wp8-vertical"))
7419          .addClass(("" + (swiper.params.containerModifierClass) + newDirection));
7420
7421        if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {
7422          swiper.$el.addClass(((swiper.params.containerModifierClass) + "wp8-" + newDirection));
7423        }
7424      }
7425      if (currentDirection === 'horizontal') {
7426        swiper.$el
7427          .removeClass(((swiper.params.containerModifierClass) + "horizontal wp8-horizontal"))
7428          .addClass(("" + (swiper.params.containerModifierClass) + newDirection));
7429
7430        if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {
7431          swiper.$el.addClass(((swiper.params.containerModifierClass) + "wp8-" + newDirection));
7432        }
7433      }
7434
7435      swiper.params.direction = newDirection;
7436
7437      swiper.slides.each(function (slideIndex, slideEl) {
7438        if (newDirection === 'vertical') {
7439          slideEl.style.width = '';
7440        } else {
7441          slideEl.style.height = '';
7442        }
7443      });
7444
7445      swiper.emit('changeDirection');
7446      if (needUpdate) { swiper.update(); }
7447
7448      return swiper;
7449    };
7450
7451    Swiper.prototype.init = function init () {
7452      var swiper = this;
7453      if (swiper.initialized) { return; }
7454
7455      swiper.emit('beforeInit');
7456
7457      // Set breakpoint
7458      if (swiper.params.breakpoints) {
7459        swiper.setBreakpoint();
7460      }
7461
7462      // Add Classes
7463      swiper.addClasses();
7464
7465      // Create loop
7466      if (swiper.params.loop) {
7467        swiper.loopCreate();
7468      }
7469
7470      // Update size
7471      swiper.updateSize();
7472
7473      // Update slides
7474      swiper.updateSlides();
7475
7476      if (swiper.params.watchOverflow) {
7477        swiper.checkOverflow();
7478      }
7479
7480      // Set Grab Cursor
7481      if (swiper.params.grabCursor) {
7482        swiper.setGrabCursor();
7483      }
7484
7485      if (swiper.params.preloadImages) {
7486        swiper.preloadImages();
7487      }
7488
7489      // Slide To Initial Slide
7490      if (swiper.params.loop) {
7491        swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
7492      } else {
7493        swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
7494      }
7495
7496      // Attach events
7497      swiper.attachEvents();
7498
7499      // Init Flag
7500      swiper.initialized = true;
7501
7502      // Emit
7503      swiper.emit('init');
7504    };
7505
7506    Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) {
7507      if ( deleteInstance === void 0 ) deleteInstance = true;
7508      if ( cleanStyles === void 0 ) cleanStyles = true;
7509
7510      var swiper = this;
7511      var params = swiper.params;
7512      var $el = swiper.$el;
7513      var $wrapperEl = swiper.$wrapperEl;
7514      var slides = swiper.slides;
7515
7516      if (typeof swiper.params === 'undefined' || swiper.destroyed) {
7517        return null;
7518      }
7519
7520      swiper.emit('beforeDestroy');
7521
7522      // Init Flag
7523      swiper.initialized = false;
7524
7525      // Detach events
7526      swiper.detachEvents();
7527
7528      // Destroy loop
7529      if (params.loop) {
7530        swiper.loopDestroy();
7531      }
7532
7533      // Cleanup styles
7534      if (cleanStyles) {
7535        swiper.removeClasses();
7536        $el.removeAttr('style');
7537        $wrapperEl.removeAttr('style');
7538        if (slides && slides.length) {
7539          slides
7540            .removeClass([
7541              params.slideVisibleClass,
7542              params.slideActiveClass,
7543              params.slideNextClass,
7544              params.slidePrevClass ].join(' '))
7545            .removeAttr('style')
7546            .removeAttr('data-swiper-slide-index')
7547            .removeAttr('data-swiper-column')
7548            .removeAttr('data-swiper-row');
7549        }
7550      }
7551
7552      swiper.emit('destroy');
7553
7554      // Detach emitter events
7555      Object.keys(swiper.eventsListeners).forEach(function (eventName) {
7556        swiper.off(eventName);
7557      });
7558
7559      if (deleteInstance !== false) {
7560        swiper.$el[0].swiper = null;
7561        swiper.$el.data('swiper', null);
7562        Utils.deleteProps(swiper);
7563      }
7564      swiper.destroyed = true;
7565
7566      return null;
7567    };
7568
7569    Swiper.extendDefaults = function extendDefaults (newDefaults) {
7570      Utils.extend(extendedDefaults, newDefaults);
7571    };
7572
7573    staticAccessors.extendedDefaults.get = function () {
7574      return extendedDefaults;
7575    };
7576
7577    staticAccessors.defaults.get = function () {
7578      return defaults;
7579    };
7580
7581    staticAccessors.Class.get = function () {
7582      return SwiperClass;
7583    };
7584
7585    staticAccessors.$.get = function () {
7586      return $;
7587    };
7588
7589    Object.defineProperties( Swiper, staticAccessors );
7590
7591    return Swiper;
7592  }(SwiperClass));
7593
7594  var Device$1 = {
7595    name: 'device',
7596    proto: {
7597      device: Device,
7598    },
7599    static: {
7600      device: Device,
7601    },
7602  };
7603
7604  var Support$1 = {
7605    name: 'support',
7606    proto: {
7607      support: Support,
7608    },
7609    static: {
7610      support: Support,
7611    },
7612  };
7613
7614  var Browser$1 = {
7615    name: 'browser',
7616    proto: {
7617      browser: Browser,
7618    },
7619    static: {
7620      browser: Browser,
7621    },
7622  };
7623
7624  var Resize = {
7625    name: 'resize',
7626    create: function create() {
7627      var swiper = this;
7628      Utils.extend(swiper, {
7629        resize: {
7630          resizeHandler: function resizeHandler() {
7631            if (!swiper || swiper.destroyed || !swiper.initialized) { return; }
7632            swiper.emit('beforeResize');
7633            swiper.emit('resize');
7634          },
7635          orientationChangeHandler: function orientationChangeHandler() {
7636            if (!swiper || swiper.destroyed || !swiper.initialized) { return; }
7637            swiper.emit('orientationchange');
7638          },
7639        },
7640      });
7641    },
7642    on: {
7643      init: function init() {
7644        var swiper = this;
7645        // Emit resize
7646        win.addEventListener('resize', swiper.resize.resizeHandler);
7647
7648        // Emit orientationchange
7649        win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
7650      },
7651      destroy: function destroy() {
7652        var swiper = this;
7653        win.removeEventListener('resize', swiper.resize.resizeHandler);
7654        win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
7655      },
7656    },
7657  };
7658
7659  var Observer = {
7660    func: win.MutationObserver || win.WebkitMutationObserver,
7661    attach: function attach(target, options) {
7662      if ( options === void 0 ) options = {};
7663
7664      var swiper = this;
7665
7666      var ObserverFunc = Observer.func;
7667      var observer = new ObserverFunc(function (mutations) {
7668        // The observerUpdate event should only be triggered
7669        // once despite the number of mutations.  Additional
7670        // triggers are redundant and are very costly
7671        if (mutations.length === 1) {
7672          swiper.emit('observerUpdate', mutations[0]);
7673          return;
7674        }
7675        var observerUpdate = function observerUpdate() {
7676          swiper.emit('observerUpdate', mutations[0]);
7677        };
7678
7679        if (win.requestAnimationFrame) {
7680          win.requestAnimationFrame(observerUpdate);
7681        } else {
7682          win.setTimeout(observerUpdate, 0);
7683        }
7684      });
7685
7686      observer.observe(target, {
7687        attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
7688        childList: typeof options.childList === 'undefined' ? true : options.childList,
7689        characterData: typeof options.characterData === 'undefined' ? true : options.characterData,
7690      });
7691
7692      swiper.observer.observers.push(observer);
7693    },
7694    init: function init() {
7695      var swiper = this;
7696      if (!Support.observer || !swiper.params.observer) { return; }
7697      if (swiper.params.observeParents) {
7698        var containerParents = swiper.$el.parents();
7699        for (var i = 0; i < containerParents.length; i += 1) {
7700          swiper.observer.attach(containerParents[i]);
7701        }
7702      }
7703      // Observe container
7704      swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });
7705
7706      // Observe wrapper
7707      swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });
7708    },
7709    destroy: function destroy() {
7710      var swiper = this;
7711      swiper.observer.observers.forEach(function (observer) {
7712        observer.disconnect();
7713      });
7714      swiper.observer.observers = [];
7715    },
7716  };
7717
7718  var Observer$1 = {
7719    name: 'observer',
7720    params: {
7721      observer: false,
7722      observeParents: false,
7723      observeSlideChildren: false,
7724    },
7725    create: function create() {
7726      var swiper = this;
7727      Utils.extend(swiper, {
7728        observer: {
7729          init: Observer.init.bind(swiper),
7730          attach: Observer.attach.bind(swiper),
7731          destroy: Observer.destroy.bind(swiper),
7732          observers: [],
7733        },
7734      });
7735    },
7736    on: {
7737      init: function init() {
7738        var swiper = this;
7739        swiper.observer.init();
7740      },
7741      destroy: function destroy() {
7742        var swiper = this;
7743        swiper.observer.destroy();
7744      },
7745    },
7746  };
7747
7748  var Virtual = {
7749    update: function update(force) {
7750      var swiper = this;
7751      var ref = swiper.params;
7752      var slidesPerView = ref.slidesPerView;
7753      var slidesPerGroup = ref.slidesPerGroup;
7754      var centeredSlides = ref.centeredSlides;
7755      var ref$1 = swiper.params.virtual;
7756      var addSlidesBefore = ref$1.addSlidesBefore;
7757      var addSlidesAfter = ref$1.addSlidesAfter;
7758      var ref$2 = swiper.virtual;
7759      var previousFrom = ref$2.from;
7760      var previousTo = ref$2.to;
7761      var slides = ref$2.slides;
7762      var previousSlidesGrid = ref$2.slidesGrid;
7763      var renderSlide = ref$2.renderSlide;
7764      var previousOffset = ref$2.offset;
7765      swiper.updateActiveIndex();
7766      var activeIndex = swiper.activeIndex || 0;
7767
7768      var offsetProp;
7769      if (swiper.rtlTranslate) { offsetProp = 'right'; }
7770      else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; }
7771
7772      var slidesAfter;
7773      var slidesBefore;
7774      if (centeredSlides) {
7775        slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
7776        slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
7777      } else {
7778        slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;
7779        slidesBefore = slidesPerGroup + addSlidesAfter;
7780      }
7781      var from = Math.max((activeIndex || 0) - slidesBefore, 0);
7782      var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
7783      var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
7784
7785      Utils.extend(swiper.virtual, {
7786        from: from,
7787        to: to,
7788        offset: offset,
7789        slidesGrid: swiper.slidesGrid,
7790      });
7791
7792      function onRendered() {
7793        swiper.updateSlides();
7794        swiper.updateProgress();
7795        swiper.updateSlidesClasses();
7796        if (swiper.lazy && swiper.params.lazy.enabled) {
7797          swiper.lazy.load();
7798        }
7799      }
7800
7801      if (previousFrom === from && previousTo === to && !force) {
7802        if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
7803          swiper.slides.css(offsetProp, (offset + "px"));
7804        }
7805        swiper.updateProgress();
7806        return;
7807      }
7808      if (swiper.params.virtual.renderExternal) {
7809        swiper.params.virtual.renderExternal.call(swiper, {
7810          offset: offset,
7811          from: from,
7812          to: to,
7813          slides: (function getSlides() {
7814            var slidesToRender = [];
7815            for (var i = from; i <= to; i += 1) {
7816              slidesToRender.push(slides[i]);
7817            }
7818            return slidesToRender;
7819          }()),
7820        });
7821        onRendered();
7822        return;
7823      }
7824      var prependIndexes = [];
7825      var appendIndexes = [];
7826      if (force) {
7827        swiper.$wrapperEl.find(("." + (swiper.params.slideClass))).remove();
7828      } else {
7829        for (var i = previousFrom; i <= previousTo; i += 1) {
7830          if (i < from || i > to) {
7831            swiper.$wrapperEl.find(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + i + "\"]")).remove();
7832          }
7833        }
7834      }
7835      for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {
7836        if (i$1 >= from && i$1 <= to) {
7837          if (typeof previousTo === 'undefined' || force) {
7838            appendIndexes.push(i$1);
7839          } else {
7840            if (i$1 > previousTo) { appendIndexes.push(i$1); }
7841            if (i$1 < previousFrom) { prependIndexes.push(i$1); }
7842          }
7843        }
7844      }
7845      appendIndexes.forEach(function (index) {
7846        swiper.$wrapperEl.append(renderSlide(slides[index], index));
7847      });
7848      prependIndexes.sort(function (a, b) { return b - a; }).forEach(function (index) {
7849        swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
7850      });
7851      swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + "px"));
7852      onRendered();
7853    },
7854    renderSlide: function renderSlide(slide, index) {
7855      var swiper = this;
7856      var params = swiper.params.virtual;
7857      if (params.cache && swiper.virtual.cache[index]) {
7858        return swiper.virtual.cache[index];
7859      }
7860      var $slideEl = params.renderSlide
7861        ? $(params.renderSlide.call(swiper, slide, index))
7862        : $(("<div class=\"" + (swiper.params.slideClass) + "\" data-swiper-slide-index=\"" + index + "\">" + slide + "</div>"));
7863      if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); }
7864      if (params.cache) { swiper.virtual.cache[index] = $slideEl; }
7865      return $slideEl;
7866    },
7867    appendSlide: function appendSlide(slides) {
7868      var swiper = this;
7869      if (typeof slides === 'object' && 'length' in slides) {
7870        for (var i = 0; i < slides.length; i += 1) {
7871          if (slides[i]) { swiper.virtual.slides.push(slides[i]); }
7872        }
7873      } else {
7874        swiper.virtual.slides.push(slides);
7875      }
7876      swiper.virtual.update(true);
7877    },
7878    prependSlide: function prependSlide(slides) {
7879      var swiper = this;
7880      var activeIndex = swiper.activeIndex;
7881      var newActiveIndex = activeIndex + 1;
7882      var numberOfNewSlides = 1;
7883
7884      if (Array.isArray(slides)) {
7885        for (var i = 0; i < slides.length; i += 1) {
7886          if (slides[i]) { swiper.virtual.slides.unshift(slides[i]); }
7887        }
7888        newActiveIndex = activeIndex + slides.length;
7889        numberOfNewSlides = slides.length;
7890      } else {
7891        swiper.virtual.slides.unshift(slides);
7892      }
7893      if (swiper.params.virtual.cache) {
7894        var cache = swiper.virtual.cache;
7895        var newCache = {};
7896        Object.keys(cache).forEach(function (cachedIndex) {
7897          newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cache[cachedIndex];
7898        });
7899        swiper.virtual.cache = newCache;
7900      }
7901      swiper.virtual.update(true);
7902      swiper.slideTo(newActiveIndex, 0);
7903    },
7904    removeSlide: function removeSlide(slidesIndexes) {
7905      var swiper = this;
7906      if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) { return; }
7907      var activeIndex = swiper.activeIndex;
7908      if (Array.isArray(slidesIndexes)) {
7909        for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {
7910          swiper.virtual.slides.splice(slidesIndexes[i], 1);
7911          if (swiper.params.virtual.cache) {
7912            delete swiper.virtual.cache[slidesIndexes[i]];
7913          }
7914          if (slidesIndexes[i] < activeIndex) { activeIndex -= 1; }
7915          activeIndex = Math.max(activeIndex, 0);
7916        }
7917      } else {
7918        swiper.virtual.slides.splice(slidesIndexes, 1);
7919        if (swiper.params.virtual.cache) {
7920          delete swiper.virtual.cache[slidesIndexes];
7921        }
7922        if (slidesIndexes < activeIndex) { activeIndex -= 1; }
7923        activeIndex = Math.max(activeIndex, 0);
7924      }
7925      swiper.virtual.update(true);
7926      swiper.slideTo(activeIndex, 0);
7927    },
7928    removeAllSlides: function removeAllSlides() {
7929      var swiper = this;
7930      swiper.virtual.slides = [];
7931      if (swiper.params.virtual.cache) {
7932        swiper.virtual.cache = {};
7933      }
7934      swiper.virtual.update(true);
7935      swiper.slideTo(0, 0);
7936    },
7937  };
7938
7939  var Virtual$1 = {
7940    name: 'virtual',
7941    params: {
7942      virtual: {
7943        enabled: false,
7944        slides: [],
7945        cache: true,
7946        renderSlide: null,
7947        renderExternal: null,
7948        addSlidesBefore: 0,
7949        addSlidesAfter: 0,
7950      },
7951    },
7952    create: function create() {
7953      var swiper = this;
7954      Utils.extend(swiper, {
7955        virtual: {
7956          update: Virtual.update.bind(swiper),
7957          appendSlide: Virtual.appendSlide.bind(swiper),
7958          prependSlide: Virtual.prependSlide.bind(swiper),
7959          removeSlide: Virtual.removeSlide.bind(swiper),
7960          removeAllSlides: Virtual.removeAllSlides.bind(swiper),
7961          renderSlide: Virtual.renderSlide.bind(swiper),
7962          slides: swiper.params.virtual.slides,
7963          cache: {},
7964        },
7965      });
7966    },
7967    on: {
7968      beforeInit: function beforeInit() {
7969        var swiper = this;
7970        if (!swiper.params.virtual.enabled) { return; }
7971        swiper.classNames.push(((swiper.params.containerModifierClass) + "virtual"));
7972        var overwriteParams = {
7973          watchSlidesProgress: true,
7974        };
7975        Utils.extend(swiper.params, overwriteParams);
7976        Utils.extend(swiper.originalParams, overwriteParams);
7977
7978        if (!swiper.params.initialSlide) {
7979          swiper.virtual.update();
7980        }
7981      },
7982      setTranslate: function setTranslate() {
7983        var swiper = this;
7984        if (!swiper.params.virtual.enabled) { return; }
7985        swiper.virtual.update();
7986      },
7987    },
7988  };
7989
7990  var Keyboard = {
7991    handle: function handle(event) {
7992      var swiper = this;
7993      var rtl = swiper.rtlTranslate;
7994      var e = event;
7995      if (e.originalEvent) { e = e.originalEvent; } // jquery fix
7996      var kc = e.keyCode || e.charCode;
7997      // Directions locks
7998      if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40))) {
7999        return false;
8000      }
8001      if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38))) {
8002        return false;
8003      }
8004      if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
8005        return undefined;
8006      }
8007      if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) {
8008        return undefined;
8009      }
8010      if (swiper.params.keyboard.onlyInViewport && (kc === 37 || kc === 39 || kc === 38 || kc === 40)) {
8011        var inView = false;
8012        // Check that swiper should be inside of visible area of window
8013        if (swiper.$el.parents(("." + (swiper.params.slideClass))).length > 0 && swiper.$el.parents(("." + (swiper.params.slideActiveClass))).length === 0) {
8014          return undefined;
8015        }
8016        var windowWidth = win.innerWidth;
8017        var windowHeight = win.innerHeight;
8018        var swiperOffset = swiper.$el.offset();
8019        if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; }
8020        var swiperCoord = [
8021          [swiperOffset.left, swiperOffset.top],
8022          [swiperOffset.left + swiper.width, swiperOffset.top],
8023          [swiperOffset.left, swiperOffset.top + swiper.height],
8024          [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height] ];
8025        for (var i = 0; i < swiperCoord.length; i += 1) {
8026          var point = swiperCoord[i];
8027          if (
8028            point[0] >= 0 && point[0] <= windowWidth
8029            && point[1] >= 0 && point[1] <= windowHeight
8030          ) {
8031            inView = true;
8032          }
8033        }
8034        if (!inView) { return undefined; }
8035      }
8036      if (swiper.isHorizontal()) {
8037        if (kc === 37 || kc === 39) {
8038          if (e.preventDefault) { e.preventDefault(); }
8039          else { e.returnValue = false; }
8040        }
8041        if ((kc === 39 && !rtl) || (kc === 37 && rtl)) { swiper.slideNext(); }
8042        if ((kc === 37 && !rtl) || (kc === 39 && rtl)) { swiper.slidePrev(); }
8043      } else {
8044        if (kc === 38 || kc === 40) {
8045          if (e.preventDefault) { e.preventDefault(); }
8046          else { e.returnValue = false; }
8047        }
8048        if (kc === 40) { swiper.slideNext(); }
8049        if (kc === 38) { swiper.slidePrev(); }
8050      }
8051      swiper.emit('keyPress', kc);
8052      return undefined;
8053    },
8054    enable: function enable() {
8055      var swiper = this;
8056      if (swiper.keyboard.enabled) { return; }
8057      $(doc).on('keydown', swiper.keyboard.handle);
8058      swiper.keyboard.enabled = true;
8059    },
8060    disable: function disable() {
8061      var swiper = this;
8062      if (!swiper.keyboard.enabled) { return; }
8063      $(doc).off('keydown', swiper.keyboard.handle);
8064      swiper.keyboard.enabled = false;
8065    },
8066  };
8067
8068  var Keyboard$1 = {
8069    name: 'keyboard',
8070    params: {
8071      keyboard: {
8072        enabled: false,
8073        onlyInViewport: true,
8074      },
8075    },
8076    create: function create() {
8077      var swiper = this;
8078      Utils.extend(swiper, {
8079        keyboard: {
8080          enabled: false,
8081          enable: Keyboard.enable.bind(swiper),
8082          disable: Keyboard.disable.bind(swiper),
8083          handle: Keyboard.handle.bind(swiper),
8084        },
8085      });
8086    },
8087    on: {
8088      init: function init() {
8089        var swiper = this;
8090        if (swiper.params.keyboard.enabled) {
8091          swiper.keyboard.enable();
8092        }
8093      },
8094      destroy: function destroy() {
8095        var swiper = this;
8096        if (swiper.keyboard.enabled) {
8097          swiper.keyboard.disable();
8098        }
8099      },
8100    },
8101  };
8102
8103  function isEventSupported() {
8104    var eventName = 'onwheel';
8105    var isSupported = eventName in doc;
8106
8107    if (!isSupported) {
8108      var element = doc.createElement('div');
8109      element.setAttribute(eventName, 'return;');
8110      isSupported = typeof element[eventName] === 'function';
8111    }
8112
8113    if (!isSupported
8114      && doc.implementation
8115      && doc.implementation.hasFeature
8116      // always returns true in newer browsers as per the standard.
8117      // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
8118      && doc.implementation.hasFeature('', '') !== true
8119    ) {
8120      // This is the only way to test support for the `wheel` event in IE9+.
8121      isSupported = doc.implementation.hasFeature('Events.wheel', '3.0');
8122    }
8123
8124    return isSupported;
8125  }
8126  var Mousewheel = {
8127    lastScrollTime: Utils.now(),
8128    event: (function getEvent() {
8129      if (win.navigator.userAgent.indexOf('firefox') > -1) { return 'DOMMouseScroll'; }
8130      return isEventSupported() ? 'wheel' : 'mousewheel';
8131    }()),
8132    normalize: function normalize(e) {
8133      // Reasonable defaults
8134      var PIXEL_STEP = 10;
8135      var LINE_HEIGHT = 40;
8136      var PAGE_HEIGHT = 800;
8137
8138      var sX = 0;
8139      var sY = 0; // spinX, spinY
8140      var pX = 0;
8141      var pY = 0; // pixelX, pixelY
8142
8143      // Legacy
8144      if ('detail' in e) {
8145        sY = e.detail;
8146      }
8147      if ('wheelDelta' in e) {
8148        sY = -e.wheelDelta / 120;
8149      }
8150      if ('wheelDeltaY' in e) {
8151        sY = -e.wheelDeltaY / 120;
8152      }
8153      if ('wheelDeltaX' in e) {
8154        sX = -e.wheelDeltaX / 120;
8155      }
8156
8157      // side scrolling on FF with DOMMouseScroll
8158      if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
8159        sX = sY;
8160        sY = 0;
8161      }
8162
8163      pX = sX * PIXEL_STEP;
8164      pY = sY * PIXEL_STEP;
8165
8166      if ('deltaY' in e) {
8167        pY = e.deltaY;
8168      }
8169      if ('deltaX' in e) {
8170        pX = e.deltaX;
8171      }
8172
8173      if ((pX || pY) && e.deltaMode) {
8174        if (e.deltaMode === 1) { // delta in LINE units
8175          pX *= LINE_HEIGHT;
8176          pY *= LINE_HEIGHT;
8177        } else { // delta in PAGE units
8178          pX *= PAGE_HEIGHT;
8179          pY *= PAGE_HEIGHT;
8180        }
8181      }
8182
8183      // Fall-back if spin cannot be determined
8184      if (pX && !sX) {
8185        sX = (pX < 1) ? -1 : 1;
8186      }
8187      if (pY && !sY) {
8188        sY = (pY < 1) ? -1 : 1;
8189      }
8190
8191      return {
8192        spinX: sX,
8193        spinY: sY,
8194        pixelX: pX,
8195        pixelY: pY,
8196      };
8197    },
8198    handleMouseEnter: function handleMouseEnter() {
8199      var swiper = this;
8200      swiper.mouseEntered = true;
8201    },
8202    handleMouseLeave: function handleMouseLeave() {
8203      var swiper = this;
8204      swiper.mouseEntered = false;
8205    },
8206    handle: function handle(event) {
8207      var e = event;
8208      var swiper = this;
8209      var params = swiper.params.mousewheel;
8210
8211      if (!swiper.mouseEntered && !params.releaseOnEdges) { return true; }
8212
8213      if (e.originalEvent) { e = e.originalEvent; } // jquery fix
8214      var delta = 0;
8215      var rtlFactor = swiper.rtlTranslate ? -1 : 1;
8216
8217      var data = Mousewheel.normalize(e);
8218
8219      if (params.forceToAxis) {
8220        if (swiper.isHorizontal()) {
8221          if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) { delta = data.pixelX * rtlFactor; }
8222          else { return true; }
8223        } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) { delta = data.pixelY; }
8224        else { return true; }
8225      } else {
8226        delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
8227      }
8228
8229      if (delta === 0) { return true; }
8230
8231      if (params.invert) { delta = -delta; }
8232
8233      if (!swiper.params.freeMode) {
8234        if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {
8235          if (delta < 0) {
8236            if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
8237              swiper.slideNext();
8238              swiper.emit('scroll', e);
8239            } else if (params.releaseOnEdges) { return true; }
8240          } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
8241            swiper.slidePrev();
8242            swiper.emit('scroll', e);
8243          } else if (params.releaseOnEdges) { return true; }
8244        }
8245        swiper.mousewheel.lastScrollTime = (new win.Date()).getTime();
8246      } else {
8247        // Freemode or scrollContainer:
8248        if (swiper.params.loop) {
8249          swiper.loopFix();
8250        }
8251        var position = swiper.getTranslate() + (delta * params.sensitivity);
8252        var wasBeginning = swiper.isBeginning;
8253        var wasEnd = swiper.isEnd;
8254
8255        if (position >= swiper.minTranslate()) { position = swiper.minTranslate(); }
8256        if (position <= swiper.maxTranslate()) { position = swiper.maxTranslate(); }
8257
8258        swiper.setTransition(0);
8259        swiper.setTranslate(position);
8260        swiper.updateProgress();
8261        swiper.updateActiveIndex();
8262        swiper.updateSlidesClasses();
8263
8264        if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {
8265          swiper.updateSlidesClasses();
8266        }
8267
8268        if (swiper.params.freeModeSticky) {
8269          clearTimeout(swiper.mousewheel.timeout);
8270          swiper.mousewheel.timeout = Utils.nextTick(function () {
8271            swiper.slideToClosest();
8272          }, 300);
8273        }
8274        // Emit event
8275        swiper.emit('scroll', e);
8276
8277        // Stop autoplay
8278        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) { swiper.autoplay.stop(); }
8279        // Return page scroll on edge positions
8280        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) { return true; }
8281      }
8282
8283      if (e.preventDefault) { e.preventDefault(); }
8284      else { e.returnValue = false; }
8285      return false;
8286    },
8287    enable: function enable() {
8288      var swiper = this;
8289      if (!Mousewheel.event) { return false; }
8290      if (swiper.mousewheel.enabled) { return false; }
8291      var target = swiper.$el;
8292      if (swiper.params.mousewheel.eventsTarged !== 'container') {
8293        target = $(swiper.params.mousewheel.eventsTarged);
8294      }
8295      target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
8296      target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
8297      target.on(Mousewheel.event, swiper.mousewheel.handle);
8298      swiper.mousewheel.enabled = true;
8299      return true;
8300    },
8301    disable: function disable() {
8302      var swiper = this;
8303      if (!Mousewheel.event) { return false; }
8304      if (!swiper.mousewheel.enabled) { return false; }
8305      var target = swiper.$el;
8306      if (swiper.params.mousewheel.eventsTarged !== 'container') {
8307        target = $(swiper.params.mousewheel.eventsTarged);
8308      }
8309      target.off(Mousewheel.event, swiper.mousewheel.handle);
8310      swiper.mousewheel.enabled = false;
8311      return true;
8312    },
8313  };
8314
8315  var Mousewheel$1 = {
8316    name: 'mousewheel',
8317    params: {
8318      mousewheel: {
8319        enabled: false,
8320        releaseOnEdges: false,
8321        invert: false,
8322        forceToAxis: false,
8323        sensitivity: 1,
8324        eventsTarged: 'container',
8325      },
8326    },
8327    create: function create() {
8328      var swiper = this;
8329      Utils.extend(swiper, {
8330        mousewheel: {
8331          enabled: false,
8332          enable: Mousewheel.enable.bind(swiper),
8333          disable: Mousewheel.disable.bind(swiper),
8334          handle: Mousewheel.handle.bind(swiper),
8335          handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),
8336          handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),
8337          lastScrollTime: Utils.now(),
8338        },
8339      });
8340    },
8341    on: {
8342      init: function init() {
8343        var swiper = this;
8344        if (swiper.params.mousewheel.enabled) { swiper.mousewheel.enable(); }
8345      },
8346      destroy: function destroy() {
8347        var swiper = this;
8348        if (swiper.mousewheel.enabled) { swiper.mousewheel.disable(); }
8349      },
8350    },
8351  };
8352
8353  var Navigation = {
8354    update: function update() {
8355      // Update Navigation Buttons
8356      var swiper = this;
8357      var params = swiper.params.navigation;
8358
8359      if (swiper.params.loop) { return; }
8360      var ref = swiper.navigation;
8361      var $nextEl = ref.$nextEl;
8362      var $prevEl = ref.$prevEl;
8363
8364      if ($prevEl && $prevEl.length > 0) {
8365        if (swiper.isBeginning) {
8366          $prevEl.addClass(params.disabledClass);
8367        } else {
8368          $prevEl.removeClass(params.disabledClass);
8369        }
8370        $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
8371      }
8372      if ($nextEl && $nextEl.length > 0) {
8373        if (swiper.isEnd) {
8374          $nextEl.addClass(params.disabledClass);
8375        } else {
8376          $nextEl.removeClass(params.disabledClass);
8377        }
8378        $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
8379      }
8380    },
8381    onPrevClick: function onPrevClick(e) {
8382      var swiper = this;
8383      e.preventDefault();
8384      if (swiper.isBeginning && !swiper.params.loop) { return; }
8385      swiper.slidePrev();
8386    },
8387    onNextClick: function onNextClick(e) {
8388      var swiper = this;
8389      e.preventDefault();
8390      if (swiper.isEnd && !swiper.params.loop) { return; }
8391      swiper.slideNext();
8392    },
8393    init: function init() {
8394      var swiper = this;
8395      var params = swiper.params.navigation;
8396      if (!(params.nextEl || params.prevEl)) { return; }
8397
8398      var $nextEl;
8399      var $prevEl;
8400      if (params.nextEl) {
8401        $nextEl = $(params.nextEl);
8402        if (
8403          swiper.params.uniqueNavElements
8404          && typeof params.nextEl === 'string'
8405          && $nextEl.length > 1
8406          && swiper.$el.find(params.nextEl).length === 1
8407        ) {
8408          $nextEl = swiper.$el.find(params.nextEl);
8409        }
8410      }
8411      if (params.prevEl) {
8412        $prevEl = $(params.prevEl);
8413        if (
8414          swiper.params.uniqueNavElements
8415          && typeof params.prevEl === 'string'
8416          && $prevEl.length > 1
8417          && swiper.$el.find(params.prevEl).length === 1
8418        ) {
8419          $prevEl = swiper.$el.find(params.prevEl);
8420        }
8421      }
8422
8423      if ($nextEl && $nextEl.length > 0) {
8424        $nextEl.on('click', swiper.navigation.onNextClick);
8425      }
8426      if ($prevEl && $prevEl.length > 0) {
8427        $prevEl.on('click', swiper.navigation.onPrevClick);
8428      }
8429
8430      Utils.extend(swiper.navigation, {
8431        $nextEl: $nextEl,
8432        nextEl: $nextEl && $nextEl[0],
8433        $prevEl: $prevEl,
8434        prevEl: $prevEl && $prevEl[0],
8435      });
8436    },
8437    destroy: function destroy() {
8438      var swiper = this;
8439      var ref = swiper.navigation;
8440      var $nextEl = ref.$nextEl;
8441      var $prevEl = ref.$prevEl;
8442      if ($nextEl && $nextEl.length) {
8443        $nextEl.off('click', swiper.navigation.onNextClick);
8444        $nextEl.removeClass(swiper.params.navigation.disabledClass);
8445      }
8446      if ($prevEl && $prevEl.length) {
8447        $prevEl.off('click', swiper.navigation.onPrevClick);
8448        $prevEl.removeClass(swiper.params.navigation.disabledClass);
8449      }
8450    },
8451  };
8452
8453  var Navigation$1 = {
8454    name: 'navigation',
8455    params: {
8456      navigation: {
8457        nextEl: null,
8458        prevEl: null,
8459
8460        hideOnClick: false,
8461        disabledClass: 'swiper-button-disabled',
8462        hiddenClass: 'swiper-button-hidden',
8463        lockClass: 'swiper-button-lock',
8464      },
8465    },
8466    create: function create() {
8467      var swiper = this;
8468      Utils.extend(swiper, {
8469        navigation: {
8470          init: Navigation.init.bind(swiper),
8471          update: Navigation.update.bind(swiper),
8472          destroy: Navigation.destroy.bind(swiper),
8473          onNextClick: Navigation.onNextClick.bind(swiper),
8474          onPrevClick: Navigation.onPrevClick.bind(swiper),
8475        },
8476      });
8477    },
8478    on: {
8479      init: function init() {
8480        var swiper = this;
8481        swiper.navigation.init();
8482        swiper.navigation.update();
8483      },
8484      toEdge: function toEdge() {
8485        var swiper = this;
8486        swiper.navigation.update();
8487      },
8488      fromEdge: function fromEdge() {
8489        var swiper = this;
8490        swiper.navigation.update();
8491      },
8492      destroy: function destroy() {
8493        var swiper = this;
8494        swiper.navigation.destroy();
8495      },
8496      click: function click(e) {
8497        var swiper = this;
8498        var ref = swiper.navigation;
8499        var $nextEl = ref.$nextEl;
8500        var $prevEl = ref.$prevEl;
8501        if (
8502          swiper.params.navigation.hideOnClick
8503          && !$(e.target).is($prevEl)
8504          && !$(e.target).is($nextEl)
8505        ) {
8506          var isHidden;
8507          if ($nextEl) {
8508            isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
8509          } else if ($prevEl) {
8510            isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
8511          }
8512          if (isHidden === true) {
8513            swiper.emit('navigationShow', swiper);
8514          } else {
8515            swiper.emit('navigationHide', swiper);
8516          }
8517          if ($nextEl) {
8518            $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
8519          }
8520          if ($prevEl) {
8521            $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
8522          }
8523        }
8524      },
8525    },
8526  };
8527
8528  var Pagination = {
8529    update: function update() {
8530      // Render || Update Pagination bullets/items
8531      var swiper = this;
8532      var rtl = swiper.rtl;
8533      var params = swiper.params.pagination;
8534      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
8535      var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
8536      var $el = swiper.pagination.$el;
8537      // Current/Total
8538      var current;
8539      var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
8540      if (swiper.params.loop) {
8541        current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
8542        if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {
8543          current -= (slidesLength - (swiper.loopedSlides * 2));
8544        }
8545        if (current > total - 1) { current -= total; }
8546        if (current < 0 && swiper.params.paginationType !== 'bullets') { current = total + current; }
8547      } else if (typeof swiper.snapIndex !== 'undefined') {
8548        current = swiper.snapIndex;
8549      } else {
8550        current = swiper.activeIndex || 0;
8551      }
8552      // Types
8553      if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
8554        var bullets = swiper.pagination.bullets;
8555        var firstIndex;
8556        var lastIndex;
8557        var midIndex;
8558        if (params.dynamicBullets) {
8559          swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
8560          $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + "px"));
8561          if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
8562            swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);
8563            if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {
8564              swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
8565            } else if (swiper.pagination.dynamicBulletIndex < 0) {
8566              swiper.pagination.dynamicBulletIndex = 0;
8567            }
8568          }
8569          firstIndex = current - swiper.pagination.dynamicBulletIndex;
8570          lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
8571          midIndex = (lastIndex + firstIndex) / 2;
8572        }
8573        bullets.removeClass(((params.bulletActiveClass) + " " + (params.bulletActiveClass) + "-next " + (params.bulletActiveClass) + "-next-next " + (params.bulletActiveClass) + "-prev " + (params.bulletActiveClass) + "-prev-prev " + (params.bulletActiveClass) + "-main"));
8574        if ($el.length > 1) {
8575          bullets.each(function (index, bullet) {
8576            var $bullet = $(bullet);
8577            var bulletIndex = $bullet.index();
8578            if (bulletIndex === current) {
8579              $bullet.addClass(params.bulletActiveClass);
8580            }
8581            if (params.dynamicBullets) {
8582              if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
8583                $bullet.addClass(((params.bulletActiveClass) + "-main"));
8584              }
8585              if (bulletIndex === firstIndex) {
8586                $bullet
8587                  .prev()
8588                  .addClass(((params.bulletActiveClass) + "-prev"))
8589                  .prev()
8590                  .addClass(((params.bulletActiveClass) + "-prev-prev"));
8591              }
8592              if (bulletIndex === lastIndex) {
8593                $bullet
8594                  .next()
8595                  .addClass(((params.bulletActiveClass) + "-next"))
8596                  .next()
8597                  .addClass(((params.bulletActiveClass) + "-next-next"));
8598              }
8599            }
8600          });
8601        } else {
8602          var $bullet = bullets.eq(current);
8603          $bullet.addClass(params.bulletActiveClass);
8604          if (params.dynamicBullets) {
8605            var $firstDisplayedBullet = bullets.eq(firstIndex);
8606            var $lastDisplayedBullet = bullets.eq(lastIndex);
8607            for (var i = firstIndex; i <= lastIndex; i += 1) {
8608              bullets.eq(i).addClass(((params.bulletActiveClass) + "-main"));
8609            }
8610            $firstDisplayedBullet
8611              .prev()
8612              .addClass(((params.bulletActiveClass) + "-prev"))
8613              .prev()
8614              .addClass(((params.bulletActiveClass) + "-prev-prev"));
8615            $lastDisplayedBullet
8616              .next()
8617              .addClass(((params.bulletActiveClass) + "-next"))
8618              .next()
8619              .addClass(((params.bulletActiveClass) + "-next-next"));
8620          }
8621        }
8622        if (params.dynamicBullets) {
8623          var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
8624          var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);
8625          var offsetProp = rtl ? 'right' : 'left';
8626          bullets.css(swiper.isHorizontal() ? offsetProp : 'top', (bulletsOffset + "px"));
8627        }
8628      }
8629      if (params.type === 'fraction') {
8630        $el.find(("." + (params.currentClass))).text(params.formatFractionCurrent(current + 1));
8631        $el.find(("." + (params.totalClass))).text(params.formatFractionTotal(total));
8632      }
8633      if (params.type === 'progressbar') {
8634        var progressbarDirection;
8635        if (params.progressbarOpposite) {
8636          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
8637        } else {
8638          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
8639        }
8640        var scale = (current + 1) / total;
8641        var scaleX = 1;
8642        var scaleY = 1;
8643        if (progressbarDirection === 'horizontal') {
8644          scaleX = scale;
8645        } else {
8646          scaleY = scale;
8647        }
8648        $el.find(("." + (params.progressbarFillClass))).transform(("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")")).transition(swiper.params.speed);
8649      }
8650      if (params.type === 'custom' && params.renderCustom) {
8651        $el.html(params.renderCustom(swiper, current + 1, total));
8652        swiper.emit('paginationRender', swiper, $el[0]);
8653      } else {
8654        swiper.emit('paginationUpdate', swiper, $el[0]);
8655      }
8656      $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
8657    },
8658    render: function render() {
8659      // Render Container
8660      var swiper = this;
8661      var params = swiper.params.pagination;
8662      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
8663      var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
8664
8665      var $el = swiper.pagination.$el;
8666      var paginationHTML = '';
8667      if (params.type === 'bullets') {
8668        var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
8669        for (var i = 0; i < numberOfBullets; i += 1) {
8670          if (params.renderBullet) {
8671            paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
8672          } else {
8673            paginationHTML += "<" + (params.bulletElement) + " class=\"" + (params.bulletClass) + "\"></" + (params.bulletElement) + ">";
8674          }
8675        }
8676        $el.html(paginationHTML);
8677        swiper.pagination.bullets = $el.find(("." + (params.bulletClass)));
8678      }
8679      if (params.type === 'fraction') {
8680        if (params.renderFraction) {
8681          paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
8682        } else {
8683          paginationHTML = "<span class=\"" + (params.currentClass) + "\"></span>"
8684          + ' / '
8685          + "<span class=\"" + (params.totalClass) + "\"></span>";
8686        }
8687        $el.html(paginationHTML);
8688      }
8689      if (params.type === 'progressbar') {
8690        if (params.renderProgressbar) {
8691          paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
8692        } else {
8693          paginationHTML = "<span class=\"" + (params.progressbarFillClass) + "\"></span>";
8694        }
8695        $el.html(paginationHTML);
8696      }
8697      if (params.type !== 'custom') {
8698        swiper.emit('paginationRender', swiper.pagination.$el[0]);
8699      }
8700    },
8701    init: function init() {
8702      var swiper = this;
8703      var params = swiper.params.pagination;
8704      if (!params.el) { return; }
8705
8706      var $el = $(params.el);
8707      if ($el.length === 0) { return; }
8708
8709      if (
8710        swiper.params.uniqueNavElements
8711        && typeof params.el === 'string'
8712        && $el.length > 1
8713        && swiper.$el.find(params.el).length === 1
8714      ) {
8715        $el = swiper.$el.find(params.el);
8716      }
8717
8718      if (params.type === 'bullets' && params.clickable) {
8719        $el.addClass(params.clickableClass);
8720      }
8721
8722      $el.addClass(params.modifierClass + params.type);
8723
8724      if (params.type === 'bullets' && params.dynamicBullets) {
8725        $el.addClass(("" + (params.modifierClass) + (params.type) + "-dynamic"));
8726        swiper.pagination.dynamicBulletIndex = 0;
8727        if (params.dynamicMainBullets < 1) {
8728          params.dynamicMainBullets = 1;
8729        }
8730      }
8731      if (params.type === 'progressbar' && params.progressbarOpposite) {
8732        $el.addClass(params.progressbarOppositeClass);
8733      }
8734
8735      if (params.clickable) {
8736        $el.on('click', ("." + (params.bulletClass)), function onClick(e) {
8737          e.preventDefault();
8738          var index = $(this).index() * swiper.params.slidesPerGroup;
8739          if (swiper.params.loop) { index += swiper.loopedSlides; }
8740          swiper.slideTo(index);
8741        });
8742      }
8743
8744      Utils.extend(swiper.pagination, {
8745        $el: $el,
8746        el: $el[0],
8747      });
8748    },
8749    destroy: function destroy() {
8750      var swiper = this;
8751      var params = swiper.params.pagination;
8752      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
8753      var $el = swiper.pagination.$el;
8754
8755      $el.removeClass(params.hiddenClass);
8756      $el.removeClass(params.modifierClass + params.type);
8757      if (swiper.pagination.bullets) { swiper.pagination.bullets.removeClass(params.bulletActiveClass); }
8758      if (params.clickable) {
8759        $el.off('click', ("." + (params.bulletClass)));
8760      }
8761    },
8762  };
8763
8764  var Pagination$1 = {
8765    name: 'pagination',
8766    params: {
8767      pagination: {
8768        el: null,
8769        bulletElement: 'span',
8770        clickable: false,
8771        hideOnClick: false,
8772        renderBullet: null,
8773        renderProgressbar: null,
8774        renderFraction: null,
8775        renderCustom: null,
8776        progressbarOpposite: false,
8777        type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'
8778        dynamicBullets: false,
8779        dynamicMainBullets: 1,
8780        formatFractionCurrent: function (number) { return number; },
8781        formatFractionTotal: function (number) { return number; },
8782        bulletClass: 'swiper-pagination-bullet',
8783        bulletActiveClass: 'swiper-pagination-bullet-active',
8784        modifierClass: 'swiper-pagination-', // NEW
8785        currentClass: 'swiper-pagination-current',
8786        totalClass: 'swiper-pagination-total',
8787        hiddenClass: 'swiper-pagination-hidden',
8788        progressbarFillClass: 'swiper-pagination-progressbar-fill',
8789        progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
8790        clickableClass: 'swiper-pagination-clickable', // NEW
8791        lockClass: 'swiper-pagination-lock',
8792      },
8793    },
8794    create: function create() {
8795      var swiper = this;
8796      Utils.extend(swiper, {
8797        pagination: {
8798          init: Pagination.init.bind(swiper),
8799          render: Pagination.render.bind(swiper),
8800          update: Pagination.update.bind(swiper),
8801          destroy: Pagination.destroy.bind(swiper),
8802          dynamicBulletIndex: 0,
8803        },
8804      });
8805    },
8806    on: {
8807      init: function init() {
8808        var swiper = this;
8809        swiper.pagination.init();
8810        swiper.pagination.render();
8811        swiper.pagination.update();
8812      },
8813      activeIndexChange: function activeIndexChange() {
8814        var swiper = this;
8815        if (swiper.params.loop) {
8816          swiper.pagination.update();
8817        } else if (typeof swiper.snapIndex === 'undefined') {
8818          swiper.pagination.update();
8819        }
8820      },
8821      snapIndexChange: function snapIndexChange() {
8822        var swiper = this;
8823        if (!swiper.params.loop) {
8824          swiper.pagination.update();
8825        }
8826      },
8827      slidesLengthChange: function slidesLengthChange() {
8828        var swiper = this;
8829        if (swiper.params.loop) {
8830          swiper.pagination.render();
8831          swiper.pagination.update();
8832        }
8833      },
8834      snapGridLengthChange: function snapGridLengthChange() {
8835        var swiper = this;
8836        if (!swiper.params.loop) {
8837          swiper.pagination.render();
8838          swiper.pagination.update();
8839        }
8840      },
8841      destroy: function destroy() {
8842        var swiper = this;
8843        swiper.pagination.destroy();
8844      },
8845      click: function click(e) {
8846        var swiper = this;
8847        if (
8848          swiper.params.pagination.el
8849          && swiper.params.pagination.hideOnClick
8850          && swiper.pagination.$el.length > 0
8851          && !$(e.target).hasClass(swiper.params.pagination.bulletClass)
8852        ) {
8853          var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
8854          if (isHidden === true) {
8855            swiper.emit('paginationShow', swiper);
8856          } else {
8857            swiper.emit('paginationHide', swiper);
8858          }
8859          swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
8860        }
8861      },
8862    },
8863  };
8864
8865  var Scrollbar = {
8866    setTranslate: function setTranslate() {
8867      var swiper = this;
8868      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
8869      var scrollbar = swiper.scrollbar;
8870      var rtl = swiper.rtlTranslate;
8871      var progress = swiper.progress;
8872      var dragSize = scrollbar.dragSize;
8873      var trackSize = scrollbar.trackSize;
8874      var $dragEl = scrollbar.$dragEl;
8875      var $el = scrollbar.$el;
8876      var params = swiper.params.scrollbar;
8877
8878      var newSize = dragSize;
8879      var newPos = (trackSize - dragSize) * progress;
8880      if (rtl) {
8881        newPos = -newPos;
8882        if (newPos > 0) {
8883          newSize = dragSize - newPos;
8884          newPos = 0;
8885        } else if (-newPos + dragSize > trackSize) {
8886          newSize = trackSize + newPos;
8887        }
8888      } else if (newPos < 0) {
8889        newSize = dragSize + newPos;
8890        newPos = 0;
8891      } else if (newPos + dragSize > trackSize) {
8892        newSize = trackSize - newPos;
8893      }
8894      if (swiper.isHorizontal()) {
8895        if (Support.transforms3d) {
8896          $dragEl.transform(("translate3d(" + newPos + "px, 0, 0)"));
8897        } else {
8898          $dragEl.transform(("translateX(" + newPos + "px)"));
8899        }
8900        $dragEl[0].style.width = newSize + "px";
8901      } else {
8902        if (Support.transforms3d) {
8903          $dragEl.transform(("translate3d(0px, " + newPos + "px, 0)"));
8904        } else {
8905          $dragEl.transform(("translateY(" + newPos + "px)"));
8906        }
8907        $dragEl[0].style.height = newSize + "px";
8908      }
8909      if (params.hide) {
8910        clearTimeout(swiper.scrollbar.timeout);
8911        $el[0].style.opacity = 1;
8912        swiper.scrollbar.timeout = setTimeout(function () {
8913          $el[0].style.opacity = 0;
8914          $el.transition(400);
8915        }, 1000);
8916      }
8917    },
8918    setTransition: function setTransition(duration) {
8919      var swiper = this;
8920      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
8921      swiper.scrollbar.$dragEl.transition(duration);
8922    },
8923    updateSize: function updateSize() {
8924      var swiper = this;
8925      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
8926
8927      var scrollbar = swiper.scrollbar;
8928      var $dragEl = scrollbar.$dragEl;
8929      var $el = scrollbar.$el;
8930
8931      $dragEl[0].style.width = '';
8932      $dragEl[0].style.height = '';
8933      var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
8934
8935      var divider = swiper.size / swiper.virtualSize;
8936      var moveDivider = divider * (trackSize / swiper.size);
8937      var dragSize;
8938      if (swiper.params.scrollbar.dragSize === 'auto') {
8939        dragSize = trackSize * divider;
8940      } else {
8941        dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
8942      }
8943
8944      if (swiper.isHorizontal()) {
8945        $dragEl[0].style.width = dragSize + "px";
8946      } else {
8947        $dragEl[0].style.height = dragSize + "px";
8948      }
8949
8950      if (divider >= 1) {
8951        $el[0].style.display = 'none';
8952      } else {
8953        $el[0].style.display = '';
8954      }
8955      if (swiper.params.scrollbar.hide) {
8956        $el[0].style.opacity = 0;
8957      }
8958      Utils.extend(scrollbar, {
8959        trackSize: trackSize,
8960        divider: divider,
8961        moveDivider: moveDivider,
8962        dragSize: dragSize,
8963      });
8964      scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
8965    },
8966    setDragPosition: function setDragPosition(e) {
8967      var swiper = this;
8968      var scrollbar = swiper.scrollbar;
8969      var rtl = swiper.rtlTranslate;
8970      var $el = scrollbar.$el;
8971      var dragSize = scrollbar.dragSize;
8972      var trackSize = scrollbar.trackSize;
8973
8974      var pointerPosition;
8975      if (swiper.isHorizontal()) {
8976        pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);
8977      } else {
8978        pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);
8979      }
8980      var positionRatio;
8981      positionRatio = ((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragSize / 2)) / (trackSize - dragSize);
8982      positionRatio = Math.max(Math.min(positionRatio, 1), 0);
8983      if (rtl) {
8984        positionRatio = 1 - positionRatio;
8985      }
8986
8987      var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);
8988
8989      swiper.updateProgress(position);
8990      swiper.setTranslate(position);
8991      swiper.updateActiveIndex();
8992      swiper.updateSlidesClasses();
8993    },
8994    onDragStart: function onDragStart(e) {
8995      var swiper = this;
8996      var params = swiper.params.scrollbar;
8997      var scrollbar = swiper.scrollbar;
8998      var $wrapperEl = swiper.$wrapperEl;
8999      var $el = scrollbar.$el;
9000      var $dragEl = scrollbar.$dragEl;
9001      swiper.scrollbar.isTouched = true;
9002      e.preventDefault();
9003      e.stopPropagation();
9004
9005      $wrapperEl.transition(100);
9006      $dragEl.transition(100);
9007      scrollbar.setDragPosition(e);
9008
9009      clearTimeout(swiper.scrollbar.dragTimeout);
9010
9011      $el.transition(0);
9012      if (params.hide) {
9013        $el.css('opacity', 1);
9014      }
9015      swiper.emit('scrollbarDragStart', e);
9016    },
9017    onDragMove: function onDragMove(e) {
9018      var swiper = this;
9019      var scrollbar = swiper.scrollbar;
9020      var $wrapperEl = swiper.$wrapperEl;
9021      var $el = scrollbar.$el;
9022      var $dragEl = scrollbar.$dragEl;
9023
9024      if (!swiper.scrollbar.isTouched) { return; }
9025      if (e.preventDefault) { e.preventDefault(); }
9026      else { e.returnValue = false; }
9027      scrollbar.setDragPosition(e);
9028      $wrapperEl.transition(0);
9029      $el.transition(0);
9030      $dragEl.transition(0);
9031      swiper.emit('scrollbarDragMove', e);
9032    },
9033    onDragEnd: function onDragEnd(e) {
9034      var swiper = this;
9035
9036      var params = swiper.params.scrollbar;
9037      var scrollbar = swiper.scrollbar;
9038      var $el = scrollbar.$el;
9039
9040      if (!swiper.scrollbar.isTouched) { return; }
9041      swiper.scrollbar.isTouched = false;
9042      if (params.hide) {
9043        clearTimeout(swiper.scrollbar.dragTimeout);
9044        swiper.scrollbar.dragTimeout = Utils.nextTick(function () {
9045          $el.css('opacity', 0);
9046          $el.transition(400);
9047        }, 1000);
9048      }
9049      swiper.emit('scrollbarDragEnd', e);
9050      if (params.snapOnRelease) {
9051        swiper.slideToClosest();
9052      }
9053    },
9054    enableDraggable: function enableDraggable() {
9055      var swiper = this;
9056      if (!swiper.params.scrollbar.el) { return; }
9057      var scrollbar = swiper.scrollbar;
9058      var touchEventsTouch = swiper.touchEventsTouch;
9059      var touchEventsDesktop = swiper.touchEventsDesktop;
9060      var params = swiper.params;
9061      var $el = scrollbar.$el;
9062      var target = $el[0];
9063      var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
9064      var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
9065      if (!Support.touch) {
9066        target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
9067        doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
9068        doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
9069      } else {
9070        target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
9071        target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
9072        target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
9073      }
9074    },
9075    disableDraggable: function disableDraggable() {
9076      var swiper = this;
9077      if (!swiper.params.scrollbar.el) { return; }
9078      var scrollbar = swiper.scrollbar;
9079      var touchEventsTouch = swiper.touchEventsTouch;
9080      var touchEventsDesktop = swiper.touchEventsDesktop;
9081      var params = swiper.params;
9082      var $el = scrollbar.$el;
9083      var target = $el[0];
9084      var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
9085      var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
9086      if (!Support.touch) {
9087        target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
9088        doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
9089        doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
9090      } else {
9091        target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
9092        target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
9093        target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
9094      }
9095    },
9096    init: function init() {
9097      var swiper = this;
9098      if (!swiper.params.scrollbar.el) { return; }
9099      var scrollbar = swiper.scrollbar;
9100      var $swiperEl = swiper.$el;
9101      var params = swiper.params.scrollbar;
9102
9103      var $el = $(params.el);
9104      if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
9105        $el = $swiperEl.find(params.el);
9106      }
9107
9108      var $dragEl = $el.find(("." + (swiper.params.scrollbar.dragClass)));
9109      if ($dragEl.length === 0) {
9110        $dragEl = $(("<div class=\"" + (swiper.params.scrollbar.dragClass) + "\"></div>"));
9111        $el.append($dragEl);
9112      }
9113
9114      Utils.extend(scrollbar, {
9115        $el: $el,
9116        el: $el[0],
9117        $dragEl: $dragEl,
9118        dragEl: $dragEl[0],
9119      });
9120
9121      if (params.draggable) {
9122        scrollbar.enableDraggable();
9123      }
9124    },
9125    destroy: function destroy() {
9126      var swiper = this;
9127      swiper.scrollbar.disableDraggable();
9128    },
9129  };
9130
9131  var Scrollbar$1 = {
9132    name: 'scrollbar',
9133    params: {
9134      scrollbar: {
9135        el: null,
9136        dragSize: 'auto',
9137        hide: false,
9138        draggable: false,
9139        snapOnRelease: true,
9140        lockClass: 'swiper-scrollbar-lock',
9141        dragClass: 'swiper-scrollbar-drag',
9142      },
9143    },
9144    create: function create() {
9145      var swiper = this;
9146      Utils.extend(swiper, {
9147        scrollbar: {
9148          init: Scrollbar.init.bind(swiper),
9149          destroy: Scrollbar.destroy.bind(swiper),
9150          updateSize: Scrollbar.updateSize.bind(swiper),
9151          setTranslate: Scrollbar.setTranslate.bind(swiper),
9152          setTransition: Scrollbar.setTransition.bind(swiper),
9153          enableDraggable: Scrollbar.enableDraggable.bind(swiper),
9154          disableDraggable: Scrollbar.disableDraggable.bind(swiper),
9155          setDragPosition: Scrollbar.setDragPosition.bind(swiper),
9156          onDragStart: Scrollbar.onDragStart.bind(swiper),
9157          onDragMove: Scrollbar.onDragMove.bind(swiper),
9158          onDragEnd: Scrollbar.onDragEnd.bind(swiper),
9159          isTouched: false,
9160          timeout: null,
9161          dragTimeout: null,
9162        },
9163      });
9164    },
9165    on: {
9166      init: function init() {
9167        var swiper = this;
9168        swiper.scrollbar.init();
9169        swiper.scrollbar.updateSize();
9170        swiper.scrollbar.setTranslate();
9171      },
9172      update: function update() {
9173        var swiper = this;
9174        swiper.scrollbar.updateSize();
9175      },
9176      resize: function resize() {
9177        var swiper = this;
9178        swiper.scrollbar.updateSize();
9179      },
9180      observerUpdate: function observerUpdate() {
9181        var swiper = this;
9182        swiper.scrollbar.updateSize();
9183      },
9184      setTranslate: function setTranslate() {
9185        var swiper = this;
9186        swiper.scrollbar.setTranslate();
9187      },
9188      setTransition: function setTransition(duration) {
9189        var swiper = this;
9190        swiper.scrollbar.setTransition(duration);
9191      },
9192      destroy: function destroy() {
9193        var swiper = this;
9194        swiper.scrollbar.destroy();
9195      },
9196    },
9197  };
9198
9199  var Parallax = {
9200    setTransform: function setTransform(el, progress) {
9201      var swiper = this;
9202      var rtl = swiper.rtl;
9203
9204      var $el = $(el);
9205      var rtlFactor = rtl ? -1 : 1;
9206
9207      var p = $el.attr('data-swiper-parallax') || '0';
9208      var x = $el.attr('data-swiper-parallax-x');
9209      var y = $el.attr('data-swiper-parallax-y');
9210      var scale = $el.attr('data-swiper-parallax-scale');
9211      var opacity = $el.attr('data-swiper-parallax-opacity');
9212
9213      if (x || y) {
9214        x = x || '0';
9215        y = y || '0';
9216      } else if (swiper.isHorizontal()) {
9217        x = p;
9218        y = '0';
9219      } else {
9220        y = p;
9221        x = '0';
9222      }
9223
9224      if ((x).indexOf('%') >= 0) {
9225        x = (parseInt(x, 10) * progress * rtlFactor) + "%";
9226      } else {
9227        x = (x * progress * rtlFactor) + "px";
9228      }
9229      if ((y).indexOf('%') >= 0) {
9230        y = (parseInt(y, 10) * progress) + "%";
9231      } else {
9232        y = (y * progress) + "px";
9233      }
9234
9235      if (typeof opacity !== 'undefined' && opacity !== null) {
9236        var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));
9237        $el[0].style.opacity = currentOpacity;
9238      }
9239      if (typeof scale === 'undefined' || scale === null) {
9240        $el.transform(("translate3d(" + x + ", " + y + ", 0px)"));
9241      } else {
9242        var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));
9243        $el.transform(("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")"));
9244      }
9245    },
9246    setTranslate: function setTranslate() {
9247      var swiper = this;
9248      var $el = swiper.$el;
9249      var slides = swiper.slides;
9250      var progress = swiper.progress;
9251      var snapGrid = swiper.snapGrid;
9252      $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')
9253        .each(function (index, el) {
9254          swiper.parallax.setTransform(el, progress);
9255        });
9256      slides.each(function (slideIndex, slideEl) {
9257        var slideProgress = slideEl.progress;
9258        if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
9259          slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));
9260        }
9261        slideProgress = Math.min(Math.max(slideProgress, -1), 1);
9262        $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')
9263          .each(function (index, el) {
9264            swiper.parallax.setTransform(el, slideProgress);
9265          });
9266      });
9267    },
9268    setTransition: function setTransition(duration) {
9269      if ( duration === void 0 ) duration = this.params.speed;
9270
9271      var swiper = this;
9272      var $el = swiper.$el;
9273      $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')
9274        .each(function (index, parallaxEl) {
9275          var $parallaxEl = $(parallaxEl);
9276          var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
9277          if (duration === 0) { parallaxDuration = 0; }
9278          $parallaxEl.transition(parallaxDuration);
9279        });
9280    },
9281  };
9282
9283  var Parallax$1 = {
9284    name: 'parallax',
9285    params: {
9286      parallax: {
9287        enabled: false,
9288      },
9289    },
9290    create: function create() {
9291      var swiper = this;
9292      Utils.extend(swiper, {
9293        parallax: {
9294          setTransform: Parallax.setTransform.bind(swiper),
9295          setTranslate: Parallax.setTranslate.bind(swiper),
9296          setTransition: Parallax.setTransition.bind(swiper),
9297        },
9298      });
9299    },
9300    on: {
9301      beforeInit: function beforeInit() {
9302        var swiper = this;
9303        if (!swiper.params.parallax.enabled) { return; }
9304        swiper.params.watchSlidesProgress = true;
9305        swiper.originalParams.watchSlidesProgress = true;
9306      },
9307      init: function init() {
9308        var swiper = this;
9309        if (!swiper.params.parallax.enabled) { return; }
9310        swiper.parallax.setTranslate();
9311      },
9312      setTranslate: function setTranslate() {
9313        var swiper = this;
9314        if (!swiper.params.parallax.enabled) { return; }
9315        swiper.parallax.setTranslate();
9316      },
9317      setTransition: function setTransition(duration) {
9318        var swiper = this;
9319        if (!swiper.params.parallax.enabled) { return; }
9320        swiper.parallax.setTransition(duration);
9321      },
9322    },
9323  };
9324
9325  var Zoom = {
9326    // Calc Scale From Multi-touches
9327    getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {
9328      if (e.targetTouches.length < 2) { return 1; }
9329      var x1 = e.targetTouches[0].pageX;
9330      var y1 = e.targetTouches[0].pageY;
9331      var x2 = e.targetTouches[1].pageX;
9332      var y2 = e.targetTouches[1].pageY;
9333      var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 )));
9334      return distance;
9335    },
9336    // Events
9337    onGestureStart: function onGestureStart(e) {
9338      var swiper = this;
9339      var params = swiper.params.zoom;
9340      var zoom = swiper.zoom;
9341      var gesture = zoom.gesture;
9342      zoom.fakeGestureTouched = false;
9343      zoom.fakeGestureMoved = false;
9344      if (!Support.gestures) {
9345        if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {
9346          return;
9347        }
9348        zoom.fakeGestureTouched = true;
9349        gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
9350      }
9351      if (!gesture.$slideEl || !gesture.$slideEl.length) {
9352        gesture.$slideEl = $(e.target).closest('.swiper-slide');
9353        if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); }
9354        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
9355        gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
9356        gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
9357        if (gesture.$imageWrapEl.length === 0) {
9358          gesture.$imageEl = undefined;
9359          return;
9360        }
9361      }
9362      gesture.$imageEl.transition(0);
9363      swiper.zoom.isScaling = true;
9364    },
9365    onGestureChange: function onGestureChange(e) {
9366      var swiper = this;
9367      var params = swiper.params.zoom;
9368      var zoom = swiper.zoom;
9369      var gesture = zoom.gesture;
9370      if (!Support.gestures) {
9371        if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {
9372          return;
9373        }
9374        zoom.fakeGestureMoved = true;
9375        gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
9376      }
9377      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
9378      if (Support.gestures) {
9379        zoom.scale = e.scale * zoom.currentScale;
9380      } else {
9381        zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;
9382      }
9383      if (zoom.scale > gesture.maxRatio) {
9384        zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 ));
9385      }
9386      if (zoom.scale < params.minRatio) {
9387        zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 ));
9388      }
9389      gesture.$imageEl.transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
9390    },
9391    onGestureEnd: function onGestureEnd(e) {
9392      var swiper = this;
9393      var params = swiper.params.zoom;
9394      var zoom = swiper.zoom;
9395      var gesture = zoom.gesture;
9396      if (!Support.gestures) {
9397        if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
9398          return;
9399        }
9400        if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {
9401          return;
9402        }
9403        zoom.fakeGestureTouched = false;
9404        zoom.fakeGestureMoved = false;
9405      }
9406      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
9407      zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
9408      gesture.$imageEl.transition(swiper.params.speed).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
9409      zoom.currentScale = zoom.scale;
9410      zoom.isScaling = false;
9411      if (zoom.scale === 1) { gesture.$slideEl = undefined; }
9412    },
9413    onTouchStart: function onTouchStart(e) {
9414      var swiper = this;
9415      var zoom = swiper.zoom;
9416      var gesture = zoom.gesture;
9417      var image = zoom.image;
9418      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
9419      if (image.isTouched) { return; }
9420      if (Device.android) { e.preventDefault(); }
9421      image.isTouched = true;
9422      image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
9423      image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
9424    },
9425    onTouchMove: function onTouchMove(e) {
9426      var swiper = this;
9427      var zoom = swiper.zoom;
9428      var gesture = zoom.gesture;
9429      var image = zoom.image;
9430      var velocity = zoom.velocity;
9431      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
9432      swiper.allowClick = false;
9433      if (!image.isTouched || !gesture.$slideEl) { return; }
9434
9435      if (!image.isMoved) {
9436        image.width = gesture.$imageEl[0].offsetWidth;
9437        image.height = gesture.$imageEl[0].offsetHeight;
9438        image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
9439        image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
9440        gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
9441        gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
9442        gesture.$imageWrapEl.transition(0);
9443        if (swiper.rtl) {
9444          image.startX = -image.startX;
9445          image.startY = -image.startY;
9446        }
9447      }
9448      // Define if we need image drag
9449      var scaledWidth = image.width * zoom.scale;
9450      var scaledHeight = image.height * zoom.scale;
9451
9452      if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) { return; }
9453
9454      image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
9455      image.maxX = -image.minX;
9456      image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
9457      image.maxY = -image.minY;
9458
9459      image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
9460      image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
9461
9462      if (!image.isMoved && !zoom.isScaling) {
9463        if (
9464          swiper.isHorizontal()
9465          && (
9466            (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)
9467            || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)
9468          )
9469        ) {
9470          image.isTouched = false;
9471          return;
9472        } if (
9473          !swiper.isHorizontal()
9474          && (
9475            (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)
9476            || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)
9477          )
9478        ) {
9479          image.isTouched = false;
9480          return;
9481        }
9482      }
9483      e.preventDefault();
9484      e.stopPropagation();
9485
9486      image.isMoved = true;
9487      image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;
9488      image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;
9489
9490      if (image.currentX < image.minX) {
9491        image.currentX = (image.minX + 1) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 ));
9492      }
9493      if (image.currentX > image.maxX) {
9494        image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 ));
9495      }
9496
9497      if (image.currentY < image.minY) {
9498        image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 ));
9499      }
9500      if (image.currentY > image.maxY) {
9501        image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 ));
9502      }
9503
9504      // Velocity
9505      if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; }
9506      if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; }
9507      if (!velocity.prevTime) { velocity.prevTime = Date.now(); }
9508      velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
9509      velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
9510      if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) { velocity.x = 0; }
9511      if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) { velocity.y = 0; }
9512      velocity.prevPositionX = image.touchesCurrent.x;
9513      velocity.prevPositionY = image.touchesCurrent.y;
9514      velocity.prevTime = Date.now();
9515
9516      gesture.$imageWrapEl.transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)"));
9517    },
9518    onTouchEnd: function onTouchEnd() {
9519      var swiper = this;
9520      var zoom = swiper.zoom;
9521      var gesture = zoom.gesture;
9522      var image = zoom.image;
9523      var velocity = zoom.velocity;
9524      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
9525      if (!image.isTouched || !image.isMoved) {
9526        image.isTouched = false;
9527        image.isMoved = false;
9528        return;
9529      }
9530      image.isTouched = false;
9531      image.isMoved = false;
9532      var momentumDurationX = 300;
9533      var momentumDurationY = 300;
9534      var momentumDistanceX = velocity.x * momentumDurationX;
9535      var newPositionX = image.currentX + momentumDistanceX;
9536      var momentumDistanceY = velocity.y * momentumDurationY;
9537      var newPositionY = image.currentY + momentumDistanceY;
9538
9539      // Fix duration
9540      if (velocity.x !== 0) { momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); }
9541      if (velocity.y !== 0) { momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); }
9542      var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
9543
9544      image.currentX = newPositionX;
9545      image.currentY = newPositionY;
9546
9547      // Define if we need image drag
9548      var scaledWidth = image.width * zoom.scale;
9549      var scaledHeight = image.height * zoom.scale;
9550      image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
9551      image.maxX = -image.minX;
9552      image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
9553      image.maxY = -image.minY;
9554      image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
9555      image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
9556
9557      gesture.$imageWrapEl.transition(momentumDuration).transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)"));
9558    },
9559    onTransitionEnd: function onTransitionEnd() {
9560      var swiper = this;
9561      var zoom = swiper.zoom;
9562      var gesture = zoom.gesture;
9563      if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
9564        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
9565        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
9566
9567        zoom.scale = 1;
9568        zoom.currentScale = 1;
9569
9570        gesture.$slideEl = undefined;
9571        gesture.$imageEl = undefined;
9572        gesture.$imageWrapEl = undefined;
9573      }
9574    },
9575    // Toggle Zoom
9576    toggle: function toggle(e) {
9577      var swiper = this;
9578      var zoom = swiper.zoom;
9579
9580      if (zoom.scale && zoom.scale !== 1) {
9581        // Zoom Out
9582        zoom.out();
9583      } else {
9584        // Zoom In
9585        zoom.in(e);
9586      }
9587    },
9588    in: function in$1(e) {
9589      var swiper = this;
9590
9591      var zoom = swiper.zoom;
9592      var params = swiper.params.zoom;
9593      var gesture = zoom.gesture;
9594      var image = zoom.image;
9595
9596      if (!gesture.$slideEl) {
9597        gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);
9598        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
9599        gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
9600      }
9601      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
9602
9603      gesture.$slideEl.addClass(("" + (params.zoomedSlideClass)));
9604
9605      var touchX;
9606      var touchY;
9607      var offsetX;
9608      var offsetY;
9609      var diffX;
9610      var diffY;
9611      var translateX;
9612      var translateY;
9613      var imageWidth;
9614      var imageHeight;
9615      var scaledWidth;
9616      var scaledHeight;
9617      var translateMinX;
9618      var translateMinY;
9619      var translateMaxX;
9620      var translateMaxY;
9621      var slideWidth;
9622      var slideHeight;
9623
9624      if (typeof image.touchesStart.x === 'undefined' && e) {
9625        touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
9626        touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
9627      } else {
9628        touchX = image.touchesStart.x;
9629        touchY = image.touchesStart.y;
9630      }
9631
9632      zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
9633      zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
9634      if (e) {
9635        slideWidth = gesture.$slideEl[0].offsetWidth;
9636        slideHeight = gesture.$slideEl[0].offsetHeight;
9637        offsetX = gesture.$slideEl.offset().left;
9638        offsetY = gesture.$slideEl.offset().top;
9639        diffX = (offsetX + (slideWidth / 2)) - touchX;
9640        diffY = (offsetY + (slideHeight / 2)) - touchY;
9641
9642        imageWidth = gesture.$imageEl[0].offsetWidth;
9643        imageHeight = gesture.$imageEl[0].offsetHeight;
9644        scaledWidth = imageWidth * zoom.scale;
9645        scaledHeight = imageHeight * zoom.scale;
9646
9647        translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);
9648        translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);
9649        translateMaxX = -translateMinX;
9650        translateMaxY = -translateMinY;
9651
9652        translateX = diffX * zoom.scale;
9653        translateY = diffY * zoom.scale;
9654
9655        if (translateX < translateMinX) {
9656          translateX = translateMinX;
9657        }
9658        if (translateX > translateMaxX) {
9659          translateX = translateMaxX;
9660        }
9661
9662        if (translateY < translateMinY) {
9663          translateY = translateMinY;
9664        }
9665        if (translateY > translateMaxY) {
9666          translateY = translateMaxY;
9667        }
9668      } else {
9669        translateX = 0;
9670        translateY = 0;
9671      }
9672      gesture.$imageWrapEl.transition(300).transform(("translate3d(" + translateX + "px, " + translateY + "px,0)"));
9673      gesture.$imageEl.transition(300).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
9674    },
9675    out: function out() {
9676      var swiper = this;
9677
9678      var zoom = swiper.zoom;
9679      var params = swiper.params.zoom;
9680      var gesture = zoom.gesture;
9681
9682      if (!gesture.$slideEl) {
9683        gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);
9684        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
9685        gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
9686      }
9687      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
9688
9689      zoom.scale = 1;
9690      zoom.currentScale = 1;
9691      gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
9692      gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
9693      gesture.$slideEl.removeClass(("" + (params.zoomedSlideClass)));
9694      gesture.$slideEl = undefined;
9695    },
9696    // Attach/Detach Events
9697    enable: function enable() {
9698      var swiper = this;
9699      var zoom = swiper.zoom;
9700      if (zoom.enabled) { return; }
9701      zoom.enabled = true;
9702
9703      var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
9704
9705      // Scale image
9706      if (Support.gestures) {
9707        swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);
9708        swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);
9709        swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);
9710      } else if (swiper.touchEvents.start === 'touchstart') {
9711        swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);
9712        swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);
9713        swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);
9714      }
9715
9716      // Move image
9717      swiper.$wrapperEl.on(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove);
9718    },
9719    disable: function disable() {
9720      var swiper = this;
9721      var zoom = swiper.zoom;
9722      if (!zoom.enabled) { return; }
9723
9724      swiper.zoom.enabled = false;
9725
9726      var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
9727
9728      // Scale image
9729      if (Support.gestures) {
9730        swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);
9731        swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);
9732        swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);
9733      } else if (swiper.touchEvents.start === 'touchstart') {
9734        swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);
9735        swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);
9736        swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);
9737      }
9738
9739      // Move image
9740      swiper.$wrapperEl.off(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove);
9741    },
9742  };
9743
9744  var Zoom$1 = {
9745    name: 'zoom',
9746    params: {
9747      zoom: {
9748        enabled: false,
9749        maxRatio: 3,
9750        minRatio: 1,
9751        toggle: true,
9752        containerClass: 'swiper-zoom-container',
9753        zoomedSlideClass: 'swiper-slide-zoomed',
9754      },
9755    },
9756    create: function create() {
9757      var swiper = this;
9758      var zoom = {
9759        enabled: false,
9760        scale: 1,
9761        currentScale: 1,
9762        isScaling: false,
9763        gesture: {
9764          $slideEl: undefined,
9765          slideWidth: undefined,
9766          slideHeight: undefined,
9767          $imageEl: undefined,
9768          $imageWrapEl: undefined,
9769          maxRatio: 3,
9770        },
9771        image: {
9772          isTouched: undefined,
9773          isMoved: undefined,
9774          currentX: undefined,
9775          currentY: undefined,
9776          minX: undefined,
9777          minY: undefined,
9778          maxX: undefined,
9779          maxY: undefined,
9780          width: undefined,
9781          height: undefined,
9782          startX: undefined,
9783          startY: undefined,
9784          touchesStart: {},
9785          touchesCurrent: {},
9786        },
9787        velocity: {
9788          x: undefined,
9789          y: undefined,
9790          prevPositionX: undefined,
9791          prevPositionY: undefined,
9792          prevTime: undefined,
9793        },
9794      };
9795
9796      ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) {
9797        zoom[methodName] = Zoom[methodName].bind(swiper);
9798      });
9799      Utils.extend(swiper, {
9800        zoom: zoom,
9801      });
9802
9803      var scale = 1;
9804      Object.defineProperty(swiper.zoom, 'scale', {
9805        get: function get() {
9806          return scale;
9807        },
9808        set: function set(value) {
9809          if (scale !== value) {
9810            var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
9811            var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
9812            swiper.emit('zoomChange', value, imageEl, slideEl);
9813          }
9814          scale = value;
9815        },
9816      });
9817    },
9818    on: {
9819      init: function init() {
9820        var swiper = this;
9821        if (swiper.params.zoom.enabled) {
9822          swiper.zoom.enable();
9823        }
9824      },
9825      destroy: function destroy() {
9826        var swiper = this;
9827        swiper.zoom.disable();
9828      },
9829      touchStart: function touchStart(e) {
9830        var swiper = this;
9831        if (!swiper.zoom.enabled) { return; }
9832        swiper.zoom.onTouchStart(e);
9833      },
9834      touchEnd: function touchEnd(e) {
9835        var swiper = this;
9836        if (!swiper.zoom.enabled) { return; }
9837        swiper.zoom.onTouchEnd(e);
9838      },
9839      doubleTap: function doubleTap(e) {
9840        var swiper = this;
9841        if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
9842          swiper.zoom.toggle(e);
9843        }
9844      },
9845      transitionEnd: function transitionEnd() {
9846        var swiper = this;
9847        if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
9848          swiper.zoom.onTransitionEnd();
9849        }
9850      },
9851    },
9852  };
9853
9854  var Lazy = {
9855    loadInSlide: function loadInSlide(index, loadInDuplicate) {
9856      if ( loadInDuplicate === void 0 ) loadInDuplicate = true;
9857
9858      var swiper = this;
9859      var params = swiper.params.lazy;
9860      if (typeof index === 'undefined') { return; }
9861      if (swiper.slides.length === 0) { return; }
9862      var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
9863
9864      var $slideEl = isVirtual
9865        ? swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]"))
9866        : swiper.slides.eq(index);
9867
9868      var $images = $slideEl.find(("." + (params.elementClass) + ":not(." + (params.loadedClass) + "):not(." + (params.loadingClass) + ")"));
9869      if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
9870        $images = $images.add($slideEl[0]);
9871      }
9872      if ($images.length === 0) { return; }
9873
9874      $images.each(function (imageIndex, imageEl) {
9875        var $imageEl = $(imageEl);
9876        $imageEl.addClass(params.loadingClass);
9877
9878        var background = $imageEl.attr('data-background');
9879        var src = $imageEl.attr('data-src');
9880        var srcset = $imageEl.attr('data-srcset');
9881        var sizes = $imageEl.attr('data-sizes');
9882
9883        swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () {
9884          if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; }
9885          if (background) {
9886            $imageEl.css('background-image', ("url(\"" + background + "\")"));
9887            $imageEl.removeAttr('data-background');
9888          } else {
9889            if (srcset) {
9890              $imageEl.attr('srcset', srcset);
9891              $imageEl.removeAttr('data-srcset');
9892            }
9893            if (sizes) {
9894              $imageEl.attr('sizes', sizes);
9895              $imageEl.removeAttr('data-sizes');
9896            }
9897            if (src) {
9898              $imageEl.attr('src', src);
9899              $imageEl.removeAttr('data-src');
9900            }
9901          }
9902
9903          $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
9904          $slideEl.find(("." + (params.preloaderClass))).remove();
9905          if (swiper.params.loop && loadInDuplicate) {
9906            var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
9907            if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
9908              var originalSlide = swiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + (swiper.params.slideDuplicateClass) + ")"));
9909              swiper.lazy.loadInSlide(originalSlide.index(), false);
9910            } else {
9911              var duplicatedSlide = swiper.$wrapperEl.children(("." + (swiper.params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]"));
9912              swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
9913            }
9914          }
9915          swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
9916        });
9917
9918        swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
9919      });
9920    },
9921    load: function load() {
9922      var swiper = this;
9923      var $wrapperEl = swiper.$wrapperEl;
9924      var swiperParams = swiper.params;
9925      var slides = swiper.slides;
9926      var activeIndex = swiper.activeIndex;
9927      var isVirtual = swiper.virtual && swiperParams.virtual.enabled;
9928      var params = swiperParams.lazy;
9929
9930      var slidesPerView = swiperParams.slidesPerView;
9931      if (slidesPerView === 'auto') {
9932        slidesPerView = 0;
9933      }
9934
9935      function slideExist(index) {
9936        if (isVirtual) {
9937          if ($wrapperEl.children(("." + (swiperParams.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")).length) {
9938            return true;
9939          }
9940        } else if (slides[index]) { return true; }
9941        return false;
9942      }
9943      function slideIndex(slideEl) {
9944        if (isVirtual) {
9945          return $(slideEl).attr('data-swiper-slide-index');
9946        }
9947        return $(slideEl).index();
9948      }
9949
9950      if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; }
9951      if (swiper.params.watchSlidesVisibility) {
9952        $wrapperEl.children(("." + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) {
9953          var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();
9954          swiper.lazy.loadInSlide(index);
9955        });
9956      } else if (slidesPerView > 1) {
9957        for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
9958          if (slideExist(i)) { swiper.lazy.loadInSlide(i); }
9959        }
9960      } else {
9961        swiper.lazy.loadInSlide(activeIndex);
9962      }
9963      if (params.loadPrevNext) {
9964        if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {
9965          var amount = params.loadPrevNextAmount;
9966          var spv = slidesPerView;
9967          var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
9968          var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);
9969          // Next Slides
9970          for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) {
9971            if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); }
9972          }
9973          // Prev Slides
9974          for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {
9975            if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); }
9976          }
9977        } else {
9978          var nextSlide = $wrapperEl.children(("." + (swiperParams.slideNextClass)));
9979          if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); }
9980
9981          var prevSlide = $wrapperEl.children(("." + (swiperParams.slidePrevClass)));
9982          if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); }
9983        }
9984      }
9985    },
9986  };
9987
9988  var Lazy$1 = {
9989    name: 'lazy',
9990    params: {
9991      lazy: {
9992        enabled: false,
9993        loadPrevNext: false,
9994        loadPrevNextAmount: 1,
9995        loadOnTransitionStart: false,
9996
9997        elementClass: 'swiper-lazy',
9998        loadingClass: 'swiper-lazy-loading',
9999        loadedClass: 'swiper-lazy-loaded',
10000        preloaderClass: 'swiper-lazy-preloader',
10001      },
10002    },
10003    create: function create() {
10004      var swiper = this;
10005      Utils.extend(swiper, {
10006        lazy: {
10007          initialImageLoaded: false,
10008          load: Lazy.load.bind(swiper),
10009          loadInSlide: Lazy.loadInSlide.bind(swiper),
10010        },
10011      });
10012    },
10013    on: {
10014      beforeInit: function beforeInit() {
10015        var swiper = this;
10016        if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
10017          swiper.params.preloadImages = false;
10018        }
10019      },
10020      init: function init() {
10021        var swiper = this;
10022        if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
10023          swiper.lazy.load();
10024        }
10025      },
10026      scroll: function scroll() {
10027        var swiper = this;
10028        if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
10029          swiper.lazy.load();
10030        }
10031      },
10032      resize: function resize() {
10033        var swiper = this;
10034        if (swiper.params.lazy.enabled) {
10035          swiper.lazy.load();
10036        }
10037      },
10038      scrollbarDragMove: function scrollbarDragMove() {
10039        var swiper = this;
10040        if (swiper.params.lazy.enabled) {
10041          swiper.lazy.load();
10042        }
10043      },
10044      transitionStart: function transitionStart() {
10045        var swiper = this;
10046        if (swiper.params.lazy.enabled) {
10047          if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {
10048            swiper.lazy.load();
10049          }
10050        }
10051      },
10052      transitionEnd: function transitionEnd() {
10053        var swiper = this;
10054        if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
10055          swiper.lazy.load();
10056        }
10057      },
10058    },
10059  };
10060
10061  /* eslint no-bitwise: ["error", { "allow": [">>"] }] */
10062
10063  var Controller = {
10064    LinearSpline: function LinearSpline(x, y) {
10065      var binarySearch = (function search() {
10066        var maxIndex;
10067        var minIndex;
10068        var guess;
10069        return function (array, val) {
10070          minIndex = -1;
10071          maxIndex = array.length;
10072          while (maxIndex - minIndex > 1) {
10073            guess = maxIndex + minIndex >> 1;
10074            if (array[guess] <= val) {
10075              minIndex = guess;
10076            } else {
10077              maxIndex = guess;
10078            }
10079          }
10080          return maxIndex;
10081        };
10082      }());
10083      this.x = x;
10084      this.y = y;
10085      this.lastIndex = x.length - 1;
10086      // Given an x value (x2), return the expected y2 value:
10087      // (x1,y1) is the known point before given value,
10088      // (x3,y3) is the known point after given value.
10089      var i1;
10090      var i3;
10091
10092      this.interpolate = function interpolate(x2) {
10093        if (!x2) { return 0; }
10094
10095        // Get the indexes of x1 and x3 (the array indexes before and after given x2):
10096        i3 = binarySearch(this.x, x2);
10097        i1 = i3 - 1;
10098
10099        // We have our indexes i1 & i3, so we can calculate already:
10100        // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
10101        return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];
10102      };
10103      return this;
10104    },
10105    // xxx: for now i will just save one spline function to to
10106    getInterpolateFunction: function getInterpolateFunction(c) {
10107      var swiper = this;
10108      if (!swiper.controller.spline) {
10109        swiper.controller.spline = swiper.params.loop
10110          ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)
10111          : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
10112      }
10113    },
10114    setTranslate: function setTranslate(setTranslate$1, byController) {
10115      var swiper = this;
10116      var controlled = swiper.controller.control;
10117      var multiplier;
10118      var controlledTranslate;
10119      function setControlledTranslate(c) {
10120        // this will create an Interpolate function based on the snapGrids
10121        // x is the Grid of the scrolled scroller and y will be the controlled scroller
10122        // it makes sense to create this only once and recall it for the interpolation
10123        // the function does a lot of value caching for performance
10124        var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
10125        if (swiper.params.controller.by === 'slide') {
10126          swiper.controller.getInterpolateFunction(c);
10127          // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
10128          // but it did not work out
10129          controlledTranslate = -swiper.controller.spline.interpolate(-translate);
10130        }
10131
10132        if (!controlledTranslate || swiper.params.controller.by === 'container') {
10133          multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
10134          controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();
10135        }
10136
10137        if (swiper.params.controller.inverse) {
10138          controlledTranslate = c.maxTranslate() - controlledTranslate;
10139        }
10140        c.updateProgress(controlledTranslate);
10141        c.setTranslate(controlledTranslate, swiper);
10142        c.updateActiveIndex();
10143        c.updateSlidesClasses();
10144      }
10145      if (Array.isArray(controlled)) {
10146        for (var i = 0; i < controlled.length; i += 1) {
10147          if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
10148            setControlledTranslate(controlled[i]);
10149          }
10150        }
10151      } else if (controlled instanceof Swiper && byController !== controlled) {
10152        setControlledTranslate(controlled);
10153      }
10154    },
10155    setTransition: function setTransition(duration, byController) {
10156      var swiper = this;
10157      var controlled = swiper.controller.control;
10158      var i;
10159      function setControlledTransition(c) {
10160        c.setTransition(duration, swiper);
10161        if (duration !== 0) {
10162          c.transitionStart();
10163          if (c.params.autoHeight) {
10164            Utils.nextTick(function () {
10165              c.updateAutoHeight();
10166            });
10167          }
10168          c.$wrapperEl.transitionEnd(function () {
10169            if (!controlled) { return; }
10170            if (c.params.loop && swiper.params.controller.by === 'slide') {
10171              c.loopFix();
10172            }
10173            c.transitionEnd();
10174          });
10175        }
10176      }
10177      if (Array.isArray(controlled)) {
10178        for (i = 0; i < controlled.length; i += 1) {
10179          if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
10180            setControlledTransition(controlled[i]);
10181          }
10182        }
10183      } else if (controlled instanceof Swiper && byController !== controlled) {
10184        setControlledTransition(controlled);
10185      }
10186    },
10187  };
10188  var Controller$1 = {
10189    name: 'controller',
10190    params: {
10191      controller: {
10192        control: undefined,
10193        inverse: false,
10194        by: 'slide', // or 'container'
10195      },
10196    },
10197    create: function create() {
10198      var swiper = this;
10199      Utils.extend(swiper, {
10200        controller: {
10201          control: swiper.params.controller.control,
10202          getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),
10203          setTranslate: Controller.setTranslate.bind(swiper),
10204          setTransition: Controller.setTransition.bind(swiper),
10205        },
10206      });
10207    },
10208    on: {
10209      update: function update() {
10210        var swiper = this;
10211        if (!swiper.controller.control) { return; }
10212        if (swiper.controller.spline) {
10213          swiper.controller.spline = undefined;
10214          delete swiper.controller.spline;
10215        }
10216      },
10217      resize: function resize() {
10218        var swiper = this;
10219        if (!swiper.controller.control) { return; }
10220        if (swiper.controller.spline) {
10221          swiper.controller.spline = undefined;
10222          delete swiper.controller.spline;
10223        }
10224      },
10225      observerUpdate: function observerUpdate() {
10226        var swiper = this;
10227        if (!swiper.controller.control) { return; }
10228        if (swiper.controller.spline) {
10229          swiper.controller.spline = undefined;
10230          delete swiper.controller.spline;
10231        }
10232      },
10233      setTranslate: function setTranslate(translate, byController) {
10234        var swiper = this;
10235        if (!swiper.controller.control) { return; }
10236        swiper.controller.setTranslate(translate, byController);
10237      },
10238      setTransition: function setTransition(duration, byController) {
10239        var swiper = this;
10240        if (!swiper.controller.control) { return; }
10241        swiper.controller.setTransition(duration, byController);
10242      },
10243    },
10244  };
10245
10246  var a11y = {
10247    makeElFocusable: function makeElFocusable($el) {
10248      $el.attr('tabIndex', '0');
10249      return $el;
10250    },
10251    addElRole: function addElRole($el, role) {
10252      $el.attr('role', role);
10253      return $el;
10254    },
10255    addElLabel: function addElLabel($el, label) {
10256      $el.attr('aria-label', label);
10257      return $el;
10258    },
10259    disableEl: function disableEl($el) {
10260      $el.attr('aria-disabled', true);
10261      return $el;
10262    },
10263    enableEl: function enableEl($el) {
10264      $el.attr('aria-disabled', false);
10265      return $el;
10266    },
10267    onEnterKey: function onEnterKey(e) {
10268      var swiper = this;
10269      var params = swiper.params.a11y;
10270      if (e.keyCode !== 13) { return; }
10271      var $targetEl = $(e.target);
10272      if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
10273        if (!(swiper.isEnd && !swiper.params.loop)) {
10274          swiper.slideNext();
10275        }
10276        if (swiper.isEnd) {
10277          swiper.a11y.notify(params.lastSlideMessage);
10278        } else {
10279          swiper.a11y.notify(params.nextSlideMessage);
10280        }
10281      }
10282      if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
10283        if (!(swiper.isBeginning && !swiper.params.loop)) {
10284          swiper.slidePrev();
10285        }
10286        if (swiper.isBeginning) {
10287          swiper.a11y.notify(params.firstSlideMessage);
10288        } else {
10289          swiper.a11y.notify(params.prevSlideMessage);
10290        }
10291      }
10292      if (swiper.pagination && $targetEl.is(("." + (swiper.params.pagination.bulletClass)))) {
10293        $targetEl[0].click();
10294      }
10295    },
10296    notify: function notify(message) {
10297      var swiper = this;
10298      var notification = swiper.a11y.liveRegion;
10299      if (notification.length === 0) { return; }
10300      notification.html('');
10301      notification.html(message);
10302    },
10303    updateNavigation: function updateNavigation() {
10304      var swiper = this;
10305
10306      if (swiper.params.loop) { return; }
10307      var ref = swiper.navigation;
10308      var $nextEl = ref.$nextEl;
10309      var $prevEl = ref.$prevEl;
10310
10311      if ($prevEl && $prevEl.length > 0) {
10312        if (swiper.isBeginning) {
10313          swiper.a11y.disableEl($prevEl);
10314        } else {
10315          swiper.a11y.enableEl($prevEl);
10316        }
10317      }
10318      if ($nextEl && $nextEl.length > 0) {
10319        if (swiper.isEnd) {
10320          swiper.a11y.disableEl($nextEl);
10321        } else {
10322          swiper.a11y.enableEl($nextEl);
10323        }
10324      }
10325    },
10326    updatePagination: function updatePagination() {
10327      var swiper = this;
10328      var params = swiper.params.a11y;
10329      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
10330        swiper.pagination.bullets.each(function (bulletIndex, bulletEl) {
10331          var $bulletEl = $(bulletEl);
10332          swiper.a11y.makeElFocusable($bulletEl);
10333          swiper.a11y.addElRole($bulletEl, 'button');
10334          swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));
10335        });
10336      }
10337    },
10338    init: function init() {
10339      var swiper = this;
10340
10341      swiper.$el.append(swiper.a11y.liveRegion);
10342
10343      // Navigation
10344      var params = swiper.params.a11y;
10345      var $nextEl;
10346      var $prevEl;
10347      if (swiper.navigation && swiper.navigation.$nextEl) {
10348        $nextEl = swiper.navigation.$nextEl;
10349      }
10350      if (swiper.navigation && swiper.navigation.$prevEl) {
10351        $prevEl = swiper.navigation.$prevEl;
10352      }
10353      if ($nextEl) {
10354        swiper.a11y.makeElFocusable($nextEl);
10355        swiper.a11y.addElRole($nextEl, 'button');
10356        swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
10357        $nextEl.on('keydown', swiper.a11y.onEnterKey);
10358      }
10359      if ($prevEl) {
10360        swiper.a11y.makeElFocusable($prevEl);
10361        swiper.a11y.addElRole($prevEl, 'button');
10362        swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
10363        $prevEl.on('keydown', swiper.a11y.onEnterKey);
10364      }
10365
10366      // Pagination
10367      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
10368        swiper.pagination.$el.on('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);
10369      }
10370    },
10371    destroy: function destroy() {
10372      var swiper = this;
10373      if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); }
10374
10375      var $nextEl;
10376      var $prevEl;
10377      if (swiper.navigation && swiper.navigation.$nextEl) {
10378        $nextEl = swiper.navigation.$nextEl;
10379      }
10380      if (swiper.navigation && swiper.navigation.$prevEl) {
10381        $prevEl = swiper.navigation.$prevEl;
10382      }
10383      if ($nextEl) {
10384        $nextEl.off('keydown', swiper.a11y.onEnterKey);
10385      }
10386      if ($prevEl) {
10387        $prevEl.off('keydown', swiper.a11y.onEnterKey);
10388      }
10389
10390      // Pagination
10391      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
10392        swiper.pagination.$el.off('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);
10393      }
10394    },
10395  };
10396  var A11y = {
10397    name: 'a11y',
10398    params: {
10399      a11y: {
10400        enabled: true,
10401        notificationClass: 'swiper-notification',
10402        prevSlideMessage: 'Previous slide',
10403        nextSlideMessage: 'Next slide',
10404        firstSlideMessage: 'This is the first slide',
10405        lastSlideMessage: 'This is the last slide',
10406        paginationBulletMessage: 'Go to slide {{index}}',
10407      },
10408    },
10409    create: function create() {
10410      var swiper = this;
10411      Utils.extend(swiper, {
10412        a11y: {
10413          liveRegion: $(("<span class=\"" + (swiper.params.a11y.notificationClass) + "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")),
10414        },
10415      });
10416      Object.keys(a11y).forEach(function (methodName) {
10417        swiper.a11y[methodName] = a11y[methodName].bind(swiper);
10418      });
10419    },
10420    on: {
10421      init: function init() {
10422        var swiper = this;
10423        if (!swiper.params.a11y.enabled) { return; }
10424        swiper.a11y.init();
10425        swiper.a11y.updateNavigation();
10426      },
10427      toEdge: function toEdge() {
10428        var swiper = this;
10429        if (!swiper.params.a11y.enabled) { return; }
10430        swiper.a11y.updateNavigation();
10431      },
10432      fromEdge: function fromEdge() {
10433        var swiper = this;
10434        if (!swiper.params.a11y.enabled) { return; }
10435        swiper.a11y.updateNavigation();
10436      },
10437      paginationUpdate: function paginationUpdate() {
10438        var swiper = this;
10439        if (!swiper.params.a11y.enabled) { return; }
10440        swiper.a11y.updatePagination();
10441      },
10442      destroy: function destroy() {
10443        var swiper = this;
10444        if (!swiper.params.a11y.enabled) { return; }
10445        swiper.a11y.destroy();
10446      },
10447    },
10448  };
10449
10450  var History = {
10451    init: function init() {
10452      var swiper = this;
10453      if (!swiper.params.history) { return; }
10454      if (!win.history || !win.history.pushState) {
10455        swiper.params.history.enabled = false;
10456        swiper.params.hashNavigation.enabled = true;
10457        return;
10458      }
10459      var history = swiper.history;
10460      history.initialized = true;
10461      history.paths = History.getPathValues();
10462      if (!history.paths.key && !history.paths.value) { return; }
10463      history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
10464      if (!swiper.params.history.replaceState) {
10465        win.addEventListener('popstate', swiper.history.setHistoryPopState);
10466      }
10467    },
10468    destroy: function destroy() {
10469      var swiper = this;
10470      if (!swiper.params.history.replaceState) {
10471        win.removeEventListener('popstate', swiper.history.setHistoryPopState);
10472      }
10473    },
10474    setHistoryPopState: function setHistoryPopState() {
10475      var swiper = this;
10476      swiper.history.paths = History.getPathValues();
10477      swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
10478    },
10479    getPathValues: function getPathValues() {
10480      var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; });
10481      var total = pathArray.length;
10482      var key = pathArray[total - 2];
10483      var value = pathArray[total - 1];
10484      return { key: key, value: value };
10485    },
10486    setHistory: function setHistory(key, index) {
10487      var swiper = this;
10488      if (!swiper.history.initialized || !swiper.params.history.enabled) { return; }
10489      var slide = swiper.slides.eq(index);
10490      var value = History.slugify(slide.attr('data-history'));
10491      if (!win.location.pathname.includes(key)) {
10492        value = key + "/" + value;
10493      }
10494      var currentState = win.history.state;
10495      if (currentState && currentState.value === value) {
10496        return;
10497      }
10498      if (swiper.params.history.replaceState) {
10499        win.history.replaceState({ value: value }, null, value);
10500      } else {
10501        win.history.pushState({ value: value }, null, value);
10502      }
10503    },
10504    slugify: function slugify(text) {
10505      return text.toString()
10506        .replace(/\s+/g, '-')
10507        .replace(/[^\w-]+/g, '')
10508        .replace(/--+/g, '-')
10509        .replace(/^-+/, '')
10510        .replace(/-+$/, '');
10511    },
10512    scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {
10513      var swiper = this;
10514      if (value) {
10515        for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
10516          var slide = swiper.slides.eq(i);
10517          var slideHistory = History.slugify(slide.attr('data-history'));
10518          if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
10519            var index = slide.index();
10520            swiper.slideTo(index, speed, runCallbacks);
10521          }
10522        }
10523      } else {
10524        swiper.slideTo(0, speed, runCallbacks);
10525      }
10526    },
10527  };
10528
10529  var History$1 = {
10530    name: 'history',
10531    params: {
10532      history: {
10533        enabled: false,
10534        replaceState: false,
10535        key: 'slides',
10536      },
10537    },
10538    create: function create() {
10539      var swiper = this;
10540      Utils.extend(swiper, {
10541        history: {
10542          init: History.init.bind(swiper),
10543          setHistory: History.setHistory.bind(swiper),
10544          setHistoryPopState: History.setHistoryPopState.bind(swiper),
10545          scrollToSlide: History.scrollToSlide.bind(swiper),
10546          destroy: History.destroy.bind(swiper),
10547        },
10548      });
10549    },
10550    on: {
10551      init: function init() {
10552        var swiper = this;
10553        if (swiper.params.history.enabled) {
10554          swiper.history.init();
10555        }
10556      },
10557      destroy: function destroy() {
10558        var swiper = this;
10559        if (swiper.params.history.enabled) {
10560          swiper.history.destroy();
10561        }
10562      },
10563      transitionEnd: function transitionEnd() {
10564        var swiper = this;
10565        if (swiper.history.initialized) {
10566          swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
10567        }
10568      },
10569    },
10570  };
10571
10572  var HashNavigation = {
10573    onHashCange: function onHashCange() {
10574      var swiper = this;
10575      var newHash = doc.location.hash.replace('#', '');
10576      var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
10577      if (newHash !== activeSlideHash) {
10578        var newIndex = swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-hash=\"" + newHash + "\"]")).index();
10579        if (typeof newIndex === 'undefined') { return; }
10580        swiper.slideTo(newIndex);
10581      }
10582    },
10583    setHash: function setHash() {
10584      var swiper = this;
10585      if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) { return; }
10586      if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) {
10587        win.history.replaceState(null, null, (("#" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash'))) || ''));
10588      } else {
10589        var slide = swiper.slides.eq(swiper.activeIndex);
10590        var hash = slide.attr('data-hash') || slide.attr('data-history');
10591        doc.location.hash = hash || '';
10592      }
10593    },
10594    init: function init() {
10595      var swiper = this;
10596      if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) { return; }
10597      swiper.hashNavigation.initialized = true;
10598      var hash = doc.location.hash.replace('#', '');
10599      if (hash) {
10600        var speed = 0;
10601        for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
10602          var slide = swiper.slides.eq(i);
10603          var slideHash = slide.attr('data-hash') || slide.attr('data-history');
10604          if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
10605            var index = slide.index();
10606            swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
10607          }
10608        }
10609      }
10610      if (swiper.params.hashNavigation.watchState) {
10611        $(win).on('hashchange', swiper.hashNavigation.onHashCange);
10612      }
10613    },
10614    destroy: function destroy() {
10615      var swiper = this;
10616      if (swiper.params.hashNavigation.watchState) {
10617        $(win).off('hashchange', swiper.hashNavigation.onHashCange);
10618      }
10619    },
10620  };
10621  var HashNavigation$1 = {
10622    name: 'hash-navigation',
10623    params: {
10624      hashNavigation: {
10625        enabled: false,
10626        replaceState: false,
10627        watchState: false,
10628      },
10629    },
10630    create: function create() {
10631      var swiper = this;
10632      Utils.extend(swiper, {
10633        hashNavigation: {
10634          initialized: false,
10635          init: HashNavigation.init.bind(swiper),
10636          destroy: HashNavigation.destroy.bind(swiper),
10637          setHash: HashNavigation.setHash.bind(swiper),
10638          onHashCange: HashNavigation.onHashCange.bind(swiper),
10639        },
10640      });
10641    },
10642    on: {
10643      init: function init() {
10644        var swiper = this;
10645        if (swiper.params.hashNavigation.enabled) {
10646          swiper.hashNavigation.init();
10647        }
10648      },
10649      destroy: function destroy() {
10650        var swiper = this;
10651        if (swiper.params.hashNavigation.enabled) {
10652          swiper.hashNavigation.destroy();
10653        }
10654      },
10655      transitionEnd: function transitionEnd() {
10656        var swiper = this;
10657        if (swiper.hashNavigation.initialized) {
10658          swiper.hashNavigation.setHash();
10659        }
10660      },
10661    },
10662  };
10663
10664  /* eslint no-underscore-dangle: "off" */
10665
10666  var Autoplay = {
10667    run: function run() {
10668      var swiper = this;
10669      var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
10670      var delay = swiper.params.autoplay.delay;
10671      if ($activeSlideEl.attr('data-swiper-autoplay')) {
10672        delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
10673      }
10674      swiper.autoplay.timeout = Utils.nextTick(function () {
10675        if (swiper.params.autoplay.reverseDirection) {
10676          if (swiper.params.loop) {
10677            swiper.loopFix();
10678            swiper.slidePrev(swiper.params.speed, true, true);
10679            swiper.emit('autoplay');
10680          } else if (!swiper.isBeginning) {
10681            swiper.slidePrev(swiper.params.speed, true, true);
10682            swiper.emit('autoplay');
10683          } else if (!swiper.params.autoplay.stopOnLastSlide) {
10684            swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
10685            swiper.emit('autoplay');
10686          } else {
10687            swiper.autoplay.stop();
10688          }
10689        } else if (swiper.params.loop) {
10690          swiper.loopFix();
10691          swiper.slideNext(swiper.params.speed, true, true);
10692          swiper.emit('autoplay');
10693        } else if (!swiper.isEnd) {
10694          swiper.slideNext(swiper.params.speed, true, true);
10695          swiper.emit('autoplay');
10696        } else if (!swiper.params.autoplay.stopOnLastSlide) {
10697          swiper.slideTo(0, swiper.params.speed, true, true);
10698          swiper.emit('autoplay');
10699        } else {
10700          swiper.autoplay.stop();
10701        }
10702      }, delay);
10703    },
10704    start: function start() {
10705      var swiper = this;
10706      if (typeof swiper.autoplay.timeout !== 'undefined') { return false; }
10707      if (swiper.autoplay.running) { return false; }
10708      swiper.autoplay.running = true;
10709      swiper.emit('autoplayStart');
10710      swiper.autoplay.run();
10711      return true;
10712    },
10713    stop: function stop() {
10714      var swiper = this;
10715      if (!swiper.autoplay.running) { return false; }
10716      if (typeof swiper.autoplay.timeout === 'undefined') { return false; }
10717
10718      if (swiper.autoplay.timeout) {
10719        clearTimeout(swiper.autoplay.timeout);
10720        swiper.autoplay.timeout = undefined;
10721      }
10722      swiper.autoplay.running = false;
10723      swiper.emit('autoplayStop');
10724      return true;
10725    },
10726    pause: function pause(speed) {
10727      var swiper = this;
10728      if (!swiper.autoplay.running) { return; }
10729      if (swiper.autoplay.paused) { return; }
10730      if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); }
10731      swiper.autoplay.paused = true;
10732      if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
10733        swiper.autoplay.paused = false;
10734        swiper.autoplay.run();
10735      } else {
10736        swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
10737        swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
10738      }
10739    },
10740  };
10741
10742  var Autoplay$1 = {
10743    name: 'autoplay',
10744    params: {
10745      autoplay: {
10746        enabled: false,
10747        delay: 3000,
10748        waitForTransition: true,
10749        disableOnInteraction: true,
10750        stopOnLastSlide: false,
10751        reverseDirection: false,
10752      },
10753    },
10754    create: function create() {
10755      var swiper = this;
10756      Utils.extend(swiper, {
10757        autoplay: {
10758          running: false,
10759          paused: false,
10760          run: Autoplay.run.bind(swiper),
10761          start: Autoplay.start.bind(swiper),
10762          stop: Autoplay.stop.bind(swiper),
10763          pause: Autoplay.pause.bind(swiper),
10764          onTransitionEnd: function onTransitionEnd(e) {
10765            if (!swiper || swiper.destroyed || !swiper.$wrapperEl) { return; }
10766            if (e.target !== this) { return; }
10767            swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
10768            swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
10769            swiper.autoplay.paused = false;
10770            if (!swiper.autoplay.running) {
10771              swiper.autoplay.stop();
10772            } else {
10773              swiper.autoplay.run();
10774            }
10775          },
10776        },
10777      });
10778    },
10779    on: {
10780      init: function init() {
10781        var swiper = this;
10782        if (swiper.params.autoplay.enabled) {
10783          swiper.autoplay.start();
10784        }
10785      },
10786      beforeTransitionStart: function beforeTransitionStart(speed, internal) {
10787        var swiper = this;
10788        if (swiper.autoplay.running) {
10789          if (internal || !swiper.params.autoplay.disableOnInteraction) {
10790            swiper.autoplay.pause(speed);
10791          } else {
10792            swiper.autoplay.stop();
10793          }
10794        }
10795      },
10796      sliderFirstMove: function sliderFirstMove() {
10797        var swiper = this;
10798        if (swiper.autoplay.running) {
10799          if (swiper.params.autoplay.disableOnInteraction) {
10800            swiper.autoplay.stop();
10801          } else {
10802            swiper.autoplay.pause();
10803          }
10804        }
10805      },
10806      destroy: function destroy() {
10807        var swiper = this;
10808        if (swiper.autoplay.running) {
10809          swiper.autoplay.stop();
10810        }
10811      },
10812    },
10813  };
10814
10815  var Fade = {
10816    setTranslate: function setTranslate() {
10817      var swiper = this;
10818      var slides = swiper.slides;
10819      for (var i = 0; i < slides.length; i += 1) {
10820        var $slideEl = swiper.slides.eq(i);
10821        var offset = $slideEl[0].swiperSlideOffset;
10822        var tx = -offset;
10823        if (!swiper.params.virtualTranslate) { tx -= swiper.translate; }
10824        var ty = 0;
10825        if (!swiper.isHorizontal()) {
10826          ty = tx;
10827          tx = 0;
10828        }
10829        var slideOpacity = swiper.params.fadeEffect.crossFade
10830          ? Math.max(1 - Math.abs($slideEl[0].progress), 0)
10831          : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
10832        $slideEl
10833          .css({
10834            opacity: slideOpacity,
10835          })
10836          .transform(("translate3d(" + tx + "px, " + ty + "px, 0px)"));
10837      }
10838    },
10839    setTransition: function setTransition(duration) {
10840      var swiper = this;
10841      var slides = swiper.slides;
10842      var $wrapperEl = swiper.$wrapperEl;
10843      slides.transition(duration);
10844      if (swiper.params.virtualTranslate && duration !== 0) {
10845        var eventTriggered = false;
10846        slides.transitionEnd(function () {
10847          if (eventTriggered) { return; }
10848          if (!swiper || swiper.destroyed) { return; }
10849          eventTriggered = true;
10850          swiper.animating = false;
10851          var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
10852          for (var i = 0; i < triggerEvents.length; i += 1) {
10853            $wrapperEl.trigger(triggerEvents[i]);
10854          }
10855        });
10856      }
10857    },
10858  };
10859
10860  var EffectFade = {
10861    name: 'effect-fade',
10862    params: {
10863      fadeEffect: {
10864        crossFade: false,
10865      },
10866    },
10867    create: function create() {
10868      var swiper = this;
10869      Utils.extend(swiper, {
10870        fadeEffect: {
10871          setTranslate: Fade.setTranslate.bind(swiper),
10872          setTransition: Fade.setTransition.bind(swiper),
10873        },
10874      });
10875    },
10876    on: {
10877      beforeInit: function beforeInit() {
10878        var swiper = this;
10879        if (swiper.params.effect !== 'fade') { return; }
10880        swiper.classNames.push(((swiper.params.containerModifierClass) + "fade"));
10881        var overwriteParams = {
10882          slidesPerView: 1,
10883          slidesPerColumn: 1,
10884          slidesPerGroup: 1,
10885          watchSlidesProgress: true,
10886          spaceBetween: 0,
10887          virtualTranslate: true,
10888        };
10889        Utils.extend(swiper.params, overwriteParams);
10890        Utils.extend(swiper.originalParams, overwriteParams);
10891      },
10892      setTranslate: function setTranslate() {
10893        var swiper = this;
10894        if (swiper.params.effect !== 'fade') { return; }
10895        swiper.fadeEffect.setTranslate();
10896      },
10897      setTransition: function setTransition(duration) {
10898        var swiper = this;
10899        if (swiper.params.effect !== 'fade') { return; }
10900        swiper.fadeEffect.setTransition(duration);
10901      },
10902    },
10903  };
10904
10905  var Cube = {
10906    setTranslate: function setTranslate() {
10907      var swiper = this;
10908      var $el = swiper.$el;
10909      var $wrapperEl = swiper.$wrapperEl;
10910      var slides = swiper.slides;
10911      var swiperWidth = swiper.width;
10912      var swiperHeight = swiper.height;
10913      var rtl = swiper.rtlTranslate;
10914      var swiperSize = swiper.size;
10915      var params = swiper.params.cubeEffect;
10916      var isHorizontal = swiper.isHorizontal();
10917      var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
10918      var wrapperRotate = 0;
10919      var $cubeShadowEl;
10920      if (params.shadow) {
10921        if (isHorizontal) {
10922          $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
10923          if ($cubeShadowEl.length === 0) {
10924            $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
10925            $wrapperEl.append($cubeShadowEl);
10926          }
10927          $cubeShadowEl.css({ height: (swiperWidth + "px") });
10928        } else {
10929          $cubeShadowEl = $el.find('.swiper-cube-shadow');
10930          if ($cubeShadowEl.length === 0) {
10931            $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
10932            $el.append($cubeShadowEl);
10933          }
10934        }
10935      }
10936      for (var i = 0; i < slides.length; i += 1) {
10937        var $slideEl = slides.eq(i);
10938        var slideIndex = i;
10939        if (isVirtual) {
10940          slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
10941        }
10942        var slideAngle = slideIndex * 90;
10943        var round = Math.floor(slideAngle / 360);
10944        if (rtl) {
10945          slideAngle = -slideAngle;
10946          round = Math.floor(-slideAngle / 360);
10947        }
10948        var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
10949        var tx = 0;
10950        var ty = 0;
10951        var tz = 0;
10952        if (slideIndex % 4 === 0) {
10953          tx = -round * 4 * swiperSize;
10954          tz = 0;
10955        } else if ((slideIndex - 1) % 4 === 0) {
10956          tx = 0;
10957          tz = -round * 4 * swiperSize;
10958        } else if ((slideIndex - 2) % 4 === 0) {
10959          tx = swiperSize + (round * 4 * swiperSize);
10960          tz = swiperSize;
10961        } else if ((slideIndex - 3) % 4 === 0) {
10962          tx = -swiperSize;
10963          tz = (3 * swiperSize) + (swiperSize * 4 * round);
10964        }
10965        if (rtl) {
10966          tx = -tx;
10967        }
10968
10969        if (!isHorizontal) {
10970          ty = tx;
10971          tx = 0;
10972        }
10973
10974        var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)";
10975        if (progress <= 1 && progress > -1) {
10976          wrapperRotate = (slideIndex * 90) + (progress * 90);
10977          if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); }
10978        }
10979        $slideEl.transform(transform);
10980        if (params.slideShadows) {
10981          // Set shadows
10982          var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
10983          var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
10984          if (shadowBefore.length === 0) {
10985            shadowBefore = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>"));
10986            $slideEl.append(shadowBefore);
10987          }
10988          if (shadowAfter.length === 0) {
10989            shadowAfter = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>"));
10990            $slideEl.append(shadowAfter);
10991          }
10992          if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }
10993          if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }
10994        }
10995      }
10996      $wrapperEl.css({
10997        '-webkit-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
10998        '-moz-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
10999        '-ms-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
11000        'transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
11001      });
11002
11003      if (params.shadow) {
11004        if (isHorizontal) {
11005          $cubeShadowEl.transform(("translate3d(0px, " + ((swiperWidth / 2) + params.shadowOffset) + "px, " + (-swiperWidth / 2) + "px) rotateX(90deg) rotateZ(0deg) scale(" + (params.shadowScale) + ")"));
11006        } else {
11007          var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);
11008          var multiplier = 1.5 - (
11009            (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)
11010            + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)
11011          );
11012          var scale1 = params.shadowScale;
11013          var scale2 = params.shadowScale / multiplier;
11014          var offset = params.shadowOffset;
11015          $cubeShadowEl.transform(("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + ((swiperHeight / 2) + offset) + "px, " + (-swiperHeight / 2 / scale2) + "px) rotateX(-90deg)"));
11016        }
11017      }
11018      var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;
11019      $wrapperEl
11020        .transform(("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)"));
11021    },
11022    setTransition: function setTransition(duration) {
11023      var swiper = this;
11024      var $el = swiper.$el;
11025      var slides = swiper.slides;
11026      slides
11027        .transition(duration)
11028        .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
11029        .transition(duration);
11030      if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
11031        $el.find('.swiper-cube-shadow').transition(duration);
11032      }
11033    },
11034  };
11035
11036  var EffectCube = {
11037    name: 'effect-cube',
11038    params: {
11039      cubeEffect: {
11040        slideShadows: true,
11041        shadow: true,
11042        shadowOffset: 20,
11043        shadowScale: 0.94,
11044      },
11045    },
11046    create: function create() {
11047      var swiper = this;
11048      Utils.extend(swiper, {
11049        cubeEffect: {
11050          setTranslate: Cube.setTranslate.bind(swiper),
11051          setTransition: Cube.setTransition.bind(swiper),
11052        },
11053      });
11054    },
11055    on: {
11056      beforeInit: function beforeInit() {
11057        var swiper = this;
11058        if (swiper.params.effect !== 'cube') { return; }
11059        swiper.classNames.push(((swiper.params.containerModifierClass) + "cube"));
11060        swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
11061        var overwriteParams = {
11062          slidesPerView: 1,
11063          slidesPerColumn: 1,
11064          slidesPerGroup: 1,
11065          watchSlidesProgress: true,
11066          resistanceRatio: 0,
11067          spaceBetween: 0,
11068          centeredSlides: false,
11069          virtualTranslate: true,
11070        };
11071        Utils.extend(swiper.params, overwriteParams);
11072        Utils.extend(swiper.originalParams, overwriteParams);
11073      },
11074      setTranslate: function setTranslate() {
11075        var swiper = this;
11076        if (swiper.params.effect !== 'cube') { return; }
11077        swiper.cubeEffect.setTranslate();
11078      },
11079      setTransition: function setTransition(duration) {
11080        var swiper = this;
11081        if (swiper.params.effect !== 'cube') { return; }
11082        swiper.cubeEffect.setTransition(duration);
11083      },
11084    },
11085  };
11086
11087  var Flip = {
11088    setTranslate: function setTranslate() {
11089      var swiper = this;
11090      var slides = swiper.slides;
11091      var rtl = swiper.rtlTranslate;
11092      for (var i = 0; i < slides.length; i += 1) {
11093        var $slideEl = slides.eq(i);
11094        var progress = $slideEl[0].progress;
11095        if (swiper.params.flipEffect.limitRotation) {
11096          progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
11097        }
11098        var offset = $slideEl[0].swiperSlideOffset;
11099        var rotate = -180 * progress;
11100        var rotateY = rotate;
11101        var rotateX = 0;
11102        var tx = -offset;
11103        var ty = 0;
11104        if (!swiper.isHorizontal()) {
11105          ty = tx;
11106          tx = 0;
11107          rotateX = -rotateY;
11108          rotateY = 0;
11109        } else if (rtl) {
11110          rotateY = -rotateY;
11111        }
11112
11113        $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
11114
11115        if (swiper.params.flipEffect.slideShadows) {
11116          // Set shadows
11117          var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
11118          var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
11119          if (shadowBefore.length === 0) {
11120            shadowBefore = $(("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>"));
11121            $slideEl.append(shadowBefore);
11122          }
11123          if (shadowAfter.length === 0) {
11124            shadowAfter = $(("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>"));
11125            $slideEl.append(shadowAfter);
11126          }
11127          if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }
11128          if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }
11129        }
11130        $slideEl
11131          .transform(("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)"));
11132      }
11133    },
11134    setTransition: function setTransition(duration) {
11135      var swiper = this;
11136      var slides = swiper.slides;
11137      var activeIndex = swiper.activeIndex;
11138      var $wrapperEl = swiper.$wrapperEl;
11139      slides
11140        .transition(duration)
11141        .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
11142        .transition(duration);
11143      if (swiper.params.virtualTranslate && duration !== 0) {
11144        var eventTriggered = false;
11145        // eslint-disable-next-line
11146        slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
11147          if (eventTriggered) { return; }
11148          if (!swiper || swiper.destroyed) { return; }
11149          // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
11150          eventTriggered = true;
11151          swiper.animating = false;
11152          var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
11153          for (var i = 0; i < triggerEvents.length; i += 1) {
11154            $wrapperEl.trigger(triggerEvents[i]);
11155          }
11156        });
11157      }
11158    },
11159  };
11160
11161  var EffectFlip = {
11162    name: 'effect-flip',
11163    params: {
11164      flipEffect: {
11165        slideShadows: true,
11166        limitRotation: true,
11167      },
11168    },
11169    create: function create() {
11170      var swiper = this;
11171      Utils.extend(swiper, {
11172        flipEffect: {
11173          setTranslate: Flip.setTranslate.bind(swiper),
11174          setTransition: Flip.setTransition.bind(swiper),
11175        },
11176      });
11177    },
11178    on: {
11179      beforeInit: function beforeInit() {
11180        var swiper = this;
11181        if (swiper.params.effect !== 'flip') { return; }
11182        swiper.classNames.push(((swiper.params.containerModifierClass) + "flip"));
11183        swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
11184        var overwriteParams = {
11185          slidesPerView: 1,
11186          slidesPerColumn: 1,
11187          slidesPerGroup: 1,
11188          watchSlidesProgress: true,
11189          spaceBetween: 0,
11190          virtualTranslate: true,
11191        };
11192        Utils.extend(swiper.params, overwriteParams);
11193        Utils.extend(swiper.originalParams, overwriteParams);
11194      },
11195      setTranslate: function setTranslate() {
11196        var swiper = this;
11197        if (swiper.params.effect !== 'flip') { return; }
11198        swiper.flipEffect.setTranslate();
11199      },
11200      setTransition: function setTransition(duration) {
11201        var swiper = this;
11202        if (swiper.params.effect !== 'flip') { return; }
11203        swiper.flipEffect.setTransition(duration);
11204      },
11205    },
11206  };
11207
11208  var Coverflow = {
11209    setTranslate: function setTranslate() {
11210      var swiper = this;
11211      var swiperWidth = swiper.width;
11212      var swiperHeight = swiper.height;
11213      var slides = swiper.slides;
11214      var $wrapperEl = swiper.$wrapperEl;
11215      var slidesSizesGrid = swiper.slidesSizesGrid;
11216      var params = swiper.params.coverflowEffect;
11217      var isHorizontal = swiper.isHorizontal();
11218      var transform = swiper.translate;
11219      var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);
11220      var rotate = isHorizontal ? params.rotate : -params.rotate;
11221      var translate = params.depth;
11222      // Each slide offset from center
11223      for (var i = 0, length = slides.length; i < length; i += 1) {
11224        var $slideEl = slides.eq(i);
11225        var slideSize = slidesSizesGrid[i];
11226        var slideOffset = $slideEl[0].swiperSlideOffset;
11227        var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;
11228
11229        var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
11230        var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
11231        // var rotateZ = 0
11232        var translateZ = -translate * Math.abs(offsetMultiplier);
11233
11234        var translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);
11235        var translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0;
11236
11237        // Fix for ultra small values
11238        if (Math.abs(translateX) < 0.001) { translateX = 0; }
11239        if (Math.abs(translateY) < 0.001) { translateY = 0; }
11240        if (Math.abs(translateZ) < 0.001) { translateZ = 0; }
11241        if (Math.abs(rotateY) < 0.001) { rotateY = 0; }
11242        if (Math.abs(rotateX) < 0.001) { rotateX = 0; }
11243
11244        var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px)  rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)";
11245
11246        $slideEl.transform(slideTransform);
11247        $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
11248        if (params.slideShadows) {
11249          // Set shadows
11250          var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
11251          var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
11252          if ($shadowBeforeEl.length === 0) {
11253            $shadowBeforeEl = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>"));
11254            $slideEl.append($shadowBeforeEl);
11255          }
11256          if ($shadowAfterEl.length === 0) {
11257            $shadowAfterEl = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>"));
11258            $slideEl.append($shadowAfterEl);
11259          }
11260          if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; }
11261          if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; }
11262        }
11263      }
11264
11265      // Set correct perspective for IE10
11266      if (Support.pointerEvents || Support.prefixedPointerEvents) {
11267        var ws = $wrapperEl[0].style;
11268        ws.perspectiveOrigin = center + "px 50%";
11269      }
11270    },
11271    setTransition: function setTransition(duration) {
11272      var swiper = this;
11273      swiper.slides
11274        .transition(duration)
11275        .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
11276        .transition(duration);
11277    },
11278  };
11279
11280  var EffectCoverflow = {
11281    name: 'effect-coverflow',
11282    params: {
11283      coverflowEffect: {
11284        rotate: 50,
11285        stretch: 0,
11286        depth: 100,
11287        modifier: 1,
11288        slideShadows: true,
11289      },
11290    },
11291    create: function create() {
11292      var swiper = this;
11293      Utils.extend(swiper, {
11294        coverflowEffect: {
11295          setTranslate: Coverflow.setTranslate.bind(swiper),
11296          setTransition: Coverflow.setTransition.bind(swiper),
11297        },
11298      });
11299    },
11300    on: {
11301      beforeInit: function beforeInit() {
11302        var swiper = this;
11303        if (swiper.params.effect !== 'coverflow') { return; }
11304
11305        swiper.classNames.push(((swiper.params.containerModifierClass) + "coverflow"));
11306        swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
11307
11308        swiper.params.watchSlidesProgress = true;
11309        swiper.originalParams.watchSlidesProgress = true;
11310      },
11311      setTranslate: function setTranslate() {
11312        var swiper = this;
11313        if (swiper.params.effect !== 'coverflow') { return; }
11314        swiper.coverflowEffect.setTranslate();
11315      },
11316      setTransition: function setTransition(duration) {
11317        var swiper = this;
11318        if (swiper.params.effect !== 'coverflow') { return; }
11319        swiper.coverflowEffect.setTransition(duration);
11320      },
11321    },
11322  };
11323
11324  var Thumbs = {
11325    init: function init() {
11326      var swiper = this;
11327      var ref = swiper.params;
11328      var thumbsParams = ref.thumbs;
11329      var SwiperClass = swiper.constructor;
11330      if (thumbsParams.swiper instanceof SwiperClass) {
11331        swiper.thumbs.swiper = thumbsParams.swiper;
11332        Utils.extend(swiper.thumbs.swiper.originalParams, {
11333          watchSlidesProgress: true,
11334          slideToClickedSlide: false,
11335        });
11336        Utils.extend(swiper.thumbs.swiper.params, {
11337          watchSlidesProgress: true,
11338          slideToClickedSlide: false,
11339        });
11340      } else if (Utils.isObject(thumbsParams.swiper)) {
11341        swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {
11342          watchSlidesVisibility: true,
11343          watchSlidesProgress: true,
11344          slideToClickedSlide: false,
11345        }));
11346        swiper.thumbs.swiperCreated = true;
11347      }
11348      swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
11349      swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
11350    },
11351    onThumbClick: function onThumbClick() {
11352      var swiper = this;
11353      var thumbsSwiper = swiper.thumbs.swiper;
11354      if (!thumbsSwiper) { return; }
11355      var clickedIndex = thumbsSwiper.clickedIndex;
11356      var clickedSlide = thumbsSwiper.clickedSlide;
11357      if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) { return; }
11358      if (typeof clickedIndex === 'undefined' || clickedIndex === null) { return; }
11359      var slideToIndex;
11360      if (thumbsSwiper.params.loop) {
11361        slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
11362      } else {
11363        slideToIndex = clickedIndex;
11364      }
11365      if (swiper.params.loop) {
11366        var currentIndex = swiper.activeIndex;
11367        if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
11368          swiper.loopFix();
11369          // eslint-disable-next-line
11370          swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
11371          currentIndex = swiper.activeIndex;
11372        }
11373        var prevIndex = swiper.slides.eq(currentIndex).prevAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index();
11374        var nextIndex = swiper.slides.eq(currentIndex).nextAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index();
11375        if (typeof prevIndex === 'undefined') { slideToIndex = nextIndex; }
11376        else if (typeof nextIndex === 'undefined') { slideToIndex = prevIndex; }
11377        else if (nextIndex - currentIndex < currentIndex - prevIndex) { slideToIndex = nextIndex; }
11378        else { slideToIndex = prevIndex; }
11379      }
11380      swiper.slideTo(slideToIndex);
11381    },
11382    update: function update(initial) {
11383      var swiper = this;
11384      var thumbsSwiper = swiper.thumbs.swiper;
11385      if (!thumbsSwiper) { return; }
11386
11387      var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'
11388        ? thumbsSwiper.slidesPerViewDynamic()
11389        : thumbsSwiper.params.slidesPerView;
11390
11391      if (swiper.realIndex !== thumbsSwiper.realIndex) {
11392        var currentThumbsIndex = thumbsSwiper.activeIndex;
11393        var newThumbsIndex;
11394        if (thumbsSwiper.params.loop) {
11395          if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
11396            thumbsSwiper.loopFix();
11397            // eslint-disable-next-line
11398            thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
11399            currentThumbsIndex = thumbsSwiper.activeIndex;
11400          }
11401          // Find actual thumbs index to slide to
11402          var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0).index();
11403          var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0).index();
11404          if (typeof prevThumbsIndex === 'undefined') { newThumbsIndex = nextThumbsIndex; }
11405          else if (typeof nextThumbsIndex === 'undefined') { newThumbsIndex = prevThumbsIndex; }
11406          else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = currentThumbsIndex; }
11407          else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = nextThumbsIndex; }
11408          else { newThumbsIndex = prevThumbsIndex; }
11409        } else {
11410          newThumbsIndex = swiper.realIndex;
11411        }
11412        if (thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
11413          if (thumbsSwiper.params.centeredSlides) {
11414            if (newThumbsIndex > currentThumbsIndex) {
11415              newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
11416            } else {
11417              newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
11418            }
11419          } else if (newThumbsIndex > currentThumbsIndex) {
11420            newThumbsIndex = newThumbsIndex - slidesPerView + 1;
11421          }
11422          thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
11423        }
11424      }
11425
11426      // Activate thumbs
11427      var thumbsToActivate = 1;
11428      var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
11429
11430      if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
11431        thumbsToActivate = swiper.params.slidesPerView;
11432      }
11433
11434      thumbsSwiper.slides.removeClass(thumbActiveClass);
11435      if (thumbsSwiper.params.loop) {
11436        for (var i = 0; i < thumbsToActivate; i += 1) {
11437          thumbsSwiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + (swiper.realIndex + i
11437) + "\"]")).addClass(thumbActiveClass);
11438        }
11439      } else {
11440        for (var i$1 = 0; i$1 < thumbsToActivate; i$1 += 1) {
11441          thumbsSwiper.slides.eq(swiper.realIndex + i$1).addClass(thumbActiveClass);
11442        }
11443      }
11444    },
11445  };
11446  var Thumbs$1 = {
11447    name: 'thumbs',
11448    params: {
11449      thumbs: {
11450        swiper: null,
11451        slideThumbActiveClass: 'swiper-slide-thumb-active',
11452        thumbsContainerClass: 'swiper-container-thumbs',
11453      },
11454    },
11455    create: function create() {
11456      var swiper = this;
11457      Utils.extend(swiper, {
11458        thumbs: {
11459          swiper: null,
11460          init: Thumbs.init.bind(swiper),
11461          update: Thumbs.update.bind(swiper),
11462          onThumbClick: Thumbs.onThumbClick.bind(swiper),
11463        },
11464      });
11465    },
11466    on: {
11467      beforeInit: function beforeInit() {
11468        var swiper = this;
11469        var ref = swiper.params;
11470        var thumbs = ref.thumbs;
11471        if (!thumbs || !thumbs.swiper) { return; }
11472        swiper.thumbs.init();
11473        swiper.thumbs.update(true);
11474      },
11475      slideChange: function slideChange() {
11476        var swiper = this;
11477        if (!swiper.thumbs.swiper) { return; }
11478        swiper.thumbs.update();
11479      },
11480      update: function update() {
11481        var swiper = this;
11482        if (!swiper.thumbs.swiper) { return; }
11483        swiper.thumbs.update();
11484      },
11485      resize: function resize() {
11486        var swiper = this;
11487        if (!swiper.thumbs.swiper) { return; }
11488        swiper.thumbs.update();
11489      },
11490      observerUpdate: function observerUpdate() {
11491        var swiper = this;
11492        if (!swiper.thumbs.swiper) { return; }
11493        swiper.thumbs.update();
11494      },
11495      setTransition: function setTransition(duration) {
11496        var swiper = this;
11497        var thumbsSwiper = swiper.thumbs.swiper;
11498        if (!thumbsSwiper) { return; }
11499        thumbsSwiper.setTransition(duration);
11500      },
11501      beforeDestroy: function beforeDestroy() {
11502        var swiper = this;
11503        var thumbsSwiper = swiper.thumbs.swiper;
11504        if (!thumbsSwiper) { return; }
11505        if (swiper.thumbs.swiperCreated && thumbsSwiper) {
11506          thumbsSwiper.destroy();
11507        }
11508      },
11509    },
11510  };
11511
11512  // Swiper Class
11513
11514  var components = [
11515    Device$1,
11516    Support$1,
11517    Browser$1,
11518    Resize,
11519    Observer$1,
11520    Virtual$1,
11521    Keyboard$1,
11522    Mousewheel$1,
11523    Navigation$1,
11524    Pagination$1,
11525    Scrollbar$1,
11526    Parallax$1,
11527    Zoom$1,
11528    Lazy$1,
11529    Controller$1,
11530    A11y,
11531    History$1,
11532    HashNavigation$1,
11533    Autoplay$1,
11534    EffectFade,
11535    EffectCube,
11536    EffectFlip,
11537    EffectCoverflow,
11538    Thumbs$1
11539  ];
11540
11541  if (typeof Swiper.use === 'undefined') {
11542    Swiper.use = Swiper.Class.use;
11543    Swiper.installModule = Swiper.Class.installModule;
11544  }
11545
11546  Swiper.use(components);
11547
11548  return Swiper;
11549
11550}));
11551
11552/* End */
11553;
11554; /* Start:"a:4:{s:4:"full";s:53:"/local/templates/ntk_new/js/scripts.js?17896238178648";s:6:"source";s:38:"/local/templates/ntk_new/js/scripts.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
11555var disableScroll = false;
11556var scrollPos = 0;
11557
11558function stopScroll() {
11559	if (window.innerWidth < 1023) {
11560		disableScroll = true;
11561		scrollPos = $(window).scrollTop();	  
11562	}
11563}
11564
11565function enableScroll() {
11566	disableScroll = false;	
11567}
11568
11569$(document).ready(function () {
11570	$(window).scroll(function() {
11571		if ($(this).scrollTop() >= 50) {
11572			$(".header-top").removeClass("h-12");
11573			$(".header-top").addClass("h-0");
11574			$("header").addClass("shadow-md");
11575		}
11576		else{
11577			$(".header-top").addClass("h-12");
11578			$(".header-top").removeClass("h-0");	
11579			$("header").removeClass("shadow-md");
11580		}
11581	});
11582
11583
11584	$(window).on('scroll', function () {
11585		if (disableScroll) {
11586			$(window).scrollTop(scrollPos);
11587		}
11588	});
11589
11590	$(window).on('touchmove', function () {
11591		$(window).trigger('scroll');
11592	});
11593
11594	$(window).on('resize', function () {
11595		if (window.innerWidth > 1023) {
11596			enableScroll();
11597		}
11598	});
11599
11600	$(".header-mobile .menu-btn").click(function(){
11601		if($(this).hasClass("active")){
11602			$("header").hide();
11603			enableScroll();
11604			$(this).removeClass("active");
11605		}
11606		else{
11607			$("header").show();
11608			stopScroll();
11609			$(this).addClass("active");
11610		}
11611	});
11612	
11613	$("input[type=tel]").mask("+7 (999) 999 99 99");
11614
11615	$("button.callback").click(function(e){
11616		e.preventDefault();		
11617		$.fancybox.open({
11618			src: '#callback_form',
11619			type: 'inline',
11620			touch: false,
11621			autoFocus: false
11622		});  		
11623	});
11624 	
11625	$("a#zayavka_mob").click(function(e){
11626		e.preventDefault();
11627		$(".header-mobile .menu-btn").click();
11628		$.fancybox.open({
11629			src: '#zakaz_form',
11630			type: 'inline',
11631			touch: false,
11632			autoFocus: false
11633		});  		
11634	});
11635
11636	$("header a.mobilemenu").click(function(e){
11637		e.preventDefault();
11638		$(this).toggleClass("active");
11639		$("ul.top-menu").toggle();
11640	});
11641
11642	$("button.auth-button").click(function(e){
11643		e.preventDefault();		
11644		$.fancybox.open({
11645			src: '#authForm',
11646			type: 'inline',
11647			touch: false,
11648			autoFocus: false,
11649			afterClose  : function() {
11650				$("#authForm input[name=email]").show();				
11651				$("#authForm input[name=password]").val('');
11652				$("#authForm .desc").hide();				
11653			}
11654		});  		
11655	});
11656
11657	$("button#register").click(function(e){
11658		e.preventDefault();		
11659		$.fancybox.close();
11660		$.fancybox.open({
11661			src: '#regForm',
11662			type: 'inline',
11663			touch: false,
11664			autoFocus: false,
11665			afterOpen: function(){
11666				$("#regForm form h3").text("Регистрация");
11667			},
11668			afterClose  : function() {
11669				$("#regForm input[name=email]").show();
11670				$("#regForm input[name=code]").hide();
11671				$("#regForm input[name=code]").val('');
11672				$("#regForm .desc").hide();
11673				$("#regForm .desc").html("Введите код из письма");
11674			}
11675		});  		
11676	});
11677
11678	$("button#rememberPassword").click(function(e){
11679		e.preventDefault();		
11680		$.fancybox.close();
11681		$.fancybox.open({
11682			src: '#passwordForm',
11683			type: 'inline',
11684			touch: false,
11685			autoFocus: false,		
11686			afterClose  : function() {
11687				$("#passwordForm input[name=email]").show();
11688				$("#passwordForm input[name=code]").hide();
11689				$("#passwordForm input[name=code]").val('');
11690				$("#passwordForm .desc").hide();				
11691			}
11692		});  		
11693	});	
11694
11695	$("#regForm form").submit(function(e) {
11696	   	e.preventDefault();
11697	   	$("#regForm .desc").addClass('hidden');
11698	   	$("#regForm .error").addClass('hidden');
11699		if($("#regForm form input[name=password]").val().length < 6){
11700			$("#regForm .error").removeClass('hidden');
11701			$("#regForm .error").html('Пароль должен быть не менее 6 символов длиной.');
11702			return false;
11703		}	   		
11704		var form = $(this);
11705		$.ajax({
11706			type: "POST",
11707			url: '/ajax/register.php',
11708			data: form.serialize(),
11709			success: function(data)
11710			{	   
11711				if(data.code){
11712					$("#regForm input[name=email]").hide();
11713					$("#regForm input[name=password]").hide();
11714					$("#regForm input[name=code]").show();
11715					$("#regForm .desc").html("Введите код из письма");
11716					$("#regForm .desc").removeClass('hidden');
11717				}
11718				else{
11719					if(data.success){
11720						window.location.href = "/lk/";
11721					}
11722					else{
11723						$("#regForm .error").removeClass('hidden');
11724						$("#regForm .error").html('Неверный код');												
11725					}
11726				}
11727			}
11728		});
11729	});
11730
11731	$("#passwordForm form").submit(function(e) {
11732	   	e.preventDefault();	   	
11733	   	$("#passwordForm .desc").addClass('hidden');
11734	   	$("#passwordForm .error").addClass('hidden');	   		
11735		var form = $(this);
11736		$.ajax({
11737			type: "POST",
11738			url: '/ajax/auth.php',
11739			data: form.serialize(),
11740			success: function(data)
11741			{	   
11742				if(data.code){
11743					$("#passwordForm input[name=email]").hide();					
11744					$("#passwordForm input[name=code]").show();
11745					$("#passwordForm .desc").html("Введите код из письма");
11746					$("#passwordForm .desc").removeClass('hidden');
11747				}
11748				else{
11749					if(data.success){
11750						window.location.href = "/lk/";
11751					}
11752					else{
11753						$("#passwordForm .error").removeClass('hidden');
11754						$("#passwordForm .error").html('Неверный код');	
11755					}
11756				}
11757			}
11758		});
11759	});
11760
11761	$("#authForm form").submit(function(e) {
11762	   	e.preventDefault();	
11763	   	$("#authForm .error").addClass('hidden');
11764		var form = $(this);
11765		$.ajax({
11766			type: "POST",
11767			url: '/ajax/auth.php',
11768			data: form.serialize(),
11769			success: function(data)
11770			{	   
11771				if(data.success){
11772					window.location.href = "/lk/";
11773				}
11774				else{
11775					$("#authForm .error").removeClass('hidden');
11776					$("#authForm .error").html("Неверный логин/пароль");
11777				}
11778			}
11779		});
11780	});
11781
11782	let startTime = new Date();
11783	$("form").submit(function(){
11784		let timeSpent = (new Date() - startTime) / 1000;
11785		if (timeSpent < 3) {
11786			return false;
11787		}
11788		//if($("#zakaz_form .form-questions input[name=pochta]").val().length > 0){
11789		//	return false;
11790		//}		
11791	});	
11792
11793	if (!Cookies.get('agreement')) {
11794	showMessage();
11795	} else {
11796	initCounter();
11797	}
11798	// Функция, которая прячет предупреждение
11799	function hideMessage () {
11800	$('.cookie-notification').hide();
11801	}
11802	// Функция, которая показывает предупреждение
11803	function showMessage () {	  	  	
11804		$('.cookie-notification').removeClass("hidden");	
11805	}
11806	function saveAnswer () {
11807	// Прячем предупреждение
11808	hideMessage();
11809
11810	// Ставим cookies
11811	Cookies.set('agreement', '1');
11812	}
11813	function initCounter () {
11814			   ym(98519260, "init", {
11815			clickmap:true,
11816			trackLinks:true,
11817			accurateTrackBounce:true,
11818			webvisor:true
11819			   });
11820	   saveAnswer();
11821	}	
11822	$("#agreementyes").click(function(){
11823		initCounter();
11824	})	  
11825
11826	$("button.city-changer-button").click(function(e){
11827		e.stopPropagation();
11828		if($(".city-changer").hasClass('invisible')){
11829			$(".city-changer").removeClass("opacity-0 invisible translate-y-2 pointer-events-none");	
11830		}
11831		else{
11832			$(".city-changer").addClass("opacity-0 invisible translate-y-2 pointer-events-none");
11833		}
11834		
11835	});
11836
11837	$("button.lang-changer-button").click(function(e){
11838		e.stopPropagation();
11839		if($(".lang-changer").hasClass('invisible')){
11840			$(".lang-changer").removeClass("opacity-0 invisible translate-y-2 pointer-events-none");	
11841		}
11842		else{
11843			$(".lang-changer").addClass("opacity-0 invisible translate-y-2 pointer-events-none");
11844		}
11845		
11846	});
11847
11848	$(document).on('click', function(e) {
11849	    if (!$(e.target).closest(".city-changer").length) {
11850	        $(".city-changer").addClass("opacity-0 invisible translate-y-2 pointer-events-none");
11851	    }
11852	    if (!$(e.target).closest(".lang-changer").length) {
11853	        $(".lang-changer").addClass("opacity-0 invisible translate-y-2 pointer-events-none");
11854	    }	    
11855	});
11856
11857	$(".city-changer button").click(function(){
11858		$("button.city-changer-button span span").text($(this).text());
11859		$(".city-changer").addClass("opacity-0 invisible translate-y-2 pointer-events-none");
11860		$(".city-changer button").removeClass("text-brand-red font-bold");
11861		$(".city-changer button").addClass("text-gray-600");
11862		$(this).addClass("text-brand-red font-bold");
11863		$(this).removeClass("text-gray-600");
11864	});
11865
11866	$(".lang-changer button").click(function(){
11867		$("button.lang-changer-button span").text($(this).text());
11868		$(".lang-changer").addClass("opacity-0 invisible translate-y-2 pointer-events-none");
11869		$(".lang-changer button").removeClass("text-brand-red");
11870		$(".lang-changer button").addClass("text-gray-600");
11871		$(this).addClass("text-brand-red");
11872		$(this).removeClass("text-gray-600");		
11873	});
11874
11875});
11876/* End */
11877;; /* /local/templates/ntk_new/js/jquery-3.7.1.min.js?174016440087533*/
11878; /* /local/templates/ntk_new/lib/jquery.fancybox.min.js?174016440068265*/
11879; /* /local/templates/ntk_new/js/jquery.maskedinput.js?174016440011290*/
11880; /* /local/templates/ntk_new/lib/jquery.suggestions.min.js?171977400059051*/
11881; /* /local/templates/ntk_new/lib/jquery.datetimepicker.js?1742756400112261*/
11882; /* /local/templates/ntk_new/lib/swiper.js?1719817022288320*/
11883; /* /local/templates/ntk_new/js/scripts.js?17896238178648*/

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.