text: // @koala-append "../jQuery/jquery-3.2.1.min.js";
  // @koala-append "../materialize/js/materialize.js";
  // @koala-append "../scrollify/jquery.scrollify.min.js";
  // @koala-append "../parallax/parallax.js";
  // @koala-append "../nicescroll/jquery.nicescroll.min.js";
  // @koala-append "../swiper/js/swiper.min.js";
  // @koala-append "../share/mustach.min.js";
  // @koala-append "../share/share.min.js";
  // @koala-append "../sticker/sticker.js";
  // @koala-append "functions.js";
  
  
  /*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */
  !function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,N,e),g(f,c,O,e)):(f++,j.call(a,g(f,c,N,e),g(f,c,O,e),g(f,c,N,c.notifyWith))):(d!==N&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S),
  a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function $(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Z,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=X.get(f),1===f.nodeType&&!W.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=W.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ba=new RegExp("^(?:([+-])=|)("+aa+")([a-z%]*)$","i"),ca=["Top","Right","Bottom","Left"],da=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ea=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function fa(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&ba.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ga={};function ha(a){var b,c=a.ownerDocument,d=a.nodeName,e=ga[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ga[d]=e,e)}function ia(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=W.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&da(d)&&(e[f]=ha(d))):"none"!==c&&(e[f]="none",W.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ia(this,!0)},hide:function(){return ia(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){da(this)?r(this).show():r(this).hide()})}});var ja=/^(?:checkbox|radio)$/i,ka=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,"<select multiple='multiple'>","</select>"],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,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c<d;c++)W.set(a[c],"globalEval",!b||W.get(b[c],"globalEval"))}var pa=/<|&#?\w+;/;function qa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(pa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ka.exec(f)||["",""])[1].toLowerCase(),i=ma[h]||ma._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==xa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===xa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&B(this,"input"))return this.click(),!1},_default:function(a){return B(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?va:wa,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:wa,isPropagationStopped:wa,isImmediatePropagationStopped:wa,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=va,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=va,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=va,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.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,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:function(a){var b=a.button;return null==a.which&&sa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ta.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return ya(this,a,b,c,d)},one:function(a,b,c,d){return ya(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=wa),this.each(function(){r.event.remove(this,a,c,b)})}});var za=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/<script|<style|<link/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,Ca=/^true\/(.*)/,Da=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}X.hasData(a)&&(h=X.access(a),i=r.extend({},h),X.set(b,i))}}function Ia(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ja.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ja(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,na(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ga),l=0;l<i;l++)j=h[l],la.test(j.type||"")&&!W.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Da,""),k))}return a}function Ka(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(na(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&oa(na(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(za,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d<e;d++)Ia(f[d],g[d]);if(b)if(c)for(f=f||na(a),g=g||na(h),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);else Ha(a,h);return g=na(h,"script"),g.length>0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(na(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ja(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(na(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var La=/^margin/,Ma=new RegExp("^("+aa+")(?!px)[a-z%]+$","i"),Na=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",ra.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,ra.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Oa(a,b,c){var d,e,f,g,h=a.style;return c=c||Na(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ma.test(g)&&La.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Pa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Qa=/^(none|table(?!-c[ea]).+)/,Ra=/^--/,Sa={position:"absolute",visibility:"hidden",display:"block"},Ta={letterSpacing:"0",fontWeight:"400"},Ua=["Webkit","Moz","ms"],Va=d.createElement("div").style;function Wa(a){if(a in Va)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ua.length;while(c--)if(a=Ua[c]+b,a in Va)return a}function Xa(a){var b=r.cssProps[a];return b||(b=r.cssProps[a]=Wa(a)||a),b}function Ya(a,b,c){var d=ba.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Za(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ca[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ca[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ca[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ca[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ca[f]+"Width",!0,e)));return g}function $a(a,b,c){var d,e=Na(a),f=Oa(a,b,e),g="border-box"===r.css(a,"boxSizing",!1,e);return Ma.test(f)?f:(d=g&&(o.boxSizingReliable()||f===a.style[b]),"auto"===f&&(f=a["offset"+b[0].toUpperCase()+b.slice(1)]),f=parseFloat(f)||0,f+Za(a,b,c||(g?"border":"content"),d,e)+"px")}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Oa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=Ra.test(b),j=a.style;return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:j[b]:(f=typeof c,"string"===f&&(e=ba.exec(c))&&e[1]&&(c=fa(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(j[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i?j.setProperty(b,c):j[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b),i=Ra.test(b);return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Oa(a,b,d)),"normal"===e&&b in Ta&&(e=Ta[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Qa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?$a(a,b,d):ea(a,Sa,function(){return $a(a,b,d)})},set:function(a,c,d){var e,f=d&&Na(a),g=d&&Za(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=ba.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ya(a,c,g)}}}),r.cssHooks.marginLeft=Pa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Oa(a,"marginLeft"))||a.getBoundingClientRect().left-ea(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ca[d]+b]=f[d]||f[d-2]||f[0];return e}},La.test(a)||(r.cssHooks[a+b].set=Ya)}),r.fn.extend({css:function(a,b){return T(this,function(a,b,c){var d,e,f={},g=0;if(Array.isArray(b)){for(d=Na(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&da(a),q=W.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],cb.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=W.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ia([a],!0),j=a.style.display||j,k=r.css(a,"display"),ia([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=W.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ia([a],!0),m.done(function(){p||ia([a]),W.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=hb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],Array.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=kb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=ab||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(i||h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:ab||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);f<g;f++)if(d=kb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,hb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j}r.Animation=r.extend(kb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return fa(c.elem,a,ba.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(L);for(var c,d=0,e=a.length;d<e;d++)c=a[d],kb.tweeners[c]=kb.tweeners[c]||[],kb.tweeners[c].unshift(b)},prefilters:[ib],prefilter:function(a,b){b?kb.prefilters.unshift(a):kb.prefilters.push(a)}}),r.speed=function(a,b,c){var d=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off?d.duration=0:"number"!=typeof d.duration&&(d.duration in r.fx.speeds?d.duration=r.fx.speeds[d.duration]:d.duration=r.fx.speeds._default),null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){r.isFunction(d.old)&&d.old.call(this),d.queue&&r.dequeue(this,d.queue)},d},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(da).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=kb(this,r.extend({},a),f);(e||W.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=W.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&db.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=W.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),r.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(ab=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),ab=void 0},r.fx.timer=function(a){r.timers.push(a),r.fx.start()},r.fx.interval=13,r.fx.start=function(){bb||(bb=!0,eb())},r.fx.stop=function(){bb=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var lb,mb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),
  null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!B(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.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(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,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":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Tb=[],Ub=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Tb.pop()||r.expando+"_"+ub++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Ub.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ub.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Ub,"$1"+e):b.jsonp!==!1&&(b.url+=(vb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Tb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=pb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Vb=a.jQuery,Wb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Wb),b&&a.jQuery===r&&(a.jQuery=Vb),r},b||(a.jQuery=a.$=r),r});
  
  
  /*!
   * Materialize v0.98.2 (http://materializecss.com)
   * Copyright 2014-2015 Materialize
   * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)
   */
  // Check for jQuery.
  if (typeof(jQuery) === 'undefined') {
    var jQuery;
    // Check if require is a defined function.
    if (typeof(require) === 'function') {
      jQuery = $ = require('jquery');
    // Else use the dollar sign alias.
    } else {
      jQuery = $;
    }
  }
  ;/*
   * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
   *
   * Uses the built in easing capabilities added In jQuery 1.1
   * to offer multiple easing options
   *
   * TERMS OF USE - jQuery Easing
   *
   * Open source under the BSD License.
   *
   * Copyright © 2008 George McGinley Smith
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without modification,
   * are permitted provided that the following conditions are met:
   *
   * Redistributions of source code must retain the above copyright notice, this list of
   * conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above copyright notice, this list
   * of conditions and the following disclaimer in the documentation and/or other materials
   * provided with the distribution.
   *
   * Neither the name of the author nor the names of contributors may be used to endorse
   * or promote products derived from this software without specific prior written permission.
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
   * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
   *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
   * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
   * OF THE POSSIBILITY OF SUCH DAMAGE.
   *
  */
  
  // t: current time, b: begInnIng value, c: change In value, d: duration
  jQuery.easing['jswing'] = jQuery.easing['swing'];
  
  jQuery.extend( jQuery.easing,
  {
  	def: 'easeOutQuad',
  	swing: function (x, t, b, c, d) {
  		//alert(jQuery.easing.default);
  		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
  	},
  	easeInQuad: function (x, t, b, c, d) {
  		return c*(t/=d)*t + b;
  	},
  	easeOutQuad: function (x, t, b, c, d) {
  		return -c *(t/=d)*(t-2) + b;
  	},
  	easeInOutQuad: function (x, t, b, c, d) {
  		if ((t/=d/2) < 1) return c/2*t*t + b;
  		return -c/2 * ((--t)*(t-2) - 1) + b;
  	},
  	easeInCubic: function (x, t, b, c, d) {
  		return c*(t/=d)*t*t + b;
  	},
  	easeOutCubic: function (x, t, b, c, d) {
  		return c*((t=t/d-1)*t*t + 1) + b;
  	},
  	easeInOutCubic: function (x, t, b, c, d) {
  		if ((t/=d/2) < 1) return c/2*t*t*t + b;
  		return c/2*((t-=2)*t*t + 2) + b;
  	},
  	easeInQuart: function (x, t, b, c, d) {
  		return c*(t/=d)*t*t*t + b;
  	},
  	easeOutQuart: function (x, t, b, c, d) {
  		return -c * ((t=t/d-1)*t*t*t - 1) + b;
  	},
  	easeInOutQuart: function (x, t, b, c, d) {
  		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
  		return -c/2 * ((t-=2)*t*t*t - 2) + b;
  	},
  	easeInQuint: function (x, t, b, c, d) {
  		return c*(t/=d)*t*t*t*t + b;
  	},
  	easeOutQuint: function (x, t, b, c, d) {
  		return c*((t=t/d-1)*t*t*t*t + 1) + b;
  	},
  	easeInOutQuint: function (x, t, b, c, d) {
  		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
  		return c/2*((t-=2)*t*t*t*t + 2) + b;
  	},
  	easeInSine: function (x, t, b, c, d) {
  		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
  	},
  	easeOutSine: function (x, t, b, c, d) {
  		return c * Math.sin(t/d * (Math.PI/2)) + b;
  	},
  	easeInOutSine: function (x, t, b, c, d) {
  		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
  	},
  	easeInExpo: function (x, t, b, c, d) {
  		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
  	},
  	easeOutExpo: function (x, t, b, c, d) {
  		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
  	},
  	easeInOutExpo: function (x, t, b, c, d) {
  		if (t==0) return b;
  		if (t==d) return b+c;
  		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
  		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
  	},
  	easeInCirc: function (x, t, b, c, d) {
  		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
  	},
  	easeOutCirc: function (x, t, b, c, d) {
  		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
  	},
  	easeInOutCirc: function (x, t, b, c, d) {
  		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
  		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
  	},
  	easeInElastic: function (x, t, b, c, d) {
  		var s=1.70158;var p=0;var a=c;
  		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
  		if (a < Math.abs(c)) { a=c; var s=p/4; }
  		else var s = p/(2*Math.PI) * Math.asin (c/a);
  		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
  	},
  	easeOutElastic: function (x, t, b, c, d) {
  		var s=1.70158;var p=0;var a=c;
  		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
  		if (a < Math.abs(c)) { a=c; var s=p/4; }
  		else var s = p/(2*Math.PI) * Math.asin (c/a);
  		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
  	},
  	easeInOutElastic: function (x, t, b, c, d) {
  		var s=1.70158;var p=0;var a=c;
  		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
  		if (a < Math.abs(c)) { a=c; var s=p/4; }
  		else var s = p/(2*Math.PI) * Math.asin (c/a);
  		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
  		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
  	},
  	easeInBack: function (x, t, b, c, d, s) {
  		if (s == undefined) s = 1.70158;
  		return c*(t/=d)*t*((s+1)*t - s) + b;
  	},
  	easeOutBack: function (x, t, b, c, d, s) {
  		if (s == undefined) s = 1.70158;
  		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
  	},
  	easeInOutBack: function (x, t, b, c, d, s) {
  		if (s == undefined) s = 1.70158;
  		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
  		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
  	},
  	easeInBounce: function (x, t, b, c, d) {
  		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
  	},
  	easeOutBounce: function (x, t, b, c, d) {
  		if ((t/=d) < (1/2.75)) {
  			return c*(7.5625*t*t) + b;
  		} else if (t < (2/2.75)) {
  			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
  		} else if (t < (2.5/2.75)) {
  			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
  		} else {
  			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
  		}
  	},
  	easeInOutBounce: function (x, t, b, c, d) {
  		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
  		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
  	}
  });
  
  /*
   *
   * TERMS OF USE - EASING EQUATIONS
   *
   * Open source under the BSD License.
   *
   * Copyright © 2001 Robert Penner
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without modification,
   * are permitted provided that the following conditions are met:
   *
   * Redistributions of source code must retain the above copyright notice, this list of
   * conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above copyright notice, this list
   * of conditions and the following disclaimer in the documentation and/or other materials
   * provided with the distribution.
   *
   * Neither the name of the author nor the names of contributors may be used to endorse
   * or promote products derived from this software without specific prior written permission.
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
   * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
   *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
   * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
   * OF THE POSSIBILITY OF SUCH DAMAGE.
   *
   */;// Custom Easing
  jQuery.extend( jQuery.easing,
  {
    easeInOutMaterial: function (x, t, b, c, d) {
      if ((t/=d/2) < 1) return c/2*t*t + b;
      return c/4*((t-=2)*t*t + 2) + b;
    }
  });;/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */
  /*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */
  /*! Note that this has been modified by Materialize to confirm that Velocity is not already being imported. */
  jQuery.Velocity?console.log("Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity."):(!function(e){function t(e){var t=e.length,a=r.type(e);return"function"===a||r.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===a||0===t||"number"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var r=function(e,t){return new r.fn.init(e,t)};r.isWindow=function(e){return null!=e&&e==e.window},r.type=function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e},r.isArray=Array.isArray||function(e){return"array"===r.type(e)},r.isPlainObject=function(e){var t;if(!e||"object"!==r.type(e)||e.nodeType||r.isWindow(e))return!1;try{if(e.constructor&&!o.call(e,"constructor")&&!o.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(a){return!1}for(t in e);return void 0===t||o.call(e,t)},r.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},r.data=function(e,t,n){if(void 0===n){var o=e[r.expando],i=o&&a[o];if(void 0===t)return i;if(i&&t in i)return i[t]}else if(void 0!==t){var o=e[r.expando]||(e[r.expando]=++r.uuid);return a[o]=a[o]||{},a[o][t]=n,n}},r.removeData=function(e,t){var n=e[r.expando],o=n&&a[n];o&&r.each(t,function(e,t){delete o[t]})},r.extend=function(){var e,t,a,n,o,i,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[l]||{},l++),"object"!=typeof s&&"function"!==r.type(s)&&(s={}),l===u&&(s=this,l--);u>l;l++)if(null!=(o=arguments[l]))for(n in o)e=s[n],a=o[n],s!==a&&(c&&a&&(r.isPlainObject(a)||(t=r.isArray(a)))?(t?(t=!1,i=e&&r.isArray(e)?e:[]):i=e&&r.isPlainObject(e)?e:{},s[n]=r.extend(c,i,a)):void 0!==a&&(s[n]=a));return s},r.queue=function(e,a,n){function o(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,"string"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){a=(a||"fx")+"queue";var i=r.data(e,a);return n?(!i||r.isArray(n)?i=r.data(e,a,o(n)):i.push(n),i):i||[]}},r.dequeue=function(e,t){r.each(e.nodeType?[e]:e,function(e,a){t=t||"fx";var n=r.queue(a,t),o=n.shift();"inprogress"===o&&(o=n.shift()),o&&("fx"===t&&n.unshift("inprogress"),o.call(a,function(){r.dequeue(a,t)}))})},r.fn=r.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error("Not a DOM node.")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&"html"===!e.nodeType.toLowerCase&&"static"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),a=this.offset(),n=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:r(e).offset();return a.top-=parseFloat(t.style.marginTop)||0,a.left-=parseFloat(t.style.marginLeft)||0,e.style&&(n.top+=parseFloat(e.style.borderTopWidth)||0,n.left+=parseFloat(e.style.borderLeftWidth)||0),{top:a.top-n.top,left:a.left-n.left}}};var a={};r.expando="velocity"+(new Date).getTime(),r.uuid=0;for(var n={},o=n.hasOwnProperty,i=n.toString,s="Boolean Number String Function Array Date RegExp Object Error".split(" "),l=0;l<s.length;l++)n["[object "+s[l]+"]"]=s[l].toLowerCase();r.fn.init.prototype=r.fn,e.Velocity={Utilities:r}}}(window),function(e){"object"==typeof module&&"object"==typeof module.exports?module.exports=e():"function"==typeof define&&define.amd?define(e):e()}(function(){return function(e,t,r,a){function n(e){for(var t=-1,r=e?e.length:0,a=[];++t<r;){var n=e[t];n&&a.push(n)}return a}function o(e){return m.isWrapped(e)?e=[].slice.call(e):m.isNode(e)&&(e=[e]),e}function i(e){var t=f.data(e,"velocity");return null===t?a:t}function s(e){return function(t){return Math.round(t*e)*(1/e)}}function l(e,r,a,n){function o(e,t){return 1-3*t+3*e}function i(e,t){return 3*t-6*e}function s(e){return 3*e}function l(e,t,r){return((o(t,r)*e+i(t,r))*e+s(t))*e}function u(e,t,r){return 3*o(t,r)*e*e+2*i(t,r)*e+s(t)}function c(t,r){for(var n=0;m>n;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s<v);return i}function d(t){for(var r=0,n=1,o=b-1;n!=o&&w[n]<=t;++n)r+=x;--n;var i=(t-w[n])/(w[n+1]-w[n]),s=r+i*x,l=u(s,e,a);return l>=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S="Float32Array"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if("number"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T="generateBezier("+[e,r,a,n]+")";return C.toString=function(){return T},C}function u(e,t){var r=e;return m.isString(e)?b.Easings[e]||(r=!1):r=m.isArray(e)&&1===e.length?s.apply(null,e):m.isArray(e)&&2===e.length?x.apply(null,e.concat([t])):m.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=b.Easings[b.defaults.easing]?b.defaults.easing:v),r}function c(e){if(e){var t=(new Date).getTime(),r=b.State.calls.length;r>1e4&&(b.State.calls=n(b.State.calls));for(var o=0;r>o;o++)if(b.State.calls[o]){var s=b.State.calls[o],l=s[0],u=s[2],d=s[3],g=!!d,y=null;d||(d=b.State.calls[o][3]=t-16);for(var h=Math.min((t-d)/u.duration,1),v=0,x=l.length;x>v;v++){var P=l[v],V=P.element;if(i(V)){var C=!1;if(u.display!==a&&null!==u.display&&"none"!==u.display){if("flex"===u.display){var T=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];f.each(T,function(e,t){S.setPropertyValue(V,"display",t)})}S.setPropertyValue(V,"display",u.display)}u.visibility!==a&&"hidden"!==u.visibility&&S.setPropertyValue(V,"visibility",u.visibility);for(var k in P)if("element"!==k){var A,F=P[k],j=m.isString(F.easing)?b.Easings[F.easing]:F.easing;if(1===h)A=F.endValue;else{var E=F.endValue-F.startValue;if(A=F.startValue+E*j(h,u,E),!g&&A===F.currentValue)continue}if(F.currentValue=A,"tween"===k)y=A;else{if(S.Hooks.registered[k]){var H=S.Hooks.getRoot(k),N=i(V).rootPropertyValueCache[H];N&&(F.rootPropertyValue=N)}var L=S.setPropertyValue(V,k,F.currentValue+(0===parseFloat(A)?"":F.unitType),F.rootPropertyValue,F.scrollData);S.Hooks.registered[k]&&(i(V).rootPropertyValueCache[H]=S.Normalizations.registered[H]?S.Normalizations.registered[H]("extract",null,L[1]):L[1]),"transform"===L[0]&&(C=!0)}}u.mobileHA&&i(V).transformCache.translate3d===a&&(i(V).transformCache.translate3d="(0px, 0px, 0px)",C=!0),C&&S.flushTransformCache(V)}}u.display!==a&&"none"!==u.display&&(b.State.calls[o][2].display=!1),u.visibility!==a&&"hidden"!==u.visibility&&(b.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],h,Math.max(0,d+u.duration-t),d,y),1===h&&p(o)}}b.State.isTicking&&w(c)}function p(e,t){if(!b.State.calls[e])return!1;for(var r=b.State.calls[e][0],n=b.State.calls[e][1],o=b.State.calls[e][2],s=b.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||("none"===o.display&&S.setPropertyValue(p,"display",o.display),"hidden"===o.visibility&&S.setPropertyValue(p,"visibility",o.visibility)),o.loop!==!0&&(f.queue(p)[1]===a||!/\.velocityQueueEntryFlag/i.test(f.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var d=!1;f.each(S.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp("^\\("+r+"[^.]").test(n)&&(d=!0,delete i(p).transformCache[t])}),o.mobileHA&&(d=!0,delete i(p).transformCache.translate3d),d&&S.flushTransformCache(p),S.Values.removeClass(p,"velocity-animating")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(g){setTimeout(function(){throw g},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&(f.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&"%"===t.unitType&&(t.endValue=0,t.startValue=100)}),b(p,"reverse",{loop:!0,delay:o.delay})),o.queue!==!1&&f.dequeue(p,o.queue)}b.State.calls[e]=!1;for(var m=0,y=b.State.calls.length;y>m;m++)if(b.State.calls[m]!==!1){l=!0;break}l===!1&&(b.State.isTicking=!1,delete b.State.calls,b.State.calls=[])}var f,d=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement("div");if(t.innerHTML="<!--[if IE "+e+"]><span></span><![endif]-->",t.getElementsByTagName("span").length)return t=null,e}return a}(),g=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r,a=(new Date).getTime();return r=Math.max(0,16-(a-e)),e=a+r,setTimeout(function(){t(a+r)},r)}}(),m={isString:function(e){return"string"==typeof e},isArray:Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return"object"==typeof e&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||"object"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},y=!1;if(e.fn&&e.fn.jquery?(f=e,y=!0):f=t.Velocity.Utilities,8>=d&&!y)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(7>=d)return void(jQuery.fn.velocity=jQuery.fn.animate);var h=400,v="swing",b={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:f,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:"",duration:h,easing:v,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){f.data(e,"velocity",{isSVG:m.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(b.State.scrollAnchor=t,b.State.scrollPropertyLeft="pageXOffset",b.State.scrollPropertyTop="pageYOffset"):(b.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,b.State.scrollPropertyLeft="scrollLeft",b.State.scrollPropertyTop="scrollTop");var x=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o,i,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,p=1e-4,f=.016;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,l.tension=e,l.friction=t,o=null!==n,o?(c=a(e,t),i=c/n*f):i=f;s=r(s||l,i),u.push(1+s.x),c+=16,Math.abs(s.x)>p&&Math.abs(s.v)>p;);return o?function(e){return u[e*(u.length-1)|0]}:c}}();b.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},f.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(e,t){b.Easings[t[0]]=l.apply(null,t[1])});var S=b.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var e=0;e<S.Lists.colors.length;e++){var t="color"===S.Lists.colors[e]?"0 0 0 1":"255 255 255 1";S.Hooks.templates[S.Lists.colors[e]]=["Red Green Blue Alpha",t]}var r,a,n;if(d)for(r in S.Hooks.templates){a=S.Hooks.templates[r],n=a[0].split(" ");var o=a[1].match(S.RegEx.valueSplit);"Color"===n[0]&&(n.push(n.shift()),o.push(o.shift()),S.Hooks.templates[r]=[n.join(" "),o.join(" ")])}for(r in S.Hooks.templates){a=S.Hooks.templates[r],n=a[0].split(" ");for(var e in n){var i=r+n[e],s=e;S.Hooks.registered[i]=[r,s]}}},getRoot:function(e){var t=S.Hooks.registered[e];return t?t[0]:e},cleanRootPropertyValue:function(e,t){return S.RegEx.valueUnwrap.test(t)&&(t=t.match(S.RegEx.valueUnwrap)[1]),S.Values.isCSSNullValue(t)&&(t=S.Hooks.templates[e][1]),t},extractValue:function(e,t){var r=S.Hooks.registered[e];if(r){var a=r[0],n=r[1];return t=S.Hooks.cleanRootPropertyValue(a,t),t.toString().match(S.RegEx.valueSplit)[n]}return t},injectValue:function(e,t,r){var a=S.Hooks.registered[e];if(a){var n,o,i=a[0],s=a[1];return r=S.Hooks.cleanRootPropertyValue(i,r),n=r.toString().match(S.RegEx.valueSplit),n[s]=t,o=n.join(" ")}return r}},Normalizations:{registered:{clip:function(e,t,r){switch(e){case"name":return"clip";case"extract":var a;return S.RegEx.wrappedValueAlreadyExtracted.test(r)?a=r:(a=r.toString().match(S.RegEx.valueUnwrap),a=a?a[1].replace(/,(\s+)?/g," "):r),a;case"inject":return"rect("+r+")"}},blur:function(e,t,r){switch(e){case"name":return b.State.isFirefox?"filter":"-webkit-filter";case"extract":var a=parseFloat(r);if(!a&&0!==a){var n=r.toString().match(/blur\(([0-9]+[A-z]+)\)/i);a=n?n[1]:0}return a;case"inject":return parseFloat(r)?"blur("+r+")":"none"}},opacity:function(e,t,r){if(8>=d)switch(e){case"name":return"filter";case"extract":var a=r.toString().match(/alpha\(opacity=(.*)\)/i);return r=a?a[1]/100:1;case"inject":return t.style.zoom=1,parseFloat(r)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(r),10)+")"}else switch(e){case"name":return"opacity";case"extract":return r;case"inject":return r}}},register:function(){9>=d||b.State.isGingerbread||(S.Lists.transformsBase=S.Lists.transformsBase.concat(S.Lists.transforms3D));for(var e=0;e<S.Lists.transformsBase.length;e++)!function(){var t=S.Lists.transformsBase[e];S.Normalizations.registered[t]=function(e,r,n){switch(e){case"name":return"transform";case"extract":return i(r)===a||i(r).transformCache[t]===a?/^scale/i.test(t)?1:0:i(r).transformCache[t].replace(/[()]/g,"");case"inject":var o=!1;switch(t.substr(0,t.length-1)){case"translate":o=!/(%|px|em|rem|vw|vh|\d)$/i.test(n);break;case"scal":case"scale":b.State.isAndroid&&i(r).transformCache[t]===a&&1>n&&(n=1),o=!/(\d)$/i.test(n);break;case"skew":o=!/(deg|\d)$/i.test(n);break;case"rotate":o=!/(deg|\d)$/i.test(n)}return o||(i(r).transformCache[t]="("+n+")"),i(r).transformCache[t]}}}();for(var e=0;e<S.Lists.colors.length;e++)!function(){var t=S.Lists.colors[e];S.Normalizations.registered[t]=function(e,r,n){switch(e){case"name":return t;case"extract":var o;if(S.RegEx.wrappedValueAlreadyExtracted.test(n))o=n;else{var i,s={black:"rgb(0, 0, 0)",blue:"rgb(0, 0, 255)",gray:"rgb(128, 128, 128)",green:"rgb(0, 128, 0)",red:"rgb(255, 0, 0)",white:"rgb(255, 255, 255)"};/^[A-z]+$/i.test(n)?i=s[n]!==a?s[n]:s.black:S.RegEx.isHex.test(n)?i="rgb("+S.Values.hexToRgb(n).join(" ")+")":/^rgba?\(/i.test(n)||(i=s.black),o=(i||n).toString().match(S.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g," ")}return 8>=d||3!==o.split(" ").length||(o+=" 1"),o;case"inject":return 8>=d?4===n.split(" ").length&&(n=n.split(/\s+/).slice(0,3).join(" ")):3===n.split(" ").length&&(n+=" 1"),(8>=d?"rgb":"rgba")+"("+n.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(d||b.State.isAndroid&&!b.State.isChrome)&&(t+="|transform"),new RegExp("^("+t+")$","i").test(e)},prefixCheck:function(e){if(b.State.prefixMatches[e])return[b.State.prefixMatches[e],!0];for(var t=["","Webkit","Moz","ms","O"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\w/,function(e){return e.toUpperCase()}),m.isString(b.State.prefixElement.style[n]))return b.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t,r=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;return e=e.replace(r,function(e,t,r,a){return t+t+r+r+a+a}),t=a.exec(e),t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?"":"px"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?"inline":/^(li)$/i.test(t)?"list-item":/^(tr)$/i.test(t)?"table-row":/^(table)$/i.test(t)?"table":/^(tbody)$/i.test(t)?"table-row-group":"block"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?" ":"")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp("(^|\\s)"+t.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&S.setPropertyValue(e,"display","none")}var l=0;if(8>=d)l=f.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===S.getPropertyValue(e,"display")&&(u=!0,S.setPropertyValue(e,"display",S.Values.getDisplayType(e))),!o){if("height"===r&&"border-box"!==S.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(S.getPropertyValue(e,"borderTopWidth"))||0)-(parseFloat(S.getPropertyValue(e,"borderBottomWidth"))||0)-(parseFloat(S.getPropertyValue(e,"paddingTop"))||0)-(parseFloat(S.getPropertyValue(e,"paddingBottom"))||0);return n(),c}if("width"===r&&"border-box"!==S.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(S.getPropertyValue(e,"borderLeftWidth"))||0)-(parseFloat(S.getPropertyValue(e,"borderRightWidth"))||0)-(parseFloat(S.getPropertyValue(e,"paddingLeft"))||0)-(parseFloat(S.getPropertyValue(e,"paddingRight"))||0);return n(),p}}var g;g=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),"borderColor"===r&&(r="borderTopColor"),l=9===d&&"filter"===r?g.getPropertyValue(r):g[r],(""===l||null===l)&&(l=e.style[r]),n()}if("auto"===l&&/^(top|right|bottom|left)$/i.test(r)){var m=s(e,"position");("fixed"===m||"absolute"===m&&/top|left/i.test(r))&&(l=f(e).position()[r]+"px")}return l}var l;if(S.Hooks.registered[r]){var u=r,c=S.Hooks.getRoot(u);n===a&&(n=S.getPropertyValue(e,S.Names.prefixCheck(c)[0])),S.Normalizations.registered[c]&&(n=S.Normalizations.registered[c]("extract",e,n)),l=S.Hooks.extractValue(u,n)}else if(S.Normalizations.registered[r]){var p,g;p=S.Normalizations.registered[r]("name",e),"transform"!==p&&(g=s(e,S.Names.prefixCheck(p)[0]),S.Values.isCSSNullValue(g)&&S.Hooks.templates[r]&&(g=S.Hooks.templates[r][1])),l=S.Normalizations.registered[r]("extract",e,g)}if(!/^[\d-]/.test(l))if(i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(m){l=0}else l=e.getAttribute(r);else l=s(e,S.Names.prefixCheck(r)[0]);return S.Values.isCSSNullValue(l)&&(l=0),b.debug>=2&&console.log("Get "+r+": "+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if("scroll"===r)o.container?o.container["scroll"+o.direction]=a:"Left"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(S.Normalizations.registered[r]&&"transform"===S.Normalizations.registered[r]("name",e))S.Normalizations.registered[r]("inject",e,a),s="transform",a=i(e).transformCache[r];else{if(S.Hooks.registered[r]){var l=r,u=S.Hooks.getRoot(r);n=n||S.getPropertyValue(e,u),a=S.Hooks.injectValue(l,a,n),r=u}if(S.Normalizations.registered[r]&&(a=S.Normalizations.registered[r]("inject",e,a),r=S.Normalizations.registered[r]("name",e)),s=S.Names.prefixCheck(r)[0],8>=d)try{e.style[s]=a}catch(c){b.debug&&console.log("Browser does not support ["+a+"] for ["+s+"]")}else i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;b.debug>=2&&console.log("Set "+r+" ("+s+"): "+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(S.getPropertyValue(e,t))}var r="";if((d||b.State.isAndroid&&!b.State.isChrome)&&i(e).isSVG){var a={translate:[t("translateX"),t("translateY")],skewX:[t("skewX")],skewY:[t("skewY")],scale:1!==t("scale")?[t("scale"),t("scale")]:[t("scaleX"),t("scaleY")],rotate:[t("rotateZ"),0,0]};f.each(i(e).transformCache,function(e){/^translate/i.test(e)?e="translate":/^scale/i.test(e)?e="scale":/^rotate/i.test(e)&&(e="rotate"),a[e]&&(r+=e+"("+a[e].join(" ")+") ",delete a[e])})}else{var n,o;f.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],"transformPerspective"===t?(o=n,!0):(9===d&&"rotateZ"===t&&(t="rotate"),void(r+=t+n+" "))}),o&&(r="perspective"+o+" "+r)}S.setPropertyValue(e,"transform",r)}};S.Hooks.register(),S.Normalizations.register(),b.hook=function(e,t,r){var n=a;return e=o(e),f.each(e,function(e,o){if(i(o)===a&&b.init(o),r===a)n===a&&(n=b.CSS.getPropertyValue(o,t));else{var s=b.CSS.setPropertyValue(o,t,r);"transform"===s[0]&&b.CSS.flushTransformCache(o),n=s}}),n};var P=function(){function e(){return s?k.promise||null:l}function n(){function e(e){function p(e,t){var r=a,n=a,i=a;return m.isArray(e)?(r=e[0],!m.isArray(e[1])&&/^[\d-]/.test(e[1])||m.isFunction(e[1])||S.RegEx.isHex.test(e[1])?i=e[1]:(m.isString(e[1])&&!S.RegEx.isHex.test(e[1])||m.isArray(e[1]))&&(n=t?e[1]:u(e[1],s.duration),e[2]!==a&&(i=e[2]))):r=e,t||(n=n||s.easing),m.isFunction(r)&&(r=r.call(o,V,w)),m.isFunction(i)&&(i=i.call(o,V,w)),[r||0,n,i]}function d(e,t){var r,a;return a=(t||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,""}),r||(r=S.Values.getUnitType(e)),[a,r]}function h(){var e={myParent:o.parentNode||r.body,position:S.getPropertyValue(o,"position"),fontSize:S.getPropertyValue(o,"fontSize")},a=e.position===L.lastPosition&&e.myParent===L.lastParent,n=e.fontSize===L.lastFontSize;L.lastParent=e.myParent,L.lastPosition=e.position,L.lastFontSize=e.fontSize;var s=100,l={};if(n&&a)l.emToPx=L.lastEmToPx,l.percentToPxWidth=L.lastPercentToPxWidth,l.percentToPxHeight=L.lastPercentToPxHeight;else{var u=i(o).isSVG?r.createElementNS("http://www.w3.org/2000/svg","rect"):r.createElement("div");b.init(u),e.myParent.appendChild(u),f.each(["overflow","overflowX","overflowY"],function(e,t){b.CSS.setPropertyValue(u,t,"hidden")}),b.CSS.setPropertyValue(u,"position",e.position),b.CSS.setPropertyValue(u,"fontSize",e.fontSize),b.CSS.setPropertyValue(u,"boxSizing","content-box"),f.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(e,t){b.CSS.setPropertyValue(u,t,s+"%")}),b.CSS.setPropertyValue(u,"paddingLeft",s+"em"),l.percentToPxWidth=L.lastPercentToPxWidth=(parseFloat(S.getPropertyValue(u,"width",null,!0))||1)/s,l.percentToPxHeight=L.lastPercentToPxHeight=(parseFloat(S.getPropertyValue(u,"height",null,!0))||1)/s,l.emToPx=L.lastEmToPx=(parseFloat(S.getPropertyValue(u,"paddingLeft"))||1)/s,e.myParent.removeChild(u)}return null===L.remToPx&&(L.remToPx=parseFloat(S.getPropertyValue(r.body,"fontSize"))||16),null===L.vwToPx&&(L.vwToPx=parseFloat(t.innerWidth)/100,L.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=L.remToPx,l.vwToPx=L.vwToPx,l.vhToPx=L.vhToPx,b.debug>=1&&console.log("Unit ratios: "+JSON.stringify(l),o),l}if(s.begin&&0===V)try{s.begin.call(g,g)}catch(x){setTimeout(function(){throw x},1)}if("scroll"===A){var P,C,T,F=/^x$/i.test(s.axis)?"Left":"Top",j=parseFloat(s.offset)||0;s.container?m.isWrapped(s.container)||m.isNode(s.container)?(s.container=s.container[0]||s.container,P=s.container["scroll"+F],T=P+f(o).position()[F.toLowerCase()]+j):s.container=null:(P=b.State.scrollAnchor[b.State["scrollProperty"+F]],C=b.State.scrollAnchor[b.State["scrollProperty"+("Left"===F?"Top":"Left")]],T=f(o).offset()[F.toLowerCase()]+j),l={scroll:{rootPropertyValue:!1,startValue:P,currentValue:P,endValue:T,unitType:"",easing:s.easing,scrollData:{container:s.container,direction:F,alternateValue:C}},element:o},b.debug&&console.log("tweensContainer (scroll): ",l.scroll,o)}else if("reverse"===A){if(!i(o).tweensContainer)return void f.dequeue(o,s.queue);"none"===i(o).opts.display&&(i(o).opts.display="auto"),"hidden"===i(o).opts.visibility&&(i(o).opts.visibility="visible"),i(o).opts.loop=!1,i(o).opts.begin=null,i(o).opts.complete=null,v.easing||delete s.easing,v.duration||delete s.duration,s=f.extend({},i(o).opts,s);var E=f.extend(!0,{},i(o).tweensContainer);for(var H in E)if("element"!==H){var N=E[H].startValue;E[H].startValue=E[H].currentValue=E[H].endValue,E[H].endValue=N,m.isEmptyObject(v)||(E[H].easing=s.easing),b.debug&&console.log("reverse tweensContainer ("+H+"): "+JSON.stringify(E[H]),o)}l=E}else if("start"===A){var E;i(o).tweensContainer&&i(o).isAnimating===!0&&(E=i(o).tweensContainer),f.each(y,function(e,t){if(RegExp("^"+S.Lists.colors.join("$|^")+"$").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(S.RegEx.isHex.test(n)){for(var s=["Red","Green","Blue"],l=S.Values.hexToRgb(n),u=i?S.Values.hexToRgb(i):a,c=0;c<s.length;c++){var f=[l[c]];o&&f.push(o),u!==a&&f.push(u[c]),y[e+s[c]]=f}delete y[e]}}});for(var z in y){var O=p(y[z]),q=O[0],$=O[1],M=O[2];z=S.Names.camelCase(z);var I=S.Hooks.getRoot(z),B=!1;if(i(o).isSVG||"tween"===I||S.Names.prefixCheck(I)[1]!==!1||S.Normalizations.registered[I]!==a){(s.display!==a&&null!==s.display&&"none"!==s.display||s.visibility!==a&&"hidden"!==s.visibility)&&/opacity|filter/.test(z)&&!M&&0!==q&&(M=0),s._cacheValues&&E&&E[z]?(M===a&&(M=E[z].endValue+E[z].unitType),B=i(o).rootPropertyValueCache[I]):S.Hooks.registered[z]?M===a?(B=S.getPropertyValue(o,I),M=S.getPropertyValue(o,z,B)):B=S.Hooks.templates[I][1]:M===a&&(M=S.getPropertyValue(o,z));var W,G,Y,D=!1;if(W=d(z,M),M=W[0],Y=W[1],W=d(z,q),q=W[0].replace(/^([+-\/*])=/,function(e,t){return D=t,""}),G=W[1],M=parseFloat(M)||0,q=parseFloat(q)||0,"%"===G&&(/^(fontSize|lineHeight)$/.test(z)?(q/=100,G="em"):/^scale/.test(z)?(q/=100,G=""):/(Red|Green|Blue)$/i.test(z)&&(q=q/100*255,G="")),/[\/*]/.test(D))G=Y;else if(Y!==G&&0!==M)if(0===q)G=Y;else{n=n||h();var Q=/margin|padding|left|right|width|text|word|letter/i.test(z)||/X$/.test(z)||"x"===z?"x":"y";switch(Y){case"%":M*="x"===Q?n.percentToPxWidth:n.percentToPxHeight;break;case"px":break;default:M*=n[Y+"ToPx"]}switch(G){case"%":M*=1/("x"===Q?n.percentToPxWidth:n.percentToPxHeight);break;case"px":break;default:M*=1/n[G+"ToPx"]}}switch(D){case"+":q=M+q;break;case"-":q=M-q;break;case"*":q=M*q;break;case"/":q=M/q}l[z]={rootPropertyValue:B,startValue:M,currentValue:M,endValue:q,unitType:G,easing:$},b.debug&&console.log("tweensContainer ("+z+"): "+JSON.stringify(l[z]),o)}else b.debug&&console.log("Skipping ["+I+"] due to a lack of browser support.")}l.element=o}l.element&&(S.Values.addClass(o,"velocity-animating"),R.push(l),""===s.queue&&(i(o).tweensContainer=l,i(o).opts=s),i(o).isAnimating=!0,V===w-1?(b.State.calls.push([R,g,s,null,k.resolver]),b.State.isTicking===!1&&(b.State.isTicking=!0,c())):V++)}var n,o=this,s=f.extend({},b.defaults,v),l={};switch(i(o)===a&&b.init(o),parseFloat(s.delay)&&s.queue!==!1&&f.queue(o,s.queue,function(e){b.velocityQueueEntryFlag=!0,i(o).delayTimer={setTimeout:setTimeout(e,parseFloat(s.delay)),next:e}}),s.duration.toString().toLowerCase()){case"fast":s.duration=200;break;case"normal":s.duration=h;break;case"slow":s.duration=600;break;default:s.duration=parseFloat(s.duration)||1}b.mock!==!1&&(b.mock===!0?s.duration=s.delay=1:(s.duration*=parseFloat(b.mock)||1,s.delay*=parseFloat(b.mock)||1)),s.easing=u(s.easing,s.duration),s.begin&&!m.isFunction(s.begin)&&(s.begin=null),s.progress&&!m.isFunction(s.progress)&&(s.progress=null),s.complete&&!m.isFunction(s.complete)&&(s.complete=null),s.display!==a&&null!==s.display&&(s.display=s.display.toString().toLowerCase(),"auto"===s.display&&(s.display=b.CSS.Values.getDisplayType(o))),s.visibility!==a&&null!==s.visibility&&(s.visibility=s.visibility.toString().toLowerCase()),s.mobileHA=s.mobileHA&&b.State.isMobile&&!b.State.isGingerbread,s.queue===!1?s.delay?setTimeout(e,s.delay):e():f.queue(o,s.queue,function(t,r){return r===!0?(k.promise&&k.resolver(g),!0):(b.velocityQueueEntryFlag=!0,void e(t))}),""!==s.queue&&"fx"!==s.queue||"inprogress"===f.queue(o)[0]||f.dequeue(o)}var s,l,d,g,y,v,x=arguments[0]&&(arguments[0].p||f.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||m.isString(arguments[0].properties));if(m.isWrapped(this)?(s=!1,d=0,g=this,l=this):(s=!0,d=1,g=x?arguments[0].elements||arguments[0].e:arguments[0]),g=o(g)){x?(y=arguments[0].properties||arguments[0].p,v=arguments[0].options||arguments[0].o):(y=arguments[d],v=arguments[d+1]);var w=g.length,V=0;if(!/^(stop|finish)$/i.test(y)&&!f.isPlainObject(v)){var C=d+1;v={};for(var T=C;T<arguments.length;T++)m.isArray(arguments[T])||!/^(fast|normal|slow)$/i.test(arguments[T])&&!/^\d/.test(arguments[T])?m.isString(arguments[T])||m.isArray(arguments[T])?v.easing=arguments[T]:m.isFunction(arguments[T])&&(v.complete=arguments[T]):v.duration=arguments[T]}var k={promise:null,resolver:null,rejecter:null};s&&b.Promise&&(k.promise=new b.Promise(function(e,t){k.resolver=e,k.rejecter=t}));var A;switch(y){case"scroll":A="scroll";break;case"reverse":A="reverse";break;case"finish":case"stop":f.each(g,function(e,t){i(t)&&i(t).delayTimer&&(clearTimeout(i(t).delayTimer.setTimeout),i(t).delayTimer.next&&i(t).delayTimer.next(),delete i(t).delayTimer)});var F=[];return f.each(b.State.calls,function(e,t){t&&f.each(t[1],function(r,n){var o=v===a?"":v;return o===!0||t[2].queue===o||v===a&&t[2].queue===!1?void f.each(g,function(r,a){a===n&&((v===!0||m.isString(v))&&(f.each(f.queue(a,m.isString(v)?v:""),function(e,t){
  m.isFunction(t)&&t(null,!0)}),f.queue(a,m.isString(v)?v:"",[])),"stop"===y?(i(a)&&i(a).tweensContainer&&o!==!1&&f.each(i(a).tweensContainer,function(e,t){t.endValue=t.currentValue}),F.push(e)):"finish"===y&&(t[2].duration=1))}):!0})}),"stop"===y&&(f.each(F,function(e,t){p(t,!0)}),k.promise&&k.resolver(g)),e();default:if(!f.isPlainObject(y)||m.isEmptyObject(y)){if(m.isString(y)&&b.Redirects[y]){var j=f.extend({},v),E=j.duration,H=j.delay||0;return j.backwards===!0&&(g=f.extend(!0,[],g).reverse()),f.each(g,function(e,t){parseFloat(j.stagger)?j.delay=H+parseFloat(j.stagger)*e:m.isFunction(j.stagger)&&(j.delay=H+j.stagger.call(t,e,w)),j.drag&&(j.duration=parseFloat(E)||(/^(callout|transition)/.test(y)?1e3:h),j.duration=Math.max(j.duration*(j.backwards?1-e/w:(e+1)/w),.75*j.duration,200)),b.Redirects[y].call(t,t,j||{},e,w,g,k.promise?k:a)}),e()}var N="Velocity: First argument ("+y+") was not a property map, a known action, or a registered redirect. Aborting.";return k.promise?k.rejecter(new Error(N)):console.log(N),e()}A="start"}var L={lastParent:null,lastPosition:null,lastFontSize:null,lastPercentToPxWidth:null,lastPercentToPxHeight:null,lastEmToPx:null,remToPx:null,vwToPx:null,vhToPx:null},R=[];f.each(g,function(e,t){m.isNode(t)&&n.call(t)});var z,j=f.extend({},b.defaults,v);if(j.loop=parseInt(j.loop),z=2*j.loop-1,j.loop)for(var O=0;z>O;O++){var q={delay:j.delay,progress:j.progress};O===z-1&&(q.display=j.display,q.visibility=j.visibility,q.complete=j.complete),P(g,"reverse",q)}return e()}};b=f.extend(P,b),b.animate=P;var w=t.requestAnimationFrame||g;return b.State.isMobile||r.hidden===a||r.addEventListener("visibilitychange",function(){r.hidden?(w=function(e){return setTimeout(function(){e(!0)},16)},c()):w=t.requestAnimationFrame||g}),e.Velocity=b,e!==t&&(e.fn.velocity=P,e.fn.velocity.defaults=b.defaults),f.each(["Down","Up"],function(e,t){b.Redirects["slide"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u=l.begin,c=l.complete,p={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},d={};l.display===a&&(l.display="Down"===t?"inline"===b.CSS.Values.getDisplayType(e)?"inline-block":"block":"none"),l.begin=function(){u&&u.call(i,i);for(var r in p){d[r]=e.style[r];var a=b.CSS.getPropertyValue(e,r);p[r]="Down"===t?[a,0]:[0,a]}d.overflow=e.style.overflow,e.style.overflow="hidden"},l.complete=function(){for(var t in d)e.style[t]=d[t];c&&c.call(i,i),s&&s.resolver(i)},b(e,p,l)}}),f.each(["In","Out"],function(e,t){b.Redirects["fade"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u={opacity:"In"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display="In"===t?"auto":"none"),b(this,u,l)}}),b}(window.jQuery||window.Zepto||window,window,document)}));
  ;!function(a,b,c,d){"use strict";function k(a,b,c){return setTimeout(q(a,c),b)}function l(a,b,c){return Array.isArray(a)?(m(a,c[b],c),!0):!1}function m(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function n(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a}function o(a,b){return n(a,b,!0)}function p(a,b,c){var e,d=b.prototype;e=a.prototype=Object.create(d),e.constructor=a,e._super=d,c&&n(e,c)}function q(a,b){return function(){return a.apply(b,arguments)}}function r(a,b){return typeof a==g?a.apply(b?b[0]||d:d,b):a}function s(a,b){return a===d?b:a}function t(a,b,c){m(x(b),function(b){a.addEventListener(b,c,!1)})}function u(a,b,c){m(x(b),function(b){a.removeEventListener(b,c,!1)})}function v(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function w(a,b){return a.indexOf(b)>-1}function x(a){return a.trim().split(/\s+/g)}function y(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function z(a){return Array.prototype.slice.call(a,0)}function A(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];y(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function B(a,b){for(var c,f,g=b[0].toUpperCase()+b.slice(1),h=0;h<e.length;){if(c=e[h],f=c?c+g:b,f in a)return f;h++}return d}function D(){return C++}function E(a){var b=a.ownerDocument;return b.defaultView||b.parentWindow}function ab(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){r(a.options.enable,[a])&&c.handler(b)},this.init()}function bb(a){var b,c=a.options.inputClass;return b=c?c:H?wb:I?Eb:G?Gb:rb,new b(a,cb)}function cb(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&O&&0===d-e,g=b&(Q|R)&&0===d-e;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,db(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function db(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=gb(b)),e>1&&!c.firstMultiple?c.firstMultiple=gb(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=hb(d);b.timeStamp=j(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=lb(h,i),b.distance=kb(h,i),eb(c,b),b.offsetDirection=jb(b.deltaX,b.deltaY),b.scale=g?nb(g.pointers,d):1,b.rotation=g?mb(g.pointers,d):0,fb(c,b);var k=a.element;v(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function eb(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===O||f.eventType===Q)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function fb(a,b){var f,g,h,j,c=a.lastInterval||b,e=b.timeStamp-c.timeStamp;if(b.eventType!=R&&(e>N||c.velocity===d)){var k=c.deltaX-b.deltaX,l=c.deltaY-b.deltaY,m=ib(e,k,l);g=m.x,h=m.y,f=i(m.x)>i(m.y)?m.x:m.y,j=jb(k,l),a.lastInterval=b}else f=c.velocity,g=c.velocityX,h=c.velocityY,j=c.direction;b.velocity=f,b.velocityX=g,b.velocityY=h,b.direction=j}function gb(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:h(a.pointers[c].clientX),clientY:h(a.pointers[c].clientY)},c++;return{timeStamp:j(),pointers:b,center:hb(b),deltaX:a.deltaX,deltaY:a.deltaY}}function hb(a){var b=a.length;if(1===b)return{x:h(a[0].clientX),y:h(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:h(c/b),y:h(d/b)}}function ib(a,b,c){return{x:b/a||0,y:c/a||0}}function jb(a,b){return a===b?S:i(a)>=i(b)?a>0?T:U:b>0?V:W}function kb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function lb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function mb(a,b){return lb(b[1],b[0],_)-lb(a[1],a[0],_)}function nb(a,b){return kb(b[0],b[1],_)/kb(a[0],a[1],_)}function rb(){this.evEl=pb,this.evWin=qb,this.allow=!0,this.pressed=!1,ab.apply(this,arguments)}function wb(){this.evEl=ub,this.evWin=vb,ab.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Ab(){this.evTarget=yb,this.evWin=zb,this.started=!1,ab.apply(this,arguments)}function Bb(a,b){var c=z(a.touches),d=z(a.changedTouches);return b&(Q|R)&&(c=A(c.concat(d),"identifier",!0)),[c,d]}function Eb(){this.evTarget=Db,this.targetIds={},ab.apply(this,arguments)}function Fb(a,b){var c=z(a.touches),d=this.targetIds;if(b&(O|P)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=z(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return v(a.target,i)}),b===O)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Q|R)&&delete d[g[e].identifier],e++;return h.length?[A(f.concat(h),"identifier",!0),h]:void 0}function Gb(){ab.apply(this,arguments);var a=q(this.handler,this);this.touch=new Eb(this.manager,a),this.mouse=new rb(this.manager,a)}function Pb(a,b){this.manager=a,this.set(b)}function Qb(a){if(w(a,Mb))return Mb;var b=w(a,Nb),c=w(a,Ob);return b&&c?Nb+" "+Ob:b||c?b?Nb:Ob:w(a,Lb)?Lb:Kb}function Yb(a){this.id=D(),this.manager=null,this.options=o(a||{},this.defaults),this.options.enable=s(this.options.enable,!0),this.state=Rb,this.simultaneous={},this.requireFail=[]}function Zb(a){return a&Wb?"cancel":a&Ub?"end":a&Tb?"move":a&Sb?"start":""}function $b(a){return a==W?"down":a==V?"up":a==T?"left":a==U?"right":""}function _b(a,b){var c=b.manager;return c?c.get(a):a}function ac(){Yb.apply(this,arguments)}function bc(){ac.apply(this,arguments),this.pX=null,this.pY=null}function cc(){ac.apply(this,arguments)}function dc(){Yb.apply(this,arguments),this._timer=null,this._input=null}function ec(){ac.apply(this,arguments)}function fc(){ac.apply(this,arguments)}function gc(){Yb.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function hc(a,b){return b=b||{},b.recognizers=s(b.recognizers,hc.defaults.preset),new kc(a,b)}function kc(a,b){b=b||{},this.options=o(b,hc.defaults),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=bb(this),this.touchAction=new Pb(this,this.options.touchAction),lc(this,!0),m(b.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function lc(a,b){var c=a.element;m(a.options.cssProps,function(a,d){c.style[B(c.style,d)]=b?a:""})}function mc(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var e=["","webkit","moz","MS","ms","o"],f=b.createElement("div"),g="function",h=Math.round,i=Math.abs,j=Date.now,C=1,F=/mobile|tablet|ip(ad|hone|od)|android/i,G="ontouchstart"in a,H=B(a,"PointerEvent")!==d,I=G&&F.test(navigator.userAgent),J="touch",K="pen",L="mouse",M="kinect",N=25,O=1,P=2,Q=4,R=8,S=1,T=2,U=4,V=8,W=16,X=T|U,Y=V|W,Z=X|Y,$=["x","y"],_=["clientX","clientY"];ab.prototype={handler:function(){},init:function(){this.evEl&&t(this.element,this.evEl,this.domHandler),this.evTarget&&t(this.target,this.evTarget,this.domHandler),this.evWin&&t(E(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&u(this.element,this.evEl,this.domHandler),this.evTarget&&u(this.target,this.evTarget,this.domHandler),this.evWin&&u(E(this.element),this.evWin,this.domHandler)}};var ob={mousedown:O,mousemove:P,mouseup:Q},pb="mousedown",qb="mousemove mouseup";p(rb,ab,{handler:function(a){var b=ob[a.type];b&O&&0===a.button&&(this.pressed=!0),b&P&&1!==a.which&&(b=Q),this.pressed&&this.allow&&(b&Q&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:L,srcEvent:a}))}});var sb={pointerdown:O,pointermove:P,pointerup:Q,pointercancel:R,pointerout:R},tb={2:J,3:K,4:L,5:M},ub="pointerdown",vb="pointermove pointerup pointercancel";a.MSPointerEvent&&(ub="MSPointerDown",vb="MSPointerMove MSPointerUp MSPointerCancel"),p(wb,ab,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=sb[d],f=tb[a.pointerType]||a.pointerType,g=f==J,h=y(b,a.pointerId,"pointerId");e&O&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Q|R)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var xb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},yb="touchstart",zb="touchstart touchmove touchend touchcancel";p(Ab,ab,{handler:function(a){var b=xb[a.type];if(b===O&&(this.started=!0),this.started){var c=Bb.call(this,a,b);b&(Q|R)&&0===c[0].length-c[1].length&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}});var Cb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},Db="touchstart touchmove touchend touchcancel";p(Eb,ab,{handler:function(a){var b=Cb[a.type],c=Fb.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}),p(Gb,ab,{handler:function(a,b,c){var d=c.pointerType==J,e=c.pointerType==L;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Q|R)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Hb=B(f.style,"touchAction"),Ib=Hb!==d,Jb="compute",Kb="auto",Lb="manipulation",Mb="none",Nb="pan-x",Ob="pan-y";Pb.prototype={set:function(a){a==Jb&&(a=this.compute()),Ib&&(this.manager.element.style[Hb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return m(this.manager.recognizers,function(b){r(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),Qb(a.join(" "))},preventDefaults:function(a){if(!Ib){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return b.preventDefault(),void 0;var d=this.actions,e=w(d,Mb),f=w(d,Ob),g=w(d,Nb);return e||f&&c&X||g&&c&Y?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var Rb=1,Sb=2,Tb=4,Ub=8,Vb=Ub,Wb=16,Xb=32;Yb.prototype={defaults:{},set:function(a){return n(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(l(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=_b(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return l(a,"dropRecognizeWith",this)?this:(a=_b(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(l(a,"requireFailure",this))return this;var b=this.requireFail;return a=_b(a,this),-1===y(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(l(a,"dropRequireFailure",this))return this;a=_b(a,this);var b=y(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function d(d){b.manager.emit(b.options.event+(d?Zb(c):""),a)}var b=this,c=this.state;Ub>c&&d(!0),d(),c>=Ub&&d(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):(this.state=Xb,void 0)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(Xb|Rb)))return!1;a++}return!0},recognize:function(a){var b=n({},a);return r(this.options.enable,[this,b])?(this.state&(Vb|Wb|Xb)&&(this.state=Rb),this.state=this.process(b),this.state&(Sb|Tb|Ub|Wb)&&this.tryEmit(b),void 0):(this.reset(),this.state=Xb,void 0)},process:function(){},getTouchAction:function(){},reset:function(){}},p(ac,Yb,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(Sb|Tb),e=this.attrTest(a);return d&&(c&R||!e)?b|Wb:d||e?c&Q?b|Ub:b&Sb?b|Tb:Sb:Xb}}),p(bc,ac,{defaults:{event:"pan",threshold:10,pointers:1,direction:Z},getTouchAction:function(){var a=this.options.direction,b=[];return a&X&&b.push(Ob),a&Y&&b.push(Nb),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&X?(e=0===f?S:0>f?T:U,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?S:0>g?V:W,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return ac.prototype.attrTest.call(this,a)&&(this.state&Sb||!(this.state&Sb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),p(cc,ac,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&Sb)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),p(dc,Yb,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[Kb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,e=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Q|R)&&!e)this.reset();else if(a.eventType&O)this.reset(),this._timer=k(function(){this.state=Vb,this.tryEmit()},b.time,this);else if(a.eventType&Q)return Vb;return Xb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===Vb&&(a&&a.eventType&Q?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=j(),this.manager.emit(this.options.event,this._input)))}}),p(ec,ac,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&Sb)}}),p(fc,ac,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:X|Y,pointers:1},getTouchAction:function(){return bc.prototype.getTouchAction.call(this)},attrTest:function(a){var c,b=this.options.direction;return b&(X|Y)?c=a.velocity:b&X?c=a.velocityX:b&Y&&(c=a.velocityY),this._super.attrTest.call(this,a)&&b&a.direction&&a.distance>this.options.threshold&&i(c)>this.options.velocity&&a.eventType&Q},emit:function(a){var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),p(gc,Yb,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[Lb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,e=a.deltaTime<b.time;if(this.reset(),a.eventType&O&&0===this.count)return this.failTimeout();if(d&&e&&c){if(a.eventType!=Q)return this.failTimeout();var f=this.pTime?a.timeStamp-this.pTime<b.interval:!0,g=!this.pCenter||kb(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,g&&f?this.count+=1:this.count=1,this._input=a;var h=this.count%b.taps;if(0===h)return this.hasRequireFailures()?(this._timer=k(function(){this.state=Vb,this.tryEmit()},b.interval,this),Sb):Vb}return Xb},failTimeout:function(){return this._timer=k(function(){this.state=Xb},this.options.interval,this),Xb},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==Vb&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),hc.VERSION="2.0.4",hc.defaults={domEvents:!1,touchAction:Jb,enable:!0,inputTarget:null,inputClass:null,preset:[[ec,{enable:!1}],[cc,{enable:!1},["rotate"]],[fc,{direction:X}],[bc,{direction:X},["swipe"]],[gc],[gc,{event:"doubletap",taps:2},["tap"]],[dc]],cssProps:{userSelect:"default",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var ic=1,jc=2;kc.prototype={set:function(a){return n(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?jc:ic},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&Vb)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===jc||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(Sb|Tb|Ub)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof Yb)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(l(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(l(a,"remove",this))return this;var b=this.recognizers;return a=this.get(a),b.splice(y(b,a),1),this.touchAction.update(),this},on:function(a,b){var c=this.handlers;return m(x(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this},off:function(a,b){var c=this.handlers;return m(x(a),function(a){b?c[a].splice(y(c[a],b),1):delete c[a]}),this},emit:function(a,b){this.options.domEvents&&mc(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&lc(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},n(hc,{INPUT_START:O,INPUT_MOVE:P,INPUT_END:Q,INPUT_CANCEL:R,STATE_POSSIBLE:Rb,STATE_BEGAN:Sb,STATE_CHANGED:Tb,STATE_ENDED:Ub,STATE_RECOGNIZED:Vb,STATE_CANCELLED:Wb,STATE_FAILED:Xb,DIRECTION_NONE:S,DIRECTION_LEFT:T,DIRECTION_RIGHT:U,DIRECTION_UP:V,DIRECTION_DOWN:W,DIRECTION_HORIZONTAL:X,DIRECTION_VERTICAL:Y,DIRECTION_ALL:Z,Manager:kc,Input:ab,TouchAction:Pb,TouchInput:Eb,MouseInput:rb,PointerEventInput:wb,TouchMouseInput:Gb,SingleTouchInput:Ab,Recognizer:Yb,AttrRecognizer:ac,Tap:gc,Pan:bc,Swipe:fc,Pinch:cc,Rotate:ec,Press:dc,on:t,off:u,each:m,merge:o,extend:n,inherit:p,bindFn:q,prefixed:B}),typeof define==g&&define.amd?define(function(){return hc}):"undefined"!=typeof module&&module.exports?module.exports=hc:a[c]=hc}(window,document,"Hammer");;(function(factory) {
      if (typeof define === 'function' && define.amd) {
          define(['jquery', 'hammerjs'], factory);
      } else if (typeof exports === 'object') {
          factory(require('jquery'), require('hammerjs'));
      } else {
          factory(jQuery, Hammer);
      }
  }(function($, Hammer) {
      function hammerify(el, options) {
          var $el = $(el);
          if(!$el.data("hammer")) {
              $el.data("hammer", new Hammer($el[0], options));
          }
      }
  
      $.fn.hammer = function(options) {
          return this.each(function() {
              hammerify(this, options);
          });
      };
  
      // extend the emit method to also trigger jQuery events
      Hammer.Manager.prototype.emit = (function(originalEmit) {
          return function(type, data) {
              originalEmit.call(this, type, data);
              $(this.element).trigger({
                  type: type,
                  gesture: data
              });
          };
      })(Hammer.Manager.prototype.emit);
  }));
  ;// Required for Meteor package, the use of window prevents export by Meteor
  (function(window){
    if(window.Package){
      Materialize = {};
    } else {
      window.Materialize = {};
    }
  })(window);
  
  
  /*
   * raf.js
   * https://github.com/ngryman/raf.js
   *
   * original requestAnimationFrame polyfill by Erik Möller
   * inspired from paul_irish gist and post
   *
   * Copyright (c) 2013 ngryman
   * Licensed under the MIT license.
   */
  (function(window) {
    var lastTime = 0,
      vendors = ['webkit', 'moz'],
      requestAnimationFrame = window.requestAnimationFrame,
      cancelAnimationFrame = window.cancelAnimationFrame,
      i = vendors.length;
  
    // try to un-prefix existing raf
    while (--i >= 0 && !requestAnimationFrame) {
      requestAnimationFrame = window[vendors[i] + 'RequestAnimationFrame'];
      cancelAnimationFrame = window[vendors[i] + 'CancelRequestAnimationFrame'];
    }
  
    // polyfill with setTimeout fallback
    // heavily inspired from @darius gist mod: https://gist.github.com/paulirish/1579671#comment-837945
    if (!requestAnimationFrame || !cancelAnimationFrame) {
      requestAnimationFrame = function(callback) {
        var now = +Date.now(),
          nextTime = Math.max(lastTime + 16, now);
        return setTimeout(function() {
          callback(lastTime = nextTime);
        }, nextTime - now);
      };
  
      cancelAnimationFrame = clearTimeout;
    }
  
    // export to window
    window.requestAnimationFrame = requestAnimationFrame;
    window.cancelAnimationFrame = cancelAnimationFrame;
  }(window));
  
  
  /**
   * Generate approximated selector string for a jQuery object
   * @param {jQuery} obj  jQuery object to be parsed
   * @returns {string}
   */
  Materialize.objectSelectorString = function(obj) {
    var tagStr = obj.prop('tagName') || '';
    var idStr = obj.attr('id') || '';
    var classStr = obj.attr('class') || '';
    return (tagStr + idStr + classStr).replace(/\s/g,'');
  };
  
  
  // Unique Random ID
  Materialize.guid = (function() {
    function s4() {
      return Math.floor((1 + Math.random()) * 0x10000)
        .toString(16)
        .substring(1);
    }
    return function() {
      return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
             s4() + '-' + s4() + s4() + s4();
    };
  })();
  
  /**
   * Escapes hash from special characters
   * @param {string} hash  String returned from this.hash
   * @returns {string}
   */
  Materialize.escapeHash = function(hash) {
    return hash.replace( /(:|\.|\[|\]|,|=)/g, "\\$1" );
  };
  
  Materialize.elementOrParentIsFixed = function(element) {
      var $element = $(element);
      var $checkElements = $element.add($element.parents());
      var isFixed = false;
      $checkElements.each(function(){
          if ($(this).css("position") === "fixed") {
              isFixed = true;
              return false;
          }
      });
      return isFixed;
  };
  
  
  /**
   * Get time in ms
   * @license https://raw.github.com/jashkenas/underscore/master/LICENSE
   * @type {function}
   * @return {number}
   */
  var getTime = (Date.now || function () {
    return new Date().getTime();
  });
  
  
  /**
   * Returns a function, that, when invoked, will only be triggered at most once
   * during a given window of time. Normally, the throttled function will run
   * as much as it can, without ever going more than once per `wait` duration;
   * but if you'd like to disable the execution on the leading edge, pass
   * `{leading: false}`. To disable execution on the trailing edge, ditto.
   * @license https://raw.github.com/jashkenas/underscore/master/LICENSE
   * @param {function} func
   * @param {number} wait
   * @param {Object=} options
   * @returns {Function}
   */
  Materialize.throttle = function(func, wait, options) {
    var context, args, result;
    var timeout = null;
    var previous = 0;
    options || (options = {});
    var later = function () {
      previous = options.leading === false ? 0 : getTime();
      timeout = null;
      result = func.apply(context, args);
      context = args = null;
    };
    return function () {
      var now = getTime();
      if (!previous && options.leading === false) previous = now;
      var remaining = wait - (now - previous);
      context = this;
      args = arguments;
      if (remaining <= 0) {
        clearTimeout(timeout);
        timeout = null;
        previous = now;
        result = func.apply(context, args);
        context = args = null;
      } else if (!timeout && options.trailing !== false) {
        timeout = setTimeout(later, remaining);
      }
      return result;
    };
  };
  
  
  // Velocity has conflicts when loaded with jQuery, this will check for it
  // First, check if in noConflict mode
  var Vel;
  if (jQuery) {
    Vel = jQuery.Velocity;
  } else if ($) {
    Vel = $.Velocity;
  } else {
    Vel = Velocity;
  }
  ;(function ($) {
    $.fn.collapsible = function(options, methodParam) {
      var defaults = {
        accordion: undefined,
        onOpen: undefined,
        onClose: undefined
      };
  
      var methodName = options;
      options = $.extend(defaults, options);
  
  
      return this.each(function() {
  
        var $this = $(this);
  
        var $panel_headers = $(this).find('> li > .collapsible-header');
  
        var collapsible_type = $this.data("collapsible");
  
        /****************
        Helper Functions
        ****************/
  
        // Accordion Open
        function accordionOpen(object) {
          $panel_headers = $this.find('> li > .collapsible-header');
          if (object.hasClass('active')) {
            object.parent().addClass('active');
          }
          else {
            object.parent().removeClass('active');
          }
          if (object.parent().hasClass('active')){
            object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}});
          }
          else{
            object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}});
          }
  
          $panel_headers.not(object).removeClass('active').parent().removeClass('active');
  
          // Close previously open accordion elements.
          $panel_headers.not(object).parent().children('.collapsible-body').stop(true,false).each(function() {
            if ($(this).is(':visible')) {
              $(this).slideUp({
                duration: 350,
                easing: "easeOutQuart",
                queue: false,
                complete:
                  function() {
                    $(this).css('height', '');
                    execCallbacks($(this).siblings('.collapsible-header'));
                  }
              });
            }
          });
        }
  
        // Expandable Open
        function expandableOpen(object) {
          if (object.hasClass('active')) {
            object.parent().addClass('active');
          }
          else {
            object.parent().removeClass('active');
          }
          if (object.parent().hasClass('active')){
            object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}});
          }
          else {
            object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}});
          }
        }
  
        // Open collapsible. object: .collapsible-header
        function collapsibleOpen(object, noToggle) {
          if (!noToggle) {
            object.toggleClass('active');
          }
  
          if (options.accordion || collapsible_type === "accordion" || collapsible_type === undefined) { // Handle Accordion
            accordionOpen(object);
          } else { // Handle Expandables
            expandableOpen(object);
          }
  
          execCallbacks(object);
        }
  
        // Handle callbacks
        function execCallbacks(object) {
          if (object.hasClass('active')) {
            if (typeof(options.onOpen) === "function") {
              options.onOpen.call(this, object.parent());
            }
          } else {
            if (typeof(options.onClose) === "function") {
              options.onClose.call(this, object.parent());
            }
          }
        }
  
        /**
         * Check if object is children of panel header
         * @param  {Object}  object Jquery object
         * @return {Boolean} true if it is children
         */
        function isChildrenOfPanelHeader(object) {
  
          var panelHeader = getPanelHeader(object);
  
          return panelHeader.length > 0;
        }
  
        /**
         * Get panel header from a children element
         * @param  {Object} object Jquery object
         * @return {Object} panel header object
         */
        function getPanelHeader(object) {
  
          return object.closest('li > .collapsible-header');
        }
  
  
        // Turn off any existing event handlers
        function removeEventHandlers() {
          $this.off('click.collapse', '> li > .collapsible-header');
        }
  
        /*****  End Helper Functions  *****/
  
  
        // Methods
        if (methodName === 'destroy') {
          removeEventHandlers();
          return;
        } else if (methodParam >= 0 &&
            methodParam < $panel_headers.length) {
          var $curr_header = $panel_headers.eq(methodParam);
          if ($curr_header.length &&
              (methodName === 'open' ||
              (methodName === 'close' &&
              $curr_header.hasClass('active')))) {
            collapsibleOpen($curr_header);
          }
          return;
        }
  
  
        removeEventHandlers();
  
  
        // Add click handler to only direct collapsible header children
        $this.on('click.collapse', '> li > .collapsible-header', function(e) {
          var element = $(e.target);
  
          if (isChildrenOfPanelHeader(element)) {
            element = getPanelHeader(element);
          }
  
          collapsibleOpen(element);
        });
  
  
        // Open first active
        if (options.accordion || collapsible_type === "accordion" || collapsible_type === undefined) { // Handle Accordion
          collapsibleOpen($panel_headers.filter('.active').first(), true);
  
        } else { // Handle Expandables
          $panel_headers.filter('.active').each(function() {
            collapsibleOpen($(this), true);
          });
        }
  
      });
    };
  
    $(document).ready(function(){
      $('.collapsible').collapsible();
    });
  }( jQuery ));;(function ($) {
  
    // Add posibility to scroll to selected option
    // usefull for select for example
    $.fn.scrollTo = function(elem) {
      $(this).scrollTop($(this).scrollTop() - $(this).offset().top + $(elem).offset().top);
      return this;
    };
  
    $.fn.dropdown = function (options) {
      var defaults = {
        inDuration: 300,
        outDuration: 225,
        constrainWidth: true, // Constrains width of dropdown to the activator
        hover: false,
        gutter: 0, // Spacing from edge
        belowOrigin: false,
        alignment: 'left',
        stopPropagation: false
      };
  
      // Open dropdown.
      if (options === "open") {
        this.each(function() {
          $(this).trigger('open');
        });
        return false;
      }
  
      // Close dropdown.
      if (options === "close") {
        this.each(function() {
          $(this).trigger('close');
        });
        return false;
      }
  
      this.each(function(){
        var origin = $(this);
        var curr_options = $.extend({}, defaults, options);
        var isFocused = false;
  
        // Dropdown menu
        var activates = $("#"+ origin.attr('data-activates'));
  
        function updateOptions() {
          if (origin.data('induration') !== undefined)
            curr_options.inDuration = origin.data('induration');
          if (origin.data('outduration') !== undefined)
            curr_options.outDuration = origin.data('outduration');
          if (origin.data('constrainwidth') !== undefined)
            curr_options.constrainWidth = origin.data('constrainwidth');
          if (origin.data('hover') !== undefined)
            curr_options.hover = origin.data('hover');
          if (origin.data('gutter') !== undefined)
            curr_options.gutter = origin.data('gutter');
          if (origin.data('beloworigin') !== undefined)
            curr_options.belowOrigin = origin.data('beloworigin');
          if (origin.data('alignment') !== undefined)
            curr_options.alignment = origin.data('alignment');
          if (origin.data('stoppropagation') !== undefined)
            curr_options.stopPropagation = origin.data('stoppropagation');
        }
  
        updateOptions();
  
        // Attach dropdown to its activator
        origin.after(activates);
  
        /*
          Helper function to position and resize dropdown.
          Used in hover and click handler.
        */
        function placeDropdown(eventType) {
          // Check for simultaneous focus and click events.
          if (eventType === 'focus') {
            isFocused = true;
          }
  
          // Check html data attributes
          updateOptions();
  
          // Set Dropdown state
          activates.addClass('active');
          origin.addClass('active');
  
          // Constrain width
          if (curr_options.constrainWidth === true) {
            activates.css('width', origin.outerWidth());
  
          } else {
            activates.css('white-space', 'nowrap');
          }
  
          // Offscreen detection
          var windowHeight = window.innerHeight;
          var originHeight = origin.innerHeight();
          var offsetLeft = origin.offset().left;
          var offsetTop = origin.offset().top - $(window).scrollTop();
          var currAlignment = curr_options.alignment;
          var gutterSpacing = 0;
          var leftPosition = 0;
  
          // Below Origin
          var verticalOffset = 0;
          if (curr_options.belowOrigin === true) {
            verticalOffset = originHeight;
          }
  
          // Check for scrolling positioned container.
          var scrollYOffset = 0;
          var scrollXOffset = 0;
          var wrapper = origin.parent();
          if (!wrapper.is('body')) {
            if (wrapper[0].scrollHeight > wrapper[0].clientHeight) {
              scrollYOffset = wrapper[0].scrollTop;
            }
            if (wrapper[0].scrollWidth > wrapper[0].clientWidth) {
              scrollXOffset = wrapper[0].scrollLeft;
            }
          }
  
  
          if (offsetLeft + activates.innerWidth() > $(window).width()) {
            // Dropdown goes past screen on right, force right alignment
            currAlignment = 'right';
  
          } else if (offsetLeft - activates.innerWidth() + origin.innerWidth() < 0) {
            // Dropdown goes past screen on left, force left alignment
            currAlignment = 'left';
          }
          // Vertical bottom offscreen detection
          if (offsetTop + activates.innerHeight() > windowHeight) {
            // If going upwards still goes offscreen, just crop height of dropdown.
            if (offsetTop + originHeight - activates.innerHeight() < 0) {
              var adjustedHeight = windowHeight - offsetTop - verticalOffset;
              activates.css('max-height', adjustedHeight);
            } else {
              // Flow upwards.
              if (!verticalOffset) {
                verticalOffset += originHeight;
              }
              verticalOffset -= activates.innerHeight();
            }
          }
  
          // Handle edge alignment
          if (currAlignment === 'left') {
            gutterSpacing = curr_options.gutter;
            leftPosition = origin.position().left + gutterSpacing;
          }
          else if (currAlignment === 'right') {
            var offsetRight = origin.position().left + origin.outerWidth() - activates.outerWidth();
            gutterSpacing = -curr_options.gutter;
            leftPosition =  offsetRight + gutterSpacing;
          }
  
          // Position dropdown
          activates.css({
            position: 'absolute',
            top: origin.position().top + verticalOffset + scrollYOffset,
            left: leftPosition + scrollXOffset
          });
  
  
          // Show dropdown
          activates.stop(true, true).css('opacity', 0)
            .slideDown({
              queue: false,
              duration: curr_options.inDuration,
              easing: 'easeOutCubic',
              complete: function() {
                $(this).css('height', '');
              }
            })
            .animate( {opacity: 1}, {queue: false, duration: curr_options.inDuration, easing: 'easeOutSine'});
  
          // Add click close handler to document
          setTimeout(function() {
            $(document).bind('click.'+ activates.attr('id'), function (e) {
              hideDropdown();
              $(document).unbind('click.'+ activates.attr('id'));
            });
          }, 0);
        }
  
        function hideDropdown() {
          // Check for simultaneous focus and click events.
          isFocused = false;
          activates.fadeOut(curr_options.outDuration);
          activates.removeClass('active');
          origin.removeClass('active');
          $(document).unbind('click.'+ activates.attr('id'));
          setTimeout(function() { activates.css('max-height', ''); }, curr_options.outDuration);
        }
  
        // Hover
        if (curr_options.hover) {
          var open = false;
          origin.unbind('click.' + origin.attr('id'));
          // Hover handler to show dropdown
          origin.on('mouseenter', function(e){ // Mouse over
            if (open === false) {
              placeDropdown();
              open = true;
            }
          });
          origin.on('mouseleave', function(e){
            // If hover on origin then to something other than dropdown content, then close
            var toEl = e.toElement || e.relatedTarget; // added browser compatibility for target element
            if(!$(toEl).closest('.dropdown-content').is(activates)) {
              activates.stop(true, true);
              hideDropdown();
              open = false;
            }
          });
  
          activates.on('mouseleave', function(e){ // Mouse out
            var toEl = e.toElement || e.relatedTarget;
            if(!$(toEl).closest('.dropdown-button').is(origin)) {
              activates.stop(true, true);
              hideDropdown();
              open = false;
            }
          });
  
          // Click
        } else {
          // Click handler to show dropdown
          origin.unbind('click.' + origin.attr('id'));
          origin.bind('click.'+origin.attr('id'), function(e){
            if (!isFocused) {
              if ( origin[0] == e.currentTarget &&
                   !origin.hasClass('active') &&
                   ($(e.target).closest('.dropdown-content').length === 0)) {
                e.preventDefault(); // Prevents button click from moving window
                if (curr_options.stopPropagation) {
                  e.stopPropagation();
                }
                placeDropdown('click');
              }
              // If origin is clicked and menu is open, close menu
              else if (origin.hasClass('active')) {
                hideDropdown();
                $(document).unbind('click.'+ activates.attr('id'));
              }
            }
          });
  
        } // End else
  
        // Listen to open and close event - useful for select component
        origin.on('open', function(e, eventType) {
          placeDropdown(eventType);
        });
        origin.on('close', hideDropdown);
  
  
      });
    }; // End dropdown plugin
  
    $(document).ready(function(){
      $('.dropdown-button').dropdown();
    });
  }( jQuery ));
  ;(function($) {
    var _stack = 0,
    _lastID = 0,
    _generateID = function() {
      _lastID++;
      return 'materialize-modal-overlay-' + _lastID;
    };
  
    var methods = {
      init : function(options) {
        var defaults = {
          opacity: 0.5,
          inDuration: 350,
          outDuration: 250,
          ready: undefined,
          complete: undefined,
          dismissible: true,
          startingTop: '4%',
          endingTop: '10%'
        };
  
        // Override defaults
        options = $.extend(defaults, options);
  
        return this.each(function() {
          var $modal = $(this);
          var modal_id = $(this).attr("id") || '#' + $(this).data('target');
  
          var closeModal = function() {
            var overlayID = $modal.data('overlay-id');
            var $overlay = $('#' + overlayID);
            $modal.removeClass('open');
  
            // Enable scrolling
            $('body').css({
              overflow: '',
              width: ''
            });
  
            $modal.find('.modal-close').off('click.close');
            $(document).off('keyup.modal' + overlayID);
  
            $overlay.velocity( { opacity: 0}, {duration: options.outDuration, queue: false, ease: "easeOutQuart"});
  
  
            // Define Bottom Sheet animation
            var exitVelocityOptions = {
              duration: options.outDuration,
              queue: false,
              ease: "easeOutCubic",
              // Handle modal ready callback
              complete: function() {
                $(this).css({display:"none"});
  
                // Call complete callback
                if (typeof(options.complete) === "function") {
                  options.complete.call(this, $modal);
                }
                $overlay.remove();
                _stack--;
              }
            };
            if ($modal.hasClass('bottom-sheet')) {
              $modal.velocity({bottom: "-100%", opacity: 0}, exitVelocityOptions);
            }
            else {
              $modal.velocity(
                { top: options.startingTop, opacity: 0, scaleX: 0.7},
                exitVelocityOptions
              );
            }
          };
  
          var openModal = function($trigger) {
            var $body = $('body');
            var oldWidth = $body.innerWidth();
            $body.css('overflow', 'hidden');
            $body.width(oldWidth);
  
            if ($modal.hasClass('open')) {
              return;
            }
  
            var overlayID = _generateID();
            var $overlay = $('<div class="modal-overlay"></div>');
            lStack = (++_stack);
  
            // Store a reference of the overlay
            $overlay.attr('id', overlayID).css('z-index', 1000 + lStack * 2);
            $modal.data('overlay-id', overlayID).css('z-index', 1000 + lStack * 2 + 1);
            $modal.addClass('open');
  
            $("body").append($overlay);
  
            if (options.dismissible) {
              $overlay.click(function() {
                closeModal();
              });
              // Return on ESC
              $(document).on('keyup.modal' + overlayID, function(e) {
                if (e.keyCode === 27) {   // ESC key
                  closeModal();
                }
              });
            }
  
            $modal.find(".modal-close").on('click.close', function(e) {
              closeModal();
            });
  
            $overlay.css({ display : "block", opacity : 0 });
  
            $modal.css({
              display : "block",
              opacity: 0
            });
  
            $overlay.velocity({opacity: options.opacity}, {duration: options.inDuration, queue: false, ease: "easeOutCubic"});
            $modal.data('associated-overlay', $overlay[0]);
  
            // Define Bottom Sheet animation
            var enterVelocityOptions = {
              duration: options.inDuration,
              queue: false,
              ease: "easeOutCubic",
              // Handle modal ready callback
              complete: function() {
                if (typeof(options.ready) === "function") {
                  options.ready.call(this, $modal, $trigger);
                }
              }
            };
            if ($modal.hasClass('bottom-sheet')) {
              $modal.velocity({bottom: "0", opacity: 1}, enterVelocityOptions);
            }
            else {
              $.Velocity.hook($modal, "scaleX", 0.7);
              $modal.css({ top: options.startingTop });
              $modal.velocity({top: options.endingTop, opacity: 1, scaleX: '1'}, enterVelocityOptions);
            }
  
          };
  
          // Reset handlers
          $(document).off('click.modalTrigger', 'a[href="#' + modal_id + '"], [data-target="' + modal_id + '"]');
          $(this).off('openModal');
          $(this).off('closeModal');
  
          // Close Handlers
          $(document).on('click.modalTrigger', 'a[href="#' + modal_id + '"], [data-target="' + modal_id + '"]', function(e) {
            options.startingTop = ($(this).offset().top - $(window).scrollTop()) /1.15;
            openModal($(this));
            e.preventDefault();
          }); // done set on click
  
          $(this).on('openModal', function() {
            var modal_id = $(this).attr("href") || '#' + $(this).data('target');
            openModal();
          });
  
          $(this).on('closeModal', function() {
            closeModal();
          });
        }); // done return
      },
      open : function() {
        $(this).trigger('openModal');
      },
      close : function() {
        $(this).trigger('closeModal');
      }
    };
  
    $.fn.modal = function(methodOrOptions) {
      if ( methods[methodOrOptions] ) {
        return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));
      } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
        // Default to "init"
        return methods.init.apply( this, arguments );
      } else {
        $.error( 'Method ' +  methodOrOptions + ' does not exist on jQuery.modal' );
      }
    };
  })(jQuery);
  ;(function ($) {
  
    $.fn.materialbox = function () {
  
      return this.each(function() {
  
        if ($(this).hasClass('initialized')) {
          return;
        }
  
        $(this).addClass('initialized');
  
        var overlayActive = false;
        var doneAnimating = true;
        var inDuration = 275;
        var outDuration = 200;
        var origin = $(this);
        var placeholder = $('<div></div>').addClass('material-placeholder');
        var originalWidth = 0;
        var originalHeight = 0;
        var ancestorsChanged;
        var ancestor;
        var originInlineStyles = origin.attr('style');
        origin.wrap(placeholder);
  
  
        origin.on('click', function(){
          var placeholder = origin.parent('.material-placeholder');
          var windowWidth = window.innerWidth;
          var windowHeight = window.innerHeight;
          var originalWidth = origin.width();
          var originalHeight = origin.height();
  
  
          // If already modal, return to original
          if (doneAnimating === false) {
            returnToOriginal();
            return false;
          }
          else if (overlayActive && doneAnimating===true) {
            returnToOriginal();
            return false;
          }
  
  
          // Set states
          doneAnimating = false;
          origin.addClass('active');
          overlayActive = true;
  
          // Set positioning for placeholder
          placeholder.css({
            width: placeholder[0].getBoundingClientRect().width,
            height: placeholder[0].getBoundingClientRect().height,
            position: 'relative',
            top: 0,
            left: 0
          });
  
          // Find ancestor with overflow: hidden; and remove it
          ancestorsChanged = undefined;
          ancestor = placeholder[0].parentNode;
          var count = 0;
          while (ancestor !== null && !$(ancestor).is(document)) {
            var curr = $(ancestor);
            if (curr.css('overflow') !== 'visible') {
              curr.css('overflow', 'visible');
              if (ancestorsChanged === undefined) {
                ancestorsChanged = curr;
              }
              else {
                ancestorsChanged = ancestorsChanged.add(curr);
              }
            }
            ancestor = ancestor.parentNode;
          }
  
          // Set css on origin
          origin.css({
            position: 'absolute',
            'z-index': 1000,
            'will-change': 'left, top, width, height'
          })
          .data('width', originalWidth)
          .data('height', originalHeight);
  
          // Add overlay
          var overlay = $('<div id="materialbox-overlay"></div>')
            .css({
              opacity: 0
            })
            .click(function(){
              if (doneAnimating === true)
              returnToOriginal();
            });
  
          // Put before in origin image to preserve z-index layering.
          origin.before(overlay);
  
          // Set dimensions if needed
          var overlayOffset = overlay[0].getBoundingClientRect();
          overlay.css({
            width: windowWidth,
            height: windowHeight,
            left: -1 * overlayOffset.left,
            top: -1 * overlayOffset.top
          })
  
          // Animate Overlay
          overlay.velocity({opacity: 1},
                             {duration: inDuration, queue: false, easing: 'easeOutQuad'} );
  
          // Add and animate caption if it exists
          if (origin.data('caption') !== "") {
            var $photo_caption = $('<div class="materialbox-caption"></div>');
            $photo_caption.text(origin.data('caption'));
            $('body').append($photo_caption);
            $photo_caption.css({ "display": "inline" });
            $photo_caption.velocity({opacity: 1}, {duration: inDuration, queue: false, easing: 'easeOutQuad'});
          }
  
          // Resize Image
          var ratio = 0;
          var widthPercent = originalWidth / windowWidth;
          var heightPercent = originalHeight / windowHeight;
          var newWidth = 0;
          var newHeight = 0;
  
          if (widthPercent > heightPercent) {
            ratio = originalHeight / originalWidth;
            newWidth = windowWidth * 0.9;
            newHeight = windowWidth * 0.9 * ratio;
          }
          else {
            ratio = originalWidth / originalHeight;
            newWidth = (windowHeight * 0.9) * ratio;
            newHeight = windowHeight * 0.9;
          }
  
          // Animate image + set z-index
          if(origin.hasClass('responsive-img')) {
            origin.velocity({'max-width': newWidth, 'width': originalWidth}, {duration: 0, queue: false,
              complete: function(){
                origin.css({left: 0, top: 0})
                .velocity(
                  {
                    height: newHeight,
                    width: newWidth,
                    left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2,
                    top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2
                  },
                  {
                    duration: inDuration,
                    queue: false,
                    easing: 'easeOutQuad',
                    complete: function(){doneAnimating = true;}
                  }
                );
              } // End Complete
            }); // End Velocity
          }
          else {
            origin.css('left', 0)
            .css('top', 0)
            .velocity(
              {
                height: newHeight,
                width: newWidth,
                left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2,
                top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2
              },
              {
                duration: inDuration,
                queue: false,
                easing: 'easeOutQuad',
                complete: function(){doneAnimating = true;}
              }
              ); // End Velocity
          }
  
        }); // End origin on click
  
  
        // Return on scroll
        $(window).scroll(function() {
          if (overlayActive) {
            returnToOriginal();
          }
        });
  
        // Return on ESC
        $(document).keyup(function(e) {
  
          if (e.keyCode === 27 && doneAnimating === true) {   // ESC key
            if (overlayActive) {
              returnToOriginal();
            }
          }
        });
  
  
        // This function returns the modaled image to the original spot
        function returnToOriginal() {
  
          doneAnimating = false;
  
          var placeholder = origin.parent('.material-placeholder');
          var windowWidth = window.innerWidth;
          var windowHeight = window.innerHeight;
          var originalWidth = origin.data('width');
          var originalHeight = origin.data('height');
  
          origin.velocity("stop", true);
          $('#materialbox-overlay').velocity("stop", true);
          $('.materialbox-caption').velocity("stop", true);
  
  
          $('#materialbox-overlay').velocity({opacity: 0}, {
            duration: outDuration, // Delay prevents animation overlapping
            queue: false, easing: 'easeOutQuad',
            complete: function(){
              // Remove Overlay
              overlayActive = false;
              $(this).remove();
            }
          });
  
          // Resize Image
          origin.velocity(
            {
              width: originalWidth,
              height: originalHeight,
              left: 0,
              top: 0
            },
            {
              duration: outDuration,
              queue: false, easing: 'easeOutQuad',
              complete: function() {
                placeholder.css({
                  height: '',
                  width: '',
                  position: '',
                  top: '',
                  left: ''
                });
  
                origin.removeAttr('style');
                origin.attr('style', originInlineStyles);
  
                // Remove class
                origin.removeClass('active');
                doneAnimating = true;
  
                // Remove overflow overrides on ancestors
                if (ancestorsChanged) {
                  ancestorsChanged.css('overflow', '');
                }
              }
            }
          );
  
          // Remove Caption + reset css settings on image
          $('.materialbox-caption').velocity({opacity: 0}, {
            duration: outDuration, // Delay prevents animation overlapping
            queue: false, easing: 'easeOutQuad',
            complete: function(){
              $(this).remove();
            }
          });
  
        }
      });
    };
  
    $(document).ready(function(){
      $('.materialboxed').materialbox();
    });
  
  }( jQuery ));
  ;(function ($) {
  
    $.fn.parallax = function () {
      var window_width = $(window).width();
      // Parallax Scripts
      return this.each(function(i) {
        var $this = $(this);
        $this.addClass('parallax');
  
        function updateParallax(initial) {
          var container_height;
          if (window_width < 601) {
            container_height = ($this.height() > 0) ? $this.height() : $this.children("img").height();
          }
          else {
            container_height = ($this.height() > 0) ? $this.height() : 500;
          }
          var $img = $this.children("img").first();
          var img_height = $img.height();
          var parallax_dist = img_height - container_height;
          var bottom = $this.offset().top + container_height;
          var top = $this.offset().top;
          var scrollTop = $(window).scrollTop();
          var windowHeight = window.innerHeight;
          var windowBottom = scrollTop + windowHeight;
          var percentScrolled = (windowBottom - top) / (container_height + windowHeight);
          var parallax = Math.round((parallax_dist * percentScrolled));
  
          if (initial) {
            $img.css('display', 'block');
          }
          if ((bottom > scrollTop) && (top < (scrollTop + windowHeight))) {
            $img.css('transform', "translate3D(-50%," + parallax + "px, 0)");
          }
  
        }
  
        // Wait for image load
        $this.children("img").one("load", function() {
          updateParallax(true);
        }).each(function() {
          if (this.complete) $(this).trigger("load");
        });
  
        $(window).scroll(function() {
          window_width = $(window).width();
          updateParallax(false);
        });
  
        $(window).resize(function() {
          window_width = $(window).width();
          updateParallax(false);
        });
  
      });
  
    };
  }( jQuery ));
  ;(function ($) {
  
    var methods = {
      init : function(options) {
        var defaults = {
          onShow: null,
          swipeable: false,
          responsiveThreshold: Infinity, // breakpoint for swipeable
        };
        options = $.extend(defaults, options);
        var namespace = Materialize.objectSelectorString($(this));
  
        return this.each(function(i) {
  
        var uniqueNamespace = namespace+i;
  
        // For each set of tabs, we want to keep track of
        // which tab is active and its associated content
        var $this = $(this),
            window_width = $(window).width();
  
        var $active, $content, $links = $this.find('li.tab a'),
            $tabs_width = $this.width(),
            $tabs_content = $(),
            $tabs_wrapper,
            $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length,
            $indicator,
            index = prev_index = 0,
            clicked = false,
            clickedTimeout,
            transition = 300;
  
  
        // Finds right attribute for indicator based on active tab.
        // el: jQuery Object
        var calcRightPos = function(el) {
          return Math.ceil($tabs_width - el.position().left - el.outerWidth() - $this.scrollLeft());
        };
  
        // Finds left attribute for indicator based on active tab.
        // el: jQuery Object
        var calcLeftPos = function(el) {
          return Math.floor(el.position().left + $this.scrollLeft());
        };
  
        // Animates Indicator to active tab.
        // prev_index: Number
        var animateIndicator = function(prev_index) {
          if ((index - prev_index) >= 0) {
            $indicator.velocity({"right": calcRightPos($active) }, { duration: transition, queue: false, easing: 'easeOutQuad'});
            $indicator.velocity({"left": calcLeftPos($active) }, {duration: transition, queue: false, easing: 'easeOutQuad', delay: 90});
  
          } else {
            $indicator.velocity({"left": calcLeftPos($active) }, { duration: transition, queue: false, easing: 'easeOutQuad'});
            $indicator.velocity({"right": calcRightPos($active) }, {duration: transition, queue: false, easing: 'easeOutQuad', delay: 90});
          }
        };
  
        // Change swipeable according to responsive threshold
        if (options.swipeable) {
          if (window_width > options.responsiveThreshold) {
            options.swipeable = false;
          }
        }
  
  
        // If the location.hash matches one of the links, use that as the active tab.
        $active = $($links.filter('[href="'+location.hash+'"]'));
  
        // If no match is found, use the first link or any with class 'active' as the initial active tab.
        if ($active.length === 0) {
          $active = $(this).find('li.tab a.active').first();
        }
        if ($active.length === 0) {
          $active = $(this).find('li.tab a').first();
        }
  
        $active.addClass('active');
        index = $links.index($active);
        if (index < 0) {
          index = 0;
        }
  
        if ($active[0] !== undefined) {
          $content = $($active[0].hash);
          $content.addClass('active');
        }
  
        // append indicator then set indicator width to tab width
        if (!$this.find('.indicator').length) {
          $this.append('<div class="indicator"></div>');
        }
        $indicator = $this.find('.indicator');
  
        // we make sure that the indicator is at the end of the tabs
        $this.append($indicator);
  
        if ($this.is(":visible")) {
          // $indicator.css({"right": $tabs_width - ((index + 1) * $tab_width)});
          // $indicator.css({"left": index * $tab_width});
          setTimeout(function() {
            $indicator.css({"right": calcRightPos($active) });
            $indicator.css({"left": calcLeftPos($active) });
          }, 0);
        }
        $(window).off('resize.tabs-'+uniqueNamespace).on('resize.tabs-'+uniqueNamespace, function () {
          $tabs_width = $this.width();
          $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length;
          if (index < 0) {
            index = 0;
          }
          if ($tab_width !== 0 && $tabs_width !== 0) {
            $indicator.css({"right": calcRightPos($active) });
            $indicator.css({"left": calcLeftPos($active) });
          }
        });
  
        // Initialize Tabs Content.
        if (options.swipeable) {
          // TODO: Duplicate calls with swipeable? handle multiple div wrapping.
          $links.each(function () {
            var $curr_content = $(Materialize.escapeHash(this.hash));
            $curr_content.addClass('carousel-item');
            $tabs_content = $tabs_content.add($curr_content);
          });
          $tabs_wrapper = $tabs_content.wrapAll('<div class="tabs-content carousel"></div>');
          $tabs_content.css('display', '');
          $('.tabs-content.carousel').carousel({
            fullWidth: true,
            noWrap: true,
            onCycleTo: function(item) {
              if (!clicked) {
                var prev_index = index;
                index = $tabs_wrapper.index(item);
                $active = $links.eq(index);
                animateIndicator(prev_index);
              }
            },
          });
        } else {
          // Hide the remaining content
          $links.not($active).each(function () {
            $(Materialize.escapeHash(this.hash)).hide();
          });
        }
  
  
        // Bind the click event handler
        $this.off('click.tabs').on('click.tabs', 'a', function(e) {
          if ($(this).parent().hasClass('disabled')) {
            e.preventDefault();
            return;
          }
  
          // Act as regular link if target attribute is specified.
          if (!!$(this).attr("target")) {
            return;
          }
  
          clicked = true;
          $tabs_width = $this.width();
          $tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length;
  
          // Make the old tab inactive.
          $active.removeClass('active');
          var $oldContent = $content
  
          // Update the variables with the new link and content
          $active = $(this);
          $content = $(Materialize.escapeHash(this.hash));
          $links = $this.find('li.tab a');
          var activeRect = $active.position();
  
          // Make the tab active.
          $active.addClass('active');
          prev_index = index;
          index = $links.index($(this));
          if (index < 0) {
            index = 0;
          }
          // Change url to current tab
          // window.location.hash = $active.attr('href');
  
          // Swap content
          if (options.swipeable) {
            if ($tabs_content.length) {
              $tabs_content.carousel('set', index);
            }
          } else {
            if ($content !== undefined) {
              $content.show();
              $content.addClass('active');
              if (typeof(options.onShow) === "function") {
                options.onShow.call(this, $content);
              }
            }
  
            if ($oldContent !== undefined &&
                !$oldContent.is($content)) {
              $oldContent.hide();
              $oldContent.removeClass('active');
            }
          }
  
          // Reset clicked state
          clickedTimeout = setTimeout(function(){ clicked = false; }, transition);
  
          // Update indicator
          animateIndicator(prev_index);
  
          // Prevent the anchor's default click action
          e.preventDefault();
        });
      });
  
      },
      select_tab : function( id ) {
        this.find('a[href="#' + id + '"]').trigger('click');
      }
    };
  
    $.fn.tabs = function(methodOrOptions) {
      if ( methods[methodOrOptions] ) {
        return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));
      } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
        // Default to "init"
        return methods.init.apply( this, arguments );
      } else {
        $.error( 'Method ' +  methodOrOptions + ' does not exist on jQuery.tabs' );
      }
    };
  
    $(document).ready(function(){
      $('ul.tabs').tabs();
    });
  }( jQuery ));
  ;(function ($) {
      $.fn.tooltip = function (options) {
        var timeout = null,
        margin = 5;
  
        // Defaults
        var defaults = {
          delay: 350,
          tooltip: '',
          position: 'bottom',
          html: false
        };
  
        // Remove tooltip from the activator
        if (options === "remove") {
          this.each(function() {
            $('#' + $(this).attr('data-tooltip-id')).remove();
            $(this).off('mouseenter.tooltip mouseleave.tooltip');
          });
          return false;
        }
  
        options = $.extend(defaults, options);
  
        return this.each(function() {
          var tooltipId = Materialize.guid();
          var origin = $(this);
  
          // Destroy old tooltip
          if (origin.attr('data-tooltip-id')) {
            $('#' + origin.attr('data-tooltip-id')).remove();
          }
  
          origin.attr('data-tooltip-id', tooltipId);
  
          // Get attributes.
          var allowHtml,
              tooltipDelay,
              tooltipPosition,
              tooltipText,
              tooltipEl,
              backdrop;
          var setAttributes = function() {
            allowHtml = origin.attr('data-html') ? origin.attr('data-html') === 'true' : options.html;
            tooltipDelay = origin.attr('data-delay');
            tooltipDelay = (tooltipDelay === undefined || tooltipDelay === '') ?
                options.delay : tooltipDelay;
            tooltipPosition = origin.attr('data-position');
            tooltipPosition = (tooltipPosition === undefined || tooltipPosition === '') ?
                options.position : tooltipPosition;
            tooltipText = origin.attr('data-tooltip');
            tooltipText = (tooltipText === undefined || tooltipText === '') ?
                options.tooltip : tooltipText;
          };
          setAttributes();
  
          var renderTooltipEl = function() {
            var tooltip = $('<div class="material-tooltip"></div>');
  
            // Create Text span
            if (allowHtml) {
              tooltipText = $('<span></span>').html(tooltipText);
            } else{
              tooltipText = $('<span></span>').text(tooltipText);
            }
  
            // Create tooltip
            tooltip.append(tooltipText)
              .appendTo($('body'))
              .attr('id', tooltipId);
  
            // Create backdrop
            backdrop = $('<div class="backdrop"></div>');
            backdrop.appendTo(tooltip);
            return tooltip;
          };
          tooltipEl = renderTooltipEl();
  
          // Destroy previously binded events
          origin.off('mouseenter.tooltip mouseleave.tooltip');
          // Mouse In
          var started = false, timeoutRef;
          origin.on({'mouseenter.tooltip': function(e) {
            var showTooltip = function() {
              setAttributes();
              started = true;
              tooltipEl.velocity('stop');
              backdrop.velocity('stop');
              tooltipEl.css({ visibility: 'visible', left: '0px', top: '0px' });
  
              // Tooltip positioning
              var originWidth = origin.outerWidth();
              var originHeight = origin.outerHeight();
              var tooltipHeight = tooltipEl.outerHeight();
              var tooltipWidth = tooltipEl.outerWidth();
              var tooltipVerticalMovement = '0px';
              var tooltipHorizontalMovement = '0px';
              var backdropOffsetWidth = backdrop[0].offsetWidth;
              var backdropOffsetHeight = backdrop[0].offsetHeight;
              var scaleXFactor = 8;
              var scaleYFactor = 8;
              var scaleFactor = 0;
              var targetTop, targetLeft, newCoordinates;
  
              if (tooltipPosition === "top") {
                // Top Position
                targetTop = origin.offset().top - tooltipHeight - margin;
                targetLeft = origin.offset().left + originWidth/2 - tooltipWidth/2;
                newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight);
                tooltipVerticalMovement = '-10px';
                backdrop.css({
                  bottom: 0,
                  left: 0,
                  borderRadius: '14px 14px 0 0',
                  transformOrigin: '50% 100%',
                  marginTop: tooltipHeight,
                  marginLeft: (tooltipWidth/2) - (backdropOffsetWidth/2)
                });
              }
              // Left Position
              else if (tooltipPosition === "left") {
                targetTop = origin.offset().top + originHeight/2 - tooltipHeight/2;
                targetLeft =  origin.offset().left - tooltipWidth - margin;
                newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight);
  
                tooltipHorizontalMovement = '-10px';
                backdrop.css({
                  top: '-7px',
                  right: 0,
                  width: '14px',
                  height: '14px',
                  borderRadius: '14px 0 0 14px',
                  transformOrigin: '95% 50%',
                  marginTop: tooltipHeight/2,
                  marginLeft: tooltipWidth
                });
              }
              // Right Position
              else if (tooltipPosition === "right") {
                targetTop = origin.offset().top + originHeight/2 - tooltipHeight/2;
                targetLeft = origin.offset().left + originWidth + margin;
                newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight);
  
                tooltipHorizontalMovement = '+10px';
                backdrop.css({
                  top: '-7px',
                  left: 0,
                  width: '14px',
                  height: '14px',
                  borderRadius: '0 14px 14px 0',
                  transformOrigin: '5% 50%',
                  marginTop: tooltipHeight/2,
                  marginLeft: '0px'
                });
              }
              else {
                // Bottom Position
                targetTop = origin.offset().top + origin.outerHeight() + margin;
                targetLeft = origin.offset().left + originWidth/2 - tooltipWidth/2;
                newCoordinates = repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight);
                tooltipVerticalMovement = '+10px';
                backdrop.css({
                  top: 0,
                  left: 0,
                  marginLeft: (tooltipWidth/2) - (backdropOffsetWidth/2)
                });
              }
  
              // Set tooptip css placement
              tooltipEl.css({
                top: newCoordinates.y,
                left: newCoordinates.x
              });
  
              // Calculate Scale to fill
              scaleXFactor = Math.SQRT2 * tooltipWidth / parseInt(backdropOffsetWidth);
              scaleYFactor = Math.SQRT2 * tooltipHeight / parseInt(backdropOffsetHeight);
              scaleFactor = Math.max(scaleXFactor, scaleYFactor);
  
              tooltipEl.velocity({ translateY: tooltipVerticalMovement, translateX: tooltipHorizontalMovement}, { duration: 350, queue: false })
                .velocity({opacity: 1}, {duration: 300, delay: 50, queue: false});
              backdrop.css({ visibility: 'visible' })
                .velocity({opacity:1},{duration: 55, delay: 0, queue: false})
                .velocity({scaleX: scaleFactor, scaleY: scaleFactor}, {duration: 300, delay: 0, queue: false, easing: 'easeInOutQuad'});
            };
  
            timeoutRef = setTimeout(showTooltip, tooltipDelay); // End Interval
  
          // Mouse Out
          },
          'mouseleave.tooltip': function(){
            // Reset State
            started = false;
            clearTimeout(timeoutRef);
  
            // Animate back
            setTimeout(function() {
              if (started !== true) {
                tooltipEl.velocity({
                  opacity: 0, translateY: 0, translateX: 0}, { duration: 225, queue: false});
                backdrop.velocity({opacity: 0, scaleX: 1, scaleY: 1}, {
                  duration:225,
                  queue: false,
                  complete: function(){
                    backdrop.css({ visibility: 'hidden' });
                    tooltipEl.css({ visibility: 'hidden' });
                    started = false;}
                });
              }
            },225);
          }
          });
      });
    };
  
    var repositionWithinScreen = function(x, y, width, height) {
      var newX = x;
      var newY = y;
  
      if (newX < 0) {
        newX = 4;
      } else if (newX + width > window.innerWidth) {
        newX -= newX + width - window.innerWidth;
      }
  
      if (newY < 0) {
        newY = 4;
      } else if (newY + height > window.innerHeight + $(window).scrollTop) {
        newY -= newY + height - window.innerHeight;
      }
  
      return {x: newX, y: newY};
    };
  
    $(document).ready(function(){
       $('.tooltipped').tooltip();
     });
  }( jQuery ));
  ;/*!
   * Waves v0.6.4
   * http://fian.my.id/Waves
   *
   * Copyright 2014 Alfiana E. Sibuea and other contributors
   * Released under the MIT license
   * https://github.com/fians/Waves/blob/master/LICENSE
   */
  
  ;(function(window) {
      'use strict';
  
      var Waves = Waves || {};
      var $$ = document.querySelectorAll.bind(document);
  
      // Find exact position of element
      function isWindow(obj) {
          return obj !== null && obj === obj.window;
      }
  
      function getWindow(elem) {
          return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;
      }
  
      function offset(elem) {
          var docElem, win,
              box = {top: 0, left: 0},
              doc = elem && elem.ownerDocument;
  
          docElem = doc.documentElement;
  
          if (typeof elem.getBoundingClientRect !== typeof undefined) {
              box = elem.getBoundingClientRect();
          }
          win = getWindow(doc);
          return {
              top: box.top + win.pageYOffset - docElem.clientTop,
              left: box.left + win.pageXOffset - docElem.clientLeft
          };
      }
  
      function convertStyle(obj) {
          var style = '';
  
          for (var a in obj) {
              if (obj.hasOwnProperty(a)) {
                  style += (a + ':' + obj[a] + ';');
              }
          }
  
          return style;
      }
  
      var Effect = {
  
          // Effect delay
          duration: 750,
  
          show: function(e, element) {
  
              // Disable right click
              if (e.button === 2) {
                  return false;
              }
  
              var el = element || this;
  
              // Create ripple
              var ripple = document.createElement('div');
              ripple.className = 'waves-ripple';
              el.appendChild(ripple);
  
              // Get click coordinate and element witdh
              var pos         = offset(el);
              var relativeY   = (e.pageY - pos.top);
              var relativeX   = (e.pageX - pos.left);
              var scale       = 'scale('+((el.clientWidth / 100) * 10)+')';
  
              // Support for touch devices
              if ('touches' in e) {
                relativeY   = (e.touches[0].pageY - pos.top);
                relativeX   = (e.touches[0].pageX - pos.left);
              }
  
              // Attach data to element
              ripple.setAttribute('data-hold', Date.now());
              ripple.setAttribute('data-scale', scale);
              ripple.setAttribute('data-x', relativeX);
              ripple.setAttribute('data-y', relativeY);
  
              // Set ripple position
              var rippleStyle = {
                  'top': relativeY+'px',
                  'left': relativeX+'px'
              };
  
              ripple.className = ripple.className + ' waves-notransition';
              ripple.setAttribute('style', convertStyle(rippleStyle));
              ripple.className = ripple.className.replace('waves-notransition', '');
  
              // Scale the ripple
              rippleStyle['-webkit-transform'] = scale;
              rippleStyle['-moz-transform'] = scale;
              rippleStyle['-ms-transform'] = scale;
              rippleStyle['-o-transform'] = scale;
              rippleStyle.transform = scale;
              rippleStyle.opacity   = '1';
  
              rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms';
              rippleStyle['-moz-transition-duration']    = Effect.duration + 'ms';
              rippleStyle['-o-transition-duration']      = Effect.duration + 'ms';
              rippleStyle['transition-duration']         = Effect.duration + 'ms';
  
              rippleStyle['-webkit-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
              rippleStyle['-moz-transition-timing-function']    = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
              rippleStyle['-o-transition-timing-function']      = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
              rippleStyle['transition-timing-function']         = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
  
              ripple.setAttribute('style', convertStyle(rippleStyle));
          },
  
          hide: function(e) {
              TouchHandler.touchup(e);
  
              var el = this;
              var width = el.clientWidth * 1.4;
  
              // Get first ripple
              var ripple = null;
              var ripples = el.getElementsByClassName('waves-ripple');
              if (ripples.length > 0) {
                  ripple = ripples[ripples.length - 1];
              } else {
                  return false;
              }
  
              var relativeX   = ripple.getAttribute('data-x');
              var relativeY   = ripple.getAttribute('data-y');
              var scale       = ripple.getAttribute('data-scale');
  
              // Get delay beetween mousedown and mouse leave
              var diff = Date.now() - Number(ripple.getAttribute('data-hold'));
              var delay = 350 - diff;
  
              if (delay < 0) {
                  delay = 0;
              }
  
              // Fade out ripple after delay
              setTimeout(function() {
                  var style = {
                      'top': relativeY+'px',
                      'left': relativeX+'px',
                      'opacity': '0',
  
                      // Duration
                      '-webkit-transition-duration': Effect.duration + 'ms',
                      '-moz-transition-duration': Effect.duration + 'ms',
                      '-o-transition-duration': Effect.duration + 'ms',
                      'transition-duration': Effect.duration + 'ms',
                      '-webkit-transform': scale,
                      '-moz-transform': scale,
                      '-ms-transform': scale,
                      '-o-transform': scale,
                      'transform': scale,
                  };
  
                  ripple.setAttribute('style', convertStyle(style));
  
                  setTimeout(function() {
                      try {
                          el.removeChild(ripple);
                      } catch(e) {
                          return false;
                      }
                  }, Effect.duration);
              }, delay);
          },
  
          // Little hack to make <input> can perform waves effect
          wrapInput: function(elements) {
              for (var a = 0; a < elements.length; a++) {
                  var el = elements[a];
  
                  if (el.tagName.toLowerCase() === 'input') {
                      var parent = el.parentNode;
  
                      // If input already have parent just pass through
                      if (parent.tagName.toLowerCase() === 'i' && parent.className.indexOf('waves-effect') !== -1) {
                          continue;
                      }
  
                      // Put element class and style to the specified parent
                      var wrapper = document.createElement('i');
                      wrapper.className = el.className + ' waves-input-wrapper';
  
                      var elementStyle = el.getAttribute('style');
  
                      if (!elementStyle) {
                          elementStyle = '';
                      }
  
                      wrapper.setAttribute('style', elementStyle);
  
                      el.className = 'waves-button-input';
                      el.removeAttribute('style');
  
                      // Put element as child
                      parent.replaceChild(wrapper, el);
                      wrapper.appendChild(el);
                  }
              }
          }
      };
  
  
      /**
       * Disable mousedown event for 500ms during and after touch
       */
      var TouchHandler = {
          /* uses an integer rather than bool so there's no issues with
           * needing to clear timeouts if another touch event occurred
           * within the 500ms. Cannot mouseup between touchstart and
           * touchend, nor in the 500ms after touchend. */
          touches: 0,
          allowEvent: function(e) {
              var allow = true;
  
              if (e.type === 'touchstart') {
                  TouchHandler.touches += 1; //push
              } else if (e.type === 'touchend' || e.type === 'touchcancel') {
                  setTimeout(function() {
                      if (TouchHandler.touches > 0) {
                          TouchHandler.touches -= 1; //pop after 500ms
                      }
                  }, 500);
              } else if (e.type === 'mousedown' && TouchHandler.touches > 0) {
                  allow = false;
              }
  
              return allow;
          },
          touchup: function(e) {
              TouchHandler.allowEvent(e);
          }
      };
  
  
      /**
       * Delegated click handler for .waves-effect element.
       * returns null when .waves-effect element not in "click tree"
       */
      function getWavesEffectElement(e) {
          if (TouchHandler.allowEvent(e) === false) {
              return null;
          }
  
          var element = null;
          var target = e.target || e.srcElement;
  
          while (target.parentElement !== null) {
              if (!(target instanceof SVGElement) && target.className.indexOf('waves-effect') !== -1) {
                  element = target;
                  break;
              } else if (target.classList.contains('waves-effect')) {
                  element = target;
                  break;
              }
              target = target.parentElement;
          }
  
          return element;
      }
  
      /**
       * Bubble the click and show effect if .waves-effect elem was found
       */
      function showEffect(e) {
          var element = getWavesEffectElement(e);
  
          if (element !== null) {
              Effect.show(e, element);
  
              if ('ontouchstart' in window) {
                  element.addEventListener('touchend', Effect.hide, false);
                  element.addEventListener('touchcancel', Effect.hide, false);
              }
  
              element.addEventListener('mouseup', Effect.hide, false);
              element.addEventListener('mouseleave', Effect.hide, false);
          }
      }
  
      Waves.displayEffect = function(options) {
          options = options || {};
  
          if ('duration' in options) {
              Effect.duration = options.duration;
          }
  
          //Wrap input inside <i> tag
          Effect.wrapInput($$('.waves-effect'));
  
          if ('ontouchstart' in window) {
              document.body.addEventListener('touchstart', showEffect, false);
          }
  
          document.body.addEventListener('mousedown', showEffect, false);
      };
  
      /**
       * Attach Waves to an input element (or any element which doesn't
       * bubble mouseup/mousedown events).
       *   Intended to be used with dynamically loaded forms/inputs, or
       * where the user doesn't want a delegated click handler.
       */
      Waves.attach = function(element) {
          //FUTURE: automatically add waves classes and allow users
          // to specify them with an options param? Eg. light/classic/button
          if (element.tagName.toLowerCase() === 'input') {
              Effect.wrapInput([element]);
              element = element.parentElement;
          }
  
          if ('ontouchstart' in window) {
              element.addEventListener('touchstart', showEffect, false);
          }
  
          element.addEventListener('mousedown', showEffect, false);
      };
  
      window.Waves = Waves;
  
      document.addEventListener('DOMContentLoaded', function() {
          Waves.displayEffect();
      }, false);
  
  })(window);
  ;Materialize.toast = function (message, displayLength, className, completeCallback) {
    className = className || "";
  
    var container = document.getElementById('toast-container');
  
    // Create toast container if it does not exist
    if (container === null) {
      // create notification container
      container = document.createElement('div');
      container.id = 'toast-container';
      document.body.appendChild(container);
    }
  
    // Select and append toast
    var newToast = createToast(message);
  
    // only append toast if message is not undefined
    if(message){
      container.appendChild(newToast);
    }
  
    newToast.style.opacity = 0;
  
    // Animate toast in
    Vel(newToast, {translateY: '-35px',  opacity: 1 }, {duration: 300,
      easing: 'easeOutCubic',
      queue: false});
  
    // Allows timer to be pause while being panned
    var timeLeft = displayLength;
    var counterInterval;
    if (timeLeft != null)  {
      counterInterval = setInterval (function(){
        if (newToast.parentNode === null)
          window.clearInterval(counterInterval);
  
        // If toast is not being dragged, decrease its time remaining
        if (!newToast.classList.contains('panning')) {
          timeLeft -= 20;
        }
  
        if (timeLeft <= 0) {
          // Animate toast out
          Vel(newToast, {"opacity": 0, marginTop: '-40px'}, { duration: 375,
              easing: 'easeOutExpo',
              queue: false,
              complete: function(){
                // Call the optional callback
                if(typeof(completeCallback) === "function")
                  completeCallback();
                // Remove toast after it times out
                this[0].parentNode.removeChild(this[0]);
              }
            });
          window.clearInterval(counterInterval);
        }
      }, 20);
    }
  
  
  
    function createToast(html) {
  
      // Create toast
      var toast = document.createElement('div');
      toast.classList.add('toast');
      if (className) {
        var classes = className.split(' ');
  
        for (var i = 0, count = classes.length; i < count; i++) {
          toast.classList.add(classes[i]);
        }
      }
    // If type of parameter is HTML Element
      if ( typeof HTMLElement === "object" ? html instanceof HTMLElement : html && typeof html === "object" && html !== null && html.nodeType === 1 && typeof html.nodeName==="string"
  ) {
        toast.appendChild(html);
      }
      else if (html instanceof jQuery) {
        // Check if it is jQuery object
        toast.appendChild(html[0]);
      }
      else {
        // Insert as text;
        toast.innerHTML = html;
      }
      // Bind hammer
      var hammerHandler = new Hammer(toast, {prevent_default: false});
      hammerHandler.on('pan', function(e) {
        var deltaX = e.deltaX;
        var activationDistance = 80;
  
        // Change toast state
        if (!toast.classList.contains('panning')){
          toast.classList.add('panning');
        }
  
        var opacityPercent = 1-Math.abs(deltaX / activationDistance);
        if (opacityPercent < 0)
          opacityPercent = 0;
  
        Vel(toast, {left: deltaX, opacity: opacityPercent }, {duration: 50, queue: false, easing: 'easeOutQuad'});
  
      });
  
      hammerHandler.on('panend', function(e) {
        var deltaX = e.deltaX;
        var activationDistance = 80;
  
        // If toast dragged past activation point
        if (Math.abs(deltaX) > activationDistance) {
          Vel(toast, {marginTop: '-40px'}, { duration: 375,
            easing: 'easeOutExpo',
            queue: false,
            complete: function(){
              if(typeof(completeCallback) === "function") {
                completeCallback();
              }
              toast.parentNode.removeChild(toast);
            }
          });
  
        } else {
          toast.classList.remove('panning');
          // Put toast back into original position
          Vel(toast, { left: 0, opacity: 1 }, { duration: 300,
            easing: 'easeOutExpo',
            queue: false
          });
  
        }
      });
  
      return toast;
    }
  };
  ;(function ($) {
  
    var methods = {
      init : function(options) {
        var defaults = {
          menuWidth: 300,
          edge: 'left',
          closeOnClick: false,
          draggable: true
        };
        options = $.extend(defaults, options);
  
        $(this).each(function(){
          var $this = $(this);
          var menuId = $this.attr('data-activates');
          var menu = $("#"+ menuId);
  
          // Set to width
          if (options.menuWidth != 300) {
            menu.css('width', options.menuWidth);
          }
  
          // Add Touch Area
          var $dragTarget = $('.drag-target[data-sidenav="' + menuId + '"]');
          if (options.draggable) {
            // Regenerate dragTarget
            if ($dragTarget.length) {
              $dragTarget.remove();
            }
  
            $dragTarget = $('<div class="drag-target"></div>').attr('data-sidenav', menuId);
            $('body').append($dragTarget);
          } else {
            $dragTarget = $();
          }
  
          if (options.edge == 'left') {
            menu.css('transform', 'translateX(-100%)');
            $dragTarget.css({'left': 0}); // Add Touch Area
          }
          else {
            menu.addClass('right-aligned') // Change text-alignment to right
              .css('transform', 'translateX(100%)');
            $dragTarget.css({'right': 0}); // Add Touch Area
          }
  
          // If fixed sidenav, bring menu out
          if (menu.hasClass('fixed')) {
              if (window.innerWidth > 992) {
                menu.css('transform', 'translateX(0)');
              }
            }
  
          // Window resize to reset on large screens fixed
          if (menu.hasClass('fixed')) {
            $(window).resize( function() {
              if (window.innerWidth > 992) {
                // Close menu if window is resized bigger than 992 and user has fixed sidenav
                if ($('#sidenav-overlay').length !== 0 && menuOut) {
                  removeMenu(true);
                }
                else {
                  // menu.removeAttr('style');
                  menu.css('transform', 'translateX(0%)');
                  // menu.css('width', options.menuWidth);
                }
              }
              else if (menuOut === false){
                if (options.edge === 'left') {
                  menu.css('transform', 'translateX(-100%)');
                } else {
                  menu.css('transform', 'translateX(100%)');
                }
  
              }
  
            });
          }
  
          // if closeOnClick, then add close event for all a tags in side sideNav
          if (options.closeOnClick === true) {
            menu.on("click.itemclick", "a:not(.collapsible-header)", function(){
              removeMenu();
            });
          }
  
          var removeMenu = function(restoreNav) {
            panning = false;
            menuOut = false;
            // Reenable scrolling
            $('body').css({
              overflow: '',
              width: ''
            });
  
            $('#sidenav-overlay').velocity({opacity: 0}, {duration: 200,
                queue: false, easing: 'easeOutQuad',
              complete: function() {
                $(this).remove();
              } });
            if (options.edge === 'left') {
              // Reset phantom div
              $dragTarget.css({width: '', right: '', left: '0'});
              menu.velocity(
                {'translateX': '-100%'},
                { duration: 200,
                  queue: false,
                  easing: 'easeOutCubic',
                  complete: function() {
                    if (restoreNav === true) {
                      // Restore Fixed sidenav
                      menu.removeAttr('style');
                      menu.css('width', options.menuWidth);
                    }
                  }
  
              });
            }
            else {
              // Reset phantom div
              $dragTarget.css({width: '', right: '0', left: ''});
              menu.velocity(
                {'translateX': '100%'},
                { duration: 200,
                  queue: false,
                  easing: 'easeOutCubic',
                  complete: function() {
                    if (restoreNav === true) {
                      // Restore Fixed sidenav
                      menu.removeAttr('style');
                      menu.css('width', options.menuWidth);
                    }
                  }
                });
            }
          };
  
  
  
          // Touch Event
          var panning = false;
          var menuOut = false;
  
          if (options.draggable) {
            $dragTarget.on('click', function(){
              if (menuOut) {
                removeMenu();
              }
            });
  
            $dragTarget.hammer({
              prevent_default: false
            }).bind('pan', function(e) {
  
              if (e.gesture.pointerType == "touch") {
  
                var direction = e.gesture.direction;
                var x = e.gesture.center.x;
                var y = e.gesture.center.y;
                var velocityX = e.gesture.velocityX;
  
                // Disable Scrolling
                var $body = $('body');
                var $overlay = $('#sidenav-overlay');
                var oldWidth = $body.innerWidth();
                $body.css('overflow', 'hidden');
                $body.width(oldWidth);
  
                // If overlay does not exist, create one and if it is clicked, close menu
                if ($overlay.length === 0) {
                  $overlay = $('<div id="sidenav-overlay"></div>');
                  $overlay.css('opacity', 0).click( function(){
                    removeMenu();
                  });
                  $('body').append($overlay);
                }
  
                // Keep within boundaries
                if (options.edge === 'left') {
                  if (x > options.menuWidth) { x = options.menuWidth; }
                  else if (x < 0) { x = 0; }
                }
  
                if (options.edge === 'left') {
                  // Left Direction
                  if (x < (options.menuWidth / 2)) { menuOut = false; }
                  // Right Direction
                  else if (x >= (options.menuWidth / 2)) { menuOut = true; }
                  menu.css('transform', 'translateX(' + (x - options.menuWidth) + 'px)');
                }
                else {
                  // Left Direction
                  if (x < (window.innerWidth - options.menuWidth / 2)) {
                    menuOut = true;
                  }
                  // Right Direction
                  else if (x >= (window.innerWidth - options.menuWidth / 2)) {
                   menuOut = false;
                 }
                  var rightPos = (x - options.menuWidth / 2);
                  if (rightPos < 0) {
                    rightPos = 0;
                  }
  
                  menu.css('transform', 'translateX(' + rightPos + 'px)');
                }
  
  
                // Percentage overlay
                var overlayPerc;
                if (options.edge === 'left') {
                  overlayPerc = x / options.menuWidth;
                  $overlay.velocity({opacity: overlayPerc }, {duration: 10, queue: false, easing: 'easeOutQuad'});
                }
                else {
                  overlayPerc = Math.abs((x - window.innerWidth) / options.menuWidth);
                  $overlay.velocity({opacity: overlayPerc }, {duration: 10, queue: false, easing: 'easeOutQuad'});
                }
              }
  
            }).bind('panend', function(e) {
  
              if (e.gesture.pointerType == "touch") {
                var $overlay = $('#sidenav-overlay');
                var velocityX = e.gesture.velocityX;
                var x = e.gesture.center.x;
                var leftPos = x - options.menuWidth;
                var rightPos = x - options.menuWidth / 2;
                if (leftPos > 0 ) {
                  leftPos = 0;
                }
                if (rightPos < 0) {
                  rightPos = 0;
                }
                panning = false;
  
                if (options.edge === 'left') {
                  // If velocityX <= 0.3 then the user is flinging the menu closed so ignore menuOut
                  if ((menuOut && velocityX <= 0.3) || velocityX < -0.5) {
                    // Return menu to open
                    if (leftPos !== 0) {
                      menu.velocity({'translateX': [0, leftPos]}, {duration: 300, queue: false, easing: 'easeOutQuad'});
                    }
  
                    $overlay.velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'});
                    $dragTarget.css({width: '50%', right: 0, left: ''});
                    menuOut = true;
                  }
                  else if (!menuOut || velocityX > 0.3) {
                    // Enable Scrolling
                    $('body').css({
                      overflow: '',
                      width: ''
                    });
                    // Slide menu closed
                    menu.velocity({'translateX': [-1 * options.menuWidth - 10, leftPos]}, {duration: 200, queue: false, easing: 'easeOutQuad'});
                    $overlay.velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad',
                      complete: function () {
                        $(this).remove();
                      }});
                    $dragTarget.css({width: '10px', right: '', left: 0});
                  }
                }
                else {
                  if ((menuOut && velocityX >= -0.3) || velocityX > 0.5) {
                    // Return menu to open
                    if (rightPos !== 0) {
                      menu.velocity({'translateX': [0, rightPos]}, {duration: 300, queue: false, easing: 'easeOutQuad'});
                    }
  
                    $overlay.velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'});
                    $dragTarget.css({width: '50%', right: '', left: 0});
                    menuOut = true;
                  }
                  else if (!menuOut || velocityX < -0.3) {
                    // Enable Scrolling
                    $('body').css({
                      overflow: '',
                      width: ''
                    });
  
                    // Slide menu closed
                    menu.velocity({'translateX': [options.menuWidth + 10, rightPos]}, {duration: 200, queue: false, easing: 'easeOutQuad'});
                    $overlay.velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad',
                      complete: function () {
                        $(this).remove();
                      }});
                    $dragTarget.css({width: '10px', right: 0, left: ''});
                  }
                }
  
              }
            });
          }
  
          $this.off('click.sidenav').on('click.sidenav', function() {
            if (menuOut === true) {
              menuOut = false;
              panning = false;
              removeMenu();
            }
            else {
  
              // Disable Scrolling
              var $body = $('body');
              var $overlay = $('<div id="sidenav-overlay"></div>');
              var oldWidth = $body.innerWidth();
              $body.css('overflow', 'hidden');
              $body.width(oldWidth);
  
              // Push current drag target on top of DOM tree
              $('body').append($dragTarget);
  
              if (options.edge === 'left') {
                $dragTarget.css({width: '50%', right: 0, left: ''});
                menu.velocity({'translateX': [0, -1 * options.menuWidth]}, {duration: 300, queue: false, easing: 'easeOutQuad'});
              }
              else {
                $dragTarget.css({width: '50%', right: '', left: 0});
                menu.velocity({'translateX': [0, options.menuWidth]}, {duration: 300, queue: false, easing: 'easeOutQuad'});
              }
  
              $overlay.css('opacity', 0)
              .click(function(){
                menuOut = false;
                panning = false;
                removeMenu();
                $overlay.velocity({opacity: 0}, {duration: 300, queue: false, easing: 'easeOutQuad',
                  complete: function() {
                    $(this).remove();
                  } });
  
              });
              $('body').append($overlay);
              $overlay.velocity({opacity: 1}, {duration: 300, queue: false, easing: 'easeOutQuad',
                complete: function () {
                  menuOut = true;
                  panning = false;
                }
              });
            }
  
            return false;
          });
        });
  
  
      },
      destroy: function () {
        var $overlay = $('#sidenav-overlay');
        var $dragTarget = $('.drag-target[data-sidenav="' + $(this).attr('data-activates') + '"]');
        $overlay.trigger('click');
        $dragTarget.remove();
        $(this).off('click');
        $overlay.remove();
      },
      show : function() {
        this.trigger('click');
      },
      hide : function() {
        $('#sidenav-overlay').trigger('click');
      }
    };
  
  
    $.fn.sideNav = function(methodOrOptions) {
      if ( methods[methodOrOptions] ) {
        return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));
      } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
        // Default to "init"
        return methods.init.apply( this, arguments );
      } else {
        $.error( 'Method ' +  methodOrOptions + ' does not exist on jQuery.sideNav' );
      }
    }; // Plugin end
  }( jQuery ));
  ;/**
   * Extend jquery with a scrollspy plugin.
   * This watches the window scroll and fires events when elements are scrolled into viewport.
   *
   * throttle() and getTime() taken from Underscore.js
   * https://github.com/jashkenas/underscore
   *
   * @author Copyright 2013 John Smart
   * @license https://raw.github.com/thesmart/jquery-scrollspy/master/LICENSE
   * @see https://github.com/thesmart
   * @version 0.1.2
   */
  (function($) {
  
  	var jWindow = $(window);
  	var elements = [];
  	var elementsInView = [];
  	var isSpying = false;
  	var ticks = 0;
  	var unique_id = 1;
  	var offset = {
  		top : 0,
  		right : 0,
  		bottom : 0,
  		left : 0,
  	}
  
  	/**
  	 * Find elements that are within the boundary
  	 * @param {number} top
  	 * @param {number} right
  	 * @param {number} bottom
  	 * @param {number} left
  	 * @return {jQuery}		A collection of elements
  	 */
  	function findElements(top, right, bottom, left) {
  		var hits = $();
  		$.each(elements, function(i, element) {
  			if (element.height() > 0) {
  				var elTop = element.offset().top,
  					elLeft = element.offset().left,
  					elRight = elLeft + element.width(),
  					elBottom = elTop + element.height();
  
  				var isIntersect = !(elLeft > right ||
  					elRight < left ||
  					elTop > bottom ||
  					elBottom < top);
  
  				if (isIntersect) {
  					hits.push(element);
  				}
  			}
  		});
  
  		return hits;
  	}
  
  
  	/**
  	 * Called when the user scrolls the window
  	 */
  	function onScroll(scrollOffset) {
  		// unique tick id
  		++ticks;
  
  		// viewport rectangle
  		var top = jWindow.scrollTop(),
  			left = jWindow.scrollLeft(),
  			right = left + jWindow.width(),
  			bottom = top + jWindow.height();
  
  		// determine which elements are in view
  		var intersections = findElements(top+offset.top + scrollOffset || 200, right+offset.right, bottom+offset.bottom, left+offset.left);
  		$.each(intersections, function(i, element) {
  
  			var lastTick = element.data('scrollSpy:ticks');
  			if (typeof lastTick != 'number') {
  				// entered into view
  				element.triggerHandler('scrollSpy:enter');
  			}
  
  			// update tick id
  			element.data('scrollSpy:ticks', ticks);
  		});
  
  		// determine which elements are no longer in view
  		$.each(elementsInView, function(i, element) {
  			var lastTick = element.data('scrollSpy:ticks');
  			if (typeof lastTick == 'number' && lastTick !== ticks) {
  				// exited from view
  				element.triggerHandler('scrollSpy:exit');
  				element.data('scrollSpy:ticks', null);
  			}
  		});
  
  		// remember elements in view for next tick
  		elementsInView = intersections;
  	}
  
  	/**
  	 * Called when window is resized
  	*/
  	function onWinSize() {
  		jWindow.trigger('scrollSpy:winSize');
  	}
  
  
  	/**
  	 * Enables ScrollSpy using a selector
  	 * @param {jQuery|string} selector  The elements collection, or a selector
  	 * @param {Object=} options	Optional.
          throttle : number -> scrollspy throttling. Default: 100 ms
          offsetTop : number -> offset from top. Default: 0
          offsetRight : number -> offset from right. Default: 0
          offsetBottom : number -> offset from bottom. Default: 0
          offsetLeft : number -> offset from left. Default: 0
  	 * @returns {jQuery}
  	 */
  	$.scrollSpy = function(selector, options) {
  	  var defaults = {
  			throttle: 100,
  			scrollOffset: 200 // offset - 200 allows elements near bottom of page to scroll
      };
      options = $.extend(defaults, options);
  
  		var visible = [];
  		selector = $(selector);
  		selector.each(function(i, element) {
  			elements.push($(element));
  			$(element).data("scrollSpy:id", i);
  			// Smooth scroll to section
  		  $('a[href="#' + $(element).attr('id') + '"]').click(function(e) {
  		    e.preventDefault();
  		    var offset = $(Materialize.escapeHash(this.hash)).offset().top + 1;
  	    	$('html, body').animate({ scrollTop: offset - options.scrollOffset }, {duration: 400, queue: false, easing: 'easeOutCubic'});
  		  });
  		});
  
  		offset.top = options.offsetTop || 0;
  		offset.right = options.offsetRight || 0;
  		offset.bottom = options.offsetBottom || 0;
  		offset.left = options.offsetLeft || 0;
  
  		var throttledScroll = Materialize.throttle(function() {
  			onScroll(options.scrollOffset);
  		}, options.throttle || 100);
  		var readyScroll = function(){
  			$(document).ready(throttledScroll);
  		};
  
  		if (!isSpying) {
  			jWindow.on('scroll', readyScroll);
  			jWindow.on('resize', readyScroll);
  			isSpying = true;
  		}
  
  		// perform a scan once, after current execution context, and after dom is ready
  		setTimeout(readyScroll, 0);
  
  
  		selector.on('scrollSpy:enter', function() {
  			visible = $.grep(visible, function(value) {
  	      return value.height() != 0;
  	    });
  
  			var $this = $(this);
  
  			if (visible[0]) {
  				$('a[href="#' + visible[0].attr('id') + '"]').removeClass('active');
  				if ($this.data('scrollSpy:id') < visible[0].data('scrollSpy:id')) {
  					visible.unshift($(this));
  				}
  				else {
  					visible.push($(this));
  				}
  			}
  			else {
  				visible.push($(this));
  			}
  
  
  			$('a[href="#' + visible[0].attr('id') + '"]').addClass('active');
  		});
  		selector.on('scrollSpy:exit', function() {
  			visible = $.grep(visible, function(value) {
  	      return value.height() != 0;
  	    });
  
  			if (visible[0]) {
  				$('a[href="#' + visible[0].attr('id') + '"]').removeClass('active');
  				var $this = $(this);
  				visible = $.grep(visible, function(value) {
  	        return value.attr('id') != $this.attr('id');
  	      });
  	      if (visible[0]) { // Check if empty
  					$('a[href="#' + visible[0].attr('id') + '"]').addClass('active');
  	      }
  			}
  		});
  
  		return selector;
  	};
  
  	/**
  	 * Listen for window resize events
  	 * @param {Object=} options						Optional. Set { throttle: number } to change throttling. Default: 100 ms
  	 * @returns {jQuery}		$(window)
  	 */
  	$.winSizeSpy = function(options) {
  		$.winSizeSpy = function() { return jWindow; }; // lock from multiple calls
  		options = options || {
  			throttle: 100
  		};
  		return jWindow.on('resize', Materialize.throttle(onWinSize, options.throttle || 100));
  	};
  
  	/**
  	 * Enables ScrollSpy on a collection of elements
  	 * e.g. $('.scrollSpy').scrollSpy()
  	 * @param {Object=} options	Optional.
  											throttle : number -> scrollspy throttling. Default: 100 ms
  											offsetTop : number -> offset from top. Default: 0
  											offsetRight : number -> offset from right. Default: 0
  											offsetBottom : number -> offset from bottom. Default: 0
  											offsetLeft : number -> offset from left. Default: 0
  	 * @returns {jQuery}
  	 */
  	$.fn.scrollSpy = function(options) {
  		return $.scrollSpy($(this), options);
  	};
  
  })(jQuery);
  ;(function ($) {
    $(document).ready(function() {
  
      // Function to update labels of text fields
      Materialize.updateTextFields = function() {
        var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea';
        $(input_selector).each(function(index, element) {
          var $this = $(this);
          if ($(element).val().length > 0 || element.autofocus || $this.attr('placeholder') !== undefined) {
            $this.siblings('label').addClass('active');
          } else if ($(element)[0].validity) {
            $this.siblings('label').toggleClass('active', $(element)[0].validity.badInput === true);
          } else {
            $this.siblings('label').removeClass('active');
          }
        });
      };
  
      // Text based inputs
      var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea';
  
      // Add active if form auto complete
      $(document).on('change', input_selector, function () {
        if($(this).val().length !== 0 || $(this).attr('placeholder') !== undefined) {
          $(this).siblings('label').addClass('active');
        }
        validate_field($(this));
      });
  
      // Add active if input element has been pre-populated on document ready
      $(document).ready(function() {
        Materialize.updateTextFields();
      });
  
      // HTML DOM FORM RESET handling
      $(document).on('reset', function(e) {
        var formReset = $(e.target);
        if (formReset.is('form')) {
          formReset.find(input_selector).removeClass('valid').removeClass('invalid');
          formReset.find(input_selector).each(function () {
            if ($(this).attr('value') === '') {
              $(this).siblings('label').removeClass('active');
            }
          });
  
          // Reset select
          formReset.find('select.initialized').each(function () {
            var reset_text = formReset.find('option[selected]').text();
            formReset.siblings('input.select-dropdown').val(reset_text);
          });
        }
      });
  
      // Add active when element has focus
      $(document).on('focus', input_selector, function () {
        $(this).siblings('label, .prefix').addClass('active');
      });
  
      $(document).on('blur', input_selector, function () {
        var $inputElement = $(this);
        var selector = ".prefix";
  
        if ($inputElement.val().length === 0 && $inputElement[0].validity.badInput !== true && $inputElement.attr('placeholder') === undefined) {
          selector += ", label";
        }
  
        $inputElement.siblings(selector).removeClass('active');
  
        validate_field($inputElement);
      });
  
      window.validate_field = function(object) {
        var hasLength = object.attr('data-length') !== undefined;
        var lenAttr = parseInt(object.attr('data-length'));
        var len = object.val().length;
  
        if (object.val().length === 0 && object[0].validity.badInput === false) {
          if (object.hasClass('validate')) {
            object.removeClass('valid');
            object.removeClass('invalid');
          }
        }
        else {
          if (object.hasClass('validate')) {
            // Check for character counter attributes
            if ((object.is(':valid') && hasLength && (len <= lenAttr)) || (object.is(':valid') && !hasLength)) {
              object.removeClass('invalid');
              object.addClass('valid');
            }
            else {
              object.removeClass('valid');
              object.addClass('invalid');
            }
          }
        }
      };
  
      // Radio and Checkbox focus class
      var radio_checkbox = 'input[type=radio], input[type=checkbox]';
      $(document).on('keyup.radio', radio_checkbox, function(e) {
        // TAB, check if tabbing to radio or checkbox.
        if (e.which === 9) {
          $(this).addClass('tabbed');
          var $this = $(this);
          $this.one('blur', function(e) {
  
            $(this).removeClass('tabbed');
          });
          return;
        }
      });
  
      // Textarea Auto Resize
      var hiddenDiv = $('.hiddendiv').first();
      if (!hiddenDiv.length) {
        hiddenDiv = $('<div class="hiddendiv common"></div>');
        $('body').append(hiddenDiv);
      }
      var text_area_selector = '.materialize-textarea';
  
      function textareaAutoResize($textarea) {
        // Set font properties of hiddenDiv
  
        var fontFamily = $textarea.css('font-family');
        var fontSize = $textarea.css('font-size');
        var lineHeight = $textarea.css('line-height');
  
        if (fontSize) { hiddenDiv.css('font-size', fontSize); }
        if (fontFamily) { hiddenDiv.css('font-family', fontFamily); }
        if (lineHeight) { hiddenDiv.css('line-height', lineHeight); }
  
        if ($textarea.attr('wrap') === "off") {
          hiddenDiv.css('overflow-wrap', "normal")
                   .css('white-space', "pre");
        }
  
        hiddenDiv.text($textarea.val() + '\n');
        var content = hiddenDiv.html().replace(/\n/g, '<br>');
        hiddenDiv.html(content);
  
  
        // When textarea is hidden, width goes crazy.
        // Approximate with half of window size
  
        if ($textarea.is(':visible')) {
          hiddenDiv.css('width', $textarea.width());
        }
        else {
          hiddenDiv.css('width', $(window).width()/2);
        }
  
        /**
         * Resize if the new height is greater than the
         * original height of the textarea
         */
        if ($textarea.data("original-height") <= hiddenDiv.height()) {
          $textarea.css('height', hiddenDiv.height());
        } else if ($textarea.val().length < $textarea.data("previous-length")) {
          /**
           * In case the new height is less than original height, it
           * means the textarea has less text than before
           * So we set the height to the original one
           */
          $textarea.css('height', $textarea.data("original-height"));
        }
        $textarea.data("previous-length", $textarea.val().length);
      }
  
      $(text_area_selector).each(function () {
        var $textarea = $(this);
        /**
         * Instead of resizing textarea on document load,
         * store the original height and the original length
         */
        $textarea.data("original-height", $textarea.height());
        $textarea.data("previous-length", $textarea.val().length);
      });
  
      $('body').on('keyup keydown autoresize', text_area_selector, function () {
        textareaAutoResize($(this));
      });
  
      // File Input Path
      $(document).on('change', '.file-field input[type="file"]', function () {
        var file_field = $(this).closest('.file-field');
        var path_input = file_field.find('input.file-path');
        var files      = $(this)[0].files;
        var file_names = [];
        for (var i = 0; i < files.length; i++) {
          file_names.push(files[i].name);
        }
        path_input.val(file_names.join(", "));
        path_input.trigger('change');
      });
  
      /****************
      *  Range Input  *
      ****************/
  
      var range_type = 'input[type=range]';
      var range_mousedown = false;
      var left;
  
      $(range_type).each(function () {
        var thumb = $('<span class="thumb"><span class="value"></span></span>');
        $(this).after(thumb);
      });
  
      var showRangeBubble = function(thumb) {
        var paddingLeft = parseInt(thumb.parent().css('padding-left'));
        var marginLeft = (-7 + paddingLeft) + 'px';
        thumb.velocity({ height: "30px", width: "30px", top: "-30px", marginLeft: marginLeft}, { duration: 300, easing: 'easeOutExpo' });
      };
  
      var calcRangeOffset = function(range) {
        var width = range.width() - 15;
        var max = parseFloat(range.attr('max'));
        var min = parseFloat(range.attr('min'));
        var percent = (parseFloat(range.val()) - min) / (max - min);
        return percent * width;
      }
  
      var range_wrapper = '.range-field';
      $(document).on('change', range_type, function(e) {
        var thumb = $(this).siblings('.thumb');
        thumb.find('.value').html($(this).val());
  
        if (!thumb.hasClass('active')) {
          showRangeBubble(thumb);
        }
  
        var offsetLeft = calcRangeOffset($(this));
        thumb.addClass('active').css('left', offsetLeft);
      });
  
      $(document).on('mousedown touchstart', range_type, function(e) {
        var thumb = $(this).siblings('.thumb');
  
        // If thumb indicator does not exist yet, create it
        if (thumb.length <= 0) {
          thumb = $('<span class="thumb"><span class="value"></span></span>');
          $(this).after(thumb);
        }
  
        // Set indicator value
        thumb.find('.value').html($(this).val());
  
        range_mousedown = true;
        $(this).addClass('active');
  
        if (!thumb.hasClass('active')) {
          showRangeBubble(thumb);
        }
  
        if (e.type !== 'input') {
          var offsetLeft = calcRangeOffset($(this));
          thumb.addClass('active').css('left', offsetLeft);
        }
      });
  
      $(document).on('mouseup touchend', range_wrapper, function() {
        range_mousedown = false;
        $(this).removeClass('active');
      });
  
      $(document).on('input mousemove touchmove', range_wrapper, function(e) {
        var thumb = $(this).children('.thumb');
        var left;
        var input = $(this).find(range_type);
  
        if (range_mousedown) {
          if (!thumb.hasClass('active')) {
            showRangeBubble(thumb);
          }
  
          var offsetLeft = calcRangeOffset(input);
          thumb.addClass('active').css('left', offsetLeft);
          thumb.find('.value').html(thumb.siblings(range_type).val());
        }
      });
  
      $(document).on('mouseout touchleave', range_wrapper, function() {
        if (!range_mousedown) {
  
          var thumb = $(this).children('.thumb');
          var paddingLeft = parseInt($(this).css('padding-left'));
          var marginLeft = (7 + paddingLeft) + 'px';
  
          if (thumb.hasClass('active')) {
            thumb.velocity({ height: '0', width: '0', top: '10px', marginLeft: marginLeft}, { duration: 100 });
          }
          thumb.removeClass('active');
        }
      });
  
      /**************************
       * Auto complete plugin  *
       *************************/
      $.fn.autocomplete = function (options) {
        // Defaults
        var defaults = {
          data: {},
          limit: Infinity,
          onAutocomplete: null,
          minLength: 1
        };
  
        options = $.extend(defaults, options);
  
        return this.each(function() {
          var $input = $(this);
          var data = options.data,
              count = 0,
              activeIndex = -1,
              oldVal,
              $inputDiv = $input.closest('.input-field'); // Div to append on
  
          // Check if data isn't empty
          if (!$.isEmptyObject(data)) {
            var $autocomplete = $('<ul class="autocomplete-content dropdown-content"></ul>');
            var $oldAutocomplete;
  
            // Append autocomplete element.
            // Prevent double structure init.
            if ($inputDiv.length) {
              $oldAutocomplete = $inputDiv.children('.autocomplete-content.dropdown-content').first();
              if (!$oldAutocomplete.length) {
                $inputDiv.append($autocomplete); // Set ul in body
              }
            } else {
              $oldAutocomplete = $input.next('.autocomplete-content.dropdown-content');
              if (!$oldAutocomplete.length) {
                $input.after($autocomplete);
              }
            }
            if ($oldAutocomplete.length) {
              $autocomplete = $oldAutocomplete;
            }
  
            // Highlight partial match.
            var highlight = function(string, $el) {
              var img = $el.find('img');
              var matchStart = $el.text().toLowerCase().indexOf("" + string.toLowerCase() + ""),
                  matchEnd = matchStart + string.length - 1,
                  beforeMatch = $el.text().slice(0, matchStart),
                  matchText = $el.text().slice(matchStart, matchEnd + 1),
                  afterMatch = $el.text().slice(matchEnd + 1);
              $el.html("<span>" + beforeMatch + "<span class='highlight'>" + matchText + "</span>" + afterMatch + "</span>");
              if (img.length) {
                $el.prepend(img);
              }
            };
  
            // Reset current element position
            var resetCurrentElement = function() {
              activeIndex = -1;
              $autocomplete.find('.active').removeClass('active');
            }
  
            // Remove autocomplete elements
            var removeAutocomplete = function() {
              $autocomplete.empty();
              resetCurrentElement();
              oldVal = undefined;
            };
  
            $input.off('blur.autocomplete').on('blur.autocomplete', function() {
              removeAutocomplete();
            });
  
            // Perform search
            $input.off('keyup.autocomplete focus.autocomplete').on('keyup.autocomplete focus.autocomplete', function (e) {
              // Reset count.
              count = 0;
              var val = $input.val().toLowerCase();
  
              // Don't capture enter or arrow key usage.
              if (e.which === 13 ||
                  e.which === 38 ||
                  e.which === 40) {
                return;
              }
  
  
              // Check if the input isn't empty
              if (oldVal !== val) {
                removeAutocomplete();
  
                if (val.length >= options.minLength) {
                  for(var key in data) {
                    if (data.hasOwnProperty(key) &&
                        key.toLowerCase().indexOf(val) !== -1 &&
                        key.toLowerCase() !== val) {
                      // Break if past limit
                      if (count >= options.limit) {
                        break;
                      }
  
                      var autocompleteOption = $('<li></li>');
                      if (!!data[key]) {
                        autocompleteOption.append('<img src="'+ data[key] +'" class="right circle"><span>'+ key +'</span>');
                      } else {
                        autocompleteOption.append('<span>'+ key +'</span>');
                      }
  
                      $autocomplete.append(autocompleteOption);
                      highlight(val, autocompleteOption);
                      count++;
                    }
                  }
                }
              }
  
              // Update oldVal
              oldVal = val;
            });
  
            $input.off('keydown.autocomplete').on('keydown.autocomplete', function (e) {
              // Arrow keys and enter key usage
              var keyCode = e.which,
                  liElement,
                  numItems = $autocomplete.children('li').length,
                  $active = $autocomplete.children('.active').first();
  
              // select element on Enter
              if (keyCode === 13 && activeIndex >= 0) {
                liElement = $autocomplete.children('li').eq(activeIndex);
                if (liElement.length) {
                  liElement.trigger('mousedown.autocomplete');
                  e.preventDefault();
                }
                return;
              }
  
              // Capture up and down key
              if ( keyCode === 38 || keyCode === 40 ) {
                e.preventDefault();
  
                if (keyCode === 38 &&
                    activeIndex > 0) {
                  activeIndex--;
                }
  
                if (keyCode === 40 &&
                    activeIndex < (numItems - 1)) {
                  activeIndex++;
                }
  
                $active.removeClass('active');
                if (activeIndex >= 0) {
                  $autocomplete.children('li').eq(activeIndex).addClass('active');
                }
              }
            });
  
            // Set input value
            $autocomplete.on('mousedown.autocomplete touchstart.autocomplete', 'li', function () {
              var text = $(this).text().trim();
              $input.val(text);
              $input.trigger('change');
              removeAutocomplete();
  
              // Handle onAutocomplete callback.
              if (typeof(options.onAutocomplete) === "function") {
                options.onAutocomplete.call(this, text);
              }
            });
          }
        });
      };
  
    }); // End of $(document).ready
  
    /*******************
     *  Select Plugin  *
     ******************/
    $.fn.material_select = function (callback) {
      $(this).each(function(){
        var $select = $(this);
  
        if ($select.hasClass('browser-default')) {
          return; // Continue to next (return false breaks out of entire loop)
        }
  
        var multiple = $select.attr('multiple') ? true : false,
            lastID = $select.data('select-id'); // Tear down structure if Select needs to be rebuilt
  
        if (lastID) {
          $select.parent().find('span.caret').remove();
          $select.parent().find('input').remove();
  
          $select.unwrap();
          $('ul#select-options-'+lastID).remove();
        }
  
        // If destroying the select, remove the selelct-id and reset it to it's uninitialized state.
        if(callback === 'destroy') {
          $select.data('select-id', null).removeClass('initialized');
          return;
        }
  
        var uniqueID = Materialize.guid();
        $select.data('select-id', uniqueID);
        var wrapper = $('<div class="select-wrapper"></div>');
        wrapper.addClass($select.attr('class'));
        var options = $('<ul id="select-options-' + uniqueID +'" class="dropdown-content select-dropdown ' + (multiple ? 'multiple-select-dropdown' : '') + '"></ul>'),
            selectChildren = $select.children('option, optgroup'),
            valuesSelected = [],
            optionsHover = false;
  
        var label = $select.find('option:selected').html() || $select.find('option:first').html() || "";
  
        // Function that renders and appends the option taking into
        // account type and possible image icon.
        var appendOptionWithIcon = function(select, option, type) {
          // Add disabled attr if disabled
          var disabledClass = (option.is(':disabled')) ? 'disabled ' : '';
          var optgroupClass = (type === 'optgroup-option') ? 'optgroup-option ' : '';
          var multipleCheckbox = multiple ? '<input type="checkbox"' + disabledClass + '/><label></label>' : '';
  
          // add icons
          var icon_url = option.data('icon');
          var classes = option.attr('class');
          if (!!icon_url) {
            var classString = '';
            if (!!classes) classString = ' class="' + classes + '"';
  
            // Check for multiple type.
            options.append($('<li class="' + disabledClass + optgroupClass + '"><img alt="" src="' + icon_url + '"' + classString + '><span>' + multipleCheckbox + option.html() + '</span></li>'));
            return true;
          }
  
          // Check for multiple type.
          options.append($('<li class="' + disabledClass + optgroupClass + '"><span>' + multipleCheckbox + option.html() + '</span></li>'));
        };
  
        /* Create dropdown structure. */
        if (selectChildren.length) {
          selectChildren.each(function() {
            if ($(this).is('option')) {
              // Direct descendant option.
              if (multiple) {
                appendOptionWithIcon($select, $(this), 'multiple');
  
              } else {
                appendOptionWithIcon($select, $(this));
              }
            } else if ($(this).is('optgroup')) {
              // Optgroup.
              var selectOptions = $(this).children('option');
              options.append($('<li class="optgroup"><span>' + $(this).attr('label') + '</span></li>'));
  
              selectOptions.each(function() {
                appendOptionWithIcon($select, $(this), 'optgroup-option');
              });
            }
          });
        }
  
        options.find('li:not(.optgroup)').each(function (i) {
          $(this).click(function (e) {
            // Check if option element is disabled
            if (!$(this).hasClass('disabled') && !$(this).hasClass('optgroup')) {
              var selected = true;
  
              if (multiple) {
                $('input[type="checkbox"]', this).prop('checked', function(i, v) { return !v; });
                selected = toggleEntryFromArray(valuesSelected, i, $select);
                $newSelect.trigger('focus');
              } else {
                options.find('li').removeClass('active');
                $(this).toggleClass('active');
                $newSelect.val($(this).text());
              }
  
              activateOption(options, $(this));
              $select.find('option').eq(i).prop('selected', selected);
              // Trigger onchange() event
              $select.trigger('change');
              if (typeof callback !== 'undefined') callback();
            }
  
            e.stopPropagation();
          });
        });
  
        // Wrap Elements
        $select.wrap(wrapper);
        // Add Select Display Element
        var dropdownIcon = $('<span class="caret">&#9660;</span>');
        if ($select.is(':disabled'))
          dropdownIcon.addClass('disabled');
  
        // escape double quotes
        var sanitizedLabelHtml = label.replace(/"/g, '&quot;');
  
        var $newSelect = $('<input type="text" class="select-dropdown" readonly="true" ' + (($select.is(':disabled')) ? 'disabled' : '') + ' data-activates="select-options-' + uniqueID +'" value="'+ sanitizedLabelHtml +'"/>');
        $select.before($newSelect);
        $newSelect.before(dropdownIcon);
  
        $newSelect.after(options);
        // Check if section element is disabled
        if (!$select.is(':disabled')) {
          $newSelect.dropdown({'hover': false});
        }
  
        // Copy tabindex
        if ($select.attr('tabindex')) {
          $($newSelect[0]).attr('tabindex', $select.attr('tabindex'));
        }
  
        $select.addClass('initialized');
  
        $newSelect.on({
          'focus': function (){
            if ($('ul.select-dropdown').not(options[0]).is(':visible')) {
              $('input.select-dropdown').trigger('close');
            }
            if (!options.is(':visible')) {
              $(this).trigger('open', ['focus']);
              var label = $(this).val();
              if (multiple && label.indexOf(',') >= 0) {
                label = label.split(',')[0];
              }
  
              var selectedOption = options.find('li').filter(function() {
                return $(this).text().toLowerCase() === label.toLowerCase();
              })[0];
              activateOption(options, selectedOption, true);
            }
          },
          'click': function (e){
            e.stopPropagation();
          }
        });
  
        $newSelect.on('blur', function() {
          if (!multiple) {
            $(this).trigger('close');
          }
          options.find('li.selected').removeClass('selected');
        });
  
        options.hover(function() {
          optionsHover = true;
        }, function () {
          optionsHover = false;
        });
  
        $(window).on({
          'click': function () {
            multiple && (optionsHover || $newSelect.trigger('close'));
          }
        });
  
        // Add initial multiple selections.
        if (multiple) {
          $select.find("option:selected:not(:disabled)").each(function () {
            var index = $(this).index();
  
            toggleEntryFromArray(valuesSelected, index, $select);
            options.find("li").eq(index).find(":checkbox").prop("checked", true);
          });
        }
  
        /**
         * Make option as selected and scroll to selected position
         * @param {jQuery} collection  Select options jQuery element
         * @param {Element} newOption  element of the new option
         * @param {Boolean} firstActivation  If on first activation of select
         */
        var activateOption = function(collection, newOption, firstActivation) {
          if (newOption) {
            collection.find('li.selected').removeClass('selected');
            var option = $(newOption);
            option.addClass('selected');
            if (!multiple || !!firstActivation) {
              options.scrollTo(option);
            }
          }
        };
  
        // Allow user to search by typing
        // this array is cleared after 1 second
        var filterQuery = [],
            onKeyDown = function(e){
              // TAB - switch to another input
              if(e.which == 9){
                $newSelect.trigger('close');
                return;
              }
  
              // ARROW DOWN WHEN SELECT IS CLOSED - open select options
              if(e.which == 40 && !options.is(':visible')){
                $newSelect.trigger('open');
                return;
              }
  
              // ENTER WHEN SELECT IS CLOSED - submit form
              if(e.which == 13 && !options.is(':visible')){
                return;
              }
  
              e.preventDefault();
  
              // CASE WHEN USER TYPE LETTERS
              var letter = String.fromCharCode(e.which).toLowerCase(),
                  nonLetters = [9,13,27,38,40];
              if (letter && (nonLetters.indexOf(e.which) === -1)) {
                filterQuery.push(letter);
  
                var string = filterQuery.join(''),
                    newOption = options.find('li').filter(function() {
                      return $(this).text().toLowerCase().indexOf(string) === 0;
                    })[0];
  
                if (newOption) {
                  activateOption(options, newOption);
                }
              }
  
              // ENTER - select option and close when select options are opened
              if (e.which == 13) {
                var activeOption = options.find('li.selected:not(.disabled)')[0];
                if(activeOption){
                  $(activeOption).trigger('click');
                  if (!multiple) {
                    $newSelect.trigger('close');
                  }
                }
              }
  
              // ARROW DOWN - move to next not disabled option
              if (e.which == 40) {
                if (options.find('li.selected').length) {
                  newOption = options.find('li.selected').next('li:not(.disabled)')[0];
                } else {
                  newOption = options.find('li:not(.disabled)')[0];
                }
                activateOption(options, newOption);
              }
  
              // ESC - close options
              if (e.which == 27) {
                $newSelect.trigger('close');
              }
  
              // ARROW UP - move to previous not disabled option
              if (e.which == 38) {
                newOption = options.find('li.selected').prev('li:not(.disabled)')[0];
                if(newOption)
                  activateOption(options, newOption);
              }
  
              // Automaticaly clean filter query so user can search again by starting letters
              setTimeout(function(){ filterQuery = []; }, 1000);
            };
  
        $newSelect.on('keydown', onKeyDown);
      });
  
      function toggleEntryFromArray(entriesArray, entryIndex, select) {
        var index = entriesArray.indexOf(entryIndex),
            notAdded = index === -1;
  
        if (notAdded) {
          entriesArray.push(entryIndex);
        } else {
          entriesArray.splice(index, 1);
        }
  
        select.siblings('ul.dropdown-content').find('li:not(.optgroup)').eq(entryIndex).toggleClass('active');
  
        // use notAdded instead of true (to detect if the option is selected or not)
        select.find('option').eq(entryIndex).prop('selected', notAdded);
        setValueToInput(entriesArray, select);
  
        return notAdded;
      }
  
      function setValueToInput(entriesArray, select) {
        var value = '';
  
        for (var i = 0, count = entriesArray.length; i < count; i++) {
          var text = select.find('option').eq(entriesArray[i]).text();
  
          i === 0 ? value += text : value += ', ' + text;
        }
  
        if (value === '') {
          value = select.find('option:disabled').eq(0).text();
        }
  
        select.siblings('input.select-dropdown').val(value);
      }
    };
  
  }( jQuery ));
  ;(function ($) {
  
    var methods = {
  
      init : function(options) {
        var defaults = {
          indicators: true,
          height: 400,
          transition: 500,
          interval: 6000
        };
        options = $.extend(defaults, options);
  
        return this.each(function() {
  
          // For each slider, we want to keep track of
          // which slide is active and its associated content
          var $this = $(this);
          var $slider = $this.find('ul.slides').first();
          var $slides = $slider.find('> li');
          var $active_index = $slider.find('.active').index();
          var $active, $indicators, $interval;
          if ($active_index != -1) { $active = $slides.eq($active_index); }
  
          // Transitions the caption depending on alignment
          function captionTransition(caption, duration) {
            if (caption.hasClass("center-align")) {
              caption.velocity({opacity: 0, translateY: -100}, {duration: duration, queue: false});
            }
            else if (caption.hasClass("right-align")) {
              caption.velocity({opacity: 0, translateX: 100}, {duration: duration, queue: false});
            }
            else if (caption.hasClass("left-align")) {
              caption.velocity({opacity: 0, translateX: -100}, {duration: duration, queue: false});
            }
          }
  
          // This function will transition the slide to any index of the next slide
          function moveToSlide(index) {
            // Wrap around indices.
            if (index >= $slides.length) index = 0;
            else if (index < 0) index = $slides.length -1;
  
            $active_index = $slider.find('.active').index();
  
            // Only do if index changes
            if ($active_index != index) {
              $active = $slides.eq($active_index);
              $caption = $active.find('.caption');
  
              $active.removeClass('active');
              $active.velocity({opacity: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad',
                                complete: function() {
                                  $slides.not('.active').velocity({opacity: 0, translateX: 0, translateY: 0}, {duration: 0, queue: false});
                                } });
              captionTransition($caption, options.transition);
  
  
              // Update indicators
              if (options.indicators) {
                $indicators.eq($active_index).removeClass('active');
              }
  
              $slides.eq(index).velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'});
              $slides.eq(index).find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, delay: options.transition, queue: false, easing: 'easeOutQuad'});
              $slides.eq(index).addClass('active');
  
  
              // Update indicators
              if (options.indicators) {
                $indicators.eq(index).addClass('active');
              }
            }
          }
  
          // Set height of slider
          // If fullscreen, do nothing
          if (!$this.hasClass('fullscreen')) {
            if (options.indicators) {
              // Add height if indicators are present
              $this.height(options.height + 40);
            }
            else {
              $this.height(options.height);
            }
            $slider.height(options.height);
          }
  
  
          // Set initial positions of captions
          $slides.find('.caption').each(function () {
            captionTransition($(this), 0);
          });
  
          // Move img src into background-image
          $slides.find('img').each(function () {
            var placeholderBase64 = 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
            if ($(this).attr('src') !== placeholderBase64) {
              $(this).css('background-image', 'url(' + $(this).attr('src') + ')' );
              $(this).attr('src', placeholderBase64);
            }
          });
  
          // dynamically add indicators
          if (options.indicators) {
            $indicators = $('<ul class="indicators"></ul>');
            $slides.each(function( index ) {
              var $indicator = $('<li class="indicator-item"></li>');
  
              // Handle clicks on indicators
              $indicator.click(function () {
                var $parent = $slider.parent();
                var curr_index = $parent.find($(this)).index();
                moveToSlide(curr_index);
  
                // reset interval
                clearInterval($interval);
                $interval = setInterval(
                  function(){
                    $active_index = $slider.find('.active').index();
                    if ($slides.length == $active_index + 1) $active_index = 0; // loop to start
                    else $active_index += 1;
  
                    moveToSlide($active_index);
  
                  }, options.transition + options.interval
                );
              });
              $indicators.append($indicator);
            });
            $this.append($indicators);
            $indicators = $this.find('ul.indicators').find('li.indicator-item');
          }
  
          if ($active) {
            $active.show();
          }
          else {
            $slides.first().addClass('active').velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'});
  
            $active_index = 0;
            $active = $slides.eq($active_index);
  
            // Update indicators
            if (options.indicators) {
              $indicators.eq($active_index).addClass('active');
            }
          }
  
          // Adjust height to current slide
          $active.find('img').each(function() {
            $active.find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad'});
          });
  
          // auto scroll
          $interval = setInterval(
            function(){
              $active_index = $slider.find('.active').index();
              moveToSlide($active_index + 1);
  
            }, options.transition + options.interval
          );
  
  
          // HammerJS, Swipe navigation
  
          // Touch Event
          var panning = false;
          var swipeLeft = false;
          var swipeRight = false;
  
          $this.hammer({
              prevent_default: false
          }).bind('pan', function(e) {
            if (e.gesture.pointerType === "touch") {
  
              // reset interval
              clearInterval($interval);
  
              var direction = e.gesture.direction;
              var x = e.gesture.deltaX;
              var velocityX = e.gesture.velocityX;
              var velocityY = e.gesture.velocityY;
  
              $curr_slide = $slider.find('.active');
              if (Math.abs(velocityX) > Math.abs(velocityY)) {
                $curr_slide.velocity({ translateX: x
                    }, {duration: 50, queue: false, easing: 'easeOutQuad'});
              }
  
              // Swipe Left
              if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.65)) {
                swipeRight = true;
              }
              // Swipe Right
              else if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.65)) {
                swipeLeft = true;
              }
  
              // Make Slide Behind active slide visible
              var next_slide;
              if (swipeLeft) {
                next_slide = $curr_slide.next();
                if (next_slide.length === 0) {
                  next_slide = $slides.first();
                }
                next_slide.velocity({ opacity: 1
                    }, {duration: 300, queue: false, easing: 'easeOutQuad'});
              }
              if (swipeRight) {
                next_slide = $curr_slide.prev();
                if (next_slide.length === 0) {
                  next_slide = $slides.last();
                }
                next_slide.velocity({ opacity: 1
                    }, {duration: 300, queue: false, easing: 'easeOutQuad'});
              }
  
  
            }
  
          }).bind('panend', function(e) {
            if (e.gesture.pointerType === "touch") {
  
              $curr_slide = $slider.find('.active');
              panning = false;
              curr_index = $slider.find('.active').index();
  
              if (!swipeRight && !swipeLeft || $slides.length <=1) {
                // Return to original spot
                $curr_slide.velocity({ translateX: 0
                    }, {duration: 300, queue: false, easing: 'easeOutQuad'});
              }
              else if (swipeLeft) {
                moveToSlide(curr_index + 1);
                $curr_slide.velocity({translateX: -1 * $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad',
                                      complete: function() {
                                        $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false});
                                      } });
              }
              else if (swipeRight) {
                moveToSlide(curr_index - 1);
                $curr_slide.velocity({translateX: $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad',
                                      complete: function() {
                                        $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false});
                                      } });
              }
              swipeLeft = false;
              swipeRight = false;
  
              // Restart interval
              clearInterval($interval);
              $interval = setInterval(
                function(){
                  $active_index = $slider.find('.active').index();
                  if ($slides.length == $active_index + 1) $active_index = 0; // loop to start
                  else $active_index += 1;
  
                  moveToSlide($active_index);
  
                }, options.transition + options.interval
              );
            }
          });
  
          $this.on('sliderPause', function() {
            clearInterval($interval);
          });
  
          $this.on('sliderStart', function() {
            clearInterval($interval);
            $interval = setInterval(
              function(){
                $active_index = $slider.find('.active').index();
                if ($slides.length == $active_index + 1) $active_index = 0; // loop to start
                else $active_index += 1;
  
                moveToSlide($active_index);
  
              }, options.transition + options.interval
            );
          });
  
          $this.on('sliderNext', function() {
            $active_index = $slider.find('.active').index();
            moveToSlide($active_index + 1);
          });
  
          $this.on('sliderPrev', function() {
            $active_index = $slider.find('.active').index();
            moveToSlide($active_index - 1);
          });
  
        });
  
  
  
      },
      pause : function() {
        $(this).trigger('sliderPause');
      },
      start : function() {
        $(this).trigger('sliderStart');
      },
      next : function() {
        $(this).trigger('sliderNext');
      },
      prev : function() {
        $(this).trigger('sliderPrev');
      }
    };
  
  
    $.fn.slider = function(methodOrOptions) {
      if ( methods[methodOrOptions] ) {
        return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));
      } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
        // Default to "init"
        return methods.init.apply( this, arguments );
      } else {
        $.error( 'Method ' +  methodOrOptions + ' does not exist on jQuery.tooltip' );
      }
    }; // Plugin end
  }( jQuery ));
  ;(function ($) {
    $(document).ready(function() {
  
      $(document).on('click.card', '.card', function (e) {
        if ($(this).find('> .card-reveal').length) {
          if ($(e.target).is($('.card-reveal .card-title')) || $(e.target).is($('.card-reveal .card-title i'))) {
            // Make Reveal animate down and display none
            $(this).find('.card-reveal').velocity(
              {translateY: 0}, {
                duration: 225,
                queue: false,
                easing: 'easeInOutQuad',
                complete: function() { $(this).css({ display: 'none'}); }
              }
            );
          }
          else if ($(e.target).is($('.card .activator')) ||
                   $(e.target).is($('.card .activator i')) ) {
            $(e.target).closest('.card').css('overflow', 'hidden');
            $(this).find('.card-reveal').css({ display: 'block'}).velocity("stop", false).velocity({translateY: '-100%'}, {duration: 300, queue: false, easing: 'easeInOutQuad'});
          }
        }
      });
  
    });
  }( jQuery ));;(function ($) {
    var materialChipsDefaults = {
      data: [],
      placeholder: '',
      secondaryPlaceholder: '',
      autocompleteOptions: {},
    };
  
    $(document).ready(function() {
      // Handle removal of static chips.
      $(document).on('click', '.chip .close', function(e){
        var $chips = $(this).closest('.chips');
        if ($chips.attr('data-initialized')) {
          return;
        }
        $(this).closest('.chip').remove();
      });
    });
  
    $.fn.material_chip = function (options) {
      var self = this;
      this.$el = $(this);
      this.$document = $(document);
      this.SELS = {
        CHIPS: '.chips',
        CHIP: '.chip',
        INPUT: 'input',
        DELETE: '.material-icons',
        SELECTED_CHIP: '.selected',
      };
  
      if ('data' === options) {
        return this.$el.data('chips');
      }
  
      var curr_options = $.extend({}, materialChipsDefaults, options);
      self.hasAutocomplete = !$.isEmptyObject(curr_options.autocompleteOptions.data);
  
      // Initialize
      this.init = function() {
        var i = 0;
        var chips;
        self.$el.each(function(){
          var $chips = $(this);
          var chipId = Materialize.guid();
          self.chipId = chipId;
  
          if (!curr_options.data || !(curr_options.data instanceof Array)) {
            curr_options.data = [];
          }
          $chips.data('chips', curr_options.data);
          $chips.attr('data-index', i);
          $chips.attr('data-initialized', true);
  
          if (!$chips.hasClass(self.SELS.CHIPS)) {
            $chips.addClass('chips');
          }
  
          self.chips($chips, chipId);
          i++;
        });
      };
  
      this.handleEvents = function() {
        var SELS = self.SELS;
  
        self.$document.off('click.chips-focus', SELS.CHIPS).on('click.chips-focus', SELS.CHIPS, function(e){
          $(e.target).find(SELS.INPUT).focus();
        });
  
        self.$document.off('click.chips-select', SELS.CHIP).on('click.chips-select', SELS.CHIP, function(e){
          var $chip = $(e.target);
          if ($chip.length) {
            var wasSelected = $chip.hasClass('selected');
            var $chips = $chip.closest(SELS.CHIPS);
            $(SELS.CHIP).removeClass('selected');
  
            if (!wasSelected) {
              self.selectChip($chip.index(), $chips);
            }
          }
        });
  
        self.$document.off('keydown.chips').on('keydown.chips', function(e){
          if ($(e.target).is('input, textarea')) {
            return;
          }
  
          // delete
          var $chip = self.$document.find(SELS.CHIP + SELS.SELECTED_CHIP);
          var $chips = $chip.closest(SELS.CHIPS);
          var length = $chip.siblings(SELS.CHIP).length;
          var index;
  
          if (!$chip.length) {
            return;
          }
  
          if (e.which === 8 || e.which === 46) {
            e.preventDefault();
  
            index = $chip.index();
            self.deleteChip(index, $chips);
  
            var selectIndex = null;
            if ((index + 1) < length) {
              selectIndex = index;
            } else if (index === length || (index + 1) === length) {
              selectIndex = length - 1;
            }
  
            if (selectIndex < 0) selectIndex = null;
  
            if (null !== selectIndex) {
              self.selectChip(selectIndex, $chips);
            }
            if (!length) $chips.find('input').focus();
  
          // left
          } else if (e.which === 37) {
            index = $chip.index() - 1;
            if (index < 0) {
              return;
            }
            $(SELS.CHIP).removeClass('selected');
            self.selectChip(index, $chips);
  
          // right
          } else if (e.which === 39) {
            index = $chip.index() + 1;
            $(SELS.CHIP).removeClass('selected');
            if (index > length) {
              $chips.find('input').focus();
              return;
            }
            self.selectChip(index, $chips);
          }
        });
  
        self.$document.off('focusin.chips', SELS.CHIPS + ' ' + SELS.INPUT).on('focusin.chips', SELS.CHIPS + ' ' + SELS.INPUT, function(e){
          var $currChips = $(e.target).closest(SELS.CHIPS);
          $currChips.addClass('focus');
          $currChips.siblings('label, .prefix').addClass('active');
          $(SELS.CHIP).removeClass('selected');
        });
  
        self.$document.off('focusout.chips', SELS.CHIPS + ' ' + SELS.INPUT).on('focusout.chips', SELS.CHIPS + ' ' + SELS.INPUT, function(e){
          var $currChips = $(e.target).closest(SELS.CHIPS);
          $currChips.removeClass('focus');
  
          // Remove active if empty
          if (!$currChips.data('chips').length) {
            $currChips.siblings('label').removeClass('active');
          }
          $currChips.siblings('.prefix').removeClass('active');
        });
  
        self.$document.off('keydown.chips-add', SELS.CHIPS + ' ' + SELS.INPUT).on('keydown.chips-add', SELS.CHIPS + ' ' + SELS.INPUT, function(e){
          var $target = $(e.target);
          var $chips = $target.closest(SELS.CHIPS);
          var chipsLength = $chips.children(SELS.CHIP).length;
  
          // enter
          if (13 === e.which) {
            // Override enter if autocompleting.
            if (self.hasAutocomplete &&
                $chips.find('.autocomplete-content.dropdown-content').length &&
                $chips.find('.autocomplete-content.dropdown-content').children().length) {
              return;
            }
  
            e.preventDefault();
            self.addChip({tag: $target.val()}, $chips);
            $target.val('');
            return;
          }
  
          // delete or left
          if ((8 === e.keyCode || 37 === e.keyCode) && '' === $target.val() && chipsLength) {
            e.preventDefault();
            self.selectChip(chipsLength - 1, $chips);
            $target.blur();
            return;
          }
        });
  
        // Click on delete icon in chip.
        self.$document.off('click.chips-delete', SELS.CHIPS + ' ' + SELS.DELETE).on('click.chips-delete', SELS.CHIPS + ' ' + SELS.DELETE, function(e) {
          var $target = $(e.target);
          var $chips = $target.closest(SELS.CHIPS);
          var $chip = $target.closest(SELS.CHIP);
          e.stopPropagation();
          self.deleteChip($chip.index(), $chips);
          $chips.find('input').focus();
        });
      };
  
      this.chips = function($chips, chipId) {
        $chips.empty();
        $chips.data('chips').forEach(function(elem){
          $chips.append(self.renderChip(elem));
        });
        $chips.append($('<input id="' + chipId +'" class="input" placeholder="">'));
        self.setPlaceholder($chips);
  
        // Set for attribute for label
        var label = $chips.next('label');
        if (label.length) {
          label.attr('for', chipId);
  
          if ($chips.data('chips').length) {
            label.addClass('active');
          }
        }
  
        // Setup autocomplete if needed.
        var input = $('#' + chipId);
        if (self.hasAutocomplete) {
          curr_options.autocompleteOptions.onAutocomplete = function(val) {
            self.addChip({tag: val}, $chips);
            input.val('');
            input.focus();
          }
          input.autocomplete(curr_options.autocompleteOptions);
        }
      };
  
      /**
       * Render chip jQuery element.
       * @param {Object} elem
       * @return {jQuery}
       */
      this.renderChip = function(elem) {
        if (!elem.tag) return;
  
        var $renderedChip = $('<div class="chip"></div>');
        $renderedChip.text(elem.tag);
        $renderedChip.append($('<i class="material-icons close">close</i>'));
        return $renderedChip;
      };
  
      this.setPlaceholder = function($chips) {
        if ($chips.data('chips').length && curr_options.placeholder) {
          $chips.find('input').prop('placeholder', curr_options.placeholder);
  
        } else if (!$chips.data('chips').length && curr_options.secondaryPlaceholder) {
          $chips.find('input').prop('placeholder', curr_options.secondaryPlaceholder);
        }
      };
  
      this.isValid = function($chips, elem) {
        var chips = $chips.data('chips');
        var exists = false;
        for (var i=0; i < chips.length; i++) {
          if (chips[i].tag === elem.tag) {
              exists = true;
              return;
          }
        }
        return '' !== elem.tag && !exists;
      };
  
      this.addChip = function(elem, $chips) {
        if (!self.isValid($chips, elem)) {
          return;
        }
        var $renderedChip = self.renderChip(elem);
        var newData = [];
        var oldData = $chips.data('chips');
        for (var i = 0; i < oldData.length; i++) {
          newData.push(oldData[i]);
        }
        newData.push(elem);
  
        $chips.data('chips', newData);
        $renderedChip.insertBefore($chips.find('input'));
        $chips.trigger('chip.add', elem);
        self.setPlaceholder($chips);
      };
  
      this.deleteChip = function(chipIndex, $chips) {
        var chip = $chips.data('chips')[chipIndex];
        $chips.find('.chip').eq(chipIndex).remove();
  
        var newData = [];
        var oldData = $chips.data('chips');
        for (var i = 0; i < oldData.length; i++) {
          if (i !== chipIndex) {
            newData.push(oldData[i]);
          }
        }
  
        $chips.data('chips', newData);
        $chips.trigger('chip.delete', chip);
        self.setPlaceholder($chips);
      };
  
      this.selectChip = function(chipIndex, $chips) {
        var $chip = $chips.find('.chip').eq(chipIndex);
        if ($chip && false === $chip.hasClass('selected')) {
          $chip.addClass('selected');
          $chips.trigger('chip.select', $chips.data('chips')[chipIndex]);
        }
      };
  
      this.getChipsElement = function(index, $chips) {
        return $chips.eq(index);
      };
  
      // init
      this.init();
  
      this.handleEvents();
    };
  }( jQuery ));
  ;(function ($) {
    $.fn.pushpin = function (options) {
      // Defaults
      var defaults = {
        top: 0,
        bottom: Infinity,
        offset: 0
      };
  
      // Remove pushpin event and classes
      if (options === "remove") {
        this.each(function () {
          if (id = $(this).data('pushpin-id')) {
            $(window).off('scroll.' + id);
            $(this).removeData('pushpin-id').removeClass('pin-top pinned pin-bottom').removeAttr('style');
          }
        });
        return false;
      }
  
      options = $.extend(defaults, options);
  
  
      $index = 0;
      return this.each(function() {
        var $uniqueId = Materialize.guid(),
            $this = $(this),
            $original_offset = $(this).offset().top;
  
        function removePinClasses(object) {
          object.removeClass('pin-top');
          object.removeClass('pinned');
          object.removeClass('pin-bottom');
        }
  
        function updateElements(objects, scrolled) {
          objects.each(function () {
            // Add position fixed (because its between top and bottom)
            if (options.top <= scrolled && options.bottom >= scrolled && !$(this).hasClass('pinned')) {
              removePinClasses($(this));
              $(this).css('top', options.offset);
              $(this).addClass('pinned');
            }
  
            // Add pin-top (when scrolled position is above top)
            if (scrolled < options.top && !$(this).hasClass('pin-top')) {
              removePinClasses($(this));
              $(this).css('top', 0);
              $(this).addClass('pin-top');
            }
  
            // Add pin-bottom (when scrolled position is below bottom)
            if (scrolled > options.bottom && !$(this).hasClass('pin-bottom')) {
              removePinClasses($(this));
              $(this).addClass('pin-bottom');
              $(this).css('top', options.bottom - $original_offset);
            }
          });
        }
  
        $(this).data('pushpin-id', $uniqueId);
        updateElements($this, $(window).scrollTop());
        $(window).on('scroll.' + $uniqueId, function () {
          var $scrolled = $(window).scrollTop() + options.offset;
          updateElements($this, $scrolled);
        });
  
      });
  
    };
  }( jQuery ));;(function ($) {
    $(document).ready(function() {
  
      // jQuery reverse
      $.fn.reverse = [].reverse;
  
      // Hover behaviour: make sure this doesn't work on .click-to-toggle FABs!
      $(document).on('mouseenter.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle):not(.toolbar)', function(e) {
        var $this = $(this);
        openFABMenu($this);
      });
      $(document).on('mouseleave.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle):not(.toolbar)', function(e) {
        var $this = $(this);
        closeFABMenu($this);
      });
  
      // Toggle-on-click behaviour.
      $(document).on('click.fabClickToggle', '.fixed-action-btn.click-to-toggle > a', function(e) {
        var $this = $(this);
        var $menu = $this.parent();
        if ($menu.hasClass('active')) {
          closeFABMenu($menu);
        } else {
          openFABMenu($menu);
        }
      });
  
      // Toolbar transition behaviour.
      $(document).on('click.fabToolbar', '.fixed-action-btn.toolbar > a', function(e) {
        var $this = $(this);
        var $menu = $this.parent();
        FABtoToolbar($menu);
      });
  
    });
  
    $.fn.extend({
      openFAB: function() {
        openFABMenu($(this));
      },
      closeFAB: function() {
        closeFABMenu($(this));
      },
      openToolbar: function() {
        FABtoToolbar($(this));
      },
      closeToolbar: function() {
        toolbarToFAB($(this));
      }
    });
  
  
    var openFABMenu = function (btn) {
      var $this = btn;
      if ($this.hasClass('active') === false) {
  
        // Get direction option
        var horizontal = $this.hasClass('horizontal');
        var offsetY, offsetX;
  
        if (horizontal === true) {
          offsetX = 40;
        } else {
          offsetY = 40;
        }
  
        $this.addClass('active');
        $this.find('ul .btn-floating').velocity(
          { scaleY: ".4", scaleX: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px'},
          { duration: 0 });
  
        var time = 0;
        $this.find('ul .btn-floating').reverse().each( function () {
          $(this).velocity(
            { opacity: "1", scaleX: "1", scaleY: "1", translateY: "0", translateX: '0'},
            { duration: 80, delay: time });
          time += 40;
        });
      }
    };
  
    var closeFABMenu = function (btn) {
      var $this = btn;
      // Get direction option
      var horizontal = $this.hasClass('horizontal');
      var offsetY, offsetX;
  
      if (horizontal === true) {
        offsetX = 40;
      } else {
        offsetY = 40;
      }
  
      $this.removeClass('active');
      var time = 0;
      $this.find('ul .btn-floating').velocity("stop", true);
      $this.find('ul .btn-floating').velocity(
        { opacity: "0", scaleX: ".4", scaleY: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px'},
        { duration: 80 }
      );
    };
  
  
    /**
     * Transform FAB into toolbar
     * @param  {Object}  object jQuery object
     */
    var FABtoToolbar = function(btn) {
      if (btn.attr('data-open') === "true") {
        return;
      }
  
      var offsetX, offsetY, scaleFactor;
      var windowWidth = window.innerWidth;
      var windowHeight = window.innerHeight;
      var btnRect = btn[0].getBoundingClientRect();
      var anchor = btn.find('> a').first();
      var menu = btn.find('> ul').first();
      var backdrop = $('<div class="fab-backdrop"></div>');
      var fabColor = anchor.css('background-color');
      anchor.append(backdrop);
  
      offsetX = btnRect.left - (windowWidth / 2) + (btnRect.width / 2);
      offsetY = windowHeight - btnRect.bottom;
      scaleFactor = windowWidth / backdrop.width();
      btn.attr('data-origin-bottom', btnRect.bottom);
      btn.attr('data-origin-left', btnRect.left);
      btn.attr('data-origin-width', btnRect.width);
  
      // Set initial state
      btn.addClass('active');
      btn.attr('data-open', true);
      btn.css({
        'text-align': 'center',
        width: '100%',
        bottom: 0,
        left: 0,
        transform: 'translateX(' + offsetX + 'px)',
        transition: 'none'
      });
      anchor.css({
        transform: 'translateY(' + -offsetY + 'px)',
        transition: 'none'
      });
      backdrop.css({
        'background-color': fabColor
      });
  
  
      setTimeout(function() {
        btn.css({
          transform: '',
          transition: 'transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s'
        });
        anchor.css({
          overflow: 'visible',
          transform: '',
          transition: 'transform .2s'
        });
  
        setTimeout(function() {
          btn.css({
            overflow: 'hidden',
            'background-color': fabColor
          });
          backdrop.css({
            transform: 'scale(' + scaleFactor + ')',
            transition: 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)'
          });
          menu.find('> li > a').css({
            opacity: 1
          });
  
          // Scroll to close.
          $(window).on('scroll.fabToolbarClose', function() {
            toolbarToFAB(btn);
            $(window).off('scroll.fabToolbarClose');
            $(document).off('click.fabToolbarClose');
          });
  
          $(document).on('click.fabToolbarClose', function(e) {
            if (!$(e.target).closest(menu).length) {
              toolbarToFAB(btn);
              $(window).off('scroll.fabToolbarClose');
              $(document).off('click.fabToolbarClose');
            }
          });
        }, 100);
      }, 0);
    };
  
    /**
     * Transform toolbar back into FAB
     * @param  {Object}  object jQuery object
     */
    var toolbarToFAB = function(btn) {
      if (btn.attr('data-open') !== "true") {
        return;
      }
  
      var offsetX, offsetY, scaleFactor;
      var windowWidth = window.innerWidth;
      var windowHeight = window.innerHeight;
      var btnWidth = btn.attr('data-origin-width');
      var btnBottom = btn.attr('data-origin-bottom');
      var btnLeft = btn.attr('data-origin-left');
      var anchor = btn.find('> .btn-floating').first();
      var menu = btn.find('> ul').first();
      var backdrop = btn.find('.fab-backdrop');
      var fabColor = anchor.css('background-color');
  
      offsetX = btnLeft - (windowWidth / 2) + (btnWidth / 2);
      offsetY = windowHeight - btnBottom;
      scaleFactor = windowWidth / backdrop.width();
  
  
      // Hide backdrop
      btn.removeClass('active');
      btn.attr('data-open', false);
      btn.css({
        'background-color': 'transparent',
        transition: 'none'
      });
      anchor.css({
        transition: 'none'
      });
      backdrop.css({
        transform: 'scale(0)',
        'background-color': fabColor
      });
      menu.find('> li > a').css({
        opacity: ''
      });
  
      setTimeout(function() {
        backdrop.remove();
  
        // Set initial state.
        btn.css({
          'text-align': '',
          width: '',
          bottom: '',
          left: '',
          overflow: '',
          'background-color': '',
          transform: 'translate3d(' + -offsetX + 'px,0,0)'
        });
        anchor.css({
          overflow: '',
          transform: 'translate3d(0,' + offsetY + 'px,0)'
        });
  
        setTimeout(function() {
          btn.css({
            transform: 'translate3d(0,0,0)',
            transition: 'transform .2s'
          });
          anchor.css({
            transform: 'translate3d(0,0,0)',
            transition: 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)'
          });
        }, 20);
      }, 200);
    };
  
  
  }( jQuery ));
  ;(function ($) {
    // Image transition function
    Materialize.fadeInImage = function(selectorOrEl) {
      var element;
      if (typeof(selectorOrEl) === 'string') {
        element = $(selectorOrEl);
      } else if (typeof(selectorOrEl) === 'object') {
        element = selectorOrEl;
      } else {
        return;
      }
      element.css({opacity: 0});
      $(element).velocity({opacity: 1}, {
        duration: 650,
        queue: false,
        easing: 'easeOutSine'
      });
      $(element).velocity({opacity: 1}, {
        duration: 1300,
        queue: false,
        easing: 'swing',
        step: function(now, fx) {
          fx.start = 100;
          var grayscale_setting = now/100;
          var brightness_setting = 150 - (100 - now)/1.75;
  
          if (brightness_setting < 100) {
            brightness_setting = 100;
          }
          if (now >= 0) {
            $(this).css({
                "-webkit-filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)",
                "filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)"
            });
          }
        }
      });
    };
  
    // Horizontal staggered list
    Materialize.showStaggeredList = function(selectorOrEl) {
      var element;
      if (typeof(selectorOrEl) === 'string') {
        element = $(selectorOrEl);
      } else if (typeof(selectorOrEl) === 'object') {
        element = selectorOrEl;
      } else {
        return;
      }
      var time = 0;
      element.find('li').velocity(
          { translateX: "-100px"},
          { duration: 0 });
  
      element.find('li').each(function() {
        $(this).velocity(
          { opacity: "1", translateX: "0"},
          { duration: 800, delay: time, easing: [60, 10] });
        time += 120;
      });
    };
  
  
    $(document).ready(function() {
      // Hardcoded .staggered-list scrollFire
      // var staggeredListOptions = [];
      // $('ul.staggered-list').each(function (i) {
  
      //   var label = 'scrollFire-' + i;
      //   $(this).addClass(label);
      //   staggeredListOptions.push(
      //     {selector: 'ul.staggered-list.' + label,
      //      offset: 200,
      //      callback: 'showStaggeredList("ul.staggered-list.' + label + '")'});
      // });
      // scrollFire(staggeredListOptions);
  
      // HammerJS, Swipe navigation
  
      // Touch Event
      var swipeLeft = false;
      var swipeRight = false;
  
  
      // Dismissible Collections
      $('.dismissable').each(function() {
        $(this).hammer({
          prevent_default: false
        }).bind('pan', function(e) {
          if (e.gesture.pointerType === "touch") {
            var $this = $(this);
            var direction = e.gesture.direction;
            var x = e.gesture.deltaX;
            var velocityX = e.gesture.velocityX;
  
            $this.velocity({ translateX: x
                }, {duration: 50, queue: false, easing: 'easeOutQuad'});
  
            // Swipe Left
            if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.75)) {
              swipeLeft = true;
            }
  
            // Swipe Right
            if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.75)) {
              swipeRight = true;
            }
          }
        }).bind('panend', function(e) {
          // Reset if collection is moved back into original position
          if (Math.abs(e.gesture.deltaX) < ($(this).innerWidth() / 2)) {
            swipeRight = false;
            swipeLeft = false;
          }
  
          if (e.gesture.pointerType === "touch") {
            var $this = $(this);
            if (swipeLeft || swipeRight) {
              var fullWidth;
              if (swipeLeft) { fullWidth = $this.innerWidth(); }
              else { fullWidth = -1 * $this.innerWidth(); }
  
              $this.velocity({ translateX: fullWidth,
                }, {duration: 100, queue: false, easing: 'easeOutQuad', complete:
                function() {
                  $this.css('border', 'none');
                  $this.velocity({ height: 0, padding: 0,
                    }, {duration: 200, queue: false, easing: 'easeOutQuad', complete:
                      function() { $this.remove(); }
                    });
                }
              });
            }
            else {
              $this.velocity({ translateX: 0,
                }, {duration: 100, queue: false, easing: 'easeOutQuad'});
            }
            swipeLeft = false;
            swipeRight = false;
          }
        });
  
      });
  
  
      // time = 0
      // // Vertical Staggered list
      // $('ul.staggered-list.vertical li').velocity(
      //     { translateY: "100px"},
      //     { duration: 0 });
  
      // $('ul.staggered-list.vertical li').each(function() {
      //   $(this).velocity(
      //     { opacity: "1", translateY: "0"},
      //     { duration: 800, delay: time, easing: [60, 25] });
      //   time += 120;
      // });
  
      // // Fade in and Scale
      // $('.fade-in.scale').velocity(
      //     { scaleX: .4, scaleY: .4, translateX: -600},
      //     { duration: 0});
      // $('.fade-in').each(function() {
      //   $(this).velocity(
      //     { opacity: "1", scaleX: 1, scaleY: 1, translateX: 0},
      //     { duration: 800, easing: [60, 10] });
      // });
    });
  }( jQuery ));
  ;(function($) {
  
    var scrollFireEventsHandled = false;
  
    // Input: Array of JSON objects {selector, offset, callback}
    Materialize.scrollFire = function(options) {
      var onScroll = function() {
        var windowScroll = window.pageYOffset + window.innerHeight;
  
        for (var i = 0 ; i < options.length; i++) {
          // Get options from each line
          var value = options[i];
          var selector = value.selector,
              offset = value.offset,
              callback = value.callback;
  
          var currentElement = document.querySelector(selector);
          if ( currentElement !== null) {
            var elementOffset = currentElement.getBoundingClientRect().top + window.pageYOffset;
  
            if (windowScroll > (elementOffset + offset)) {
              if (value.done !== true) {
                if (typeof(callback) === 'function') {
                  callback.call(this, currentElement);
                } else if (typeof(callback) === 'string') {
                  var callbackFunc = new Function(callback);
                  callbackFunc(currentElement);
                }
                value.done = true;
              }
            }
          }
        }
      };
  
  
      var throttledScroll = Materialize.throttle(function() {
        onScroll();
      }, options.throttle || 100);
  
      if (!scrollFireEventsHandled) {
        window.addEventListener("scroll", throttledScroll);
        window.addEventListener("resize", throttledScroll);
        scrollFireEventsHandled = true;
      }
  
      // perform a scan once, after current execution context, and after dom is ready
      setTimeout(throttledScroll, 0);
    };
  
  })(jQuery);
  ;/*!
   * pickadate.js v3.5.0, 2014/04/13
   * By Amsul, http://amsul.ca
   * Hosted on http://amsul.github.io/pickadate.js
   * Licensed under MIT
   */
  
  (function ( factory ) {
  
      // AMD.
      if ( typeof define == 'function' && define.amd )
          define( 'picker', ['jquery'], factory )
  
      // Node.js/browserify.
      else if ( typeof exports == 'object' )
          module.exports = factory( require('jquery') )
  
      // Browser globals.
      else this.Picker = factory( jQuery )
  
  }(function( $ ) {
  
  var $window = $( window )
  var $document = $( document )
  var $html = $( document.documentElement )
  
  
  /**
   * The picker constructor that creates a blank picker.
   */
  function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {
  
      // If there’s no element, return the picker constructor.
      if ( !ELEMENT ) return PickerConstructor
  
  
      var
          IS_DEFAULT_THEME = false,
  
  
          // The state of the picker.
          STATE = {
              id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) )
          },
  
  
          // Merge the defaults and options passed.
          SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {},
  
  
          // Merge the default classes with the settings classes.
          CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ),
  
  
          // The element node wrapper into a jQuery object.
          $ELEMENT = $( ELEMENT ),
  
  
          // Pseudo picker constructor.
          PickerInstance = function() {
              return this.start()
          },
  
  
          // The picker prototype.
          P = PickerInstance.prototype = {
  
              constructor: PickerInstance,
  
              $node: $ELEMENT,
  
  
              /**
               * Initialize everything
               */
              start: function() {
  
                  // If it’s already started, do nothing.
                  if ( STATE && STATE.start ) return P
  
  
                  // Update the picker states.
                  STATE.methods = {}
                  STATE.start = true
                  STATE.open = false
                  STATE.type = ELEMENT.type
  
  
                  // Confirm focus state, convert into text input to remove UA stylings,
                  // and set as readonly to prevent keyboard popup.
                  ELEMENT.autofocus = ELEMENT == getActiveElement()
                  ELEMENT.readOnly = !SETTINGS.editable
                  ELEMENT.id = ELEMENT.id || STATE.id
                  if ( ELEMENT.type != 'text' ) {
                      ELEMENT.type = 'text'
                  }
  
  
                  // Create a new picker component with the settings.
                  P.component = new COMPONENT(P, SETTINGS)
  
  
                  // Create the picker root with a holder and then prepare it.
                  P.$root = $( PickerConstructor._.node('div', createWrappedComponent(), CLASSES.picker, 'id="' + ELEMENT.id + '_root" tabindex="0"') )
                  prepareElementRoot()
  
  
                  // If there’s a format for the hidden input element, create the element.
                  if ( SETTINGS.formatSubmit ) {
                      prepareElementHidden()
                  }
  
  
                  // Prepare the input element.
                  prepareElement()
  
  
                  // Insert the root as specified in the settings.
                  if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root )
                  else $ELEMENT.after( P.$root )
  
  
                  // Bind the default component and settings events.
                  P.on({
                      start: P.component.onStart,
                      render: P.component.onRender,
                      stop: P.component.onStop,
                      open: P.component.onOpen,
                      close: P.component.onClose,
                      set: P.component.onSet
                  }).on({
                      start: SETTINGS.onStart,
                      render: SETTINGS.onRender,
                      stop: SETTINGS.onStop,
                      open: SETTINGS.onOpen,
                      close: SETTINGS.onClose,
                      set: SETTINGS.onSet
                  })
  
  
                  // Once we’re all set, check the theme in use.
                  IS_DEFAULT_THEME = isUsingDefaultTheme( P.$root.children()[ 0 ] )
  
  
                  // If the element has autofocus, open the picker.
                  if ( ELEMENT.autofocus ) {
                      P.open()
                  }
  
  
                  // Trigger queued the “start” and “render” events.
                  return P.trigger( 'start' ).trigger( 'render' )
              }, //start
  
  
              /**
               * Render a new picker
               */
              render: function( entireComponent ) {
  
                  // Insert a new component holder in the root or box.
                  if ( entireComponent ) P.$root.html( createWrappedComponent() )
                  else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) )
  
                  // Trigger the queued “render” events.
                  return P.trigger( 'render' )
              }, //render
  
  
              /**
               * Destroy everything
               */
              stop: function() {
  
                  // If it’s already stopped, do nothing.
                  if ( !STATE.start ) return P
  
                  // Then close the picker.
                  P.close()
  
                  // Remove the hidden field.
                  if ( P._hidden ) {
                      P._hidden.parentNode.removeChild( P._hidden )
                  }
  
                  // Remove the root.
                  P.$root.remove()
  
                  // Remove the input class, remove the stored data, and unbind
                  // the events (after a tick for IE - see `P.close`).
                  $ELEMENT.removeClass( CLASSES.input ).removeData( NAME )
                  setTimeout( function() {
                      $ELEMENT.off( '.' + STATE.id )
                  }, 0)
  
                  // Restore the element state
                  ELEMENT.type = STATE.type
                  ELEMENT.readOnly = false
  
                  // Trigger the queued “stop” events.
                  P.trigger( 'stop' )
  
                  // Reset the picker states.
                  STATE.methods = {}
                  STATE.start = false
  
                  return P
              }, //stop
  
  
              /**
               * Open up the picker
               */
              open: function( dontGiveFocus ) {
  
                  // If it’s already open, do nothing.
                  if ( STATE.open ) return P
  
                  // Add the “active” class.
                  $ELEMENT.addClass( CLASSES.active )
                  aria( ELEMENT, 'expanded', true )
  
                  // * A Firefox bug, when `html` has `overflow:hidden`, results in
                  //   killing transitions :(. So add the “opened” state on the next tick.
                  //   Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289
                  setTimeout( function() {
  
                      // Add the “opened” class to the picker root.
                      P.$root.addClass( CLASSES.opened )
                      aria( P.$root[0], 'hidden', false )
  
                  }, 0 )
  
                  // If we have to give focus, bind the element and doc events.
                  if ( dontGiveFocus !== false ) {
  
                      // Set it as open.
                      STATE.open = true
  
                      // Prevent the page from scrolling.
                      if ( IS_DEFAULT_THEME ) {
                          $html.
                              css( 'overflow', 'hidden' ).
                              css( 'padding-right', '+=' + getScrollbarWidth() )
                      }
  
                      // Pass focus to the root element’s jQuery object.
                      // * Workaround for iOS8 to bring the picker’s root into view.
                      P.$root.eq(0).focus()
  
                      // Bind the document events.
                      $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) {
  
                          var target = event.target
  
                          // If the target of the event is not the element, close the picker picker.
                          // * Don’t worry about clicks or focusins on the root because those don’t bubble up.
                          //   Also, for Firefox, a click on an `option` element bubbles up directly
                          //   to the doc. So make sure the target wasn't the doc.
                          // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling,
                          //   which causes the picker to unexpectedly close when right-clicking it. So make
                          //   sure the event wasn’t a right-click.
                          if ( target != ELEMENT && target != document && event.which != 3 ) {
  
                              // If the target was the holder that covers the screen,
                              // keep the element focused to maintain tabindex.
                              P.close( target === P.$root.children()[0] )
                          }
  
                      }).on( 'keydown.' + STATE.id, function( event ) {
  
                          var
                              // Get the keycode.
                              keycode = event.keyCode,
  
                              // Translate that to a selection change.
                              keycodeToMove = P.component.key[ keycode ],
  
                              // Grab the target.
                              target = event.target
  
  
                          // On escape, close the picker and give focus.
                          if ( keycode == 27 ) {
                              P.close( true )
                          }
  
  
                          // Check if there is a key movement or “enter” keypress on the element.
                          else if ( target == P.$root[0] && ( keycodeToMove || keycode == 13 ) ) {
  
                              // Prevent the default action to stop page movement.
                              event.preventDefault()
  
                              // Trigger the key movement action.
                              if ( keycodeToMove ) {
                                  PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] )
                              }
  
                              // On “enter”, if the highlighted item isn’t disabled, set the value and close.
                              else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) {
                                  P.set( 'select', P.component.item.highlight ).close()
                              }
                          }
  
  
                          // If the target is within the root and “enter” is pressed,
                          // prevent the default action and trigger a click on the target instead.
                          else if ( $.contains( P.$root[0], target ) && keycode == 13 ) {
                              event.preventDefault()
                              target.click()
                          }
                      })
                  }
  
                  // Trigger the queued “open” events.
                  return P.trigger( 'open' )
              }, //open
  
  
              /**
               * Close the picker
               */
              close: function( giveFocus ) {
  
                  // If we need to give focus, do it before changing states.
                  if ( giveFocus ) {
                      // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :|
                      // The focus is triggered *after* the close has completed - causing it
                      // to open again. So unbind and rebind the event at the next tick.
                      P.$root.off( 'focus.toOpen' ).eq(0).focus()
                      setTimeout( function() {
                          P.$root.on( 'focus.toOpen', handleFocusToOpenEvent )
                      }, 0 )
                  }
  
                  // Remove the “active” class.
                  $ELEMENT.removeClass( CLASSES.active )
                  aria( ELEMENT, 'expanded', false )
  
                  // * A Firefox bug, when `html` has `overflow:hidden`, results in
                  //   killing transitions :(. So remove the “opened” state on the next tick.
                  //   Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289
                  setTimeout( function() {
  
                      // Remove the “opened” and “focused” class from the picker root.
                      P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused )
                      aria( P.$root[0], 'hidden', true )
  
                  }, 0 )
  
                  // If it’s already closed, do nothing more.
                  if ( !STATE.open ) return P
  
                  // Set it as closed.
                  STATE.open = false
  
                  // Allow the page to scroll.
                  if ( IS_DEFAULT_THEME ) {
                      $html.
                          css( 'overflow', '' ).
                          css( 'padding-right', '-=' + getScrollbarWidth() )
                  }
  
                  // Unbind the document events.
                  $document.off( '.' + STATE.id )
  
                  // Trigger the queued “close” events.
                  return P.trigger( 'close' )
              }, //close
  
  
              /**
               * Clear the values
               */
              clear: function( options ) {
                  return P.set( 'clear', null, options )
              }, //clear
  
  
              /**
               * Set something
               */
              set: function( thing, value, options ) {
  
                  var thingItem, thingValue,
                      thingIsObject = $.isPlainObject( thing ),
                      thingObject = thingIsObject ? thing : {}
  
                  // Make sure we have usable options.
                  options = thingIsObject && $.isPlainObject( value ) ? value : options || {}
  
                  if ( thing ) {
  
                      // If the thing isn’t an object, make it one.
                      if ( !thingIsObject ) {
                          thingObject[ thing ] = value
                      }
  
                      // Go through the things of items to set.
                      for ( thingItem in thingObject ) {
  
                          // Grab the value of the thing.
                          thingValue = thingObject[ thingItem ]
  
                          // First, if the item exists and there’s a value, set it.
                          if ( thingItem in P.component.item ) {
                              if ( thingValue === undefined ) thingValue = null
                              P.component.set( thingItem, thingValue, options )
                          }
  
                          // Then, check to update the element value and broadcast a change.
                          if ( thingItem == 'select' || thingItem == 'clear' ) {
                              $ELEMENT.
                                  val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ).
                                  trigger( 'change' )
                          }
                      }
  
                      // Render a new picker.
                      P.render()
                  }
  
                  // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`.
                  return options.muted ? P : P.trigger( 'set', thingObject )
              }, //set
  
  
              /**
               * Get something
               */
              get: function( thing, format ) {
  
                  // Make sure there’s something to get.
                  thing = thing || 'value'
  
                  // If a picker state exists, return that.
                  if ( STATE[ thing ] != null ) {
                      return STATE[ thing ]
                  }
  
                  // Return the submission value, if that.
                  if ( thing == 'valueSubmit' ) {
                      if ( P._hidden ) {
                          return P._hidden.value
                      }
                      thing = 'value'
                  }
  
                  // Return the value, if that.
                  if ( thing == 'value' ) {
                      return ELEMENT.value
                  }
  
                  // Check if a component item exists, return that.
                  if ( thing in P.component.item ) {
                      if ( typeof format == 'string' ) {
                          var thingValue = P.component.get( thing )
                          return thingValue ?
                              PickerConstructor._.trigger(
                                  P.component.formats.toString,
                                  P.component,
                                  [ format, thingValue ]
                              ) : ''
                      }
                      return P.component.get( thing )
                  }
              }, //get
  
  
  
              /**
               * Bind events on the things.
               */
              on: function( thing, method, internal ) {
  
                  var thingName, thingMethod,
                      thingIsObject = $.isPlainObject( thing ),
                      thingObject = thingIsObject ? thing : {}
  
                  if ( thing ) {
  
                      // If the thing isn’t an object, make it one.
                      if ( !thingIsObject ) {
                          thingObject[ thing ] = method
                      }
  
                      // Go through the things to bind to.
                      for ( thingName in thingObject ) {
  
                          // Grab the method of the thing.
                          thingMethod = thingObject[ thingName ]
  
                          // If it was an internal binding, prefix it.
                          if ( internal ) {
                              thingName = '_' + thingName
                          }
  
                          // Make sure the thing methods collection exists.
                          STATE.methods[ thingName ] = STATE.methods[ thingName ] || []
  
                          // Add the method to the relative method collection.
                          STATE.methods[ thingName ].push( thingMethod )
                      }
                  }
  
                  return P
              }, //on
  
  
  
              /**
               * Unbind events on the things.
               */
              off: function() {
                  var i, thingName,
                      names = arguments;
                  for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) {
                      thingName = names[i]
                      if ( thingName in STATE.methods ) {
                          delete STATE.methods[thingName]
                      }
                  }
                  return P
              },
  
  
              /**
               * Fire off method events.
               */
              trigger: function( name, data ) {
                  var _trigger = function( name ) {
                      var methodList = STATE.methods[ name ]
                      if ( methodList ) {
                          methodList.map( function( method ) {
                              PickerConstructor._.trigger( method, P, [ data ] )
                          })
                      }
                  }
                  _trigger( '_' + name )
                  _trigger( name )
                  return P
              } //trigger
          } //PickerInstance.prototype
  
  
      /**
       * Wrap the picker holder components together.
       */
      function createWrappedComponent() {
  
          // Create a picker wrapper holder
          return PickerConstructor._.node( 'div',
  
              // Create a picker wrapper node
              PickerConstructor._.node( 'div',
  
                  // Create a picker frame
                  PickerConstructor._.node( 'div',
  
                      // Create a picker box node
                      PickerConstructor._.node( 'div',
  
                          // Create the components nodes.
                          P.component.nodes( STATE.open ),
  
                          // The picker box class
                          CLASSES.box
                      ),
  
                      // Picker wrap class
                      CLASSES.wrap
                  ),
  
                  // Picker frame class
                  CLASSES.frame
              ),
  
              // Picker holder class
              CLASSES.holder
          ) //endreturn
      } //createWrappedComponent
  
  
  
      /**
       * Prepare the input element with all bindings.
       */
      function prepareElement() {
  
          $ELEMENT.
  
              // Store the picker data by component name.
              data(NAME, P).
  
              // Add the “input” class name.
              addClass(CLASSES.input).
  
              // Remove the tabindex.
              attr('tabindex', -1).
  
              // If there’s a `data-value`, update the value of the element.
              val( $ELEMENT.data('value') ?
                  P.get('select', SETTINGS.format) :
                  ELEMENT.value
              )
  
  
          // Only bind keydown events if the element isn’t editable.
          if ( !SETTINGS.editable ) {
  
              $ELEMENT.
  
                  // On focus/click, focus onto the root to open it up.
                  on( 'focus.' + STATE.id + ' click.' + STATE.id, function( event ) {
                      event.preventDefault()
                      P.$root.eq(0).focus()
                  }).
  
                  // Handle keyboard event based on the picker being opened or not.
                  on( 'keydown.' + STATE.id, handleKeydownEvent )
          }
  
  
          // Update the aria attributes.
          aria(ELEMENT, {
              haspopup: true,
              expanded: false,
              readonly: false,
              owns: ELEMENT.id + '_root'
          })
      }
  
  
      /**
       * Prepare the root picker element with all bindings.
       */
      function prepareElementRoot() {
  
          P.$root.
  
              on({
  
                  // For iOS8.
                  keydown: handleKeydownEvent,
  
                  // When something within the root is focused, stop from bubbling
                  // to the doc and remove the “focused” state from the root.
                  focusin: function( event ) {
                      P.$root.removeClass( CLASSES.focused )
                      event.stopPropagation()
                  },
  
                  // When something within the root holder is clicked, stop it
                  // from bubbling to the doc.
                  'mousedown click': function( event ) {
  
                      var target = event.target
  
                      // Make sure the target isn’t the root holder so it can bubble up.
                      if ( target != P.$root.children()[ 0 ] ) {
  
                          event.stopPropagation()
  
                          // * For mousedown events, cancel the default action in order to
                          //   prevent cases where focus is shifted onto external elements
                          //   when using things like jQuery mobile or MagnificPopup (ref: #249 & #120).
                          //   Also, for Firefox, don’t prevent action on the `option` element.
                          if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) {
  
                              event.preventDefault()
  
                              // Re-focus onto the root so that users can click away
                              // from elements focused within the picker.
                              P.$root.eq(0).focus()
                          }
                      }
                  }
              }).
  
              // Add/remove the “target” class on focus and blur.
              on({
                  focus: function() {
                      $ELEMENT.addClass( CLASSES.target )
                  },
                  blur: function() {
                      $ELEMENT.removeClass( CLASSES.target )
                  }
              }).
  
              // Open the picker and adjust the root “focused” state
              on( 'focus.toOpen', handleFocusToOpenEvent ).
  
              // If there’s a click on an actionable element, carry out the actions.
              on( 'click', '[data-pick], [data-nav], [data-clear], [data-close]', function() {
  
                  var $target = $( this ),
                      targetData = $target.data(),
                      targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ),
  
                      // * For IE, non-focusable elements can be active elements as well
                      //   (http://stackoverflow.com/a/2684561).
                      activeElement = getActiveElement()
                      activeElement = activeElement && ( activeElement.type || activeElement.href )
  
                  // If it’s disabled or nothing inside is actively focused, re-focus the element.
                  if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) {
                      P.$root.eq(0).focus()
                  }
  
                  // If something is superficially changed, update the `highlight` based on the `nav`.
                  if ( !targetDisabled && targetData.nav ) {
                      P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } )
                  }
  
                  // If something is picked, set `select` then close with focus.
                  else if ( !targetDisabled && 'pick' in targetData ) {
                      P.set( 'select', targetData.pick )
                  }
  
                  // If a “clear” button is pressed, empty the values and close with focus.
                  else if ( targetData.clear ) {
                      P.clear().close( true )
                  }
  
                  else if ( targetData.close ) {
                      P.close( true )
                  }
  
              }) //P.$root
  
          aria( P.$root[0], 'hidden', true )
      }
  
  
       /**
        * Prepare the hidden input element along with all bindings.
        */
      function prepareElementHidden() {
  
          var name
  
          if ( SETTINGS.hiddenName === true ) {
              name = ELEMENT.name
              ELEMENT.name = ''
          }
          else {
              name = [
                  typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '',
                  typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit'
              ]
              name = name[0] + ELEMENT.name + name[1]
          }
  
          P._hidden = $(
              '<input ' +
              'type=hidden ' +
  
              // Create the name using the original input’s with a prefix and suffix.
              'name="' + name + '"' +
  
              // If the element has a value, set the hidden value as well.
              (
                  $ELEMENT.data('value') || ELEMENT.value ?
                      ' value="' + P.get('select', SETTINGS.formatSubmit) + '"' :
                      ''
              ) +
              '>'
          )[0]
  
          $ELEMENT.
  
              // If the value changes, update the hidden input with the correct format.
              on('change.' + STATE.id, function() {
                  P._hidden.value = ELEMENT.value ?
                      P.get('select', SETTINGS.formatSubmit) :
                      ''
              })
  
  
          // Insert the hidden input as specified in the settings.
          if ( SETTINGS.container ) $( SETTINGS.container ).append( P._hidden )
          else $ELEMENT.after( P._hidden )
      }
  
  
      // For iOS8.
      function handleKeydownEvent( event ) {
  
          var keycode = event.keyCode,
  
              // Check if one of the delete keys was pressed.
              isKeycodeDelete = /^(8|46)$/.test(keycode)
  
          // For some reason IE clears the input value on “escape”.
          if ( keycode == 27 ) {
              P.close()
              return false
          }
  
          // Check if `space` or `delete` was pressed or the picker is closed with a key movement.
          if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) {
  
              // Prevent it from moving the page and bubbling to doc.
              event.preventDefault()
              event.stopPropagation()
  
              // If `delete` was pressed, clear the values and close the picker.
              // Otherwise open the picker.
              if ( isKeycodeDelete ) { P.clear().close() }
              else { P.open() }
          }
      }
  
  
      // Separated for IE
      function handleFocusToOpenEvent( event ) {
  
          // Stop the event from propagating to the doc.
          event.stopPropagation()
  
          // If it’s a focus event, add the “focused” class to the root.
          if ( event.type == 'focus' ) {
              P.$root.addClass( CLASSES.focused )
          }
  
          // And then finally open the picker.
          P.open()
      }
  
  
      // Return a new picker instance.
      return new PickerInstance()
  } //PickerConstructor
  
  
  
  /**
   * The default classes and prefix to use for the HTML classes.
   */
  PickerConstructor.klasses = function( prefix ) {
      prefix = prefix || 'picker'
      return {
  
          picker: prefix,
          opened: prefix + '--opened',
          focused: prefix + '--focused',
  
          input: prefix + '__input',
          active: prefix + '__input--active',
          target: prefix + '__input--target',
  
          holder: prefix + '__holder',
  
          frame: prefix + '__frame',
          wrap: prefix + '__wrap',
  
          box: prefix + '__box'
      }
  } //PickerConstructor.klasses
  
  
  
  /**
   * Check if the default theme is being used.
   */
  function isUsingDefaultTheme( element ) {
  
      var theme,
          prop = 'position'
  
      // For IE.
      if ( element.currentStyle ) {
          theme = element.currentStyle[prop]
      }
  
      // For normal browsers.
      else if ( window.getComputedStyle ) {
          theme = getComputedStyle( element )[prop]
      }
  
      return theme == 'fixed'
  }
  
  
  
  /**
   * Get the width of the browser’s scrollbar.
   * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js
   */
  function getScrollbarWidth() {
  
      if ( $html.height() <= $window.height() ) {
          return 0
      }
  
      var $outer = $( '<div style="visibility:hidden;width:100px" />' ).
          appendTo( 'body' )
  
      // Get the width without scrollbars.
      var widthWithoutScroll = $outer[0].offsetWidth
  
      // Force adding scrollbars.
      $outer.css( 'overflow', 'scroll' )
  
      // Add the inner div.
      var $inner = $( '<div style="width:100%" />' ).appendTo( $outer )
  
      // Get the width with scrollbars.
      var widthWithScroll = $inner[0].offsetWidth
  
      // Remove the divs.
      $outer.remove()
  
      // Return the difference between the widths.
      return widthWithoutScroll - widthWithScroll
  }
  
  
  
  /**
   * PickerConstructor helper methods.
   */
  PickerConstructor._ = {
  
      /**
       * Create a group of nodes. Expects:
       * `
          {
              min:    {Integer},
              max:    {Integer},
              i:      {Integer},
              node:   {String},
              item:   {Function}
          }
       * `
       */
      group: function( groupObject ) {
  
          var
              // Scope for the looped object
              loopObjectScope,
  
              // Create the nodes list
              nodesList = '',
  
              // The counter starts from the `min`
              counter = PickerConstructor._.trigger( groupObject.min, groupObject )
  
  
          // Loop from the `min` to `max`, incrementing by `i`
          for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) {
  
              // Trigger the `item` function within scope of the object
              loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] )
  
              // Splice the subgroup and create nodes out of the sub nodes
              nodesList += PickerConstructor._.node(
                  groupObject.node,
                  loopObjectScope[ 0 ],   // the node
                  loopObjectScope[ 1 ],   // the classes
                  loopObjectScope[ 2 ]    // the attributes
              )
          }
  
          // Return the list of nodes
          return nodesList
      }, //group
  
  
      /**
       * Create a dom node string
       */
      node: function( wrapper, item, klass, attribute ) {
  
          // If the item is false-y, just return an empty string
          if ( !item ) return ''
  
          // If the item is an array, do a join
          item = $.isArray( item ) ? item.join( '' ) : item
  
          // Check for the class
          klass = klass ? ' class="' + klass + '"' : ''
  
          // Check for any attributes
          attribute = attribute ? ' ' + attribute : ''
  
          // Return the wrapped item
          return '<' + wrapper + klass + attribute + '>' + item + '</' + wrapper + '>'
      }, //node
  
  
      /**
       * Lead numbers below 10 with a zero.
       */
      lead: function( number ) {
          return ( number < 10 ? '0': '' ) + number
      },
  
  
      /**
       * Trigger a function otherwise return the value.
       */
      trigger: function( callback, scope, args ) {
          return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback
      },
  
  
      /**
       * If the second character is a digit, length is 2 otherwise 1.
       */
      digits: function( string ) {
          return ( /\d/ ).test( string[ 1 ] ) ? 2 : 1
      },
  
  
      /**
       * Tell if something is a date object.
       */
      isDate: function( value ) {
          return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() )
      },
  
  
      /**
       * Tell if something is an integer.
       */
      isInteger: function( value ) {
          return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0
      },
  
  
      /**
       * Create ARIA attribute strings.
       */
      ariaAttr: ariaAttr
  } //PickerConstructor._
  
  
  
  /**
   * Extend the picker with a component and defaults.
   */
  PickerConstructor.extend = function( name, Component ) {
  
      // Extend jQuery.
      $.fn[ name ] = function( options, action ) {
  
          // Grab the component data.
          var componentData = this.data( name )
  
          // If the picker is requested, return the data object.
          if ( options == 'picker' ) {
              return componentData
          }
  
          // If the component data exists and `options` is a string, carry out the action.
          if ( componentData && typeof options == 'string' ) {
              return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] )
          }
  
          // Otherwise go through each matched element and if the component
          // doesn’t exist, create a new picker using `this` element
          // and merging the defaults and options with a deep copy.
          return this.each( function() {
              var $this = $( this )
              if ( !$this.data( name ) ) {
                  new PickerConstructor( this, name, Component, options )
              }
          })
      }
  
      // Set the defaults.
      $.fn[ name ].defaults = Component.defaults
  } //PickerConstructor.extend
  
  
  
  function aria(element, attribute, value) {
      if ( $.isPlainObject(attribute) ) {
          for ( var key in attribute ) {
              ariaSet(element, key, attribute[key])
          }
      }
      else {
          ariaSet(element, attribute, value)
      }
  }
  function ariaSet(element, attribute, value) {
      element.setAttribute(
          (attribute == 'role' ? '' : 'aria-') + attribute,
          value
      )
  }
  function ariaAttr(attribute, data) {
      if ( !$.isPlainObject(attribute) ) {
          attribute = { attribute: data }
      }
      data = ''
      for ( var key in attribute ) {
          var attr = (key == 'role' ? '' : 'aria-') + key,
              attrVal = attribute[key]
          data += attrVal == null ? '' : attr + '="' + attribute[key] + '"'
      }
      return data
  }
  
  // IE8 bug throws an error for activeElements within iframes.
  function getActiveElement() {
      try {
          return document.activeElement
      } catch ( err ) { }
  }
  
  
  
  // Expose the picker constructor.
  return PickerConstructor
  
  
  }));
  
  
  ;/*!
   * Date picker for pickadate.js v3.5.0
   * http://amsul.github.io/pickadate.js/date.htm
   */
  
  (function ( factory ) {
  
      // AMD.
      if ( typeof define == 'function' && define.amd )
          define( ['picker', 'jquery'], factory )
  
      // Node.js/browserify.
      else if ( typeof exports == 'object' )
          module.exports = factory( require('./picker.js'), require('jquery') )
  
      // Browser globals.
      else factory( Picker, jQuery )
  
  }(function( Picker, $ ) {
  
  
  /**
   * Globals and constants
   */
  var DAYS_IN_WEEK = 7,
      WEEKS_IN_CALENDAR = 6,
      _ = Picker._
  
  
  
  /**
   * The date picker constructor
   */
  function DatePicker( picker, settings ) {
  
      var calendar = this,
          element = picker.$node[ 0 ],
          elementValue = element.value,
          elementDataValue = picker.$node.data( 'value' ),
          valueString = elementDataValue || elementValue,
          formatString = elementDataValue ? settings.formatSubmit : settings.format,
          isRTL = function() {
  
              return element.currentStyle ?
  
                  // For IE.
                  element.currentStyle.direction == 'rtl' :
  
                  // For normal browsers.
                  getComputedStyle( picker.$root[0] ).direction == 'rtl'
          }
  
      calendar.settings = settings
      calendar.$node = picker.$node
  
      // The queue of methods that will be used to build item objects.
      calendar.queue = {
          min: 'measure create',
          max: 'measure create',
          now: 'now create',
          select: 'parse create validate',
          highlight: 'parse navigate create validate',
          view: 'parse create validate viewset',
          disable: 'deactivate',
          enable: 'activate'
      }
  
      // The component's item object.
      calendar.item = {}
  
      calendar.item.clear = null
      calendar.item.disable = ( settings.disable || [] ).slice( 0 )
      calendar.item.enable = -(function( collectionDisabled ) {
          return collectionDisabled[ 0 ] === true ? collectionDisabled.shift() : -1
      })( calendar.item.disable )
  
      calendar.
          set( 'min', settings.min ).
          set( 'max', settings.max ).
          set( 'now' )
  
      // When there’s a value, set the `select`, which in turn
      // also sets the `highlight` and `view`.
      if ( valueString ) {
          calendar.set( 'select', valueString, { format: formatString })
      }
  
      // If there’s no value, default to highlighting “today”.
      else {
          calendar.
              set( 'select', null ).
              set( 'highlight', calendar.item.now )
      }
  
  
      // The keycode to movement mapping.
      calendar.key = {
          40: 7, // Down
          38: -7, // Up
          39: function() { return isRTL() ? -1 : 1 }, // Right
          37: function() { return isRTL() ? 1 : -1 }, // Left
          go: function( timeChange ) {
              var highlightedObject = calendar.item.highlight,
                  targetDate = new Date( highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange )
              calendar.set(
                  'highlight',
                  targetDate,
                  { interval: timeChange }
              )
              this.render()
          }
      }
  
  
      // Bind some picker events.
      picker.
          on( 'render', function() {
              picker.$root.find( '.' + settings.klass.selectMonth ).on( 'change', function() {
                  var value = this.value
                  if ( value ) {
                      picker.set( 'highlight', [ picker.get( 'view' ).year, value, picker.get( 'highlight' ).date ] )
                      picker.$root.find( '.' + settings.klass.selectMonth ).trigger( 'focus' )
                  }
              })
              picker.$root.find( '.' + settings.klass.selectYear ).on( 'change', function() {
                  var value = this.value
                  if ( value ) {
                      picker.set( 'highlight', [ value, picker.get( 'view' ).month, picker.get( 'highlight' ).date ] )
                      picker.$root.find( '.' + settings.klass.selectYear ).trigger( 'focus' )
                  }
              })
          }, 1 ).
          on( 'open', function() {
              var includeToday = ''
              if ( calendar.disabled( calendar.get('now') ) ) {
                  includeToday = ':not(.' + settings.klass.buttonToday + ')'
              }
              picker.$root.find( 'button' + includeToday + ', select' ).attr( 'disabled', false )
          }, 1 ).
          on( 'close', function() {
              picker.$root.find( 'button, select' ).attr( 'disabled', true )
          }, 1 )
  
  } //DatePicker
  
  
  /**
   * Set a datepicker item object.
   */
  DatePicker.prototype.set = function( type, value, options ) {
  
      var calendar = this,
          calendarItem = calendar.item
  
      // If the value is `null` just set it immediately.
      if ( value === null ) {
          if ( type == 'clear' ) type = 'select'
          calendarItem[ type ] = value
          return calendar
      }
  
      // Otherwise go through the queue of methods, and invoke the functions.
      // Update this as the time unit, and set the final value as this item.
      // * In the case of `enable`, keep the queue but set `disable` instead.
      //   And in the case of `flip`, keep the queue but set `enable` instead.
      calendarItem[ ( type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type ) ] = calendar.queue[ type ].split( ' ' ).map( function( method ) {
          value = calendar[ method ]( type, value, options )
          return value
      }).pop()
  
      // Check if we need to cascade through more updates.
      if ( type == 'select' ) {
          calendar.set( 'highlight', calendarItem.select, options )
      }
      else if ( type == 'highlight' ) {
          calendar.set( 'view', calendarItem.highlight, options )
      }
      else if ( type.match( /^(flip|min|max|disable|enable)$/ ) ) {
          if ( calendarItem.select && calendar.disabled( calendarItem.select ) ) {
              calendar.set( 'select', calendarItem.select, options )
          }
          if ( calendarItem.highlight && calendar.disabled( calendarItem.highlight ) ) {
              calendar.set( 'highlight', calendarItem.highlight, options )
          }
      }
  
      return calendar
  } //DatePicker.prototype.set
  
  
  /**
   * Get a datepicker item object.
   */
  DatePicker.prototype.get = function( type ) {
      return this.item[ type ]
  } //DatePicker.prototype.get
  
  
  /**
   * Create a picker date object.
   */
  DatePicker.prototype.create = function( type, value, options ) {
  
      var isInfiniteValue,
          calendar = this
  
      // If there’s no value, use the type as the value.
      value = value === undefined ? type : value
  
  
      // If it’s infinity, update the value.
      if ( value == -Infinity || value == Infinity ) {
          isInfiniteValue = value
      }
  
      // If it’s an object, use the native date object.
      else if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) {
          value = value.obj
      }
  
      // If it’s an array, convert it into a date and make sure
      // that it’s a valid date – otherwise default to today.
      else if ( $.isArray( value ) ) {
          value = new Date( value[ 0 ], value[ 1 ], value[ 2 ] )
          value = _.isDate( value ) ? value : calendar.create().obj
      }
  
      // If it’s a number or date object, make a normalized date.
      else if ( _.isInteger( value ) || _.isDate( value ) ) {
          value = calendar.normalize( new Date( value ), options )
      }
  
      // If it’s a literal true or any other case, set it to now.
      else /*if ( value === true )*/ {
          value = calendar.now( type, value, options )
      }
  
      // Return the compiled object.
      return {
          year: isInfiniteValue || value.getFullYear(),
          month: isInfiniteValue || value.getMonth(),
          date: isInfiniteValue || value.getDate(),
          day: isInfiniteValue || value.getDay(),
          obj: isInfiniteValue || value,
          pick: isInfiniteValue || value.getTime()
      }
  } //DatePicker.prototype.create
  
  
  /**
   * Create a range limit object using an array, date object,
   * literal “true”, or integer relative to another time.
   */
  DatePicker.prototype.createRange = function( from, to ) {
  
      var calendar = this,
          createDate = function( date ) {
              if ( date === true || $.isArray( date ) || _.isDate( date ) ) {
                  return calendar.create( date )
              }
              return date
          }
  
      // Create objects if possible.
      if ( !_.isInteger( from ) ) {
          from = createDate( from )
      }
      if ( !_.isInteger( to ) ) {
          to = createDate( to )
      }
  
      // Create relative dates.
      if ( _.isInteger( from ) && $.isPlainObject( to ) ) {
          from = [ to.year, to.month, to.date + from ];
      }
      else if ( _.isInteger( to ) && $.isPlainObject( from ) ) {
          to = [ from.year, from.month, from.date + to ];
      }
  
      return {
          from: createDate( from ),
          to: createDate( to )
      }
  } //DatePicker.prototype.createRange
  
  
  /**
   * Check if a date unit falls within a date range object.
   */
  DatePicker.prototype.withinRange = function( range, dateUnit ) {
      range = this.createRange(range.from, range.to)
      return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick
  }
  
  
  /**
   * Check if two date range objects overlap.
   */
  DatePicker.prototype.overlapRanges = function( one, two ) {
  
      var calendar = this
  
      // Convert the ranges into comparable dates.
      one = calendar.createRange( one.from, one.to )
      two = calendar.createRange( two.from, two.to )
  
      return calendar.withinRange( one, two.from ) || calendar.withinRange( one, two.to ) ||
          calendar.withinRange( two, one.from ) || calendar.withinRange( two, one.to )
  }
  
  
  /**
   * Get the date today.
   */
  DatePicker.prototype.now = function( type, value, options ) {
      value = new Date()
      if ( options && options.rel ) {
          value.setDate( value.getDate() + options.rel )
      }
      return this.normalize( value, options )
  }
  
  
  /**
   * Navigate to next/prev month.
   */
  DatePicker.prototype.navigate = function( type, value, options ) {
  
      var targetDateObject,
          targetYear,
          targetMonth,
          targetDate,
          isTargetArray = $.isArray( value ),
          isTargetObject = $.isPlainObject( value ),
          viewsetObject = this.item.view/*,
          safety = 100*/
  
  
      if ( isTargetArray || isTargetObject ) {
  
          if ( isTargetObject ) {
              targetYear = value.year
              targetMonth = value.month
              targetDate = value.date
          }
          else {
              targetYear = +value[0]
              targetMonth = +value[1]
              targetDate = +value[2]
          }
  
          // If we’re navigating months but the view is in a different
          // month, navigate to the view’s year and month.
          if ( options && options.nav && viewsetObject && viewsetObject.month !== targetMonth ) {
              targetYear = viewsetObject.year
              targetMonth = viewsetObject.month
          }
  
          // Figure out the expected target year and month.
          targetDateObject = new Date( targetYear, targetMonth + ( options && options.nav ? options.nav : 0 ), 1 )
          targetYear = targetDateObject.getFullYear()
          targetMonth = targetDateObject.getMonth()
  
          // If the month we’re going to doesn’t have enough days,
          // keep decreasing the date until we reach the month’s last date.
          while ( /*safety &&*/ new Date( targetYear, targetMonth, targetDate ).getMonth() !== targetMonth ) {
              targetDate -= 1
              /*safety -= 1
              if ( !safety ) {
                  throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.'
              }*/
          }
  
          value = [ targetYear, targetMonth, targetDate ]
      }
  
      return value
  } //DatePicker.prototype.navigate
  
  
  /**
   * Normalize a date by setting the hours to midnight.
   */
  DatePicker.prototype.normalize = function( value/*, options*/ ) {
      value.setHours( 0, 0, 0, 0 )
      return value
  }
  
  
  /**
   * Measure the range of dates.
   */
  DatePicker.prototype.measure = function( type, value/*, options*/ ) {
  
      var calendar = this
  
      // If it’s anything false-y, remove the limits.
      if ( !value ) {
          value = type == 'min' ? -Infinity : Infinity
      }
  
      // If it’s a string, parse it.
      else if ( typeof value == 'string' ) {
          value = calendar.parse( type, value )
      }
  
      // If it's an integer, get a date relative to today.
      else if ( _.isInteger( value ) ) {
          value = calendar.now( type, value, { rel: value } )
      }
  
      return value
  } ///DatePicker.prototype.measure
  
  
  /**
   * Create a viewset object based on navigation.
   */
  DatePicker.prototype.viewset = function( type, dateObject/*, options*/ ) {
      return this.create([ dateObject.year, dateObject.month, 1 ])
  }
  
  
  /**
   * Validate a date as enabled and shift if needed.
   */
  DatePicker.prototype.validate = function( type, dateObject, options ) {
  
      var calendar = this,
  
          // Keep a reference to the original date.
          originalDateObject = dateObject,
  
          // Make sure we have an interval.
          interval = options && options.interval ? options.interval : 1,
  
          // Check if the calendar enabled dates are inverted.
          isFlippedBase = calendar.item.enable === -1,
  
          // Check if we have any enabled dates after/before now.
          hasEnabledBeforeTarget, hasEnabledAfterTarget,
  
          // The min & max limits.
          minLimitObject = calendar.item.min,
          maxLimitObject = calendar.item.max,
  
          // Check if we’ve reached the limit during shifting.
          reachedMin, reachedMax,
  
          // Check if the calendar is inverted and at least one weekday is enabled.
          hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter( function( value ) {
  
              // If there’s a date, check where it is relative to the target.
              if ( $.isArray( value ) ) {
                  var dateTime = calendar.create( value ).pick
                  if ( dateTime < dateObject.pick ) hasEnabledBeforeTarget = true
                  else if ( dateTime > dateObject.pick ) hasEnabledAfterTarget = true
              }
  
              // Return only integers for enabled weekdays.
              return _.isInteger( value )
          }).length/*,
  
          safety = 100*/
  
  
  
      // Cases to validate for:
      // [1] Not inverted and date disabled.
      // [2] Inverted and some dates enabled.
      // [3] Not inverted and out of range.
      //
      // Cases to **not** validate for:
      // • Navigating months.
      // • Not inverted and date enabled.
      // • Inverted and all dates disabled.
      // • ..and anything else.
      if ( !options || !options.nav ) if (
          /* 1 */ ( !isFlippedBase && calendar.disabled( dateObject ) ) ||
          /* 2 */ ( isFlippedBase && calendar.disabled( dateObject ) && ( hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget ) ) ||
          /* 3 */ ( !isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick) )
      ) {
  
  
          // When inverted, flip the direction if there aren’t any enabled weekdays
          // and there are no enabled dates in the direction of the interval.
          if ( isFlippedBase && !hasEnabledWeekdays && ( ( !hasEnabledAfterTarget && interval > 0 ) || ( !hasEnabledBeforeTarget && interval < 0 ) ) ) {
              interval *= -1
          }
  
  
          // Keep looping until we reach an enabled date.
          while ( /*safety &&*/ calendar.disabled( dateObject ) ) {
  
              /*safety -= 1
              if ( !safety ) {
                  throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.'
              }*/
  
  
              // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval.
              if ( Math.abs( interval ) > 1 && ( dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month ) ) {
                  dateObject = originalDateObject
                  interval = interval > 0 ? 1 : -1
              }
  
  
              // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit.
              if ( dateObject.pick <= minLimitObject.pick ) {
                  reachedMin = true
                  interval = 1
                  dateObject = calendar.create([
                      minLimitObject.year,
                      minLimitObject.month,
                      minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1)
                  ])
              }
              else if ( dateObject.pick >= maxLimitObject.pick ) {
                  reachedMax = true
                  interval = -1
                  dateObject = calendar.create([
                      maxLimitObject.year,
                      maxLimitObject.month,
                      maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1)
                  ])
              }
  
  
              // If we’ve reached both limits, just break out of the loop.
              if ( reachedMin && reachedMax ) {
                  break
              }
  
  
              // Finally, create the shifted date using the interval and keep looping.
              dateObject = calendar.create([ dateObject.year, dateObject.month, dateObject.date + interval ])
          }
  
      } //endif
  
  
      // Return the date object settled on.
      return dateObject
  } //DatePicker.prototype.validate
  
  
  /**
   * Check if a date is disabled.
   */
  DatePicker.prototype.disabled = function( dateToVerify ) {
  
      var
          calendar = this,
  
          // Filter through the disabled dates to check if this is one.
          isDisabledMatch = calendar.item.disable.filter( function( dateToDisable ) {
  
              // If the date is a number, match the weekday with 0index and `firstDay` check.
              if ( _.isInteger( dateToDisable ) ) {
                  return dateToVerify.day === ( calendar.settings.firstDay ? dateToDisable : dateToDisable - 1 ) % 7
              }
  
              // If it’s an array or a native JS date, create and match the exact date.
              if ( $.isArray( dateToDisable ) || _.isDate( dateToDisable ) ) {
                  return dateToVerify.pick === calendar.create( dateToDisable ).pick
              }
  
              // If it’s an object, match a date within the “from” and “to” range.
              if ( $.isPlainObject( dateToDisable ) ) {
                  return calendar.withinRange( dateToDisable, dateToVerify )
              }
          })
  
      // If this date matches a disabled date, confirm it’s not inverted.
      isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( dateToDisable ) {
          return $.isArray( dateToDisable ) && dateToDisable[3] == 'inverted' ||
              $.isPlainObject( dateToDisable ) && dateToDisable.inverted
      }).length
  
      // Check the calendar “enabled” flag and respectively flip the
      // disabled state. Then also check if it’s beyond the min/max limits.
      return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||
          dateToVerify.pick < calendar.item.min.pick ||
          dateToVerify.pick > calendar.item.max.pick
  
  } //DatePicker.prototype.disabled
  
  
  /**
   * Parse a string into a usable type.
   */
  DatePicker.prototype.parse = function( type, value, options ) {
  
      var calendar = this,
          parsingObject = {}
  
      // If it’s already parsed, we’re good.
      if ( !value || typeof value != 'string' ) {
          return value
      }
  
      // We need a `.format` to parse the value with.
      if ( !( options && options.format ) ) {
          options = options || {}
          options.format = calendar.settings.format
      }
  
      // Convert the format into an array and then map through it.
      calendar.formats.toArray( options.format ).map( function( label ) {
  
          var
              // Grab the formatting label.
              formattingLabel = calendar.formats[ label ],
  
              // The format length is from the formatting label function or the
              // label length without the escaping exclamation (!) mark.
              formatLength = formattingLabel ? _.trigger( formattingLabel, calendar, [ value, parsingObject ] ) : label.replace( /^!/, '' ).length
  
          // If there's a format label, split the value up to the format length.
          // Then add it to the parsing object with appropriate label.
          if ( formattingLabel ) {
              parsingObject[ label ] = value.substr( 0, formatLength )
          }
  
          // Update the value as the substring from format length to end.
          value = value.substr( formatLength )
      })
  
      // Compensate for month 0index.
      return [
          parsingObject.yyyy || parsingObject.yy,
          +( parsingObject.mm || parsingObject.m ) - 1,
          parsingObject.dd || parsingObject.d
      ]
  } //DatePicker.prototype.parse
  
  
  /**
   * Various formats to display the object in.
   */
  DatePicker.prototype.formats = (function() {
  
      // Return the length of the first word in a collection.
      function getWordLengthFromCollection( string, collection, dateObject ) {
  
          // Grab the first word from the string.
          var word = string.match( /\w+/ )[ 0 ]
  
          // If there's no month index, add it to the date object
          if ( !dateObject.mm && !dateObject.m ) {
              dateObject.m = collection.indexOf( word ) + 1
          }
  
          // Return the length of the word.
          return word.length
      }
  
      // Get the length of the first word in a string.
      function getFirstWordLength( string ) {
          return string.match( /\w+/ )[ 0 ].length
      }
  
      return {
  
          d: function( string, dateObject ) {
  
              // If there's string, then get the digits length.
              // Otherwise return the selected date.
              return string ? _.digits( string ) : dateObject.date
          },
          dd: function( string, dateObject ) {
  
              // If there's a string, then the length is always 2.
              // Otherwise return the selected date with a leading zero.
              return string ? 2 : _.lead( dateObject.date )
          },
          ddd: function( string, dateObject ) {
  
              // If there's a string, then get the length of the first word.
              // Otherwise return the short selected weekday.
              return string ? getFirstWordLength( string ) : this.settings.weekdaysShort[ dateObject.day ]
          },
          dddd: function( string, dateObject ) {
  
              // If there's a string, then get the length of the first word.
              // Otherwise return the full selected weekday.
              return string ? getFirstWordLength( string ) : this.settings.weekdaysFull[ dateObject.day ]
          },
          m: function( string, dateObject ) {
  
              // If there's a string, then get the length of the digits
              // Otherwise return the selected month with 0index compensation.
              return string ? _.digits( string ) : dateObject.month + 1
          },
          mm: function( string, dateObject ) {
  
              // If there's a string, then the length is always 2.
              // Otherwise return the selected month with 0index and leading zero.
              return string ? 2 : _.lead( dateObject.month + 1 )
          },
          mmm: function( string, dateObject ) {
  
              var collection = this.settings.monthsShort
  
              // If there's a string, get length of the relevant month from the short
              // months collection. Otherwise return the selected month from that collection.
              return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ]
          },
          mmmm: function( string, dateObject ) {
  
              var collection = this.settings.monthsFull
  
              // If there's a string, get length of the relevant month from the full
              // months collection. Otherwise return the selected month from that collection.
              return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ]
          },
          yy: function( string, dateObject ) {
  
              // If there's a string, then the length is always 2.
              // Otherwise return the selected year by slicing out the first 2 digits.
              return string ? 2 : ( '' + dateObject.year ).slice( 2 )
          },
          yyyy: function( string, dateObject ) {
  
              // If there's a string, then the length is always 4.
              // Otherwise return the selected year.
              return string ? 4 : dateObject.year
          },
  
          // Create an array by splitting the formatting string passed.
          toArray: function( formatString ) { return formatString.split( /(d{1,4}|m{1,4}|y{4}|yy|!.)/g ) },
  
          // Format an object into a string using the formatting options.
          toString: function ( formatString, itemObject ) {
              var calendar = this
              return calendar.formats.toArray( formatString ).map( function( label ) {
                  return _.trigger( calendar.formats[ label ], calendar, [ 0, itemObject ] ) || label.replace( /^!/, '' )
              }).join( '' )
          }
      }
  })() //DatePicker.prototype.formats
  
  
  
  
  /**
   * Check if two date units are the exact.
   */
  DatePicker.prototype.isDateExact = function( one, two ) {
  
      var calendar = this
  
      // When we’re working with weekdays, do a direct comparison.
      if (
          ( _.isInteger( one ) && _.isInteger( two ) ) ||
          ( typeof one == 'boolean' && typeof two == 'boolean' )
       ) {
          return one === two
      }
  
      // When we’re working with date representations, compare the “pick” value.
      if (
          ( _.isDate( one ) || $.isArray( one ) ) &&
          ( _.isDate( two ) || $.isArray( two ) )
      ) {
          return calendar.create( one ).pick === calendar.create( two ).pick
      }
  
      // When we’re working with range objects, compare the “from” and “to”.
      if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) {
          return calendar.isDateExact( one.from, two.from ) && calendar.isDateExact( one.to, two.to )
      }
  
      return false
  }
  
  
  /**
   * Check if two date units overlap.
   */
  DatePicker.prototype.isDateOverlap = function( one, two ) {
  
      var calendar = this,
          firstDay = calendar.settings.firstDay ? 1 : 0
  
      // When we’re working with a weekday index, compare the days.
      if ( _.isInteger( one ) && ( _.isDate( two ) || $.isArray( two ) ) ) {
          one = one % 7 + firstDay
          return one === calendar.create( two ).day + 1
      }
      if ( _.isInteger( two ) && ( _.isDate( one ) || $.isArray( one ) ) ) {
          two = two % 7 + firstDay
          return two === calendar.create( one ).day + 1
      }
  
      // When we’re working with range objects, check if the ranges overlap.
      if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) {
          return calendar.overlapRanges( one, two )
      }
  
      return false
  }
  
  
  /**
   * Flip the “enabled” state.
   */
  DatePicker.prototype.flipEnable = function(val) {
      var itemObject = this.item
      itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1)
  }
  
  
  /**
   * Mark a collection of dates as “disabled”.
   */
  DatePicker.prototype.deactivate = function( type, datesToDisable ) {
  
      var calendar = this,
          disabledItems = calendar.item.disable.slice(0)
  
  
      // If we’re flipping, that’s all we need to do.
      if ( datesToDisable == 'flip' ) {
          calendar.flipEnable()
      }
  
      else if ( datesToDisable === false ) {
          calendar.flipEnable(1)
          disabledItems = []
      }
  
      else if ( datesToDisable === true ) {
          calendar.flipEnable(-1)
          disabledItems = []
      }
  
      // Otherwise go through the dates to disable.
      else {
  
          datesToDisable.map(function( unitToDisable ) {
  
              var matchFound
  
              // When we have disabled items, check for matches.
              // If something is matched, immediately break out.
              for ( var index = 0; index < disabledItems.length; index += 1 ) {
                  if ( calendar.isDateExact( unitToDisable, disabledItems[index] ) ) {
                      matchFound = true
                      break
                  }
              }
  
              // If nothing was found, add the validated unit to the collection.
              if ( !matchFound ) {
                  if (
                      _.isInteger( unitToDisable ) ||
                      _.isDate( unitToDisable ) ||
                      $.isArray( unitToDisable ) ||
                      ( $.isPlainObject( unitToDisable ) && unitToDisable.from && unitToDisable.to )
                  ) {
                      disabledItems.push( unitToDisable )
                  }
              }
          })
      }
  
      // Return the updated collection.
      return disabledItems
  } //DatePicker.prototype.deactivate
  
  
  /**
   * Mark a collection of dates as “enabled”.
   */
  DatePicker.prototype.activate = function( type, datesToEnable ) {
  
      var calendar = this,
          disabledItems = calendar.item.disable,
          disabledItemsCount = disabledItems.length
  
      // If we’re flipping, that’s all we need to do.
      if ( datesToEnable == 'flip' ) {
          calendar.flipEnable()
      }
  
      else if ( datesToEnable === true ) {
          calendar.flipEnable(1)
          disabledItems = []
      }
  
      else if ( datesToEnable === false ) {
          calendar.flipEnable(-1)
          disabledItems = []
      }
  
      // Otherwise go through the disabled dates.
      else {
  
          datesToEnable.map(function( unitToEnable ) {
  
              var matchFound,
                  disabledUnit,
                  index,
                  isExactRange
  
              // Go through the disabled items and try to find a match.
              for ( index = 0; index < disabledItemsCount; index += 1 ) {
  
                  disabledUnit = disabledItems[index]
  
                  // When an exact match is found, remove it from the collection.
                  if ( calendar.isDateExact( disabledUnit, unitToEnable ) ) {
                      matchFound = disabledItems[index] = null
                      isExactRange = true
                      break
                  }
  
                  // When an overlapped match is found, add the “inverted” state to it.
                  else if ( calendar.isDateOverlap( disabledUnit, unitToEnable ) ) {
                      if ( $.isPlainObject( unitToEnable ) ) {
                          unitToEnable.inverted = true
                          matchFound = unitToEnable
                      }
                      else if ( $.isArray( unitToEnable ) ) {
                          matchFound = unitToEnable
                          if ( !matchFound[3] ) matchFound.push( 'inverted' )
                      }
                      else if ( _.isDate( unitToEnable ) ) {
                          matchFound = [ unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted' ]
                      }
                      break
                  }
              }
  
              // If a match was found, remove a previous duplicate entry.
              if ( matchFound ) for ( index = 0; index < disabledItemsCount; index += 1 ) {
                  if ( calendar.isDateExact( disabledItems[index], unitToEnable ) ) {
                      disabledItems[index] = null
                      break
                  }
              }
  
              // In the event that we’re dealing with an exact range of dates,
              // make sure there are no “inverted” dates because of it.
              if ( isExactRange ) for ( index = 0; index < disabledItemsCount; index += 1 ) {
                  if ( calendar.isDateOverlap( disabledItems[index], unitToEnable ) ) {
                      disabledItems[index] = null
                      break
                  }
              }
  
              // If something is still matched, add it into the collection.
              if ( matchFound ) {
                  disabledItems.push( matchFound )
              }
          })
      }
  
      // Return the updated collection.
      return disabledItems.filter(function( val ) { return val != null })
  } //DatePicker.prototype.activate
  
  
  /**
   * Create a string for the nodes in the picker.
   */
  DatePicker.prototype.nodes = function( isOpen ) {
  
      var
          calendar = this,
          settings = calendar.settings,
          calendarItem = calendar.item,
          nowObject = calendarItem.now,
          selectedObject = calendarItem.select,
          highlightedObject = calendarItem.highlight,
          viewsetObject = calendarItem.view,
          disabledCollection = calendarItem.disable,
          minLimitObject = calendarItem.min,
          maxLimitObject = calendarItem.max,
  
  
          // Create the calendar table head using a copy of weekday labels collection.
          // * We do a copy so we don't mutate the original array.
          tableHead = (function( collection, fullCollection ) {
  
              // If the first day should be Monday, move Sunday to the end.
              if ( settings.firstDay ) {
                  collection.push( collection.shift() )
                  fullCollection.push( fullCollection.shift() )
              }
  
              // Create and return the table head group.
              return _.node(
                  'thead',
                  _.node(
                      'tr',
                      _.group({
                          min: 0,
                          max: DAYS_IN_WEEK - 1,
                          i: 1,
                          node: 'th',
                          item: function( counter ) {
                              return [
                                  collection[ counter ],
                                  settings.klass.weekdays,
                                  'scope=col title="' + fullCollection[ counter ] + '"'
                              ]
                          }
                      })
                  )
              ) //endreturn
  
          // Materialize modified
          })( ( settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysLetter ).slice( 0 ), settings.weekdaysFull.slice( 0 ) ), //tableHead
  
  
          // Create the nav for next/prev month.
          createMonthNav = function( next ) {
  
              // Otherwise, return the created month tag.
              return _.node(
                  'div',
                  ' ',
                  settings.klass[ 'nav' + ( next ? 'Next' : 'Prev' ) ] + (
  
                      // If the focused month is outside the range, disabled the button.
                      ( next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month ) ||
                      ( !next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month ) ?
                      ' ' + settings.klass.navDisabled : ''
                  ),
                  'data-nav=' + ( next || -1 ) + ' ' +
                  _.ariaAttr({
                      role: 'button',
                      controls: calendar.$node[0].id + '_table'
                  }) + ' ' +
                  'title="' + (next ? settings.labelMonthNext : settings.labelMonthPrev ) + '"'
              ) //endreturn
          }, //createMonthNav
  
  
          // Create the month label.
          //Materialize modified
          createMonthLabel = function(override) {
  
              var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull
  
               // Materialize modified
              if (override == "short_months") {
                monthsCollection = settings.monthsShort;
              }
  
              // If there are months to select, add a dropdown menu.
              if ( settings.selectMonths  && override == undefined) {
  
                  return _.node( 'select',
                      _.group({
                          min: 0,
                          max: 11,
                          i: 1,
                          node: 'option',
                          item: function( loopedMonth ) {
  
                              return [
  
                                  // The looped month and no classes.
                                  monthsCollection[ loopedMonth ], 0,
  
                                  // Set the value and selected index.
                                  'value=' + loopedMonth +
                                  ( viewsetObject.month == loopedMonth ? ' selected' : '' ) +
                                  (
                                      (
                                          ( viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month ) ||
                                          ( viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month )
                                      ) ?
                                      ' disabled' : ''
                                  )
                              ]
                          }
                      }),
                      settings.klass.selectMonth + ' browser-default',
                      ( isOpen ? '' : 'disabled' ) + ' ' +
                      _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' +
                      'title="' + settings.labelMonthSelect + '"'
                  )
              }
  
              // Materialize modified
              if (override == "short_months")
                  if (selectedObject != null)
                  return _.node( 'div', monthsCollection[ selectedObject.month ] );
                  else return _.node( 'div', monthsCollection[ viewsetObject.month ] );
  
              // If there's a need for a month selector
              return _.node( 'div', monthsCollection[ viewsetObject.month ], settings.klass.month )
          }, //createMonthLabel
  
  
          // Create the year label.
          // Materialize modified
          createYearLabel = function(override) {
  
              var focusedYear = viewsetObject.year,
  
              // If years selector is set to a literal "true", set it to 5. Otherwise
              // divide in half to get half before and half after focused year.
              numberYears = settings.selectYears === true ? 5 : ~~( settings.selectYears / 2 )
  
              // If there are years to select, add a dropdown menu.
              if ( numberYears ) {
  
                  var
                      minYear = minLimitObject.year,
                      maxYear = maxLimitObject.year,
                      lowestYear = focusedYear - numberYears,
                      highestYear = focusedYear + numberYears
  
                  // If the min year is greater than the lowest year, increase the highest year
                  // by the difference and set the lowest year to the min year.
                  if ( minYear > lowestYear ) {
                      highestYear += minYear - lowestYear
                      lowestYear = minYear
                  }
  
                  // If the max year is less than the highest year, decrease the lowest year
                  // by the lower of the two: available and needed years. Then set the
                  // highest year to the max year.
                  if ( maxYear < highestYear ) {
  
                      var availableYears = lowestYear - minYear,
                          neededYears = highestYear - maxYear
  
                      lowestYear -= availableYears > neededYears ? neededYears : availableYears
                      highestYear = maxYear
                  }
  
                  if ( settings.selectYears  && override == undefined ) {
                      return _.node( 'select',
                          _.group({
                              min: lowestYear,
                              max: highestYear,
                              i: 1,
                              node: 'option',
                              item: function( loopedYear ) {
                                  return [
  
                                      // The looped year and no classes.
                                      loopedYear, 0,
  
                                      // Set the value and selected index.
                                      'value=' + loopedYear + ( focusedYear == loopedYear ? ' selected' : '' )
                                  ]
                              }
                          }),
                          settings.klass.selectYear + ' browser-default',
                          ( isOpen ? '' : 'disabled' ) + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' +
                          'title="' + settings.labelYearSelect + '"'
                      )
                  }
              }
  
              // Materialize modified
              if (override == "raw")
                  return _.node( 'div', focusedYear )
  
              // Otherwise just return the year focused
              return _.node( 'div', focusedYear, settings.klass.year )
          } //createYearLabel
  
  
          // Materialize modified
          createDayLabel = function() {
                  if (selectedObject != null)
                      return _.node( 'div', selectedObject.date)
                  else return _.node( 'div', nowObject.date)
              }
          createWeekdayLabel = function() {
              var display_day;
  
              if (selectedObject != null)
                  display_day = selectedObject.day;
              else
                  display_day = nowObject.day;
              var weekday = settings.weekdaysFull[ display_day ]
              return weekday
          }
  
  
      // Create and return the entire calendar.
  return _.node(
          // Date presentation View
          'div',
              _.node(
                  'div',
                  createWeekdayLabel(),
                  "picker__weekday-display"
              )+
              _.node(
                  // Div for short Month
                  'div',
                  createMonthLabel("short_months"),
                  settings.klass.month_display
              )+
              _.node(
                  // Div for Day
                  'div',
                  createDayLabel() ,
                  settings.klass.day_display
              )+
              _.node(
                  // Div for Year
                  'div',
                  createYearLabel("raw") ,
                  settings.klass.year_display
              ),
          settings.klass.date_display
      )+
      // Calendar container
      _.node('div',
          _.node('div',
          ( settings.selectYears ?  createMonthLabel() + createYearLabel() : createMonthLabel() + createYearLabel() ) +
          createMonthNav() + createMonthNav( 1 ),
          settings.klass.header
      ) + _.node(
          'table',
          tableHead +
          _.node(
              'tbody',
              _.group({
                  min: 0,
                  max: WEEKS_IN_CALENDAR - 1,
                  i: 1,
                  node: 'tr',
                  item: function( rowCounter ) {
  
                      // If Monday is the first day and the month starts on Sunday, shift the date back a week.
                      var shiftDateBy = settings.firstDay && calendar.create([ viewsetObject.year, viewsetObject.month, 1 ]).day === 0 ? -7 : 0
  
                      return [
                          _.group({
                              min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index
                              max: function() {
                                  return this.min + DAYS_IN_WEEK - 1
                              },
                              i: 1,
                              node: 'td',
                              item: function( targetDate ) {
  
                                  // Convert the time date from a relative date to a target date.
                                  targetDate = calendar.create([ viewsetObject.year, viewsetObject.month, targetDate + ( settings.firstDay ? 1 : 0 ) ])
  
                                  var isSelected = selectedObject && selectedObject.pick == targetDate.pick,
                                      isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick,
                                      isDisabled = disabledCollection && calendar.disabled( targetDate ) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick,
                                      formattedDate = _.trigger( calendar.formats.toString, calendar, [ settings.format, targetDate ] )
  
                                  return [
                                      _.node(
                                          'div',
                                          targetDate.date,
                                          (function( klasses ) {
  
                                              // Add the `infocus` or `outfocus` classes based on month in view.
                                              klasses.push( viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus )
  
                                              // Add the `today` class if needed.
                                              if ( nowObject.pick == targetDate.pick ) {
                                                  klasses.push( settings.klass.now )
                                              }
  
                                              // Add the `selected` class if something's selected and the time matches.
                                              if ( isSelected ) {
                                                  klasses.push( settings.klass.selected )
                                              }
  
                                              // Add the `highlighted` class if something's highlighted and the time matches.
                                              if ( isHighlighted ) {
                                                  klasses.push( settings.klass.highlighted )
                                              }
  
                                              // Add the `disabled` class if something's disabled and the object matches.
                                              if ( isDisabled ) {
                                                  klasses.push( settings.klass.disabled )
                                              }
  
                                              return klasses.join( ' ' )
                                          })([ settings.klass.day ]),
                                          'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({
                                              role: 'gridcell',
                                              label: formattedDate,
                                              selected: isSelected && calendar.$node.val() === formattedDate ? true : null,
                                              activedescendant: isHighlighted ? true : null,
                                              disabled: isDisabled ? true : null
                                          })
                                      ),
                                      '',
                                      _.ariaAttr({ role: 'presentation' })
                                  ] //endreturn
                              }
                          })
                      ] //endreturn
                  }
              })
          ),
          settings.klass.table,
          'id="' + calendar.$node[0].id + '_table' + '" ' + _.ariaAttr({
              role: 'grid',
              controls: calendar.$node[0].id,
              readonly: true
          })
      )
      , settings.klass.calendar_container) // end calendar
  
       +
  
      // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”.
      _.node(
          'div',
          _.node( 'button', settings.today, "btn-flat picker__today",
              'type=button data-pick=' + nowObject.pick +
              ( isOpen && !calendar.disabled(nowObject) ? '' : ' disabled' ) + ' ' +
              _.ariaAttr({ controls: calendar.$node[0].id }) ) +
          _.node( 'button', settings.clear, "btn-flat picker__clear",
              'type=button data-clear=1' +
              ( isOpen ? '' : ' disabled' ) + ' ' +
              _.ariaAttr({ controls: calendar.$node[0].id }) ) +
          _.node('button', settings.close, "btn-flat picker__close",
              'type=button data-close=true ' +
              ( isOpen ? '' : ' disabled' ) + ' ' +
              _.ariaAttr({ controls: calendar.$node[0].id }) ),
          settings.klass.footer
      ) //endreturn
  } //DatePicker.prototype.nodes
  
  
  
  
  /**
   * The date picker defaults.
   */
  DatePicker.defaults = (function( prefix ) {
  
      return {
  
          // The title label to use for the month nav buttons
          labelMonthNext: 'Next month',
          labelMonthPrev: 'Previous month',
  
          // The title label to use for the dropdown selectors
          labelMonthSelect: 'Select a month',
          labelYearSelect: 'Select a year',
  
          // Months and weekdays
          monthsFull: [ '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' ],
          weekdaysFull: [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ],
          weekdaysShort: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
  
          // Materialize modified
          weekdaysLetter: [ 'S', 'M', 'T', 'W', 'T', 'F', 'S' ],
  
          // Today and clear
          today: 'Today',
          clear: 'Clear',
          close: 'Close',
  
          // The format to show on the `input` element
          format: 'd mmmm, yyyy',
  
          // Classes
          klass: {
  
              table: prefix + 'table',
  
              header: prefix + 'header',
  
  
              // Materialize Added klasses
              date_display: prefix + 'date-display',
              day_display: prefix + 'day-display',
              month_display: prefix + 'month-display',
              year_display: prefix + 'year-display',
              calendar_container: prefix + 'calendar-container',
              // end
  
  
  
              navPrev: prefix + 'nav--prev',
              navNext: prefix + 'nav--next',
              navDisabled: prefix + 'nav--disabled',
  
              month: prefix + 'month',
              year: prefix + 'year',
  
              selectMonth: prefix + 'select--month',
              selectYear: prefix + 'select--year',
  
              weekdays: prefix + 'weekday',
  
              day: prefix + 'day',
              disabled: prefix + 'day--disabled',
              selected: prefix + 'day--selected',
              highlighted: prefix + 'day--highlighted',
              now: prefix + 'day--today',
              infocus: prefix + 'day--infocus',
              outfocus: prefix + 'day--outfocus',
  
              footer: prefix + 'footer',
  
              buttonClear: prefix + 'button--clear',
              buttonToday: prefix + 'button--today',
              buttonClose: prefix + 'button--close'
          }
      }
  })( Picker.klasses().picker + '__' )
  
  
  
  
  
  /**
   * Extend the picker to add the date picker.
   */
  Picker.extend( 'pickadate', DatePicker )
  
  
  }));
  
  
  ;(function ($) {
  
    $.fn.characterCounter = function(){
      return this.each(function(){
        var $input = $(this);
        var $counterElement = $input.parent().find('span[class="character-counter"]');
  
        // character counter has already been added appended to the parent container
        if ($counterElement.length) {
          return;
        }
  
        var itHasLengthAttribute = $input.attr('data-length') !== undefined;
  
        if(itHasLengthAttribute){
          $input.on('input', updateCounter);
          $input.on('focus', updateCounter);
          $input.on('blur', removeCounterElement);
  
          addCounterElement($input);
        }
  
      });
    };
  
    function updateCounter(){
      var maxLength     = +$(this).attr('data-length'),
      actualLength      = +$(this).val().length,
      isValidLength     = actualLength <= maxLength;
  
      $(this).parent().find('span[class="character-counter"]')
                      .html( actualLength + '/' + maxLength);
  
      addInputStyle(isValidLength, $(this));
    }
  
    function addCounterElement($input) {
      var $counterElement = $input.parent().find('span[class="character-counter"]');
  
      if ($counterElement.length) {
        return;
      }
  
      $counterElement = $('<span/>')
                          .addClass('character-counter')
                          .css('float','right')
                          .css('font-size','12px')
                          .css('height', 1);
  
      $input.parent().append($counterElement);
    }
  
    function removeCounterElement(){
      $(this).parent().find('span[class="character-counter"]').html('');
    }
  
    function addInputStyle(isValidLength, $input){
      var inputHasInvalidClass = $input.hasClass('invalid');
      if (isValidLength && inputHasInvalidClass) {
        $input.removeClass('invalid');
      }
      else if(!isValidLength && !inputHasInvalidClass){
        $input.removeClass('valid');
        $input.addClass('invalid');
      }
    }
  
    $(document).ready(function(){
      $('input, textarea').characterCounter();
    });
  
  }( jQuery ));
  ;(function ($) {
  
    var methods = {
  
      init : function(options) {
        var defaults = {
          duration: 200, // ms
          dist: -100, // zoom scale TODO: make this more intuitive as an option
          shift: 0, // spacing for center image
          padding: 0, // Padding between non center items
          fullWidth: false, // Change to full width styles
          indicators: false, // Toggle indicators
          noWrap: false, // Don't wrap around and cycle through items.
          onCycleTo: null // Callback for when a new slide is cycled to.
        };
        options = $.extend(defaults, options);
        var namespace = Materialize.objectSelectorString($(this));
  
        return this.each(function(i) {
  
          var uniqueNamespace = namespace+i;
          var images, item_width, item_height, offset, center, pressed, dim, count,
              reference, referenceY, amplitude, target, velocity, scrolling,
              xform, frame, timestamp, ticker, dragged, vertical_dragged;
          var $indicators = $('<ul class="indicators"></ul>');
          var scrollingTimeout = null;
  
  
          // Initialize
          var view = $(this);
          var showIndicators = view.attr('data-indicators') || options.indicators;
  
  
          // Options
          var setCarouselHeight = function() {
            var firstImage = view.find('.carousel-item img').first();
            if (firstImage.length) {
              if (firstImage.prop('complete')) {
                view.css('height', firstImage.height());
              } else {
                firstImage.on('load', function(){
                  view.css('height', $(this).height());
                });
              }
            } else {
              var imageHeight = view.find('.carousel-item').first().height();
              view.css('height', imageHeight);
            }
          };
  
          if (options.fullWidth) {
            options.dist = 0;
            setCarouselHeight();
  
            // Offset fixed items when indicators.
            if (showIndicators) {
              view.find('.carousel-fixed-item').addClass('with-indicators');
            }
          }
  
  
          // Don't double initialize.
          if (view.hasClass('initialized')) {
            // Recalculate variables
            $(window).trigger('resize');
  
            // Redraw carousel.
            $(this).trigger('carouselNext', [0.000001]);
            return true;
          }
  
  
          view.addClass('initialized');
          pressed = false;
          offset = target = 0;
          images = [];
          item_width = view.find('.carousel-item').first().innerWidth();
          item_height = view.find('.carousel-item').first().innerHeight();
          dim = item_width * 2 + options.padding;
  
          view.find('.carousel-item').each(function (i) {
            images.push($(this)[0]);
            if (showIndicators) {
              var $indicator = $('<li class="indicator-item"></li>');
  
              // Add active to first by default.
              if (i === 0) {
                $indicator.addClass('active');
              }
  
              // Handle clicks on indicators.
              $indicator.click(function (e) {
                e.stopPropagation();
  
                var index = $(this).index();
                cycleTo(index);
              });
              $indicators.append($indicator);
            }
          });
  
          if (showIndicators) {
            view.append($indicators);
          }
          count = images.length;
  
  
          function setupEvents() {
            if (typeof window.ontouchstart !== 'undefined') {
              view[0].addEventListener('touchstart', tap);
              view[0].addEventListener('touchmove', drag);
              view[0].addEventListener('touchend', release);
            }
            view[0].addEventListener('mousedown', tap);
            view[0].addEventListener('mousemove', drag);
            view[0].addEventListener('mouseup', release);
            view[0].addEventListener('mouseleave', release);
            view[0].addEventListener('click', click);
          }
  
          function xpos(e) {
            // touch event
            if (e.targetTouches && (e.targetTouches.length >= 1)) {
              return e.targetTouches[0].clientX;
            }
  
            // mouse event
            return e.clientX;
          }
  
          function ypos(e) {
            // touch event
            if (e.targetTouches && (e.targetTouches.length >= 1)) {
              return e.targetTouches[0].clientY;
            }
  
            // mouse event
            return e.clientY;
          }
  
          function wrap(x) {
            return (x >= count) ? (x % count) : (x < 0) ? wrap(count + (x % count)) : x;
          }
  
          function scroll(x) {
            // Track scrolling state
            scrolling = true;
            if (!view.hasClass('scrolling')) {
              view.addClass('scrolling');
            }
            if (scrollingTimeout != null) {
              window.clearTimeout(scrollingTimeout);
            }
            scrollingTimeout = window.setTimeout(function() {
              scrolling = false;
              view.removeClass('scrolling');
            }, options.duration);
  
            // Start actual scroll
            var i, half, delta, dir, tween, el, alignment, xTranslation;
            var lastCenter = center;
  
            offset = (typeof x === 'number') ? x : offset;
            center = Math.floor((offset + dim / 2) / dim);
            delta = offset - center * dim;
            dir = (delta < 0) ? 1 : -1;
            tween = -dir * delta * 2 / dim;
            half = count >> 1;
  
            if (!options.fullWidth) {
              alignment = 'translateX(' + (view[0].clientWidth - item_width) / 2 + 'px) ';
              alignment += 'translateY(' + (view[0].clientHeight - item_height) / 2 + 'px)';
            } else {
              alignment = 'translateX(0)';
            }
  
            // Set indicator active
            if (showIndicators) {
              var diff = (center % count);
              var activeIndicator = $indicators.find('.indicator-item.active');
              if (activeIndicator.index() !== diff) {
                activeIndicator.removeClass('active');
                $indicators.find('.indicator-item').eq(diff).addClass('active');
              }
            }
  
            // center
            // Don't show wrapped items.
            if (!options.noWrap || (center >= 0 && center < count)) {
              el = images[wrap(center)];
  
              // Add active class to center item.
              if (!$(el).hasClass('active')) {
                view.find('.carousel-item').removeClass('active');
                $(el).addClass('active');
              }
              el.style[xform] = alignment +
                ' translateX(' + (-delta / 2) + 'px)' +
                ' translateX(' + (dir * options.shift * tween * i) + 'px)' +
                ' translateZ(' + (options.dist * tween) + 'px)';
              el.style.zIndex = 0;
              if (options.fullWidth) { tweenedOpacity = 1; }
              else { tweenedOpacity = 1 - 0.2 * tween; }
              el.style.opacity = tweenedOpacity;
              el.style.display = 'block';
            }
  
            for (i = 1; i <= half; ++i) {
              // right side
              if (options.fullWidth) {
                zTranslation = options.dist;
                tweenedOpacity = (i === half && delta < 0) ? 1 - tween : 1;
              } else {
                zTranslation = options.dist * (i * 2 + tween * dir);
                tweenedOpacity = 1 - 0.2 * (i * 2 + tween * dir);
              }
              // Don't show wrapped items.
              if (!options.noWrap || center + i < count) {
                el = images[wrap(center + i)];
                el.style[xform] = alignment +
                  ' translateX(' + (options.shift + (dim * i - delta) / 2) + 'px)' +
                  ' translateZ(' + zTranslation + 'px)';
                el.style.zIndex = -i;
                el.style.opacity = tweenedOpacity;
                el.style.display = 'block';
              }
  
  
              // left side
              if (options.fullWidth) {
                zTranslation = options.dist;
                tweenedOpacity = (i === half && delta > 0) ? 1 - tween : 1;
              } else {
                zTranslation = options.dist * (i * 2 - tween * dir);
                tweenedOpacity = 1 - 0.2 * (i * 2 - tween * dir);
              }
              // Don't show wrapped items.
              if (!options.noWrap || center - i >= 0) {
                el = images[wrap(center - i)];
                el.style[xform] = alignment +
                  ' translateX(' + (-options.shift + (-dim * i - delta) / 2) + 'px)' +
                  ' translateZ(' + zTranslation + 'px)';
                el.style.zIndex = -i;
                el.style.opacity = tweenedOpacity;
                el.style.display = 'block';
              }
            }
  
            // center
            // Don't show wrapped items.
            if (!options.noWrap || (center >= 0 && center < count)) {
              el = images[wrap(center)];
              el.style[xform] = alignment +
                ' translateX(' + (-delta / 2) + 'px)' +
                ' translateX(' + (dir * options.shift * tween) + 'px)' +
                ' translateZ(' + (options.dist * tween) + 'px)';
              el.style.zIndex = 0;
              if (options.fullWidth) { tweenedOpacity = 1; }
              else { tweenedOpacity = 1 - 0.2 * tween; }
              el.style.opacity = tweenedOpacity;
              el.style.display = 'block';
            }
  
            // onCycleTo callback
            if (lastCenter !== center &&
                typeof(options.onCycleTo) === "function") {
              var $curr_item = view.find('.carousel-item').eq(wrap(center));
              options.onCycleTo.call(this, $curr_item, dragged);
            }
          }
  
          function track() {
            var now, elapsed, delta, v;
  
            now = Date.now();
            elapsed = now - timestamp;
            timestamp = now;
            delta = offset - frame;
            frame = offset;
  
            v = 1000 * delta / (1 + elapsed);
            velocity = 0.8 * v + 0.2 * velocity;
          }
  
          function autoScroll() {
            var elapsed, delta;
  
            if (amplitude) {
              elapsed = Date.now() - timestamp;
              delta = amplitude * Math.exp(-elapsed / options.duration);
              if (delta > 2 || delta < -2) {
                  scroll(target - delta);
                  requestAnimationFrame(autoScroll);
              } else {
                  scroll(target);
              }
            }
          }
  
          function click(e) {
            // Disable clicks if carousel was dragged.
            if (dragged) {
              e.preventDefault();
              e.stopPropagation();
              return false;
  
            } else if (!options.fullWidth) {
              var clickedIndex = $(e.target).closest('.carousel-item').index();
              var diff = (center % count) - clickedIndex;
  
              // Disable clicks if carousel was shifted by click
              if (diff !== 0) {
                e.preventDefault();
                e.stopPropagation();
              }
              cycleTo(clickedIndex);
            }
          }
  
          function cycleTo(n) {
            var diff = (center % count) - n;
  
            // Account for wraparound.
            if (!options.noWrap) {
              if (diff < 0) {
                if (Math.abs(diff + count) < Math.abs(diff)) { diff += count; }
  
              } else if (diff > 0) {
                if (Math.abs(diff - count) < diff) { diff -= count; }
              }
            }
  
            // Call prev or next accordingly.
            if (diff < 0) {
              view.trigger('carouselNext', [Math.abs(diff)]);
  
            } else if (diff > 0) {
              view.trigger('carouselPrev', [diff]);
            }
          }
  
          function tap(e) {
            e.preventDefault();
            pressed = true;
            dragged = false;
            vertical_dragged = false;
            reference = xpos(e);
            referenceY = ypos(e);
  
            velocity = amplitude = 0;
            frame = offset;
            timestamp = Date.now();
            clearInterval(ticker);
            ticker = setInterval(track, 100);
          }
  
          function drag(e) {
            var x, delta, deltaY;
            if (pressed) {
              x = xpos(e);
              y = ypos(e);
              delta = reference - x;
              deltaY = Math.abs(referenceY - y);
              if (deltaY < 30 && !vertical_dragged) {
                // If vertical scrolling don't allow dragging.
                if (delta > 2 || delta < -2) {
                  dragged = true;
                  reference = x;
                  scroll(offset + delta);
                }
  
              } else if (dragged) {
                // If dragging don't allow vertical scroll.
                e.preventDefault();
                e.stopPropagation();
                return false;
  
              } else {
                // Vertical scrolling.
                vertical_dragged = true;
              }
            }
  
            if (dragged) {
              // If dragging don't allow vertical scroll.
              e.preventDefault();
              e.stopPropagation();
              return false;
            }
          }
  
          function release(e) {
            if (pressed) {
              pressed = false;
            } else {
              return;
            }
  
            clearInterval(ticker);
            target = offset;
            if (velocity > 10 || velocity < -10) {
              amplitude = 0.9 * velocity;
              target = offset + amplitude;
            }
            target = Math.round(target / dim) * dim;
  
            // No wrap of items.
            if (options.noWrap) {
              if (target >= dim * (count - 1)) {
                target = dim * (count - 1);
              } else if (target < 0) {
                target = 0;
              }
            }
            amplitude = target - offset;
            timestamp = Date.now();
            requestAnimationFrame(autoScroll);
  
            if (dragged) {
              e.preventDefault();
              e.stopPropagation();
            }
            return false;
          }
  
          xform = 'transform';
          ['webkit', 'Moz', 'O', 'ms'].every(function (prefix) {
            var e = prefix + 'Transform';
            if (typeof document.body.style[e] !== 'undefined') {
              xform = e;
              return false;
            }
            return true;
          });
  
  
          $(window).off('resize.carousel-'+uniqueNamespace).on('resize.carousel-'+uniqueNamespace, function() {
            if (options.fullWidth) {
              item_width = view.find('.carousel-item').first().innerWidth();
              item_height = view.find('.carousel-item').first().innerHeight();
              dim = item_width * 2 + options.padding;
              offset = center * 2 * item_width;
              target = offset;
            } else {
              scroll();
            }
          });
  
          setupEvents();
          scroll(offset);
  
          $(this).on('carouselNext', function(e, n) {
            if (n === undefined) {
              n = 1;
            }
            target = (dim * Math.round(offset / dim)) + (dim * n);
            if (offset !== target) {
              amplitude = target - offset;
              timestamp = Date.now();
              requestAnimationFrame(autoScroll);
            }
          });
  
          $(this).on('carouselPrev', function(e, n) {
            if (n === undefined) {
              n = 1;
            }
            target = (dim * Math.round(offset / dim)) - (dim * n);
            if (offset !== target) {
              amplitude = target - offset;
              timestamp = Date.now();
              requestAnimationFrame(autoScroll);
            }
          });
  
          $(this).on('carouselSet', function(e, n) {
            if (n === undefined) {
              n = 0;
            }
            cycleTo(n);
          });
  
        });
  
  
  
      },
      next : function(n) {
        $(this).trigger('carouselNext', [n]);
      },
      prev : function(n) {
        $(this).trigger('carouselPrev', [n]);
      },
      set : function(n) {
        $(this).trigger('carouselSet', [n]);
      }
    };
  
  
      $.fn.carousel = function(methodOrOptions) {
        if ( methods[methodOrOptions] ) {
          return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));
        } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
          // Default to "init"
          return methods.init.apply( this, arguments );
        } else {
          $.error( 'Method ' +  methodOrOptions + ' does not exist on jQuery.carousel' );
        }
      }; // Plugin end
  }( jQuery ));;(function ($) {
  
    var methods = {
    init: function (options) {
      return this.each(function() {
      var origin = $('#'+$(this).attr('data-activates'));
      var screen = $('body');
  
      // Creating tap target
      var tapTargetEl = $(this);
      var tapTargetWrapper = tapTargetEl.parent('.tap-target-wrapper');
      var tapTargetWave = tapTargetWrapper.find('.tap-target-wave');
      var tapTargetOriginEl = tapTargetWrapper.find('.tap-target-origin');
      var tapTargetContentEl = tapTargetEl.find('.tap-target-content');
  
      // Creating wrapper
      if (!tapTargetWrapper.length) {
        tapTargetWrapper = tapTargetEl.wrap($('<div class="tap-target-wrapper"></div>')).parent();
      }
  
      // Creating content
      if (!tapTargetContentEl.length) {
        tapTargetContentEl = $('<div class="tap-target-content"></div>');
        tapTargetEl.append(tapTargetContentEl);
      }
  
      // Creating foreground wave
      if (!tapTargetWave.length) {
        tapTargetWave = $('<div class="tap-target-wave"></div>');
  
        // Creating origin
        if (!tapTargetOriginEl.length) {
          tapTargetOriginEl = origin.clone(true, true);
          tapTargetOriginEl.addClass('tap-target-origin');
          tapTargetOriginEl.removeAttr('id');
          tapTargetOriginEl.removeAttr('style');
          tapTargetWave.append(tapTargetOriginEl);
        }
  
        tapTargetWrapper.append(tapTargetWave);
      }
  
      // Open
      var openTapTarget = function() {
        if (tapTargetWrapper.is('.open')) {
          return;
        }
  
        // Adding open class
        tapTargetWrapper.addClass('open');
  
        setTimeout(function() {
          tapTargetOriginEl.off('click.tapTarget').on('click.tapTarget', function(e) {
            closeTapTarget();
            tapTargetOriginEl.off('click.tapTarget');
          });
  
          $(document).off('click.tapTarget').on('click.tapTarget', function(e) {
            closeTapTarget();
            $(document).off('click.tapTarget');
          });
  
          var throttledCalc = Materialize.throttle(function() {
            calculateTapTarget();
          }, 200);
          $(window).off('resize.tapTarget').on('resize.tapTarget', throttledCalc);
        }, 0);
      };
  
      // Close
      var closeTapTarget = function(){
        if (!tapTargetWrapper.is('.open')) {
          return;
        }
  
        tapTargetWrapper.removeClass('open');
        tapTargetOriginEl.off('click.tapTarget')
        $(document).off('click.tapTarget');
        $(window).off('resize.tapTarget');
      };
  
      // Pre calculate
      var calculateTapTarget = function() {
        // Element or parent is fixed position?
        var isFixed = origin.css('position') === 'fixed';
        if (!isFixed) {
          var parents = origin.parents();
          for(var i = 0; i < parents.length; i++) {
            isFixed = $(parents[i]).css('position') == 'fixed';
            if (isFixed) {
              break;
            }
          }
        }
  
        // Calculating origin
        var originWidth = origin.outerWidth();
        var originHeight = origin.outerHeight();
        var originTop = isFixed ? origin.offset().top - $(document).scrollTop() : origin.offset().top;
        var originLeft = isFixed ? origin.offset().left - $(document).scrollLeft() : origin.offset().left;
  
        // Calculating screen
        var windowWidth = $(window).width();
        var windowHeight = $(window).height();
        var centerX = windowWidth / 2;
        var centerY = windowHeight / 2;
        var isLeft = originLeft <= centerX;
        var isRight = originLeft > centerX;
        var isTop = originTop <= centerY;
        var isBottom = originTop > centerY;
        var isCenterX = originLeft >= windowWidth*0.25 && originLeft <= windowWidth*0.75;
        var isCenterY = originTop >= windowHeight*0.25 && originTop <= windowHeight*0.75;
  
        // Calculating tap target
        var tapTargetWidth = tapTargetEl.outerWidth();
        var tapTargetHeight = tapTargetEl.outerHeight();
        var tapTargetTop = originTop + originHeight/2 - tapTargetHeight/2;
        var tapTargetLeft = originLeft + originWidth/2 - tapTargetWidth/2;
        var tapTargetPosition = isFixed ? 'fixed' : 'absolute';
  
        // Calculating content
        var tapTargetTextWidth = isCenterX ? tapTargetWidth : tapTargetWidth/2 + originWidth;
        var tapTargetTextHeight = tapTargetHeight/2;
        var tapTargetTextTop = isTop ? tapTargetHeight/2 : 0;
        var tapTargetTextBottom = 0;
        var tapTargetTextLeft = isLeft && !isCenterX ? tapTargetWidth/2 - originWidth : 0;
        var tapTargetTextRight = 0;
        var tapTargetTextPadding = originWidth;
        var tapTargetTextAlign = isBottom ? 'bottom' : 'top';
  
        // Calculating wave
        var tapTargetWaveWidth = originWidth > originHeight ? originWidth*2 : originWidth*2;
        var tapTargetWaveHeight = tapTargetWaveWidth;
        var tapTargetWaveTop = tapTargetHeight/2 - tapTargetWaveHeight/2;
        var tapTargetWaveLeft = tapTargetWidth/2 - tapTargetWaveWidth/2;
  
        // Setting tap target
        var tapTargetWrapperCssObj = {};
        tapTargetWrapperCssObj.top = isTop ? tapTargetTop : '';
        tapTargetWrapperCssObj.right = isRight ? windowWidth - tapTargetLeft - tapTargetWidth : '';
        tapTargetWrapperCssObj.bottom = isBottom ? windowHeight - tapTargetTop - tapTargetHeight : '';
        tapTargetWrapperCssObj.left = isLeft ? tapTargetLeft : '';
        tapTargetWrapperCssObj.position = tapTargetPosition;
        tapTargetWrapper.css(tapTargetWrapperCssObj);
  
        // Setting content
        tapTargetContentEl.css({
          width: tapTargetTextWidth,
          height: tapTargetTextHeight,
          top: tapTargetTextTop,
          right: tapTargetTextRight,
          bottom: tapTargetTextBottom,
          left: tapTargetTextLeft,
          padding: tapTargetTextPadding,
          verticalAlign: tapTargetTextAlign
        });
  
        // Setting wave
        tapTargetWave.css({
          top: tapTargetWaveTop,
          left: tapTargetWaveLeft,
          width: tapTargetWaveWidth,
          height: tapTargetWaveHeight
        });
      }
  
      if (options == 'open') {
        calculateTapTarget();
        openTapTarget();
      }
  
      if (options == 'close')
        closeTapTarget();
      });
    },
    open: function() {},
    close: function() {}
    };
  
    $.fn.tapTarget = function(methodOrOptions) {
    if (methods[methodOrOptions] || typeof methodOrOptions === 'object')
      return methods.init.apply( this, arguments );
  
    $.error( 'Method ' +  methodOrOptions + ' does not exist on jQuery.tap-target' );
    };
  
  }( jQuery ));
  
  
  !function(a,b){"use strict";"function"==typeof define&&define.amd?define(["jquery"],function(c){return b(c,a,a.document)}):"object"==typeof module&&module.exports?module.exports=b(require("jquery"),a,a.document):b(jQuery,a,a.document)}("undefined"!=typeof window?window:this,function(a,b,c,d){"use strict";function e(c,d,e,f){if(r===c&&(e=!1),z===!0)return!0;if(n[c]){if(w=!1,e&&G.before(c,o),s=1,E=m[c],C===!1&&r>c&&f===!1&&p[c]&&(s=parseInt(o[c].outerHeight()/u.height()),E=parseInt(m[c])+(o[c].outerHeight()-u.height())),G.updateHash&&G.sectionName&&(C!==!0||0!==c))if(history.pushState)try{history.replaceState(null,null,n[c])}catch(a){b.console&&console.warn("Scrollify warning: Page must be hosted to manipulate the hash value.")}else b.location.hash=n[c];if(C&&(G.afterRender(),C=!1),r=c,d)a(G.target).stop().scrollTop(E),e&&G.after(c,o);else{if(x=!0,a().velocity?a(G.target).stop().velocity("scroll",{duration:G.scrollSpeed,easing:G.easing,offset:E,mobileHA:!1}):a(G.target).stop().animate({scrollTop:E},G.scrollSpeed,G.easing),b.location.hash.length&&G.sectionName&&b.console)try{a(b.location.hash).length&&console.warn("Scrollify warning: ID matches hash value - this will cause the page to anchor.")}catch(a){}a(G.target).promise().done(function(){x=!1,C=!1,e&&G.after(c,o)})}}}function f(a){function b(b){for(var c=0,d=a.slice(Math.max(a.length-b,1)),e=0;e<d.length;e++)c+=d[e];return Math.ceil(c/b)}var c=b(10),d=b(70);return c>=d}function g(a,b){for(var c=n.length;c>=0;c--)"string"==typeof a?n[c]===a&&(q=c,e(c,b,!0,!0)):c===a&&(q=c,e(c,b,!0,!0))}var h,i,j,k,l,m=[],n=[],o=[],p=[],q=0,r=0,s=1,t=!1,u=a(b),v=u.scrollTop(),w=!1,x=!1,y=!1,z=!1,A=[],B=(new Date).getTime(),C=!0,D=!1,E=0,F="onwheel"in c?"wheel":c.onmousewheel!==d?"mousewheel":"DOMMouseScroll",G={section:".section",sectionName:"section-name",interstitialSection:"",easing:"easeOutExpo",scrollSpeed:1100,offset:0,scrollbars:!0,target:"html,body",standardScrollElements:!1,setHeights:!0,overflowScroll:!0,updateHash:!0,touchScroll:!0,before:function(){},after:function(){},afterResize:function(){},afterRender:function(){}},H=function(d){function g(b){a().velocity?a(G.target).stop().velocity("scroll",{duration:G.scrollSpeed,easing:G.easing,offset:b,mobileHA:!1}):a(G.target).stop().animate({scrollTop:b},G.scrollSpeed,G.easing)}function r(b){b&&(v=u.scrollTop());var c=G.section;p=[],G.interstitialSection.length&&(c+=","+G.interstitialSection),G.scrollbars===!1&&(G.overflowScroll=!1),a(c).each(function(b){var c=a(this);G.setHeights?c.is(G.interstitialSection)?p[b]=!1:c.css("height","auto").outerHeight()<u.height()||"hidden"===c.css("overflow")?(c.css({height:u.height()}),p[b]=!1):(c.css({height:c.height()}),G.overflowScroll?p[b]=!0:p[b]=!1):c.outerHeight()<u.height()||G.overflowScroll===!1?p[b]=!1:p[b]=!0}),b&&u.scrollTop(v)}function C(c,d){var f=G.section;G.interstitialSection.length&&(f+=","+G.interstitialSection),m=[],n=[],o=[],a(f).each(function(c){var d=a(this);c>0?m[c]=parseInt(d.offset().top)+G.offset:m[c]=parseInt(d.offset().top),G.sectionName&&d.data(G.sectionName)?n[c]="#"+d.data(G.sectionName).toString().replace(/ /g,"-"):d.is(G.interstitialSection)===!1?n[c]="#"+(c+1):(n[c]="#",c===a(f).length-1&&c>1&&(m[c]=m[c-1]+(parseInt(a(a(f)[c-1]).outerHeight())-parseInt(a(b).height()))+parseInt(d.outerHeight()))),o[c]=d;try{a(n[c]).length&&b.console&&console.warn("Scrollify warning: Section names can't match IDs - this will cause the browser to anchor.")}catch(a){}b.location.hash===n[c]&&(q=c,t=!0)}),!0===c&&e(q,!1,!1,!1)}function E(){return!p[q]||(v=u.scrollTop(),!(v>parseInt(m[q])))}function H(){return!p[q]||(v=u.scrollTop(),!(v<parseInt(m[q])+(o[q].outerHeight()-u.height())-28))}D=!0,a.easing.easeOutExpo=function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},j={handleMousedown:function(){return z===!0||(w=!1,void(y=!1))},handleMouseup:function(){return z===!0||(w=!0,void(y&&j.calculateNearest(!1,!0)))},handleScroll:function(){return z===!0||(h&&clearTimeout(h),void(h=setTimeout(function(){return y=!0,w!==!1&&(w=!1,void j.calculateNearest(!1,!0))},200)))},calculateNearest:function(a,b){v=u.scrollTop();for(var c,d=1,f=m.length,g=0,h=Math.abs(m[0]-v);d<f;d++)c=Math.abs(m[d]-v),c<h&&(h=c,g=d);(H()&&g>q||E())&&(q=g,e(g,a,b,!1))},wheelHandler:function(c){if(z===!0)return!0;if(G.standardScrollElements&&(a(c.target).is(G.standardScrollElements)||a(c.target).closest(G.standardScrollElements).length))return!0;p[q]||c.preventDefault();var d=(new Date).getTime();c=c||b.event;var g=c.originalEvent.wheelDelta||-c.originalEvent.deltaY||-c.originalEvent.detail,h=Math.max(-1,Math.min(1,g));if(A.length>149&&A.shift(),A.push(Math.abs(g)),d-B>200&&(A=[]),B=d,x)return!1;if(h<0){if(q<m.length-1&&H()){if(!f(A))return!1;c.preventDefault(),q++,x=!0,e(q,!1,!0,!1)}}else if(h>0&&q>0&&E()){if(!f(A))return!1;c.preventDefault(),q--,x=!0,e(q,!1,!0,!1)}},keyHandler:function(a){return z===!0||x!==!0&&void(38==a.keyCode||33==a.keyCode?q>0&&E()&&(a.preventDefault(),q--,e(q,!1,!0,!1)):40!=a.keyCode&&34!=a.keyCode||q<m.length-1&&H()&&(a.preventDefault(),q++,e(q,!1,!0,!1)))},init:function(){G.scrollbars?(u.on("mousedown",j.handleMousedown),u.on("mouseup",j.handleMouseup),u.on("scroll",j.handleScroll)):a("body").css({overflow:"hidden"}),u.on(F,j.wheelHandler),u.on("keydown",j.keyHandler)}},k={touches:{touchstart:{y:-1,x:-1},touchmove:{y:-1,x:-1},touchend:!1,direction:"undetermined"},options:{distance:30,timeGap:800,timeStamp:(new Date).getTime()},touchHandler:function(b){if(z===!0)return!0;if(G.standardScrollElements&&(a(b.target).is(G.standardScrollElements)||a(b.target).closest(G.standardScrollElements).length))return!0;var c;if("undefined"!=typeof b&&"undefined"!=typeof b.touches)switch(c=b.touches[0],b.type){case"touchstart":k.touches.touchstart.y=c.pageY,k.touches.touchmove.y=-1,k.touches.touchstart.x=c.pageX,k.touches.touchmove.x=-1,k.options.timeStamp=(new Date).getTime(),k.touches.touchend=!1;case"touchmove":k.touches.touchmove.y=c.pageY,k.touches.touchmove.x=c.pageX,k.touches.touchstart.y!==k.touches.touchmove.y&&Math.abs(k.touches.touchstart.y-k.touches.touchmove.y)>Math.abs(k.touches.touchstart.x-k.touches.touchmove.x)&&(b.preventDefault(),k.touches.direction="y",k.options.timeStamp+k.options.timeGap<(new Date).getTime()&&0==k.touches.touchend&&(k.touches.touchend=!0,k.touches.touchstart.y>-1&&Math.abs(k.touches.touchmove.y-k.touches.touchstart.y)>k.options.distance&&(k.touches.touchstart.y<k.touches.touchmove.y?k.up():k.down())));break;case"touchend":k.touches[b.type]===!1&&(k.touches[b.type]=!0,k.touches.touchstart.y>-1&&k.touches.touchmove.y>-1&&"y"===k.touches.direction&&(Math.abs(k.touches.touchmove.y-k.touches.touchstart.y)>k.options.distance&&(k.touches.touchstart.y<k.touches.touchmove.y?k.up():k.down()),k.touches.touchstart.y=-1,k.touches.touchstart.x=-1,k.touches.direction="undetermined"))}},down:function(){q<m.length-1&&(H()&&q<m.length-1?(q++,e(q,!1,!0,!1)):Math.floor(o[q].height()/u.height())>s?(g(parseInt(m[q])+u.height()*s),s+=1):g(parseInt(m[q])+(o[q].outerHeight()-u.height())))},up:function(){q>=0&&(E()&&q>0?(q--,e(q,!1,!0,!1)):s>2?(s-=1,g(parseInt(m[q])+u.height()*s)):(s=1,g(parseInt(m[q]))))},init:function(){c.addEventListener&&G.touchScroll&&(c.addEventListener("touchstart",k.touchHandler,!1),c.addEventListener("touchmove",k.touchHandler,!1),c.addEventListener("touchend",k.touchHandler,!1))}},l={refresh:function(a,b){clearTimeout(i),i=setTimeout(function(){r(!0),C(b,!1),a&&G.afterResize()},400)},handleUpdate:function(){l.refresh(!1,!1)},handleResize:function(){l.refresh(!0,!1)},handleOrientation:function(){l.refresh(!0,!0)}},G=a.extend(G,d),r(!1),C(!1,!0),!0===t?e(q,!1,!0,!0):setTimeout(function(){j.calculateNearest(!0,!1)},200),m.length&&(j.init(),k.init(),u.on("resize",l.handleResize),c.addEventListener&&b.addEventListener("orientationchange",l.handleOrientation,!1))};return H.move=function(b){return b!==d&&(b.originalEvent&&(b=a(this).attr("href")),void g(b,!1))},H.instantMove=function(a){return a!==d&&void g(a,!0)},H.next=function(){q<n.length&&(q+=1,e(q,!1,!0,!0))},H.previous=function(){q>0&&(q-=1,e(q,!1,!0,!0))},H.instantNext=function(){q<n.length&&(q+=1,e(q,!0,!0,!0))},H.instantPrevious=function(){q>0&&(q-=1,e(q,!0,!0,!0))},H.destroy=function(){return!!D&&(G.setHeights&&a(G.section).each(function(){a(this).css("height","auto")}),u.off("resize",l.handleResize),G.scrollbars&&(u.off("mousedown",j.handleMousedown),u.off("mouseup",j.handleMouseup),u.off("scroll",j.handleScroll)),u.off(F,j.wheelHandler),u.off("keydown",j.keyHandler),c.addEventListener&&G.touchScroll&&(c.removeEventListener("touchstart",k.touchHandler,!1),c.removeEventListener("touchmove",k.touchHandler,!1),c.removeEventListener("touchend",k.touchHandler,!1)),m=[],n=[],o=[],void(p=[]))},H.update=function(){return!!D&&void l.handleUpdate()},H.current=function(){return o[q]},H.disable=function(){z=!0},H.enable=function(){z=!1,D&&j.calculateNearest(!1,!1)},H.isDisabled=function(){return z},H.setOptions=function(c){return!!D&&void("object"==typeof c?(G=a.extend(G,c),l.handleUpdate()):b.console&&console.warn("Scrollify warning: setOptions expects an object."))},a.scrollify=H,H});
  
  /*!
   * parallax.js v1.4.2 (http://pixelcog.github.io/parallax.js/)
   * @copyright 2016 PixelCog, Inc.
   * @license MIT (https://github.com/pixelcog/parallax.js/blob/master/LICENSE)
   */
  
  ;(function ( $, window, document, undefined ) {
  
    // Polyfill for requestAnimationFrame
    // via: https://gist.github.com/paulirish/1579671
  
    (function() {
      var lastTime = 0;
      var vendors = ['ms', 'moz', 'webkit', 'o'];
      for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
        window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
        window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']
          || window[vendors[x]+'CancelRequestAnimationFrame'];
      }
  
      if (!window.requestAnimationFrame)
        window.requestAnimationFrame = function(callback) {
          var currTime = new Date().getTime();
          var timeToCall = Math.max(0, 16 - (currTime - lastTime));
          var id = window.setTimeout(function() { callback(currTime + timeToCall); },
            timeToCall);
          lastTime = currTime + timeToCall;
          return id;
        };
  
      if (!window.cancelAnimationFrame)
        window.cancelAnimationFrame = function(id) {
          clearTimeout(id);
        };
    }());
  
  
    // Parallax Constructor
  
    function Parallax(element, options) {
      var self = this;
  
      if (typeof options == 'object') {
        delete options.refresh;
        delete options.render;
        $.extend(this, options);
      }
  
      this.$element = $(element);
  
      if (!this.imageSrc && this.$element.is('img')) {
        this.imageSrc = this.$element.attr('src');
      }
  
      var positions = (this.position + '').toLowerCase().match(/\S+/g) || [];
  
      if (positions.length < 1) {
        positions.push('center');
      }
      if (positions.length == 1) {
        positions.push(positions[0]);
      }
  
      if (positions[0] == 'top' || positions[0] == 'bottom' || positions[1] == 'left' || positions[1] == 'right') {
        positions = [positions[1], positions[0]];
      }
  
      if (this.positionX != undefined) positions[0] = this.positionX.toLowerCase();
      if (this.positionY != undefined) positions[1] = this.positionY.toLowerCase();
  
      self.positionX = positions[0];
      self.positionY = positions[1];
  
      if (this.positionX != 'left' && this.positionX != 'right') {
        if (isNaN(parseInt(this.positionX))) {
          this.positionX = 'center';
        } else {
          this.positionX = parseInt(this.positionX);
        }
      }
  
      if (this.positionY != 'top' && this.positionY != 'bottom') {
        if (isNaN(parseInt(this.positionY))) {
          this.positionY = 'center';
        } else {
          this.positionY = parseInt(this.positionY);
        }
      }
  
      this.position =
        this.positionX + (isNaN(this.positionX)? '' : 'px') + ' ' +
        this.positionY + (isNaN(this.positionY)? '' : 'px');
  
      if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {
        if (this.imageSrc && this.iosFix && !this.$element.is('img')) {
          this.$element.css({
            backgroundImage: 'url(' + this.imageSrc + ')',
            backgroundSize: 'cover',
            backgroundPosition: this.position
          });
        }
        return this;
      }
  
      if (navigator.userAgent.match(/(Android)/)) {
        if (this.imageSrc && this.androidFix && !this.$element.is('img')) {
          this.$element.css({
            backgroundImage: 'url(' + this.imageSrc + ')',
            backgroundSize: 'cover',
            backgroundPosition: this.position
          });
        }
        return this;
      }
  
      this.$mirror = $('<div />').prependTo('body');
  
      var slider = this.$element.find('>.parallax-slider');
      var sliderExisted = false;
  
      if (slider.length == 0)
        this.$slider = $('<img />').prependTo(this.$mirror);
      else {
        this.$slider = slider.prependTo(this.$mirror)
        sliderExisted = true;
      }
  
      this.$mirror.addClass('parallax-mirror').css({
        visibility: 'hidden',
        zIndex: this.zIndex,
        position: 'fixed',
        top: 0,
        left: 0,
        overflow: 'hidden'
      });
  
      this.$slider.addClass('parallax-slider').one('load', function() {
        if (!self.naturalHeight || !self.naturalWidth) {
          self.naturalHeight = this.naturalHeight || this.height || 1;
          self.naturalWidth  = this.naturalWidth  || this.width  || 1;
        }
        self.aspectRatio = self.naturalWidth / self.naturalHeight;
  
        Parallax.isSetup || Parallax.setup();
        Parallax.sliders.push(self);
        Parallax.isFresh = false;
        Parallax.requestRender();
      });
  
      if (!sliderExisted)
        this.$slider[0].src = this.imageSrc;
  
      if (this.naturalHeight && this.naturalWidth || this.$slider[0].complete || slider.length > 0) {
        this.$slider.trigger('load');
      }
  
    };
  
  
    // Parallax Instance Methods
  
    $.extend(Parallax.prototype, {
      speed:    0.2,
      bleed:    0,
      zIndex:   -100,
      iosFix:   true,
      androidFix: true,
      position: 'center',
      overScrollFix: false,
  
      refresh: function() {
        this.boxWidth        = this.$element.outerWidth();
        this.boxHeight       = this.$element.outerHeight() + this.bleed * 2;
        this.boxOffsetTop    = this.$element.offset().top - this.bleed;
        this.boxOffsetLeft   = this.$element.offset().left;
        this.boxOffsetBottom = this.boxOffsetTop + this.boxHeight;
  
        var winHeight = Parallax.winHeight;
        var docHeight = Parallax.docHeight;
        var maxOffset = Math.min(this.boxOffsetTop, docHeight - winHeight);
        var minOffset = Math.max(this.boxOffsetTop + this.boxHeight - winHeight, 0);
        var imageHeightMin = this.boxHeight + (maxOffset - minOffset) * (1 - this.speed) | 0;
        var imageOffsetMin = (this.boxOffsetTop - maxOffset) * (1 - this.speed) | 0;
  
        if (imageHeightMin * this.aspectRatio >= this.boxWidth) {
          this.imageWidth    = imageHeightMin * this.aspectRatio | 0;
          this.imageHeight   = imageHeightMin;
          this.offsetBaseTop = imageOffsetMin;
  
          var margin = this.imageWidth - this.boxWidth;
  
          if (this.positionX == 'left') {
            this.offsetLeft = 0;
          } else if (this.positionX == 'right') {
            this.offsetLeft = - margin;
          } else if (!isNaN(this.positionX)) {
            this.offsetLeft = Math.max(this.positionX, - margin);
          } else {
            this.offsetLeft = - margin / 2 | 0;
          }
        } else {
          this.imageWidth    = this.boxWidth;
          this.imageHeight   = this.boxWidth / this.aspectRatio | 0;
          this.offsetLeft    = 0;
  
          var margin = this.imageHeight - imageHeightMin;
  
          if (this.positionY == 'top') {
            this.offsetBaseTop = imageOffsetMin;
          } else if (this.positionY == 'bottom') {
            this.offsetBaseTop = imageOffsetMin - margin;
          } else if (!isNaN(this.positionY)) {
            this.offsetBaseTop = imageOffsetMin + Math.max(this.positionY, - margin);
          } else {
            this.offsetBaseTop = imageOffsetMin - margin / 2 | 0;
          }
        }
      },
  
      render: function() {
        var scrollTop    = Parallax.scrollTop;
        var scrollLeft   = Parallax.scrollLeft;
        var overScroll   = this.overScrollFix ? Parallax.overScroll : 0;
        var scrollBottom = scrollTop + Parallax.winHeight;
  
        if (this.boxOffsetBottom > scrollTop && this.boxOffsetTop <= scrollBottom) {
          this.visibility = 'visible';
          this.mirrorTop = this.boxOffsetTop  - scrollTop;
          this.mirrorLeft = this.boxOffsetLeft - scrollLeft;
          this.offsetTop = this.offsetBaseTop - this.mirrorTop * (1 - this.speed);
        } else {
          this.visibility = 'hidden';
        }
  
        this.$mirror.css({
          transform: 'translate3d(0px, 0px, 0px)',
          visibility: this.visibility,
          top: this.mirrorTop - overScroll,
          left: this.mirrorLeft,
          height: this.boxHeight,
          width: this.boxWidth
        });
  
        this.$slider.css({
          transform: 'translate3d(0px, 0px, 0px)',
          position: 'absolute',
          top: this.offsetTop,
          left: this.offsetLeft,
          height: this.imageHeight,
          width: this.imageWidth,
          maxWidth: 'none'
        });
      }
    });
  
  
    // Parallax Static Methods
  
    $.extend(Parallax, {
      scrollTop:    0,
      scrollLeft:   0,
      winHeight:    0,
      winWidth:     0,
      docHeight:    1 << 30,
      docWidth:     1 << 30,
      sliders:      [],
      isReady:      false,
      isFresh:      false,
      isBusy:       false,
  
      setup: function() {
        if (this.isReady) return;
  
        var $doc = $(document), $win = $(window);
  
        var loadDimensions = function() {
          Parallax.winHeight = $win.height();
          Parallax.winWidth  = $win.width();
          Parallax.docHeight = $doc.height();
          Parallax.docWidth  = $doc.width();
        };
  
        var loadScrollPosition = function() {
          var winScrollTop  = $win.scrollTop();
          var scrollTopMax  = Parallax.docHeight - Parallax.winHeight;
          var scrollLeftMax = Parallax.docWidth  - Parallax.winWidth;
          Parallax.scrollTop  = Math.max(0, Math.min(scrollTopMax,  winScrollTop));
          Parallax.scrollLeft = Math.max(0, Math.min(scrollLeftMax, $win.scrollLeft()));
          Parallax.overScroll = Math.max(winScrollTop - scrollTopMax, Math.min(winScrollTop, 0));
        };
  
        $win.on('resize.px.parallax load.px.parallax', function() {
            loadDimensions();
            Parallax.isFresh = false;
            Parallax.requestRender();
          })
          .on('scroll.px.parallax load.px.parallax', function() {
            loadScrollPosition();
            Parallax.requestRender();
          });
  
        loadDimensions();
        loadScrollPosition();
  
        this.isReady = true;
      },
  
      configure: function(options) {
        if (typeof options == 'object') {
          delete options.refresh;
          delete options.render;
          $.extend(this.prototype, options);
        }
      },
  
      refresh: function() {
        $.each(this.sliders, function(){ this.refresh() });
        this.isFresh = true;
      },
  
      render: function() {
        this.isFresh || this.refresh();
        $.each(this.sliders, function(){ this.render() });
      },
  
      requestRender: function() {
        var self = this;
  
        if (!this.isBusy) {
          this.isBusy = true;
          window.requestAnimationFrame(function() {
            self.render();
            self.isBusy = false;
          });
        }
      },
      destroy: function(el){
        var i,
            parallaxElement = $(el).data('px.parallax');
        parallaxElement.$mirror.remove();
        for(i=0; i < this.sliders.length; i+=1){
          if(this.sliders[i] == parallaxElement){
            this.sliders.splice(i, 1);
          }
        }
        $(el).data('px.parallax', false);
        if(this.sliders.length === 0){
          $(window).off('scroll.px.parallax resize.px.parallax load.px.parallax');
          this.isReady = false;
          Parallax.isSetup = false;
        }
      }
    });
  
  
    // Parallax Plugin Definition
  
    function Plugin(option) {
      return this.each(function () {
        var $this = $(this);
        var options = typeof option == 'object' && option;
  
        if (this == window || this == document || $this.is('body')) {
          Parallax.configure(options);
        }
        else if (!$this.data('px.parallax')) {
          options = $.extend({}, $this.data(), options);
          $this.data('px.parallax', new Parallax(this, options));
        }
        else if (typeof option == 'object')
        {
          $.extend($this.data('px.parallax'), options);
        }
        if (typeof option == 'string') {
          if(option == 'destroy'){
              Parallax['destroy'](this);
          }else{
            Parallax[option]();
          }
        }
      })
    };
  
    var old = $.fn.parallax;
  
    $.fn.parallax             = Plugin;
    $.fn.parallax.Constructor = Parallax;
  
  
    // Parallax No Conflict
  
    $.fn.parallax.noConflict = function () {
      $.fn.parallax = old;
      return this;
    };
  
  
    // Parallax Data-API
  
    $(document).on('ready.px.parallax.data-api', function () {
      $('[data-parallax="scroll"]').parallax();
    });
  
  }(jQuery, window, document));
  
  
  /* jquery.nicescroll 3.6.8 InuYaksa*2015 MIT http://nicescroll.areaaperta.com */(function(f){"function"===typeof define&&define.amd?define(["jquery"],f):"object"===typeof exports?module.exports=f(require("jquery")):f(jQuery)})(function(f){var B=!1,F=!1,O=0,P=2E3,A=0,J=["webkit","ms","moz","o"],v=window.requestAnimationFrame||!1,w=window.cancelAnimationFrame||!1;if(!v)for(var Q in J){var G=J[Q];if(v=window[G+"RequestAnimationFrame"]){w=window[G+"CancelAnimationFrame"]||window[G+"CancelRequestAnimationFrame"];break}}var x=window.MutationObserver||window.WebKitMutationObserver||
  !1,K={zindex:"auto",cursoropacitymin:0,cursoropacitymax:1,cursorcolor:"#424242",cursorwidth:"6px",cursorborder:"1px solid #fff",cursorborderradius:"5px",scrollspeed:60,mousescrollstep:24,touchbehavior:!1,hwacceleration:!0,usetransition:!0,boxzoom:!1,dblclickzoom:!0,gesturezoom:!0,grabcursorenabled:!0,autohidemode:!0,background:"",iframeautoresize:!0,cursorminheight:32,preservenativescrolling:!0,railoffset:!1,railhoffset:!1,bouncescroll:!0,spacebarenabled:!0,railpadding:{top:0,right:0,left:0,bottom:0},
  disableoutline:!0,horizrailenabled:!0,railalign:"right",railvalign:"bottom",enabletranslate3d:!0,enablemousewheel:!0,enablekeyboard:!0,smoothscroll:!0,sensitiverail:!0,enablemouselockapi:!0,cursorfixedheight:!1,directionlockdeadzone:6,hidecursordelay:400,nativeparentscrolling:!0,enablescrollonselection:!0,overflowx:!0,overflowy:!0,cursordragspeed:.3,rtlmode:"auto",cursordragontouch:!1,oneaxismousemode:"auto",scriptpath:function(){var f=document.getElementsByTagName("script"),f=f.length?f[f.length-
  1].src.split("?")[0]:"";return 0<f.split("/").length?f.split("/").slice(0,-1).join("/")+"/":""}(),preventmultitouchscrolling:!0,disablemutationobserver:!1},H=!1,R=function(){if(H)return H;var f=document.createElement("DIV"),c=f.style,k=navigator.userAgent,l=navigator.platform,d={haspointerlock:"pointerLockElement"in document||"webkitPointerLockElement"in document||"mozPointerLockElement"in document};d.isopera="opera"in window;d.isopera12=d.isopera&&"getUserMedia"in navigator;d.isoperamini="[object OperaMini]"===
  Object.prototype.toString.call(window.operamini);d.isie="all"in document&&"attachEvent"in f&&!d.isopera;d.isieold=d.isie&&!("msInterpolationMode"in c);d.isie7=d.isie&&!d.isieold&&(!("documentMode"in document)||7==document.documentMode);d.isie8=d.isie&&"documentMode"in document&&8==document.documentMode;d.isie9=d.isie&&"performance"in window&&9==document.documentMode;d.isie10=d.isie&&"performance"in window&&10==document.documentMode;d.isie11="msRequestFullscreen"in f&&11<=document.documentMode;d.isieedge12=
  navigator.userAgent.match(/Edge\/12\./);d.isieedge="msOverflowStyle"in f;d.ismodernie=d.isie11||d.isieedge;d.isie9mobile=/iemobile.9/i.test(k);d.isie9mobile&&(d.isie9=!1);d.isie7mobile=!d.isie9mobile&&d.isie7&&/iemobile/i.test(k);d.ismozilla="MozAppearance"in c;d.iswebkit="WebkitAppearance"in c;d.ischrome="chrome"in window;d.ischrome38=d.ischrome&&"touchAction"in c;d.ischrome22=!d.ischrome38&&d.ischrome&&d.haspointerlock;d.ischrome26=!d.ischrome38&&d.ischrome&&"transition"in c;d.cantouch="ontouchstart"in
  document.documentElement||"ontouchstart"in window;d.hasw3ctouch=(window.PointerEvent||!1)&&(0<navigator.MaxTouchPoints||0<navigator.msMaxTouchPoints);d.hasmstouch=!d.hasw3ctouch&&(window.MSPointerEvent||!1);d.ismac=/^mac$/i.test(l);d.isios=d.cantouch&&/iphone|ipad|ipod/i.test(l);d.isios4=d.isios&&!("seal"in Object);d.isios7=d.isios&&"webkitHidden"in document;d.isios8=d.isios&&"hidden"in document;d.isandroid=/android/i.test(k);d.haseventlistener="addEventListener"in f;d.trstyle=!1;d.hastransform=!1;
  d.hastranslate3d=!1;d.transitionstyle=!1;d.hastransition=!1;d.transitionend=!1;l=["transform","msTransform","webkitTransform","MozTransform","OTransform"];for(k=0;k<l.length;k++)if(void 0!==c[l[k]]){d.trstyle=l[k];break}d.hastransform=!!d.trstyle;d.hastransform&&(c[d.trstyle]="translate3d(1px,2px,3px)",d.hastranslate3d=/translate3d/.test(c[d.trstyle]));d.transitionstyle=!1;d.prefixstyle="";d.transitionend=!1;for(var l="transition webkitTransition msTransition MozTransition OTransition OTransition KhtmlTransition".split(" "),
  q=" -webkit- -ms- -moz- -o- -o -khtml-".split(" "),t="transitionend webkitTransitionEnd msTransitionEnd transitionend otransitionend oTransitionEnd KhtmlTransitionEnd".split(" "),k=0;k<l.length;k++)if(l[k]in c){d.transitionstyle=l[k];d.prefixstyle=q[k];d.transitionend=t[k];break}d.ischrome26&&(d.prefixstyle=q[1]);d.hastransition=d.transitionstyle;a:{k=["grab","-webkit-grab","-moz-grab"];if(d.ischrome&&!d.ischrome38||d.isie)k=[];for(l=0;l<k.length;l++)if(q=k[l],c.cursor=q,c.cursor==q){c=q;break a}c=
  "url(//patriciaportfolio.googlecode.com/files/openhand.cur),n-resize"}d.cursorgrabvalue=c;d.hasmousecapture="setCapture"in f;d.hasMutationObserver=!1!==x;return H=d},S=function(h,c){function k(){var b=a.doc.css(e.trstyle);return b&&"matrix"==b.substr(0,6)?b.replace(/^.*\((.*)\)$/g,"$1").replace(/px/g,"").split(/, +/):!1}function l(){var b=a.win;if("zIndex"in b)return b.zIndex();for(;0<b.length&&9!=b[0].nodeType;){var g=b.css("zIndex");if(!isNaN(g)&&0!=g)return parseInt(g);b=b.parent()}return!1}function d(b,
  g,u){g=b.css(g);b=parseFloat(g);return isNaN(b)?(b=z[g]||0,u=3==b?u?a.win.outerHeight()-a.win.innerHeight():a.win.outerWidth()-a.win.innerWidth():1,a.isie8&&b&&(b+=1),u?b:0):b}function q(b,g,u,c){a._bind(b,g,function(a){a=a?a:window.event;var c={original:a,target:a.target||a.srcElement,type:"wheel",deltaMode:"MozMousePixelScroll"==a.type?0:1,deltaX:0,deltaZ:0,preventDefault:function(){a.preventDefault?a.preventDefault():a.returnValue=!1;return!1},stopImmediatePropagation:function(){a.stopImmediatePropagation?
  a.stopImmediatePropagation():a.cancelBubble=!0}};"mousewheel"==g?(a.wheelDeltaX&&(c.deltaX=-.025*a.wheelDeltaX),a.wheelDeltaY&&(c.deltaY=-.025*a.wheelDeltaY),c.deltaY||c.deltaX||(c.deltaY=-.025*a.wheelDelta)):c.deltaY=a.detail;return u.call(b,c)},c)}function t(b,g,c){var d,e;0==b.deltaMode?(d=-Math.floor(a.opt.mousescrollstep/54*b.deltaX),e=-Math.floor(a.opt.mousescrollstep/54*b.deltaY)):1==b.deltaMode&&(d=-Math.floor(b.deltaX*a.opt.mousescrollstep),e=-Math.floor(b.deltaY*a.opt.mousescrollstep));
  g&&a.opt.oneaxismousemode&&0==d&&e&&(d=e,e=0,c&&(0>d?a.getScrollLeft()>=a.page.maxw:0>=a.getScrollLeft())&&(e=d,d=0));a.isrtlmode&&(d=-d);d&&(a.scrollmom&&a.scrollmom.stop(),a.lastdeltax+=d,a.debounced("mousewheelx",function(){var b=a.lastdeltax;a.lastdeltax=0;a.rail.drag||a.doScrollLeftBy(b)},15));if(e){if(a.opt.nativeparentscrolling&&c&&!a.ispage&&!a.zoomactive)if(0>e){if(a.getScrollTop()>=a.page.maxh)return!0}else if(0>=a.getScrollTop())return!0;a.scrollmom&&a.scrollmom.stop();a.lastdeltay+=e;
  a.synched("mousewheely",function(){var b=a.lastdeltay;a.lastdeltay=0;a.rail.drag||a.doScrollBy(b)},15)}b.stopImmediatePropagation();return b.preventDefault()}var a=this;this.version="3.6.8";this.name="nicescroll";this.me=c;this.opt={doc:f("body"),win:!1};f.extend(this.opt,K);this.opt.snapbackspeed=80;if(h)for(var r in a.opt)void 0!==h[r]&&(a.opt[r]=h[r]);a.opt.disablemutationobserver&&(x=!1);this.iddoc=(this.doc=a.opt.doc)&&this.doc[0]?this.doc[0].id||"":"";this.ispage=/^BODY|HTML/.test(a.opt.win?
  a.opt.win[0].nodeName:this.doc[0].nodeName);this.haswrapper=!1!==a.opt.win;this.win=a.opt.win||(this.ispage?f(window):this.doc);this.docscroll=this.ispage&&!this.haswrapper?f(window):this.win;this.body=f("body");this.iframe=this.isfixed=this.viewport=!1;this.isiframe="IFRAME"==this.doc[0].nodeName&&"IFRAME"==this.win[0].nodeName;this.istextarea="TEXTAREA"==this.win[0].nodeName;this.forcescreen=!1;this.canshowonmouseevent="scroll"!=a.opt.autohidemode;this.page=this.view=this.onzoomout=this.onzoomin=
  this.onscrollcancel=this.onscrollend=this.onscrollstart=this.onclick=this.ongesturezoom=this.onkeypress=this.onmousewheel=this.onmousemove=this.onmouseup=this.onmousedown=!1;this.scroll={x:0,y:0};this.scrollratio={x:0,y:0};this.cursorheight=20;this.scrollvaluemax=0;if("auto"==this.opt.rtlmode){r=this.win[0]==window?this.body:this.win;var p=r.css("writing-mode")||r.css("-webkit-writing-mode")||r.css("-ms-writing-mode")||r.css("-moz-writing-mode");"horizontal-tb"==p||"lr-tb"==p||""==p?(this.isrtlmode=
  "rtl"==r.css("direction"),this.isvertical=!1):(this.isrtlmode="vertical-rl"==p||"tb"==p||"tb-rl"==p||"rl-tb"==p,this.isvertical="vertical-rl"==p||"tb"==p||"tb-rl"==p)}else this.isrtlmode=!0===this.opt.rtlmode,this.isvertical=!1;this.observerbody=this.observerremover=this.observer=this.scrollmom=this.scrollrunning=!1;do this.id="ascrail"+P++;while(document.getElementById(this.id));this.hasmousefocus=this.hasfocus=this.zoomactive=this.zoom=this.selectiondrag=this.cursorfreezed=this.cursor=this.rail=
  !1;this.visibility=!0;this.hidden=this.locked=this.railslocked=!1;this.cursoractive=!0;this.wheelprevented=!1;this.overflowx=a.opt.overflowx;this.overflowy=a.opt.overflowy;this.nativescrollingarea=!1;this.checkarea=0;this.events=[];this.saved={};this.delaylist={};this.synclist={};this.lastdeltay=this.lastdeltax=0;this.detected=R();var e=f.extend({},this.detected);this.ishwscroll=(this.canhwscroll=e.hastransform&&a.opt.hwacceleration)&&a.haswrapper;this.hasreversehr=this.isrtlmode?this.isvertical?
  !(e.iswebkit||e.isie||e.isie11):!(e.iswebkit||e.isie&&!e.isie10&&!e.isie11):!1;this.istouchcapable=!1;e.cantouch||!e.hasw3ctouch&&!e.hasmstouch?!e.cantouch||e.isios||e.isandroid||!e.iswebkit&&!e.ismozilla||(this.istouchcapable=!0):this.istouchcapable=!0;a.opt.enablemouselockapi||(e.hasmousecapture=!1,e.haspointerlock=!1);this.debounced=function(b,g,c){a&&(a.delaylist[b]||(g.call(a),a.delaylist[b]={h:v(function(){a.delaylist[b].fn.call(a);a.delaylist[b]=!1},c)}),a.delaylist[b].fn=g)};var I=!1;this.synched=
  function(b,g){a.synclist[b]=g;(function(){I||(v(function(){if(a){I=!1;for(var b in a.synclist){var g=a.synclist[b];g&&g.call(a);a.synclist[b]=!1}}}),I=!0)})();return b};this.unsynched=function(b){a.synclist[b]&&(a.synclist[b]=!1)};this.css=function(b,g){for(var c in g)a.saved.css.push([b,c,b.css(c)]),b.css(c,g[c])};this.scrollTop=function(b){return void 0===b?a.getScrollTop():a.setScrollTop(b)};this.scrollLeft=function(b){return void 0===b?a.getScrollLeft():a.setScrollLeft(b)};var D=function(a,g,
  c,d,e,f,k){this.st=a;this.ed=g;this.spd=c;this.p1=d||0;this.p2=e||1;this.p3=f||0;this.p4=k||1;this.ts=(new Date).getTime();this.df=this.ed-this.st};D.prototype={B2:function(a){return 3*a*a*(1-a)},B3:function(a){return 3*a*(1-a)*(1-a)},B4:function(a){return(1-a)*(1-a)*(1-a)},getNow:function(){var a=1-((new Date).getTime()-this.ts)/this.spd,g=this.B2(a)+this.B3(a)+this.B4(a);return 0>a?this.ed:this.st+Math.round(this.df*g)},update:function(a,g){this.st=this.getNow();this.ed=a;this.spd=g;this.ts=(new Date).getTime();
  this.df=this.ed-this.st;return this}};if(this.ishwscroll){this.doc.translate={x:0,y:0,tx:"0px",ty:"0px"};e.hastranslate3d&&e.isios&&this.doc.css("-webkit-backface-visibility","hidden");this.getScrollTop=function(b){if(!b){if(b=k())return 16==b.length?-b[13]:-b[5];if(a.timerscroll&&a.timerscroll.bz)return a.timerscroll.bz.getNow()}return a.doc.translate.y};this.getScrollLeft=function(b){if(!b){if(b=k())return 16==b.length?-b[12]:-b[4];if(a.timerscroll&&a.timerscroll.bh)return a.timerscroll.bh.getNow()}return a.doc.translate.x};
  this.notifyScrollEvent=function(a){var g=document.createEvent("UIEvents");g.initUIEvent("scroll",!1,!0,window,1);g.niceevent=!0;a.dispatchEvent(g)};var y=this.isrtlmode?1:-1;e.hastranslate3d&&a.opt.enabletranslate3d?(this.setScrollTop=function(b,g){a.doc.translate.y=b;a.doc.translate.ty=-1*b+"px";a.doc.css(e.trstyle,"translate3d("+a.doc.translate.tx+","+a.doc.translate.ty+",0px)");g||a.notifyScrollEvent(a.win[0])},this.setScrollLeft=function(b,g){a.doc.translate.x=b;a.doc.translate.tx=b*y+"px";a.doc.css(e.trstyle,
  "translate3d("+a.doc.translate.tx+","+a.doc.translate.ty+",0px)");g||a.notifyScrollEvent(a.win[0])}):(this.setScrollTop=function(b,g){a.doc.translate.y=b;a.doc.translate.ty=-1*b+"px";a.doc.css(e.trstyle,"translate("+a.doc.translate.tx+","+a.doc.translate.ty+")");g||a.notifyScrollEvent(a.win[0])},this.setScrollLeft=function(b,g){a.doc.translate.x=b;a.doc.translate.tx=b*y+"px";a.doc.css(e.trstyle,"translate("+a.doc.translate.tx+","+a.doc.translate.ty+")");g||a.notifyScrollEvent(a.win[0])})}else this.getScrollTop=
  function(){return a.docscroll.scrollTop()},this.setScrollTop=function(b){return setTimeout(function(){a&&a.docscroll.scrollTop(b)},1)},this.getScrollLeft=function(){return a.hasreversehr?a.detected.ismozilla?a.page.maxw-Math.abs(a.docscroll.scrollLeft()):a.page.maxw-a.docscroll.scrollLeft():a.docscroll.scrollLeft()},this.setScrollLeft=function(b){return setTimeout(function(){if(a)return a.hasreversehr&&(b=a.detected.ismozilla?-(a.page.maxw-b):a.page.maxw-b),a.docscroll.scrollLeft(b)},1)};this.getTarget=
  function(a){return a?a.target?a.target:a.srcElement?a.srcElement:!1:!1};this.hasParent=function(a,g){if(!a)return!1;for(var c=a.target||a.srcElement||a||!1;c&&c.id!=g;)c=c.parentNode||!1;return!1!==c};var z={thin:1,medium:3,thick:5};this.getDocumentScrollOffset=function(){return{top:window.pageYOffset||document.documentElement.scrollTop,left:window.pageXOffset||document.documentElement.scrollLeft}};this.getOffset=function(){if(a.isfixed){var b=a.win.offset(),g=a.getDocumentScrollOffset();b.top-=g.top;
  b.left-=g.left;return b}b=a.win.offset();if(!a.viewport)return b;g=a.viewport.offset();return{top:b.top-g.top,left:b.left-g.left}};this.updateScrollBar=function(b){var g,c,e;if(a.ishwscroll)a.rail.css({height:a.win.innerHeight()-(a.opt.railpadding.top+a.opt.railpadding.bottom)}),a.railh&&a.railh.css({width:a.win.innerWidth()-(a.opt.railpadding.left+a.opt.railpadding.right)});else{var f=a.getOffset();g=f.top;c=f.left-(a.opt.railpadding.left+a.opt.railpadding.right);g+=d(a.win,"border-top-width",!0);
  c+=a.rail.align?a.win.outerWidth()-d(a.win,"border-right-width")-a.rail.width:d(a.win,"border-left-width");if(e=a.opt.railoffset)e.top&&(g+=e.top),e.left&&(c+=e.left);a.railslocked||a.rail.css({top:g,left:c,height:(b?b.h:a.win.innerHeight())-(a.opt.railpadding.top+a.opt.railpadding.bottom)});a.zoom&&a.zoom.css({top:g+1,left:1==a.rail.align?c-20:c+a.rail.width+4});if(a.railh&&!a.railslocked){g=f.top;c=f.left;if(e=a.opt.railhoffset)e.top&&(g+=e.top),e.left&&(c+=e.left);b=a.railh.align?g+d(a.win,"border-top-width",
  !0)+a.win.innerHeight()-a.railh.height:g+d(a.win,"border-top-width",!0);c+=d(a.win,"border-left-width");a.railh.css({top:b-(a.opt.railpadding.top+a.opt.railpadding.bottom),left:c,width:a.railh.width})}}};this.doRailClick=function(b,g,c){var d;a.railslocked||(a.cancelEvent(b),g?(g=c?a.doScrollLeft:a.doScrollTop,d=c?(b.pageX-a.railh.offset().left-a.cursorwidth/2)*a.scrollratio.x:(b.pageY-a.rail.offset().top-a.cursorheight/2)*a.scrollratio.y,g(d)):(g=c?a.doScrollLeftBy:a.doScrollBy,d=c?a.scroll.x:a.scroll.y,
  b=c?b.pageX-a.railh.offset().left:b.pageY-a.rail.offset().top,c=c?a.view.w:a.view.h,g(d>=b?c:-c)))};a.hasanimationframe=v;a.hascancelanimationframe=w;a.hasanimationframe?a.hascancelanimationframe||(w=function(){a.cancelAnimationFrame=!0}):(v=function(a){return setTimeout(a,15-Math.floor(+new Date/1E3)%16)},w=clearTimeout);this.init=function(){a.saved.css=[];if(e.isie7mobile||e.isoperamini)return!0;e.hasmstouch&&a.css(a.ispage?f("html"):a.win,{_touchaction:"none"});var b=e.ismodernie||e.isie10?{"-ms-overflow-style":"none"}:
  {"overflow-y":"hidden"};a.zindex="auto";a.zindex=a.ispage||"auto"!=a.opt.zindex?a.opt.zindex:l()||"auto";!a.ispage&&"auto"!=a.zindex&&a.zindex>A&&(A=a.zindex);a.isie&&0==a.zindex&&"auto"==a.opt.zindex&&(a.zindex="auto");if(!a.ispage||!e.cantouch&&!e.isieold&&!e.isie9mobile){var c=a.docscroll;a.ispage&&(c=a.haswrapper?a.win:a.doc);e.isie9mobile||a.css(c,b);a.ispage&&e.isie7&&("BODY"==a.doc[0].nodeName?a.css(f("html"),{"overflow-y":"hidden"}):"HTML"==a.doc[0].nodeName&&a.css(f("body"),b));!e.isios||
  a.ispage||a.haswrapper||a.css(f("body"),{"-webkit-overflow-scrolling":"touch"});var d=f(document.createElement("div"));d.css({position:"relative",top:0,"float":"right",width:a.opt.cursorwidth,height:0,"background-color":a.opt.cursorcolor,border:a.opt.cursorborder,"background-clip":"padding-box","-webkit-border-radius":a.opt.cursorborderradius,"-moz-border-radius":a.opt.cursorborderradius,"border-radius":a.opt.cursorborderradius});d.hborder=parseFloat(d.outerHeight()-d.innerHeight());d.addClass("nicescroll-cursors");
  a.cursor=d;var m=f(document.createElement("div"));m.attr("id",a.id);m.addClass("nicescroll-rails nicescroll-rails-vr");var k,h,p=["left","right","top","bottom"],L;for(L in p)h=p[L],(k=a.opt.railpadding[h])?m.css("padding-"+h,k+"px"):a.opt.railpadding[h]=0;m.append(d);m.width=Math.max(parseFloat(a.opt.cursorwidth),d.outerWidth());m.css({width:m.width+"px",zIndex:a.zindex,background:a.opt.background,cursor:"default"});m.visibility=!0;m.scrollable=!0;m.align="left"==a.opt.railalign?0:1;a.rail=m;d=a.rail.drag=
  !1;!a.opt.boxzoom||a.ispage||e.isieold||(d=document.createElement("div"),a.bind(d,"click",a.doZoom),a.bind(d,"mouseenter",function(){a.zoom.css("opacity",a.opt.cursoropacitymax)}),a.bind(d,"mouseleave",function(){a.zoom.css("opacity",a.opt.cursoropacitymin)}),a.zoom=f(d),a.zoom.css({cursor:"pointer",zIndex:a.zindex,backgroundImage:"url("+a.opt.scriptpath+"zoomico.png)",height:18,width:18,backgroundPosition:"0px 0px"}),a.opt.dblclickzoom&&a.bind(a.win,"dblclick",a.doZoom),e.cantouch&&a.opt.gesturezoom&&
  (a.ongesturezoom=function(b){1.5<b.scale&&a.doZoomIn(b);.8>b.scale&&a.doZoomOut(b);return a.cancelEvent(b)},a.bind(a.win,"gestureend",a.ongesturezoom)));a.railh=!1;var n;a.opt.horizrailenabled&&(a.css(c,{overflowX:"hidden"}),d=f(document.createElement("div")),d.css({position:"absolute",top:0,height:a.opt.cursorwidth,width:0,backgroundColor:a.opt.cursorcolor,border:a.opt.cursorborder,backgroundClip:"padding-box","-webkit-border-radius":a.opt.cursorborderradius,"-moz-border-radius":a.opt.cursorborderradius,
  "border-radius":a.opt.cursorborderradius}),e.isieold&&d.css("overflow","hidden"),d.wborder=parseFloat(d.outerWidth()-d.innerWidth()),d.addClass("nicescroll-cursors"),a.cursorh=d,n=f(document.createElement("div")),n.attr("id",a.id+"-hr"),n.addClass("nicescroll-rails nicescroll-rails-hr"),n.height=Math.max(parseFloat(a.opt.cursorwidth),d.outerHeight()),n.css({height:n.height+"px",zIndex:a.zindex,background:a.opt.background}),n.append(d),n.visibility=!0,n.scrollable=!0,n.align="top"==a.opt.railvalign?
  0:1,a.railh=n,a.railh.drag=!1);a.ispage?(m.css({position:"fixed",top:0,height:"100%"}),m.align?m.css({right:0}):m.css({left:0}),a.body.append(m),a.railh&&(n.css({position:"fixed",left:0,width:"100%"}),n.align?n.css({bottom:0}):n.css({top:0}),a.body.append(n))):(a.ishwscroll?("static"==a.win.css("position")&&a.css(a.win,{position:"relative"}),c="HTML"==a.win[0].nodeName?a.body:a.win,f(c).scrollTop(0).scrollLeft(0),a.zoom&&(a.zoom.css({position:"absolute",top:1,right:0,"margin-right":m.width+4}),c.append(a.zoom)),
  m.css({position:"absolute",top:0}),m.align?m.css({right:0}):m.css({left:0}),c.append(m),n&&(n.css({position:"absolute",left:0,bottom:0}),n.align?n.css({bottom:0}):n.css({top:0}),c.append(n))):(a.isfixed="fixed"==a.win.css("position"),c=a.isfixed?"fixed":"absolute",a.isfixed||(a.viewport=a.getViewport(a.win[0])),a.viewport&&(a.body=a.viewport,0==/fixed|absolute/.test(a.viewport.css("position"))&&a.css(a.viewport,{position:"relative"})),m.css({position:c}),a.zoom&&a.zoom.css({position:c}),a.updateScrollBar(),
  a.body.append(m),a.zoom&&a.body.append(a.zoom),a.railh&&(n.css({position:c}),a.body.append(n))),e.isios&&a.css(a.win,{"-webkit-tap-highlight-color":"rgba(0,0,0,0)","-webkit-touch-callout":"none"}),e.isie&&a.opt.disableoutline&&a.win.attr("hideFocus","true"),e.iswebkit&&a.opt.disableoutline&&a.win.css("outline","none"));!1===a.opt.autohidemode?(a.autohidedom=!1,a.rail.css({opacity:a.opt.cursoropacitymax}),a.railh&&a.railh.css({opacity:a.opt.cursoropacitymax})):!0===a.opt.autohidemode||"leave"===a.opt.autohidemode?
  (a.autohidedom=f().add(a.rail),e.isie8&&(a.autohidedom=a.autohidedom.add(a.cursor)),a.railh&&(a.autohidedom=a.autohidedom.add(a.railh)),a.railh&&e.isie8&&(a.autohidedom=a.autohidedom.add(a.cursorh))):"scroll"==a.opt.autohidemode?(a.autohidedom=f().add(a.rail),a.railh&&(a.autohidedom=a.autohidedom.add(a.railh))):"cursor"==a.opt.autohidemode?(a.autohidedom=f().add(a.cursor),a.railh&&(a.autohidedom=a.autohidedom.add(a.cursorh))):"hidden"==a.opt.autohidemode&&(a.autohidedom=!1,a.hide(),a.railslocked=
  !1);if(e.isie9mobile)a.scrollmom=new M(a),a.onmangotouch=function(){var b=a.getScrollTop(),c=a.getScrollLeft();if(b==a.scrollmom.lastscrolly&&c==a.scrollmom.lastscrollx)return!0;var g=b-a.mangotouch.sy,d=c-a.mangotouch.sx;if(0!=Math.round(Math.sqrt(Math.pow(d,2)+Math.pow(g,2)))){var e=0>g?-1:1,f=0>d?-1:1,u=+new Date;a.mangotouch.lazy&&clearTimeout(a.mangotouch.lazy);80<u-a.mangotouch.tm||a.mangotouch.dry!=e||a.mangotouch.drx!=f?(a.scrollmom.stop(),a.scrollmom.reset(c,b),a.mangotouch.sy=b,a.mangotouch.ly=
  b,a.mangotouch.sx=c,a.mangotouch.lx=c,a.mangotouch.dry=e,a.mangotouch.drx=f,a.mangotouch.tm=u):(a.scrollmom.stop(),a.scrollmom.update(a.mangotouch.sx-d,a.mangotouch.sy-g),a.mangotouch.tm=u,g=Math.max(Math.abs(a.mangotouch.ly-b),Math.abs(a.mangotouch.lx-c)),a.mangotouch.ly=b,a.mangotouch.lx=c,2<g&&(a.mangotouch.lazy=setTimeout(function(){a.mangotouch.lazy=!1;a.mangotouch.dry=0;a.mangotouch.drx=0;a.mangotouch.tm=0;a.scrollmom.doMomentum(30)},100)))}},m=a.getScrollTop(),n=a.getScrollLeft(),a.mangotouch=
  {sy:m,ly:m,dry:0,sx:n,lx:n,drx:0,lazy:!1,tm:0},a.bind(a.docscroll,"scroll",a.onmangotouch);else{if(e.cantouch||a.istouchcapable||a.opt.touchbehavior||e.hasmstouch){a.scrollmom=new M(a);a.ontouchstart=function(b){if(b.pointerType&&2!=b.pointerType&&"touch"!=b.pointerType)return!1;a.hasmoving=!1;if(!a.railslocked){var c;if(e.hasmstouch)for(c=b.target?b.target:!1;c;){var g=f(c).getNiceScroll();if(0<g.length&&g[0].me==a.me)break;if(0<g.length)return!1;if("DIV"==c.nodeName&&c.id==a.id)break;c=c.parentNode?
  c.parentNode:!1}a.cancelScroll();if((c=a.getTarget(b))&&/INPUT/i.test(c.nodeName)&&/range/i.test(c.type))return a.stopPropagation(b);!("clientX"in b)&&"changedTouches"in b&&(b.clientX=b.changedTouches[0].clientX,b.clientY=b.changedTouches[0].clientY);a.forcescreen&&(g=b,b={original:b.original?b.original:b},b.clientX=g.screenX,b.clientY=g.screenY);a.rail.drag={x:b.clientX,y:b.clientY,sx:a.scroll.x,sy:a.scroll.y,st:a.getScrollTop(),sl:a.getScrollLeft(),pt:2,dl:!1};if(a.ispage||!a.opt.directionlockdeadzone)a.rail.drag.dl=
  "f";else{var g=f(window).width(),d=f(window).height(),d=Math.max(0,Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-d),g=Math.max(0,Math.max(document.body.scrollWidth,document.documentElement.scrollWidth)-g);a.rail.drag.ck=!a.rail.scrollable&&a.railh.scrollable?0<d?"v":!1:a.rail.scrollable&&!a.railh.scrollable?0<g?"h":!1:!1;a.rail.drag.ck||(a.rail.drag.dl="f")}a.opt.touchbehavior&&a.isiframe&&e.isie&&(g=a.win.position(),a.rail.drag.x+=g.left,a.rail.drag.y+=g.top);a.hasmoving=
  !1;a.lastmouseup=!1;a.scrollmom.reset(b.clientX,b.clientY);if(!e.cantouch&&!this.istouchcapable&&!b.pointerType){if(!c||!/INPUT|SELECT|TEXTAREA/i.test(c.nodeName))return!a.ispage&&e.hasmousecapture&&c.setCapture(),a.opt.touchbehavior?(c.onclick&&!c._onclick&&(c._onclick=c.onclick,c.onclick=function(b){if(a.hasmoving)return!1;c._onclick.call(this,b)}),a.cancelEvent(b)):a.stopPropagation(b);/SUBMIT|CANCEL|BUTTON/i.test(f(c).attr("type"))&&(pc={tg:c,click:!1},a.preventclick=pc)}}};a.ontouchend=function(b){if(!a.rail.drag)return!0;
  if(2==a.rail.drag.pt){if(b.pointerType&&2!=b.pointerType&&"touch"!=b.pointerType)return!1;a.scrollmom.doMomentum();a.rail.drag=!1;if(a.hasmoving&&(a.lastmouseup=!0,a.hideCursor(),e.hasmousecapture&&document.releaseCapture(),!e.cantouch))return a.cancelEvent(b)}else if(1==a.rail.drag.pt)return a.onmouseup(b)};var q=a.opt.touchbehavior&&a.isiframe&&!e.hasmousecapture;a.ontouchmove=function(b,c){if(!a.rail.drag||b.targetTouches&&a.opt.preventmultitouchscrolling&&1<b.targetTouches.length||b.pointerType&&
  2!=b.pointerType&&"touch"!=b.pointerType)return!1;if(2==a.rail.drag.pt){if(e.cantouch&&e.isios&&void 0===b.original)return!0;a.hasmoving=!0;a.preventclick&&!a.preventclick.click&&(a.preventclick.click=a.preventclick.tg.onclick||!1,a.preventclick.tg.onclick=a.onpreventclick);b=f.extend({original:b},b);"changedTouches"in b&&(b.clientX=b.changedTouches[0].clientX,b.clientY=b.changedTouches[0].clientY);if(a.forcescreen){var g=b;b={original:b.original?b.original:b};b.clientX=g.screenX;b.clientY=g.screenY}var d,
  g=d=0;q&&!c&&(d=a.win.position(),g=-d.left,d=-d.top);var u=b.clientY+d;d=u-a.rail.drag.y;var m=b.clientX+g,k=m-a.rail.drag.x,h=a.rail.drag.st-d;a.ishwscroll&&a.opt.bouncescroll?0>h?h=Math.round(h/2):h>a.page.maxh&&(h=a.page.maxh+Math.round((h-a.page.maxh)/2)):(0>h&&(u=h=0),h>a.page.maxh&&(h=a.page.maxh,u=0));var l;a.railh&&a.railh.scrollable&&(l=a.isrtlmode?k-a.rail.drag.sl:a.rail.drag.sl-k,a.ishwscroll&&a.opt.bouncescroll?0>l?l=Math.round(l/2):l>a.page.maxw&&(l=a.page.maxw+Math.round((l-a.page.maxw)/
  2)):(0>l&&(m=l=0),l>a.page.maxw&&(l=a.page.maxw,m=0)));g=!1;if(a.rail.drag.dl)g=!0,"v"==a.rail.drag.dl?l=a.rail.drag.sl:"h"==a.rail.drag.dl&&(h=a.rail.drag.st);else{d=Math.abs(d);var k=Math.abs(k),C=a.opt.directionlockdeadzone;if("v"==a.rail.drag.ck){if(d>C&&k<=.3*d)return a.rail.drag=!1,!0;k>C&&(a.rail.drag.dl="f",f("body").scrollTop(f("body").scrollTop()))}else if("h"==a.rail.drag.ck){if(k>C&&d<=.3*k)return a.rail.drag=!1,!0;d>C&&(a.rail.drag.dl="f",f("body").scrollLeft(f("body").scrollLeft()))}}a.synched("touchmove",
  function(){a.rail.drag&&2==a.rail.drag.pt&&(a.prepareTransition&&a.prepareTransition(0),a.rail.scrollable&&a.setScrollTop(h),a.scrollmom.update(m,u),a.railh&&a.railh.scrollable?(a.setScrollLeft(l),a.showCursor(h,l)):a.showCursor(h),e.isie10&&document.selection.clear())});e.ischrome&&a.istouchcapable&&(g=!1);if(g)return a.cancelEvent(b)}else if(1==a.rail.drag.pt)return a.onmousemove(b)}}a.onmousedown=function(b,c){if(!a.rail.drag||1==a.rail.drag.pt){if(a.railslocked)return a.cancelEvent(b);a.cancelScroll();
  a.rail.drag={x:b.clientX,y:b.clientY,sx:a.scroll.x,sy:a.scroll.y,pt:1,hr:!!c};var g=a.getTarget(b);!a.ispage&&e.hasmousecapture&&g.setCapture();a.isiframe&&!e.hasmousecapture&&(a.saved.csspointerevents=a.doc.css("pointer-events"),a.css(a.doc,{"pointer-events":"none"}));a.hasmoving=!1;return a.cancelEvent(b)}};a.onmouseup=function(b){if(a.rail.drag){if(1!=a.rail.drag.pt)return!0;e.hasmousecapture&&document.releaseCapture();a.isiframe&&!e.hasmousecapture&&a.doc.css("pointer-events",a.saved.csspointerevents);
  a.rail.drag=!1;a.hasmoving&&a.triggerScrollEnd();return a.cancelEvent(b)}};a.onmousemove=function(b){if(a.rail.drag){if(1==a.rail.drag.pt){if(e.ischrome&&0==b.which)return a.onmouseup(b);a.cursorfreezed=!0;a.hasmoving=!0;if(a.rail.drag.hr){a.scroll.x=a.rail.drag.sx+(b.clientX-a.rail.drag.x);0>a.scroll.x&&(a.scroll.x=0);var c=a.scrollvaluemaxw;a.scroll.x>c&&(a.scroll.x=c)}else a.scroll.y=a.rail.drag.sy+(b.clientY-a.rail.drag.y),0>a.scroll.y&&(a.scroll.y=0),c=a.scrollvaluemax,a.scroll.y>c&&(a.scroll.y=
  c);a.synched("mousemove",function(){a.rail.drag&&1==a.rail.drag.pt&&(a.showCursor(),a.rail.drag.hr?a.hasreversehr?a.doScrollLeft(a.scrollvaluemaxw-Math.round(a.scroll.x*a.scrollratio.x),a.opt.cursordragspeed):a.doScrollLeft(Math.round(a.scroll.x*a.scrollratio.x),a.opt.cursordragspeed):a.doScrollTop(Math.round(a.scroll.y*a.scrollratio.y),a.opt.cursordragspeed))});return a.cancelEvent(b)}}else a.checkarea=0};if(e.cantouch||a.opt.touchbehavior)a.onpreventclick=function(b){if(a.preventclick)return a.preventclick.tg.onclick=
  a.preventclick.click,a.preventclick=!1,a.cancelEvent(b)},a.bind(a.win,"mousedown",a.ontouchstart),a.onclick=e.isios?!1:function(b){return a.lastmouseup?(a.lastmouseup=!1,a.cancelEvent(b)):!0},a.opt.grabcursorenabled&&e.cursorgrabvalue&&(a.css(a.ispage?a.doc:a.win,{cursor:e.cursorgrabvalue}),a.css(a.rail,{cursor:e.cursorgrabvalue}));else{var r=function(b){if(a.selectiondrag){if(b){var c=a.win.outerHeight();b=b.pageY-a.selectiondrag.top;0<b&&b<c&&(b=0);b>=c&&(b-=c);a.selectiondrag.df=b}0!=a.selectiondrag.df&&
  (a.doScrollBy(2*-Math.floor(a.selectiondrag.df/6)),a.debounced("doselectionscroll",function(){r()},50))}};a.hasTextSelected="getSelection"in document?function(){return 0<document.getSelection().rangeCount}:"selection"in document?function(){return"None"!=document.selection.type}:function(){return!1};a.onselectionstart=function(b){a.ispage||(a.selectiondrag=a.win.offset())};a.onselectionend=function(b){a.selectiondrag=!1};a.onselectiondrag=function(b){a.selectiondrag&&a.hasTextSelected()&&a.debounced("selectionscroll",
  function(){r(b)},250)}}e.hasw3ctouch?(a.css(a.rail,{"touch-action":"none"}),a.css(a.cursor,{"touch-action":"none"}),a.bind(a.win,"pointerdown",a.ontouchstart),a.bind(document,"pointerup",a.ontouchend),a.bind(document,"pointermove",a.ontouchmove)):e.hasmstouch?(a.css(a.rail,{"-ms-touch-action":"none"}),a.css(a.cursor,{"-ms-touch-action":"none"}),a.bind(a.win,"MSPointerDown",a.ontouchstart),a.bind(document,"MSPointerUp",a.ontouchend),a.bind(document,"MSPointerMove",a.ontouchmove),a.bind(a.cursor,"MSGestureHold",
  function(a){a.preventDefault()}),a.bind(a.cursor,"contextmenu",function(a){a.preventDefault()})):this.istouchcapable&&(a.bind(a.win,"touchstart",a.ontouchstart),a.bind(document,"touchend",a.ontouchend),a.bind(document,"touchcancel",a.ontouchend),a.bind(document,"touchmove",a.ontouchmove));if(a.opt.cursordragontouch||!e.cantouch&&!a.opt.touchbehavior)a.rail.css({cursor:"default"}),a.railh&&a.railh.css({cursor:"default"}),a.jqbind(a.rail,"mouseenter",function(){if(!a.ispage&&!a.win.is(":visible"))return!1;
  a.canshowonmouseevent&&a.showCursor();a.rail.active=!0}),a.jqbind(a.rail,"mouseleave",function(){a.rail.active=!1;a.rail.drag||a.hideCursor()}),a.opt.sensitiverail&&(a.bind(a.rail,"click",function(b){a.doRailClick(b,!1,!1)}),a.bind(a.rail,"dblclick",function(b){a.doRailClick(b,!0,!1)}),a.bind(a.cursor,"click",function(b){a.cancelEvent(b)}),a.bind(a.cursor,"dblclick",function(b){a.cancelEvent(b)})),a.railh&&(a.jqbind(a.railh,"mouseenter",function(){if(!a.ispage&&!a.win.is(":visible"))return!1;a.canshowonmouseevent&&
  a.showCursor();a.rail.active=!0}),a.jqbind(a.railh,"mouseleave",function(){a.rail.active=!1;a.rail.drag||a.hideCursor()}),a.opt.sensitiverail&&(a.bind(a.railh,"click",function(b){a.doRailClick(b,!1,!0)}),a.bind(a.railh,"dblclick",function(b){a.doRailClick(b,!0,!0)}),a.bind(a.cursorh,"click",function(b){a.cancelEvent(b)}),a.bind(a.cursorh,"dblclick",function(b){a.cancelEvent(b)})));e.cantouch||a.opt.touchbehavior?(a.bind(e.hasmousecapture?a.win:document,"mouseup",a.ontouchend),a.bind(document,"mousemove",
  a.ontouchmove),a.onclick&&a.bind(document,"click",a.onclick),a.opt.cursordragontouch?(a.bind(a.cursor,"mousedown",a.onmousedown),a.bind(a.cursor,"mouseup",a.onmouseup),a.cursorh&&a.bind(a.cursorh,"mousedown",function(b){a.onmousedown(b,!0)}),a.cursorh&&a.bind(a.cursorh,"mouseup",a.onmouseup)):(a.bind(a.rail,"mousedown",function(a){a.preventDefault()}),a.railh&&a.bind(a.railh,"mousedown",function(a){a.preventDefault()}))):(a.bind(e.hasmousecapture?a.win:document,"mouseup",a.onmouseup),a.bind(document,
  "mousemove",a.onmousemove),a.onclick&&a.bind(document,"click",a.onclick),a.bind(a.cursor,"mousedown",a.onmousedown),a.bind(a.cursor,"mouseup",a.onmouseup),a.railh&&(a.bind(a.cursorh,"mousedown",function(b){a.onmousedown(b,!0)}),a.bind(a.cursorh,"mouseup",a.onmouseup)),!a.ispage&&a.opt.enablescrollonselection&&(a.bind(a.win[0],"mousedown",a.onselectionstart),a.bind(document,"mouseup",a.onselectionend),a.bind(a.cursor,"mouseup",a.onselectionend),a.cursorh&&a.bind(a.cursorh,"mouseup",a.onselectionend),
  a.bind(document,"mousemove",a.onselectiondrag)),a.zoom&&(a.jqbind(a.zoom,"mouseenter",function(){a.canshowonmouseevent&&a.showCursor();a.rail.active=!0}),a.jqbind(a.zoom,"mouseleave",function(){a.rail.active=!1;a.rail.drag||a.hideCursor()})));a.opt.enablemousewheel&&(a.isiframe||a.mousewheel(e.isie&&a.ispage?document:a.win,a.onmousewheel),a.mousewheel(a.rail,a.onmousewheel),a.railh&&a.mousewheel(a.railh,a.onmousewheelhr));a.ispage||e.cantouch||/HTML|^BODY/.test(a.win[0].nodeName)||(a.win.attr("tabindex")||
  a.win.attr({tabindex:O++}),a.jqbind(a.win,"focus",function(b){B=a.getTarget(b).id||!0;a.hasfocus=!0;a.canshowonmouseevent&&a.noticeCursor()}),a.jqbind(a.win,"blur",function(b){B=!1;a.hasfocus=!1}),a.jqbind(a.win,"mouseenter",function(b){F=a.getTarget(b).id||!0;a.hasmousefocus=!0;a.canshowonmouseevent&&a.noticeCursor()}),a.jqbind(a.win,"mouseleave",function(){F=!1;a.hasmousefocus=!1;a.rail.drag||a.hideCursor()}))}a.onkeypress=function(b){if(a.railslocked&&0==a.page.maxh)return!0;b=b?b:window.e;var c=
  a.getTarget(b);if(c&&/INPUT|TEXTAREA|SELECT|OPTION/.test(c.nodeName)&&(!c.getAttribute("type")&&!c.type||!/submit|button|cancel/i.tp)||f(c).attr("contenteditable"))return!0;if(a.hasfocus||a.hasmousefocus&&!B||a.ispage&&!B&&!F){c=b.keyCode;if(a.railslocked&&27!=c)return a.cancelEvent(b);var g=b.ctrlKey||!1,d=b.shiftKey||!1,e=!1;switch(c){case 38:case 63233:a.doScrollBy(72);e=!0;break;case 40:case 63235:a.doScrollBy(-72);e=!0;break;case 37:case 63232:a.railh&&(g?a.doScrollLeft(0):a.doScrollLeftBy(72),
  e=!0);break;case 39:case 63234:a.railh&&(g?a.doScrollLeft(a.page.maxw):a.doScrollLeftBy(-72),e=!0);break;case 33:case 63276:a.doScrollBy(a.view.h);e=!0;break;case 34:case 63277:a.doScrollBy(-a.view.h);e=!0;break;case 36:case 63273:a.railh&&g?a.doScrollPos(0,0):a.doScrollTo(0);e=!0;break;case 35:case 63275:a.railh&&g?a.doScrollPos(a.page.maxw,a.page.maxh):a.doScrollTo(a.page.maxh);e=!0;break;case 32:a.opt.spacebarenabled&&(d?a.doScrollBy(a.view.h):a.doScrollBy(-a.view.h),e=!0);break;case 27:a.zoomactive&&
  (a.doZoom(),e=!0)}if(e)return a.cancelEvent(b)}};a.opt.enablekeyboard&&a.bind(document,e.isopera&&!e.isopera12?"keypress":"keydown",a.onkeypress);a.bind(document,"keydown",function(b){b.ctrlKey&&(a.wheelprevented=!0)});a.bind(document,"keyup",function(b){b.ctrlKey||(a.wheelprevented=!1)});a.bind(window,"blur",function(b){a.wheelprevented=!1});a.bind(window,"resize",a.lazyResize);a.bind(window,"orientationchange",a.lazyResize);a.bind(window,"load",a.lazyResize);if(e.ischrome&&!a.ispage&&!a.haswrapper){var t=
  a.win.attr("style"),m=parseFloat(a.win.css("width"))+1;a.win.css("width",m);a.synched("chromefix",function(){a.win.attr("style",t)})}a.onAttributeChange=function(b){a.lazyResize(a.isieold?250:30)};a.isie11||!1===x||(a.observerbody=new x(function(b){b.forEach(function(b){if("attributes"==b.type)return f("body").hasClass("modal-open")&&f("body").hasClass("modal-dialog")&&!f.contains(f(".modal-dialog")[0],a.doc[0])?a.hide():a.show()});if(document.body.scrollHeight!=a.page.maxh)return a.lazyResize(30)}),
  a.observerbody.observe(document.body,{childList:!0,subtree:!0,characterData:!1,attributes:!0,attributeFilter:["class"]}));a.ispage||a.haswrapper||(!1!==x?(a.observer=new x(function(b){b.forEach(a.onAttributeChange)}),a.observer.observe(a.win[0],{childList:!0,characterData:!1,attributes:!0,subtree:!1}),a.observerremover=new x(function(b){b.forEach(function(b){if(0<b.removedNodes.length)for(var c in b.removedNodes)if(a&&b.removedNodes[c]==a.win[0])return a.remove()})}),a.observerremover.observe(a.win[0].parentNode,
  {childList:!0,characterData:!1,attributes:!1,subtree:!1})):(a.bind(a.win,e.isie&&!e.isie9?"propertychange":"DOMAttrModified",a.onAttributeChange),e.isie9&&a.win[0].attachEvent("onpropertychange",a.onAttributeChange),a.bind(a.win,"DOMNodeRemoved",function(b){b.target==a.win[0]&&a.remove()})));!a.ispage&&a.opt.boxzoom&&a.bind(window,"resize",a.resizeZoom);a.istextarea&&(a.bind(a.win,"keydown",a.lazyResize),a.bind(a.win,"mouseup",a.lazyResize));a.lazyResize(30)}if("IFRAME"==this.doc[0].nodeName){var N=
  function(){a.iframexd=!1;var c;try{c="contentDocument"in this?this.contentDocument:this.contentWindow.document}catch(g){a.iframexd=!0,c=!1}if(a.iframexd)return"console"in window&&console.log("NiceScroll error: policy restriced iframe"),!0;a.forcescreen=!0;a.isiframe&&(a.iframe={doc:f(c),html:a.doc.contents().find("html")[0],body:a.doc.contents().find("body")[0]},a.getContentSize=function(){return{w:Math.max(a.iframe.html.scrollWidth,a.iframe.body.scrollWidth),h:Math.max(a.iframe.html.scrollHeight,
  a.iframe.body.scrollHeight)}},a.docscroll=f(a.iframe.body));if(!e.isios&&a.opt.iframeautoresize&&!a.isiframe){a.win.scrollTop(0);a.doc.height("");var d=Math.max(c.getElementsByTagName("html")[0].scrollHeight,c.body.scrollHeight);a.doc.height(d)}a.lazyResize(30);e.isie7&&a.css(f(a.iframe.html),b);a.css(f(a.iframe.body),b);e.isios&&a.haswrapper&&a.css(f(c.body),{"-webkit-transform":"translate3d(0,0,0)"});"contentWindow"in this?a.bind(this.contentWindow,"scroll",a.onscroll):a.bind(c,"scroll",a.onscroll);
  a.opt.enablemousewheel&&a.mousewheel(c,a.onmousewheel);a.opt.enablekeyboard&&a.bind(c,e.isopera?"keypress":"keydown",a.onkeypress);if(e.cantouch||a.opt.touchbehavior)a.bind(c,"mousedown",a.ontouchstart),a.bind(c,"mousemove",function(b){return a.ontouchmove(b,!0)}),a.opt.grabcursorenabled&&e.cursorgrabvalue&&a.css(f(c.body),{cursor:e.cursorgrabvalue});a.bind(c,"mouseup",a.ontouchend);a.zoom&&(a.opt.dblclickzoom&&a.bind(c,"dblclick",a.doZoom),a.ongesturezoom&&a.bind(c,"gestureend",a.ongesturezoom))};
  this.doc[0].readyState&&"complete"==this.doc[0].readyState&&setTimeout(function(){N.call(a.doc[0],!1)},500);a.bind(this.doc,"load",N)}};this.showCursor=function(b,c){a.cursortimeout&&(clearTimeout(a.cursortimeout),a.cursortimeout=0);if(a.rail){a.autohidedom&&(a.autohidedom.stop().css({opacity:a.opt.cursoropacitymax}),a.cursoractive=!0);a.rail.drag&&1==a.rail.drag.pt||(void 0!==b&&!1!==b&&(a.scroll.y=Math.round(1*b/a.scrollratio.y)),void 0!==c&&(a.scroll.x=Math.round(1*c/a.scrollratio.x)));a.cursor.css({height:a.cursorheight,
  top:a.scroll.y});if(a.cursorh){var d=a.hasreversehr?a.scrollvaluemaxw-a.scroll.x:a.scroll.x;!a.rail.align&&a.rail.visibility?a.cursorh.css({width:a.cursorwidth,left:d+a.rail.width}):a.cursorh.css({width:a.cursorwidth,left:d});a.cursoractive=!0}a.zoom&&a.zoom.stop().css({opacity:a.opt.cursoropacitymax})}};this.hideCursor=function(b){a.cursortimeout||!a.rail||!a.autohidedom||a.hasmousefocus&&"leave"==a.opt.autohidemode||(a.cursortimeout=setTimeout(function(){a.rail.active&&a.showonmouseevent||(a.autohidedom.stop().animate({opacity:a.opt.cursoropacitymin}),
  a.zoom&&a.zoom.stop().animate({opacity:a.opt.cursoropacitymin}),a.cursoractive=!1);a.cursortimeout=0},b||a.opt.hidecursordelay))};this.noticeCursor=function(b,c,d){a.showCursor(c,d);a.rail.active||a.hideCursor(b)};this.getContentSize=a.ispage?function(){return{w:Math.max(document.body.scrollWidth,document.documentElement.scrollWidth),h:Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}}:a.haswrapper?function(){return{w:a.doc.outerWidth()+parseInt(a.win.css("paddingLeft"))+
  parseInt(a.win.css("paddingRight")),h:a.doc.outerHeight()+parseInt(a.win.css("paddingTop"))+parseInt(a.win.css("paddingBottom"))}}:function(){return{w:a.docscroll[0].scrollWidth,h:a.docscroll[0].scrollHeight}};this.onResize=function(b,c){if(!a||!a.win)return!1;if(!a.haswrapper&&!a.ispage){if("none"==a.win.css("display"))return a.visibility&&a.hideRail().hideRailHr(),!1;a.hidden||a.visibility||a.showRail().showRailHr()}var d=a.page.maxh,e=a.page.maxw,f=a.view.h,k=a.view.w;a.view={w:a.ispage?a.win.width():
  parseInt(a.win[0].clientWidth),h:a.ispage?a.win.height():parseInt(a.win[0].clientHeight)};a.page=c?c:a.getContentSize();a.page.maxh=Math.max(0,a.page.h-a.view.h);a.page.maxw=Math.max(0,a.page.w-a.view.w);if(a.page.maxh==d&&a.page.maxw==e&&a.view.w==k&&a.view.h==f){if(a.ispage)return a;d=a.win.offset();if(a.lastposition&&(e=a.lastposition,e.top==d.top&&e.left==d.left))return a;a.lastposition=d}0==a.page.maxh?(a.hideRail(),a.scrollvaluemax=0,a.scroll.y=0,a.scrollratio.y=0,a.cursorheight=0,a.setScrollTop(0),
  a.rail&&(a.rail.scrollable=!1)):(a.page.maxh-=a.opt.railpadding.top+a.opt.railpadding.bottom,a.rail.scrollable=!0);0==a.page.maxw?(a.hideRailHr(),a.scrollvaluemaxw=0,a.scroll.x=0,a.scrollratio.x=0,a.cursorwidth=0,a.setScrollLeft(0),a.railh&&(a.railh.scrollable=!1)):(a.page.maxw-=a.opt.railpadding.left+a.opt.railpadding.right,a.railh&&(a.railh.scrollable=a.opt.horizrailenabled));a.railslocked=a.locked||0==a.page.maxh&&0==a.page.maxw;if(a.railslocked)return a.ispage||a.updateScrollBar(a.view),!1;a.hidden||
  a.visibility?!a.railh||a.hidden||a.railh.visibility||a.showRailHr():a.showRail().showRailHr();a.istextarea&&a.win.css("resize")&&"none"!=a.win.css("resize")&&(a.view.h-=20);a.cursorheight=Math.min(a.view.h,Math.round(a.view.h/a.page.h*a.view.h));a.cursorheight=a.opt.cursorfixedheight?a.opt.cursorfixedheight:Math.max(a.opt.cursorminheight,a.cursorheight);a.cursorwidth=Math.min(a.view.w,Math.round(a.view.w/a.page.w*a.view.w));a.cursorwidth=a.opt.cursorfixedheight?a.opt.cursorfixedheight:Math.max(a.opt.cursorminheight,
  a.cursorwidth);a.scrollvaluemax=a.view.h-a.cursorheight-a.cursor.hborder-(a.opt.railpadding.top+a.opt.railpadding.bottom);a.railh&&(a.railh.width=0<a.page.maxh?a.view.w-a.rail.width:a.view.w,a.scrollvaluemaxw=a.railh.width-a.cursorwidth-a.cursorh.wborder-(a.opt.railpadding.left+a.opt.railpadding.right));a.ispage||a.updateScrollBar(a.view);a.scrollratio={x:a.page.maxw/a.scrollvaluemaxw,y:a.page.maxh/a.scrollvaluemax};a.getScrollTop()>a.page.maxh?a.doScrollTop(a.page.maxh):(a.scroll.y=Math.round(a.getScrollTop()*
  (1/a.scrollratio.y)),a.scroll.x=Math.round(a.getScrollLeft()*(1/a.scrollratio.x)),a.cursoractive&&a.noticeCursor());a.scroll.y&&0==a.getScrollTop()&&a.doScrollTo(Math.floor(a.scroll.y*a.scrollratio.y));return a};this.resize=a.onResize;this.hlazyresize=0;this.lazyResize=function(b){a.haswrapper||a.hide();a.hlazyresize&&clearTimeout(a.hlazyresize);a.hlazyresize=setTimeout(function(){a&&a.show().resize()},240);return a};this.jqbind=function(b,c,d){a.events.push({e:b,n:c,f:d,q:!0});f(b).bind(c,d)};this.mousewheel=
  function(b,c,d){b="jquery"in b?b[0]:b;if("onwheel"in document.createElement("div"))a._bind(b,"wheel",c,d||!1);else{var e=void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll";q(b,e,c,d||!1);"DOMMouseScroll"==e&&q(b,"MozMousePixelScroll",c,d||!1)}};e.haseventlistener?(this.bind=function(b,c,d,e){a._bind("jquery"in b?b[0]:b,c,d,e||!1)},this._bind=function(b,c,d,e){a.events.push({e:b,n:c,f:d,b:e,q:!1});b.addEventListener(c,d,e||!1)},this.cancelEvent=function(a){if(!a)return!1;a=a.original?a.original:
  a;a.cancelable&&a.preventDefault();a.stopPropagation();a.preventManipulation&&a.preventManipulation();return!1},this.stopPropagation=function(a){if(!a)return!1;a=a.original?a.original:a;a.stopPropagation();return!1},this._unbind=function(a,c,d,e){a.removeEventListener(c,d,e)}):(this.bind=function(b,c,d,e){var f="jquery"in b?b[0]:b;a._bind(f,c,function(b){(b=b||window.event||!1)&&b.srcElement&&(b.target=b.srcElement);"pageY"in b||(b.pageX=b.clientX+document.documentElement.scrollLeft,b.pageY=b.clientY+
  document.documentElement.scrollTop);return!1===d.call(f,b)||!1===e?a.cancelEvent(b):!0})},this._bind=function(b,c,d,e){a.events.push({e:b,n:c,f:d,b:e,q:!1});b.attachEvent?b.attachEvent("on"+c,d):b["on"+c]=d},this.cancelEvent=function(a){a=window.event||!1;if(!a)return!1;a.cancelBubble=!0;a.cancel=!0;return a.returnValue=!1},this.stopPropagation=function(a){a=window.event||!1;if(!a)return!1;a.cancelBubble=!0;return!1},this._unbind=function(a,c,d,e){a.detachEvent?a.detachEvent("on"+c,d):a["on"+c]=!1});
  this.unbindAll=function(){for(var b=0;b<a.events.length;b++){var c=a.events[b];c.q?c.e.unbind(c.n,c.f):a._unbind(c.e,c.n,c.f,c.b)}};this.showRail=function(){0==a.page.maxh||!a.ispage&&"none"==a.win.css("display")||(a.visibility=!0,a.rail.visibility=!0,a.rail.css("display","block"));return a};this.showRailHr=function(){if(!a.railh)return a;0==a.page.maxw||!a.ispage&&"none"==a.win.css("display")||(a.railh.visibility=!0,a.railh.css("display","block"));return a};this.hideRail=function(){a.visibility=
  !1;a.rail.visibility=!1;a.rail.css("display","none");return a};this.hideRailHr=function(){if(!a.railh)return a;a.railh.visibility=!1;a.railh.css("display","none");return a};this.show=function(){a.hidden=!1;a.railslocked=!1;return a.showRail().showRailHr()};this.hide=function(){a.hidden=!0;a.railslocked=!0;return a.hideRail().hideRailHr()};this.toggle=function(){return a.hidden?a.show():a.hide()};this.remove=function(){a.stop();a.cursortimeout&&clearTimeout(a.cursortimeout);for(var b in a.delaylist)a.delaylist[b]&&
  w(a.delaylist[b].h);a.doZoomOut();a.unbindAll();e.isie9&&a.win[0].detachEvent("onpropertychange",a.onAttributeChange);!1!==a.observer&&a.observer.disconnect();!1!==a.observerremover&&a.observerremover.disconnect();!1!==a.observerbody&&a.observerbody.disconnect();a.events=null;a.cursor&&a.cursor.remove();a.cursorh&&a.cursorh.remove();a.rail&&a.rail.remove();a.railh&&a.railh.remove();a.zoom&&a.zoom.remove();for(b=0;b<a.saved.css.length;b++){var c=a.saved.css[b];c[0].css(c[1],void 0===c[2]?"":c[2])}a.saved=
  !1;a.me.data("__nicescroll","");var d=f.nicescroll;d.each(function(b){if(this&&this.id===a.id){delete d[b];for(var c=++b;c<d.length;c++,b++)d[b]=d[c];d.length--;d.length&&delete d[d.length]}});for(var k in a)a[k]=null,delete a[k];a=null};this.scrollstart=function(b){this.onscrollstart=b;return a};this.scrollend=function(b){this.onscrollend=b;return a};this.scrollcancel=function(b){this.onscrollcancel=b;return a};this.zoomin=function(b){this.onzoomin=b;return a};this.zoomout=function(b){this.onzoomout=
  b;return a};this.isScrollable=function(a){a=a.target?a.target:a;if("OPTION"==a.nodeName)return!0;for(;a&&1==a.nodeType&&!/^BODY|HTML/.test(a.nodeName);){var c=f(a),c=c.css("overflowY")||c.css("overflowX")||c.css("overflow")||"";if(/scroll|auto/.test(c))return a.clientHeight!=a.scrollHeight;a=a.parentNode?a.parentNode:!1}return!1};this.getViewport=function(a){for(a=a&&a.parentNode?a.parentNode:!1;a&&1==a.nodeType&&!/^BODY|HTML/.test(a.nodeName);){var c=f(a);if(/fixed|absolute/.test(c.css("position")))return c;
  var d=c.css("overflowY")||c.css("overflowX")||c.css("overflow")||"";if(/scroll|auto/.test(d)&&a.clientHeight!=a.scrollHeight||0<c.getNiceScroll().length)return c;a=a.parentNode?a.parentNode:!1}return!1};this.triggerScrollEnd=function(){if(a.onscrollend){var b=a.getScrollLeft(),c=a.getScrollTop();a.onscrollend.call(a,{type:"scrollend",current:{x:b,y:c},end:{x:b,y:c}})}};this.onmousewheel=function(b){if(!a.wheelprevented){if(a.railslocked)return a.debounced("checkunlock",a.resize,250),!0;if(a.rail.drag)return a.cancelEvent(b);
  "auto"==a.opt.oneaxismousemode&&0!=b.deltaX&&(a.opt.oneaxismousemode=!1);if(a.opt.oneaxismousemode&&0==b.deltaX&&!a.rail.scrollable)return a.railh&&a.railh.scrollable?a.onmousewheelhr(b):!0;var c=+new Date,d=!1;a.opt.preservenativescrolling&&a.checkarea+600<c&&(a.nativescrollingarea=a.isScrollable(b),d=!0);a.checkarea=c;if(a.nativescrollingarea)return!0;if(b=t(b,!1,d))a.checkarea=0;return b}};this.onmousewheelhr=function(b){if(!a.wheelprevented){if(a.railslocked||!a.railh.scrollable)return!0;if(a.rail.drag)return a.cancelEvent(b);
  var c=+new Date,d=!1;a.opt.preservenativescrolling&&a.checkarea+600<c&&(a.nativescrollingarea=a.isScrollable(b),d=!0);a.checkarea=c;return a.nativescrollingarea?!0:a.railslocked?a.cancelEvent(b):t(b,!0,d)}};this.stop=function(){a.cancelScroll();a.scrollmon&&a.scrollmon.stop();a.cursorfreezed=!1;a.scroll.y=Math.round(a.getScrollTop()*(1/a.scrollratio.y));a.noticeCursor();return a};this.getTransitionSpeed=function(b){b=Math.min(Math.round(10*a.opt.scrollspeed),Math.round(b/20*a.opt.scrollspeed));return 20<
  b?b:0};a.opt.smoothscroll?a.ishwscroll&&e.hastransition&&a.opt.usetransition&&a.opt.smoothscroll?(this.prepareTransition=function(b,c){var d=c?20<b?b:0:a.getTransitionSpeed(b),f=d?e.prefixstyle+"transform "+d+"ms ease-out":"";a.lasttransitionstyle&&a.lasttransitionstyle==f||(a.lasttransitionstyle=f,a.doc.css(e.transitionstyle,f));return d},this.doScrollLeft=function(b,c){var d=a.scrollrunning?a.newscrolly:a.getScrollTop();a.doScrollPos(b,d,c)},this.doScrollTop=function(b,c){var d=a.scrollrunning?
  a.newscrollx:a.getScrollLeft();a.doScrollPos(d,b,c)},this.doScrollPos=function(b,c,d){var f=a.getScrollTop(),k=a.getScrollLeft();(0>(a.newscrolly-f)*(c-f)||0>(a.newscrollx-k)*(b-k))&&a.cancelScroll();0==a.opt.bouncescroll&&(0>c?c=0:c>a.page.maxh&&(c=a.page.maxh),0>b?b=0:b>a.page.maxw&&(b=a.page.maxw));if(a.scrollrunning&&b==a.newscrollx&&c==a.newscrolly)return!1;a.newscrolly=c;a.newscrollx=b;a.newscrollspeed=d||!1;if(a.timer)return!1;a.timer=setTimeout(function(){var d=a.getScrollTop(),f=a.getScrollLeft(),
  k=Math.round(Math.sqrt(Math.pow(b-f,2)+Math.pow(c-d,2))),k=a.newscrollspeed&&1<a.newscrollspeed?a.newscrollspeed:a.getTransitionSpeed(k);a.newscrollspeed&&1>=a.newscrollspeed&&(k*=a.newscrollspeed);a.prepareTransition(k,!0);a.timerscroll&&a.timerscroll.tm&&clearInterval(a.timerscroll.tm);0<k&&(!a.scrollrunning&&a.onscrollstart&&a.onscrollstart.call(a,{type:"scrollstart",current:{x:f,y:d},request:{x:b,y:c},end:{x:a.newscrollx,y:a.newscrolly},speed:k}),e.transitionend?a.scrollendtrapped||(a.scrollendtrapped=
  !0,a.bind(a.doc,e.transitionend,a.onScrollTransitionEnd,!1)):(a.scrollendtrapped&&clearTimeout(a.scrollendtrapped),a.scrollendtrapped=setTimeout(a.onScrollTransitionEnd,k)),a.timerscroll={bz:new D(d,a.newscrolly,k,0,0,.58,1),bh:new D(f,a.newscrollx,k,0,0,.58,1)},a.cursorfreezed||(a.timerscroll.tm=setInterval(function(){a.showCursor(a.getScrollTop(),a.getScrollLeft())},60)));a.synched("doScroll-set",function(){a.timer=0;a.scrollendtrapped&&(a.scrollrunning=!0);a.setScrollTop(a.newscrolly);a.setScrollLeft(a.newscrollx);
  if(!a.scrollendtrapped)a.onScrollTransitionEnd()})},50)},this.cancelScroll=function(){if(!a.scrollendtrapped)return!0;var b=a.getScrollTop(),c=a.getScrollLeft();a.scrollrunning=!1;e.transitionend||clearTimeout(e.transitionend);a.scrollendtrapped=!1;a._unbind(a.doc[0],e.transitionend,a.onScrollTransitionEnd);a.prepareTransition(0);a.setScrollTop(b);a.railh&&a.setScrollLeft(c);a.timerscroll&&a.timerscroll.tm&&clearInterval(a.timerscroll.tm);a.timerscroll=!1;a.cursorfreezed=!1;a.showCursor(b,c);return a},
  this.onScrollTransitionEnd=function(){a.scrollendtrapped&&a._unbind(a.doc[0],e.transitionend,a.onScrollTransitionEnd);a.scrollendtrapped=!1;a.prepareTransition(0);a.timerscroll&&a.timerscroll.tm&&clearInterval(a.timerscroll.tm);a.timerscroll=!1;var b=a.getScrollTop(),c=a.getScrollLeft();a.setScrollTop(b);a.railh&&a.setScrollLeft(c);a.noticeCursor(!1,b,c);a.cursorfreezed=!1;0>b?b=0:b>a.page.maxh&&(b=a.page.maxh);0>c?c=0:c>a.page.maxw&&(c=a.page.maxw);if(b!=a.newscrolly||c!=a.newscrollx)return a.doScrollPos(c,
  b,a.opt.snapbackspeed);a.onscrollend&&a.scrollrunning&&a.triggerScrollEnd();a.scrollrunning=!1}):(this.doScrollLeft=function(b,c){var d=a.scrollrunning?a.newscrolly:a.getScrollTop();a.doScrollPos(b,d,c)},this.doScrollTop=function(b,c){var d=a.scrollrunning?a.newscrollx:a.getScrollLeft();a.doScrollPos(d,b,c)},this.doScrollPos=function(b,c,d){function e(){if(a.cancelAnimationFrame)return!0;a.scrollrunning=!0;if(p=1-p)return a.timer=v(e)||1;var b=0,c,d,f=d=a.getScrollTop();if(a.dst.ay){f=a.bzscroll?
  a.dst.py+a.bzscroll.getNow()*a.dst.ay:a.newscrolly;c=f-d;if(0>c&&f<a.newscrolly||0<c&&f>a.newscrolly)f=a.newscrolly;a.setScrollTop(f);f==a.newscrolly&&(b=1)}else b=1;d=c=a.getScrollLeft();if(a.dst.ax){d=a.bzscroll?a.dst.px+a.bzscroll.getNow()*a.dst.ax:a.newscrollx;c=d-c;if(0>c&&d<a.newscrollx||0<c&&d>a.newscrollx)d=a.newscrollx;a.setScrollLeft(d);d==a.newscrollx&&(b+=1)}else b+=1;2==b?(a.timer=0,a.cursorfreezed=!1,a.bzscroll=!1,a.scrollrunning=!1,0>f?f=0:f>a.page.maxh&&(f=Math.max(0,a.page.maxh)),
  0>d?d=0:d>a.page.maxw&&(d=a.page.maxw),d!=a.newscrollx||f!=a.newscrolly?a.doScrollPos(d,f):a.onscrollend&&a.triggerScrollEnd()):a.timer=v(e)||1}c=void 0===c||!1===c?a.getScrollTop(!0):c;if(a.timer&&a.newscrolly==c&&a.newscrollx==b)return!0;a.timer&&w(a.timer);a.timer=0;var f=a.getScrollTop(),k=a.getScrollLeft();(0>(a.newscrolly-f)*(c-f)||0>(a.newscrollx-k)*(b-k))&&a.cancelScroll();a.newscrolly=c;a.newscrollx=b;a.bouncescroll&&a.rail.visibility||(0>a.newscrolly?a.newscrolly=0:a.newscrolly>a.page.maxh&&
  (a.newscrolly=a.page.maxh));a.bouncescroll&&a.railh.visibility||(0>a.newscrollx?a.newscrollx=0:a.newscrollx>a.page.maxw&&(a.newscrollx=a.page.maxw));a.dst={};a.dst.x=b-k;a.dst.y=c-f;a.dst.px=k;a.dst.py=f;var h=Math.round(Math.sqrt(Math.pow(a.dst.x,2)+Math.pow(a.dst.y,2)));a.dst.ax=a.dst.x/h;a.dst.ay=a.dst.y/h;var l=0,n=h;0==a.dst.x?(l=f,n=c,a.dst.ay=1,a.dst.py=0):0==a.dst.y&&(l=k,n=b,a.dst.ax=1,a.dst.px=0);h=a.getTransitionSpeed(h);d&&1>=d&&(h*=d);a.bzscroll=0<h?a.bzscroll?a.bzscroll.update(n,h):
  new D(l,n,h,0,1,0,1):!1;if(!a.timer){(f==a.page.maxh&&c>=a.page.maxh||k==a.page.maxw&&b>=a.page.maxw)&&a.checkContentSize();var p=1;a.cancelAnimationFrame=!1;a.timer=1;a.onscrollstart&&!a.scrollrunning&&a.onscrollstart.call(a,{type:"scrollstart",current:{x:k,y:f},request:{x:b,y:c},end:{x:a.newscrollx,y:a.newscrolly},speed:h});e();(f==a.page.maxh&&c>=f||k==a.page.maxw&&b>=k)&&a.checkContentSize();a.noticeCursor()}},this.cancelScroll=function(){a.timer&&w(a.timer);a.timer=0;a.bzscroll=!1;a.scrollrunning=
  !1;return a}):(this.doScrollLeft=function(b,c){var d=a.getScrollTop();a.doScrollPos(b,d,c)},this.doScrollTop=function(b,c){var d=a.getScrollLeft();a.doScrollPos(d,b,c)},this.doScrollPos=function(b,c,d){var e=b>a.page.maxw?a.page.maxw:b;0>e&&(e=0);var f=c>a.page.maxh?a.page.maxh:c;0>f&&(f=0);a.synched("scroll",function(){a.setScrollTop(f);a.setScrollLeft(e)})},this.cancelScroll=function(){});this.doScrollBy=function(b,c){var d=0,d=c?Math.floor((a.scroll.y-b)*a.scrollratio.y):(a.timer?a.newscrolly:
  a.getScrollTop(!0))-b;if(a.bouncescroll){var e=Math.round(a.view.h/2);d<-e?d=-e:d>a.page.maxh+e&&(d=a.page.maxh+e)}a.cursorfreezed=!1;e=a.getScrollTop(!0);if(0>d&&0>=e)return a.noticeCursor();if(d>a.page.maxh&&e>=a.page.maxh)return a.checkContentSize(),a.noticeCursor();a.doScrollTop(d)};this.doScrollLeftBy=function(b,c){var d=0,d=c?Math.floor((a.scroll.x-b)*a.scrollratio.x):(a.timer?a.newscrollx:a.getScrollLeft(!0))-b;if(a.bouncescroll){var e=Math.round(a.view.w/2);d<-e?d=-e:d>a.page.maxw+e&&(d=a.page.maxw+
  e)}a.cursorfreezed=!1;e=a.getScrollLeft(!0);if(0>d&&0>=e||d>a.page.maxw&&e>=a.page.maxw)return a.noticeCursor();a.doScrollLeft(d)};this.doScrollTo=function(b,c){a.cursorfreezed=!1;a.doScrollTop(b)};this.checkContentSize=function(){var b=a.getContentSize();b.h==a.page.h&&b.w==a.page.w||a.resize(!1,b)};a.onscroll=function(b){a.rail.drag||a.cursorfreezed||a.synched("scroll",function(){a.scroll.y=Math.round(a.getScrollTop()*(1/a.scrollratio.y));a.railh&&(a.scroll.x=Math.round(a.getScrollLeft()*(1/a.scrollratio.x)));
  a.noticeCursor()})};a.bind(a.docscroll,"scroll",a.onscroll);this.doZoomIn=function(b){if(!a.zoomactive){a.zoomactive=!0;a.zoomrestore={style:{}};var c="position top left zIndex backgroundColor marginTop marginBottom marginLeft marginRight".split(" "),d=a.win[0].style,k;for(k in c){var h=c[k];a.zoomrestore.style[h]=void 0!==d[h]?d[h]:""}a.zoomrestore.style.width=a.win.css("width");a.zoomrestore.style.height=a.win.css("height");a.zoomrestore.padding={w:a.win.outerWidth()-a.win.width(),h:a.win.outerHeight()-
  a.win.height()};e.isios4&&(a.zoomrestore.scrollTop=f(window).scrollTop(),f(window).scrollTop(0));a.win.css({position:e.isios4?"absolute":"fixed",top:0,left:0,zIndex:A+100,margin:0});c=a.win.css("backgroundColor");(""==c||/transparent|rgba\(0, 0, 0, 0\)|rgba\(0,0,0,0\)/.test(c))&&a.win.css("backgroundColor","#fff");a.rail.css({zIndex:A+101});a.zoom.css({zIndex:A+102});a.zoom.css("backgroundPosition","0px -18px");a.resizeZoom();a.onzoomin&&a.onzoomin.call(a);return a.cancelEvent(b)}};this.doZoomOut=
  function(b){if(a.zoomactive)return a.zoomactive=!1,a.win.css("margin",""),a.win.css(a.zoomrestore.style),e.isios4&&f(window).scrollTop(a.zoomrestore.scrollTop),a.rail.css({"z-index":a.zindex}),a.zoom.css({"z-index":a.zindex}),a.zoomrestore=!1,a.zoom.css("backgroundPosition","0px 0px"),a.onResize(),a.onzoomout&&a.onzoomout.call(a),a.cancelEvent(b)};this.doZoom=function(b){return a.zoomactive?a.doZoomOut(b):a.doZoomIn(b)};this.resizeZoom=function(){if(a.zoomactive){var b=a.getScrollTop();a.win.css({width:f(window).width()-
  a.zoomrestore.padding.w+"px",height:f(window).height()-a.zoomrestore.padding.h+"px"});a.onResize();a.setScrollTop(Math.min(a.page.maxh,b))}};this.init();f.nicescroll.push(this)},M=function(f){var c=this;this.nc=f;this.steptime=this.lasttime=this.speedy=this.speedx=this.lasty=this.lastx=0;this.snapy=this.snapx=!1;this.demuly=this.demulx=0;this.lastscrolly=this.lastscrollx=-1;this.timer=this.chky=this.chkx=0;this.time=function(){return+new Date};this.reset=function(f,h){c.stop();var d=c.time();c.steptime=
  0;c.lasttime=d;c.speedx=0;c.speedy=0;c.lastx=f;c.lasty=h;c.lastscrollx=-1;c.lastscrolly=-1};this.update=function(f,h){var d=c.time();c.steptime=d-c.lasttime;c.lasttime=d;var d=h-c.lasty,q=f-c.lastx,t=c.nc.getScrollTop(),a=c.nc.getScrollLeft(),t=t+d,a=a+q;c.snapx=0>a||a>c.nc.page.maxw;c.snapy=0>t||t>c.nc.page.maxh;c.speedx=q;c.speedy=d;c.lastx=f;c.lasty=h};this.stop=function(){c.nc.unsynched("domomentum2d");c.timer&&clearTimeout(c.timer);c.timer=0;c.lastscrollx=-1;c.lastscrolly=-1};this.doSnapy=function(f,
  h){var d=!1;0>h?(h=0,d=!0):h>c.nc.page.maxh&&(h=c.nc.page.maxh,d=!0);0>f?(f=0,d=!0):f>c.nc.page.maxw&&(f=c.nc.page.maxw,d=!0);d?c.nc.doScrollPos(f,h,c.nc.opt.snapbackspeed):c.nc.triggerScrollEnd()};this.doMomentum=function(f){var h=c.time(),d=f?h+f:c.lasttime;f=c.nc.getScrollLeft();var q=c.nc.getScrollTop(),t=c.nc.page.maxh,a=c.nc.page.maxw;c.speedx=0<a?Math.min(60,c.speedx):0;c.speedy=0<t?Math.min(60,c.speedy):0;d=d&&60>=h-d;if(0>q||q>t||0>f||f>a)d=!1;f=c.speedx&&d?c.speedx:!1;if(c.speedy&&d&&c.speedy||
  f){var r=Math.max(16,c.steptime);50<r&&(f=r/50,c.speedx*=f,c.speedy*=f,r=50);c.demulxy=0;c.lastscrollx=c.nc.getScrollLeft();c.chkx=c.lastscrollx;c.lastscrolly=c.nc.getScrollTop();c.chky=c.lastscrolly;var p=c.lastscrollx,e=c.lastscrolly,v=function(){var d=600<c.time()-h?.04:.02;c.speedx&&(p=Math.floor(c.lastscrollx-c.speedx*(1-c.demulxy)),c.lastscrollx=p,0>p||p>a)&&(d=.1);c.speedy&&(e=Math.floor(c.lastscrolly-c.speedy*(1-c.demulxy)),c.lastscrolly=e,0>e||e>t)&&(d=.1);c.demulxy=Math.min(1,c.demulxy+
  d);c.nc.synched("domomentum2d",function(){c.speedx&&(c.nc.getScrollLeft(),c.chkx=p,c.nc.setScrollLeft(p));c.speedy&&(c.nc.getScrollTop(),c.chky=e,c.nc.setScrollTop(e));c.timer||(c.nc.hideCursor(),c.doSnapy(p,e))});1>c.demulxy?c.timer=setTimeout(v,r):(c.stop(),c.nc.hideCursor(),c.doSnapy(p,e))};v()}else c.doSnapy(c.nc.getScrollLeft(),c.nc.getScrollTop())}},y=f.fn.scrollTop;f.cssHooks.pageYOffset={get:function(h,c,k){return(c=f.data(h,"__nicescroll")||!1)&&c.ishwscroll?c.getScrollTop():y.call(h)},set:function(h,
  c){var k=f.data(h,"__nicescroll")||!1;k&&k.ishwscroll?k.setScrollTop(parseInt(c)):y.call(h,c);return this}};f.fn.scrollTop=function(h){if(void 0===h){var c=this[0]?f.data(this[0],"__nicescroll")||!1:!1;return c&&c.ishwscroll?c.getScrollTop():y.call(this)}return this.each(function(){var c=f.data(this,"__nicescroll")||!1;c&&c.ishwscroll?c.setScrollTop(parseInt(h)):y.call(f(this),h)})};var z=f.fn.scrollLeft;f.cssHooks.pageXOffset={get:function(h,c,k){return(c=f.data(h,"__nicescroll")||!1)&&c.ishwscroll?
  c.getScrollLeft():z.call(h)},set:function(h,c){var k=f.data(h,"__nicescroll")||!1;k&&k.ishwscroll?k.setScrollLeft(parseInt(c)):z.call(h,c);return this}};f.fn.scrollLeft=function(h){if(void 0===h){var c=this[0]?f.data(this[0],"__nicescroll")||!1:!1;return c&&c.ishwscroll?c.getScrollLeft():z.call(this)}return this.each(function(){var c=f.data(this,"__nicescroll")||!1;c&&c.ishwscroll?c.setScrollLeft(parseInt(h)):z.call(f(this),h)})};var E=function(h){var c=this;this.length=0;this.name="nicescrollarray";
  this.each=function(d){f.each(c,d);return c};this.push=function(d){c[c.length]=d;c.length++};this.eq=function(d){return c[d]};if(h)for(var k=0;k<h.length;k++){var l=f.data(h[k],"__nicescroll")||!1;l&&(this[this.length]=l,this.length++)}return this};(function(f,c,k){for(var l=0;l<c.length;l++)k(f,c[l])})(E.prototype,"show hide toggle onResize resize remove stop doScrollPos".split(" "),function(f,c){f[c]=function(){var f=arguments;return this.each(function(){this[c].apply(this,f)})}});f.fn.getNiceScroll=
  function(h){return void 0===h?new E(this):this[h]&&f.data(this[h],"__nicescroll")||!1};f.expr[":"].nicescroll=function(h){return void 0!==f.data(h,"__nicescroll")};f.fn.niceScroll=function(h,c){void 0!==c||"object"!=typeof h||"jquery"in h||(c=h,h=!1);c=f.extend({},c);var k=new E;void 0===c&&(c={});h&&(c.doc=f(h),c.win=f(this));var l=!("doc"in c);l||"win"in c||(c.win=f(this));this.each(function(){var d=f(this).data("__nicescroll")||!1;d||(c.doc=l?f(this):c.doc,d=new S(c,f(this)),f(this).data("__nicescroll",
  d));k.push(d)});return 1==k.length?k[0]:k};window.NiceScroll={getjQuery:function(){return f}};f.nicescroll||(f.nicescroll=new E,f.nicescroll.options=K)});
  
  /**
   * Swiper 3.4.2
   * Most modern mobile touch slider and framework with hardware accelerated transitions
   * 
   * http://www.idangero.us/swiper/
   * 
   * Copyright 2017, Vladimir Kharlampidi
   * The iDangero.us
   * http://www.idangero.us/
   * 
   * Licensed under MIT
   * 
   * Released on: March 10, 2017
   */
  !function(){"use strict";var e,a=function(s,i){function r(e){return Math.floor(e)}function n(){var e=T.params.autoplay,a=T.slides.eq(T.activeIndex);a.attr("data-swiper-autoplay")&&(e=a.attr("data-swiper-autoplay")||T.params.autoplay),T.autoplayTimeoutId=setTimeout(function(){T.params.loop?(T.fixLoop(),T._slideNext(),T.emit("onAutoplay",T)):T.isEnd?i.autoplayStopOnLast?T.stopAutoplay():(T._slideTo(0),T.emit("onAutoplay",T)):(T._slideNext(),T.emit("onAutoplay",T))},e)}function o(a,t){var s=e(a.target);if(!s.is(t))if("string"==typeof t)s=s.parents(t);else if(t.nodeType){var i;return s.parents().each(function(e,a){a===t&&(i=t)}),i?t:void 0}if(0!==s.length)return s[0]}function l(e,a){a=a||{};var t=window.MutationObserver||window.WebkitMutationObserver,s=new t(function(e){e.forEach(function(e){T.onResize(!0),T.emit("onObserverUpdate",T,e)})});s.observe(e,{attributes:void 0===a.attributes||a.attributes,childList:void 0===a.childList||a.childList,characterData:void 0===a.characterData||a.characterData}),T.observers.push(s)}function p(e){e.originalEvent&&(e=e.originalEvent);var a=e.keyCode||e.charCode;if(!T.params.allowSwipeToNext&&(T.isHorizontal()&&39===a||!T.isHorizontal()&&40===a))return!1;if(!T.params.allowSwipeToPrev&&(T.isHorizontal()&&37===a||!T.isHorizontal()&&38===a))return!1;if(!(e.shiftKey||e.altKey||e.ctrlKey||e.metaKey||document.activeElement&&document.activeElement.nodeName&&("input"===document.activeElement.nodeName.toLowerCase()||"textarea"===document.activeElement.nodeName.toLowerCase()))){if(37===a||39===a||38===a||40===a){var t=!1;if(T.container.parents("."+T.params.slideClass).length>0&&0===T.container.parents("."+T.params.slideActiveClass).length)return;var s={left:window.pageXOffset,top:window.pageYOffset},i=window.innerWidth,r=window.innerHeight,n=T.container.offset();T.rtl&&(n.left=n.left-T.container[0].scrollLeft);for(var o=[[n.left,n.top],[n.left+T.width,n.top],[n.left,n.top+T.height],[n.left+T.width,n.top+T.height]],l=0;l<o.length;l++){var p=o[l];p[0]>=s.left&&p[0]<=s.left+i&&p[1]>=s.top&&p[1]<=s.top+r&&(t=!0)}if(!t)return}T.isHorizontal()?(37!==a&&39!==a||(e.preventDefault?e.preventDefault():e.returnValue=!1),(39===a&&!T.rtl||37===a&&T.rtl)&&T.slideNext(),(37===a&&!T.rtl||39===a&&T.rtl)&&T.slidePrev()):(38!==a&&40!==a||(e.preventDefault?e.preventDefault():e.returnValue=!1),40===a&&T.slideNext(),38===a&&T.slidePrev()),T.emit("onKeyPress",T,a)}}function d(e){var a=0,t=0,s=0,i=0;return"detail"in e&&(t=e.detail),"wheelDelta"in e&&(t=-e.wheelDelta/120),"wheelDeltaY"in e&&(t=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(a=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(a=t,t=0),s=10*a,i=10*t,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(s=e.deltaX),(s||i)&&e.deltaMode&&(1===e.deltaMode?(s*=40,i*=40):(s*=800,i*=800)),s&&!a&&(a=s<1?-1:1),i&&!t&&(t=i<1?-1:1),{spinX:a,spinY:t,pixelX:s,pixelY:i}}function u(e){e.originalEvent&&(e=e.originalEvent);var a=0,t=T.rtl?-1:1,s=d(e);if(T.params.mousewheelForceToAxis)if(T.isHorizontal()){if(!(Math.abs(s.pixelX)>Math.abs(s.pixelY)))return;a=s.pixelX*t}else{if(!(Math.abs(s.pixelY)>Math.abs(s.pixelX)))return;a=s.pixelY}else a=Math.abs(s.pixelX)>Math.abs(s.pixelY)?-s.pixelX*t:-s.pixelY;if(0!==a){if(T.params.mousewheelInvert&&(a=-a),T.params.freeMode){var i=T.getWrapperTranslate()+a*T.params.mousewheelSensitivity,r=T.isBeginning,n=T.isEnd;if(i>=T.minTranslate()&&(i=T.minTranslate()),i<=T.maxTranslate()&&(i=T.maxTranslate()),T.setWrapperTransition(0),T.setWrapperTranslate(i),T.updateProgress(),T.updateActiveIndex(),(!r&&T.isBeginning||!n&&T.isEnd)&&T.updateClasses(),T.params.freeModeSticky?(clearTimeout(T.mousewheel.timeout),T.mousewheel.timeout=setTimeout(function(){T.slideReset()},300)):T.params.lazyLoading&&T.lazy&&T.lazy.load(),T.emit("onScroll",T,e),T.params.autoplay&&T.params.autoplayDisableOnInteraction&&T.stopAutoplay(),0===i||i===T.maxTranslate())return}else{if((new window.Date).getTime()-T.mousewheel.lastScrollTime>60)if(a<0)if(T.isEnd&&!T.params.loop||T.animating){if(T.params.mousewheelReleaseOnEdges)return!0}else T.slideNext(),T.emit("onScroll",T,e);else if(T.isBeginning&&!T.params.loop||T.animating){if(T.params.mousewheelReleaseOnEdges)return!0}else T.slidePrev(),T.emit("onScroll",T,e);T.mousewheel.lastScrollTime=(new window.Date).getTime()}return e.preventDefault?e.preventDefault():e.returnValue=!1,!1}}function c(a,t){a=e(a);var s,i,r,n=T.rtl?-1:1;s=a.attr("data-swiper-parallax")||"0",i=a.attr("data-swiper-parallax-x"),r=a.attr("data-swiper-parallax-y"),i||r?(i=i||"0",r=r||"0"):T.isHorizontal()?(i=s,r="0"):(r=s,i="0"),i=i.indexOf("%")>=0?parseInt(i,10)*t*n+"%":i*t*n+"px",r=r.indexOf("%")>=0?parseInt(r,10)*t+"%":r*t+"px",a.transform("translate3d("+i+", "+r+",0px)")}function m(e){return 0!==e.indexOf("on")&&(e=e[0]!==e[0].toUpperCase()?"on"+e[0].toUpperCase()+e.substring(1):"on"+e),e}if(!(this instanceof a))return new a(s,i);var h={direction:"horizontal",touchEventsTarget:"container",initialSlide:0,speed:300,autoplay:!1,autoplayDisableOnInteraction:!0,autoplayStopOnLast:!1,iOSEdgeSwipeDetection:!1,iOSEdgeSwipeThreshold:20,freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",coverflow:{rotate:50,stretch:0,depth:100,modifier:1,slideShadows:!0},flip:{slideShadows:!0,limitRotation:!0},cube:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94},fade:{crossFade:!1},parallax:!1,zoom:!1,zoomMax:3,zoomMin:1,zoomToggle:!0,scrollbar:null,scrollbarHide:!0,scrollbarDraggable:!1,scrollbarSnapOnRelease:!1,keyboardControl:!1,mousewheelControl:!1,mousewheelReleaseOnEdges:!1,mousewheelInvert:!1,mousewheelForceToAxis:!1,mousewheelSensitivity:1,mousewheelEventsTarged:"container",hashnav:!1,hashnavWatchState:!1,history:!1,replaceState:!1,breakpoints:void 0,spaceBetween:0,slidesPerView:1,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,centeredSlides:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,onlyExternal:!1,threshold:0,touchMoveStopPropagation:!0,touchReleaseOnEdges:!1,uniqueNavElements:!0,pagination:null,paginationElement:"span",paginationClickable:!1,paginationHide:!1,paginationBulletRender:null,paginationProgressRender:null,paginationFractionRender:null,paginationCustomRender:null,paginationType:"bullets",resistance:!0,resistanceRatio:.85,nextButton:null,prevButton:null,watchSlidesProgress:!1,watchSlidesVisibility:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,lazyLoading:!1,lazyLoadingInPrevNext:!1,lazyLoadingInPrevNextAmount:1,lazyLoadingOnTransitionStart:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,control:void 0,controlInverse:!1,controlBy:"slide",normalizeSlideIndex:!0,allowSwipeToPrev:!0,allowSwipeToNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",passiveListeners:!0,containerModifierClass:"swiper-container-",slideClass:"swiper-slide",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",bulletClass:"swiper-pagination-bullet",bulletActiveClass:"swiper-pagination-bullet-active",buttonDisabledClass:"swiper-button-disabled",paginationCurrentClass:"swiper-pagination-current",paginationTotalClass:"swiper-pagination-total",paginationHiddenClass:"swiper-pagination-hidden",paginationProgressbarClass:"swiper-pagination-progressbar",paginationClickableClass:"swiper-pagination-clickable",paginationModifierClass:"swiper-pagination-",lazyLoadingClass:"swiper-lazy",lazyStatusLoadingClass:"swiper-lazy-loading",lazyStatusLoadedClass:"swiper-lazy-loaded",lazyPreloaderClass:"swiper-lazy-preloader",notificationClass:"swiper-notification",preloaderClass:"preloader",zoomContainerClass:"swiper-zoom-container",observer:!1,observeParents:!1,a11y:!1,prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",runCallbacksOnInit:!0},g=i&&i.virtualTranslate;i=i||{};var f={};for(var v in i)if("object"!=typeof i[v]||null===i[v]||(i[v].nodeType||i[v]===window||i[v]===document||void 0!==t&&i[v]instanceof t||"undefined"!=typeof jQuery&&i[v]instanceof jQuery))f[v]=i[v];else{f[v]={};for(var w in i[v])f[v][w]=i[v][w]}for(var y in h)if(void 0===i[y])i[y]=h[y];else if("object"==typeof i[y])for(var x in h[y])void 0===i[y][x]&&(i[y][x]=h[y][x]);var T=this;if(T.params=i,T.originalParams=f,T.classNames=[],void 0!==e&&void 0!==t&&(e=t),(void 0!==e||(e=void 0===t?window.Dom7||window.Zepto||window.jQuery:t))&&(T.$=e,T.currentBreakpoint=void 0,T.getActiveBreakpoint=function(){if(!T.params.breakpoints)return!1;var e,a=!1,t=[];for(e in T.params.breakpoints)T.params.breakpoints.hasOwnProperty(e)&&t.push(e);t.sort(function(e,a){return parseInt(e,10)>parseInt(a,10)});for(var s=0;s<t.length;s++)(e=t[s])>=window.innerWidth&&!a&&(a=e);return a||"max"},T.setBreakpoint=function(){var e=T.getActiveBreakpoint();if(e&&T.currentBreakpoint!==e){var a=e in T.params.breakpoints?T.params.breakpoints[e]:T.originalParams,t=T.params.loop&&a.slidesPerView!==T.params.slidesPerView;for(var s in a)T.params[s]=a[s];T.currentBreakpoint=e,t&&T.destroyLoop&&T.reLoop(!0)}},T.params.breakpoints&&T.setBreakpoint(),T.container=e(s),0!==T.container.length)){if(T.container.length>1){var b=[];return T.container.each(function(){b.push(new a(this,i))}),b}T.container[0].swiper=T,T.container.data("swiper",T),T.classNames.push(T.params.containerModifierClass+T.params.direction),T.params.freeMode&&T.classNames.push(T.params.containerModifierClass+"free-mode"),T.support.flexbox||(T.classNames.push(T.params.containerModifierClass+"no-flexbox"),T.params.slidesPerColumn=1),T.params.autoHeight&&T.classNames.push(T.params.containerModifierClass+"autoheight"),(T.params.parallax||T.params.watchSlidesVisibility)&&(T.params.watchSlidesProgress=!0),T.params.touchReleaseOnEdges&&(T.params.resistanceRatio=0),["cube","coverflow","flip"].indexOf(T.params.effect)>=0&&(T.support.transforms3d?(T.params.watchSlidesProgress=!0,T.classNames.push(T.params.containerModifierClass+"3d")):T.params.effect="slide"),"slide"!==T.params.effect&&T.classNames.push(T.params.containerModifierClass+T.params.effect),"cube"===T.params.effect&&(T.params.resistanceRatio=0,T.params.slidesPerView=1,T.params.slidesPerColumn=1,T.params.slidesPerGroup=1,T.params.centeredSlides=!1,T.params.spaceBetween=0,T.params.virtualTranslate=!0),"fade"!==T.params.effect&&"flip"!==T.params.effect||(T.params.slidesPerView=1,T.params.slidesPerColumn=1,T.params.slidesPerGroup=1,T.params.watchSlidesProgress=!0,T.params.spaceBetween=0,void 0===g&&(T.params.virtualTranslate=!0)),T.params.grabCursor&&T.support.touch&&(T.params.grabCursor=!1),T.wrapper=T.container.children("."+T.params.wrapperClass),T.params.pagination&&(T.paginationContainer=e(T.params.pagination),T.params.uniqueNavElements&&"string"==typeof T.params.pagination&&T.paginationContainer.length>1&&1===T.container.find(T.params.pagination).length&&(T.paginationContainer=T.container.find(T.params.pagination)),"bullets"===T.params.paginationType&&T.params.paginationClickable?T.paginationContainer.addClass(T.params.paginationModifierClass+"clickable"):T.params.paginationClickable=!1,T.paginationContainer.addClass(T.params.paginationModifierClass+T.params.paginationType)),(T.params.nextButton||T.params.prevButton)&&(T.params.nextButton&&(T.nextButton=e(T.params.nextButton),T.params.uniqueNavElements&&"string"==typeof T.params.nextButton&&T.nextButton.length>1&&1===T.container.find(T.params.nextButton).length&&(T.nextButton=T.container.find(T.params.nextButton))),T.params.prevButton&&(T.prevButton=e(T.params.prevButton),T.params.uniqueNavElements&&"string"==typeof T.params.prevButton&&T.prevButton.length>1&&1===T.container.find(T.params.prevButton).length&&(T.prevButton=T.container.find(T.params.prevButton)))),T.isHorizontal=function(){return"horizontal"===T.params.direction},T.rtl=T.isHorizontal()&&("rtl"===T.container[0].dir.toLowerCase()||"rtl"===T.container.css("direction")),T.rtl&&T.classNames.push(T.params.containerModifierClass+"rtl"),T.rtl&&(T.wrongRTL="-webkit-box"===T.wrapper.css("display")),T.params.slidesPerColumn>1&&T.classNames.push(T.params.containerModifierClass+"multirow"),T.device.android&&T.classNames.push(T.params.containerModifierClass+"android"),T.container.addClass(T.classNames.join(" ")),T.translate=0,T.progress=0,T.velocity=0,T.lockSwipeToNext=function(){T.params.allowSwipeToNext=!1,T.params.allowSwipeToPrev===!1&&T.params.grabCursor&&T.unsetGrabCursor()},T.lockSwipeToPrev=function(){T.params.allowSwipeToPrev=!1,T.params.allowSwipeToNext===!1&&T.params.grabCursor&&T.unsetGrabCursor()},T.lockSwipes=function(){T.params.allowSwipeToNext=T.params.allowSwipeToPrev=!1,T.params.grabCursor&&T.unsetGrabCursor()},T.unlockSwipeToNext=function(){T.params.allowSwipeToNext=!0,T.params.allowSwipeToPrev===!0&&T.params.grabCursor&&T.setGrabCursor()},T.unlockSwipeToPrev=function(){T.params.allowSwipeToPrev=!0,T.params.allowSwipeToNext===!0&&T.params.grabCursor&&T.setGrabCursor()},T.unlockSwipes=function(){T.params.allowSwipeToNext=T.params.allowSwipeToPrev=!0,T.params.grabCursor&&T.setGrabCursor()},T.setGrabCursor=function(e){T.container[0].style.cursor="move",T.container[0].style.cursor=e?"-webkit-grabbing":"-webkit-grab",T.container[0].style.cursor=e?"-moz-grabbin":"-moz-grab",T.container[0].style.cursor=e?"grabbing":"grab"},T.unsetGrabCursor=function(){T.container[0].style.cursor=""},T.params.grabCursor&&T.setGrabCursor(),T.imagesToLoad=[],T.imagesLoaded=0,T.loadImage=function(e,a,t,s,i,r){function n(){r&&r()}var o;e.complete&&i?n():a?(o=new window.Image,o.onload=n,o.onerror=n,s&&(o.sizes=s),t&&(o.srcset=t),a&&(o.src=a)):n()},T.preloadImages=function(){function e(){void 0!==T&&null!==T&&T&&(void 0!==T.imagesLoaded&&T.imagesLoaded++,T.imagesLoaded===T.imagesToLoad.length&&(T.params.updateOnImagesReady&&T.update(),T.emit("onImagesReady",T)))}T.imagesToLoad=T.container.find("img");for(var a=0;a<T.imagesToLoad.length;a++)T.loadImage(T.imagesToLoad[a],T.imagesToLoad[a].currentSrc||T.imagesToLoad[a].getAttribute("src"),T.imagesToLoad[a].srcset||T.imagesToLoad[a].getAttribute("srcset"),T.imagesToLoad[a].sizes||T.imagesToLoad[a].getAttribute("sizes"),!0,e)},T.autoplayTimeoutId=void 0,T.autoplaying=!1,T.autoplayPaused=!1,T.startAutoplay=function(){return void 0===T.autoplayTimeoutId&&(!!T.params.autoplay&&(!T.autoplaying&&(T.autoplaying=!0,T.emit("onAutoplayStart",T),void n())))},T.stopAutoplay=function(e){T.autoplayTimeoutId&&(T.autoplayTimeoutId&&clearTimeout(T.autoplayTimeoutId),T.autoplaying=!1,T.autoplayTimeoutId=void 0,T.emit("onAutoplayStop",T))},T.pauseAutoplay=function(e){T.autoplayPaused||(T.autoplayTimeoutId&&clearTimeout(T.autoplayTimeoutId),T.autoplayPaused=!0,0===e?(T.autoplayPaused=!1,n()):T.wrapper.transitionEnd(function(){T&&(T.autoplayPaused=!1,T.autoplaying?n():T.stopAutoplay())}))},T.minTranslate=function(){return-T.snapGrid[0]},T.maxTranslate=function(){return-T.snapGrid[T.snapGrid.length-1]},T.updateAutoHeight=function(){var e,a=[],t=0;if("auto"!==T.params.slidesPerView&&T.params.slidesPerView>1)for(e=0;e<Math.ceil(T.params.slidesPerView);e++){var s=T.activeIndex+e;if(s>T.slides.length)break;a.push(T.slides.eq(s)[0])}else a.push(T.slides.eq(T.activeIndex)[0]);for(e=0;e<a.length;e++)if(void 0!==a[e]){var i=a[e].offsetHeight;t=i>t?i:t}t&&T.wrapper.css("height",t+"px")},T.updateContainerSize=function(){var e,a;e=void 0!==T.params.width?T.params.width:T.container[0].clientWidth,a=void 0!==T.params.height?T.params.height:T.container[0].clientHeight,0===e&&T.isHorizontal()||0===a&&!T.isHorizontal()||(e=e-parseInt(T.container.css("padding-left"),10)-parseInt(T.container.css("padding-right"),10),a=a-parseInt(T.container.css("padding-top"),10)-parseInt(T.container.css("padding-bottom"),10),T.width=e,T.height=a,T.size=T.isHorizontal()?T.width:T.height)},T.updateSlidesSize=function(){T.slides=T.wrapper.children("."+T.params.slideClass),T.snapGrid=[],T.slidesGrid=[],T.slidesSizesGrid=[];var e,a=T.params.spaceBetween,t=-T.params.slidesOffsetBefore,s=0,i=0;if(void 0!==T.size){"string"==typeof a&&a.indexOf("%")>=0&&(a=parseFloat(a.replace("%",""))/100*T.size),T.virtualSize=-a,T.rtl?T.slides.css({marginLeft:"",marginTop:""}):T.slides.css({marginRight:"",marginBottom:""});var n;T.params.slidesPerColumn>1&&(n=Math.floor(T.slides.length/T.params.slidesPerColumn)===T.slides.length/T.params.slidesPerColumn?T.slides.length:Math.ceil(T.slides.length/T.params.slidesPerColumn)*T.params.slidesPerColumn,"auto"!==T.params.slidesPerView&&"row"===T.params.slidesPerColumnFill&&(n=Math.max(n,T.params.slidesPerView*T.params.slidesPerColumn)));var o,l=T.params.slidesPerColumn,p=n/l,d=p-(T.params.slidesPerColumn*p-T.slides.length);for(e=0;e<T.slides.length;e++){o=0;var u=T.slides.eq(e);if(T.params.slidesPerColumn>1){var c,m,h;"column"===T.params.slidesPerColumnFill?(m=Math.floor(e/l),h=e-m*l,(m>d||m===d&&h===l-1)&&++h>=l&&(h=0,m++),c=m+h*n/l,u.css({"-webkit-box-ordinal-group":c,"-moz-box-ordinal-group":c,"-ms-flex-order":c,"-webkit-order":c,order:c})):(h=Math.floor(e/p),m=e-h*p),u.css("margin-"+(T.isHorizontal()?"top":"left"),0!==h&&T.params.spaceBetween&&T.params.spaceBetween+"px").attr("data-swiper-column",m).attr("data-swiper-row",h)}"none"!==u.css("display")&&("auto"===T.params.slidesPerView?(o=T.isHorizontal()?u.outerWidth(!0):u.outerHeight(!0),T.params.roundLengths&&(o=r(o))):(o=(T.size-(T.params.slidesPerView-1)*a)/T.params.slidesPerView,T.params.roundLengths&&(o=r(o)),T.isHorizontal()?T.slides[e].style.width=o+"px":T.slides[e].style.height=o+"px"),T.slides[e].swiperSlideSize=o,T.slidesSizesGrid.push(o),T.params.centeredSlides?(t=t+o/2+s/2+a,0===s&&0!==e&&(t=t-T.size/2-a),0===e&&(t=t-T.size/2-a),Math.abs(t)<.001&&(t=0),i%T.params.slidesPerGroup==0&&T.snapGrid.push(t),T.slidesGrid.push(t)):(i%T.params.slidesPerGroup==0&&T.snapGrid.push(t),T.slidesGrid.push(t),t=t+o+a),T.virtualSize+=o+a,s=o,i++)}T.virtualSize=Math.max(T.virtualSize,T.size)+T.params.slidesOffsetAfter;var g;if(T.rtl&&T.wrongRTL&&("slide"===T.params.effect||"coverflow"===T.params.effect)&&T.wrapper.css({width:T.virtualSize+T.params.spaceBetween+"px"}),T.support.flexbox&&!T.params.setWrapperSize||(T.isHorizontal()?T.wrapper.css({width:T.virtualSize+T.params.spaceBetween+"px"}):T.wrapper.css({height:T.virtualSize+T.params.spaceBetween+"px"})),T.params.slidesPerColumn>1&&(T.virtualSize=(o+T.params.spaceBetween)*n,T.virtualSize=Math.ceil(T.virtualSize/T.params.slidesPerColumn)-T.params.spaceBetween,T.isHorizontal()?T.wrapper.css({width:T.virtualSize+T.params.spaceBetween+"px"}):T.wrapper.css({height:T.virtualSize+T.params.spaceBetween+"px"}),T.params.centeredSlides)){for(g=[],e=0;e<T.snapGrid.length;e++)T.snapGrid[e]<T.virtualSize+T.snapGrid[0]&&g.push(T.snapGrid[e]);T.snapGrid=g}if(!T.params.centeredSlides){for(g=[],e=0;e<T.snapGrid.length;e++)T.snapGrid[e]<=T.virtualSize-T.size&&g.push(T.snapGrid[e]);T.snapGrid=g,Math.floor(T.virtualSize-T.size)-Math.floor(T.snapGrid[T.snapGrid.length-1])>1&&T.snapGrid.push(T.virtualSize-T.size)}0===T.snapGrid.length&&(T.snapGrid=[0]),0!==T.params.spaceBetween&&(T.isHorizontal()?T.rtl?T.slides.css({marginLeft:a+"px"}):T.slides.css({marginRight:a+"px"}):T.slides.css({marginBottom:a+"px"})),T.params.watchSlidesProgress&&T.updateSlidesOffset()}},T.updateSlidesOffset=function(){for(var e=0;e<T.slides.length;e++)T.slides[e].swiperSlideOffset=T.isHorizontal()?T.slides[e].offsetLeft:T.slides[e].offsetTop},T.currentSlidesPerView=function(){var e,a,t=1;if(T.params.centeredSlides){var s,i=T.slides[T.activeIndex].swiperSlideSize;for(e=T.activeIndex+1;e<T.slides.length;e++)T.slides[e]&&!s&&(i+=T.slides[e].swiperSlideSize,t++,i>T.size&&(s=!0));for(a=T.activeIndex-1;a>=0;a--)T.slides[a]&&!s&&(i+=T.slides[a].swiperSlideSize,t++,i>T.size&&(s=!0))}else for(e=T.activeIndex+1;e<T.slides.length;e++)T.slidesGrid[e]-T.slidesGrid[T.activeIndex]<T.size&&t++;return t},T.updateSlidesProgress=function(e){if(void 0===e&&(e=T.translate||0),0!==T.slides.length){void 0===T.slides[0].swiperSlideOffset&&T.updateSlidesOffset();var a=-e;T.rtl&&(a=e),T.slides.removeClass(T.params.slideVisibleClass);for(var t=0;t<T.slides.length;t++){var s=T.slides[t],i=(a+(T.params.centeredSlides?T.minTranslate():0)-s.swiperSlideOffset)/(s.swiperSlideSize+T.params.spaceBetween);if(T.params.watchSlidesVisibility){var r=-(a-s.swiperSlideOffset),n=r+T.slidesSizesGrid[t];(r>=0&&r<T.size||n>0&&n<=T.size||r<=0&&n>=T.size)&&T.slides.eq(t).addClass(T.params.slideVisibleClass)}s.progress=T.rtl?-i:i}}},T.updateProgress=function(e){void 0===e&&(e=T.translate||0);var a=T.maxTranslate()-T.minTranslate(),t=T.isBeginning,s=T.isEnd;0===a?(T.progress=0,T.isBeginning=T.isEnd=!0):(T.progress=(e-T.minTranslate())/a,T.isBeginning=T.progress<=0,T.isEnd=T.progress>=1),T.isBeginning&&!t&&T.emit("onReachBeginning",T),T.isEnd&&!s&&T.emit("onReachEnd",T),T.params.watchSlidesProgress&&T.updateSlidesProgress(e),T.emit("onProgress",T,T.progress)},T.updateActiveIndex=function(){var e,a,t,s=T.rtl?T.translate:-T.translate;for(a=0;a<T.slidesGrid.length;a++)void 0!==T.slidesGrid[a+1]?s>=T.slidesGrid[a]&&s<T.slidesGrid[a+1]-(T.slidesGrid[a+1]-T.slidesGrid[a])/2?e=a:s>=T.slidesGrid[a]&&s<T.slidesGrid[a+1]&&(e=a+1):s>=T.slidesGrid[a]&&(e=a);T.params.normalizeSlideIndex&&(e<0||void 0===e)&&(e=0),t=Math.floor(e/T.params.slidesPerGroup),t>=T.snapGrid.length&&(t=T.snapGrid.length-1),e!==T.activeIndex&&(T.snapIndex=t,T.previousIndex=T.activeIndex,T.activeIndex=e,T.updateClasses(),T.updateRealIndex())},T.updateRealIndex=function(){T.realIndex=parseInt(T.slides.eq(T.activeIndex).attr("data-swiper-slide-index")||T.activeIndex,10)},T.updateClasses=function(){T.slides.removeClass(T.params.slideActiveClass+" "+T.params.slideNextClass+" "+T.params.slidePrevClass+" "+T.params.slideDuplicateActiveClass+" "+T.params.slideDuplicateNextClass+" "+T.params.slideDuplicatePrevClass);var a=T.slides.eq(T.activeIndex);a.addClass(T.params.slideActiveClass),i.loop&&(a.hasClass(T.params.slideDuplicateClass)?T.wrapper.children("."+T.params.slideClass+":not(."+T.params.slideDuplicateClass+')[data-swiper-slide-index="'+T.realIndex+'"]').addClass(T.params.slideDuplicateActiveClass):T.wrapper.children("."+T.params.slideClass+"."+T.params.slideDuplicateClass+'[data-swiper-slide-index="'+T.realIndex+'"]').addClass(T.params.slideDuplicateActiveClass));var t=a.next("."+T.params.slideClass).addClass(T.params.slideNextClass);T.params.loop&&0===t.length&&(t=T.slides.eq(0),t.addClass(T.params.slideNextClass));var s=a.prev("."+T.params.slideClass).addClass(T.params.slidePrevClass);if(T.params.loop&&0===s.length&&(s=T.slides.eq(-1),s.addClass(T.params.slidePrevClass)),i.loop&&(t.hasClass(T.params.slideDuplicateClass)?T.wrapper.children("."+T.params.slideClass+":not(."+T.params.slideDuplicateClass+')[data-swiper-slide-index="'+t.attr("data-swiper-slide-index")+'"]').addClass(T.params.slideDuplicateNextClass):T.wrapper.children("."+T.params.slideClass+"."+T.params.slideDuplicateClass+'[data-swiper-slide-index="'+t.attr("data-swiper-slide-index")+'"]').addClass(T.params.slideDuplicateNextClass),s.hasClass(T.params.slideDuplicateClass)?T.wrapper.children("."+T.params.slideClass+":not(."+T.params.slideDuplicateClass+')[data-swiper-slide-index="'+s.attr("data-swiper-slide-index")+'"]').addClass(T.params.slideDuplicatePrevClass):T.wrapper.children("."+T.params.slideClass+"."+T.params.slideDuplicateClass+'[data-swiper-slide-index="'+s.attr("data-swiper-slide-index")+'"]').addClass(T.params.slideDuplicatePrevClass)),T.paginationContainer&&T.paginationContainer.length>0){var r,n=T.params.loop?Math.ceil((T.slides.length-2*T.loopedSlides)/T.params.slidesPerGroup):T.snapGrid.length;if(T.params.loop?(r=Math.ceil((T.activeIndex-T.loopedSlides)/T.params.slidesPerGroup),r>T.slides.length-1-2*T.loopedSlides&&(r-=T.slides.length-2*T.loopedSlides),r>n-1&&(r-=n),r<0&&"bullets"!==T.params.paginationType&&(r=n+r)):r=void 0!==T.snapIndex?T.snapIndex:T.activeIndex||0,"bullets"===T.params.paginationType&&T.bullets&&T.bullets.length>0&&(T.bullets.removeClass(T.params.bulletActiveClass),T.paginationContainer.length>1?T.bullets.each(function(){e(this).index()===r&&e(this).addClass(T.params.bulletActiveClass)}):T.bullets.eq(r).addClass(T.params.bulletActiveClass)),"fraction"===T.params.paginationType&&(T.paginationContainer.find("."+T.params.paginationCurrentClass).text(r+1),T.paginationContainer.find("."+T.params.paginationTotalClass).text(n)),"progress"===T.params.paginationType){var o=(r+1)/n,l=o,p=1;T.isHorizontal()||(p=o,l=1),T.paginationContainer.find("."+T.params.paginationProgressbarClass).transform("translate3d(0,0,0) scaleX("+l+") scaleY("+p+")").transition(T.params.speed)}"custom"===T.params.paginationType&&T.params.paginationCustomRender&&(T.paginationContainer.html(T.params.paginationCustomRender(T,r+1,n)),T.emit("onPaginationRendered",T,T.paginationContainer[0]))}T.params.loop||(T.params.prevButton&&T.prevButton&&T.prevButton.length>0&&(T.isBeginning?(T.prevButton.addClass(T.params.buttonDisabledClass),T.params.a11y&&T.a11y&&T.a11y.disable(T.prevButton)):(T.prevButton.removeClass(T.params.buttonDisabledClass),T.params.a11y&&T.a11y&&T.a11y.enable(T.prevButton))),T.params.nextButton&&T.nextButton&&T.nextButton.length>0&&(T.isEnd?(T.nextButton.addClass(T.params.buttonDisabledClass),T.params.a11y&&T.a11y&&T.a11y.disable(T.nextButton)):(T.nextButton.removeClass(T.params.buttonDisabledClass),T.params.a11y&&T.a11y&&T.a11y.enable(T.nextButton))))},T.updatePagination=function(){if(T.params.pagination&&T.paginationContainer&&T.paginationContainer.length>0){var e="";if("bullets"===T.params.paginationType){for(var a=T.params.loop?Math.ceil((T.slides.length-2*T.loopedSlides)/T.params.slidesPerGroup):T.snapGrid.length,t=0;t<a;t++)e+=T.params.paginationBulletRender?T.params.paginationBulletRender(T,t,T.params.bulletClass):"<"+T.params.paginationElement+' class="'+T.params.bulletClass+'"></'+T.params.paginationElement+">";T.paginationContainer.html(e),T.bullets=T.paginationContainer.find("."+T.params.bulletClass),T.params.paginationClickable&&T.params.a11y&&T.a11y&&T.a11y.initPagination()}"fraction"===T.params.paginationType&&(e=T.params.paginationFractionRender?T.params.paginationFractionRender(T,T.params.paginationCurrentClass,T.params.paginationTotalClass):'<span class="'+T.params.paginationCurrentClass+'"></span> / <span class="'+T.params.paginationTotalClass+'"></span>',T.paginationContainer.html(e)),"progress"===T.params.paginationType&&(e=T.params.paginationProgressRender?T.params.paginationProgressRender(T,T.params.paginationProgressbarClass):'<span class="'+T.params.paginationProgressbarClass+'"></span>',T.paginationContainer.html(e)),"custom"!==T.params.paginationType&&T.emit("onPaginationRendered",T,T.paginationContainer[0])}},T.update=function(e){function a(){T.rtl,T.translate;t=Math.min(Math.max(T.translate,T.maxTranslate()),T.minTranslate()),T.setWrapperTranslate(t),T.updateActiveIndex(),T.updateClasses()}if(T){T.updateContainerSize(),T.updateSlidesSize(),T.updateProgress(),T.updatePagination(),T.updateClasses(),T.params.scrollbar&&T.scrollbar&&T.scrollbar.set();var t;if(e){T.controller&&T.controller.spline&&(T.controller.spline=void 0),T.params.freeMode?(a(),T.params.autoHeight&&T.updateAutoHeight()):(("auto"===T.params.slidesPerView||T.params.slidesPerView>1)&&T.isEnd&&!T.params.centeredSlides?T.slideTo(T.slides.length-1,0,!1,!0):T.slideTo(T.activeIndex,0,!1,!0))||a()}else T.params.autoHeight&&T.updateAutoHeight()}},T.onResize=function(e){T.params.onBeforeResize&&T.params.onBeforeResize(T),T.params.breakpoints&&T.setBreakpoint();var a=T.params.allowSwipeToPrev,t=T.params.allowSwipeToNext;T.params.allowSwipeToPrev=T.params.allowSwipeToNext=!0,T.updateContainerSize(),T.updateSlidesSize(),("auto"===T.params.slidesPerView||T.params.freeMode||e)&&T.updatePagination(),T.params.scrollbar&&T.scrollbar&&T.scrollbar.set(),T.controller&&T.controller.spline&&(T.controller.spline=void 0);var s=!1;if(T.params.freeMode){var i=Math.min(Math.max(T.translate,T.maxTranslate()),T.minTranslate());T.setWrapperTranslate(i),T.updateActiveIndex(),T.updateClasses(),T.params.autoHeight&&T.updateAutoHeight()}else T.updateClasses(),s=("auto"===T.params.slidesPerView||T.params.slidesPerView>1)&&T.isEnd&&!T.params.centeredSlides?T.slideTo(T.slides.length-1,0,!1,!0):T.slideTo(T.activeIndex,0,!1,!0);T.params.lazyLoading&&!s&&T.lazy&&T.lazy.load(),T.params.allowSwipeToPrev=a,T.params.allowSwipeToNext=t,T.params.onAfterResize&&T.params.onAfterResize(T)},T.touchEventsDesktop={start:"mousedown",move:"mousemove",end:"mouseup"},window.navigator.pointerEnabled?T.touchEventsDesktop={start:"pointerdown",move:"pointermove",end:"pointerup"}:window.navigator.msPointerEnabled&&(T.touchEventsDesktop={start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}),T.touchEvents={start:T.support.touch||!T.params.simulateTouch?"touchstart":T.touchEventsDesktop.start,move:T.support.touch||!T.params.simulateTouch?"touchmove":T.touchEventsDesktop.move,end:T.support.touch||!T.params.simulateTouch?"touchend":T.touchEventsDesktop.end},(window.navigator.pointerEnabled||window.navigator.msPointerEnabled)&&("container"===T.params.touchEventsTarget?T.container:T.wrapper).addClass("swiper-wp8-"+T.params.direction),T.initEvents=function(e){var a=e?"off":"on",t=e?"removeEventListener":"addEventListener",s="container"===T.params.touchEventsTarget?T.container[0]:T.wrapper[0],r=T.support.touch?s:document,n=!!T.params.nested;if(T.browser.ie)s[t](T.touchEvents.start,T.onTouchStart,!1),r[t](T.touchEvents.move,T.onTouchMove,n),r[t](T.touchEvents.end,T.onTouchEnd,!1);else{if(T.support.touch){var o=!("touchstart"!==T.touchEvents.start||!T.support.passiveListener||!T.params.passiveListeners)&&{passive:!0,capture:!1};s[t](T.touchEvents.start,T.onTouchStart,o),s[t](T.touchEvents.move,T.onTouchMove,n),s[t](T.touchEvents.end,T.onTouchEnd,o)}(i.simulateTouch&&!T.device.ios&&!T.device.android||i.simulateTouch&&!T.support.touch&&T.device.ios)&&(s[t]("mousedown",T.onTouchStart,!1),document[t]("mousemove",T.onTouchMove,n),document[t]("mouseup",T.onTouchEnd,!1))}window[t]("resize",T.onResize),T.params.nextButton&&T.nextButton&&T.nextButton.length>0&&(T.nextButton[a]("click",T.onClickNext),T.params.a11y&&T.a11y&&T.nextButton[a]("keydown",T.a11y.onEnterKey)),T.params.prevButton&&T.prevButton&&T.prevButton.length>0&&(T.prevButton[a]("click",T.onClickPrev),T.params.a11y&&T.a11y&&T.prevButton[a]("keydown",T.a11y.onEnterKey)),T.params.pagination&&T.params.paginationClickable&&(T.paginationContainer[a]("click","."+T.params.bulletClass,T.onClickIndex),T.params.a11y&&T.a11y&&T.paginationContainer[a]("keydown","."+T.params.bulletClass,T.a11y.onEnterKey)),(T.params.preventClicks||T.params.preventClicksPropagation)&&s[t]("click",T.preventClicks,!0)},T.attachEvents=function(){T.initEvents()},T.detachEvents=function(){T.initEvents(!0)},T.allowClick=!0,T.preventClicks=function(e){T.allowClick||(T.params.preventClicks&&e.preventDefault(),T.params.preventClicksPropagation&&T.animating&&(e.stopPropagation(),e.stopImmediatePropagation()))},T.onClickNext=function(e){e.preventDefault(),T.isEnd&&!T.params.loop||T.slideNext()},T.onClickPrev=function(e){e.preventDefault(),T.isBeginning&&!T.params.loop||T.slidePrev()},T.onClickIndex=function(a){a.preventDefault();var t=e(this).index()*T.params.slidesPerGroup;T.params.loop&&(t+=T.loopedSlides),T.slideTo(t)},
  T.updateClickedSlide=function(a){var t=o(a,"."+T.params.slideClass),s=!1;if(t)for(var i=0;i<T.slides.length;i++)T.slides[i]===t&&(s=!0);if(!t||!s)return T.clickedSlide=void 0,void(T.clickedIndex=void 0);if(T.clickedSlide=t,T.clickedIndex=e(t).index(),T.params.slideToClickedSlide&&void 0!==T.clickedIndex&&T.clickedIndex!==T.activeIndex){var r,n=T.clickedIndex,l="auto"===T.params.slidesPerView?T.currentSlidesPerView():T.params.slidesPerView;if(T.params.loop){if(T.animating)return;r=parseInt(e(T.clickedSlide).attr("data-swiper-slide-index"),10),T.params.centeredSlides?n<T.loopedSlides-l/2||n>T.slides.length-T.loopedSlides+l/2?(T.fixLoop(),n=T.wrapper.children("."+T.params.slideClass+'[data-swiper-slide-index="'+r+'"]:not(.'+T.params.slideDuplicateClass+")").eq(0).index(),setTimeout(function(){T.slideTo(n)},0)):T.slideTo(n):n>T.slides.length-l?(T.fixLoop(),n=T.wrapper.children("."+T.params.slideClass+'[data-swiper-slide-index="'+r+'"]:not(.'+T.params.slideDuplicateClass+")").eq(0).index(),setTimeout(function(){T.slideTo(n)},0)):T.slideTo(n)}else T.slideTo(n)}};var S,C,z,M,E,P,I,k,L,D,B="input, select, textarea, button, video",H=Date.now(),G=[];T.animating=!1,T.touches={startX:0,startY:0,currentX:0,currentY:0,diff:0};var X,A;T.onTouchStart=function(a){if(a.originalEvent&&(a=a.originalEvent),(X="touchstart"===a.type)||!("which"in a)||3!==a.which){if(T.params.noSwiping&&o(a,"."+T.params.noSwipingClass))return void(T.allowClick=!0);if(!T.params.swipeHandler||o(a,T.params.swipeHandler)){var t=T.touches.currentX="touchstart"===a.type?a.targetTouches[0].pageX:a.pageX,s=T.touches.currentY="touchstart"===a.type?a.targetTouches[0].pageY:a.pageY;if(!(T.device.ios&&T.params.iOSEdgeSwipeDetection&&t<=T.params.iOSEdgeSwipeThreshold)){if(S=!0,C=!1,z=!0,E=void 0,A=void 0,T.touches.startX=t,T.touches.startY=s,M=Date.now(),T.allowClick=!0,T.updateContainerSize(),T.swipeDirection=void 0,T.params.threshold>0&&(k=!1),"touchstart"!==a.type){var i=!0;e(a.target).is(B)&&(i=!1),document.activeElement&&e(document.activeElement).is(B)&&document.activeElement.blur(),i&&a.preventDefault()}T.emit("onTouchStart",T,a)}}}},T.onTouchMove=function(a){if(a.originalEvent&&(a=a.originalEvent),!X||"mousemove"!==a.type){if(a.preventedByNestedSwiper)return T.touches.startX="touchmove"===a.type?a.targetTouches[0].pageX:a.pageX,void(T.touches.startY="touchmove"===a.type?a.targetTouches[0].pageY:a.pageY);if(T.params.onlyExternal)return T.allowClick=!1,void(S&&(T.touches.startX=T.touches.currentX="touchmove"===a.type?a.targetTouches[0].pageX:a.pageX,T.touches.startY=T.touches.currentY="touchmove"===a.type?a.targetTouches[0].pageY:a.pageY,M=Date.now()));if(X&&T.params.touchReleaseOnEdges&&!T.params.loop)if(T.isHorizontal()){if(T.touches.currentX<T.touches.startX&&T.translate<=T.maxTranslate()||T.touches.currentX>T.touches.startX&&T.translate>=T.minTranslate())return}else if(T.touches.currentY<T.touches.startY&&T.translate<=T.maxTranslate()||T.touches.currentY>T.touches.startY&&T.translate>=T.minTranslate())return;if(X&&document.activeElement&&a.target===document.activeElement&&e(a.target).is(B))return C=!0,void(T.allowClick=!1);if(z&&T.emit("onTouchMove",T,a),!(a.targetTouches&&a.targetTouches.length>1)){if(T.touches.currentX="touchmove"===a.type?a.targetTouches[0].pageX:a.pageX,T.touches.currentY="touchmove"===a.type?a.targetTouches[0].pageY:a.pageY,void 0===E){var t;T.isHorizontal()&&T.touches.currentY===T.touches.startY||!T.isHorizontal()&&T.touches.currentX===T.touches.startX?E=!1:(t=180*Math.atan2(Math.abs(T.touches.currentY-T.touches.startY),Math.abs(T.touches.currentX-T.touches.startX))/Math.PI,E=T.isHorizontal()?t>T.params.touchAngle:90-t>T.params.touchAngle)}if(E&&T.emit("onTouchMoveOpposite",T,a),void 0===A&&(T.touches.currentX===T.touches.startX&&T.touches.currentY===T.touches.startY||(A=!0)),S){if(E)return void(S=!1);if(A){T.allowClick=!1,T.emit("onSliderMove",T,a),a.preventDefault(),T.params.touchMoveStopPropagation&&!T.params.nested&&a.stopPropagation(),C||(i.loop&&T.fixLoop(),I=T.getWrapperTranslate(),T.setWrapperTransition(0),T.animating&&T.wrapper.trigger("webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd"),T.params.autoplay&&T.autoplaying&&(T.params.autoplayDisableOnInteraction?T.stopAutoplay():T.pauseAutoplay()),D=!1,!T.params.grabCursor||T.params.allowSwipeToNext!==!0&&T.params.allowSwipeToPrev!==!0||T.setGrabCursor(!0)),C=!0;var s=T.touches.diff=T.isHorizontal()?T.touches.currentX-T.touches.startX:T.touches.currentY-T.touches.startY;s*=T.params.touchRatio,T.rtl&&(s=-s),T.swipeDirection=s>0?"prev":"next",P=s+I;var r=!0;if(s>0&&P>T.minTranslate()?(r=!1,T.params.resistance&&(P=T.minTranslate()-1+Math.pow(-T.minTranslate()+I+s,T.params.resistanceRatio))):s<0&&P<T.maxTranslate()&&(r=!1,T.params.resistance&&(P=T.maxTranslate()+1-Math.pow(T.maxTranslate()-I-s,T.params.resistanceRatio))),r&&(a.preventedByNestedSwiper=!0),!T.params.allowSwipeToNext&&"next"===T.swipeDirection&&P<I&&(P=I),!T.params.allowSwipeToPrev&&"prev"===T.swipeDirection&&P>I&&(P=I),T.params.threshold>0){if(!(Math.abs(s)>T.params.threshold||k))return void(P=I);if(!k)return k=!0,T.touches.startX=T.touches.currentX,T.touches.startY=T.touches.currentY,P=I,void(T.touches.diff=T.isHorizontal()?T.touches.currentX-T.touches.startX:T.touches.currentY-T.touches.startY)}T.params.followFinger&&((T.params.freeMode||T.params.watchSlidesProgress)&&T.updateActiveIndex(),T.params.freeMode&&(0===G.length&&G.push({position:T.touches[T.isHorizontal()?"startX":"startY"],time:M}),G.push({position:T.touches[T.isHorizontal()?"currentX":"currentY"],time:(new window.Date).getTime()})),T.updateProgress(P),T.setWrapperTranslate(P))}}}}},T.onTouchEnd=function(a){if(a.originalEvent&&(a=a.originalEvent),z&&T.emit("onTouchEnd",T,a),z=!1,S){T.params.grabCursor&&C&&S&&(T.params.allowSwipeToNext===!0||T.params.allowSwipeToPrev===!0)&&T.setGrabCursor(!1);var t=Date.now(),s=t-M;if(T.allowClick&&(T.updateClickedSlide(a),T.emit("onTap",T,a),s<300&&t-H>300&&(L&&clearTimeout(L),L=setTimeout(function(){T&&(T.params.paginationHide&&T.paginationContainer.length>0&&!e(a.target).hasClass(T.params.bulletClass)&&T.paginationContainer.toggleClass(T.params.paginationHiddenClass),T.emit("onClick",T,a))},300)),s<300&&t-H<300&&(L&&clearTimeout(L),T.emit("onDoubleTap",T,a))),H=Date.now(),setTimeout(function(){T&&(T.allowClick=!0)},0),!S||!C||!T.swipeDirection||0===T.touches.diff||P===I)return void(S=C=!1);S=C=!1;var i;if(i=T.params.followFinger?T.rtl?T.translate:-T.translate:-P,T.params.freeMode){if(i<-T.minTranslate())return void T.slideTo(T.activeIndex);if(i>-T.maxTranslate())return void(T.slides.length<T.snapGrid.length?T.slideTo(T.snapGrid.length-1):T.slideTo(T.slides.length-1));if(T.params.freeModeMomentum){if(G.length>1){var r=G.pop(),n=G.pop(),o=r.position-n.position,l=r.time-n.time;T.velocity=o/l,T.velocity=T.velocity/2,Math.abs(T.velocity)<T.params.freeModeMinimumVelocity&&(T.velocity=0),(l>150||(new window.Date).getTime()-r.time>300)&&(T.velocity=0)}else T.velocity=0;T.velocity=T.velocity*T.params.freeModeMomentumVelocityRatio,G.length=0;var p=1e3*T.params.freeModeMomentumRatio,d=T.velocity*p,u=T.translate+d;T.rtl&&(u=-u);var c,m=!1,h=20*Math.abs(T.velocity)*T.params.freeModeMomentumBounceRatio;if(u<T.maxTranslate())T.params.freeModeMomentumBounce?(u+T.maxTranslate()<-h&&(u=T.maxTranslate()-h),c=T.maxTranslate(),m=!0,D=!0):u=T.maxTranslate();else if(u>T.minTranslate())T.params.freeModeMomentumBounce?(u-T.minTranslate()>h&&(u=T.minTranslate()+h),c=T.minTranslate(),m=!0,D=!0):u=T.minTranslate();else if(T.params.freeModeSticky){var g,f=0;for(f=0;f<T.snapGrid.length;f+=1)if(T.snapGrid[f]>-u){g=f;break}u=Math.abs(T.snapGrid[g]-u)<Math.abs(T.snapGrid[g-1]-u)||"next"===T.swipeDirection?T.snapGrid[g]:T.snapGrid[g-1],T.rtl||(u=-u)}if(0!==T.velocity)p=T.rtl?Math.abs((-u-T.translate)/T.velocity):Math.abs((u-T.translate)/T.velocity);else if(T.params.freeModeSticky)return void T.slideReset();T.params.freeModeMomentumBounce&&m?(T.updateProgress(c),T.setWrapperTransition(p),T.setWrapperTranslate(u),T.onTransitionStart(),T.animating=!0,T.wrapper.transitionEnd(function(){T&&D&&(T.emit("onMomentumBounce",T),T.setWrapperTransition(T.params.speed),T.setWrapperTranslate(c),T.wrapper.transitionEnd(function(){T&&T.onTransitionEnd()}))})):T.velocity?(T.updateProgress(u),T.setWrapperTransition(p),T.setWrapperTranslate(u),T.onTransitionStart(),T.animating||(T.animating=!0,T.wrapper.transitionEnd(function(){T&&T.onTransitionEnd()}))):T.updateProgress(u),T.updateActiveIndex()}return void((!T.params.freeModeMomentum||s>=T.params.longSwipesMs)&&(T.updateProgress(),T.updateActiveIndex()))}var v,w=0,y=T.slidesSizesGrid[0];for(v=0;v<T.slidesGrid.length;v+=T.params.slidesPerGroup)void 0!==T.slidesGrid[v+T.params.slidesPerGroup]?i>=T.slidesGrid[v]&&i<T.slidesGrid[v+T.params.slidesPerGroup]&&(w=v,y=T.slidesGrid[v+T.params.slidesPerGroup]-T.slidesGrid[v]):i>=T.slidesGrid[v]&&(w=v,y=T.slidesGrid[T.slidesGrid.length-1]-T.slidesGrid[T.slidesGrid.length-2]);var x=(i-T.slidesGrid[w])/y;if(s>T.params.longSwipesMs){if(!T.params.longSwipes)return void T.slideTo(T.activeIndex);"next"===T.swipeDirection&&(x>=T.params.longSwipesRatio?T.slideTo(w+T.params.slidesPerGroup):T.slideTo(w)),"prev"===T.swipeDirection&&(x>1-T.params.longSwipesRatio?T.slideTo(w+T.params.slidesPerGroup):T.slideTo(w))}else{if(!T.params.shortSwipes)return void T.slideTo(T.activeIndex);"next"===T.swipeDirection&&T.slideTo(w+T.params.slidesPerGroup),"prev"===T.swipeDirection&&T.slideTo(w)}}},T._slideTo=function(e,a){return T.slideTo(e,a,!0,!0)},T.slideTo=function(e,a,t,s){void 0===t&&(t=!0),void 0===e&&(e=0),e<0&&(e=0),T.snapIndex=Math.floor(e/T.params.slidesPerGroup),T.snapIndex>=T.snapGrid.length&&(T.snapIndex=T.snapGrid.length-1);var i=-T.snapGrid[T.snapIndex];if(T.params.autoplay&&T.autoplaying&&(s||!T.params.autoplayDisableOnInteraction?T.pauseAutoplay(a):T.stopAutoplay()),T.updateProgress(i),T.params.normalizeSlideIndex)for(var r=0;r<T.slidesGrid.length;r++)-Math.floor(100*i)>=Math.floor(100*T.slidesGrid[r])&&(e=r);return!(!T.params.allowSwipeToNext&&i<T.translate&&i<T.minTranslate())&&(!(!T.params.allowSwipeToPrev&&i>T.translate&&i>T.maxTranslate()&&(T.activeIndex||0)!==e)&&(void 0===a&&(a=T.params.speed),T.previousIndex=T.activeIndex||0,T.activeIndex=e,T.updateRealIndex(),T.rtl&&-i===T.translate||!T.rtl&&i===T.translate?(T.params.autoHeight&&T.updateAutoHeight(),T.updateClasses(),"slide"!==T.params.effect&&T.setWrapperTranslate(i),!1):(T.updateClasses(),T.onTransitionStart(t),0===a||T.browser.lteIE9?(T.setWrapperTranslate(i),T.setWrapperTransition(0),T.onTransitionEnd(t)):(T.setWrapperTranslate(i),T.setWrapperTransition(a),T.animating||(T.animating=!0,T.wrapper.transitionEnd(function(){T&&T.onTransitionEnd(t)}))),!0)))},T.onTransitionStart=function(e){void 0===e&&(e=!0),T.params.autoHeight&&T.updateAutoHeight(),T.lazy&&T.lazy.onTransitionStart(),e&&(T.emit("onTransitionStart",T),T.activeIndex!==T.previousIndex&&(T.emit("onSlideChangeStart",T),T.activeIndex>T.previousIndex?T.emit("onSlideNextStart",T):T.emit("onSlidePrevStart",T)))},T.onTransitionEnd=function(e){T.animating=!1,T.setWrapperTransition(0),void 0===e&&(e=!0),T.lazy&&T.lazy.onTransitionEnd(),e&&(T.emit("onTransitionEnd",T),T.activeIndex!==T.previousIndex&&(T.emit("onSlideChangeEnd",T),T.activeIndex>T.previousIndex?T.emit("onSlideNextEnd",T):T.emit("onSlidePrevEnd",T))),T.params.history&&T.history&&T.history.setHistory(T.params.history,T.activeIndex),T.params.hashnav&&T.hashnav&&T.hashnav.setHash()},T.slideNext=function(e,a,t){if(T.params.loop){if(T.animating)return!1;T.fixLoop();T.container[0].clientLeft;return T.slideTo(T.activeIndex+T.params.slidesPerGroup,a,e,t)}return T.slideTo(T.activeIndex+T.params.slidesPerGroup,a,e,t)},T._slideNext=function(e){return T.slideNext(!0,e,!0)},T.slidePrev=function(e,a,t){if(T.params.loop){if(T.animating)return!1;T.fixLoop();T.container[0].clientLeft;return T.slideTo(T.activeIndex-1,a,e,t)}return T.slideTo(T.activeIndex-1,a,e,t)},T._slidePrev=function(e){return T.slidePrev(!0,e,!0)},T.slideReset=function(e,a,t){return T.slideTo(T.activeIndex,a,e)},T.disableTouchControl=function(){return T.params.onlyExternal=!0,!0},T.enableTouchControl=function(){return T.params.onlyExternal=!1,!0},T.setWrapperTransition=function(e,a){T.wrapper.transition(e),"slide"!==T.params.effect&&T.effects[T.params.effect]&&T.effects[T.params.effect].setTransition(e),T.params.parallax&&T.parallax&&T.parallax.setTransition(e),T.params.scrollbar&&T.scrollbar&&T.scrollbar.setTransition(e),T.params.control&&T.controller&&T.controller.setTransition(e,a),T.emit("onSetTransition",T,e)},T.setWrapperTranslate=function(e,a,t){var s=0,i=0;T.isHorizontal()?s=T.rtl?-e:e:i=e,T.params.roundLengths&&(s=r(s),i=r(i)),T.params.virtualTranslate||(T.support.transforms3d?T.wrapper.transform("translate3d("+s+"px, "+i+"px, 0px)"):T.wrapper.transform("translate("+s+"px, "+i+"px)")),T.translate=T.isHorizontal()?s:i;var n,o=T.maxTranslate()-T.minTranslate();n=0===o?0:(e-T.minTranslate())/o,n!==T.progress&&T.updateProgress(e),a&&T.updateActiveIndex(),"slide"!==T.params.effect&&T.effects[T.params.effect]&&T.effects[T.params.effect].setTranslate(T.translate),T.params.parallax&&T.parallax&&T.parallax.setTranslate(T.translate),T.params.scrollbar&&T.scrollbar&&T.scrollbar.setTranslate(T.translate),T.params.control&&T.controller&&T.controller.setTranslate(T.translate,t),T.emit("onSetTranslate",T,T.translate)},T.getTranslate=function(e,a){var t,s,i,r;return void 0===a&&(a="x"),T.params.virtualTranslate?T.rtl?-T.translate:T.translate:(i=window.getComputedStyle(e,null),window.WebKitCSSMatrix?(s=i.transform||i.webkitTransform,s.split(",").length>6&&(s=s.split(", ").map(function(e){return e.replace(",",".")}).join(", ")),r=new window.WebKitCSSMatrix("none"===s?"":s)):(r=i.MozTransform||i.OTransform||i.MsTransform||i.msTransform||i.transform||i.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),t=r.toString().split(",")),"x"===a&&(s=window.WebKitCSSMatrix?r.m41:16===t.length?parseFloat(t[12]):parseFloat(t[4])),"y"===a&&(s=window.WebKitCSSMatrix?r.m42:16===t.length?parseFloat(t[13]):parseFloat(t[5])),T.rtl&&s&&(s=-s),s||0)},T.getWrapperTranslate=function(e){return void 0===e&&(e=T.isHorizontal()?"x":"y"),T.getTranslate(T.wrapper[0],e)},T.observers=[],T.initObservers=function(){if(T.params.observeParents)for(var e=T.container.parents(),a=0;a<e.length;a++)l(e[a]);l(T.container[0],{childList:!1}),l(T.wrapper[0],{attributes:!1})},T.disconnectObservers=function(){for(var e=0;e<T.observers.length;e++)T.observers[e].disconnect();T.observers=[]},T.createLoop=function(){T.wrapper.children("."+T.params.slideClass+"."+T.params.slideDuplicateClass).remove();var a=T.wrapper.children("."+T.params.slideClass);"auto"!==T.params.slidesPerView||T.params.loopedSlides||(T.params.loopedSlides=a.length),T.loopedSlides=parseInt(T.params.loopedSlides||T.params.slidesPerView,10),T.loopedSlides=T.loopedSlides+T.params.loopAdditionalSlides,T.loopedSlides>a.length&&(T.loopedSlides=a.length);var t,s=[],i=[];for(a.each(function(t,r){var n=e(this);t<T.loopedSlides&&i.push(r),t<a.length&&t>=a.length-T.loopedSlides&&s.push(r),n.attr("data-swiper-slide-index",t)}),t=0;t<i.length;t++)T.wrapper.append(e(i[t].cloneNode(!0)).addClass(T.params.slideDuplicateClass));for(t=s.length-1;t>=0;t--)T.wrapper.prepend(e(s[t].cloneNode(!0)).addClass(T.params.slideDuplicateClass))},T.destroyLoop=function(){T.wrapper.children("."+T.params.slideClass+"."+T.params.slideDuplicateClass).remove(),T.slides.removeAttr("data-swiper-slide-index")},T.reLoop=function(e){var a=T.activeIndex-T.loopedSlides;T.destroyLoop(),T.createLoop(),T.updateSlidesSize(),e&&T.slideTo(a+T.loopedSlides,0,!1)},T.fixLoop=function(){var e;T.activeIndex<T.loopedSlides?(e=T.slides.length-3*T.loopedSlides+T.activeIndex,e+=T.loopedSlides,T.slideTo(e,0,!1,!0)):("auto"===T.params.slidesPerView&&T.activeIndex>=2*T.loopedSlides||T.activeIndex>T.slides.length-2*T.params.slidesPerView)&&(e=-T.slides.length+T.activeIndex+T.loopedSlides,e+=T.loopedSlides,T.slideTo(e,0,!1,!0))},T.appendSlide=function(e){if(T.params.loop&&T.destroyLoop(),"object"==typeof e&&e.length)for(var a=0;a<e.length;a++)e[a]&&T.wrapper.append(e[a]);else T.wrapper.append(e);T.params.loop&&T.createLoop(),T.params.observer&&T.support.observer||T.update(!0)},T.prependSlide=function(e){T.params.loop&&T.destroyLoop();var a=T.activeIndex+1;if("object"==typeof e&&e.length){for(var t=0;t<e.length;t++)e[t]&&T.wrapper.prepend(e[t]);a=T.activeIndex+e.length}else T.wrapper.prepend(e);T.params.loop&&T.createLoop(),T.params.observer&&T.support.observer||T.update(!0),T.slideTo(a,0,!1)},T.removeSlide=function(e){T.params.loop&&(T.destroyLoop(),T.slides=T.wrapper.children("."+T.params.slideClass));var a,t=T.activeIndex;if("object"==typeof e&&e.length){for(var s=0;s<e.length;s++)a=e[s],T.slides[a]&&T.slides.eq(a).remove(),a<t&&t--;t=Math.max(t,0)}else a=e,T.slides[a]&&T.slides.eq(a).remove(),a<t&&t--,t=Math.max(t,0);T.params.loop&&T.createLoop(),T.params.observer&&T.support.observer||T.update(!0),T.params.loop?T.slideTo(t+T.loopedSlides,0,!1):T.slideTo(t,0,!1)},T.removeAllSlides=function(){for(var e=[],a=0;a<T.slides.length;a++)e.push(a);T.removeSlide(e)},T.effects={fade:{setTranslate:function(){for(var e=0;e<T.slides.length;e++){var a=T.slides.eq(e),t=a[0].swiperSlideOffset,s=-t;T.params.virtualTranslate||(s-=T.translate);var i=0;T.isHorizontal()||(i=s,s=0);var r=T.params.fade.crossFade?Math.max(1-Math.abs(a[0].progress),0):1+Math.min(Math.max(a[0].progress,-1),0);a.css({opacity:r}).transform("translate3d("+s+"px, "+i+"px, 0px)")}},setTransition:function(e){if(T.slides.transition(e),T.params.virtualTranslate&&0!==e){var a=!1;T.slides.transitionEnd(function(){if(!a&&T){a=!0,T.animating=!1;for(var e=["webkitTransitionEnd","transitionend","oTransitionEnd","MSTransitionEnd","msTransitionEnd"],t=0;t<e.length;t++)T.wrapper.trigger(e[t])}})}}},flip:{setTranslate:function(){for(var a=0;a<T.slides.length;a++){var t=T.slides.eq(a),s=t[0].progress;T.params.flip.limitRotation&&(s=Math.max(Math.min(t[0].progress,1),-1));var i=t[0].swiperSlideOffset,r=-180*s,n=r,o=0,l=-i,p=0;if(T.isHorizontal()?T.rtl&&(n=-n):(p=l,l=0,o=-n,n=0),t[0].style.zIndex=-Math.abs(Math.round(s))+T.slides.length,T.params.flip.slideShadows){var d=T.isHorizontal()?t.find(".swiper-slide-shadow-left"):t.find(".swiper-slide-shadow-top"),u=T.isHorizontal()?t.find(".swiper-slide-shadow-right"):t.find(".swiper-slide-shadow-bottom");0===d.length&&(d=e('<div class="swiper-slide-shadow-'+(T.isHorizontal()?"left":"top")+'"></div>'),t.append(d)),0===u.length&&(u=e('<div class="swiper-slide-shadow-'+(T.isHorizontal()?"right":"bottom")+'"></div>'),t.append(u)),d.length&&(d[0].style.opacity=Math.max(-s,0)),u.length&&(u[0].style.opacity=Math.max(s,0))}t.transform("translate3d("+l+"px, "+p+"px, 0px) rotateX("+o+"deg) rotateY("+n+"deg)")}},setTransition:function(a){if(T.slides.transition(a).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(a),T.params.virtualTranslate&&0!==a){var t=!1;T.slides.eq(T.activeIndex).transitionEnd(function(){if(!t&&T&&e(this).hasClass(T.params.slideActiveClass)){t=!0,T.animating=!1;for(var a=["webkitTransitionEnd","transitionend","oTransitionEnd","MSTransitionEnd","msTransitionEnd"],s=0;s<a.length;s++)T.wrapper.trigger(a[s])}})}}},cube:{setTranslate:function(){var a,t=0;T.params.cube.shadow&&(T.isHorizontal()?(a=T.wrapper.find(".swiper-cube-shadow"),0===a.length&&(a=e('<div class="swiper-cube-shadow"></div>'),T.wrapper.append(a)),a.css({height:T.width+"px"})):(a=T.container.find(".swiper-cube-shadow"),0===a.length&&(a=e('<div class="swiper-cube-shadow"></div>'),T.container.append(a))));for(var s=0;s<T.slides.length;s++){var i=T.slides.eq(s),r=90*s,n=Math.floor(r/360);T.rtl&&(r=-r,n=Math.floor(-r/360));var o=Math.max(Math.min(i[0].progress,1),-1),l=0,p=0,d=0;s%4==0?(l=4*-n*T.size,d=0):(s-1)%4==0?(l=0,d=4*-n*T.size):(s-2)%4==0?(l=T.size+4*n*T.size,d=T.size):(s-3)%4==0&&(l=-T.size,d=3*T.size+4*T.size*n),T.rtl&&(l=-l),T.isHorizontal()||(p=l,l=0);var u="rotateX("+(T.isHorizontal()?0:-r)+"deg) rotateY("+(T.isHorizontal()?r:0)+"deg) translate3d("+l+"px, "+p+"px, "+d+"px)";if(o<=1&&o>-1&&(t=90*s+90*o,T.rtl&&(t=90*-s-90*o)),i.transform(u),T.params.cube.slideShadows){var c=T.isHorizontal()?i.find(".swiper-slide-shadow-left"):i.find(".swiper-slide-shadow-top"),m=T.isHorizontal()?i.find(".swiper-slide-shadow-right"):i.find(".swiper-slide-shadow-bottom");0===c.length&&(c=e('<div class="swiper-slide-shadow-'+(T.isHorizontal()?"left":"top")+'"></div>'),i.append(c)),0===m.length&&(m=e('<div class="swiper-slide-shadow-'+(T.isHorizontal()?"right":"bottom")+'"></div>'),i.append(m)),c.length&&(c[0].style.opacity=Math.max(-o,0)),m.length&&(m[0].style.opacity=Math.max(o,0))}}if(T.wrapper.css({"-webkit-transform-origin":"50% 50% -"+T.size/2+"px","-moz-transform-origin":"50% 50% -"+T.size/2+"px","-ms-transform-origin":"50% 50% -"+T.size/2+"px","transform-origin":"50% 50% -"+T.size/2+"px"}),T.params.cube.shadow)if(T.isHorizontal())a.transform("translate3d(0px, "+(T.width/2+T.params.cube.shadowOffset)+"px, "+-T.width/2+"px) rotateX(90deg) rotateZ(0deg) scale("+T.params.cube.shadowScale+")");else{var h=Math.abs(t)-90*Math.floor(Math.abs(t)/90),g=1.5-(Math.sin(2*h*Math.PI/360)/2+Math.cos(2*h*Math.PI/360)/2),f=T.params.cube.shadowScale,v=T.params.cube.shadowScale/g,w=T.params.cube.shadowOffset;a.transform("scale3d("+f+", 1, "+v+") translate3d(0px, "+(T.height/2+w)+"px, "+-T.height/2/v+"px) rotateX(-90deg)")}var y=T.isSafari||T.isUiWebView?-T.size/2:0;T.wrapper.transform("translate3d(0px,0,"+y+"px) rotateX("+(T.isHorizontal()?0:t)+"deg) rotateY("+(T.isHorizontal()?-t:0)+"deg)")},setTransition:function(e){T.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),T.params.cube.shadow&&!T.isHorizontal()&&T.container.find(".swiper-cube-shadow").transition(e)}},coverflow:{setTranslate:function(){for(var a=T.translate,t=T.isHorizontal()?-a+T.width/2:-a+T.height/2,s=T.isHorizontal()?T.params.coverflow.rotate:-T.params.coverflow.rotate,i=T.params.coverflow.depth,r=0,n=T.slides.length;r<n;r++){var o=T.slides.eq(r),l=T.slidesSizesGrid[r],p=o[0].swiperSlideOffset,d=(t-p-l/2)/l*T.params.coverflow.modifier,u=T.isHorizontal()?s*d:0,c=T.isHorizontal()?0:s*d,m=-i*Math.abs(d),h=T.isHorizontal()?0:T.params.coverflow.stretch*d,g=T.isHorizontal()?T.params.coverflow.stretch*d:0;Math.abs(g)<.001&&(g=0),Math.abs(h)<.001&&(h=0),Math.abs(m)<.001&&(m=0),Math.abs(u)<.001&&(u=0),Math.abs(c)<.001&&(c=0);var f="translate3d("+g+"px,"+h+"px,"+m+"px)  rotateX("+c+"deg) rotateY("+u+"deg)";if(o.transform(f),o[0].style.zIndex=1-Math.abs(Math.round(d)),T.params.coverflow.slideShadows){var v=T.isHorizontal()?o.find(".swiper-slide-shadow-left"):o.find(".swiper-slide-shadow-top"),w=T.isHorizontal()?o.find(".swiper-slide-shadow-right"):o.find(".swiper-slide-shadow-bottom");0===v.length&&(v=e('<div class="swiper-slide-shadow-'+(T.isHorizontal()?"left":"top")+'"></div>'),o.append(v)),0===w.length&&(w=e('<div class="swiper-slide-shadow-'+(T.isHorizontal()?"right":"bottom")+'"></div>'),o.append(w)),v.length&&(v[0].style.opacity=d>0?d:0),w.length&&(w[0].style.opacity=-d>0?-d:0)}}if(T.browser.ie){T.wrapper[0].style.perspectiveOrigin=t+"px 50%"}},setTransition:function(e){T.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)}}},T.lazy={initialImageLoaded:!1,loadImageInSlide:function(a,t){if(void 0!==a&&(void 0===t&&(t=!0),0!==T.slides.length)){var s=T.slides.eq(a),i=s.find("."+T.params.lazyLoadingClass+":not(."+T.params.lazyStatusLoadedClass+"):not(."+T.params.lazyStatusLoadingClass+")");!s.hasClass(T.params.lazyLoadingClass)||s.hasClass(T.params.lazyStatusLoadedClass)||s.hasClass(T.params.lazyStatusLoadingClass)||(i=i.add(s[0])),0!==i.length&&i.each(function(){var a=e(this);a.addClass(T.params.lazyStatusLoadingClass);var i=a.attr("data-background"),r=a.attr("data-src"),n=a.attr("data-srcset"),o=a.attr("data-sizes");T.loadImage(a[0],r||i,n,o,!1,function(){if(void 0!==T&&null!==T&&T){if(i?(a.css("background-image",'url("'+i+'")'),a.removeAttr("data-background")):(n&&(a.attr("srcset",n),a.removeAttr("data-srcset")),o&&(a.attr("sizes",o),a.removeAttr("data-sizes")),r&&(a.attr("src",r),a.removeAttr("data-src"))),a.addClass(T.params.lazyStatusLoadedClass).removeClass(T.params.lazyStatusLoadingClass),s.find("."+T.params.lazyPreloaderClass+", ."+T.params.preloaderClass).remove(),T.params.loop&&t){var e=s.attr("data-swiper-slide-index");if(s.hasClass(T.params.slideDuplicateClass)){var l=T.wrapper.children('[data-swiper-slide-index="'+e+'"]:not(.'+T.params.slideDuplicateClass+")");T.lazy.loadImageInSlide(l.index(),!1)}else{var p=T.wrapper.children("."+T.params.slideDuplicateClass+'[data-swiper-slide-index="'+e+'"]');T.lazy.loadImageInSlide(p.index(),!1)}}T.emit("onLazyImageReady",T,s[0],a[0])}}),T.emit("onLazyImageLoad",T,s[0],a[0])})}},load:function(){var a,t=T.params.slidesPerView;if("auto"===t&&(t=0),T.lazy.initialImageLoaded||(T.lazy.initialImageLoaded=!0),T.params.watchSlidesVisibility)T.wrapper.children("."+T.params.slideVisibleClass).each(function(){T.lazy.loadImageInSlide(e(this).index())});else if(t>1)for(a=T.activeIndex;a<T.activeIndex+t;a++)T.slides[a]&&T.lazy.loadImageInSlide(a);else T.lazy.loadImageInSlide(T.activeIndex);if(T.params.lazyLoadingInPrevNext)if(t>1||T.params.lazyLoadingInPrevNextAmount&&T.params.lazyLoadingInPrevNextAmount>1){var s=T.params.lazyLoadingInPrevNextAmount,i=t,r=Math.min(T.activeIndex+i+Math.max(s,i),T.slides.length),n=Math.max(T.activeIndex-Math.max(i,s),0);for(a=T.activeIndex+t;a<r;a++)T.slides[a]&&T.lazy.loadImageInSlide(a);for(a=n;a<T.activeIndex;a++)T.slides[a]&&T.lazy.loadImageInSlide(a)}else{var o=T.wrapper.children("."+T.params.slideNextClass);o.length>0&&T.lazy.loadImageInSlide(o.index());var l=T.wrapper.children("."+T.params.slidePrevClass);l.length>0&&T.lazy.loadImageInSlide(l.index())}},onTransitionStart:function(){T.params.lazyLoading&&(T.params.lazyLoadingOnTransitionStart||!T.params.lazyLoadingOnTransitionStart&&!T.lazy.initialImageLoaded)&&T.lazy.load()},onTransitionEnd:function(){T.params.lazyLoading&&!T.params.lazyLoadingOnTransitionStart&&T.lazy.load()}},T.scrollbar={isTouched:!1,setDragPosition:function(e){var a=T.scrollbar,t=T.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].pageX:e.pageX||e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].pageY:e.pageY||e.clientY,s=t-a.track.offset()[T.isHorizontal()?"left":"top"]-a.dragSize/2,i=-T.minTranslate()*a.moveDivider,r=-T.maxTranslate()*a.moveDivider;s<i?s=i:s>r&&(s=r),s=-s/a.moveDivider,T.updateProgress(s),T.setWrapperTranslate(s,!0)},dragStart:function(e){var a=T.scrollbar;a.isTouched=!0,e.preventDefault(),e.stopPropagation(),a.setDragPosition(e),clearTimeout(a.dragTimeout),a.track.transition(0),T.params.scrollbarHide&&a.track.css("opacity",1),T.wrapper.transition(100),a.drag.transition(100),T.emit("onScrollbarDragStart",T)},dragMove:function(e){var a=T.scrollbar;a.isTouched&&(e.preventDefault?e.preventDefault():e.returnValue=!1,a.setDragPosition(e),T.wrapper.transition(0),a.track.transition(0),a.drag.transition(0),T.emit("onScrollbarDragMove",T))},dragEnd:function(e){var a=T.scrollbar;a.isTouched&&(a.isTouched=!1,T.params.scrollbarHide&&(clearTimeout(a.dragTimeout),a.dragTimeout=setTimeout(function(){a.track.css("opacity",0),a.track.transition(400)},1e3)),T.emit("onScrollbarDragEnd",T),T.params.scrollbarSnapOnRelease&&T.slideReset())},draggableEvents:function(){return T.params.simulateTouch!==!1||T.support.touch?T.touchEvents:T.touchEventsDesktop}(),enableDraggable:function(){var a=T.scrollbar,t=T.support.touch?a.track:document;e(a.track).on(a.draggableEvents.start,a.dragStart),e(t).on(a.draggableEvents.move,a.dragMove),e(t).on(a.draggableEvents.end,a.dragEnd)},disableDraggable:function(){var a=T.scrollbar,t=T.support.touch?a.track:document;e(a.track).off(a.draggableEvents.start,a.dragStart),e(t).off(a.draggableEvents.move,a.dragMove),e(t).off(a.draggableEvents.end,a.dragEnd)},set:function(){if(T.params.scrollbar){var a=T.scrollbar;a.track=e(T.params.scrollbar),T.params.uniqueNavElements&&"string"==typeof T.params.scrollbar&&a.track.length>1&&1===T.container.find(T.params.scrollbar).length&&(a.track=T.container.find(T.params.scrollbar)),a.drag=a.track.find(".swiper-scrollbar-drag"),0===a.drag.length&&(a.drag=e('<div class="swiper-scrollbar-drag"></div>'),a.track.append(a.drag)),a.drag[0].style.width="",a.drag[0].style.height="",a.trackSize=T.isHorizontal()?a.track[0].offsetWidth:a.track[0].offsetHeight,a.divider=T.size/T.virtualSize,a.moveDivider=a.divider*(a.trackSize/T.size),a.dragSize=a.trackSize*a.divider,T.isHorizontal()?a.drag[0].style.width=a.dragSize+"px":a.drag[0].style.height=a.dragSize+"px",a.divider>=1?a.track[0].style.display="none":a.track[0].style.display="",T.params.scrollbarHide&&(a.track[0].style.opacity=0)}},setTranslate:function(){if(T.params.scrollbar){var e,a=T.scrollbar,t=(T.translate,a.dragSize);e=(a.trackSize-a.dragSize)*T.progress,T.rtl&&T.isHorizontal()?(e=-e,e>0?(t=a.dragSize-e,e=0):-e+a.dragSize>a.trackSize&&(t=a.trackSize+e)):e<0?(t=a.dragSize+e,e=0):e+a.dragSize>a.trackSize&&(t=a.trackSize-e),T.isHorizontal()?(T.support.transforms3d?a.drag.transform("translate3d("+e+"px, 0, 0)"):a.drag.transform("translateX("+e+"px)"),a.drag[0].style.width=t+"px"):(T.support.transforms3d?a.drag.transform("translate3d(0px, "+e+"px, 0)"):a.drag.transform("translateY("+e+"px)"),a.drag[0].style.height=t+"px"),T.params.scrollbarHide&&(clearTimeout(a.timeout),a.track[0].style.opacity=1,a.timeout=setTimeout(function(){a.track[0].style.opacity=0,a.track.transition(400)},1e3))}},setTransition:function(e){T.params.scrollbar&&T.scrollbar.drag.transition(e)}},T.controller={LinearSpline:function(e,a){var t=function(){var e,a,t;return function(s,i){for(a=-1,e=s.length;e-a>1;)s[t=e+a>>1]<=i?a=t:e=t;return e}}();this.x=e,this.y=a,this.lastIndex=e.length-1;var s,i;this.x.length;this.interpolate=function(e){return e?(i=t(this.x,e),s=i-1,(e-this.x[s])*(this.y[i]-this.y[s])/(this.x[i]-this.x[s])+this.y[s]):0}},getInterpolateFunction:function(e){T.controller.spline||(T.controller.spline=T.params.loop?new T.controller.LinearSpline(T.slidesGrid,e.slidesGrid):new T.controller.LinearSpline(T.snapGrid,e.snapGrid))},setTranslate:function(e,t){function s(a){e=a.rtl&&"horizontal"===a.params.direction?-T.translate:T.translate,"slide"===T.params.controlBy&&(T.controller.getInterpolateFunction(a),r=-T.controller.spline.interpolate(-e)),r&&"container"!==T.params.controlBy||(i=(a.maxTranslate()-a.minTranslate())/(T.maxTranslate()-T.minTranslate()),r=(e-T.minTranslate())*i+a.minTranslate()),T.params.controlInverse&&(r=a.maxTranslate()-r),a.updateProgress(r),a.setWrapperTranslate(r,!1,T),a.updateActiveIndex()}var i,r,n=T.params.control;if(Array.isArray(n))for(var o=0;o<n.length;o++)n[o]!==t&&n[o]instanceof a&&s(n[o]);else n instanceof a&&t!==n&&s(n)},setTransition:function(e,t){function s(a){a.setWrapperTransition(e,T),0!==e&&(a.onTransitionStart(),a.wrapper.transitionEnd(function(){r&&(a.params.loop&&"slide"===T.params.controlBy&&a.fixLoop(),a.onTransitionEnd())}))}var i,r=T.params.control;if(Array.isArray(r))for(i=0;i<r.length;i++)r[i]!==t&&r[i]instanceof a&&s(r[i]);else r instanceof a&&t!==r&&s(r)}},T.hashnav={onHashCange:function(e,a){var t=document.location.hash.replace("#","");t!==T.slides.eq(T.activeIndex).attr("data-hash")&&T.slideTo(T.wrapper.children("."+T.params.slideClass+'[data-hash="'+t+'"]').index())},attachEvents:function(a){var t=a?"off":"on";e(window)[t]("hashchange",T.hashnav.onHashCange)},setHash:function(){
  if(T.hashnav.initialized&&T.params.hashnav)if(T.params.replaceState&&window.history&&window.history.replaceState)window.history.replaceState(null,null,"#"+T.slides.eq(T.activeIndex).attr("data-hash")||"");else{var e=T.slides.eq(T.activeIndex),a=e.attr("data-hash")||e.attr("data-history");document.location.hash=a||""}},init:function(){if(T.params.hashnav&&!T.params.history){T.hashnav.initialized=!0;var e=document.location.hash.replace("#","");if(e)for(var a=0,t=T.slides.length;a<t;a++){var s=T.slides.eq(a),i=s.attr("data-hash")||s.attr("data-history");if(i===e&&!s.hasClass(T.params.slideDuplicateClass)){var r=s.index();T.slideTo(r,0,T.params.runCallbacksOnInit,!0)}}T.params.hashnavWatchState&&T.hashnav.attachEvents()}},destroy:function(){T.params.hashnavWatchState&&T.hashnav.attachEvents(!0)}},T.history={init:function(){if(T.params.history){if(!window.history||!window.history.pushState)return T.params.history=!1,void(T.params.hashnav=!0);T.history.initialized=!0,this.paths=this.getPathValues(),(this.paths.key||this.paths.value)&&(this.scrollToSlide(0,this.paths.value,T.params.runCallbacksOnInit),T.params.replaceState||window.addEventListener("popstate",this.setHistoryPopState))}},setHistoryPopState:function(){T.history.paths=T.history.getPathValues(),T.history.scrollToSlide(T.params.speed,T.history.paths.value,!1)},getPathValues:function(){var e=window.location.pathname.slice(1).split("/"),a=e.length;return{key:e[a-2],value:e[a-1]}},setHistory:function(e,a){if(T.history.initialized&&T.params.history){var t=T.slides.eq(a),s=this.slugify(t.attr("data-history"));window.location.pathname.includes(e)||(s=e+"/"+s),T.params.replaceState?window.history.replaceState(null,null,s):window.history.pushState(null,null,s)}},slugify:function(e){return e.toString().toLowerCase().replace(/\s+/g,"-").replace(/[^\w\-]+/g,"").replace(/\-\-+/g,"-").replace(/^-+/,"").replace(/-+$/,"")},scrollToSlide:function(e,a,t){if(a)for(var s=0,i=T.slides.length;s<i;s++){var r=T.slides.eq(s),n=this.slugify(r.attr("data-history"));if(n===a&&!r.hasClass(T.params.slideDuplicateClass)){var o=r.index();T.slideTo(o,e,t)}}else T.slideTo(0,e,t)}},T.disableKeyboardControl=function(){T.params.keyboardControl=!1,e(document).off("keydown",p)},T.enableKeyboardControl=function(){T.params.keyboardControl=!0,e(document).on("keydown",p)},T.mousewheel={event:!1,lastScrollTime:(new window.Date).getTime()},T.params.mousewheelControl&&(T.mousewheel.event=navigator.userAgent.indexOf("firefox")>-1?"DOMMouseScroll":function(){var e="onwheel"in document;if(!e){var a=document.createElement("div");a.setAttribute("onwheel","return;"),e="function"==typeof a.onwheel}return!e&&document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0&&(e=document.implementation.hasFeature("Events.wheel","3.0")),e}()?"wheel":"mousewheel"),T.disableMousewheelControl=function(){if(!T.mousewheel.event)return!1;var a=T.container;return"container"!==T.params.mousewheelEventsTarged&&(a=e(T.params.mousewheelEventsTarged)),a.off(T.mousewheel.event,u),T.params.mousewheelControl=!1,!0},T.enableMousewheelControl=function(){if(!T.mousewheel.event)return!1;var a=T.container;return"container"!==T.params.mousewheelEventsTarged&&(a=e(T.params.mousewheelEventsTarged)),a.on(T.mousewheel.event,u),T.params.mousewheelControl=!0,!0},T.parallax={setTranslate:function(){T.container.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(){c(this,T.progress)}),T.slides.each(function(){var a=e(this);a.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(){c(this,Math.min(Math.max(a[0].progress,-1),1))})})},setTransition:function(a){void 0===a&&(a=T.params.speed),T.container.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(){var t=e(this),s=parseInt(t.attr("data-swiper-parallax-duration"),10)||a;0===a&&(s=0),t.transition(s)})}},T.zoom={scale:1,currentScale:1,isScaling:!1,gesture:{slide:void 0,slideWidth:void 0,slideHeight:void 0,image:void 0,imageWrap:void 0,zoomMax:T.params.zoomMax},image:{isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},velocity:{x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0},getDistanceBetweenTouches:function(e){if(e.targetTouches.length<2)return 1;var a=e.targetTouches[0].pageX,t=e.targetTouches[0].pageY,s=e.targetTouches[1].pageX,i=e.targetTouches[1].pageY;return Math.sqrt(Math.pow(s-a,2)+Math.pow(i-t,2))},onGestureStart:function(a){var t=T.zoom;if(!T.support.gestures){if("touchstart"!==a.type||"touchstart"===a.type&&a.targetTouches.length<2)return;t.gesture.scaleStart=t.getDistanceBetweenTouches(a)}if(!(t.gesture.slide&&t.gesture.slide.length||(t.gesture.slide=e(this),0===t.gesture.slide.length&&(t.gesture.slide=T.slides.eq(T.activeIndex)),t.gesture.image=t.gesture.slide.find("img, svg, canvas"),t.gesture.imageWrap=t.gesture.image.parent("."+T.params.zoomContainerClass),t.gesture.zoomMax=t.gesture.imageWrap.attr("data-swiper-zoom")||T.params.zoomMax,0!==t.gesture.imageWrap.length)))return void(t.gesture.image=void 0);t.gesture.image.transition(0),t.isScaling=!0},onGestureChange:function(e){var a=T.zoom;if(!T.support.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;a.gesture.scaleMove=a.getDistanceBetweenTouches(e)}a.gesture.image&&0!==a.gesture.image.length&&(T.support.gestures?a.scale=e.scale*a.currentScale:a.scale=a.gesture.scaleMove/a.gesture.scaleStart*a.currentScale,a.scale>a.gesture.zoomMax&&(a.scale=a.gesture.zoomMax-1+Math.pow(a.scale-a.gesture.zoomMax+1,.5)),a.scale<T.params.zoomMin&&(a.scale=T.params.zoomMin+1-Math.pow(T.params.zoomMin-a.scale+1,.5)),a.gesture.image.transform("translate3d(0,0,0) scale("+a.scale+")"))},onGestureEnd:function(e){var a=T.zoom;!T.support.gestures&&("touchend"!==e.type||"touchend"===e.type&&e.changedTouches.length<2)||a.gesture.image&&0!==a.gesture.image.length&&(a.scale=Math.max(Math.min(a.scale,a.gesture.zoomMax),T.params.zoomMin),a.gesture.image.transition(T.params.speed).transform("translate3d(0,0,0) scale("+a.scale+")"),a.currentScale=a.scale,a.isScaling=!1,1===a.scale&&(a.gesture.slide=void 0))},onTouchStart:function(e,a){var t=e.zoom;t.gesture.image&&0!==t.gesture.image.length&&(t.image.isTouched||("android"===e.device.os&&a.preventDefault(),t.image.isTouched=!0,t.image.touchesStart.x="touchstart"===a.type?a.targetTouches[0].pageX:a.pageX,t.image.touchesStart.y="touchstart"===a.type?a.targetTouches[0].pageY:a.pageY))},onTouchMove:function(e){var a=T.zoom;if(a.gesture.image&&0!==a.gesture.image.length&&(T.allowClick=!1,a.image.isTouched&&a.gesture.slide)){a.image.isMoved||(a.image.width=a.gesture.image[0].offsetWidth,a.image.height=a.gesture.image[0].offsetHeight,a.image.startX=T.getTranslate(a.gesture.imageWrap[0],"x")||0,a.image.startY=T.getTranslate(a.gesture.imageWrap[0],"y")||0,a.gesture.slideWidth=a.gesture.slide[0].offsetWidth,a.gesture.slideHeight=a.gesture.slide[0].offsetHeight,a.gesture.imageWrap.transition(0),T.rtl&&(a.image.startX=-a.image.startX),T.rtl&&(a.image.startY=-a.image.startY));var t=a.image.width*a.scale,s=a.image.height*a.scale;if(!(t<a.gesture.slideWidth&&s<a.gesture.slideHeight)){if(a.image.minX=Math.min(a.gesture.slideWidth/2-t/2,0),a.image.maxX=-a.image.minX,a.image.minY=Math.min(a.gesture.slideHeight/2-s/2,0),a.image.maxY=-a.image.minY,a.image.touchesCurrent.x="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,a.image.touchesCurrent.y="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,!a.image.isMoved&&!a.isScaling){if(T.isHorizontal()&&Math.floor(a.image.minX)===Math.floor(a.image.startX)&&a.image.touchesCurrent.x<a.image.touchesStart.x||Math.floor(a.image.maxX)===Math.floor(a.image.startX)&&a.image.touchesCurrent.x>a.image.touchesStart.x)return void(a.image.isTouched=!1);if(!T.isHorizontal()&&Math.floor(a.image.minY)===Math.floor(a.image.startY)&&a.image.touchesCurrent.y<a.image.touchesStart.y||Math.floor(a.image.maxY)===Math.floor(a.image.startY)&&a.image.touchesCurrent.y>a.image.touchesStart.y)return void(a.image.isTouched=!1)}e.preventDefault(),e.stopPropagation(),a.image.isMoved=!0,a.image.currentX=a.image.touchesCurrent.x-a.image.touchesStart.x+a.image.startX,a.image.currentY=a.image.touchesCurrent.y-a.image.touchesStart.y+a.image.startY,a.image.currentX<a.image.minX&&(a.image.currentX=a.image.minX+1-Math.pow(a.image.minX-a.image.currentX+1,.8)),a.image.currentX>a.image.maxX&&(a.image.currentX=a.image.maxX-1+Math.pow(a.image.currentX-a.image.maxX+1,.8)),a.image.currentY<a.image.minY&&(a.image.currentY=a.image.minY+1-Math.pow(a.image.minY-a.image.currentY+1,.8)),a.image.currentY>a.image.maxY&&(a.image.currentY=a.image.maxY-1+Math.pow(a.image.currentY-a.image.maxY+1,.8)),a.velocity.prevPositionX||(a.velocity.prevPositionX=a.image.touchesCurrent.x),a.velocity.prevPositionY||(a.velocity.prevPositionY=a.image.touchesCurrent.y),a.velocity.prevTime||(a.velocity.prevTime=Date.now()),a.velocity.x=(a.image.touchesCurrent.x-a.velocity.prevPositionX)/(Date.now()-a.velocity.prevTime)/2,a.velocity.y=(a.image.touchesCurrent.y-a.velocity.prevPositionY)/(Date.now()-a.velocity.prevTime)/2,Math.abs(a.image.touchesCurrent.x-a.velocity.prevPositionX)<2&&(a.velocity.x=0),Math.abs(a.image.touchesCurrent.y-a.velocity.prevPositionY)<2&&(a.velocity.y=0),a.velocity.prevPositionX=a.image.touchesCurrent.x,a.velocity.prevPositionY=a.image.touchesCurrent.y,a.velocity.prevTime=Date.now(),a.gesture.imageWrap.transform("translate3d("+a.image.currentX+"px, "+a.image.currentY+"px,0)")}}},onTouchEnd:function(e,a){var t=e.zoom;if(t.gesture.image&&0!==t.gesture.image.length){if(!t.image.isTouched||!t.image.isMoved)return t.image.isTouched=!1,void(t.image.isMoved=!1);t.image.isTouched=!1,t.image.isMoved=!1;var s=300,i=300,r=t.velocity.x*s,n=t.image.currentX+r,o=t.velocity.y*i,l=t.image.currentY+o;0!==t.velocity.x&&(s=Math.abs((n-t.image.currentX)/t.velocity.x)),0!==t.velocity.y&&(i=Math.abs((l-t.image.currentY)/t.velocity.y));var p=Math.max(s,i);t.image.currentX=n,t.image.currentY=l;var d=t.image.width*t.scale,u=t.image.height*t.scale;t.image.minX=Math.min(t.gesture.slideWidth/2-d/2,0),t.image.maxX=-t.image.minX,t.image.minY=Math.min(t.gesture.slideHeight/2-u/2,0),t.image.maxY=-t.image.minY,t.image.currentX=Math.max(Math.min(t.image.currentX,t.image.maxX),t.image.minX),t.image.currentY=Math.max(Math.min(t.image.currentY,t.image.maxY),t.image.minY),t.gesture.imageWrap.transition(p).transform("translate3d("+t.image.currentX+"px, "+t.image.currentY+"px,0)")}},onTransitionEnd:function(e){var a=e.zoom;a.gesture.slide&&e.previousIndex!==e.activeIndex&&(a.gesture.image.transform("translate3d(0,0,0) scale(1)"),a.gesture.imageWrap.transform("translate3d(0,0,0)"),a.gesture.slide=a.gesture.image=a.gesture.imageWrap=void 0,a.scale=a.currentScale=1)},toggleZoom:function(a,t){var s=a.zoom;if(s.gesture.slide||(s.gesture.slide=a.clickedSlide?e(a.clickedSlide):a.slides.eq(a.activeIndex),s.gesture.image=s.gesture.slide.find("img, svg, canvas"),s.gesture.imageWrap=s.gesture.image.parent("."+a.params.zoomContainerClass)),s.gesture.image&&0!==s.gesture.image.length){var i,r,n,o,l,p,d,u,c,m,h,g,f,v,w,y,x,T;void 0===s.image.touchesStart.x&&t?(i="touchend"===t.type?t.changedTouches[0].pageX:t.pageX,r="touchend"===t.type?t.changedTouches[0].pageY:t.pageY):(i=s.image.touchesStart.x,r=s.image.touchesStart.y),s.scale&&1!==s.scale?(s.scale=s.currentScale=1,s.gesture.imageWrap.transition(300).transform("translate3d(0,0,0)"),s.gesture.image.transition(300).transform("translate3d(0,0,0) scale(1)"),s.gesture.slide=void 0):(s.scale=s.currentScale=s.gesture.imageWrap.attr("data-swiper-zoom")||a.params.zoomMax,t?(x=s.gesture.slide[0].offsetWidth,T=s.gesture.slide[0].offsetHeight,n=s.gesture.slide.offset().left,o=s.gesture.slide.offset().top,l=n+x/2-i,p=o+T/2-r,c=s.gesture.image[0].offsetWidth,m=s.gesture.image[0].offsetHeight,h=c*s.scale,g=m*s.scale,f=Math.min(x/2-h/2,0),v=Math.min(T/2-g/2,0),w=-f,y=-v,d=l*s.scale,u=p*s.scale,d<f&&(d=f),d>w&&(d=w),u<v&&(u=v),u>y&&(u=y)):(d=0,u=0),s.gesture.imageWrap.transition(300).transform("translate3d("+d+"px, "+u+"px,0)"),s.gesture.image.transition(300).transform("translate3d(0,0,0) scale("+s.scale+")"))}},attachEvents:function(a){var t=a?"off":"on";if(T.params.zoom){var s=(T.slides,!("touchstart"!==T.touchEvents.start||!T.support.passiveListener||!T.params.passiveListeners)&&{passive:!0,capture:!1});T.support.gestures?(T.slides[t]("gesturestart",T.zoom.onGestureStart,s),T.slides[t]("gesturechange",T.zoom.onGestureChange,s),T.slides[t]("gestureend",T.zoom.onGestureEnd,s)):"touchstart"===T.touchEvents.start&&(T.slides[t](T.touchEvents.start,T.zoom.onGestureStart,s),T.slides[t](T.touchEvents.move,T.zoom.onGestureChange,s),T.slides[t](T.touchEvents.end,T.zoom.onGestureEnd,s)),T[t]("touchStart",T.zoom.onTouchStart),T.slides.each(function(a,s){e(s).find("."+T.params.zoomContainerClass).length>0&&e(s)[t](T.touchEvents.move,T.zoom.onTouchMove)}),T[t]("touchEnd",T.zoom.onTouchEnd),T[t]("transitionEnd",T.zoom.onTransitionEnd),T.params.zoomToggle&&T.on("doubleTap",T.zoom.toggleZoom)}},init:function(){T.zoom.attachEvents()},destroy:function(){T.zoom.attachEvents(!0)}},T._plugins=[];for(var Y in T.plugins){var O=T.plugins[Y](T,T.params[Y]);O&&T._plugins.push(O)}return T.callPlugins=function(e){for(var a=0;a<T._plugins.length;a++)e in T._plugins[a]&&T._plugins[a][e](arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])},T.emitterEventListeners={},T.emit=function(e){T.params[e]&&T.params[e](arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]);var a;if(T.emitterEventListeners[e])for(a=0;a<T.emitterEventListeners[e].length;a++)T.emitterEventListeners[e][a](arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]);T.callPlugins&&T.callPlugins(e,arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])},T.on=function(e,a){return e=m(e),T.emitterEventListeners[e]||(T.emitterEventListeners[e]=[]),T.emitterEventListeners[e].push(a),T},T.off=function(e,a){var t;if(e=m(e),void 0===a)return T.emitterEventListeners[e]=[],T;if(T.emitterEventListeners[e]&&0!==T.emitterEventListeners[e].length){for(t=0;t<T.emitterEventListeners[e].length;t++)T.emitterEventListeners[e][t]===a&&T.emitterEventListeners[e].splice(t,1);return T}},T.once=function(e,a){e=m(e);var t=function(){a(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4]),T.off(e,t)};return T.on(e,t),T},T.a11y={makeFocusable:function(e){return e.attr("tabIndex","0"),e},addRole:function(e,a){return e.attr("role",a),e},addLabel:function(e,a){return e.attr("aria-label",a),e},disable:function(e){return e.attr("aria-disabled",!0),e},enable:function(e){return e.attr("aria-disabled",!1),e},onEnterKey:function(a){13===a.keyCode&&(e(a.target).is(T.params.nextButton)?(T.onClickNext(a),T.isEnd?T.a11y.notify(T.params.lastSlideMessage):T.a11y.notify(T.params.nextSlideMessage)):e(a.target).is(T.params.prevButton)&&(T.onClickPrev(a),T.isBeginning?T.a11y.notify(T.params.firstSlideMessage):T.a11y.notify(T.params.prevSlideMessage)),e(a.target).is("."+T.params.bulletClass)&&e(a.target)[0].click())},liveRegion:e('<span class="'+T.params.notificationClass+'" aria-live="assertive" aria-atomic="true"></span>'),notify:function(e){var a=T.a11y.liveRegion;0!==a.length&&(a.html(""),a.html(e))},init:function(){T.params.nextButton&&T.nextButton&&T.nextButton.length>0&&(T.a11y.makeFocusable(T.nextButton),T.a11y.addRole(T.nextButton,"button"),T.a11y.addLabel(T.nextButton,T.params.nextSlideMessage)),T.params.prevButton&&T.prevButton&&T.prevButton.length>0&&(T.a11y.makeFocusable(T.prevButton),T.a11y.addRole(T.prevButton,"button"),T.a11y.addLabel(T.prevButton,T.params.prevSlideMessage)),e(T.container).append(T.a11y.liveRegion)},initPagination:function(){T.params.pagination&&T.params.paginationClickable&&T.bullets&&T.bullets.length&&T.bullets.each(function(){var a=e(this);T.a11y.makeFocusable(a),T.a11y.addRole(a,"button"),T.a11y.addLabel(a,T.params.paginationBulletMessage.replace(/{{index}}/,a.index()+1))})},destroy:function(){T.a11y.liveRegion&&T.a11y.liveRegion.length>0&&T.a11y.liveRegion.remove()}},T.init=function(){T.params.loop&&T.createLoop(),T.updateContainerSize(),T.updateSlidesSize(),T.updatePagination(),T.params.scrollbar&&T.scrollbar&&(T.scrollbar.set(),T.params.scrollbarDraggable&&T.scrollbar.enableDraggable()),"slide"!==T.params.effect&&T.effects[T.params.effect]&&(T.params.loop||T.updateProgress(),T.effects[T.params.effect].setTranslate()),T.params.loop?T.slideTo(T.params.initialSlide+T.loopedSlides,0,T.params.runCallbacksOnInit):(T.slideTo(T.params.initialSlide,0,T.params.runCallbacksOnInit),0===T.params.initialSlide&&(T.parallax&&T.params.parallax&&T.parallax.setTranslate(),T.lazy&&T.params.lazyLoading&&(T.lazy.load(),T.lazy.initialImageLoaded=!0))),T.attachEvents(),T.params.observer&&T.support.observer&&T.initObservers(),T.params.preloadImages&&!T.params.lazyLoading&&T.preloadImages(),T.params.zoom&&T.zoom&&T.zoom.init(),T.params.autoplay&&T.startAutoplay(),T.params.keyboardControl&&T.enableKeyboardControl&&T.enableKeyboardControl(),T.params.mousewheelControl&&T.enableMousewheelControl&&T.enableMousewheelControl(),T.params.hashnavReplaceState&&(T.params.replaceState=T.params.hashnavReplaceState),T.params.history&&T.history&&T.history.init(),T.params.hashnav&&T.hashnav&&T.hashnav.init(),T.params.a11y&&T.a11y&&T.a11y.init(),T.emit("onInit",T)},T.cleanupStyles=function(){T.container.removeClass(T.classNames.join(" ")).removeAttr("style"),T.wrapper.removeAttr("style"),T.slides&&T.slides.length&&T.slides.removeClass([T.params.slideVisibleClass,T.params.slideActiveClass,T.params.slideNextClass,T.params.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-column").removeAttr("data-swiper-row"),T.paginationContainer&&T.paginationContainer.length&&T.paginationContainer.removeClass(T.params.paginationHiddenClass),T.bullets&&T.bullets.length&&T.bullets.removeClass(T.params.bulletActiveClass),T.params.prevButton&&e(T.params.prevButton).removeClass(T.params.buttonDisabledClass),T.params.nextButton&&e(T.params.nextButton).removeClass(T.params.buttonDisabledClass),T.params.scrollbar&&T.scrollbar&&(T.scrollbar.track&&T.scrollbar.track.length&&T.scrollbar.track.removeAttr("style"),T.scrollbar.drag&&T.scrollbar.drag.length&&T.scrollbar.drag.removeAttr("style"))},T.destroy=function(e,a){T.detachEvents(),T.stopAutoplay(),T.params.scrollbar&&T.scrollbar&&T.params.scrollbarDraggable&&T.scrollbar.disableDraggable(),T.params.loop&&T.destroyLoop(),a&&T.cleanupStyles(),T.disconnectObservers(),T.params.zoom&&T.zoom&&T.zoom.destroy(),T.params.keyboardControl&&T.disableKeyboardControl&&T.disableKeyboardControl(),T.params.mousewheelControl&&T.disableMousewheelControl&&T.disableMousewheelControl(),T.params.a11y&&T.a11y&&T.a11y.destroy(),T.params.history&&!T.params.replaceState&&window.removeEventListener("popstate",T.history.setHistoryPopState),T.params.hashnav&&T.hashnav&&T.hashnav.destroy(),T.emit("onDestroy"),e!==!1&&(T=null)},T.init(),T}};a.prototype={isSafari:function(){var e=window.navigator.userAgent.toLowerCase();return e.indexOf("safari")>=0&&e.indexOf("chrome")<0&&e.indexOf("android")<0}(),isUiWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},browser:{ie:window.navigator.pointerEnabled||window.navigator.msPointerEnabled,ieTouch:window.navigator.msPointerEnabled&&window.navigator.msMaxTouchPoints>1||window.navigator.pointerEnabled&&window.navigator.maxTouchPoints>1,lteIE9:function(){var e=document.createElement("div");return e.innerHTML="<!--[if lte IE 9]><i></i><![endif]-->",1===e.getElementsByTagName("i").length}()},device:function(){var e=window.navigator.userAgent,a=e.match(/(Android);?[\s\/]+([\d.]+)?/),t=e.match(/(iPad).*OS\s([\d_]+)/),s=e.match(/(iPod)(.*OS\s([\d_]+))?/),i=!t&&e.match(/(iPhone\sOS|iOS)\s([\d_]+)/);return{ios:t||i||s,android:a}}(),support:{touch:window.Modernizr&&Modernizr.touch===!0||function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)}(),transforms3d:window.Modernizr&&Modernizr.csstransforms3d===!0||function(){var e=document.createElement("div").style;return"webkitPerspective"in e||"MozPerspective"in e||"OPerspective"in e||"MsPerspective"in e||"perspective"in e}(),flexbox:function(){for(var e=document.createElement("div").style,a="alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient".split(" "),t=0;t<a.length;t++)if(a[t]in e)return!0}(),observer:function(){return"MutationObserver"in window||"WebkitMutationObserver"in window}(),passiveListener:function(){var e=!1;try{var a=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("testPassiveListener",null,a)}catch(e){}return e}(),gestures:function(){return"ongesturestart"in window}()},plugins:{}};for(var t=(function(){var e=function(e){var a=this,t=0;for(t=0;t<e.length;t++)a[t]=e[t];return a.length=e.length,this},a=function(a,t){var s=[],i=0;if(a&&!t&&a instanceof e)return a;if(a)if("string"==typeof a){var r,n,o=a.trim();if(o.indexOf("<")>=0&&o.indexOf(">")>=0){var l="div";for(0===o.indexOf("<li")&&(l="ul"),0===o.indexOf("<tr")&&(l="tbody"),0!==o.indexOf("<td")&&0!==o.indexOf("<th")||(l="tr"),0===o.indexOf("<tbody")&&(l="table"),0===o.indexOf("<option")&&(l="select"),n=document.createElement(l),n.innerHTML=a,i=0;i<n.childNodes.length;i++)s.push(n.childNodes[i])}else for(r=t||"#"!==a[0]||a.match(/[ .<>:~]/)?(t||document).querySelectorAll(a):[document.getElementById(a.split("#")[1])],i=0;i<r.length;i++)r[i]&&s.push(r[i])}else if(a.nodeType||a===window||a===document)s.push(a);else if(a.length>0&&a[0].nodeType)for(i=0;i<a.length;i++)s.push(a[i]);return new e(s)};return e.prototype={addClass:function(e){if(void 0===e)return this;for(var a=e.split(" "),t=0;t<a.length;t++)for(var s=0;s<this.length;s++)this[s].classList.add(a[t]);return this},removeClass:function(e){for(var a=e.split(" "),t=0;t<a.length;t++)for(var s=0;s<this.length;s++)this[s].classList.remove(a[t]);return this},hasClass:function(e){return!!this[0]&&this[0].classList.contains(e)},toggleClass:function(e){for(var a=e.split(" "),t=0;t<a.length;t++)for(var s=0;s<this.length;s++)this[s].classList.toggle(a[t]);return this},attr:function(e,a){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(var t=0;t<this.length;t++)if(2===arguments.length)this[t].setAttribute(e,a);else for(var s in e)this[t][s]=e[s],this[t].setAttribute(s,e[s]);return this},removeAttr:function(e){for(var a=0;a<this.length;a++)this[a].removeAttribute(e);return this},data:function(e,a){if(void 0!==a){for(var t=0;t<this.length;t++){var s=this[t];s.dom7ElementDataStorage||(s.dom7ElementDataStorage={}),s.dom7ElementDataStorage[e]=a}return this}if(this[0]){var i=this[0].getAttribute("data-"+e);return i?i:this[0].dom7ElementDataStorage&&e in this[0].dom7ElementDataStorage?this[0].dom7ElementDataStorage[e]:void 0}},transform:function(e){for(var a=0;a<this.length;a++){var t=this[a].style;t.webkitTransform=t.MsTransform=t.msTransform=t.MozTransform=t.OTransform=t.transform=e}return this},transition:function(e){"string"!=typeof e&&(e+="ms");for(var a=0;a<this.length;a++){var t=this[a].style;t.webkitTransitionDuration=t.MsTransitionDuration=t.msTransitionDuration=t.MozTransitionDuration=t.OTransitionDuration=t.transitionDuration=e}return this},on:function(e,t,s,i){function r(e){var i=e.target;if(a(i).is(t))s.call(i,e);else for(var r=a(i).parents(),n=0;n<r.length;n++)a(r[n]).is(t)&&s.call(r[n],e)}var n,o,l=e.split(" ");for(n=0;n<this.length;n++)if("function"==typeof t||t===!1)for("function"==typeof t&&(s=arguments[1],i=arguments[2]||!1),o=0;o<l.length;o++)this[n].addEventListener(l[o],s,i);else for(o=0;o<l.length;o++)this[n].dom7LiveListeners||(this[n].dom7LiveListeners=[]),this[n].dom7LiveListeners.push({listener:s,liveListener:r}),this[n].addEventListener(l[o],r,i);return this},off:function(e,a,t,s){for(var i=e.split(" "),r=0;r<i.length;r++)for(var n=0;n<this.length;n++)if("function"==typeof a||a===!1)"function"==typeof a&&(t=arguments[1],s=arguments[2]||!1),this[n].removeEventListener(i[r],t,s);else if(this[n].dom7LiveListeners)for(var o=0;o<this[n].dom7LiveListeners.length;o++)this[n].dom7LiveListeners[o].listener===t&&this[n].removeEventListener(i[r],this[n].dom7LiveListeners[o].liveListener,s);return this},once:function(e,a,t,s){function i(n){t(n),r.off(e,a,i,s)}var r=this;"function"==typeof a&&(a=!1,t=arguments[1],s=arguments[2]),r.on(e,a,i,s)},trigger:function(e,a){for(var t=0;t<this.length;t++){var s;try{s=new window.CustomEvent(e,{detail:a,bubbles:!0,cancelable:!0})}catch(t){s=document.createEvent("Event"),s.initEvent(e,!0,!0),s.detail=a}this[t].dispatchEvent(s)}return this},transitionEnd:function(e){function a(r){if(r.target===this)for(e.call(this,r),t=0;t<s.length;t++)i.off(s[t],a)}var t,s=["webkitTransitionEnd","transitionend","oTransitionEnd","MSTransitionEnd","msTransitionEnd"],i=this;if(e)for(t=0;t<s.length;t++)i.on(s[t],a);return this},width:function(){return this[0]===window?window.innerWidth:this.length>0?parseFloat(this.css("width")):null},outerWidth:function(e){return this.length>0?e?this[0].offsetWidth+parseFloat(this.css("margin-right"))+parseFloat(this.css("margin-left")):this[0].offsetWidth:null},height:function(){return this[0]===window?window.innerHeight:this.length>0?parseFloat(this.css("height")):null},outerHeight:function(e){return this.length>0?e?this[0].offsetHeight+parseFloat(this.css("margin-top"))+parseFloat(this.css("margin-bottom")):this[0].offsetHeight:null},offset:function(){if(this.length>0){var e=this[0],a=e.getBoundingClientRect(),t=document.body,s=e.clientTop||t.clientTop||0,i=e.clientLeft||t.clientLeft||0,r=window.pageYOffset||e.scrollTop,n=window.pageXOffset||e.scrollLeft;return{top:a.top+r-s,left:a.left+n-i}}return null},css:function(e,a){var t;if(1===arguments.length){if("string"!=typeof e){for(t=0;t<this.length;t++)for(var s in e)this[t].style[s]=e[s];return this}if(this[0])return window.getComputedStyle(this[0],null).getPropertyValue(e)}if(2===arguments.length&&"string"==typeof e){for(t=0;t<this.length;t++)this[t].style[e]=a;return this}return this},each:function(e){for(var a=0;a<this.length;a++)e.call(this[a],a,this[a]);return this},html:function(e){if(void 0===e)return this[0]?this[0].innerHTML:void 0;for(var a=0;a<this.length;a++)this[a].innerHTML=e;return this},text:function(e){if(void 0===e)return this[0]?this[0].textContent.trim():null;for(var a=0;a<this.length;a++)this[a].textContent=e;return this},is:function(t){if(!this[0])return!1;var s,i;if("string"==typeof t){var r=this[0];if(r===document)return t===document;if(r===window)return t===window;if(r.matches)return r.matches(t);if(r.webkitMatchesSelector)return r.webkitMatchesSelector(t);if(r.mozMatchesSelector)return r.mozMatchesSelector(t);if(r.msMatchesSelector)return r.msMatchesSelector(t);for(s=a(t),i=0;i<s.length;i++)if(s[i]===this[0])return!0;return!1}if(t===document)return this[0]===document;if(t===window)return this[0]===window;if(t.nodeType||t instanceof e){for(s=t.nodeType?[t]:t,i=0;i<s.length;i++)if(s[i]===this[0])return!0;return!1}return!1},index:function(){if(this[0]){for(var e=this[0],a=0;null!==(e=e.previousSibling);)1===e.nodeType&&a++;return a}},eq:function(a){if(void 0===a)return this;var t,s=this.length;return a>s-1?new e([]):a<0?(t=s+a,new e(t<0?[]:[this[t]])):new e([this[a]])},append:function(a){var t,s;for(t=0;t<this.length;t++)if("string"==typeof a){var i=document.createElement("div");for(i.innerHTML=a;i.firstChild;)this[t].appendChild(i.firstChild)}else if(a instanceof e)for(s=0;s<a.length;s++)this[t].appendChild(a[s]);else this[t].appendChild(a);return this},prepend:function(a){var t,s;for(t=0;t<this.length;t++)if("string"==typeof a){var i=document.createElement("div");for(i.innerHTML=a,s=i.childNodes.length-1;s>=0;s--)this[t].insertBefore(i.childNodes[s],this[t].childNodes[0])}else if(a instanceof e)for(s=0;s<a.length;s++)this[t].insertBefore(a[s],this[t].childNodes[0]);else this[t].insertBefore(a,this[t].childNodes[0]);return this},insertBefore:function(e){for(var t=a(e),s=0;s<this.length;s++)if(1===t.length)t[0].parentNode.insertBefore(this[s],t[0]);else if(t.length>1)for(var i=0;i<t.length;i++)t[i].parentNode.insertBefore(this[s].cloneNode(!0),t[i])},insertAfter:function(e){for(var t=a(e),s=0;s<this.length;s++)if(1===t.length)t[0].parentNode.insertBefore(this[s],t[0].nextSibling);else if(t.length>1)for(var i=0;i<t.length;i++)t[i].parentNode.insertBefore(this[s].cloneNode(!0),t[i].nextSibling)},next:function(t){return new e(this.length>0?t?this[0].nextElementSibling&&a(this[0].nextElementSibling).is(t)?[this[0].nextElementSibling]:[]:this[0].nextElementSibling?[this[0].nextElementSibling]:[]:[])},nextAll:function(t){var s=[],i=this[0];if(!i)return new e([]);for(;i.nextElementSibling;){var r=i.nextElementSibling;t?a(r).is(t)&&s.push(r):s.push(r),i=r}return new e(s)},prev:function(t){return new e(this.length>0?t?this[0].previousElementSibling&&a(this[0].previousElementSibling).is(t)?[this[0].previousElementSibling]:[]:this[0].previousElementSibling?[this[0].previousElementSibling]:[]:[])},prevAll:function(t){var s=[],i=this[0];if(!i)return new e([]);for(;i.previousElementSibling;){var r=i.previousElementSibling;t?a(r).is(t)&&s.push(r):s.push(r),i=r}return new e(s)},parent:function(e){for(var t=[],s=0;s<this.length;s++)e?a(this[s].parentNode).is(e)&&t.push(this[s].parentNode):t.push(this[s].parentNode);return a(a.unique(t))},parents:function(e){for(var t=[],s=0;s<this.length;s++)for(var i=this[s].parentNode;i;)e?a(i).is(e)&&t.push(i):t.push(i),i=i.parentNode;return a(a.unique(t))},find:function(a){for(var t=[],s=0;s<this.length;s++)for(var i=this[s].querySelectorAll(a),r=0;r<i.length;r++)t.push(i[r]);return new e(t)},children:function(t){for(var s=[],i=0;i<this.length;i++)for(var r=this[i].childNodes,n=0;n<r.length;n++)t?1===r[n].nodeType&&a(r[n]).is(t)&&s.push(r[n]):1===r[n].nodeType&&s.push(r[n]);return new e(a.unique(s))},remove:function(){for(var e=0;e<this.length;e++)this[e].parentNode&&this[e].parentNode.removeChild(this[e]);return this},add:function(){var e,t,s=this;for(e=0;e<arguments.length;e++){var i=a(arguments[e]);for(t=0;t<i.length;t++)s[s.length]=i[t],s.length++}return s}},a.fn=e.prototype,a.unique=function(e){for(var a=[],t=0;t<e.length;t++)a.indexOf(e[t])===-1&&a.push(e[t]);return a},a}()),s=["jQuery","Zepto","Dom7"],i=0;i<s.length;i++)window[s[i]]&&function(e){e.fn.swiper=function(t){var s;return e(this).each(function(){var e=new a(this,t);s||(s=e)}),s}}(window[s[i]]);var r;r=void 0===t?window.Dom7||window.Zepto||window.jQuery:t,r&&("transitionEnd"in r.fn||(r.fn.transitionEnd=function(e){function a(r){if(r.target===this)for(e.call(this,r),t=0;t<s.length;t++)i.off(s[t],a)}var t,s=["webkitTransitionEnd","transitionend","oTransitionEnd","MSTransitionEnd","msTransitionEnd"],i=this;if(e)for(t=0;t<s.length;t++)i.on(s[t],a);return this}),"transform"in r.fn||(r.fn.transform=function(e){for(var a=0;a<this.length;a++){var t=this[a].style;t.webkitTransform=t.MsTransform=t.msTransform=t.MozTransform=t.OTransform=t.transform=e}return this}),"transition"in r.fn||(r.fn.transition=function(e){"string"!=typeof e&&(e+="ms");for(var a=0;a<this.length;a++){var t=this[a].style;t.webkitTransitionDuration=t.MsTransitionDuration=t.msTransitionDuration=t.MozTransitionDuration=t.OTransitionDuration=t.transitionDuration=e}return this}),"outerWidth"in r.fn||(r.fn.outerWidth=function(e){
  return this.length>0?e?this[0].offsetWidth+parseFloat(this.css("margin-right"))+parseFloat(this.css("margin-left")):this[0].offsetWidth:null})),window.Swiper=a}(),"undefined"!=typeof module?module.exports=window.Swiper:"function"==typeof define&&define.amd&&define([],function(){"use strict";return window.Swiper});
  //# sourceMappingURL=maps/swiper.min.js.map
  
  
  (function(root,factory){if(typeof exports==="object"&&exports){module.exports=factory}else if(typeof define==="function"&&define.amd){define(factory)}else{root.Mustache=factory}})(this,function(){var exports={};exports.name="mustache.js";exports.version="0.7.2";exports.tags=["{{","}}"];exports.Scanner=Scanner;exports.Context=Context;exports.Writer=Writer;var whiteRe=/\s*/;var spaceRe=/\s+/;var nonSpaceRe=/\S/;var eqRe=/\s*=/;var curlyRe=/\s*\}/;var tagRe=/#|\^|\/|>|\{|&|=|!/;function testRe(re,string){return RegExp.prototype.test.call(re,string)}function isWhitespace(string){return!testRe(nonSpaceRe,string)}var isArray=Array.isArray||function(obj){return Object.prototype.toString.call(obj)==="[object Array]"};function escapeRe(string){return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var entityMap={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};function escapeHtml(string){return String(string).replace(/[&<>"'\/]/g,function(s){return entityMap[s]})}exports.escape=escapeHtml;function Scanner(string){this.string=string;this.tail=string;this.pos=0}Scanner.prototype.eos=function(){return this.tail===""};Scanner.prototype.scan=function(re){var match=this.tail.match(re);if(match&&match.index===0){this.tail=this.tail.substring(match[0].length);this.pos+=match[0].length;return match[0]}return""};Scanner.prototype.scanUntil=function(re){var match,pos=this.tail.search(re);switch(pos){case-1:match=this.tail;this.pos+=this.tail.length;this.tail="";break;case 0:match="";break;default:match=this.tail.substring(0,pos);this.tail=this.tail.substring(pos);this.pos+=pos}return match};function Context(view,parent){this.view=view;this.parent=parent;this.clearCache()}Context.make=function(view){return view instanceof Context?view:new Context(view)};Context.prototype.clearCache=function(){this._cache={}};Context.prototype.push=function(view){return new Context(view,this)};Context.prototype.lookup=function(name){var value=this._cache[name];if(!value){if(name==="."){value=this.view}else{var context=this;while(context){if(name.indexOf(".")>0){var names=name.split("."),i=0;value=context.view;while(value&&i<names.length){value=value[names[i++]]}}else{value=context.view[name]}if(value!=null){break}context=context.parent}}this._cache[name]=value}if(typeof value==="function"){value=value.call(this.view)}return value};function Writer(){this.clearCache()}Writer.prototype.clearCache=function(){this._cache={};this._partialCache={}};Writer.prototype.compile=function(template,tags){var fn=this._cache[template];if(!fn){var tokens=exports.parse(template,tags);fn=this._cache[template]=this.compileTokens(tokens,template)}return fn};Writer.prototype.compilePartial=function(name,template,tags){var fn=this.compile(template,tags);this._partialCache[name]=fn;return fn};Writer.prototype.compileTokens=function(tokens,template){var fn=compileTokens(tokens);var self=this;return function(view,partials){if(partials){if(typeof partials==="function"){self._loadPartial=partials}else{for(var name in partials){self.compilePartial(name,partials[name])}}}return fn(self,Context.make(view),template)}};Writer.prototype.render=function(template,view,partials){return this.compile(template)(view,partials)};Writer.prototype._section=function(name,context,text,callback){var value=context.lookup(name);switch(typeof value){case"object":if(isArray(value)){var buffer="";for(var i=0,len=value.length;i<len;++i){buffer+=callback(this,context.push(value[i]))}return buffer}return value?callback(this,context.push(value)):"";case"function":var self=this;var scopedRender=function(template){return self.render(template,context)};var result=value.call(context.view,text,scopedRender);return result!=null?result:"";default:if(value){return callback(this,context)}}return""};Writer.prototype._inverted=function(name,context,callback){var value=context.lookup(name);if(!value||isArray(value)&&value.length===0){return callback(this,context)}return""};Writer.prototype._partial=function(name,context){if(!(name in this._partialCache)&&this._loadPartial){this.compilePartial(name,this._loadPartial(name))}var fn=this._partialCache[name];return fn?fn(context):""};Writer.prototype._name=function(name,context){var value=context.lookup(name);if(typeof value==="function"){value=value.call(context.view)}return value==null?"":String(value)};Writer.prototype._escaped=function(name,context){return exports.escape(this._name(name,context))};function compileTokens(tokens){var subRenders={};function subRender(i,tokens,template){if(!subRenders[i]){var fn=compileTokens(tokens);subRenders[i]=function(writer,context){return fn(writer,context,template)}}return subRenders[i]}return function(writer,context,template){var buffer="";var token,sectionText;for(var i=0,len=tokens.length;i<len;++i){token=tokens[i];switch(token[0]){case"#":sectionText=template.slice(token[3],token[5]);buffer+=writer._section(token[1],context,sectionText,subRender(i,token[4],template));break;case"^":buffer+=writer._inverted(token[1],context,subRender(i,token[4],template));break;case">":buffer+=writer._partial(token[1],context);break;case"&":buffer+=writer._name(token[1],context);break;case"name":buffer+=writer._escaped(token[1],context);break;case"text":buffer+=token[1];break}}return buffer}}function nestTokens(tokens){var tree=[];var collector=tree;var sections=[];var token;for(var i=0,len=tokens.length;i<len;++i){token=tokens[i];switch(token[0]){case"#":case"^":sections.push(token);collector.push(token);collector=token[4]=[];break;case"/":var section=sections.pop();section[5]=token[2];collector=sections.length>0?sections[sections.length-1][4]:tree;break;default:collector.push(token)}}return tree}function squashTokens(tokens){var squashedTokens=[];var token,lastToken;for(var i=0,len=tokens.length;i<len;++i){token=tokens[i];if(token[0]==="text"&&lastToken&&lastToken[0]==="text"){lastToken[1]+=token[1];lastToken[3]=token[3]}else{lastToken=token;squashedTokens.push(token)}}return squashedTokens}function escapeTags(tags){return[new RegExp(escapeRe(tags[0])+"\\s*"),new RegExp("\\s*"+escapeRe(tags[1]))]}exports.parse=function(template,tags){template=template||"";tags=tags||exports.tags;if(typeof tags==="string")tags=tags.split(spaceRe);if(tags.length!==2){throw new Error("Invalid tags: "+tags.join(", "))}var tagRes=escapeTags(tags);var scanner=new Scanner(template);var sections=[];var tokens=[];var spaces=[];var hasTag=false;var nonSpace=false;function stripSpace(){if(hasTag&&!nonSpace){while(spaces.length){tokens.splice(spaces.pop(),1)}}else{spaces=[]}hasTag=false;nonSpace=false}var start,type,value,chr;while(!scanner.eos()){start=scanner.pos;value=scanner.scanUntil(tagRes[0]);if(value){for(var i=0,len=value.length;i<len;++i){chr=value.charAt(i);if(isWhitespace(chr)){spaces.push(tokens.length)}else{nonSpace=true}tokens.push(["text",chr,start,start+1]);start+=1;if(chr==="\n"){stripSpace()}}}start=scanner.pos;if(!scanner.scan(tagRes[0])){break}hasTag=true;type=scanner.scan(tagRe)||"name";scanner.scan(whiteRe);if(type==="="){value=scanner.scanUntil(eqRe);scanner.scan(eqRe);scanner.scanUntil(tagRes[1])}else if(type==="{"){var closeRe=new RegExp("\\s*"+escapeRe("}"+tags[1]));value=scanner.scanUntil(closeRe);scanner.scan(curlyRe);scanner.scanUntil(tagRes[1]);type="&"}else{value=scanner.scanUntil(tagRes[1])}if(!scanner.scan(tagRes[1])){throw new Error("Unclosed tag at "+scanner.pos)}if(type==="/"){if(sections.length===0){throw new Error('Unopened section "'+value+'" at '+start)}var section=sections.pop();if(section[1]!==value){throw new Error('Unclosed section "'+section[1]+'" at '+start)}}var token=[type,value,start,scanner.pos];tokens.push(token);if(type==="#"||type==="^"){sections.push(token)}else if(type==="name"||type==="{"||type==="&"){nonSpace=true}else if(type==="="){tags=value.split(spaceRe);if(tags.length!==2){throw new Error("Invalid tags at "+start+": "+tags.join(", "))}tagRes=escapeTags(tags)}}var section=sections.pop();if(section){throw new Error('Unclosed section "'+section[1]+'" at '+scanner.pos)}return nestTokens(squashTokens(tokens))};var _writer=new Writer;exports.clearCache=function(){return _writer.clearCache()};exports.compile=function(template,tags){return _writer.compile(template,tags)};exports.compilePartial=function(name,template,tags){return _writer.compilePartial(name,template,tags)};exports.compileTokens=function(tokens,template){return _writer.compileTokens(tokens,template)};exports.render=function(template,view,partials){return _writer.render(template,view,partials)};exports.to_html=function(template,view,partials,send){var result=exports.render(template,view,partials);if(typeof send==="function"){send(result)}else{return result}};return exports}());
  
  !function(t){t.fn.ezShare=function(e){var a={wrapper:this,template:"#ezShareTemplate",faceBookUrl:"http://www.facebook.com/sharer.php",twitterUrl:"https://twitter.com/share",googlePlusUrl:"https://plus.google.com/share",externalTemplate:!1,externalTemplateFile:"js/ezShareTemplate.html"},e=t.extend(a,e),l=e,h=t(l.wrapper),r=t(l.template).html(),s=l.faceBookUrl,i=l.twitterUrl,o=l.googlePlusUrl,p=[];if(h.each(function(){p.push({faceBook:'window.open ("'+s+"?u="+t(this).data("url")+"&t="+t(this).data("title")+'","tdFBShare","status=0,resizable=1,height=400,width=600")',twitter:'window.open ("'+i+"?url="+t(this).data("url")+"&text="+escape(t(this).data("tweet"))+"&hashtags="+t(this).data("hash-tags")+' ,placeholder","tdTWShare","status=0,resizable=1,height=400,width=600")',googlePlus:'window.open ("'+o+"?url="+t(this).data("url")+'","tdTWShare","status=0,resizable=1,height=400,width=600")'})}),1==l.externalTemplate)t.get(l.externalTemplateFile,function(e){var a=t(e).filter(l.template).html(),r=Mustache.to_html(a,{shareData:p});h.html(r)});else{var u=Mustache.to_html(r,{shareData:p});h.html(u)}}}(jQuery);
  
  // Sticky Plugin v1.0.4 for jQuery
  // =============
  // Author: Anthony Garand
  // Improvements by German M. Bravo (Kronuz) and Ruud Kamphuis (ruudk)
  // Improvements by Leonardo C. Daronco (daronco)
  // Created: 02/14/2011
  // Date: 07/20/2015
  // Website: http://stickyjs.com/
  // Description: Makes an element on the page stick on the screen as you scroll
  //              It will only set the 'top' and 'position' of your element, you
  //              might need to adjust the width in some cases.
  
  (function (factory) {
      if (typeof define === 'function' && define.amd) {
          // AMD. Register as an anonymous module.
          define(['jquery'], factory);
      } else if (typeof module === 'object' && module.exports) {
          // Node/CommonJS
          module.exports = factory(require('jquery'));
      } else {
          // Browser globals
          factory(jQuery);
      }
  }(function ($) {
      var slice = Array.prototype.slice; // save ref to original slice()
      var splice = Array.prototype.splice; // save ref to original slice()
  
    var defaults = {
        topSpacing: 0,
        bottomSpacing: 0,
        className: 'is-sticky',
        wrapperClassName: 'sticky-wrapper',
        center: false,
        getWidthFrom: '',
        widthFromWrapper: true, // works only when .getWidthFrom is empty
        responsiveWidth: false,
        zIndex: 'inherit'
      },
      $window = $(window),
      $document = $(document),
      sticked = [],
      windowHeight = $window.height(),
      scroller = function() {
        var scrollTop = $window.scrollTop(),
          documentHeight = $document.height(),
          dwh = documentHeight - windowHeight,
          extra = (scrollTop > dwh) ? dwh - scrollTop : 0;
  
        for (var i = 0, l = sticked.length; i < l; i++) {
          var s = sticked[i],
            elementTop = s.stickyWrapper.offset().top,
            etse = elementTop - s.topSpacing - extra;
  
          //update height in case of dynamic content
          s.stickyWrapper.css('height', s.stickyElement.outerHeight());
  
          if (scrollTop <= etse) {
            if (s.currentTop !== null) {
              s.stickyElement
                .css({
                  'width': '',
                  'position': '',
                  'top': '',
                  'z-index': ''
                });
              s.stickyElement.parent().removeClass(s.className);
              s.stickyElement.trigger('sticky-end', [s]);
              s.currentTop = null;
            }
          }
          else {
            var newTop = documentHeight - s.stickyElement.outerHeight()
              - s.topSpacing - s.bottomSpacing - scrollTop - extra;
            if (newTop < 0) {
              newTop = newTop + s.topSpacing;
            } else {
              newTop = s.topSpacing;
            }
            if (s.currentTop !== newTop) {
              var newWidth;
              if (s.getWidthFrom) {
                  padding =  s.stickyElement.innerWidth() - s.stickyElement.width();
                  newWidth = $(s.getWidthFrom).width() - padding || null;
              } else if (s.widthFromWrapper) {
                  newWidth = s.stickyWrapper.width();
              }
              if (newWidth == null) {
                  newWidth = s.stickyElement.width();
              }
              s.stickyElement
                .css('width', newWidth)
                .css('position', 'fixed')
                .css('top', newTop)
                .css('z-index', s.zIndex);
  
              s.stickyElement.parent().addClass(s.className);
  
              if (s.currentTop === null) {
                s.stickyElement.trigger('sticky-start', [s]);
              } else {
                // sticky is started but it have to be repositioned
                s.stickyElement.trigger('sticky-update', [s]);
              }
  
              if (s.currentTop === s.topSpacing && s.currentTop > newTop || s.currentTop === null && newTop < s.topSpacing) {
                // just reached bottom || just started to stick but bottom is already reached
                s.stickyElement.trigger('sticky-bottom-reached', [s]);
              } else if(s.currentTop !== null && newTop === s.topSpacing && s.currentTop < newTop) {
                // sticky is started && sticked at topSpacing && overflowing from top just finished
                s.stickyElement.trigger('sticky-bottom-unreached', [s]);
              }
  
              s.currentTop = newTop;
            }
  
            // Check if sticky has reached end of container and stop sticking
            var stickyWrapperContainer = s.stickyWrapper.parent();
            var unstick = (s.stickyElement.offset().top + s.stickyElement.outerHeight() >= stickyWrapperContainer.offset().top + stickyWrapperContainer.outerHeight()) && (s.stickyElement.offset().top <= s.topSpacing);
  
            if( unstick ) {
              s.stickyElement
                .css('position', 'absolute')
                .css('top', '')
                .css('bottom', 0)
                .css('z-index', '');
            } else {
              s.stickyElement
                .css('position', 'fixed')
                .css('top', newTop)
                .css('bottom', '')
                .css('z-index', s.zIndex);
            }
          }
        }
      },
      resizer = function() {
        windowHeight = $window.height();
  
        for (var i = 0, l = sticked.length; i < l; i++) {
          var s = sticked[i];
          var newWidth = null;
          if (s.getWidthFrom) {
              if (s.responsiveWidth) {
                  newWidth = $(s.getWidthFrom).width();
              }
          } else if(s.widthFromWrapper) {
              newWidth = s.stickyWrapper.width();
          }
          if (newWidth != null) {
              s.stickyElement.css('width', newWidth);
          }
        }
      },
      methods = {
        init: function(options) {
          return this.each(function() {
            var o = $.extend({}, defaults, options);
            var stickyElement = $(this);
  
            var stickyId = stickyElement.attr('id');
            var wrapperId = stickyId ? stickyId + '-' + defaults.wrapperClassName : defaults.wrapperClassName;
            var wrapper = $('<div></div>')
              .attr('id', wrapperId)
              .addClass(o.wrapperClassName);
  
            stickyElement.wrapAll(function() {
              if ($(this).parent("#" + wrapperId).length == 0) {
                      return wrapper;
              }
  });
  
            var stickyWrapper = stickyElement.parent();
  
            if (o.center) {
              stickyWrapper.css({width:stickyElement.outerWidth(),marginLeft:"auto",marginRight:"auto"});
            }
  
            if (stickyElement.css("float") === "right") {
              stickyElement.css({"float":"none"}).parent().css({"float":"right"});
            }
  
            o.stickyElement = stickyElement;
            o.stickyWrapper = stickyWrapper;
            o.currentTop    = null;
  
            sticked.push(o);
  
            methods.setWrapperHeight(this);
            methods.setupChangeListeners(this);
          });
        },
  
        setWrapperHeight: function(stickyElement) {
          var element = $(stickyElement);
          var stickyWrapper = element.parent();
          if (stickyWrapper) {
            stickyWrapper.css('height', element.outerHeight());
          }
        },
  
        setupChangeListeners: function(stickyElement) {
          if (window.MutationObserver) {
            var mutationObserver = new window.MutationObserver(function(mutations) {
              if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) {
                methods.setWrapperHeight(stickyElement);
              }
            });
            mutationObserver.observe(stickyElement, {subtree: true, childList: true});
          } else {
            if (window.addEventListener) {
              stickyElement.addEventListener('DOMNodeInserted', function() {
                methods.setWrapperHeight(stickyElement);
              }, false);
              stickyElement.addEventListener('DOMNodeRemoved', function() {
                methods.setWrapperHeight(stickyElement);
              }, false);
            } else if (window.attachEvent) {
              stickyElement.attachEvent('onDOMNodeInserted', function() {
                methods.setWrapperHeight(stickyElement);
              });
              stickyElement.attachEvent('onDOMNodeRemoved', function() {
                methods.setWrapperHeight(stickyElement);
              });
            }
          }
        },
        update: scroller,
        unstick: function(options) {
          return this.each(function() {
            var that = this;
            var unstickyElement = $(that);
  
            var removeIdx = -1;
            var i = sticked.length;
            while (i-- > 0) {
              if (sticked[i].stickyElement.get(0) === that) {
                  splice.call(sticked,i,1);
                  removeIdx = i;
              }
            }
            if(removeIdx !== -1) {
              unstickyElement.unwrap();
              unstickyElement
                .css({
                  'width': '',
                  'position': '',
                  'top': '',
                  'float': '',
                  'z-index': ''
                })
              ;
            }
          });
        }
      };
  
    // should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):
    if (window.addEventListener) {
      window.addEventListener('scroll', scroller, false);
      window.addEventListener('resize', resizer, false);
    } else if (window.attachEvent) {
      window.attachEvent('onscroll', scroller);
      window.attachEvent('onresize', resizer);
    }
  
    $.fn.sticky = function(method) {
      if (methods[method]) {
        return methods[method].apply(this, slice.call(arguments, 1));
      } else if (typeof method === 'object' || !method ) {
        return methods.init.apply( this, arguments );
      } else {
        $.error('Method ' + method + ' does not exist on jQuery.sticky');
      }
    };
  
    $.fn.unstick = function(method) {
      if (methods[method]) {
        return methods[method].apply(this, slice.call(arguments, 1));
      } else if (typeof method === 'object' || !method ) {
        return methods.unstick.apply( this, arguments );
      } else {
        $.error('Method ' + method + ' does not exist on jQuery.sticky');
      }
    };
    $(function() {
      setTimeout(scroller, 0);
    });
  }));
  
  
  function responsive() {
      if($(window).width() <= 1300 && $(window).width() > 1160) {
          if(!$('body').hasClass('r1300')){
              $('.header-top .l7').addClass('half');
              $('.header-top .l2').addClass('is20');
              $('.header-top .l3').addClass('is30');
              $('body').addClass('r1300');
          }
      } else {
          if($('body').hasClass('r1300')){
          $('.header-top .l7').removeClass('half');
          $('.header-top .l2').removeClass('is20');
          $('.header-top .l3').removeClass('is30');
          $('body').removeClass('r1300');
          }
      }
      if($(window).width() <= 1160 ) {
          if(!$('body').hasClass('r1100')){
          $('.header-top .l7').addClass('half');
          $('.header-top .l2').addClass('dnone');
          $('.header-top .l3').addClass('half lefted');
          $('.user-ctrl').append('<div class="menu-opener" data-activates="slide-out"><i class="fa fa-bars"></i></di>');
          $('body').append('<ul id="slide-out" class="side-nav">');
          var side1 = $('header nav > ul').clone();
          side1.appendTo('#slide-out');
          $('#slide-out').find('li').unwrap();
          var user1 = $('header .user-area').clone().html();
          $('<div class="side-user">'+user1+'</div>').prependTo('#slide-out');
          $('body').addClass('r1100');
          }
      } else {
          if($('body').hasClass('r1100')){
          $('.header-top .l7').removeClass('half');
          $('.header-top .l2').removeClass('dnone');
          $('.header-top .l3').removeClass('half lefted');
          $('.user-ctrl').find('.menu-opener').remove();
          $('.header-top .l7').removeClass('half');
          $('.header-top .l2').removeClass('is20');
          $('.header-top .l3').removeClass('is30');
          $('#slide-out').remove();
          $('body').removeClass('r1100');
          }
      }
      if($(window).width() <= 770 ) {
          if(!$('body').hasClass('r770')){
              $('header .account-box').clone().prependTo('#slide-out');
              $('header .add-ad').clone().prependTo('#slide-out');
              $('#slide-out .side-user').prependTo('#slide-out');
              var select = $('.footer-top').find('a:first-child');
              $('<br>').insertBefore(select);
              $('body').addClass('r770');
          }
      } else {
          if($('body').hasClass('r770')){
              $('#slide-out .account-box, #slide-out .add-ad').remove();
              $('body').removeClass('r770');
          }
      }
  }
  
  
  
  
  $(function(){
  
      $('.ranger .col').addClass('dont m3 s3');
      
      $('.product-info .col').addClass('m6');
  
      $('.table-row .l1, .table-head .l1').addClass('m1 s1');
      $('.table-row .l2, .table-head .l2').addClass('m2 s2');
      $('.table-row .l3, .table-head .l3').addClass('m3 s3');
      $('.table-row .l4, .table-head .l4').addClass('m4 s4');
      $('.table-row .l5, .table-head .l5').addClass('m5 s5');
      $('.table-row .l7, .table-head .l7').addClass('m7 s7');
      responsive();
  
      $(document).on('click','.menu-opener', function(){
          if(!$(this).hasClass('active')) {
              $(this).sideNav({
                  edge: 'right'
              });
              $(this).click();
              $(this).addClass('active');
          }
      });
  
  
  $(window).resize(function(){
  responsive();
  });
  
  $(document).on('change','.single-upload', function(event){
      
      var halawa = $(this).parent().addClass('has-img').find('span');
      var reader = new FileReader();
      reader.onload = function(){
          halawa.css({'background-image':'url('+reader.result+')'});
        };
        reader.readAsDataURL(event.target.files[0]);
        $(this).parent().next('.upload-image').addClass('active');
  
  });
  
  $(document).on('click','.upload-image i', function(event){ 
      $(this).parent().removeClass('has-img').find('input').val('');
      $(this).parent().find('span').css({'background-image':'none'});
      if(!$(this).parent().hasClass('one-up')) {
          if($('.hidden-wrap').length) {
              if(!$('.hidden-wrap').prev('.upload-image').hasClass('has-img')){
                  $(this).parent().removeClass('active');  
              }
          }
  
      $(this).parent().appendTo($(this).parent().parent());
      }
      if($('.hidden-wrap').length) {
          $('.hidden-wrap').appendTo('.upload-repeater');
      }
  });
  
  $(document).on('click','.account-head',function(){
      if($('.account-drop').hasClass('active')){
          $('.account-drop').removeClass('active');
          $('.account-drop').slideUp(200);
      } else {
          $('.account-drop').addClass('active');
          $('.account-drop').slideDown(200);
      }
  });
  
  
  $(document).on('click','.show-drop',function(e){
      if($(this).hasClass('active')){
          $(this).removeClass('active');
          $(this).parent().find('.my-drop').slideUp(200);
      } else {
          $(this).addClass('active');
          $(this).parent().find('.my-drop').slideDown(200);
      }
      e.preventDefault();
  });
  
  
  $(document).on('click','.group-toggle',function(){
      if($(this).parent().is('.select-group')) {
          if(!$(this).hasClass('active')) {
          $(this).addClass('active');
          $(this).parent().find('.group-box').slideDown(200);
          } else {
              $(this).parent().find('.group-box').slideUp(200);
              $(this).removeClass('active');
          }
      } else {
          if(!$(this).hasClass('active')) {
              $(this).addClass('active');
              $(this).parent().find('.group-box2').slideDown(200);
              } else {
                  $(this).parent().find('.group-box2').slideUp(200);
                  $(this).removeClass('active');
              }
      }
  });
  
  $(document).on('click','.select-head',function(){
      if(!$('.select-box').hasClass('active')) {
          $(this).addClass('active');
          $('.select-box').addClass('active');
          $('.select-box').slideDown(200);
      } else {
          $('.select-box').slideUp(200);
          $('.select-box').removeClass('active');
          $(this).removeClass('active');
      }
  });
  
  $(document).on('click','.select-group',function(e){
      if(!$(e.target).closest('.group-toggle, .group-box').length) {
          $('.select-box').slideUp(200);
          $('.select-box').removeClass('active');
          $('.select-head').removeClass('active');
          var icon = $(this).data('cat-icon');
          var id = $(this).data('cat-id');
          $('#cat-id').val(id);
          $('.select-icon i').removeClass().addClass('fa fa-'+icon);
      }
  });
  $(document).on('click','.select-item-level1',function(e){
      if(!$(e.target).closest('.group-toggle, .group-box2').length) {
          $('.select-box').slideUp(200);
          $('.select-box').removeClass('active');
          $('.select-head').removeClass('active');
          var icon = $(this).parent().parent().data('cat-icon');
          var id = $(this).data('cat-id');
          $('#cat-id').val(id);
          $('.select-icon i').removeClass().addClass('fa fa-'+icon);
      }
  });
  $(document).on('click','.select-item-level2',function(e){
          $('.select-box').slideUp(200);
          $('.select-box').removeClass('active');
          $('.select-head').removeClass('active');
          var icon = $(this).parent().parent().parent().parent().data('cat-icon');
          var id = $(this).data('cat-id');
          $('#cat-id').val(id);
          $('.select-icon i').removeClass().addClass('fa fa-'+icon);
  });
  
  
  
  
  
  $(document).on('click','.show-num', function(){
      $(this).addClass('active');
  });
  
  
  $(document).on('click','.home-tab, .profile-posts-tab', function(){
      if(!$(this).hasClass('active')) {
          $('.home-tab, .profile-posts-tab').removeClass('active');
          $(this).addClass('active');
          var getTab = $(this).data('tab-target');
          $('.home-tabs-screens, .profile-screens').animate({opacity:'0'},200);
          setTimeout(function(){
              $('.home-tab-screen, .boxed-ads.in-profile').removeClass('active');
              $(getTab).addClass('active');
              $('.home-tabs-screens, .profile-screens').animate({opacity:'1'},200);
          },200);
      }
  });
  
  
  $(document).on('click','.my-modal .closer, .global-overlay, .close-me', function(){
      $('.my-modal, .global-overlay').fadeOut(300);
  });
  
  
  $(document).on('click','.pack1-on', function(){
      $('.o-extra0').click();
      $('.my-modal, .global-overlay').fadeOut(300);
  });
  
  $(document).on('click','.pack2-on', function(){
      $('.o-extra1').click();
      $('.my-modal, .global-overlay').fadeOut(300);
  });
  
  $(document).on('click','.pack3-on', function(){
      $('.o-extra2').click();
      $('.my-modal, .global-overlay').fadeOut(300);
  });
  
  $(document).on('click','.pack4-on', function(){
      $('.o-extra3').click();
      $('.my-modal, .global-overlay').fadeOut(300);
  });
  
  $(document).on('click','.modal-open', function(){
      var modal = $(this).data('modal-open');
      $('.global-overlay, '+modal).fadeIn(300);
  });
  
  $(document).on('click','.tab-button', function(){
      if(!$(this).hasClass('active')) {
          $('.tab-button').removeClass('active');
          $(this).addClass('active');
          var getTab = $(this).data('tab-btn');
          $('.mini-tab-box').animate({opacity:'0'},200);
          setTimeout(function(){
              $('.mini-tab-box').removeClass('active');
              $(getTab).addClass('active');
              if(!$(getTab).hasClass('swiped')) {
              var swiper = new Swiper(getTab+' .swiper-container', {
                  nextButton:".swiper-button-next",
                  prevButton:".swiper-button-prev"
              });
              $(getTab).addClass('swiped');
              }
              $('.mini-tab-box').animate({opacity:'1'},200);
          },200);
      }
  });
  
  
  var swiper = new Swiper('.home-slider .swiper-container', {
      nextButton:".swiper-button-next",
      prevButton:".swiper-button-prev"
  });
  
  
  var swiper = new Swiper('.mini-tab-box .swiper-container', {
      nextButton:".swiper-button-next",
      prevButton:".swiper-button-prev"
  });
  
  var galleryTop = new Swiper('.gallery-top', {
      spaceBetween: 10,
      nextButton:'.swiper-button-next',
      prevButton:'.swiper-button-prev'
    });
    var galleryThumbs = new Swiper('.gallery-thumbs', {
      spaceBetween: 10,
      centeredSlides: true,
      slidesPerView: 'auto',
      touchRatio: 0.2,
      slideToClickedSlide: true,
    });
    galleryTop.params.control = galleryThumbs;
    galleryThumbs.params.control = galleryTop;
  
  $(document).on('click','.filter-title', function(){
      if($(this).hasClass('active')) {
              $(this).removeClass('active');
          if($(this).parent().hasClass('has-sub')) {
              $(this).parent().find('.filter-level2-data').slideUp(200);
          } else {
              $(this).parent().find('.filter-level1-data').slideUp(200);
          }
      } else {
              $(this).addClass('active');
          if($(this).parent().hasClass('has-sub')) {
              $(this).parent().find('.filter-level2-data').slideDown(200);
          } else {
              $(this).parent().find('.filter-level1-data').slideDown(200);
          }
      }
  });
  
  
  
  $(document).on('click','.switch-view', function(){
      if(!$(this).hasClass('active')) {
             $('.switch-view').removeClass('active');
             $(this).addClass('active');
              if($(this).hasClass('list-view')) {
                  $('.ads-list').removeClass('boxed-ads');
              } else {
                  $('.ads-list').addClass('boxed-ads');
              }
                  
      }
  });
  
  
  
  
  
  
  
  $(document).on('change','.o-extra0', function(){
      if (this.checked) {
          $('.extra1, .extra2, .extra3').removeClass('is-off');
          $('.extra1, .extra2, .extra3').find('input').attr('disabled', false);
      }
      if(!$('.hidden-wrap').length) {
          $(".upload-repeater .upload-image").slice(10, 20).wrapAll('<div class="hidden-wrap" />');
          $('.hidden-wrap .upload-image').each(function(){
              $(this).removeClass('has-img active').find('input').val('');
              $(this).find('span').css({'background-image':'none'});
          });
      }
      
  });
  
  $(document).on('change','.o-extra1', function(){
      if (this.checked) {
          $('.extra1, .extra2, .extra3').removeClass('is-off');
          $('.extra1, .extra2, .extra3').find('input').attr('disabled', false);
          $('.extra1').addClass('is-off');
          $('.extra1').find('input').prop('checked', false).attr('disabled', true);
          if(!$('.hidden-wrap').length) {
              $(".upload-repeater .upload-image").slice(10, 20).wrapAll('<div class="hidden-wrap" />');
              $('.hidden-wrap .upload-image').each(function(){
                  $(this).removeClass('has-img active').find('input').val('');
                  $(this).find('span').css({'background-image':'none'});
              });
          }
      }
  });
  
  $(document).on('change','.o-extra2', function(){
      if (this.checked) {
          $('.extra1, .extra2, .extra3').removeClass('is-off');
          $('.extra1, .extra2, .extra3').find('input').attr('disabled', false);
          $('.extra1, .extra2').addClass('is-off');
          $('.extra1, .extra2').find('input').prop('checked', false).attr('disabled', true);
          if($('.hidden-wrap').length) {
          if($('.hidden-wrap').prev('.upload-image').hasClass('has-img')){
              $('.hidden-wrap').find('.upload-image:first-child').addClass('active');  
          }
          $('.hidden-wrap').find('.upload-image').unwrap();
          }
      }
  });
  
  $(document).on('change','.o-extra3', function(){
      if (this.checked) {
          $('.extra1, .extra2, .extra3').removeClass('is-off');
          $('.extra1, .extra2, .extra3').find('input').attr('disabled', false);
          $('.extra1, .extra2, .extra3').addClass('is-off');
          $('.extra1, .extra2, .extra3').find('input').prop('checked', false).attr('disabled', true);
          if($('.hidden-wrap').length) {
              if($('.hidden-wrap').prev('.upload-image').hasClass('has-img')){
                  $('.hidden-wrap').find('.upload-image:first-child').addClass('active');  
              }
              $('.hidden-wrap').find('.upload-image').unwrap();
          }
      }
  });
  
  
  $(document).on('change','.range-time',function(){
      var elseval = $(this).val();
      var myval = $('.range-num').val();
      if(myval == 20) {
          if(elseval == 20) {
            $('.packed .pack-num span').text('400');
            $('.pack-calc').val('400');
          }
          if(elseval == 40) {
              $('.packed .pack-num span').text('1100');
              $('.pack-calc').val('1100');
          }
          if(elseval == 60) {
              $('.packed .pack-num span').text('2000');
              $('.pack-calc').val('2000');  
          }
          if(elseval == 80) {
              $('.packed .pack-num span').text('3800');
              $('.pack-calc').val('3800');  
          }
      }
      if(myval == 40) {
           if(elseval == 20) {
              $('.packed .pack-num span').text('890');
              $('.pack-calc').val('890');  
            }
            if(elseval == 40) {
                $('.packed .pack-num span').text('2300');
                $('.pack-calc').val('2300');  
            }
            if(elseval == 60) {
                $('.packed .pack-num span').text('4200');
                $('.pack-calc').val('4200');  
            }
            if(elseval == 80) {
                $('.packed .pack-num span').text('8000');
                $('.pack-calc').val('8000');  
            }
      }
      if(myval == 60) {
          if(elseval == 20) {
              $('.packed .pack-num span').text('1250');
              $('.pack-calc').val('1250');  
            }
            if(elseval == 40) {
                $('.packed .pack-num span').text('3200');
                $('.pack-calc').val('3200');  
            }
            if(elseval == 60) {
                $('.packed .pack-num span').text('5800');
                $('.pack-calc').val('5800');  
            }
            if(elseval == 80) {
                $('.packed .pack-num span').text('11200');
                $('.pack-calc').val('11200');  
            }
      }
      if(myval == 80) {
          if(elseval == 20) {
              $('.packed .pack-num span').text('2000');
              $('.pack-calc').val('2000');  
            }
            if(elseval == 40) {
                $('.packed .pack-num span').text('4800');
                $('.pack-calc').val('4800');  
            }
            if(elseval == 60) {
                $('.packed .pack-num span').text('8700');
                $('.pack-calc').val('8700');  
            }
            if(elseval == 80) {
                $('.packed .pack-num span').text('16200');
                $('.pack-calc').val('16200');  
            }
      }
  });
  
  $(document).on('change','.range-num',function(){
      var myval = $(this).val();
      var elseval = $('.range-time').val();
      if(myval == 20) {
          if(elseval == 20) {
            $('.packed .pack-num span').text('400');
            $('.pack-calc').val('400');
          }
          if(elseval == 40) {
              $('.packed .pack-num span').text('1100');
              $('.pack-calc').val('1100');
          }
          if(elseval == 60) {
              $('.packed .pack-num span').text('2000');
              $('.pack-calc').val('2000');  
          }
          if(elseval == 80) {
              $('.packed .pack-num span').text('3800');
              $('.pack-calc').val('3800');  
          }
      }
      if(myval == 40) {
           if(elseval == 20) {
              $('.packed .pack-num span').text('890');
              $('.pack-calc').val('890');  
            }
            if(elseval == 40) {
                $('.packed .pack-num span').text('2300');
                $('.pack-calc').val('2300');  
            }
            if(elseval == 60) {
                $('.packed .pack-num span').text('4200');
                $('.pack-calc').val('4200');  
            }
            if(elseval == 80) {
                $('.packed .pack-num span').text('8000');
                $('.pack-calc').val('8000');  
            }
      }
      if(myval == 60) {
          if(elseval == 20) {
              $('.packed .pack-num span').text('1250');
              $('.pack-calc').val('1250');  
            }
            if(elseval == 40) {
                $('.packed .pack-num span').text('3200');
                $('.pack-calc').val('3200');  
            }
            if(elseval == 60) {
                $('.packed .pack-num span').text('5800');
                $('.pack-calc').val('5800');  
            }
            if(elseval == 80) {
                $('.packed .pack-num span').text('11200');
                $('.pack-calc').val('11200');  
            }
      }
      if(myval == 80) {
          if(elseval == 20) {
              $('.packed .pack-num span').text('2000');
              $('.pack-calc').val('2000');  
            }
            if(elseval == 40) {
                $('.packed .pack-num span').text('4800');
                $('.pack-calc').val('4800');  
            }
            if(elseval == 60) {
                $('.packed .pack-num span').text('8700');
                $('.pack-calc').val('8700');  
            }
            if(elseval == 80) {
                $('.packed .pack-num span').text('16200');
                $('.pack-calc').val('16200');  
            }
      }
  });
  
  
  
  $(document).on('change', '.file-upload .hidden-upload',function(){
      
       var fileName =$(this).val().split('\\').pop().split('/').pop();
       $(this).parent().find('input[type=text]').val(fileName);
   });
   
   $(document).on('click', '.file-upload .open-file',function(){
       $(this).parent().find('.hidden-upload').click();
       return false;
   });
  
   $('.ezShare').ezShare();
  
  $(document).on('click',function(e){
      if (!$(e.target).closest('.account-box').length) {
          $('.account-drop').removeClass('active');
          $('.account-drop').slideUp(200);
      }
      if (!$(e.target).closest('.select-box, .select-head').length) {
          $('.select-box:not(.links)').slideUp(200);
          $('.select-box:not(.links)').removeClass('active');
          $('.select-head').removeClass('active');
      }
      if (!$(e.target).closest('.my-drop, .show-drop').length) {
          $('.my-drop').slideUp(200);
          $('.show-drop').removeClass('active');
      }
  });
  
  
  
  
  
  
  
  
  $('.top-group .checkbox input[type=radio]').on('change', function(){
      if (this.checked) {
      if($(this).hasClass('show-price')) {
          $('.price-hidden').slideDown(300);
      } else {
          $('.price-hidden').slideUp(300);
      }
      }
  });
  
  
  
  function previewImages() {
  
  
    var $preview = $('#preview').empty();
    if (this.files) $.each(this.files, readAndPreview);
  
    function readAndPreview(i, file) {
      
      if (!/\.(jpe?g|png|gif)$/i.test(file.name)){
          alert(file.name +" هذا الملف ليس صورة");
          $('#file-input').val('');
        } else {
      
      var reader = new FileReader();
  
      $(reader).on("load", function() {
        $preview.append($("<img/>", {src:this.result, height:100}));
      });
  
      reader.readAsDataURL(file);
      }
      
    }
  
  }
  
  $('#file-input').on("change", previewImages);
  
  });
  
  
  
  $(document).on('click', '.watch-icon', function(e){
  	var thisinput = $(this);
      var postid = $(this).find('input.post_id').val();
      var state = $(this).find('input.liked');
      var csrf_token = $('meta[name="csrf-token"]').attr('content');
  	$.ajax({
          type:'POST',
          url:'/favorite/posts/'+postid,
          data: {postid, '_token':csrf_token},
          success:function(data) {
              state.val(data);
              if(state.val() == 0) {
  		        thisinput.removeClass('active');
  		    } else {
  		        thisinput.addClass('active');
  			}
          }
        });
  });
  
  $('.watch-icon').click(function(e){ 
  	e.preventDefault();
  });
    
    
    
  $(document).on('click', '.open-msgs', function() {
      var thispop = $(this);
      var msgsid = $(this).parent().find('#msgs-id').val();
      var getpop = $(this).data('modal-open');
      $(getpop).find('.maseges-container').empty();
      $(getpop).find('.my-modal-body h1').remove();
      $.ajax({
          url: '/allmessages/' + msgsid,
          type: 'get',
          dataType: 'json',
          success: function(data) {
  
             $(getpop).find('.my-modal-body').prepend('<h1 class="no-margin nb sp">رسالة خاصة من : '+ data.withUser.name +'</h1>');
              $.each(data.messages, function() {
                  $(getpop).find('.maseges-container').append('<small class="small-head user-inpop"><span>بواسطة</span>' + this.sender.name + '</small>');
                  $(getpop).find('.maseges-container').append('<small class="small-head"><span>تاريخ الارسال</span>' + this.created_at + '</small>');
                  $(getpop).find('.maseges-container').append('<div class="massege-box massegs">' + this.message + '</div>');
              });
  
           },
          error: function() {
              console.log('error');
          }
        });
  });
    
  
  
  $(document).on('click', '.show-all', function(){
      if(!$(this).hasClass('active')) {
          $('.mark-links').slideDown();
          $(this).addClass('active');
          $(this).empty().html($(this).data('swap'));
      } else {
          $('.mark-links').slideUp();
          $(this).removeClass('active');
          $(this).empty().html($(this).data('orignal'));
      }
  });
  
  
  $(document).on('click', '.saved-search-box', function(){
      if(!$(this).hasClass('active')) {
          $('.saved-search-drop').slideDown(300);
          $(this).addClass('active');
      } else {
          $('.saved-search-drop').slideUp(300);
          $(this).removeClass('active');
      }
  });
  
  $(".side-filters .google-ads, .row.no-margin:not(.boxed-ads) .col.l3 .google-ads").last().sticky({topSpacing:15});
  
  
  $(document).on('click','.get-location:not(.located)', function(){
      var options = {enableHighAccuracy: true};
      if("geolocation" in navigator){
          navigator.geolocation.getCurrentPosition(onLocation, onError, options);
      }
      function onLocation(position){
      $('.my-lat').val(position.coords.latitude);
      $('.my-long').val(position.coords.longitude);
      $('.get-location').empty().html('<i class="fa fa-check"></i> تم تحديد الموقع الجغرافي بنجاح­ ');
      $('.get-location').addClass('located');
      }
      function onError(error){
          $('.get-location').empty().html('<i class="fa fa-map-marker"></i> حدث خطأ, اعادة تحديد الموقع الجغرافي ')
      }
  });
  
  $(document).on('click','.side-filters a', function(){
    var input = $('input.applied-filters');
    var text = $(this).text();
    var title = $(this).parent().parent().parent().find('.filter-title span').text();
    var val = input.val();
    if(val.indexOf(title) >= 0) {
      var activeted = $(this).parent().parent().find('li a.active').text();
      input.val(function(i, v) {return v.replace( title+' : '+activeted , title+' : '+text );}).val()
    } else {
    if(input.val() == '') {
      input.val(title+' : '+text);
    } else {
      input.val(input.val()+','+title+' : '+text)
    }
  }
    $('#form1').submit();
  });
  
  $(document).on('click','.link-filter a', function(){
    var input = $('input.applied-filters');
    var text = $(this).children().attr("alt");
    var val = input.val();
      input.val(input.val()+'نوع السيارة : '+ text)
    $('#form1').submit();
  });
  
  $(document).on('click','.link-logo a', function(){
    var input = $('input.applied-filters');
    var text = $(this).children().attr("alt");
    var val = input.val();
      input.val(input.val()+'الماركة : '+text)
    $('#form1').submit();
  });
  
  
  
  
  
  window.onload = function(e){ 
    if($('.home-tab').length) {
    $('.home-tab:first-child, .home-tab-screen:first-child').addClass('active');
    }
  
    if($('input.applied-filters').length) {
      var myinput = $('input.applied-filters').val().split(',');
      $(myinput).each(function(el){
      var thisvalue = this.split(' : ').pop();
      var thistitle = this.split(' : ')[0];
      if($('input.applied-filters').val() != '') {
      $('.filter-title span:contains('+thistitle+')').parent().parent().find('a.active').removeClass('active');
      $('.filter-title span:contains('+thistitle+')').parent().parent().find('ul li a:contains('+thisvalue+')').addClass('active');
      }
      });
    }
  }
  
  $(document).on('submit','#abdallah',function(e){
    e.preventDefault();
  });
  $(document).on('click','#abdallah',function(e){
    e.preventDefault();
  });
  
  $(document).on('click','.remove-pp',function(){
      if (window.confirm("هل انت متأكد من حذف الصورة الشخصية؟")) {
      $(this).parent().find('img').attr('src',$(this).parent().find('img').data('no-photo'));
      $(this).hide();
      $(this).parent().find('.add-pp').show();
      }
  });
  
  $(document).on('click','.add-pp',function(){
      $('.file-pp').click();
  });
  
  
      
      $('.file-pp').on("change", function(){
          var img = $(this).parent().find('img');
          var $this = $(this);
          if (this.files) $.each(this.files, readAndPreview);
          
          
          
            function readAndPreview(i, file) {
              
              if (!/\.(jpe?g|png|gif)$/i.test(file.name)){
                  alert(file.name +" هذا الملف ليس صورة");
                  $this.val('');
                } else {
              
              var reader = new FileReader();
          
              $(reader).on("load", function() {
                img.attr("src", this.result );
              });
          
              reader.readAsDataURL(file);
              $('.remove-pp').show();
              $('.add-pp').hide();
              
            }
            
          }
      });
      
      
  