/*! jQuery v2.1.3 | © 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */

!function(a,b){“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){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m=“2.1.3”,n=function(a,b){return new n.fn.init(a,b)},o=/^+|[suFEFFxA0]+$/g,p=/^-ms-/,q=/-()/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:“”,length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this:this:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=a(0>a?b:0);return this.pushStack(c>=0&&b>c?[this]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments||{},h=1,i=arguments.length,j=!1;for(“boolean”==typeof g&&(j=g,g=arguments||{},h++),“object”==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h–);i>h;h++)if(null!=(a=arguments))for(b in a)c=g,d=a,g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray©?c:[]):f=c&&n.isPlainObject©?c:{},g=n.extend(j,f,d)):void 0!==d&&(g=d));return g},n.extend({expando:“jQuery”+(m+Math.random()).replace(/D/g,“”),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return“function”===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return“object”!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,“isPrototypeOf”)?!1:!0},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?h||“object”:typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf(“use strict”)?(b=l.createElement(“script”),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,“ms-”).replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if©{if(g){for(;f>e;e++)if(d=b.apply(a,c),d===!1)break}else for(e in a)if(d=b.apply(a,c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a,e,a),d===!1)break}else for(e in a)if(d=b.call(a,e,a),d===!1)break;return a},trim:function(a){return null==a?“”:(a+“”).replace(o,“”)},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,“string”==typeof a?:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a=b;return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a,f),d!==h&&e.push(a);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a,f,c),null!=d&&i.push(d);else for(f in a)d=b(a,f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return“string”==typeof b&&(c=a,b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each(“Boolean Number String Function Array Date RegExp Object Error”.split(“ ”),function(a,b){h[“[object ”b“]”]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return“function”===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:“array”===c||0===b||“number”==typeof b&&b>0&&b-1 in a}var t=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=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a===b)return c;return-1},K=“checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped”,L=“”,M=“(?:\\.||[^\x00-\xa0])+”,N=M.replace(“w”,“w#”),O=“\[”L“*(”M“)(?:”L“*(?=)”L“*(?:‘((?:\\.|)*)’|"((?:\\.|[^\\"])*)"|(”N“))|)”L“*\]”,P=“:(”M“)(?:\(((‘((?:\\.|)*)’|"((?:\\.|[^\\"])*)")|((?:\\.|[^\\()[\]]|”O“)*)|.*)\)|)”,Q=new RegExp(L+“+”,“g”),R=new RegExp(“^”L“+|((?:^|)(?:\\.)*)”L“+$”,“g”),S=new RegExp(“^”L“*,”L“*”),T=new RegExp(“^”L”*(‘"]*?)“L”*\]“,”g“),V=new RegExp(P),W=new RegExp(”^“N”$“),X={ID:new RegExp(”^#(“M”)“),CLASS:new RegExp(”^\.(“M”)“),TAG:new RegExp(”^(“+M.replace(”w“,”w*“)+”)“),ATTR:new RegExp(”^“+O),PSEUDO:new RegExp(”^“+P),CHILD:new RegExp(”^:(only|first|last|nth|nth-last)-(child|of-type)(?:\(“L”*(even|odd|((|)(\d*)n|)“L”*(?:(|)“L”*(\d+)|))“L”*\)|)“,”i“),bool:new RegExp(”^(?:“K”)$“,”i“),needsContext:new RegExp(”^“L“*\)|)(?=|$)”,“i”)},Y=/^(?:input|select|textarea|button)$/i,Z=/^hd$/i,$=/^+{s*[native w/,_=/^(?:#([w-]+)|(w+)|.([w-]+))$/,ab=//,bb=/’|\/g,cb=new RegExp(“\\({1,6}”L“?|(”L“)|.)”,“ig”),db=function(a,b,c){var d=“0x”+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E.nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a=b);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,“string”!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f)return H.apply(d,b.getElementsByTagName(a)),d;if((j=f)&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&“object”!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute(“id”))?s=r.replace(bb,“\$&”):b.setAttribute(“id”,s),s=“[id=‘”s“’] ”,l=o.length;while(l–)o=s+rb(o);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(“,”)}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute(“id”)}}}return i(a.replace(R,“$1”),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+“ ”)>d.cacheLength&&delete b,b[c+“ ”]=e}return b}function ib(a){return a=!0,a}function jb(a){var b=n.createElement(“div”);try{return!!a(b)}catch©{return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split(“|”),e=a.length;while(e–)d.attrHandle[c]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if©while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return“input”===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return(“input”===c||“button”===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g–)c[e=f]&&(c=!(d=c))})})}function pb(a){return a&&“undefined”!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?“HTML”!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener(“unload”,eb,!1):e.attachEvent&&e.attachEvent(“onunload”,eb)),p=!f(g),c.attributes=jb(function(a){return a.className=“i”,!a.getAttribute(“className”)}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment(“”)),!a.getElementsByTagName(“*”).length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(“undefined”!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute(“id”)===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=“undefined”!=typeof a.getAttributeNode&&a.getAttributeNode(“id”);return c&&c.value===b}}),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)1===c.nodeType&&d.push©;return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=,(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML=“<a id=‘”u“’></a><select id=‘”u“-f]’ msallowcapture=”><option selected=”>”,a.querySelectorAll(“”).length&&q.push(“=”L“*(?:”|"")”),a.querySelectorAll(“”).length||q.push(“\[”L“*(?:value|”K“)”),a.querySelectorAll(“[id~=”u“-]”).length||q.push(“~=”),a.querySelectorAll(“:checked”).length||q.push(“:checked”),a.querySelectorAll(“a#”u“+*”).length||q.push(“.#.[~]”)}),jb(function(a){var b=g.createElement(“input”);b.setAttribute(“type”,“hidden”),a.appendChild(b).setAttribute(“name”,“D”),a.querySelectorAll(“”).length&&q.push(“name”L[^$|!~]?=”),a.querySelectorAll(“:enabled”).length||q.push(“:enabled”,“:disabled”),a.querySelectorAll(“*,:x”),q.push(“,.*:”)})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,“div”),s.call(a,“:x”),r.push(“!=”,P)}),q=q.length&&new RegExp(q.join(“|”)),r=r.length&&new RegExp(r.join(“|”)),b=$.test(o.compareDocumentPosition),t=b||$.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===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(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,h=,i=;if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift©;c=b;while(c=c.parentNode)i.unshift©;while(h===i)d++;return d?lb(h,i):h===v?-1:i===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,“=‘$1’]”),!(!c.matchesSelector||!p||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 gb(b,n,null,).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle,f=e&&D.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},gb.error=function(a){throw new Error(“Syntax error, unrecognized expression: ”+a)},gb.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)b===a&&(e=d.push(f));while(e–)a.splice(d,1)}return k=null,a},e=gb.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)c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{“>”:{dir:“parentNode”,first:!0},“ ”:{dir:“parentNode”},“+”:{dir:“previousSibling”,first:!0},“~”:{dir:“previousSibling”}},preFilter:{ATTR:function(a){return a=a.replace(cb,db),a=(a||a||a||“”).replace(cb,db),“~=”===a&&(a=“ ”a[3]“ ”),a.slice(0,4)},CHILD:function(a){return a=a.toLowerCase(),“nth”===a.slice(0,3)?(a||gb.error(a),a=+(a?a+(a||1):2*(“even”===a||“odd”===a)),a=+(a+a||“odd”===a)):a&&gb.error(a),a},PSEUDO:function(a){var b,c=!a&&a;return X.CHILD.test(a)?null:(a?a=a||a||“”:c&&V.test©&&(b=g(c,!0))&&(b=c.indexOf(“)”,c.length-b)-c.length)&&(a=a.slice(0,b),a=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).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(“(^|”L“)”a“(”L“|$)”))&&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=gb.attr(d,a);return null==e?“!=”===b:b?(e+=“”,“=”===b?e===c:“!=”===b?e!==c:“^=”===b?c&&0===e.indexOf©:“*=”===b?c&&e.indexOf©>-1:“$=”===b?c&&e.slice(-c.length)===c:“~=”===b?(“ ”+e.replace(Q,“ ”)+“ ”).indexOf©>-1:“|=”===b?e===c||e.slice(0,c.length+1)===c+“-”:!1):!0}},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;if(q){if(f){while(p){l=b;while(l=l)if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p=“only”===a&&!o&&“nextSibling”}return!0}if(o=,g&&s){k=q||(q={}),j=k||[],n=j===w&&j,m=j===w&&j,l=n&&q.childNodes;while(l=++n&&l&&l||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k=[w,n,m];break}}else if(s&&(j=(b||(b={}))[a])&&j===w)m=j;else while(l=++n&&l&&l||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l||(l={}))[a]=),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos||d.setFilters||gb.error(“unsupported pseudo: ”+a);return e?e(b):e.length>1?(c=,d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g–)d=J(a,f),a=!(c=f)}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=,d=h(a.replace(R,“$1”));return d?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h–)(f=g)&&(a=!(b=f))}):function(a,e,f){return b=a,d(b,null,f,c),b=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||“”)||gb.error(“unsupported lang: ”+a),a=a.replace(cb,db).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:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!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 Z.test(a.nodeName)},input:function(a){return Y.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:ob(function(){return}),last:ob(function(a,b){return}),eq:ob(function(a,b,c){d.pseudos=mb(b);for(b in{submit:!0,reset:!0})d.pseudos=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.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=S.exec(h)))&&(e&&(h=h.slice(e.length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e.replace(R,” “)}),h=h.slice(c.length));for(g in d.filter)!(e=X.exec(h))||j&&!(e=j(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?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d=”“;c>b;b++)d+=a.value;return d}function sb(a,b,c){var d=b.dir,e=c&&”parentNode“===d,f=x++;return b.first?function(b,c,f){while(b=b)if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=;if(g){while(b=b)if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b)if(1===b.nodeType||e){if(i=b||(b={}),(h=i)&&h===w&&h===f)return j=h;if(i=j,j=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e–)if(!a(b,c,d))return!1;return!0}:a}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b,c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a)&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d&&(d=wb(d)),e&&!e&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=,o=g.length,p=f||ub(b||”*“,h.nodeType?:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k–)(l=j)&&(r[n]=!(q[n]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k–)(l=r)&&j.push(q=l);e(null,r=[],j,i)}k=r.length;while(k–)(l=r)&&(j=e?J(f,l):m)>-1&&(f=!(g=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a.type],h=g||d.relative[” “],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(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}];f>i;i++)if(c=d.relative[a.type])m=;else{if(c=d.filter[a.type].apply(null,a.matches),c){for(e=++i;f>e;e++)if(d.relative[a.type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:” “===a.type?”*“:”“})).replace(R,”$1“),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push©}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q=”0“,r=f&&[],s=,t=j,u=f||e&&d.find.TAG(”*“,k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u);q++){if(e&&l){m=0;while(o=a)if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p–,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b)o(r,s,g,h);if(f){if(p>0)while(q–)r||s||(s=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=,f=A[a+” “];if(!f){b||(b=g(a)),c=b.length;while(c–)f=xb(b),f?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n=”function“==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o=o.slice(0),j.length>2&&”ID“===(k=j).type&&c.getById&&9===b.nodeType&&p&&d.relative[j.type]){if(b=(d.find.ID(k.matches.replace(cb,db),b)||[]),!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i–){if(k=j,d.relative)break;if((m=d.find)&&(f=m(k.matches.replace(cb,db),ab.test(j.type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split(”“).sort(B).join(”“)===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement(”div“))}),jb(function(a){return a.innerHTML=”<a href=‘#’></a>“,”#“===a.firstChild.getAttribute(”href“)})||kb(”type|href|height|width“,function(a,b,c){return c?void 0:a.getAttribute(b,”type“===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML=”<input/>“,a.firstChild.setAttribute(”value“,”“),”“===a.firstChild.getAttribute(”value“)})||kb(”value“,function(a,b,c){return c||”input“!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute(”disabled“)})||kb(K,function(a,b,c){var d;return c?void 0:a===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if(”string“==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b;return c&&(a=”:not(“a”)“),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if(”string“!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e,this))return!0}));for(b=0;c>b;b++)n.find(a,e,d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+” “+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,”string“==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:s*(<+>)[^>]*|#([w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if(”string“==typeof a){if(c=”<"===a&&“>”===a&&a.length>=3?:z.exec(a),!c||!c&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c){if(b=b instanceof n?b:b,n.merge(this,n.parseHTML(c,b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c)&&n.isPlainObject(b))for(c in b)n.isFunction(this)?this(b):this.attr(c,b);return this}return d=l.getElementById(c),d&&d.parentNode&&(this.length=1,this=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this=a,this.length=1,this):n.isFunction(a)?“undefined”!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a)&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is©)break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||“string”!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this;c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index©>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push©;break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?“string”==typeof a?g.call(n(a),this):g.call(this,a.jquery?a:a):this&&this.parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a)&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,“parentNode”)},parentsUntil:function(a,b,c){return n.dir(a,“parentNode”,c)},next:function(a){return D(a,“nextSibling”)},prev:function(a){return D(a,“previousSibling”)},nextAll:function(a){return n.dir(a,“nextSibling”)},prevAll:function(a){return n.dir(a,“previousSibling”)},nextUntil:function(a,b,c){return n.dir(a,“nextSibling”,c)},prevUntil:function(a,b,c){return n.dir(a,“previousSibling”,c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn=function(c,d){var e=n.map(this,b,c);return“Until”!==a.slice(-5)&&(d=c),d&&“string”==typeof d&&(e=n.filter(d,e)),this.length>1&&(C||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/S+/g,F={};function G(a){var b=F={};return n.each(a.match(E)||[],function(a,c){b=!0}),b}n.Callbacks=function(a){a=“string”==typeof a?F||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&,j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h.apply(l,l)===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type©;“function”===d?a.unique&&k.has©||h.push©:c&&c.length&&“string”!==d&&g©})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f–,g>=c&&g–)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=,d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[[“resolve”,“done”,n.Callbacks(“once memory”),“resolved”],[“reject”,“fail”,n.Callbacks(“once memory”),“rejected”],],c=“pending”,d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function©{n.each(b,function(b,f){var g=n.isFunction(a)&&a;e[f](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+“With”](this===d?c.promise():this,g?:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f,h=f;d[f]=g.add,h&&g.add(function(){c=h},b[2].disable,b[2].lock),e[f]=function(){return e[f+“With”](this===e?d:this,arguments),this},e[f+“With”]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b=this,c=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):–f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c&&n.isFunction(c.promise)?c.promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):–f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?–n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&–n.readyWait>0||(H.resolveWith(l,),n.fn.triggerHandler&&(n(l).triggerHandler(“ready”),n(l).off(“ready”))))}});function I(){l.removeEventListener(“DOMContentLoaded”,I,!1),a.removeEventListener(“load”,I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),“complete”===l.readyState?setTimeout(n.ready):(l.addEventListener(“DOMContentLoaded”,I,!1),a.addEventListener(“load”,I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if(“object”===n.type©){e=!0;for(h in c)n.access(a,b,h,c,!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a,c,g?d:d.call(a,h,b(a,c)));return e?a:j?b.call(a):i?b(a,c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a;if(!c){c=K.uid++;try{b={value:c},Object.defineProperties(a,b)}catch(d){b=c,n.extend(a,b)}}return this.cache||(this.cache={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache;if(“string”==typeof b)f=c;else if(n.isEmptyObject(f))n.extend(this.cache,b);else for(d in b)f=b;return f},get:function(a,b){var c=this.cache;return void 0===b?c:c},access:function(a,b,c){var d;return void 0===b||b&&“string”==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache;if(void 0===b)this.cache={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=:(d=e,d=d in g?:d.match(E)||[])),c=d.length;while(c–)delete g[d]}},hasData:function(a){return!n.isEmptyObject(this.cache[a]||{})},discard:function(a){a&&delete this.cache[a]}};var L=new K,M=new K,N=/^(?:{[wW]*}|[[wW]*])$/,O=/()/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d=“data-”+b.replace(O,“-$1”).toLowerCase(),c=a.getAttribute(d),“string”==typeof c){try{c=“true”===c?!0:“false”===c?!1:“null”===c?null:c“”===c?+c:N.test©?n.parseJSON©:c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c) },removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this,g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,“hasDataAttrs”))){c=g.length;while(c–)g&&(d=g.name,0===d.indexOf(“data-”)&&(d=n.camelCase(d.slice(5)),P(f,d,e)));L.set(f,“hasDataAttrs”,!0)}return e}return“object”==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf(“-”)&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||“fx”)+“queue”,d=L.get(a,b),c&&(!d||n.isArray©?d=L.access(a,b,n.makeArray©):d.push©),d||[]):void 0},dequeue:function(a,b){b=b||“fx”;var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.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 L.get(a,c)||L.access(a,c,{empty:n.Callbacks(“once memory”).add(function(){L.remove(a,)})})}}),n.fn.extend({queue:function(a,b){var c=2;return“string”!=typeof a&&(b=a,a=“fx”,c–),arguments.length,a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),“fx”===a&&“inprogress”!==c&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||“fx”,[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){–d||e.resolveWith(f,)};“string”!=typeof a&&(b=a,a=void 0),a=a||“fx”;while(g–)c=L.get(f,a+“queueHooks”),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/?(?:d*.|)d+(?:[+-]?d+|)/.source,R=,S=function(a,b){return a=b||a,“none”===n.css(a,“display”)||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement(“div”)),c=l.createElement(“input”);c.setAttribute(“type”,“radio”),c.setAttribute(“checked”,“checked”),c.setAttribute(“name”,“t”),b.appendChild©,k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML=“<textarea>x</textarea>”,k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U=“undefined”;k.focusinBubbles=“onfocusin”in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^(*)(?:.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if®{c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||“”).match(E)||,j=b.length;while(j–)h=Y.exec(b)||[],o=q=h,p=(h||“”).split(“.”).sort(),o&&(l=n.event.special||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(“.”)},f),(m=i)||(m=i=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),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),n.event.global=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||“”).match(E)||,j=b.length;while(j–)if(h=Y.exec(b)||[],o=q=h,p=(h||“”).split(“.”).sort(),o){l=n.event.special||{},o=(d?l.delegateType:l.bindType)||o,m=i||[],h=h&&new RegExp(“(^|\.)”+p.join(“\.(?:.*\.|)”)+“(\.|$)”),g=f=m.length;while(f–)k=m,!e&&q!==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,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i)}else for(o in i)n.event.remove(a,o+b,c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,“events”))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=,q=j.call(b,“type”)?b.type:b,r=j.call(b,“namespace”)?b.namespace.split(“.”):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(“.”)>=0&&(r=q.split(“.”),q=r.shift(),r.sort()),k=q.indexOf(“:”)<0&&"on"+q,b=b?b:new n.Event(q,“object”==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join(“.”),b.namespace_re=b.namespace?new RegExp(“(^|\.)”+r.join(“\.(?:.*\.|)”)+“(\.|$)”):null,b.result=void 0,b.target||(b.target=d),c=null==c?:n.makeArray(c,),o=n.event.special||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p)&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,“events”)||{})[b.type]&&L.get(g,“handle”),m&&m.apply(g,c),m=k&&g,m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d)&&!n.isWindow(d)&&(h=d,h&&(d=null),n.event.triggered=q,d(),n.event.triggered=void 0,h&&(d=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,“events”)||{})||[],k=n.event.special||{};if(i=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h)&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers)&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||“click”!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||“click”!==a.type){for(d=,c=0;h>c;c++)f=b,e=f.selector+“ ”,void 0===d&&(d=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,).length),d&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:“altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which”.split(“ ”),fixHooks:{},keyHooks:{props:“char charCode key keyCode”.split(“ ”),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:“button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement”.split(“ ”),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a)return a;var b,c,d,e=a.type,f=a,g=this.fixHooks;g||(this.fixHooks=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b–)c=d,a=f;return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:“focusin”},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:“focusout”},click:{trigger:function(){return“checkbox”===this.type&&this.click&&n.nodeName(this,“input”)?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,“a”)}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:“mouseover”,mouseleave:“mouseout”,pointerenter:“pointerover”,pointerleave:“pointerout”},function(a,b){n.event.special={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:“focusin”,blur:“focusout”},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if(“object”==typeof a){“string”!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a,e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&(“string”==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(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);return this}return(b===!1||“function”==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this;return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)((+)[^>]*)/>/gi,bb=/<(+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:|=s*.checked.)/i,fb=/^$|/(?:java|ecma)script/i,gb=/^true/(.*)/,hb=/^s*]|–)>s*$/g,ib={option:[1,”<select “,”“”>multiple=‘multiple’>“,”“],thead:,”,“”“>col:,”,“”“>tr:,”,“”“>td:,_default:};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,”table“)&&n.nodeName(11!==b.nodeType?b:b.firstChild,”tr“)?a.getElementsByTagName(”tbody“)||a.appendChild(a.ownerDocument.createElement(”tbody“)):a}function kb(a){return a.type=(null!==a.getAttribute(”type“))+”/“+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b:a.removeAttribute(”type“),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a,”globalEval“,!b||L.get(b,”globalEval“))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j.length;d>c;c++)n.event.add(b,e,j[c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||”*“):a.querySelectorAll?a.querySelectorAll(b||”*“):[];return void 0===b||b&&n.nodeName(a,b)?n.merge(,c):c}function pb(a,b){var c=b.nodeName.toLowerCase();”input“===c&&T.test(a.type)?b.checked=a.checked:(”input“===c||”textarea“===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f,g);if(b)if©for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f,g);else nb(a,h);return g=ob(h,”script“),g.length>0&&mb(g,!i&&ob(a,”script“)),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a,e||0===e)if(”object“===n.type(e))n.merge(l,e.nodeType?:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement(”div“)),g=(bb.exec(e)||)[1].toLowerCase(),h=ib||ib._default,f.innerHTML=h+e.replace(ab,”<$1>“)+h,j=h;while(j–)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=”“}else l.push(b.createTextNode(e));k.textContent=”“,m=0;while(e=l)if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),”script“),i&&mb(f),c)){j=0;while(e=f)fb.test(e.type||”“)&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a);g++){if(n.acceptData©&&(e=c,e&&(b=L.cache))){if(b.events)for(d in b.events)f?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache&&delete L.cache}delete M.cache[c]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.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 this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d);e++)b||1!==c.nodeType||n.cleanData(ob©),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,”script“)),c.parentNode.removeChild©);return this},empty:function(){for(var a,b=0;null!=(a=this);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent=”“);return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if(”string“==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||)[1].toLowerCase()]){a=a.replace(ab,”<$1></$2>“);try{for(;d>c;c++)b=this||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments;return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a,q=n.isFunction(p);if(q||l>1&&”string“==typeof p&&!k.checkClone&&eb.test(p))return this.each(function©{var d=m.eq©;q&&(a=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this.ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,”script“),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,”script“))),b.call(this,h,j);if(g)for(i=f.ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f,fb.test(h.type||”“)&&!L.access(h,”globalEval“)&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,”“)))}return this}}),n.each({appendTo:”append“,prependTo:”prepend“,insertBefore:”before“,insertAfter:”after“,replaceAll:”replaceWith“},function(a,b){n.fn=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e)[b]©,f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e))?d.display:n.css(e,”display“);return e.detach(),f}function tb(a){var b=l,c=rb;return c||(c=sb(a,b),”none“!==c&&c||(qb=(qb||n(”<iframe frameborder=‘0’ width=‘0’ height=‘0’/>“)).appendTo(b.documentElement),b=qb.contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb=c),c}var ub=/^margin/,vb=new RegExp(”^(“Q”)(?!px)+$“,”i“),wb=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c),c&&(”“!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.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 yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement(”div“),f=l.createElement(”div“);if(f.style){f.style.backgroundClip=”content-box“,f.cloneNode(!0).style.backgroundClip=”“,k.clearCloneStyle=”content-box“===f.style.backgroundClip,e.style.cssText=”border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute“,e.appendChild(f);function g(){f.style.cssText=”-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute“,f.innerHTML=”“,d.appendChild(e);var g=a.getComputedStyle(f,null);b=”1%“!==g.top,c=”4px“===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement(”div“));return c.style.cssText=f.style.cssText=”-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0“,c.style.marginRight=c.style.width=”0“,f.style.width=”1px“,d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild©,b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g=a.style,a.style=b;e=c.apply(a,d||[]);for(f in b)a.style=g;return e};var zb=/^(none|table(?!-c).+)/,Ab=new RegExp(”^(“Q”)(.*)$“,”i“),Bb=new RegExp(”^()=(“Q”)“,”i“),Cb={position:”absolute“,visibility:”hidden“,display:”block“},Db={letterSpacing:”0“,fontWeight:”400“},Eb=;function Fb(a,b){if(b in a)return b;var c=b.toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e–)if(b=Eb+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d-(c||0))+(d||”px“):b}function Hb(a,b,c,d,e){for(var f=c===(d?”border“:”content“)?4:”width“===b?1:0,g=0;4>f;f+=2)”margin“===c&&(g+=n.css(a,c+R,!0,e)),d?(”content“===c&&(g-=n.css(a,”padding“+R,!0,e)),”margin“!==c&&(g-=n.css(a,”border“R[f]Width“,!0,e))):(g+=n.css(a,”padding“+R,!0,e),”padding“!==c&&(g+=n.css(a,”border“R[f]”Width“,!0,e)));return g}function Ib(a,b,c){var d=!0,e=”width“===b?a.offsetWidth:a.offsetHeight,f=wb(a),g=”border-box“===n.css(a,”boxSizing“,!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?”border“:”content“),d,f)+”px“}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a,d.style&&(f=L.get(d,”olddisplay“),c=d.style.display,b?(f||”none“!==c||(d.style.display=”“),”“===d.style.display&&S(d)&&(f=L.access(d,”olddisplay“,tb(d.nodeName)))):(e=S(d),”none“===c&&e||L.set(d,”olddisplay“,e?c:n.css(d,”display“))));for(g=0;h>g;g++)d=a,d.style&&(b&&”none“!==d.style.display&&”“!==d.style.display||(d.style.display=b?f||”“:”none“));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,”opacity“);return”“===c?”1“:c}}}},cssNumber:{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=n.camelCase(b),i=a.style;return b=n.cssProps||(n.cssProps=Fb(i,h)),g=n.cssHooks||n.cssHooks,void 0===c?g&&”get“in g&&void 0!==(e=g.get(a,!1,d))?e:i:(f=typeof c,”string“===f&&(e=Bb.exec©)&&(c=(e+1)*e+parseFloat(n.css(a,b)),f=”number“),null!=c&&c===c&&(”number“!==f||n.cssNumber||(c+=”px“),k.clearCloneStyle||”“!==c||0!==b.indexOf(”background“)||(i=”inherit“),g&&”set“in g&&void 0===(c=g.set(a,c,d))||(i=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps||(n.cssProps=Fb(a.style,h)),g=n.cssHooks||n.cssHooks,g&&”get“in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),”normal“===e&&b in Db&&(e=Db),”“===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(,function(a,b){n.cssHooks={get:function(a,c,d){return c?zb.test(n.css(a,”display“))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,”border-box“===n.css(a,”boxSizing“,!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:”inline-block“},xb,):void 0}),n.each({margin:”“,padding:”“,border:”Width“},function(a,b){n.cssHooks={expand:function©{for(var d=0,e={},f=”string“==typeof c?c.split(” “):[c];4>d;d++)e[a+R+b]=f||f||f;return e}},ub.test(a)||(n.cssHooks.set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b]=n.css(a,b,!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return”boolean“==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||”swing“,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber?”“:”px“)},cur:function(){var a=Kb.propHooks;return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks;return this.pos=b=this.options.duration?n.easing(a,this.options.duration*a,0,1,this.options.duration):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):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem||a.elem.style&&null!=a.elem.style?(b=n.css(a.elem,a.prop,”“),b&&”auto“!==b?b:0):a.elem},set:function(a){n.fx.step?n.fx.step(a):a.elem.style&&(null!=a.elem.style[n.cssProps]||n.cssHooks)?n.style(a.elem,a.prop,a.now+a.unit):a.elem=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp(”^(?:()=|)(“Q”)(*)$“,”i“),Pb=/queueHooks$/,Qb=,Rb={”*“:[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e||(n.cssNumber?”“:”px“),g=(n.cssNumber||”px“!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g!==f){f=f||g,e=e||[],g=+d||1;do h=h||”.5“,g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&–i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e?g+(e+1)*e:+e),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R,e=e=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb||[]).concat(Rb),f=0,g=e.length;g>f;f++)if(d=e.call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,”fxshow“);c.queue||(h=n._queueHooks(a,”fx“),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued–,n.queue(a,”fx“).length||h.empty.fire()})})),1===a.nodeType&&(”height“in b||”width“in b)&&(c.overflow=,j=n.css(a,”display“),k=”none“===j?L.get(a,”olddisplay“)||tb(a.nodeName):j,”inline“===k&&”none“===n.css(a,”float“)&&(o.display=”inline-block“)),c.overflow&&(o.overflow=”hidden“,l.always(function(){o.overflow=c.overflow,o.overflowX=c.overflow,o.overflowY=c.overflow}));for(d in b)if(e=b,Nb.exec(e)){if(delete b,f=f||”toggle“===e,e===(p?”hide“:”show“)){if(”show“!==e||!q||void 0===q)continue;p=!0}m=q&&q||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))”inline“===(”none“===j?tb(a.nodeName):j)&&(o.display=j);else{q?”hidden“in q&&(p=q.hidden):q=L.access(a,”fxshow“,{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,”fxshow“);for(b in m)n.style(a,b,m)});for(d in m)g=Ub(p?q:0,d,l),d in q||(q=g.start,p&&(g.end=g.start,g.start=”width“===d||”height“===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase©,e=b,f=a,n.isArray(f)&&(e=f,f=a=f),c!==d&&(a=f,delete a),g=n.cssHooks,g&&”expand“in g){f=g.expand(f),delete a;for(c in f)c in a||(a=f,b=e)}else b=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens.run(f);return h.notifyWith(a,),1>f&&i?c:(h.resolveWith(a,),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing||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;d>c;c++)j.tweens.run(1);return b?h.resolveWith(a,):h.rejectWith(a,),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb.call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=):a=a.split(” “);for(var c,d=0,e=a.length;e>d;d++)c=a,Rb=Rb||[],Rb.unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&”object“==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:”number“==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue=”fx“),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css(”opacity“,0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.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©};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=n.timers,g=L.get(this);if(e)g&&g.stop&&d(g);else for(e in g)g&&g.stop&&Pb.test(e)&&d(g);for(e=f.length;e–;)f.elem!==this||null!=a&&f.queue!==a||(f.anim.stop©,b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||”fx“),this.each(function(){var b,c=L.get(this),d=c,e=c,f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b–;)f.elem===this&&f.queue===a&&(f.anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d&&d.finish&&d.finish.call(this);delete c.finish})}}),n.each(,function(a,b){var c=n.fn;n.fn=function(a,d,e){return null==a||”boolean“==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb(”show“),slideUp:Tb(”hide“),slideToggle:Tb(”toggle“),fadeIn:{opacity:”show“},fadeOut:{opacity:”hide“},fadeToggle:{opacity:”toggle“}},function(a,b){n.fn=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b,a()||c!==a||c.splice(b–,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds||a:a,b=b||”fx“,this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement(”input“),b=l.createElement(”select“),c=b.appendChild(l.createElement(”option“));a.type=”checkbox“,k.checkOn=”“!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement(”input“),a.value=”t“,a.type=”radio“,k.radioValue=”t“===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&”get“in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&”set“in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+”“),c):void n.removeAttr(a,b)) },removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f)d=n.propFix||c,n.expr.match.bool.test©&&(a=!1),a.removeAttribute©},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&”radio“===b&&n.nodeName(a,”input“)){var c=a.value;return a.setAttribute(”type“,b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/w+/g),function(a,b){var c=$b||n.find.attr;$b=function(a,b,d){var e,f;return d||(f=$b,$b=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix||a]})}}),n.extend({propFix:{”for“:”htmlFor“,”class“:”className“},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix||b,e=n.propHooks),void 0!==c?e&&”set“in e&&void 0!==(d=e.set(a,c,b))?d:a=c:e&&”get“in e&&null!==(d=e.get(a,b))?d:a},propHooks:{tabIndex:{get:function(a){return a.hasAttribute(”tabindex“)||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(,function(){n.propFix=this});var ac=//g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=”string“==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||”“).match(E)||[];j>i;i++)if(c=this,d=1===c.nodeType&&(c.className?(” “c.className” “).replace(ac,” “):” “)){f=0;while(e=b)d.indexOf(” “e” “)<0&&(d+=e+” “);g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||”string“==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||”“).match(E)||[];j>i;i++)if(c=this,d=1===c.nodeType&&(c.className?(” “c.className” “).replace(ac,” “):”“)){f=0;while(e=b)while(d.indexOf(” “e” “)>=0)d=d.replace(” “e” “,” “);g=a?n.trim(d):”“,c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return”boolean“==typeof b&&”string“===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function©{n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if(”string“===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f)e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||”boolean“===c)&&(this.className&&L.set(this,”__className__“,this.className),this.className=this.className||a===!1?”“:L.get(this,”__className__“)||”“)})},hasClass:function(a){for(var b=” “a” “,c=0,d=this.length;d>c;c++)if(1===this.nodeType&&(” “this[c].className” “).replace(ac,” “).indexOf(b)>=0)return!0;return!1}});var bc=/r/g;n.fn.extend({val:function(a){var b,c,d,e=this;{if(arguments.length)return d=n.isFunction(a),this.each(function©{var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e=”“:”number“==typeof e?e+=”“:n.isArray(e)&&(e=n.map(e,function(a){return null==a?”“:a+”“})),b=n.valHooks||n.valHooks,b&&”set“in b&&void 0!==b.set(this,e,”value“)||(this.value=e))});if(e)return b=n.valHooks||n.valHooks,b&&”get“in b&&void 0!==(c=b.get(e,”value“))?c:(c=e.value,”string“==typeof c?c.replace(bc,”“):null==c?”“:c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,”value“);return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f=”select-one“===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d,!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute(”disabled“))||c.parentNode.disabled&&n.nodeName(c.parentNode,”optgroup“))){if(b=n©.val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g–)d=e,(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(,function(){n.valHooks={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks.get=function(a){return null===a.getAttribute(”value“)?”on“:a.value})}),n.each(”blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu“.split(” “),function(a,b){n.fn=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},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)}});var cc=n.now(),dc=/?/;n.parseJSON=function(a){return JSON.parse(a+”“)},n.parseXML=function(a){var b,c;if(!a||”string“!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,”text/xml“)}catch(d){b=void 0}return(!b||b.getElementsByTagName(”parsererror“).length)&&n.error(”Invalid XML: “+a),b};var ec=/#.*$/,fc=/()_=*/,gc=/^(.*?):[ t]*([^rn]*)$/gm,hc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ic=/^(?:GET|HEAD)$/,jc=/^///,kc=/^([w.-]:)(?://(?:[^/?#]*@|)([^/?#:]*)(?::(d+)|)|)/,lc={},mc={},nc=”*/“.concat(”*“),oc=a.location.href,pc=kc.exec(oc.toLowerCase())||[];function qc(a){return function(b,c){”string“!=typeof b&&(c=b,b=”*“);var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction©)while(d=f)”+“===d?(d=d.slice(1)||”*“,(a=a||[]).unshift©):(a=a||[]).push©}}function rc(a,b,c,d){var e={},f=a===mc;function g(h){var i;return e=!0,n.each(a||[],function(a,h){var j=h(b,c,d);return”string“!=typeof j||f||e?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes)||!e&&g(”*“)}function sc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b&&((e?a:d||(d={}))[c]=b);return d&&n.extend(!0,a,d),a}function tc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while(”*“===i)i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader(”Content-Type“));if(d)for(e in h)if(h&&h.test(d)){i.unshift(e);break}if(iin c)f=i;else{for(e in c){if(!i||a.converters[e+” “+i]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i&&i.unshift(f),c):void 0}function uc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k)for(g in a.converters)j=a.converters;f=k.shift();while(f)if(a.responseFields&&(c[a.responseFields]=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===f&&(g=j[i+” “+h]||j[”* “+h])){g===!0?g=j:j!==!0&&(f=h,k.unshift(h));break}if(g!==!0)if(g&&a)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}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:oc,type:”GET“,isLocal:hc.test(pc),global:!0,processData:!0,async:!0,contentType:”application/x-www-form-urlencoded; charset=UTF-8“,accepts:{”*“:nc,text:”text/plain“,html:”text/html“,xml:”application/xml, text/xml“,json:”application/json, text/javascript“},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:”responseXML“,text:”responseText“,json:”responseJSON“},converters:{”* text“:String,”text html“:!0,”text json“:n.parseJSON,”text xml“:n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sc(sc(a,n.ajaxSettings),b):sc(n.ajaxSettings,a)},ajaxPrefilter:qc(lc),ajaxTransport:qc(mc),ajax:function(a,b){”object“==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks(”once memory“),q=k.statusCode||{},r={},s={},t=0,u=”canceled“,v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gc.exec(e))f[b.toLowerCase()]=b}b=f}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s=s||a,r=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q=[q,a];else v.always(a);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||oc)+”“).replace(ec,”“).replace(jc,pc+”//“),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||”*“).toLowerCase().match(E)||,null==k.crossDomain&&(h=kc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h===pc&&h===pc&&(h||(”“===h[1]?”80“:”443“))===(pc[3]||(”http:“===pc[1]?”80“:”443“)))),k.data&&k.processData&&”string“!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rc(lc,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger(”ajaxStart“),k.type=k.type.toUpperCase(),k.hasContent=!ic.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?”&“:”?“)+k.data,delete k.data),k.cache===!1&&(k.url=fc.test(d)?d.replace(fc,”$1_=“cc+):d+(dc.test(d)?”&“:”?“)+”_=“cc+)),k.ifModified&&(n.lastModified&&v.setRequestHeader(”If-Modified-Since“,n.lastModified),n.etag&&v.setRequestHeader(”If-None-Match“,n.etag)),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader(”Content-Type“,k.contentType),v.setRequestHeader(”Accept“,k.dataTypes&&k.accepts[k.dataTypes]?k.accepts[k.dataTypes]+(”*“!==k.dataTypes?”, “nc”; q=0.01“:”“):k.accepts);for(j in k.headers)v.setRequestHeader(j,k.headers);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u=”abort“;for(j in{success:1,error:1,complete:1})v(k);if(c=rc(mc,k,b,v)){v.readyState=1,i&&m.trigger(”ajaxSend“,),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort(”timeout“)},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,”No Transport“);function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||”“,v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tc(k,v,f)),u=uc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader(”Last-Modified“),w&&(n.lastModified=w),w=v.getResponseHeader(”etag“),w&&(n.etag=w)),204===a||”HEAD“===k.type?x=”nocontent“:304===a?x=”notmodified“:(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x=”error“,0>a&&(a=0))),v.status=a,v.statusText=(b||x)+”“,j?o.resolveWith(l,):o.rejectWith(l,),v.statusCode(q),q=void 0,i&&m.trigger(j?”ajaxSuccess“:”ajaxError“,),p.fireWith(l,),i&&(m.trigger(”ajaxComplete“,),–n.active||n.event.trigger(”ajaxStop“)))}return v},getJSON:function(a,b,c){return n.get(a,b,c,”json“)},getScript:function(a,b){return n.get(a,void 0,b,”script“)}}),n.each(,function(a,b){n=function(a,c,d,e){return n.isFunction©&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:”GET“,dataType:”script“,async:!1,global:!1,”throws“:!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this&&(b=n(a,this.ownerDocument).eq(0).clone(!0),this.parentNode&&b.insertBefore(this),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function©{n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,”body“)||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vc=/%20/g,wc=/$/,xc=/r?n/g,yc=/^(?:submit|button|image|reset|file)$/i,zc=/^(?:input|select|textarea|keygen)/i;function Ac(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wc.test(a)?d(a,e):Ac(a+”[“+(”object“==typeof e?b:”“)+”]“,e,c,d)});else if(c||”object“!==n.type(b))d(a,b);else for(e in b)Ac(a+”[“e”]“,b,c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?”“:b,d=encodeURIComponent(a)+”=“+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ac(c,a,b,e);return d.join(”&“).replace(vc,”+“)},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,”elements“);return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(”:disabled“)&&zc.test(this.nodeName)&&!yc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray©?n.map(c,function(a){return{name:b.name,value:a.replace(xc,”rn“)}}):{name:b.name,value:c.replace(xc,”rn“)}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bc=0,Cc={},Dc={0:200,1223:204},Ec=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent(”onunload“,function(){for(var a in Cc)Cc()}),k.cors=!!Ec&&”withCredentials“in Ec,k.ajax=Ec=!!Ec,n.ajaxTransport(function(a){var b;return k.cors||Ec&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f=a.xhrFields;a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c||(c=”XMLHttpRequest“);for(e in c)f.setRequestHeader(e,c);b=function(a){return function(){b&&(delete Cc,b=f.onload=f.onerror=null,”abort“===a?f.abort():”error“===a?d(f.status,f.statusText):d(Dc||f.status,f.statusText,”string“==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b(”error“),b=Cc=b(”abort“);try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:”text/javascript, application/javascript, application/ecmascript, application/x-ecmascript“},contents:{script:/(?:java|ecma)script/},converters:{”text script“:function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter(”script“,function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type=”GET“)}),n.ajaxTransport(”script“,function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n(”<script>“).prop({async:!0,charset:a.scriptCharset,src:a.url}).on(”load error“,c=function(a){b.remove(),c=null,a&&e(”error“===a.type?404:200,a.type)}),l.head.appendChild(b)},abort:function(){c&&c()}}}});var Fc=[],Gc=/(=)?(?=&|$)|??/;n.ajaxSetup({jsonp:”callback“,jsonpCallback:function(){var a=Fc.pop()||n.expando+”_“cc+;return this=!0,a}}),n.ajaxPrefilter(”json jsonp“,function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gc.test(b.url)?”url“:”string“==typeof b.data&&!(b.contentType||”“).indexOf(”application/x-www-form-urlencoded“)&&Gc.test(b.data)&&”data“);return h||”jsonp“===b.dataTypes?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b=b.replace(Gc,”$1“+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?”&“:”?“)b.jsonp”=“+e),b.converters[”script json“]=function(){return g||n.error(e+” was not called“),g},b.dataTypes=”json“,f=a,a=function(){g=arguments},d.always(function(){a=f,b&&(b.jsonpCallback=c.jsonpCallback,Fc.push(e)),g&&n.isFunction(f)&&f(g),g=f=void 0}),”script“):void 0}),n.parseHTML=function(a,b,c){if(!a||”string“!=typeof a)return null;”boolean“==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d)]:(d=n.buildFragment(,b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hc=n.fn.load;n.fn.load=function(a,b,c){if(”string“!=typeof a&&Hc)return Hc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(” “);return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&”object“==typeof b&&(e=”POST“),g.length>0&&n.ajax({url:a,type:e,dataType:”html“,data:b}).done(function(a){f=arguments,g.html(d?n(”<div>“).append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||)}),this},n.each(,function(a,b){n.fn=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ic=a.document.documentElement;function Jc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,”position“),l=n(a),m={};”static“===k&&(a.style.position=”relative“),h=l.offset(),f=n.css(a,”top“),i=n.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),n.isFunction(b)&&(b=b.call(a,c,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)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this,e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this){var a,b,c=this,d={top:0,left:0};return”fixed“===n.css(c,”position“)?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a,”html“)||(d=a.offset()),d.top+=n.css(a,”borderTopWidth“,!0),d.left+=n.css(a,”borderLeftWidth“,!0)),{top:b.top-d.top-n.css(c,”marginTop“,!0),left:b.left-d.left-n.css(c,”marginLeft“,!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ic;while(a&&!n.nodeName(a,”html“)&&”static“===n.css(a,”position“))a=a.offsetParent;return a||Ic})}}),n.each({scrollLeft:”pageXOffset“,scrollTop:”pageYOffset“},function(b,c){var d=”pageYOffset“===c;n.fn=function(e){return J(this,function(b,e,f){var g=Jc(b);return void 0===f?g?g:b:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b=f)},b,e,arguments.length,null)}}),n.each(,function(a,b){n.cssHooks=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test©?n(a).position()+”px“:c):void 0})}),n.each({Height:”height“,Width:”width“},function(a,b){n.each({padding:”inner“+a,content:b,”“:”outer“+a},function(c,d){n.fn=function(d,e){var f=arguments.length&&(c||”boolean“!=typeof d),g=c||(d===!0||e===!0?”margin“:”border“);return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement:9===b.nodeType?(e=b.documentElement,Math.max(b.body,e,b.body,e,e)):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,”function“==typeof define&&define.amd&&define(”jquery“,[],function(){return n});var Kc=a.jQuery,Lc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lc),b&&a.jQuery===n&&(a.jQuery=Kc),n},typeof b===U&&(a.jQuery=a.$=n),n}); (function($, undefined) {

/**

* Unobtrusive scripting adapter for jQuery
* https://github.com/rails/jquery-ujs
*
* Requires jQuery 1.8.0 or later.
*
* Released under the MIT license
*
*/

 // Cut down on the number of issues from people inadvertently including jquery_ujs twice
 // by detecting and raising an error when it happens.
 if ( $.rails !== undefined ) {
   $.error('jquery-ujs has already been loaded!');
 }

 // Shorthand to make it a little easier to call public rails functions from within rails.js
 var rails;
 var $document = $(document);

 $.rails = rails = {
   // Link elements bound by jquery-ujs
   linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote], a[data-disable-with], a[data-disable]',

   // Button elements bound by jquery-ujs
   buttonClickSelector: 'button[data-remote]:not(form button), button[data-confirm]:not(form button)',

   // Select elements bound by jquery-ujs
   inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',

   // Form elements bound by jquery-ujs
   formSubmitSelector: 'form',

   // Form input elements bound by jquery-ujs
   formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',

   // Form input elements disabled during form submission
   disableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',

   // Form input elements re-enabled after form submission
   enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',

   // Form required input elements
   requiredInputSelector: 'input[name][required]:not([disabled]),textarea[name][required]:not([disabled])',

   // Form file input elements
   fileInputSelector: 'input[type=file]',

   // Link onClick disable selector with possible reenable after remote submission
   linkDisableSelector: 'a[data-disable-with], a[data-disable]',

   // Button onClick disable selector with possible reenable after remote submission
   buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]',

   // Up-to-date Cross-Site Request Forgery token
   csrfToken: function() {
    return $('meta[name=csrf-token]').attr('content');
   },

   // URL param that must contain the CSRF token
   csrfParam: function() {
    return $('meta[name=csrf-param]').attr('content');
   },

   // Make sure that every Ajax request sends the CSRF token
   CSRFProtection: function(xhr) {
     var token = rails.csrfToken();
     if (token) xhr.setRequestHeader('X-CSRF-Token', token);
   },

   // making sure that all forms have actual up-to-date token(cached forms contain old one)
   refreshCSRFTokens: function(){
     $('form input[name="' + rails.csrfParam() + '"]').val(rails.csrfToken());
   },

   // Triggers an event on an element and returns false if the event result is false
   fire: function(obj, name, data) {
     var event = $.Event(name);
     obj.trigger(event, data);
     return event.result !== false;
   },

   // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm
   confirm: function(message) {
     return confirm(message);
   },

   // Default ajax function, may be overridden with custom function in $.rails.ajax
   ajax: function(options) {
     return $.ajax(options);
   },

   // Default way to get an element's href. May be overridden at $.rails.href.
   href: function(element) {
     return element.attr('href');
   },

   // Submits "remote" forms and links with ajax
   handleRemote: function(element) {
     var method, url, data, elCrossDomain, crossDomain, withCredentials, dataType, options;

     if (rails.fire(element, 'ajax:before')) {
       elCrossDomain = element.data('cross-domain');
       crossDomain = elCrossDomain === undefined ? null : elCrossDomain;
       withCredentials = element.data('with-credentials') || null;
       dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType);

       if (element.is('form')) {
         method = element.attr('method');
         url = element.attr('action');
         data = element.serializeArray();
         // memoized value from clicked submit button
         var button = element.data('ujs:submit-button');
         if (button) {
           data.push(button);
           element.data('ujs:submit-button', null);
         }
       } else if (element.is(rails.inputChangeSelector)) {
         method = element.data('method');
         url = element.data('url');
         data = element.serialize();
         if (element.data('params')) data = data + "&" + element.data('params');
       } else if (element.is(rails.buttonClickSelector)) {
         method = element.data('method') || 'get';
         url = element.data('url');
         data = element.serialize();
         if (element.data('params')) data = data + "&" + element.data('params');
       } else {
         method = element.data('method');
         url = rails.href(element);
         data = element.data('params') || null;
       }

       options = {
         type: method || 'GET', data: data, dataType: dataType,
         // stopping the "ajax:beforeSend" event will cancel the ajax request
         beforeSend: function(xhr, settings) {
           if (settings.dataType === undefined) {
             xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);
           }
           if (rails.fire(element, 'ajax:beforeSend', [xhr, settings])) {
             element.trigger('ajax:send', xhr);
           } else {
             return false;
           }
         },
         success: function(data, status, xhr) {
           element.trigger('ajax:success', [data, status, xhr]);
         },
         complete: function(xhr, status) {
           element.trigger('ajax:complete', [xhr, status]);
         },
         error: function(xhr, status, error) {
           element.trigger('ajax:error', [xhr, status, error]);
         },
         crossDomain: crossDomain
       };

       // There is no withCredentials for IE6-8 when
       // "Enable native XMLHTTP support" is disabled
       if (withCredentials) {
         options.xhrFields = {
           withCredentials: withCredentials
         };
       }

       // Only pass url to `ajax` options if not blank
       if (url) { options.url = url; }

       return rails.ajax(options);
     } else {
       return false;
     }
   },

   // Handles "data-method" on links such as:
   // <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a>
   handleMethod: function(link) {
     var href = rails.href(link),
       method = link.data('method'),
       target = link.attr('target'),
       csrfToken = rails.csrfToken(),
       csrfParam = rails.csrfParam(),
       form = $('<form method="post" action="' + href + '"></form>'),
       metadataInput = '<input name="_method" value="' + method + '" type="hidden" />';

     if (csrfParam !== undefined && csrfToken !== undefined) {
       metadataInput += '<input name="' + csrfParam + '" value="' + csrfToken + '" type="hidden" />';
     }

     if (target) { form.attr('target', target); }

     form.hide().append(metadataInput).appendTo('body');
     form.submit();
   },

   // Helper function that returns form elements that match the specified CSS selector
   // If form is actually a "form" element this will return associated elements outside the from that have
   // the html form attribute set
   formElements: function(form, selector) {
     return form.is('form') ? $(form[0].elements).filter(selector) : form.find(selector);
   },

   /* Disables form elements:
     - Caches element value in 'ujs:enable-with' data store
     - Replaces element text with value of 'data-disable-with' attribute
     - Sets disabled property to true
   */
   disableFormElements: function(form) {
     rails.formElements(form, rails.disableSelector).each(function() {
       rails.disableFormElement($(this));
     });
   },

   disableFormElement: function(element) {
     var method, replacement;

     method = element.is('button') ? 'html' : 'val';
     replacement = element.data('disable-with');

     element.data('ujs:enable-with', element[method]());
     if (replacement !== undefined) {
       element[method](replacement);
     }

     element.prop('disabled', true);
   },

   /* Re-enables disabled form elements:
     - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)
     - Sets disabled property to false
   */
   enableFormElements: function(form) {
     rails.formElements(form, rails.enableSelector).each(function() {
       rails.enableFormElement($(this));
     });
   },

   enableFormElement: function(element) {
     var method = element.is('button') ? 'html' : 'val';
     if (element.data('ujs:enable-with')) element[method](element.data('ujs:enable-with'));
     element.prop('disabled', false);
   },

  /* For 'data-confirm' attribute:
     - Fires `confirm` event
     - Shows the confirmation dialog
     - Fires the `confirm:complete` event

     Returns `true` if no function stops the chain and user chose yes; `false` otherwise.
     Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog.
     Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function
     return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog.
  */
   allowAction: function(element) {
     var message = element.data('confirm'),
         answer = false, callback;
     if (!message) { return true; }

     if (rails.fire(element, 'confirm')) {
       answer = rails.confirm(message);
       callback = rails.fire(element, 'confirm:complete', [answer]);
     }
     return answer && callback;
   },

   // Helper function which checks for blank inputs in a form that match the specified CSS selector
   blankInputs: function(form, specifiedSelector, nonBlank) {
     var inputs = $(), input, valueToCheck,
         selector = specifiedSelector || 'input,textarea',
         allInputs = form.find(selector);

     allInputs.each(function() {
       input = $(this);
       valueToCheck = input.is('input[type=checkbox],input[type=radio]') ? input.is(':checked') : input.val();
       // If nonBlank and valueToCheck are both truthy, or nonBlank and valueToCheck are both falsey
       if (!valueToCheck === !nonBlank) {

         // Don't count unchecked required radio if other radio with same name is checked
         if (input.is('input[type=radio]') && allInputs.filter('input[type=radio]:checked[name="' + input.attr('name') + '"]').length) {
           return true; // Skip to next input
         }

         inputs = inputs.add(input);
       }
     });
     return inputs.length ? inputs : false;
   },

   // Helper function which checks for non-blank inputs in a form that match the specified CSS selector
   nonBlankInputs: function(form, specifiedSelector) {
     return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank
   },

   // Helper function, needed to provide consistent behavior in IE
   stopEverything: function(e) {
     $(e.target).trigger('ujs:everythingStopped');
     e.stopImmediatePropagation();
     return false;
   },

   //  replace element's html with the 'data-disable-with' after storing original html
   //  and prevent clicking on it
   disableElement: function(element) {
     var replacement = element.data('disable-with');

     element.data('ujs:enable-with', element.html()); // store enabled state
     if (replacement !== undefined) {
       element.html(replacement);
     }

     element.bind('click.railsDisable', function(e) { // prevent further clicking
       return rails.stopEverything(e);
     });
   },

   // restore element to its original state which was disabled by 'disableElement' above
   enableElement: function(element) {
     if (element.data('ujs:enable-with') !== undefined) {
       element.html(element.data('ujs:enable-with')); // set to old enabled state
       element.removeData('ujs:enable-with'); // clean up cache
     }
     element.unbind('click.railsDisable'); // enable element
   }
 };

 if (rails.fire($document, 'rails:attachBindings')) {

   $.ajaxPrefilter(function(options, originalOptions, xhr){ if ( !options.crossDomain ) { rails.CSRFProtection(xhr); }});

   // This event works the same as the load event, except that it fires every
   // time the page is loaded.
   //
   // See https://github.com/rails/jquery-ujs/issues/357
   // See https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching
   $(window).on("pageshow.rails", function () {
     $($.rails.enableSelector).each(function () {
       var element = $(this);

       if (element.data("ujs:enable-with")) {
         $.rails.enableFormElement(element);
       }
     });

     $($.rails.linkDisableSelector).each(function () {
       var element = $(this);

       if (element.data("ujs:enable-with")) {
         $.rails.enableElement(element);
       }
     });
   });

   $document.delegate(rails.linkDisableSelector, 'ajax:complete', function() {
       rails.enableElement($(this));
   });

   $document.delegate(rails.buttonDisableSelector, 'ajax:complete', function() {
       rails.enableFormElement($(this));
   });

   $document.delegate(rails.linkClickSelector, 'click.rails', function(e) {
     var link = $(this), method = link.data('method'), data = link.data('params'), metaClick = e.metaKey || e.ctrlKey;
     if (!rails.allowAction(link)) return rails.stopEverything(e);

     if (!metaClick && link.is(rails.linkDisableSelector)) rails.disableElement(link);

     if (link.data('remote') !== undefined) {
       if (metaClick && (!method || method === 'GET') && !data) { return true; }

       var handleRemote = rails.handleRemote(link);
       // response from rails.handleRemote() will either be false or a deferred object promise.
       if (handleRemote === false) {
         rails.enableElement(link);
       } else {
         handleRemote.fail( function() { rails.enableElement(link); } );
       }
       return false;

     } else if (method) {
       rails.handleMethod(link);
       return false;
     }
   });

   $document.delegate(rails.buttonClickSelector, 'click.rails', function(e) {
     var button = $(this);

     if (!rails.allowAction(button)) return rails.stopEverything(e);

     if (button.is(rails.buttonDisableSelector)) rails.disableFormElement(button);

     var handleRemote = rails.handleRemote(button);
     // response from rails.handleRemote() will either be false or a deferred object promise.
     if (handleRemote === false) {
       rails.enableFormElement(button);
     } else {
       handleRemote.fail( function() { rails.enableFormElement(button); } );
     }
     return false;
   });

   $document.delegate(rails.inputChangeSelector, 'change.rails', function(e) {
     var link = $(this);
     if (!rails.allowAction(link)) return rails.stopEverything(e);

     rails.handleRemote(link);
     return false;
   });

   $document.delegate(rails.formSubmitSelector, 'submit.rails', function(e) {
     var form = $(this),
       remote = form.data('remote') !== undefined,
       blankRequiredInputs,
       nonBlankFileInputs;

     if (!rails.allowAction(form)) return rails.stopEverything(e);

     // skip other logic when required values are missing or file upload is present
     if (form.attr('novalidate') == undefined) {
       blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector);
       if (blankRequiredInputs && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {
         return rails.stopEverything(e);
       }
     }

     if (remote) {
       nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector);
       if (nonBlankFileInputs) {
         // slight timeout so that the submit button gets properly serialized
         // (make it easy for event handler to serialize form without disabled values)
         setTimeout(function(){ rails.disableFormElements(form); }, 13);
         var aborted = rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);

         // re-enable form elements if event bindings return false (canceling normal form submission)
         if (!aborted) { setTimeout(function(){ rails.enableFormElements(form); }, 13); }

         return aborted;
       }

       rails.handleRemote(form);
       return false;

     } else {
       // slight timeout so that the submit button gets properly serialized
       setTimeout(function(){ rails.disableFormElements(form); }, 13);
     }
   });

   $document.delegate(rails.formInputClickSelector, 'click.rails', function(event) {
     var button = $(this);

     if (!rails.allowAction(button)) return rails.stopEverything(event);

     // register the pressed submit button
     var name = button.attr('name'),
       data = name ? {name:name, value:button.val()} : null;

     button.closest('form').data('ujs:submit-button', data);
   });

   $document.delegate(rails.formSubmitSelector, 'ajax:send.rails', function(event) {
     if (this == event.target) rails.disableFormElements($(this));
   });

   $document.delegate(rails.formSubmitSelector, 'ajax:complete.rails', function(event) {
     if (this == event.target) rails.enableFormElements($(this));
   });

   $(function(){
     rails.refreshCSRFTokens();
   });
 }

})( jQuery ); /* ========================================================================

* Bootstrap: affix.js v3.3.4
* http://getbootstrap.com/javascript/#affix
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */

+function ($) {

'use strict';

// AFFIX CLASS DEFINITION
// ======================

var Affix = function (element, options) {
  this.options = $.extend({}, Affix.DEFAULTS, options)

  this.$target = $(this.options.target)
    .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
    .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))

  this.$element     = $(element)
  this.affixed      = null
  this.unpin        = null
  this.pinnedOffset = null

  this.checkPosition()
}

Affix.VERSION  = '3.3.4'

Affix.RESET    = 'affix affix-top affix-bottom'

Affix.DEFAULTS = {
  offset: 0,
  target: window
}

Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
  var scrollTop    = this.$target.scrollTop()
  var position     = this.$element.offset()
  var targetHeight = this.$target.height()

  if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false

  if (this.affixed == 'bottom') {
    if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
    return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
  }

  var initializing   = this.affixed == null
  var colliderTop    = initializing ? scrollTop : position.top
  var colliderHeight = initializing ? targetHeight : height

  if (offsetTop != null && scrollTop <= offsetTop) return 'top'
  if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'

  return false
}

Affix.prototype.getPinnedOffset = function () {
  if (this.pinnedOffset) return this.pinnedOffset
  this.$element.removeClass(Affix.RESET).addClass('affix')
  var scrollTop = this.$target.scrollTop()
  var position  = this.$element.offset()
  return (this.pinnedOffset = position.top - scrollTop)
}

Affix.prototype.checkPositionWithEventLoop = function () {
  setTimeout($.proxy(this.checkPosition, this), 1)
}

Affix.prototype.checkPosition = function () {
  if (!this.$element.is(':visible')) return

  var height       = this.$element.height()
  var offset       = this.options.offset
  var offsetTop    = offset.top
  var offsetBottom = offset.bottom
  var scrollHeight = $(document.body).height()

  if (typeof offset != 'object')         offsetBottom = offsetTop = offset
  if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
  if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)

  var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)

  if (this.affixed != affix) {
    if (this.unpin != null) this.$element.css('top', '')

    var affixType = 'affix' + (affix ? '-' + affix : '')
    var e         = $.Event(affixType + '.bs.affix')

    this.$element.trigger(e)

    if (e.isDefaultPrevented()) return

    this.affixed = affix
    this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null

    this.$element
      .removeClass(Affix.RESET)
      .addClass(affixType)
      .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
  }

  if (affix == 'bottom') {
    this.$element.offset({
      top: scrollHeight - height - offsetBottom
    })
  }
}

// AFFIX PLUGIN DEFINITION
// =======================

function Plugin(option) {
  return this.each(function () {
    var $this   = $(this)
    var data    = $this.data('bs.affix')
    var options = typeof option == 'object' && option

    if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
    if (typeof option == 'string') data[option]()
  })
}

var old = $.fn.affix

$.fn.affix             = Plugin
$.fn.affix.Constructor = Affix

// AFFIX NO CONFLICT
// =================

$.fn.affix.noConflict = function () {
  $.fn.affix = old
  return this
}

// AFFIX DATA-API
// ==============

$(window).on('load', function () {
  $('[data-spy="affix"]').each(function () {
    var $spy = $(this)
    var data = $spy.data()

    data.offset = data.offset || {}

    if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
    if (data.offsetTop    != null) data.offset.top    = data.offsetTop

    Plugin.call($spy, data)
  })
})

}(jQuery); /* ========================================================================

* Bootstrap: alert.js v3.3.4
* http://getbootstrap.com/javascript/#alerts
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */

+function ($) {

'use strict';

// ALERT CLASS DEFINITION
// ======================

var dismiss = '[data-dismiss="alert"]'
var Alert   = function (el) {
  $(el).on('click', dismiss, this.close)
}

Alert.VERSION = '3.3.4'

Alert.TRANSITION_DURATION = 150

Alert.prototype.close = function (e) {
  var $this    = $(this)
  var selector = $this.attr('data-target')

  if (!selector) {
    selector = $this.attr('href')
    selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
  }

  var $parent = $(selector)

  if (e) e.preventDefault()

  if (!$parent.length) {
    $parent = $this.closest('.alert')
  }

  $parent.trigger(e = $.Event('close.bs.alert'))

  if (e.isDefaultPrevented()) return

  $parent.removeClass('in')

  function removeElement() {
    // detach from parent, fire event then clean up data
    $parent.detach().trigger('closed.bs.alert').remove()
  }

  $.support.transition && $parent.hasClass('fade') ?
    $parent
      .one('bsTransitionEnd', removeElement)
      .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
    removeElement()
}

// ALERT PLUGIN DEFINITION
// =======================

function Plugin(option) {
  return this.each(function () {
    var $this = $(this)
    var data  = $this.data('bs.alert')

    if (!data) $this.data('bs.alert', (data = new Alert(this)))
    if (typeof option == 'string') data[option].call($this)
  })
}

var old = $.fn.alert

$.fn.alert             = Plugin
$.fn.alert.Constructor = Alert

// ALERT NO CONFLICT
// =================

$.fn.alert.noConflict = function () {
  $.fn.alert = old
  return this
}

// ALERT DATA-API
// ==============

$(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)

}(jQuery); /* ========================================================================

* Bootstrap: button.js v3.3.4
* http://getbootstrap.com/javascript/#buttons
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */

+function ($) {

'use strict';

// BUTTON PUBLIC CLASS DEFINITION
// ==============================

var Button = function (element, options) {
  this.$element  = $(element)
  this.options   = $.extend({}, Button.DEFAULTS, options)
  this.isLoading = false
}

Button.VERSION  = '3.3.4'

Button.DEFAULTS = {
  loadingText: 'loading...'
}

Button.prototype.setState = function (state) {
  var d    = 'disabled'
  var $el  = this.$element
  var val  = $el.is('input') ? 'val' : 'html'
  var data = $el.data()

  state = state + 'Text'

  if (data.resetText == null) $el.data('resetText', $el[val]())

  // push to event loop to allow forms to submit
  setTimeout($.proxy(function () {
    $el[val](data[state] == null ? this.options[state] : data[state])

    if (state == 'loadingText') {
      this.isLoading = true
      $el.addClass(d).attr(d, d)
    } else if (this.isLoading) {
      this.isLoading = false
      $el.removeClass(d).removeAttr(d)
    }
  }, this), 0)
}

Button.prototype.toggle = function () {
  var changed = true
  var $parent = this.$element.closest('[data-toggle="buttons"]')

  if ($parent.length) {
    var $input = this.$element.find('input')
    if ($input.prop('type') == 'radio') {
      if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
      else $parent.find('.active').removeClass('active')
    }
    if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
  } else {
    this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
  }

  if (changed) this.$element.toggleClass('active')
}

// BUTTON PLUGIN DEFINITION
// ========================

function Plugin(option) {
  return this.each(function () {
    var $this   = $(this)
    var data    = $this.data('bs.button')
    var options = typeof option == 'object' && option

    if (!data) $this.data('bs.button', (data = new Button(this, options)))

    if (option == 'toggle') data.toggle()
    else if (option) data.setState(option)
  })
}

var old = $.fn.button

$.fn.button             = Plugin
$.fn.button.Constructor = Button

// BUTTON NO CONFLICT
// ==================

$.fn.button.noConflict = function () {
  $.fn.button = old
  return this
}

// BUTTON DATA-API
// ===============

$(document)
  .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
    var $btn = $(e.target)
    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
    Plugin.call($btn, 'toggle')
    e.preventDefault()
  })
  .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
    $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
  })

}(jQuery); /* ========================================================================

* Bootstrap: carousel.js v3.3.4
* http://getbootstrap.com/javascript/#carousel
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */

+function ($) {

'use strict';

// CAROUSEL CLASS DEFINITION
// =========================

var Carousel = function (element, options) {
  this.$element    = $(element)
  this.$indicators = this.$element.find('.carousel-indicators')
  this.options     = options
  this.paused      = null
  this.sliding     = null
  this.interval    = null
  this.$active     = null
  this.$items      = null

  this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))

  this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
    .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
    .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
}

Carousel.VERSION  = '3.3.4'

Carousel.TRANSITION_DURATION = 600

Carousel.DEFAULTS = {
  interval: 5000,
  pause: 'hover',
  wrap: true,
  keyboard: true
}

Carousel.prototype.keydown = function (e) {
  if (/input|textarea/i.test(e.target.tagName)) return
  switch (e.which) {
    case 37: this.prev(); break
    case 39: this.next(); break
    default: return
  }

  e.preventDefault()
}

Carousel.prototype.cycle = function (e) {
  e || (this.paused = false)

  this.interval && clearInterval(this.interval)

  this.options.interval
    && !this.paused
    && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))

  return this
}

Carousel.prototype.getItemIndex = function (item) {
  this.$items = item.parent().children('.item')
  return this.$items.index(item || this.$active)
}

Carousel.prototype.getItemForDirection = function (direction, active) {
  var activeIndex = this.getItemIndex(active)
  var willWrap = (direction == 'prev' && activeIndex === 0)
              || (direction == 'next' && activeIndex == (this.$items.length - 1))
  if (willWrap && !this.options.wrap) return active
  var delta = direction == 'prev' ? -1 : 1
  var itemIndex = (activeIndex + delta) % this.$items.length
  return this.$items.eq(itemIndex)
}

Carousel.prototype.to = function (pos) {
  var that        = this
  var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))

  if (pos > (this.$items.length - 1) || pos < 0) return

  if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
  if (activeIndex == pos) return this.pause().cycle()

  return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
}

Carousel.prototype.pause = function (e) {
  e || (this.paused = true)

  if (this.$element.find('.next, .prev').length && $.support.transition) {
    this.$element.trigger($.support.transition.end)
    this.cycle(true)
  }

  this.interval = clearInterval(this.interval)

  return this
}

Carousel.prototype.next = function () {
  if (this.sliding) return
  return this.slide('next')
}

Carousel.prototype.prev = function () {
  if (this.sliding) return
  return this.slide('prev')
}

Carousel.prototype.slide = function (type, next) {
  var $active   = this.$element.find('.item.active')
  var $next     = next || this.getItemForDirection(type, $active)
  var isCycling = this.interval
  var direction = type == 'next' ? 'left' : 'right'
  var that      = this

  if ($next.hasClass('active')) return (this.sliding = false)

  var relatedTarget = $next[0]
  var slideEvent = $.Event('slide.bs.carousel', {
    relatedTarget: relatedTarget,
    direction: direction
  })
  this.$element.trigger(slideEvent)
  if (slideEvent.isDefaultPrevented()) return

  this.sliding = true

  isCycling && this.pause()

  if (this.$indicators.length) {
    this.$indicators.find('.active').removeClass('active')
    var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
    $nextIndicator && $nextIndicator.addClass('active')
  }

  var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
  if ($.support.transition && this.$element.hasClass('slide')) {
    $next.addClass(type)
    $next[0].offsetWidth // force reflow
    $active.addClass(direction)
    $next.addClass(direction)
    $active
      .one('bsTransitionEnd', function () {
        $next.removeClass([type, direction].join(' ')).addClass('active')
        $active.removeClass(['active', direction].join(' '))
        that.sliding = false
        setTimeout(function () {
          that.$element.trigger(slidEvent)
        }, 0)
      })
      .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
  } else {
    $active.removeClass('active')
    $next.addClass('active')
    this.sliding = false
    this.$element.trigger(slidEvent)
  }

  isCycling && this.cycle()

  return this
}

// CAROUSEL PLUGIN DEFINITION
// ==========================

function Plugin(option) {
  return this.each(function () {
    var $this   = $(this)
    var data    = $this.data('bs.carousel')
    var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
    var action  = typeof option == 'string' ? option : options.slide

    if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
    if (typeof option == 'number') data.to(option)
    else if (action) data[action]()
    else if (options.interval) data.pause().cycle()
  })
}

var old = $.fn.carousel

$.fn.carousel             = Plugin
$.fn.carousel.Constructor = Carousel

// CAROUSEL NO CONFLICT
// ====================

$.fn.carousel.noConflict = function () {
  $.fn.carousel = old
  return this
}

// CAROUSEL DATA-API
// =================

var clickHandler = function (e) {
  var href
  var $this   = $(this)
  var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
  if (!$target.hasClass('carousel')) return
  var options = $.extend({}, $target.data(), $this.data())
  var slideIndex = $this.attr('data-slide-to')
  if (slideIndex) options.interval = false

  Plugin.call($target, options)

  if (slideIndex) {
    $target.data('bs.carousel').to(slideIndex)
  }

  e.preventDefault()
}

$(document)
  .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
  .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)

$(window).on('load', function () {
  $('[data-ride="carousel"]').each(function () {
    var $carousel = $(this)
    Plugin.call($carousel, $carousel.data())
  })
})

}(jQuery); /* ========================================================================

* Bootstrap: collapse.js v3.3.4
* http://getbootstrap.com/javascript/#collapse
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */

+function ($) {

'use strict';

// COLLAPSE PUBLIC CLASS DEFINITION
// ================================

var Collapse = function (element, options) {
  this.$element      = $(element)
  this.options       = $.extend({}, Collapse.DEFAULTS, options)
  this.$trigger      = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
                         '[data-toggle="collapse"][data-target="#' + element.id + '"]')
  this.transitioning = null

  if (this.options.parent) {
    this.$parent = this.getParent()
  } else {
    this.addAriaAndCollapsedClass(this.$element, this.$trigger)
  }

  if (this.options.toggle) this.toggle()
}

Collapse.VERSION  = '3.3.4'

Collapse.TRANSITION_DURATION = 350

Collapse.DEFAULTS = {
  toggle: true
}

Collapse.prototype.dimension = function () {
  var hasWidth = this.$element.hasClass('width')
  return hasWidth ? 'width' : 'height'
}

Collapse.prototype.show = function () {
  if (this.transitioning || this.$element.hasClass('in')) return

  var activesData
  var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')

  if (actives && actives.length) {
    activesData = actives.data('bs.collapse')
    if (activesData && activesData.transitioning) return
  }

  var startEvent = $.Event('show.bs.collapse')
  this.$element.trigger(startEvent)
  if (startEvent.isDefaultPrevented()) return

  if (actives && actives.length) {
    Plugin.call(actives, 'hide')
    activesData || actives.data('bs.collapse', null)
  }

  var dimension = this.dimension()

  this.$element
    .removeClass('collapse')
    .addClass('collapsing')[dimension](0)
    .attr('aria-expanded', true)

  this.$trigger
    .removeClass('collapsed')
    .attr('aria-expanded', true)

  this.transitioning = 1

  var complete = function () {
    this.$element
      .removeClass('collapsing')
      .addClass('collapse in')[dimension]('')
    this.transitioning = 0
    this.$element
      .trigger('shown.bs.collapse')
  }

  if (!$.support.transition) return complete.call(this)

  var scrollSize = $.camelCase(['scroll', dimension].join('-'))

  this.$element
    .one('bsTransitionEnd', $.proxy(complete, this))
    .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
}

Collapse.prototype.hide = function () {
  if (this.transitioning || !this.$element.hasClass('in')) return

  var startEvent = $.Event('hide.bs.collapse')
  this.$element.trigger(startEvent)
  if (startEvent.isDefaultPrevented()) return

  var dimension = this.dimension()

  this.$element[dimension](this.$element[dimension]())[0].offsetHeight

  this.$element
    .addClass('collapsing')
    .removeClass('collapse in')
    .attr('aria-expanded', false)

  this.$trigger
    .addClass('collapsed')
    .attr('aria-expanded', false)

  this.transitioning = 1

  var complete = function () {
    this.transitioning = 0
    this.$element
      .removeClass('collapsing')
      .addClass('collapse')
      .trigger('hidden.bs.collapse')
  }

  if (!$.support.transition) return complete.call(this)

  this.$element
    [dimension](0)
    .one('bsTransitionEnd', $.proxy(complete, this))
    .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
}

Collapse.prototype.toggle = function () {
  this[this.$element.hasClass('in') ? 'hide' : 'show']()
}

Collapse.prototype.getParent = function () {
  return $(this.options.parent)
    .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
    .each($.proxy(function (i, element) {
      var $element = $(element)
      this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
    }, this))
    .end()
}

Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
  var isOpen = $element.hasClass('in')

  $element.attr('aria-expanded', isOpen)
  $trigger
    .toggleClass('collapsed', !isOpen)
    .attr('aria-expanded', isOpen)
}

function getTargetFromTrigger($trigger) {
  var href
  var target = $trigger.attr('data-target')
    || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7

  return $(target)
}

// COLLAPSE PLUGIN DEFINITION
// ==========================

function Plugin(option) {
  return this.each(function () {
    var $this   = $(this)
    var data    = $this.data('bs.collapse')
    var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)

    if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
    if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
    if (typeof option == 'string') data[option]()
  })
}

var old = $.fn.collapse

$.fn.collapse             = Plugin
$.fn.collapse.Constructor = Collapse

// COLLAPSE NO CONFLICT
// ====================

$.fn.collapse.noConflict = function () {
  $.fn.collapse = old
  return this
}

// COLLAPSE DATA-API
// =================

$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
  var $this   = $(this)

  if (!$this.attr('data-target')) e.preventDefault()

  var $target = getTargetFromTrigger($this)
  var data    = $target.data('bs.collapse')
  var option  = data ? 'toggle' : $this.data()

  Plugin.call($target, option)
})

}(jQuery); /* ========================================================================

* Bootstrap: dropdown.js v3.3.4
* http://getbootstrap.com/javascript/#dropdowns
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */

+function ($) {

'use strict';

// DROPDOWN CLASS DEFINITION
// =========================

var backdrop = '.dropdown-backdrop'
var toggle   = '[data-toggle="dropdown"]'
var Dropdown = function (element) {
  $(element).on('click.bs.dropdown', this.toggle)
}

Dropdown.VERSION = '3.3.4'

Dropdown.prototype.toggle = function (e) {
  var $this = $(this)

  if ($this.is('.disabled, :disabled')) return

  var $parent  = getParent($this)
  var isActive = $parent.hasClass('open')

  clearMenus()

  if (!isActive) {
    if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
      // if mobile we use a backdrop because click events don't delegate
      $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
    }

    var relatedTarget = { relatedTarget: this }
    $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))

    if (e.isDefaultPrevented()) return

    $this
      .trigger('focus')
      .attr('aria-expanded', 'true')

    $parent
      .toggleClass('open')
      .trigger('shown.bs.dropdown', relatedTarget)
  }

  return false
}

Dropdown.prototype.keydown = function (e) {
  if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return

  var $this = $(this)

  e.preventDefault()
  e.stopPropagation()

  if ($this.is('.disabled, :disabled')) return

  var $parent  = getParent($this)
  var isActive = $parent.hasClass('open')

  if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {
    if (e.which == 27) $parent.find(toggle).trigger('focus')
    return $this.trigger('click')
  }

  var desc = ' li:not(.disabled):visible a'
  var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)

  if (!$items.length) return

  var index = $items.index(e.target)

  if (e.which == 38 && index > 0)                 index--                        // up
  if (e.which == 40 && index < $items.length - 1) index++                        // down
  if (!~index)                                      index = 0

  $items.eq(index).trigger('focus')
}

function clearMenus(e) {
  if (e && e.which === 3) return
  $(backdrop).remove()
  $(toggle).each(function () {
    var $this         = $(this)
    var $parent       = getParent($this)
    var relatedTarget = { relatedTarget: this }

    if (!$parent.hasClass('open')) return

    $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))

    if (e.isDefaultPrevented()) return

    $this.attr('aria-expanded', 'false')
    $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
  })
}

function getParent($this) {
  var selector = $this.attr('data-target')

  if (!selector) {
    selector = $this.attr('href')
    selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
  }

  var $parent = selector && $(selector)

  return $parent && $parent.length ? $parent : $this.parent()
}

// DROPDOWN PLUGIN DEFINITION
// ==========================

function Plugin(option) {
  return this.each(function () {
    var $this = $(this)
    var data  = $this.data('bs.dropdown')

    if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
    if (typeof option == 'string') data[option].call($this)
  })
}

var old = $.fn.dropdown

$.fn.dropdown             = Plugin
$.fn.dropdown.Constructor = Dropdown

// DROPDOWN NO CONFLICT
// ====================

$.fn.dropdown.noConflict = function () {
  $.fn.dropdown = old
  return this
}

// APPLY TO STANDARD DROPDOWN ELEMENTS
// ===================================

$(document)
  .on('click.bs.dropdown.data-api', clearMenus)
  .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
  .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
  .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
  .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown)
  .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)

}(jQuery); /* ========================================================================

* Bootstrap: modal.js v3.3.4
* http://getbootstrap.com/javascript/#modals
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */

+function ($) {

'use strict';

// MODAL CLASS DEFINITION
// ======================

var Modal = function (element, options) {
  this.options             = options
  this.$body               = $(document.body)
  this.$element            = $(element)
  this.$dialog             = this.$element.find('.modal-dialog')
  this.$backdrop           = null
  this.isShown             = null
  this.originalBodyPad     = null
  this.scrollbarWidth      = 0
  this.ignoreBackdropClick = false

  if (this.options.remote) {
    this.$element
      .find('.modal-content')
      .load(this.options.remote, $.proxy(function () {
        this.$element.trigger('loaded.bs.modal')
      }, this))
  }
}

Modal.VERSION  = '3.3.4'

Modal.TRANSITION_DURATION = 300
Modal.BACKDROP_TRANSITION_DURATION = 150

Modal.DEFAULTS = {
  backdrop: true,
  keyboard: true,
  show: true
}

Modal.prototype.toggle = function (_relatedTarget) {
  return this.isShown ? this.hide() : this.show(_relatedTarget)
}

Modal.prototype.show = function (_relatedTarget) {
  var that = this
  var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })

  this.$element.trigger(e)

  if (this.isShown || e.isDefaultPrevented()) return

  this.isShown = true

  this.checkScrollbar()
  this.setScrollbar()
  this.$body.addClass('modal-open')

  this.escape()
  this.resize()

  this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))

  this.$dialog.on('mousedown.dismiss.bs.modal', function () {
    that.$element.one('mouseup.dismiss.bs.modal', function (e) {
      if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
    })
  })

  this.backdrop(function () {
    var transition = $.support.transition && that.$element.hasClass('fade')

    if (!that.$element.parent().length) {
      that.$element.appendTo(that.$body) // don't move modals dom position
    }

    that.$element
      .show()
      .scrollTop(0)

    that.adjustDialog()

    if (transition) {
      that.$element[0].offsetWidth // force reflow
    }

    that.$element
      .addClass('in')
      .attr('aria-hidden', false)

    that.enforceFocus()

    var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })

    transition ?
      that.$dialog // wait for modal to slide in
        .one('bsTransitionEnd', function () {
          that.$element.trigger('focus').trigger(e)
        })
        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
      that.$element.trigger('focus').trigger(e)
  })
}

Modal.prototype.hide = function (e) {
  if (e) e.preventDefault()

  e = $.Event('hide.bs.modal')

  this.$element.trigger(e)

  if (!this.isShown || e.isDefaultPrevented()) return

  this.isShown = false

  this.escape()
  this.resize()

  $(document).off('focusin.bs.modal')

  this.$element
    .removeClass('in')
    .attr('aria-hidden', true)
    .off('click.dismiss.bs.modal')
    .off('mouseup.dismiss.bs.modal')

  this.$dialog.off('mousedown.dismiss.bs.modal')

  $.support.transition && this.$element.hasClass('fade') ?
    this.$element
      .one('bsTransitionEnd', $.proxy(this.hideModal, this))
      .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
    this.hideModal()
}

Modal.prototype.enforceFocus = function () {
  $(document)
    .off('focusin.bs.modal') // guard against infinite focus loop
    .on('focusin.bs.modal', $.proxy(function (e) {
      if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
        this.$element.trigger('focus')
      }
    }, this))
}

Modal.prototype.escape = function () {
  if (this.isShown && this.options.keyboard) {
    this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
      e.which == 27 && this.hide()
    }, this))
  } else if (!this.isShown) {
    this.$element.off('keydown.dismiss.bs.modal')
  }
}

Modal.prototype.resize = function () {
  if (this.isShown) {
    $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
  } else {
    $(window).off('resize.bs.modal')
  }
}

Modal.prototype.hideModal = function () {
  var that = this
  this.$element.hide()
  this.backdrop(function () {
    that.$body.removeClass('modal-open')
    that.resetAdjustments()
    that.resetScrollbar()
    that.$element.trigger('hidden.bs.modal')
  })
}

Modal.prototype.removeBackdrop = function () {
  this.$backdrop && this.$backdrop.remove()
  this.$backdrop = null
}

Modal.prototype.backdrop = function (callback) {
  var that = this
  var animate = this.$element.hasClass('fade') ? 'fade' : ''

  if (this.isShown && this.options.backdrop) {
    var doAnimate = $.support.transition && animate

    this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
      .appendTo(this.$body)

    this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
      if (this.ignoreBackdropClick) {
        this.ignoreBackdropClick = false
        return
      }
      if (e.target !== e.currentTarget) return
      this.options.backdrop == 'static'
        ? this.$element[0].focus()
        : this.hide()
    }, this))

    if (doAnimate) this.$backdrop[0].offsetWidth // force reflow

    this.$backdrop.addClass('in')

    if (!callback) return

    doAnimate ?
      this.$backdrop
        .one('bsTransitionEnd', callback)
        .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
      callback()

  } else if (!this.isShown && this.$backdrop) {
    this.$backdrop.removeClass('in')

    var callbackRemove = function () {
      that.removeBackdrop()
      callback && callback()
    }
    $.support.transition && this.$element.hasClass('fade') ?
      this.$backdrop
        .one('bsTransitionEnd', callbackRemove)
        .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
      callbackRemove()

  } else if (callback) {
    callback()
  }
}

// these following methods are used to handle overflowing modals

Modal.prototype.handleUpdate = function () {
  this.adjustDialog()
}

Modal.prototype.adjustDialog = function () {
  var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight

  this.$element.css({
    paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
    paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
  })
}

Modal.prototype.resetAdjustments = function () {
  this.$element.css({
    paddingLeft: '',
    paddingRight: ''
  })
}

Modal.prototype.checkScrollbar = function () {
  var fullWindowWidth = window.innerWidth
  if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
    var documentElementRect = document.documentElement.getBoundingClientRect()
    fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
  }
  this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
  this.scrollbarWidth = this.measureScrollbar()
}

Modal.prototype.setScrollbar = function () {
  var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
  this.originalBodyPad = document.body.style.paddingRight || ''
  if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
}

Modal.prototype.resetScrollbar = function () {
  this.$body.css('padding-right', this.originalBodyPad)
}

Modal.prototype.measureScrollbar = function () { // thx walsh
  var scrollDiv = document.createElement('div')
  scrollDiv.className = 'modal-scrollbar-measure'
  this.$body.append(scrollDiv)
  var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
  this.$body[0].removeChild(scrollDiv)
  return scrollbarWidth
}

// MODAL PLUGIN DEFINITION
// =======================

function Plugin(option, _relatedTarget) {
  return this.each(function () {
    var $this   = $(this)
    var data    = $this.data('bs.modal')
    var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)

    if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
    if (typeof option == 'string') data[option](_relatedTarget)
    else if (options.show) data.show(_relatedTarget)
  })
}

var old = $.fn.modal

$.fn.modal             = Plugin
$.fn.modal.Constructor = Modal

// MODAL NO CONFLICT
// =================

$.fn.modal.noConflict = function () {
  $.fn.modal = old
  return this
}

// MODAL DATA-API
// ==============

$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
  var $this   = $(this)
  var href    = $this.attr('href')
  var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
  var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())

  if ($this.is('a')) e.preventDefault()

  $target.one('show.bs.modal', function (showEvent) {
    if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
    $target.one('hidden.bs.modal', function () {
      $this.is(':visible') && $this.trigger('focus')
    })
  })
  Plugin.call($target, option, this)
})

}(jQuery); /* ========================================================================

* Bootstrap: scrollspy.js v3.3.4
* http://getbootstrap.com/javascript/#scrollspy
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */

+function ($) {

'use strict';

// SCROLLSPY CLASS DEFINITION
// ==========================

function ScrollSpy(element, options) {
  this.$body          = $(document.body)
  this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
  this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
  this.selector       = (this.options.target || '') + ' .nav li > a'
  this.offsets        = []
  this.targets        = []
  this.activeTarget   = null
  this.scrollHeight   = 0

  this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
  this.refresh()
  this.process()
}

ScrollSpy.VERSION  = '3.3.4'

ScrollSpy.DEFAULTS = {
  offset: 10
}

ScrollSpy.prototype.getScrollHeight = function () {
  return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
}

ScrollSpy.prototype.refresh = function () {
  var that          = this
  var offsetMethod  = 'offset'
  var offsetBase    = 0

  this.offsets      = []
  this.targets      = []
  this.scrollHeight = this.getScrollHeight()

  if (!$.isWindow(this.$scrollElement[0])) {
    offsetMethod = 'position'
    offsetBase   = this.$scrollElement.scrollTop()
  }

  this.$body
    .find(this.selector)
    .map(function () {
      var $el   = $(this)
      var href  = $el.data('target') || $el.attr('href')
      var $href = /^#./.test(href) && $(href)

      return ($href
        && $href.length
        && $href.is(':visible')
        && [[$href[offsetMethod]().top + offsetBase, href]]) || null
    })
    .sort(function (a, b) { return a[0] - b[0] })
    .each(function () {
      that.offsets.push(this[0])
      that.targets.push(this[1])
    })
}

ScrollSpy.prototype.process = function () {
  var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
  var scrollHeight = this.getScrollHeight()
  var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
  var offsets      = this.offsets
  var targets      = this.targets
  var activeTarget = this.activeTarget
  var i

  if (this.scrollHeight != scrollHeight) {
    this.refresh()
  }

  if (scrollTop >= maxScroll) {
    return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
  }

  if (activeTarget && scrollTop < offsets[0]) {
    this.activeTarget = null
    return this.clear()
  }

  for (i = offsets.length; i--;) {
    activeTarget != targets[i]
      && scrollTop >= offsets[i]
      && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
      && this.activate(targets[i])
  }
}

ScrollSpy.prototype.activate = function (target) {
  this.activeTarget = target

  this.clear()

  var selector = this.selector +
    '[data-target="' + target + '"],' +
    this.selector + '[href="' + target + '"]'

  var active = $(selector)
    .parents('li')
    .addClass('active')

  if (active.parent('.dropdown-menu').length) {
    active = active
      .closest('li.dropdown')
      .addClass('active')
  }

  active.trigger('activate.bs.scrollspy')
}

ScrollSpy.prototype.clear = function () {
  $(this.selector)
    .parentsUntil(this.options.target, '.active')
    .removeClass('active')
}

// SCROLLSPY PLUGIN DEFINITION
// ===========================

function Plugin(option) {
  return this.each(function () {
    var $this   = $(this)
    var data    = $this.data('bs.scrollspy')
    var options = typeof option == 'object' && option

    if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
    if (typeof option == 'string') data[option]()
  })
}

var old = $.fn.scrollspy

$.fn.scrollspy             = Plugin
$.fn.scrollspy.Constructor = ScrollSpy

// SCROLLSPY NO CONFLICT
// =====================

$.fn.scrollspy.noConflict = function () {
  $.fn.scrollspy = old
  return this
}

// SCROLLSPY DATA-API
// ==================

$(window).on('load.bs.scrollspy.data-api', function () {
  $('[data-spy="scroll"]').each(function () {
    var $spy = $(this)
    Plugin.call($spy, $spy.data())
  })
})

}(jQuery); /* ========================================================================

* Bootstrap: tab.js v3.3.4
* http://getbootstrap.com/javascript/#tabs
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */

+function ($) {

'use strict';

// TAB CLASS DEFINITION
// ====================

var Tab = function (element) {
  this.element = $(element)
}

Tab.VERSION = '3.3.4'

Tab.TRANSITION_DURATION = 150

Tab.prototype.show = function () {
  var $this    = this.element
  var $ul      = $this.closest('ul:not(.dropdown-menu)')
  var selector = $this.data('target')

  if (!selector) {
    selector = $this.attr('href')
    selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
  }

  if ($this.parent('li').hasClass('active')) return

  var $previous = $ul.find('.active:last a')
  var hideEvent = $.Event('hide.bs.tab', {
    relatedTarget: $this[0]
  })
  var showEvent = $.Event('show.bs.tab', {
    relatedTarget: $previous[0]
  })

  $previous.trigger(hideEvent)
  $this.trigger(showEvent)

  if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return

  var $target = $(selector)

  this.activate($this.closest('li'), $ul)
  this.activate($target, $target.parent(), function () {
    $previous.trigger({
      type: 'hidden.bs.tab',
      relatedTarget: $this[0]
    })
    $this.trigger({
      type: 'shown.bs.tab',
      relatedTarget: $previous[0]
    })
  })
}

Tab.prototype.activate = function (element, container, callback) {
  var $active    = container.find('> .active')
  var transition = callback
    && $.support.transition
    && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)

  function next() {
    $active
      .removeClass('active')
      .find('> .dropdown-menu > .active')
        .removeClass('active')
      .end()
      .find('[data-toggle="tab"]')
        .attr('aria-expanded', false)

    element
      .addClass('active')
      .find('[data-toggle="tab"]')
        .attr('aria-expanded', true)

    if (transition) {
      element[0].offsetWidth // reflow for transition
      element.addClass('in')
    } else {
      element.removeClass('fade')
    }

    if (element.parent('.dropdown-menu').length) {
      element
        .closest('li.dropdown')
          .addClass('active')
        .end()
        .find('[data-toggle="tab"]')
          .attr('aria-expanded', true)
    }

    callback && callback()
  }

  $active.length && transition ?
    $active
      .one('bsTransitionEnd', next)
      .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
    next()

  $active.removeClass('in')
}

// TAB PLUGIN DEFINITION
// =====================

function Plugin(option) {
  return this.each(function () {
    var $this = $(this)
    var data  = $this.data('bs.tab')

    if (!data) $this.data('bs.tab', (data = new Tab(this)))
    if (typeof option == 'string') data[option]()
  })
}

var old = $.fn.tab

$.fn.tab             = Plugin
$.fn.tab.Constructor = Tab

// TAB NO CONFLICT
// ===============

$.fn.tab.noConflict = function () {
  $.fn.tab = old
  return this
}

// TAB DATA-API
// ============

var clickHandler = function (e) {
  e.preventDefault()
  Plugin.call($(this), 'show')
}

$(document)
  .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
  .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)

}(jQuery); /* ========================================================================

* Bootstrap: transition.js v3.3.4
* http://getbootstrap.com/javascript/#transitions
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */

+function ($) {

'use strict';

// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
// ============================================================

function transitionEnd() {
  var el = document.createElement('bootstrap')

  var transEndEventNames = {
    WebkitTransition : 'webkitTransitionEnd',
    MozTransition    : 'transitionend',
    OTransition      : 'oTransitionEnd otransitionend',
    transition       : 'transitionend'
  }

  for (var name in transEndEventNames) {
    if (el.style[name] !== undefined) {
      return { end: transEndEventNames[name] }
    }
  }

  return false // explicit for ie8 (  ._.)
}

// http://blog.alexmaccaw.com/css-transitions
$.fn.emulateTransitionEnd = function (duration) {
  var called = false
  var $el = this
  $(this).one('bsTransitionEnd', function () { called = true })
  var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
  setTimeout(callback, duration)
  return this
}

$(function () {
  $.support.transition = transitionEnd()

  if (!$.support.transition) return

  $.event.special.bsTransitionEnd = {
    bindType: $.support.transition.end,
    delegateType: $.support.transition.end,
    handle: function (e) {
      if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
    }
  }
})

}(jQuery); /* ========================================================================

* Bootstrap: tooltip.js v3.3.4
* http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */

+function ($) {

'use strict';

// TOOLTIP PUBLIC CLASS DEFINITION
// ===============================

var Tooltip = function (element, options) {
  this.type       = null
  this.options    = null
  this.enabled    = null
  this.timeout    = null
  this.hoverState = null
  this.$element   = null

  this.init('tooltip', element, options)
}

Tooltip.VERSION  = '3.3.4'

Tooltip.TRANSITION_DURATION = 150

Tooltip.DEFAULTS = {
  animation: true,
  placement: 'top',
  selector: false,
  template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
  trigger: 'hover focus',
  title: '',
  delay: 0,
  html: false,
  container: false,
  viewport: {
    selector: 'body',
    padding: 0
  }
}

Tooltip.prototype.init = function (type, element, options) {
  this.enabled   = true
  this.type      = type
  this.$element  = $(element)
  this.options   = this.getOptions(options)
  this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)

  if (this.$element[0] instanceof document.constructor && !this.options.selector) {
    throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
  }

  var triggers = this.options.trigger.split(' ')

  for (var i = triggers.length; i--;) {
    var trigger = triggers[i]

    if (trigger == 'click') {
      this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
    } else if (trigger != 'manual') {
      var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
      var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'

      this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
      this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
    }
  }

  this.options.selector ?
    (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
    this.fixTitle()
}

Tooltip.prototype.getDefaults = function () {
  return Tooltip.DEFAULTS
}

Tooltip.prototype.getOptions = function (options) {
  options = $.extend({}, this.getDefaults(), this.$element.data(), options)

  if (options.delay && typeof options.delay == 'number') {
    options.delay = {
      show: options.delay,
      hide: options.delay
    }
  }

  return options
}

Tooltip.prototype.getDelegateOptions = function () {
  var options  = {}
  var defaults = this.getDefaults()

  this._options && $.each(this._options, function (key, value) {
    if (defaults[key] != value) options[key] = value
  })

  return options
}

Tooltip.prototype.enter = function (obj) {
  var self = obj instanceof this.constructor ?
    obj : $(obj.currentTarget).data('bs.' + this.type)

  if (self && self.$tip && self.$tip.is(':visible')) {
    self.hoverState = 'in'
    return
  }

  if (!self) {
    self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
    $(obj.currentTarget).data('bs.' + this.type, self)
  }

  clearTimeout(self.timeout)

  self.hoverState = 'in'

  if (!self.options.delay || !self.options.delay.show) return self.show()

  self.timeout = setTimeout(function () {
    if (self.hoverState == 'in') self.show()
  }, self.options.delay.show)
}

Tooltip.prototype.leave = function (obj) {
  var self = obj instanceof this.constructor ?
    obj : $(obj.currentTarget).data('bs.' + this.type)

  if (!self) {
    self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
    $(obj.currentTarget).data('bs.' + this.type, self)
  }

  clearTimeout(self.timeout)

  self.hoverState = 'out'

  if (!self.options.delay || !self.options.delay.hide) return self.hide()

  self.timeout = setTimeout(function () {
    if (self.hoverState == 'out') self.hide()
  }, self.options.delay.hide)
}

Tooltip.prototype.show = function () {
  var e = $.Event('show.bs.' + this.type)

  if (this.hasContent() && this.enabled) {
    this.$element.trigger(e)

    var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
    if (e.isDefaultPrevented() || !inDom) return
    var that = this

    var $tip = this.tip()

    var tipId = this.getUID(this.type)

    this.setContent()
    $tip.attr('id', tipId)
    this.$element.attr('aria-describedby', tipId)

    if (this.options.animation) $tip.addClass('fade')

    var placement = typeof this.options.placement == 'function' ?
      this.options.placement.call(this, $tip[0], this.$element[0]) :
      this.options.placement

    var autoToken = /\s?auto?\s?/i
    var autoPlace = autoToken.test(placement)
    if (autoPlace) placement = placement.replace(autoToken, '') || 'top'

    $tip
      .detach()
      .css({ top: 0, left: 0, display: 'block' })
      .addClass(placement)
      .data('bs.' + this.type, this)

    this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)

    var pos          = this.getPosition()
    var actualWidth  = $tip[0].offsetWidth
    var actualHeight = $tip[0].offsetHeight

    if (autoPlace) {
      var orgPlacement = placement
      var $container   = this.options.container ? $(this.options.container) : this.$element.parent()
      var containerDim = this.getPosition($container)

      placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top'    :
                  placement == 'top'    && pos.top    - actualHeight < containerDim.top    ? 'bottom' :
                  placement == 'right'  && pos.right  + actualWidth  > containerDim.width  ? 'left'   :
                  placement == 'left'   && pos.left   - actualWidth  < containerDim.left   ? 'right'  :
                  placement

      $tip
        .removeClass(orgPlacement)
        .addClass(placement)
    }

    var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)

    this.applyPlacement(calculatedOffset, placement)

    var complete = function () {
      var prevHoverState = that.hoverState
      that.$element.trigger('shown.bs.' + that.type)
      that.hoverState = null

      if (prevHoverState == 'out') that.leave(that)
    }

    $.support.transition && this.$tip.hasClass('fade') ?
      $tip
        .one('bsTransitionEnd', complete)
        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
      complete()
  }
}

Tooltip.prototype.applyPlacement = function (offset, placement) {
  var $tip   = this.tip()
  var width  = $tip[0].offsetWidth
  var height = $tip[0].offsetHeight

  // manually read margins because getBoundingClientRect includes difference
  var marginTop = parseInt($tip.css('margin-top'), 10)
  var marginLeft = parseInt($tip.css('margin-left'), 10)

  // we must check for NaN for ie 8/9
  if (isNaN(marginTop))  marginTop  = 0
  if (isNaN(marginLeft)) marginLeft = 0

  offset.top  = offset.top  + marginTop
  offset.left = offset.left + marginLeft

  // $.fn.offset doesn't round pixel values
  // so we use setOffset directly with our own function B-0
  $.offset.setOffset($tip[0], $.extend({
    using: function (props) {
      $tip.css({
        top: Math.round(props.top),
        left: Math.round(props.left)
      })
    }
  }, offset), 0)

  $tip.addClass('in')

  // check to see if placing tip in new offset caused the tip to resize itself
  var actualWidth  = $tip[0].offsetWidth
  var actualHeight = $tip[0].offsetHeight

  if (placement == 'top' && actualHeight != height) {
    offset.top = offset.top + height - actualHeight
  }

  var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)

  if (delta.left) offset.left += delta.left
  else offset.top += delta.top

  var isVertical          = /top|bottom/.test(placement)
  var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
  var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'

  $tip.offset(offset)
  this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
}

Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
  this.arrow()
    .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
    .css(isVertical ? 'top' : 'left', '')
}

Tooltip.prototype.setContent = function () {
  var $tip  = this.tip()
  var title = this.getTitle()

  $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
  $tip.removeClass('fade in top bottom left right')
}

Tooltip.prototype.hide = function (callback) {
  var that = this
  var $tip = $(this.$tip)
  var e    = $.Event('hide.bs.' + this.type)

  function complete() {
    if (that.hoverState != 'in') $tip.detach()
    that.$element
      .removeAttr('aria-describedby')
      .trigger('hidden.bs.' + that.type)
    callback && callback()
  }

  this.$element.trigger(e)

  if (e.isDefaultPrevented()) return

  $tip.removeClass('in')

  $.support.transition && $tip.hasClass('fade') ?
    $tip
      .one('bsTransitionEnd', complete)
      .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
    complete()

  this.hoverState = null

  return this
}

Tooltip.prototype.fixTitle = function () {
  var $e = this.$element
  if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {
    $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
  }
}

Tooltip.prototype.hasContent = function () {
  return this.getTitle()
}

Tooltip.prototype.getPosition = function ($element) {
  $element   = $element || this.$element

  var el     = $element[0]
  var isBody = el.tagName == 'BODY'

  var elRect    = el.getBoundingClientRect()
  if (elRect.width == null) {
    // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
    elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
  }
  var elOffset  = isBody ? { top: 0, left: 0 } : $element.offset()
  var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
  var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null

  return $.extend({}, elRect, scroll, outerDims, elOffset)
}

Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
  return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :
         placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
         placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
      /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }

}

Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
  var delta = { top: 0, left: 0 }
  if (!this.$viewport) return delta

  var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
  var viewportDimensions = this.getPosition(this.$viewport)

  if (/right|left/.test(placement)) {
    var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
    var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
    if (topEdgeOffset < viewportDimensions.top) { // top overflow
      delta.top = viewportDimensions.top - topEdgeOffset
    } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
      delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
    }
  } else {
    var leftEdgeOffset  = pos.left - viewportPadding
    var rightEdgeOffset = pos.left + viewportPadding + actualWidth
    if (leftEdgeOffset < viewportDimensions.left) { // left overflow
      delta.left = viewportDimensions.left - leftEdgeOffset
    } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow
      delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
    }
  }

  return delta
}

Tooltip.prototype.getTitle = function () {
  var title
  var $e = this.$element
  var o  = this.options

  title = $e.attr('data-original-title')
    || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)

  return title
}

Tooltip.prototype.getUID = function (prefix) {
  do prefix += ~~(Math.random() * 1000000)
  while (document.getElementById(prefix))
  return prefix
}

Tooltip.prototype.tip = function () {
  return (this.$tip = this.$tip || $(this.options.template))
}

Tooltip.prototype.arrow = function () {
  return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
}

Tooltip.prototype.enable = function () {
  this.enabled = true
}

Tooltip.prototype.disable = function () {
  this.enabled = false
}

Tooltip.prototype.toggleEnabled = function () {
  this.enabled = !this.enabled
}

Tooltip.prototype.toggle = function (e) {
  var self = this
  if (e) {
    self = $(e.currentTarget).data('bs.' + this.type)
    if (!self) {
      self = new this.constructor(e.currentTarget, this.getDelegateOptions())
      $(e.currentTarget).data('bs.' + this.type, self)
    }
  }

  self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
}

Tooltip.prototype.destroy = function () {
  var that = this
  clearTimeout(this.timeout)
  this.hide(function () {
    that.$element.off('.' + that.type).removeData('bs.' + that.type)
  })
}

// TOOLTIP PLUGIN DEFINITION
// =========================

function Plugin(option) {
  return this.each(function () {
    var $this   = $(this)
    var data    = $this.data('bs.tooltip')
    var options = typeof option == 'object' && option

    if (!data && /destroy|hide/.test(option)) return
    if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
    if (typeof option == 'string') data[option]()
  })
}

var old = $.fn.tooltip

$.fn.tooltip             = Plugin
$.fn.tooltip.Constructor = Tooltip

// TOOLTIP NO CONFLICT
// ===================

$.fn.tooltip.noConflict = function () {
  $.fn.tooltip = old
  return this
}

}(jQuery); /* ========================================================================

* Bootstrap: popover.js v3.3.4
* http://getbootstrap.com/javascript/#popovers
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */

+function ($) {

'use strict';

// POPOVER PUBLIC CLASS DEFINITION
// ===============================

var Popover = function (element, options) {
  this.init('popover', element, options)
}

if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')

Popover.VERSION  = '3.3.4'

Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
  placement: 'right',
  trigger: 'click',
  content: '',
  template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
})

// NOTE: POPOVER EXTENDS tooltip.js
// ================================

Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)

Popover.prototype.constructor = Popover

Popover.prototype.getDefaults = function () {
  return Popover.DEFAULTS
}

Popover.prototype.setContent = function () {
  var $tip    = this.tip()
  var title   = this.getTitle()
  var content = this.getContent()

  $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
  $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
    this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
  ](content)

  $tip.removeClass('fade top bottom left right in')

  // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
  // this manually by checking the contents.
  if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
}

Popover.prototype.hasContent = function () {
  return this.getTitle() || this.getContent()
}

Popover.prototype.getContent = function () {
  var $e = this.$element
  var o  = this.options

  return $e.attr('data-content')
    || (typeof o.content == 'function' ?
          o.content.call($e[0]) :
          o.content)
}

Popover.prototype.arrow = function () {
  return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
}

// POPOVER PLUGIN DEFINITION
// =========================

function Plugin(option) {
  return this.each(function () {
    var $this   = $(this)
    var data    = $this.data('bs.popover')
    var options = typeof option == 'object' && option

    if (!data && /destroy|hide/.test(option)) return
    if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
    if (typeof option == 'string') data[option]()
  })
}

var old = $.fn.popover

$.fn.popover             = Plugin
$.fn.popover.Constructor = Popover

// POPOVER NO CONFLICT
// ===================

$.fn.popover.noConflict = function () {
  $.fn.popover = old
  return this
}

}(jQuery); /*!

* Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)
*
* Copyright 2012 Stefan Petre
* Improvements by Andrew Rowls
* Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
*/

(function($, undefined){

function UTCDate(){
        return new Date(Date.UTC.apply(Date, arguments));
}
function UTCToday(){
        var today = new Date();
        return UTCDate(today.getFullYear(), today.getMonth(), today.getDate());
}
function isUTCEquals(date1, date2) {
        return (
                date1.getUTCFullYear() === date2.getUTCFullYear() &&
                date1.getUTCMonth() === date2.getUTCMonth() &&
                date1.getUTCDate() === date2.getUTCDate()
        );
}
function alias(method){
        return function(){
                return this[method].apply(this, arguments);
        };
}

var DateArray = (function(){
        var extras = {
                get: function(i){
                        return this.slice(i)[0];
                },
                contains: function(d){
                        // Array.indexOf is not cross-browser;
                        // $.inArray doesn't work with Dates
                        var val = d && d.valueOf();
                        for (var i=0, l=this.length; i < l; i++)
                                if (this[i].valueOf() === val)
                                        return i;
                        return -1;
                },
                remove: function(i){
                        this.splice(i,1);
                },
                replace: function(new_array){
                        if (!new_array)
                                return;
                        if (!$.isArray(new_array))
                                new_array = [new_array];
                        this.clear();
                        this.push.apply(this, new_array);
                },
                clear: function(){
                        this.length = 0;
                },
                copy: function(){
                        var a = new DateArray();
                        a.replace(this);
                        return a;
                }
        };

        return function(){
                var a = [];
                a.push.apply(a, arguments);
                $.extend(a, extras);
                return a;
        };
})();

// Picker object

var Datepicker = function(element, options){
        this._process_options(options);

        this.dates = new DateArray();
        this.viewDate = this.o.defaultViewDate;
        this.focusDate = null;

        this.element = $(element);
        this.isInline = false;
        this.isInput = this.element.is('input');
        this.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;
        this.hasInput = this.component && this.element.find('input').length;
        if (this.component && this.component.length === 0)
                this.component = false;

        this.picker = $(DPGlobal.template);
        this._buildEvents();
        this._attachEvents();

        if (this.isInline){
                this.picker.addClass('datepicker-inline').appendTo(this.element);
        }
        else {
                this.picker.addClass('datepicker-dropdown dropdown-menu');
        }

        if (this.o.rtl){
                this.picker.addClass('datepicker-rtl');
        }

        this.viewMode = this.o.startView;

        if (this.o.calendarWeeks)
                this.picker.find('tfoot .today, tfoot .clear')
                                        .attr('colspan', function(i, val){
                                                return parseInt(val) + 1;
                                        });

        this._allow_update = false;

        this.setStartDate(this._o.startDate);
        this.setEndDate(this._o.endDate);
        this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);
        this.setDatesDisabled(this.o.datesDisabled);

        this.fillDow();
        this.fillMonths();

        this._allow_update = true;

        this.update();
        this.showMode();

        if (this.isInline){
                this.show();
        }
};

Datepicker.prototype = {
        constructor: Datepicker,

        _process_options: function(opts){
                // Store raw options for reference
                this._o = $.extend({}, this._o, opts);
                // Processed options
                var o = this.o = $.extend({}, this._o);

                // Check if "de-DE" style date is available, if not language should
                // fallback to 2 letter code eg "de"
                var lang = o.language;
                if (!dates[lang]){
                        lang = lang.split('-')[0];
                        if (!dates[lang])
                                lang = defaults.language;
                }
                o.language = lang;

                switch (o.startView){
                        case 2:
                        case 'decade':
                                o.startView = 2;
                                break;
                        case 1:
                        case 'year':
                                o.startView = 1;
                                break;
                        default:
                                o.startView = 0;
                }

                switch (o.minViewMode){
                        case 1:
                        case 'months':
                                o.minViewMode = 1;
                                break;
                        case 2:
                        case 'years':
                                o.minViewMode = 2;
                                break;
                        default:
                                o.minViewMode = 0;
                }

                o.startView = Math.max(o.startView, o.minViewMode);

                // true, false, or Number > 0
                if (o.multidate !== true){
                        o.multidate = Number(o.multidate) || false;
                        if (o.multidate !== false)
                                o.multidate = Math.max(0, o.multidate);
                }
                o.multidateSeparator = String(o.multidateSeparator);

                o.weekStart %= 7;
                o.weekEnd = ((o.weekStart + 6) % 7);

                var format = DPGlobal.parseFormat(o.format);
                if (o.startDate !== -Infinity){
                        if (!!o.startDate){
                                if (o.startDate instanceof Date)
                                        o.startDate = this._local_to_utc(this._zero_time(o.startDate));
                                else
                                        o.startDate = DPGlobal.parseDate(o.startDate, format, o.language);
                        }
                        else {
                                o.startDate = -Infinity;
                        }
                }
                if (o.endDate !== Infinity){
                        if (!!o.endDate){
                                if (o.endDate instanceof Date)
                                        o.endDate = this._local_to_utc(this._zero_time(o.endDate));
                                else
                                        o.endDate = DPGlobal.parseDate(o.endDate, format, o.language);
                        }
                        else {
                                o.endDate = Infinity;
                        }
                }

                o.daysOfWeekDisabled = o.daysOfWeekDisabled||[];
                if (!$.isArray(o.daysOfWeekDisabled))
                        o.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\s]*/);
                o.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){
                        return parseInt(d, 10);
                });

                o.datesDisabled = o.datesDisabled||[];
                if (!$.isArray(o.datesDisabled)) {
                        var datesDisabled = [];
                        datesDisabled.push(DPGlobal.parseDate(o.datesDisabled, format, o.language));
                        o.datesDisabled = datesDisabled;
                }
                o.datesDisabled = $.map(o.datesDisabled,function(d){
                        return DPGlobal.parseDate(d, format, o.language);
                });

                var plc = String(o.orientation).toLowerCase().split(/\s+/g),
                        _plc = o.orientation.toLowerCase();
                plc = $.grep(plc, function(word){
                        return /^auto|left|right|top|bottom$/.test(word);
                });
                o.orientation = {x: 'auto', y: 'auto'};
                if (!_plc || _plc === 'auto')
                        ; // no action
                else if (plc.length === 1){
                        switch (plc[0]){
                                case 'top':
                                case 'bottom':
                                        o.orientation.y = plc[0];
                                        break;
                                case 'left':
                                case 'right':
                                        o.orientation.x = plc[0];
                                        break;
                        }
                }
                else {
                        _plc = $.grep(plc, function(word){
                                return /^left|right$/.test(word);
                        });
                        o.orientation.x = _plc[0] || 'auto';

                        _plc = $.grep(plc, function(word){
                                return /^top|bottom$/.test(word);
                        });
                        o.orientation.y = _plc[0] || 'auto';
                }
                if (o.defaultViewDate) {
                        var year = o.defaultViewDate.year || new Date().getFullYear();
                        var month = o.defaultViewDate.month || 0;
                        var day = o.defaultViewDate.day || 1;
                        o.defaultViewDate = UTCDate(year, month, day);
                } else {
                        o.defaultViewDate = UTCToday();
                }
                o.showOnFocus = o.showOnFocus !== undefined ? o.showOnFocus : true;
        },
        _events: [],
        _secondaryEvents: [],
        _applyEvents: function(evs){
                for (var i=0, el, ch, ev; i < evs.length; i++){
                        el = evs[i][0];
                        if (evs[i].length === 2){
                                ch = undefined;
                                ev = evs[i][1];
                        }
                        else if (evs[i].length === 3){
                                ch = evs[i][1];
                                ev = evs[i][2];
                        }
                        el.on(ev, ch);
                }
        },
        _unapplyEvents: function(evs){
                for (var i=0, el, ev, ch; i < evs.length; i++){
                        el = evs[i][0];
                        if (evs[i].length === 2){
                                ch = undefined;
                                ev = evs[i][1];
                        }
                        else if (evs[i].length === 3){
                                ch = evs[i][1];
                                ev = evs[i][2];
                        }
                        el.off(ev, ch);
                }
        },
        _buildEvents: function(){
    var events = {
        keyup: $.proxy(function(e){
            if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)
                this.update();
        }, this),
        keydown: $.proxy(this.keydown, this)
    };

    if (this.o.showOnFocus === true) {
        events.focus = $.proxy(this.show, this);
    }

    if (this.isInput) { // single input
        this._events = [
            [this.element, events]
        ];
    }
    else if (this.component && this.hasInput) { // component: input + button
        this._events = [
            // For components that are not readonly, allow keyboard nav
            [this.element.find('input'), events],
            [this.component, {
                click: $.proxy(this.show, this)
            }]
        ];
    }
                else if (this.element.is('div')){  // inline datepicker
                        this.isInline = true;
                }
                else {
                        this._events = [
                                [this.element, {
                                        click: $.proxy(this.show, this)
                                }]
                        ];
                }
                this._events.push(
                        // Component: listen for blur on element descendants
                        [this.element, '*', {
                                blur: $.proxy(function(e){
                                        this._focused_from = e.target;
                                }, this)
                        }],
                        // Input: listen for blur on element
                        [this.element, {
                                blur: $.proxy(function(e){
                                        this._focused_from = e.target;
                                }, this)
                        }]
                );

                this._secondaryEvents = [
                        [this.picker, {
                                click: $.proxy(this.click, this)
                        }],
                        [$(window), {
                                resize: $.proxy(this.place, this)
                        }],
                        [$(document), {
                                'mousedown touchstart': $.proxy(function(e){
                                        // Clicked outside the datepicker, hide it
                                        if (!(
                                                this.element.is(e.target) ||
                                                this.element.find(e.target).length ||
                                                this.picker.is(e.target) ||
                                                this.picker.find(e.target).length
                                        )){
                                                this.hide();
                                        }
                                }, this)
                        }]
                ];
        },
        _attachEvents: function(){
                this._detachEvents();
                this._applyEvents(this._events);
        },
        _detachEvents: function(){
                this._unapplyEvents(this._events);
        },
        _attachSecondaryEvents: function(){
                this._detachSecondaryEvents();
                this._applyEvents(this._secondaryEvents);
        },
        _detachSecondaryEvents: function(){
                this._unapplyEvents(this._secondaryEvents);
        },
        _trigger: function(event, altdate){
                var date = altdate || this.dates.get(-1),
                        local_date = this._utc_to_local(date);

                this.element.trigger({
                        type: event,
                        date: local_date,
                        dates: $.map(this.dates, this._utc_to_local),
                        format: $.proxy(function(ix, format){
                                if (arguments.length === 0){
                                        ix = this.dates.length - 1;
                                        format = this.o.format;
                                }
                                else if (typeof ix === 'string'){
                                        format = ix;
                                        ix = this.dates.length - 1;
                                }
                                format = format || this.o.format;
                                var date = this.dates.get(ix);
                                return DPGlobal.formatDate(date, format, this.o.language);
                        }, this)
                });
        },

        show: function(){
                if (this.element.attr('readonly') && this.o.enableOnReadonly === false)
                        return;
                if (!this.isInline)
                        this.picker.appendTo(this.o.container);
                this.place();
                this.picker.show();
                this._attachSecondaryEvents();
                this._trigger('show');
                if ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {
                        $(this.element).blur();
                }
                return this;
        },

        hide: function(){
                if (this.isInline)
                        return this;
                if (!this.picker.is(':visible'))
                        return this;
                this.focusDate = null;
                this.picker.hide().detach();
                this._detachSecondaryEvents();
                this.viewMode = this.o.startView;
                this.showMode();

                if (
                        this.o.forceParse &&
                        (
                                this.isInput && this.element.val() ||
                                this.hasInput && this.element.find('input').val()
                        )
                )
                        this.setValue();
                this._trigger('hide');
                return this;
        },

        remove: function(){
                this.hide();
                this._detachEvents();
                this._detachSecondaryEvents();
                this.picker.remove();
                delete this.element.data().datepicker;
                if (!this.isInput){
                        delete this.element.data().date;
                }
                return this;
        },

        _utc_to_local: function(utc){
                return utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000));
        },
        _local_to_utc: function(local){
                return local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));
        },
        _zero_time: function(local){
                return local && new Date(local.getFullYear(), local.getMonth(), local.getDate());
        },
        _zero_utc_time: function(utc){
                return utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()));
        },

        getDates: function(){
                return $.map(this.dates, this._utc_to_local);
        },

        getUTCDates: function(){
                return $.map(this.dates, function(d){
                        return new Date(d);
                });
        },

        getDate: function(){
                return this._utc_to_local(this.getUTCDate());
        },

        getUTCDate: function(){
                var selected_date = this.dates.get(-1);
                if (typeof selected_date !== 'undefined') {
                        return new Date(selected_date);
                } else {
                        return null;
                }
        },

        clearDates: function(){
                var element;
                if (this.isInput) {
                        element = this.element;
                } else if (this.component) {
                        element = this.element.find('input');
                }

                if (element) {
                        element.val('').change();
                }

                this.update();
                this._trigger('changeDate');

                if (this.o.autoclose) {
                        this.hide();
                }
        },
        setDates: function(){
                var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
                this.update.apply(this, args);
                this._trigger('changeDate');
                this.setValue();
                return this;
        },

        setUTCDates: function(){
                var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
                this.update.apply(this, $.map(args, this._utc_to_local));
                this._trigger('changeDate');
                this.setValue();
                return this;
        },

        setDate: alias('setDates'),
        setUTCDate: alias('setUTCDates'),

        setValue: function(){
                var formatted = this.getFormattedDate();
                if (!this.isInput){
                        if (this.component){
                                this.element.find('input').val(formatted).change();
                        }
                }
                else {
                        this.element.val(formatted).change();
                }
                return this;
        },

        getFormattedDate: function(format){
                if (format === undefined)
                        format = this.o.format;

                var lang = this.o.language;
                return $.map(this.dates, function(d){
                        return DPGlobal.formatDate(d, format, lang);
                }).join(this.o.multidateSeparator);
        },

        setStartDate: function(startDate){
                this._process_options({startDate: startDate});
                this.update();
                this.updateNavArrows();
                return this;
        },

        setEndDate: function(endDate){
                this._process_options({endDate: endDate});
                this.update();
                this.updateNavArrows();
                return this;
        },

        setDaysOfWeekDisabled: function(daysOfWeekDisabled){
                this._process_options({daysOfWeekDisabled: daysOfWeekDisabled});
                this.update();
                this.updateNavArrows();
                return this;
        },

        setDatesDisabled: function(datesDisabled){
                this._process_options({datesDisabled: datesDisabled});
                this.update();
                this.updateNavArrows();
        },

        place: function(){
                if (this.isInline)
                        return this;
                var calendarWidth = this.picker.outerWidth(),
                        calendarHeight = this.picker.outerHeight(),
                        visualPadding = 10,
                        windowWidth = $(this.o.container).width(),
                        windowHeight = $(this.o.container).height(),
                        scrollTop = $(this.o.container).scrollTop(),
                        appendOffset = $(this.o.container).offset();

                var parentsZindex = [];
                this.element.parents().each(function(){
                        var itemZIndex = $(this).css('z-index');
                        if (itemZIndex !== 'auto' && itemZIndex !== 0) parentsZindex.push(parseInt(itemZIndex));
                });
                var zIndex = Math.max.apply(Math, parentsZindex) + 10;
                var offset = this.component ? this.component.parent().offset() : this.element.offset();
                var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);
                var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);
                var left = offset.left - appendOffset.left,
                        top = offset.top - appendOffset.top;

                this.picker.removeClass(
                        'datepicker-orient-top datepicker-orient-bottom '+
                        'datepicker-orient-right datepicker-orient-left'
                );

                if (this.o.orientation.x !== 'auto'){
                        this.picker.addClass('datepicker-orient-' + this.o.orientation.x);
                        if (this.o.orientation.x === 'right')
                                left -= calendarWidth - width;
                }
                // auto x orientation is best-placement: if it crosses a window
                // edge, fudge it sideways
                else {
                        if (offset.left < 0) {
                                // component is outside the window on the left side. Move it into visible range
                                this.picker.addClass('datepicker-orient-left');
                                left -= offset.left - visualPadding;
                        } else if (left + calendarWidth > windowWidth) {
                                // the calendar passes the widow right edge. Align it to component right side
                                this.picker.addClass('datepicker-orient-right');
                                left = offset.left + width - calendarWidth;
                        } else {
                                // Default to left
                                this.picker.addClass('datepicker-orient-left');
                        }
                }

                // auto y orientation is best-situation: top or bottom, no fudging,
                // decision based on which shows more of the calendar
                var yorient = this.o.orientation.y,
                        top_overflow, bottom_overflow;
                if (yorient === 'auto'){
                        top_overflow = -scrollTop + top - calendarHeight;
                        bottom_overflow = scrollTop + windowHeight - (top + height + calendarHeight);
                        if (Math.max(top_overflow, bottom_overflow) === bottom_overflow)
                                yorient = 'top';
                        else
                                yorient = 'bottom';
                }
                this.picker.addClass('datepicker-orient-' + yorient);
                if (yorient === 'top')
                        top += height;
                else
                        top -= calendarHeight + parseInt(this.picker.css('padding-top'));

                if (this.o.rtl) {
                        var right = windowWidth - (left + width);
                        this.picker.css({
                                top: top,
                                right: right,
                                zIndex: zIndex
                        });
                } else {
                        this.picker.css({
                                top: top,
                                left: left,
                                zIndex: zIndex
                        });
                }
                return this;
        },

        _allow_update: true,
        update: function(){
                if (!this._allow_update)
                        return this;

                var oldDates = this.dates.copy(),
                        dates = [],
                        fromArgs = false;
                if (arguments.length){
                        $.each(arguments, $.proxy(function(i, date){
                                if (date instanceof Date)
                                        date = this._local_to_utc(date);
                                dates.push(date);
                        }, this));
                        fromArgs = true;
                }
                else {
                        dates = this.isInput
                                        ? this.element.val()
                                        : this.element.data('date') || this.element.find('input').val();
                        if (dates && this.o.multidate)
                                dates = dates.split(this.o.multidateSeparator);
                        else
                                dates = [dates];
                        delete this.element.data().date;
                }

                dates = $.map(dates, $.proxy(function(date){
                        return DPGlobal.parseDate(date, this.o.format, this.o.language);
                }, this));
                dates = $.grep(dates, $.proxy(function(date){
                        return (
                                date < this.o.startDate ||
                                date > this.o.endDate ||
                                !date
                        );
                }, this), true);
                this.dates.replace(dates);

                if (this.dates.length)
                        this.viewDate = new Date(this.dates.get(-1));
                else if (this.viewDate < this.o.startDate)
                        this.viewDate = new Date(this.o.startDate);
                else if (this.viewDate > this.o.endDate)
                        this.viewDate = new Date(this.o.endDate);

                if (fromArgs){
                        // setting date by clicking
                        this.setValue();
                }
                else if (dates.length){
                        // setting date by typing
                        if (String(oldDates) !== String(this.dates))
                                this._trigger('changeDate');
                }
                if (!this.dates.length && oldDates.length)
                        this._trigger('clearDate');

                this.fill();
                return this;
        },

        fillDow: function(){
                var dowCnt = this.o.weekStart,
                        html = '<tr>';
                if (this.o.calendarWeeks){
                        this.picker.find('.datepicker-days thead tr:first-child .datepicker-switch')
                                .attr('colspan', function(i, val){
                                        return parseInt(val) + 1;
                                });
                        var cell = '<th class="cw">&#160;</th>';
                        html += cell;
                }
                while (dowCnt < this.o.weekStart + 7){
                        html += '<th class="dow">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';
                }
                html += '</tr>';
                this.picker.find('.datepicker-days thead').append(html);
        },

        fillMonths: function(){
                var html = '',
                i = 0;
                while (i < 12){
                        html += '<span class="month">'+dates[this.o.language].monthsShort[i++]+'</span>';
                }
                this.picker.find('.datepicker-months td').html(html);
        },

        setRange: function(range){
                if (!range || !range.length)
                        delete this.range;
                else
                        this.range = $.map(range, function(d){
                                return d.valueOf();
                        });
                this.fill();
        },

        getClassNames: function(date){
                var cls = [],
                        year = this.viewDate.getUTCFullYear(),
                        month = this.viewDate.getUTCMonth(),
                        today = new Date();
                if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){
                        cls.push('old');
                }
                else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){
                        cls.push('new');
                }
                if (this.focusDate && date.valueOf() === this.focusDate.valueOf())
                        cls.push('focused');
                // Compare internal UTC date with local today, not UTC today
                if (this.o.todayHighlight &&
                        date.getUTCFullYear() === today.getFullYear() &&
                        date.getUTCMonth() === today.getMonth() &&
                        date.getUTCDate() === today.getDate()){
                        cls.push('today');
                }
                if (this.dates.contains(date) !== -1)
                        cls.push('active');
                if (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate ||
                        $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){
                        cls.push('disabled');
                }
                if (this.o.datesDisabled.length > 0 &&
                        $.grep(this.o.datesDisabled, function(d){
                                return isUTCEquals(date, d); }).length > 0) {
                        cls.push('disabled', 'disabled-date');
                }

                if (this.range){
                        if (date > this.range[0] && date < this.range[this.range.length-1]){
                                cls.push('range');
                        }
                        if ($.inArray(date.valueOf(), this.range) !== -1){
                                cls.push('selected');
                        }
                }
                return cls;
        },

        fill: function(){
                var d = new Date(this.viewDate),
                        year = d.getUTCFullYear(),
                        month = d.getUTCMonth(),
                        startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,
                        startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
                        endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
                        endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
                        todaytxt = dates[this.o.language].today || dates['en'].today || '',
                        cleartxt = dates[this.o.language].clear || dates['en'].clear || '',
                        tooltip;
                if (isNaN(year) || isNaN(month))
                        return;
                this.picker.find('.datepicker-days thead .datepicker-switch')
                                        .text(dates[this.o.language].months[month]+' '+year);
                this.picker.find('tfoot .today')
                                        .text(todaytxt)
                                        .toggle(this.o.todayBtn !== false);
                this.picker.find('tfoot .clear')
                                        .text(cleartxt)
                                        .toggle(this.o.clearBtn !== false);
                this.updateNavArrows();
                this.fillMonths();
                var prevMonth = UTCDate(year, month-1, 28),
                        day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());
                prevMonth.setUTCDate(day);
                prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);
                var nextMonth = new Date(prevMonth);
                nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);
                nextMonth = nextMonth.valueOf();
                var html = [];
                var clsName;
                while (prevMonth.valueOf() < nextMonth){
                        if (prevMonth.getUTCDay() === this.o.weekStart){
                                html.push('<tr>');
                                if (this.o.calendarWeeks){
                                        // ISO 8601: First week contains first thursday.
                                        // ISO also states week starts on Monday, but we can be more abstract here.
                                        var
                                                // Start of current week: based on weekstart/current date
                                                ws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),
                                                // Thursday of this week
                                                th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),
                                                // First Thursday of year, year from thursday
                                                yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),
                                                // Calendar week: ms between thursdays, div ms per day, div 7 days
                                                calWeek =  (th - yth) / 864e5 / 7 + 1;
                                        html.push('<td class="cw">'+ calWeek +'</td>');

                                }
                        }
                        clsName = this.getClassNames(prevMonth);
                        clsName.push('day');

                        if (this.o.beforeShowDay !== $.noop){
                                var before = this.o.beforeShowDay(this._utc_to_local(prevMonth));
                                if (before === undefined)
                                        before = {};
                                else if (typeof(before) === 'boolean')
                                        before = {enabled: before};
                                else if (typeof(before) === 'string')
                                        before = {classes: before};
                                if (before.enabled === false)
                                        clsName.push('disabled');
                                if (before.classes)
                                        clsName = clsName.concat(before.classes.split(/\s+/));
                                if (before.tooltip)
                                        tooltip = before.tooltip;
                        }

                        clsName = $.unique(clsName);
                        html.push('<td class="'+clsName.join(' ')+'"' + (tooltip ? ' title="'+tooltip+'"' : '') + '>'+prevMonth.getUTCDate() + '</td>');
                        tooltip = null;
                        if (prevMonth.getUTCDay() === this.o.weekEnd){
                                html.push('</tr>');
                        }
                        prevMonth.setUTCDate(prevMonth.getUTCDate()+1);
                }
                this.picker.find('.datepicker-days tbody').empty().append(html.join(''));

                var months = this.picker.find('.datepicker-months')
                                        .find('th:eq(1)')
                                                .text(year)
                                                .end()
                                        .find('span').removeClass('active');

                $.each(this.dates, function(i, d){
                        if (d.getUTCFullYear() === year)
                                months.eq(d.getUTCMonth()).addClass('active');
                });

                if (year < startYear || year > endYear){
                        months.addClass('disabled');
                }
                if (year === startYear){
                        months.slice(0, startMonth).addClass('disabled');
                }
                if (year === endYear){
                        months.slice(endMonth+1).addClass('disabled');
                }

                if (this.o.beforeShowMonth !== $.noop){
                        var that = this;
                        $.each(months, function(i, month){
                                if (!$(month).hasClass('disabled')) {
                                        var moDate = new Date(year, i, 1);
                                        var before = that.o.beforeShowMonth(moDate);
                                        if (before === false)
                                                $(month).addClass('disabled');
                                }
                        });
                }

                html = '';
                year = parseInt(year/10, 10) * 10;
                var yearCont = this.picker.find('.datepicker-years')
                                                        .find('th:eq(1)')
                                                                .text(year + '-' + (year + 9))
                                                                .end()
                                                        .find('td');
                year -= 1;
                var years = $.map(this.dates, function(d){
                                return d.getUTCFullYear();
                        }),
                        classes;
                for (var i = -1; i < 11; i++){
                        classes = ['year'];
                        if (i === -1)
                                classes.push('old');
                        else if (i === 10)
                                classes.push('new');
                        if ($.inArray(year, years) !== -1)
                                classes.push('active');
                        if (year < startYear || year > endYear)
                                classes.push('disabled');
                        html += '<span class="' + classes.join(' ') + '">' + year + '</span>';
                        year += 1;
                }
                yearCont.html(html);
        },

        updateNavArrows: function(){
                if (!this._allow_update)
                        return;

                var d = new Date(this.viewDate),
                        year = d.getUTCFullYear(),
                        month = d.getUTCMonth();
                switch (this.viewMode){
                        case 0:
                                if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){
                                        this.picker.find('.prev').css({visibility: 'hidden'});
                                }
                                else {
                                        this.picker.find('.prev').css({visibility: 'visible'});
                                }
                                if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){
                                        this.picker.find('.next').css({visibility: 'hidden'});
                                }
                                else {
                                        this.picker.find('.next').css({visibility: 'visible'});
                                }
                                break;
                        case 1:
                        case 2:
                                if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){
                                        this.picker.find('.prev').css({visibility: 'hidden'});
                                }
                                else {
                                        this.picker.find('.prev').css({visibility: 'visible'});
                                }
                                if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){
                                        this.picker.find('.next').css({visibility: 'hidden'});
                                }
                                else {
                                        this.picker.find('.next').css({visibility: 'visible'});
                                }
                                break;
                }
        },

        click: function(e){
                e.preventDefault();
                var target = $(e.target).closest('span, td, th'),
                        year, month, day;
                if (target.length === 1){
                        switch (target[0].nodeName.toLowerCase()){
                                case 'th':
                                        switch (target[0].className){
                                                case 'datepicker-switch':
                                                        this.showMode(1);
                                                        break;
                                                case 'prev':
                                                case 'next':
                                                        var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1);
                                                        switch (this.viewMode){
                                                                case 0:
                                                                        this.viewDate = this.moveMonth(this.viewDate, dir);
                                                                        this._trigger('changeMonth', this.viewDate);
                                                                        break;
                                                                case 1:
                                                                case 2:
                                                                        this.viewDate = this.moveYear(this.viewDate, dir);
                                                                        if (this.viewMode === 1)
                                                                                this._trigger('changeYear', this.viewDate);
                                                                        break;
                                                        }
                                                        this.fill();
                                                        break;
                                                case 'today':
                                                        var date = new Date();
                                                        date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);

                                                        this.showMode(-2);
                                                        var which = this.o.todayBtn === 'linked' ? null : 'view';
                                                        this._setDate(date, which);
                                                        break;
                                                case 'clear':
                                                        this.clearDates();
                                                        break;
                                        }
                                        break;
                                case 'span':
                                        if (!target.hasClass('disabled')){
                                                this.viewDate.setUTCDate(1);
                                                if (target.hasClass('month')){
                                                        day = 1;
                                                        month = target.parent().find('span').index(target);
                                                        year = this.viewDate.getUTCFullYear();
                                                        this.viewDate.setUTCMonth(month);
                                                        this._trigger('changeMonth', this.viewDate);
                                                        if (this.o.minViewMode === 1){
                                                                this._setDate(UTCDate(year, month, day));
                                                        }
                                                }
                                                else {
                                                        day = 1;
                                                        month = 0;
                                                        year = parseInt(target.text(), 10)||0;
                                                        this.viewDate.setUTCFullYear(year);
                                                        this._trigger('changeYear', this.viewDate);
                                                        if (this.o.minViewMode === 2){
                                                                this._setDate(UTCDate(year, month, day));
                                                        }
                                                }
                                                this.showMode(-1);
                                                this.fill();
                                        }
                                        break;
                                case 'td':
                                        if (target.hasClass('day') && !target.hasClass('disabled')){
                                                day = parseInt(target.text(), 10)||1;
                                                year = this.viewDate.getUTCFullYear();
                                                month = this.viewDate.getUTCMonth();
                                                if (target.hasClass('old')){
                                                        if (month === 0){
                                                                month = 11;
                                                                year -= 1;
                                                        }
                                                        else {
                                                                month -= 1;
                                                        }
                                                }
                                                else if (target.hasClass('new')){
                                                        if (month === 11){
                                                                month = 0;
                                                                year += 1;
                                                        }
                                                        else {
                                                                month += 1;
                                                        }
                                                }
                                                this._setDate(UTCDate(year, month, day));
                                        }
                                        break;
                        }
                }
                if (this.picker.is(':visible') && this._focused_from){
                        $(this._focused_from).focus();
                }
                delete this._focused_from;
        },

        _toggle_multidate: function(date){
                var ix = this.dates.contains(date);
                if (!date){
                        this.dates.clear();
                }

                if (ix !== -1){
                        if (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){
                                this.dates.remove(ix);
                        }
                } else if (this.o.multidate === false) {
                        this.dates.clear();
                        this.dates.push(date);
                }
                else {
                        this.dates.push(date);
                }

                if (typeof this.o.multidate === 'number')
                        while (this.dates.length > this.o.multidate)
                                this.dates.remove(0);
        },

        _setDate: function(date, which){
                if (!which || which === 'date')
                        this._toggle_multidate(date && new Date(date));
                if (!which || which  === 'view')
                        this.viewDate = date && new Date(date);

                this.fill();
                this.setValue();
                if (!which || which  !== 'view') {
                        this._trigger('changeDate');
                }
                var element;
                if (this.isInput){
                        element = this.element;
                }
                else if (this.component){
                        element = this.element.find('input');
                }
                if (element){
                        element.change();
                }
                if (this.o.autoclose && (!which || which === 'date')){
                        this.hide();
                }
        },

        moveMonth: function(date, dir){
                if (!date)
                        return undefined;
                if (!dir)
                        return date;
                var new_date = new Date(date.valueOf()),
                        day = new_date.getUTCDate(),
                        month = new_date.getUTCMonth(),
                        mag = Math.abs(dir),
                        new_month, test;
                dir = dir > 0 ? 1 : -1;
                if (mag === 1){
                        test = dir === -1
                                // If going back one month, make sure month is not current month
                                // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)
                                ? function(){
                                        return new_date.getUTCMonth() === month;
                                }
                                // If going forward one month, make sure month is as expected
                                // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)
                                : function(){
                                        return new_date.getUTCMonth() !== new_month;
                                };
                        new_month = month + dir;
                        new_date.setUTCMonth(new_month);
                        // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
                        if (new_month < 0 || new_month > 11)
                                new_month = (new_month + 12) % 12;
                }
                else {
                        // For magnitudes >1, move one month at a time...
                        for (var i=0; i < mag; i++)
                                // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
                                new_date = this.moveMonth(new_date, dir);
                        // ...then reset the day, keeping it in the new month
                        new_month = new_date.getUTCMonth();
                        new_date.setUTCDate(day);
                        test = function(){
                                return new_month !== new_date.getUTCMonth();
                        };
                }
                // Common date-resetting loop -- if date is beyond end of month, make it
                // end of month
                while (test()){
                        new_date.setUTCDate(--day);
                        new_date.setUTCMonth(new_month);
                }
                return new_date;
        },

        moveYear: function(date, dir){
                return this.moveMonth(date, dir*12);
        },

        dateWithinRange: function(date){
                return date >= this.o.startDate && date <= this.o.endDate;
        },

        keydown: function(e){
                if (!this.picker.is(':visible')){
                        if (e.keyCode === 27) // allow escape to hide and re-show picker
                                this.show();
                        return;
                }
                var dateChanged = false,
                        dir, newDate, newViewDate,
                        focusDate = this.focusDate || this.viewDate;
                switch (e.keyCode){
                        case 27: // escape
                                if (this.focusDate){
                                        this.focusDate = null;
                                        this.viewDate = this.dates.get(-1) || this.viewDate;
                                        this.fill();
                                }
                                else
                                        this.hide();
                                e.preventDefault();
                                break;
                        case 37: // left
                        case 39: // right
                                if (!this.o.keyboardNavigation)
                                        break;
                                dir = e.keyCode === 37 ? -1 : 1;
                                if (e.ctrlKey){
                                        newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
                                        newViewDate = this.moveYear(focusDate, dir);
                                        this._trigger('changeYear', this.viewDate);
                                }
                                else if (e.shiftKey){
                                        newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
                                        newViewDate = this.moveMonth(focusDate, dir);
                                        this._trigger('changeMonth', this.viewDate);
                                }
                                else {
                                        newDate = new Date(this.dates.get(-1) || UTCToday());
                                        newDate.setUTCDate(newDate.getUTCDate() + dir);
                                        newViewDate = new Date(focusDate);
                                        newViewDate.setUTCDate(focusDate.getUTCDate() + dir);
                                }
                                if (this.dateWithinRange(newViewDate)){
                                        this.focusDate = this.viewDate = newViewDate;
                                        this.setValue();
                                        this.fill();
                                        e.preventDefault();
                                }
                                break;
                        case 38: // up
                        case 40: // down
                                if (!this.o.keyboardNavigation)
                                        break;
                                dir = e.keyCode === 38 ? -1 : 1;
                                if (e.ctrlKey){
                                        newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
                                        newViewDate = this.moveYear(focusDate, dir);
                                        this._trigger('changeYear', this.viewDate);
                                }
                                else if (e.shiftKey){
                                        newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
                                        newViewDate = this.moveMonth(focusDate, dir);
                                        this._trigger('changeMonth', this.viewDate);
                                }
                                else {
                                        newDate = new Date(this.dates.get(-1) || UTCToday());
                                        newDate.setUTCDate(newDate.getUTCDate() + dir * 7);
                                        newViewDate = new Date(focusDate);
                                        newViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7);
                                }
                                if (this.dateWithinRange(newViewDate)){
                                        this.focusDate = this.viewDate = newViewDate;
                                        this.setValue();
                                        this.fill();
                                        e.preventDefault();
                                }
                                break;
                        case 32: // spacebar
                                // Spacebar is used in manually typing dates in some formats.
                                // As such, its behavior should not be hijacked.
                                break;
                        case 13: // enter
                                focusDate = this.focusDate || this.dates.get(-1) || this.viewDate;
                                if (this.o.keyboardNavigation) {
                                        this._toggle_multidate(focusDate);
                                        dateChanged = true;
                                }
                                this.focusDate = null;
                                this.viewDate = this.dates.get(-1) || this.viewDate;
                                this.setValue();
                                this.fill();
                                if (this.picker.is(':visible')){
                                        e.preventDefault();
                                        if (typeof e.stopPropagation === 'function') {
                                                e.stopPropagation(); // All modern browsers, IE9+
                                        } else {
                                                e.cancelBubble = true; // IE6,7,8 ignore "stopPropagation"
                                        }
                                        if (this.o.autoclose)
                                                this.hide();
                                }
                                break;
                        case 9: // tab
                                this.focusDate = null;
                                this.viewDate = this.dates.get(-1) || this.viewDate;
                                this.fill();
                                this.hide();
                                break;
                }
                if (dateChanged){
                        if (this.dates.length)
                                this._trigger('changeDate');
                        else
                                this._trigger('clearDate');
                        var element;
                        if (this.isInput){
                                element = this.element;
                        }
                        else if (this.component){
                                element = this.element.find('input');
                        }
                        if (element){
                                element.change();
                        }
                }
        },

        showMode: function(dir){
                if (dir){
                        this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));
                }
                this.picker
                        .children('div')
                        .hide()
                        .filter('.datepicker-' + DPGlobal.modes[this.viewMode].clsName)
                                .css('display', 'block');
                this.updateNavArrows();
        }
};

var DateRangePicker = function(element, options){
        this.element = $(element);
        this.inputs = $.map(options.inputs, function(i){
                return i.jquery ? i[0] : i;
        });
        delete options.inputs;

        datepickerPlugin.call($(this.inputs), options)
                .bind('changeDate', $.proxy(this.dateUpdated, this));

        this.pickers = $.map(this.inputs, function(i){
                return $(i).data('datepicker');
        });
        this.updateDates();
};
DateRangePicker.prototype = {
        updateDates: function(){
                this.dates = $.map(this.pickers, function(i){
                        return i.getUTCDate();
                });
                this.updateRanges();
        },
        updateRanges: function(){
                var range = $.map(this.dates, function(d){
                        return d.valueOf();
                });
                $.each(this.pickers, function(i, p){
                        p.setRange(range);
                });
        },
        dateUpdated: function(e){
                // `this.updating` is a workaround for preventing infinite recursion
                // between `changeDate` triggering and `setUTCDate` calling.  Until
                // there is a better mechanism.
                if (this.updating)
                        return;
                this.updating = true;

                var dp = $(e.target).data('datepicker'),
                        new_date = dp.getUTCDate(),
                        i = $.inArray(e.target, this.inputs),
                        j = i - 1,
                        k = i + 1,
                        l = this.inputs.length;
                if (i === -1)
                        return;

                $.each(this.pickers, function(i, p){
                        if (!p.getUTCDate())
                                p.setUTCDate(new_date);
                });

                if (new_date < this.dates[j]){
                        // Date being moved earlier/left
                        while (j >= 0 && new_date < this.dates[j]){
                                this.pickers[j--].setUTCDate(new_date);
                        }
                }
                else if (new_date > this.dates[k]){
                        // Date being moved later/right
                        while (k < l && new_date > this.dates[k]){
                                this.pickers[k++].setUTCDate(new_date);
                        }
                }
                this.updateDates();

                delete this.updating;
        },
        remove: function(){
                $.map(this.pickers, function(p){ p.remove(); });
                delete this.element.data().datepicker;
        }
};

function opts_from_el(el, prefix){
        // Derive options from element data-attrs
        var data = $(el).data(),
                out = {}, inkey,
                replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');
        prefix = new RegExp('^' + prefix.toLowerCase());
        function re_lower(_,a){
                return a.toLowerCase();
        }
        for (var key in data)
                if (prefix.test(key)){
                        inkey = key.replace(replace, re_lower);
                        out[inkey] = data[key];
                }
        return out;
}

function opts_from_locale(lang){
        // Derive options from locale plugins
        var out = {};
        // Check if "de-DE" style date is available, if not language should
        // fallback to 2 letter code eg "de"
        if (!dates[lang]){
                lang = lang.split('-')[0];
                if (!dates[lang])
                        return;
        }
        var d = dates[lang];
        $.each(locale_opts, function(i,k){
                if (k in d)
                        out[k] = d[k];
        });
        return out;
}

var old = $.fn.datepicker;
var datepickerPlugin = function(option){
        var args = Array.apply(null, arguments);
        args.shift();
        var internal_return;
        this.each(function(){
                var $this = $(this),
                        data = $this.data('datepicker'),
                        options = typeof option === 'object' && option;
                if (!data){
                        var elopts = opts_from_el(this, 'date'),
                                // Preliminary otions
                                xopts = $.extend({}, defaults, elopts, options),
                                locopts = opts_from_locale(xopts.language),
                                // Options priority: js args, data-attrs, locales, defaults
                                opts = $.extend({}, defaults, locopts, elopts, options);
                        if ($this.hasClass('input-daterange') || opts.inputs){
                                var ropts = {
                                        inputs: opts.inputs || $this.find('input').toArray()
                                };
                                $this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts))));
                        }
                        else {
                                $this.data('datepicker', (data = new Datepicker(this, opts)));
                        }
                }
                if (typeof option === 'string' && typeof data[option] === 'function'){
                        internal_return = data[option].apply(data, args);
                        if (internal_return !== undefined)
                                return false;
                }
        });
        if (internal_return !== undefined)
                return internal_return;
        else
                return this;
};
$.fn.datepicker = datepickerPlugin;

var defaults = $.fn.datepicker.defaults = {
        autoclose: false,
        beforeShowDay: $.noop,
        beforeShowMonth: $.noop,
        calendarWeeks: false,
        clearBtn: false,
        toggleActive: false,
        daysOfWeekDisabled: [],
        datesDisabled: [],
        endDate: Infinity,
        forceParse: true,
        format: 'mm/dd/yyyy',
        keyboardNavigation: true,
        language: 'en',
        minViewMode: 0,
        multidate: false,
        multidateSeparator: ',',
        orientation: "auto",
        rtl: false,
        startDate: -Infinity,
        startView: 0,
        todayBtn: false,
        todayHighlight: false,
        weekStart: 0,
        disableTouchKeyboard: false,
enableOnReadonly: true,
        container: 'body'
};
var locale_opts = $.fn.datepicker.locale_opts = [
        'format',
        'rtl',
        'weekStart'
];
$.fn.datepicker.Constructor = Datepicker;
var dates = $.fn.datepicker.dates = {
        en: {
                days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
                daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
                daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
                months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
                monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
                today: "Today",
                clear: "Clear"
        }
};

var DPGlobal = {
        modes: [
                {
                        clsName: 'days',
                        navFnc: 'Month',
                        navStep: 1
                },
                {
                        clsName: 'months',
                        navFnc: 'FullYear',
                        navStep: 1
                },
                {
                        clsName: 'years',
                        navFnc: 'FullYear',
                        navStep: 10
        }],
        isLeapYear: function(year){
                return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));
        },
        getDaysInMonth: function(year, month){
                return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
        },
        validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
        nonpunctuation: /[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g,
        parseFormat: function(format){
                // IE treats \0 as a string end in inputs (truncating the value),
                // so it's a bad format delimiter, anyway
                var separators = format.replace(this.validParts, '\0').split('\0'),
                        parts = format.match(this.validParts);
                if (!separators || !separators.length || !parts || parts.length === 0){
                        throw new Error("Invalid date format.");
                }
                return {separators: separators, parts: parts};
        },
        parseDate: function(date, format, language){
                if (!date)
                        return undefined;
                if (date instanceof Date)
                        return date;
                if (typeof format === 'string')
                        format = DPGlobal.parseFormat(format);
                var part_re = /([\-+]\d+)([dmwy])/,
                        parts = date.match(/([\-+]\d+)([dmwy])/g),
                        part, dir, i;
                if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){
                        date = new Date();
                        for (i=0; i < parts.length; i++){
                                part = part_re.exec(parts[i]);
                                dir = parseInt(part[1]);
                                switch (part[2]){
                                        case 'd':
                                                date.setUTCDate(date.getUTCDate() + dir);
                                                break;
                                        case 'm':
                                                date = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir);
                                                break;
                                        case 'w':
                                                date.setUTCDate(date.getUTCDate() + dir * 7);
                                                break;
                                        case 'y':
                                                date = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir);
                                                break;
                                }
                        }
                        return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);
                }
                parts = date && date.match(this.nonpunctuation) || [];
                date = new Date();
                var parsed = {},
                        setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
                        setters_map = {
                                yyyy: function(d,v){
                                        return d.setUTCFullYear(v);
                                },
                                yy: function(d,v){
                                        return d.setUTCFullYear(2000+v);
                                },
                                m: function(d,v){
                                        if (isNaN(d))
                                                return d;
                                        v -= 1;
                                        while (v < 0) v += 12;
                                        v %= 12;
                                        d.setUTCMonth(v);
                                        while (d.getUTCMonth() !== v)
                                                d.setUTCDate(d.getUTCDate()-1);
                                        return d;
                                },
                                d: function(d,v){
                                        return d.setUTCDate(v);
                                }
                        },
                        val, filtered;
                setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
                setters_map['dd'] = setters_map['d'];
                date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
                var fparts = format.parts.slice();
                // Remove noop parts
                if (parts.length !== fparts.length){
                        fparts = $(fparts).filter(function(i,p){
                                return $.inArray(p, setters_order) !== -1;
                        }).toArray();
                }
                // Process remainder
                function match_part(){
                        var m = this.slice(0, parts[i].length),
                                p = parts[i].slice(0, m.length);
                        return m.toLowerCase() === p.toLowerCase();
                }
                if (parts.length === fparts.length){
                        var cnt;
                        for (i=0, cnt = fparts.length; i < cnt; i++){
                                val = parseInt(parts[i], 10);
                                part = fparts[i];
                                if (isNaN(val)){
                                        switch (part){
                                                case 'MM':
                                                        filtered = $(dates[language].months).filter(match_part);
                                                        val = $.inArray(filtered[0], dates[language].months) + 1;
                                                        break;
                                                case 'M':
                                                        filtered = $(dates[language].monthsShort).filter(match_part);
                                                        val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
                                                        break;
                                        }
                                }
                                parsed[part] = val;
                        }
                        var _date, s;
                        for (i=0; i < setters_order.length; i++){
                                s = setters_order[i];
                                if (s in parsed && !isNaN(parsed[s])){
                                        _date = new Date(date);
                                        setters_map[s](_date, parsed[s]);
                                        if (!isNaN(_date))
                                                date = _date;
                                }
                        }
                }
                return date;
        },
        formatDate: function(date, format, language){
                if (!date)
                        return '';
                if (typeof format === 'string')
                        format = DPGlobal.parseFormat(format);
                var val = {
                        d: date.getUTCDate(),
                        D: dates[language].daysShort[date.getUTCDay()],
                        DD: dates[language].days[date.getUTCDay()],
                        m: date.getUTCMonth() + 1,
                        M: dates[language].monthsShort[date.getUTCMonth()],
                        MM: dates[language].months[date.getUTCMonth()],
                        yy: date.getUTCFullYear().toString().substring(2),
                        yyyy: date.getUTCFullYear()
                };
                val.dd = (val.d < 10 ? '0' : '') + val.d;
                val.mm = (val.m < 10 ? '0' : '') + val.m;
                date = [];
                var seps = $.extend([], format.separators);
                for (var i=0, cnt = format.parts.length; i <= cnt; i++){
                        if (seps.length)
                                date.push(seps.shift());
                        date.push(val[format.parts[i]]);
                }
                return date.join('');
        },
        headTemplate: '<thead>'+
                                                '<tr>'+
                                                        '<th class="prev">&#171;</th>'+
                                                        '<th colspan="5" class="datepicker-switch"></th>'+
                                                        '<th class="next">&#187;</th>'+
                                                '</tr>'+
                                        '</thead>',
        contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
        footTemplate: '<tfoot>'+
                                                '<tr>'+
                                                        '<th colspan="7" class="today"></th>'+
                                                '</tr>'+
                                                '<tr>'+
                                                        '<th colspan="7" class="clear"></th>'+
                                                '</tr>'+
                                        '</tfoot>'
};
DPGlobal.template = '<div class="datepicker">'+
                                                '<div class="datepicker-days">'+
                                                        '<table class=" table-condensed">'+
                                                                DPGlobal.headTemplate+
                                                                '<tbody></tbody>'+
                                                                DPGlobal.footTemplate+
                                                        '</table>'+
                                                '</div>'+
                                                '<div class="datepicker-months">'+
                                                        '<table class="table-condensed">'+
                                                                DPGlobal.headTemplate+
                                                                DPGlobal.contTemplate+
                                                                DPGlobal.footTemplate+
                                                        '</table>'+
                                                '</div>'+
                                                '<div class="datepicker-years">'+
                                                        '<table class="table-condensed">'+
                                                                DPGlobal.headTemplate+
                                                                DPGlobal.contTemplate+
                                                                DPGlobal.footTemplate+
                                                        '</table>'+
                                                '</div>'+
                                        '</div>';

$.fn.datepicker.DPGlobal = DPGlobal;

/* DATEPICKER NO CONFLICT
* =================== */

$.fn.datepicker.noConflict = function(){
        $.fn.datepicker = old;
        return this;
};

/* DATEPICKER VERSION
 * =================== */
$.fn.datepicker.version =  "1.4.0";

/* DATEPICKER DATA-API
* ================== */

$(document).on(
        'focus.datepicker.data-api click.datepicker.data-api',
        '[data-provide="datepicker"]',
        function(e){
                var $this = $(this);
                if ($this.data('datepicker'))
                        return;
                e.preventDefault();
                // component click requires us to explicitly show it
                datepickerPlugin.call($this, 'show');
        }
);
$(function(){
        datepickerPlugin.call($('[data-provide="datepicker-inline"]'));
});

}(window.jQuery)); /*! selectize.js - v0.12.1 | github.com/brianreavis/selectize.js | Apache License (v2) */

!function(a,b){“function”==typeof define&&define.amd?define(“sifter”,b):“object”==typeof exports?module.exports=b():a.Sifter=b()}(this,function(){var a=function(a,b){this.items=a,this.settings=b||{diacritics:!0}};a.prototype.tokenize=function(a){if(a=d(String(a||“”).toLowerCase()),!a||!a.length)return[];var b,c,f,h,i=[],j=a.split(/ +/);for(b=0,c=j.length;c>b;b++){if(f=e(j),this.settings.diacritics)for(h in g)g.hasOwnProperty(h)&&(f=f.replace(new RegExp(h,“g”),g));i.push({string:j,regex:new RegExp(f,“i”)})}return i},a.prototype.iterator=function(a,b){var c;c=f(a)?Array.prototype.forEach||function(a){for(var b=0,c=this.length;c>b;b++)a(this,b,this)}:function(a){for(var b in this)this.hasOwnProperty(b)&&a(this,b,this)},c.apply(a,)},a.prototype.getScoreFunction=function(a,b){var c,d,e,f;c=this,a=c.prepareSearch(a,b),e=a.tokens,d=a.options.fields,f=e.length;var g=function(a,b){var c,d;return a?(a=String(a||“”),d=a.search(b.regex),-1===d?0:(c=b.string.length/a.length,0===d&&(c+=.5),c)):0},h=function(){var a=d.length;return a?1===a?function(a,b){return g(b[d],a)}:function(b,c){for(var e=0,f=0;a>e;e++)f+=g(c[d],b);return f/a}:function(){return 0}}();return f?1===f?function(a){return h(e,a)}:“and”===a.options.conjunction?function(a){for(var b,c=0,d=0;f>c;c++){if(b=h(e,a),0>=b)return 0;d+=b}return d/f}:function(a){for(var b=0,c=0;f>b;b++)c+=h(e,a);return c/f}:function(){return 0}},a.prototype.getSortFunction=function(a,c){var d,e,f,g,h,i,j,k,l,m,n;if(f=this,a=f.prepareSearch(a,c),n=!a.query&&c.sort_empty||c.sort,l=function(a,b){return“$score”===a?b.score:f.items[a]},h=[],n)for(d=0,e=n.length;e>d;d++)(a.query||“$score”!==n.field)&&h.push(n);if(a.query){for(m=!0,d=0,e=h.length;e>d;d++)if(“$score”===h.field){m=!1;break}m&&h.unshift({field:“$score”,direction:“desc”})}else for(d=0,e=h.length;e>d;d++)if(“$score”===h.field){h.splice(d,1);break}for(k=[],d=0,e=h.length;e>d;d++)k.push(“desc”===h.direction?-1:1);return i=h.length,i?1===i?(g=h.field,j=k,function(a,c){return j*b(l(g,a),l(g,c))}):function(a,c){var d,e,f;for(d=0;i>d;d++)if(f=h.field,e=k*b(l(f,a),l(f,c)))return e;return 0}:null},a.prototype.prepareSearch=function(a,b){if(“object”==typeof a)return a;b=c({},b);var d=b.fields,e=b.sort,g=b.sort_empty;return d&&!f(d)&&(b.fields=),e&&!f(e)&&(b.sort=),g&&!f(g)&&(b.sort_empty=),{options:b,query:String(a||“”).toLowerCase(),tokens:this.tokenize(a),total:0,items:[]}},a.prototype.search=function(a,b){var c,d,e,f,g=this;return d=this.prepareSearch(a,b),b=d.options,a=d.query,f=b.score||g.getScoreFunction(d),a.length?g.iterator(g.items,function(a,e){c=f(a),(b.filter===!1||c>0)&&d.items.push({score:c,id:e})}):g.iterator(g.items,function(a,b){d.items.push({score:1,id:b})}),e=g.getSortFunction(d,b),e&&d.items.sort(e),d.total=d.items.length,“number”==typeof b.limit&&(d.items=d.items.slice(0,b.limit)),d};var b=function(a,b){return“number”==typeof a&&“number”==typeof b?a>b?1:b>a?-1:0:(a=h(String(a||“”)),b=h(String(b||“”)),a>b?1:b>a?-1:0)},c=function(a){var b,c,d,e;for(b=1,c=arguments.length;c>b;b++)if(e=arguments)for(d in e)e.hasOwnProperty(d)&&(a=e);return a},d=function(a){return(a+“”).replace(/^s+|s+$|/g,“”)},e=function(a){return(a+“”).replace(/([.?*+^$\(){}|-])/g,“\$1”)},f=Array.isArray||$&&$.isArray||function(a){return“[object Array]”===Object.prototype.toString.call(a)},g={a:“”,c:“”,d:“”,e:“”,i:“”,l:“”,n:“”,o:“”,r:“”,s:“”,t:“”,u:“”,y:“”,z:“”},h=function(){var a,b,c,d,e=“”,f={};for(c in g)if(g.hasOwnProperty©)for(d=g.substring(2,g.length-1),e+=d,a=0,b=d.length;b>a;a++)f=c;var h=new RegExp(“[”e“]”,“g”);return function(a){return a.replace(h,function(a){return f}).toLowerCase()}}();return a}),function(a,b){“function”==typeof define&&define.amd?define(“microplugin”,b):“object”==typeof exports?module.exports=b():a.MicroPlugin=b()}(this,function(){var a={};a.mixin=function(a){a.plugins={},a.prototype.initializePlugins=function(a){var c,d,e,f=this,g=[];if(f.plugins={names:,settings:{},requested:{},loaded:{}},b.isArray(a))for(c=0,d=a.length;d>c;c++)“string”==typeof a?g.push(a):(f.plugins.settings[a.name]=a.options,g.push(a.name));else if(a)for(e in a)a.hasOwnProperty(e)&&(f.plugins.settings=a,g.push(e));for(;g.length;)f.require(g.shift())},a.prototype.loadPlugin=function(b){var c=this,d=c.plugins,e=a.plugins;if(!a.plugins.hasOwnProperty(b))throw new Error(‘Unable to find “’b‘” plugin’);d.requested=!0,d.loaded=e.fn.apply(c,[c.plugins.settings||{}]),d.names.push(b)},a.prototype.require=function(a){var b=this,c=b.plugins;if(!b.plugins.loaded.hasOwnProperty(a)){if(c.requested)throw new Error(‘Plugin has circular dependency (“’a‘”)’);b.loadPlugin(a)}return c.loaded},a.define=function(b,c){a.plugins={name:b,fn:c}}};var b={isArray:Array.isArray||function(a){return“[object Array]”===Object.prototype.toString.call(a)}};return a}),function(a,b){“function”==typeof define&&define.amd?define(“selectize”,,b):“object”==typeof exports?module.exports=b(require(“jquery”),require(“sifter”),require(“microplugin”)):a.Selectize=b(a.jQuery,a.Sifter,a.MicroPlugin)}(this,function(a,b,c){“use strict”;var d=function(a,b){if(“string”!=typeof b||b.length){var c=“string”==typeof b?new RegExp(b,“i”):b,d=function(a){var b=0;if(3===a.nodeType){var e=a.data.search©;if(e>=0&&a.data.length>0){var f=a.data.match©,g=document.createElement(“span”);g.className=“highlight”;var h=a.splitText(e),i=(h.splitText(f.length),h.cloneNode(!0));g.appendChild(i),h.parentNode.replaceChild(g,h),b=1}}else if(1===a.nodeType&&a.childNodes&&!/(script|style)/i.test(a.tagName))for(var j=0;j);return b};return a.each(function(){d(this)})}},e=function(){};e.prototype={on:function(a,b){this._events=this._events||{},this._events=this._events||[],this._events.push(b)},off:function(a,b){var c=arguments.length;return 0===c?delete this._events:1===c?delete this._events:(this._events=this._events||{},void(a in this._events!=!1&&this._events.splice(this._events.indexOf(b),1)))},trigger:function(a){if(this._events=this._events||{},a in this._events!=!1)for(var b=0;b.length;b++)this._events[b].apply(this,Array.prototype.slice.call(arguments,1))}},e.mixin=function(a){for(var b=,c=0;c]=e.prototype[b]};var f=/Mac/.test(navigator.userAgent),g=65,h=13,i=27,j=37,k=38,l=80,m=39,n=40,o=78,p=8,q=46,r=16,s=f?91:17,t=f?18:17,u=9,v=1,w=2,x=!/android/i.test(window.navigator.userAgent)&&!!document.createElement(“form”).validity,y=function(a){return“undefined”!=typeof a},z=function(a){return“undefined”==typeof a||null===a?null:“boolean”==typeof a?a?“1”:“0”:a+“”},A=function(a){return(a+“”).replace(/&/g,“&amp;”).replace(/</g,“&lt;”).replace(/>/g,“&gt;”).replace(/“/g,”&quot;“)},B=function(a){return(a+”“).replace(/$/g,”$$$$“)},C={};C.before=function(a,b,c){var d=a;a=function(){return c.apply(a,arguments),d.apply(a,arguments)}},C.after=function(a,b,c){var d=a;a=function(){var b=d.apply(a,arguments);return c.apply(a,arguments),b}};var D=function(a){var b=!1;return function(){b||(b=!0,a.apply(this,arguments))}},E=function(a,b){var c;return function(){var d=this,e=arguments;window.clearTimeout©,c=window.setTimeout(function(){a.apply(d,e)},b)}},F=function(a,b,c){var d,e=a.trigger,f={};a.trigger=function(){var c=arguments;return-1===b.indexOf©?e.apply(a,arguments):void(f=arguments)},c.apply(a,[]),a.trigger=e;for(d in f)f.hasOwnProperty(d)&&e.apply(a,f)},G=function(a,b,c,d){a.on(b,c,function(b){for(var c=b.target;c&&c.parentNode!==a;)c=c.parentNode;return b.currentTarget=c,d.apply(this,)})},H=function(a){var b={};if(”selectionStart“in a)b.start=a.selectionStart,b.length=a.selectionEnd-b.start;else if(document.selection){a.focus();var c=document.selection.createRange(),d=document.selection.createRange().text.length;c.moveStart(”character“,-a.value.length),b.start=c.text.length-d,b.length=d}return b},I=function(a,b,c){var d,e,f={};if©for(d=0,e=c.length;e>d;d++)f[c]=a.css(c);else f=a.css();b.css(f)},J=function(b,c){if(!b)return 0;var d=a(”<test>“).css({position:”absolute“,top:-99999,left:-99999,width:”auto“,padding:0,whiteSpace:”pre“}).text(b).appendTo(”body“);I(c,d,);var e=d.width();return d.remove(),e},K=function(a){var b=null,c=function(c,d){var e,f,g,h,i,j,k,l;c=c||window.event||{},d=d||{},c.metaKey||c.altKey||(d.force||a.data(”grow“)!==!1)&&(e=a.val(),c.type&&”keydown“===c.type.toLowerCase()&&(f=c.keyCode,g=f>=97&&122>=f||f>=65&&90>=f||f>=48&&57>=f||32===f,f===q||f===p?(l=H(a),l.length?e=e.substring(0,l.start)+e.substring(l.start+l.length):f===p&&l.start?e=e.substring(0,l.start-1)+e.substring(l.start+1):f===q&&”undefined“!=typeof l.start&&(e=e.substring(0,l.start)+e.substring(l.start+1))):g&&(j=c.shiftKey,k=String.fromCharCode(c.keyCode),k=j?k.toUpperCase():k.toLowerCase(),e+=k)),h=a.attr(”placeholder“),!e&&h&&(e=h),i=J(e,a)+4,i!==b&&(b=i,a.width(i),a.triggerHandler(”resize“)))};a.on(”keydown keyup update blur“,c),c()},L=function(c,d){var e,f,g,h,i=this;h=c,h.selectize=i;var j=window.getComputedStyle&&window.getComputedStyle(h,null);if(g=j?j.getPropertyValue(”direction“):h.currentStyle&&h.currentStyle.direction,g=g||c.parents(”:first“).attr(”dir“)||”“,a.extend(i,{order:0,settings:d,$input:c,tabIndex:c.attr(”tabindex“)||”“,tagType:”select“===h.tagName.toLowerCase()?v:w,rtl:/rtl/i.test(g),eventNS:”.selectize“+ ++L.count,highlightedValue:null,isOpen:!1,isDisabled:!1,isRequired:c.is(”“),isInvalid:!1,isLocked:!1,isFocused:!1,isInputHidden:!1,isSetup:!1,isShiftDown:!1,isCmdDown:!1,isCtrlDown:!1,ignoreFocus:!1,ignoreBlur:!1,ignoreHover:!1,hasOptions:!1,currentResults:null,lastValue:”“,caretPos:0,loading:0,loadedSearches:{},$activeOption:null,$activeItems:[],optgroups:{},options:{},userOptions:{},items:,renderCache:{},onSearchChange:null===d.loadThrottle?i.onSearchChange:E(i.onSearchChange,d.loadThrottle)}),i.sifter=new b(this.options,{diacritics:d.diacritics}),i.settings.options){for(e=0,f=i.settings.options.length;f>e;e++)i.registerOption(i.settings.options);delete i.settings.options}if(i.settings.optgroups){for(e=0,f=i.settings.optgroups.length;f>e;e++)i.registerOptionGroup(i.settings.optgroups);delete i.settings.optgroups}i.settings.mode=i.settings.mode||(1===i.settings.maxItems?”single“:”multi“),”boolean“!=typeof i.settings.hideSelected&&(i.settings.hideSelected=”multi“===i.settings.mode),i.initializePlugins(i.settings.plugins),i.setupCallbacks(),i.setupTemplates(),i.setup()};return e.mixin(L),c.mixin(L),a.extend(L.prototype,{setup:function(){var b,c,d,e,g,h,i,j,k,l=this,m=l.settings,n=l.eventNS,o=a(window),p=a(document),q=l.$input;if(i=l.settings.mode,j=q.attr(”class“)||”“,b=a(”<div>“).addClass(m.wrapperClass).addClass(j).addClass(i),c=a(”<div>“).addClass(m.inputClass).addClass(”items“).appendTo(b),d=a(‘<input type=”text“ autocomplete=”off“ />’).appendTo©.attr(”tabindex“,q.is(”:disabled“)?”-1“:l.tabIndex),h=a(m.dropdownParent||b),e=a(”<div>“).addClass(m.dropdownClass).addClass(i).hide().appendTo(h),g=a(”<div>“).addClass(m.dropdownContentClass).appendTo(e),l.settings.copyClassesToDropdown&&e.addClass(j),b.css({width:q.style.width}),l.plugins.names.length&&(k=”plugin-“+l.plugins.names.join(” plugin-“),b.addClass(k),e.addClass(k)),(null===m.maxItems||m.maxItems>1)&&l.tagType===v&&q.attr(”multiple“,”multiple“),l.settings.placeholder&&d.attr(”placeholder“,m.placeholder),!l.settings.splitOn&&l.settings.delimiter){var u=l.settings.delimiter.replace(/[-/\^$*+?.()|{}]/g,”\$&“);l.settings.splitOn=new RegExp(”\s*“u”+\s*“)}q.attr(”autocorrect“)&&d.attr(”autocorrect“,q.attr(”autocorrect“)),q.attr(”autocapitalize“)&&d.attr(”autocapitalize“,q.attr(”autocapitalize“)),l.$wrapper=b,l.$control=c,l.$control_input=d,l.$dropdown=e,l.$dropdown_content=g,e.on(”mouseenter“,”“,function(){return l.onOptionHover.apply(l,arguments)}),e.on(”mousedown click“,”“,function(){return l.onOptionSelect.apply(l,arguments)}),G(c,”mousedown“,”*:not(input)“,function(){return l.onItemSelect.apply(l,arguments)}),K(d),c.on({mousedown:function(){return l.onMouseDown.apply(l,arguments)},click:function(){return l.onClick.apply(l,arguments)}}),d.on({mousedown:function(a){a.stopPropagation()},keydown:function(){return l.onKeyDown.apply(l,arguments)},keyup:function(){return l.onKeyUp.apply(l,arguments)},keypress:function(){return l.onKeyPress.apply(l,arguments)},resize:function(){l.positionDropdown.apply(l,[])},blur:function(){return l.onBlur.apply(l,arguments)},focus:function(){return l.ignoreBlur=!1,l.onFocus.apply(l,arguments)},paste:function(){return l.onPaste.apply(l,arguments)}}),p.on(”keydown“+n,function(a){l.isCmdDown=a,l.isCtrlDown=a,l.isShiftDown=a.shiftKey}),p.on(”keyup“+n,function(a){a.keyCode===t&&(l.isCtrlDown=!1),a.keyCode===r&&(l.isShiftDown=!1),a.keyCode===s&&(l.isCmdDown=!1)}),p.on(”mousedown“+n,function(a){if(l.isFocused){if(a.target===l.$dropdown||a.target.parentNode===l.$dropdown)return!1;l.$control.has(a.target).length||a.target===l.$control||l.blur(a.target)}}),o.on(.join(” “),function(){l.isOpen&&l.positionDropdown.apply(l,arguments)}),o.on(”mousemove“+n,function(){l.ignoreHover=!1}),this.revertSettings={$children:q.children().detach(),tabindex:q.attr(”tabindex“)},q.attr(”tabindex“,-1).hide().after(l.$wrapper),a.isArray(m.items)&&(l.setValue(m.items),delete m.items),x&&q.on(”invalid“+n,function(a){a.preventDefault(),l.isInvalid=!0,l.refreshState()}),l.updateOriginalInput(),l.refreshItems(),l.refreshState(),l.updatePlaceholder(),l.isSetup=!0,q.is(”:disabled“)&&l.disable(),l.on(”change“,this.onChange),q.data(”selectize“,l),q.addClass(”selectized“),l.trigger(”initialize“),m.preload===!0&&l.onSearchChange(”“)},setupTemplates:function(){var b=this,c=b.settings.labelField,d=b.settings.optgroupLabelField,e={optgroup:function(a){return’<div class=”optgroup“>‘a.html”</div>“},optgroup_header:function(a,b){return’<div class=”optgroup-header“>‘+b(a)+”</div>“},option:function(a,b){return’<div class=”option“>‘+b(a)+”</div>“},item:function(a,b){return’<div class=”item“>‘+b(a)+”</div>“},option_create:function(a,b){return’<div class=”create“>Add <strong>‘+b(a.input)+”</strong>&hellip;</div>“}};b.settings.render=a.extend({},e,b.settings.render)},setupCallbacks:function(){var a,b,c={initialize:”onInitialize“,change:”onChange“,item_add:”onItemAdd“,item_remove:”onItemRemove“,clear:”onClear“,option_add:”onOptionAdd“,option_remove:”onOptionRemove“,option_clear:”onOptionClear“,optgroup_add:”onOptionGroupAdd“,optgroup_remove:”onOptionGroupRemove“,optgroup_clear:”onOptionGroupClear“,dropdown_open:”onDropdownOpen“,dropdown_close:”onDropdownClose“,type:”onType“,load:”onLoad“,focus:”onFocus“,blur:”onBlur“};for(a in c)c.hasOwnProperty(a)&&(b=this.settings[c],b&&this.on(a,b))},onClick:function(a){var b=this;b.isFocused||(b.focus(),a.preventDefault())},onMouseDown:function(b){{var c=this,d=b.isDefaultPrevented();a(b.target)}if(c.isFocused){if(b.target!==c.$control_input)return”single“===c.settings.mode?c.isOpen?c.close():c.open():d||c.setActiveItem(null),!1}else d||window.setTimeout(function(){c.focus()},0)},onChange:function(){this.$input.trigger(”change“)},onPaste:function(b){var c=this;c.isFull()||c.isInputHidden||c.isLocked?b.preventDefault():c.settings.splitOn&&setTimeout(function(){for(var b=a.trim(c.$control_input.val()||”“).split(c.settings.splitOn),d=0,e=b.length;e>d;d++)c.createItem(b)},0)},onKeyPress:function(a){if(this.isLocked)return a&&a.preventDefault();var b=String.fromCharCode(a.keyCode||a.which);return this.settings.create&&”multi“===this.settings.mode&&b===this.settings.delimiter?(this.createItem(),a.preventDefault(),!1):void 0},onKeyDown:function(a){var b=(a.target===this.$control_input,this);if(b.isLocked)return void(a.keyCode!==u&&a.preventDefault());switch(a.keyCode){case g:if(b.isCmdDown)return void b.selectAll();break;case i:return void(b.isOpen&&(a.preventDefault(),a.stopPropagation(),b.close()));case o:if(!a.ctrlKey||a.altKey)break;case n:if(!b.isOpen&&b.hasOptions)b.open();else if(b.$activeOption){b.ignoreHover=!0;var c=b.getAdjacentOption(b.$activeOption,1);c.length&&b.setActiveOption(c,!0,!0)}return void a.preventDefault();case l:if(!a.ctrlKey||a.altKey)break;case k:if(b.$activeOption){b.ignoreHover=!0;var d=b.getAdjacentOption(b.$activeOption,-1);d.length&&b.setActiveOption(d,!0,!0)}return void a.preventDefault();case h:return void(b.isOpen&&b.$activeOption&&(b.onOptionSelect({currentTarget:b.$activeOption}),a.preventDefault()));case j:return void b.advanceSelection(-1,a);case m:return void b.advanceSelection(1,a);case u:return b.settings.selectOnTab&&b.isOpen&&b.$activeOption&&(b.onOptionSelect({currentTarget:b.$activeOption}),b.isFull()||a.preventDefault()),void(b.settings.create&&b.createItem()&&a.preventDefault());case p:case q:return void b.deleteSelection(a)}return!b.isFull()&&!b.isInputHidden||(f?a.metaKey:a.ctrlKey)?void 0:void a.preventDefault()},onKeyUp:function(a){var b=this;if(b.isLocked)return a&&a.preventDefault();var c=b.$control_input.val()||”“;b.lastValue!==c&&(b.lastValue=c,b.onSearchChange©,b.refreshOptions(),b.trigger(”type“,c))},onSearchChange:function(a){var b=this,c=b.settings.load;c&&(b.loadedSearches.hasOwnProperty(a)||(b.loadedSearches=!0,b.load(function(d){c.apply(b,)})))},onFocus:function(a){var b=this,c=b.isFocused;return b.isDisabled?(b.blur(),a&&a.preventDefault(),!1):void(b.ignoreFocus||(b.isFocused=!0,”focus“===b.settings.preload&&b.onSearchChange(”“),c||b.trigger(”focus“),b.$activeItems.length||(b.showInput(),b.setActiveItem(null),b.refreshOptions(!!b.settings.openOnFocus)),b.refreshState()))},onBlur:function(a,b){var c=this;if(c.isFocused&&(c.isFocused=!1,!c.ignoreFocus)){if(!c.ignoreBlur&&document.activeElement===c.$dropdown_content)return c.ignoreBlur=!0,void c.onFocus(a);var d=function(){c.close(),c.setTextboxValue(”“),c.setActiveItem(null),c.setActiveOption(null),c.setCaret(c.items.length),c.refreshState(),(b||document.body).focus(),c.ignoreFocus=!1,c.trigger(”blur“)};c.ignoreFocus=!0,c.settings.create&&c.settings.createOnBlur?c.createItem(null,!1,d):d()}},onOptionHover:function(a){this.ignoreHover||this.setActiveOption(a.currentTarget,!1)},onOptionSelect:function(b){var c,d,e=this;b.preventDefault&&(b.preventDefault(),b.stopPropagation()),d=a(b.currentTarget),d.hasClass(”create“)?e.createItem(null,function(){e.settings.closeAfterSelect&&e.close()}):(c=d.attr(”data-value“),”undefined“!=typeof c&&(e.lastQuery=null,e.setTextboxValue(”“),e.addItem©,e.settings.closeAfterSelect?e.close():!e.settings.hideSelected&&b.type&&/mouse/.test(b.type)&&e.setActiveOption(e.getOption©)))},onItemSelect:function(a){var b=this;b.isLocked||”multi“===b.settings.mode&&(a.preventDefault(),b.setActiveItem(a.currentTarget,a))},load:function(a){var b=this,c=b.$wrapper.addClass(b.settings.loadingClass);b.loading++,a.apply(b,)},setTextboxValue:function(a){var b=this.$control_input,c=b.val()!==a;c&&(b.val(a).triggerHandler(”update“),this.lastValue=a)},getValue:function(){return this.tagType===v&&this.$input.attr(”multiple“)?this.items:this.items.join(this.settings.delimiter)},setValue:function(a,b){var c=b?[]:;F(this,c,function(){this.clear(b),this.addItems(a,b)})},setActiveItem:function(b,c){var d,e,f,g,h,i,j,k,l=this;if(”single“!==l.settings.mode){if(b=a(b),!b.length)return a(l.$activeItems).removeClass(”active“),l.$activeItems=[],void(l.isFocused&&l.showInput());if(d=c&&c.type.toLowerCase(),”mousedown“===d&&l.isShiftDown&&l.$activeItems.length){for(k=l.$control.children(”.active:last“),g=Array.prototype.indexOf.apply(l.$control.childNodes,[k]),h=Array.prototype.indexOf.apply(l.$control.childNodes,[b]),g>h&&(j=g,g=h,h=j),e=g;h>=e;e++)i=l.$control.childNodes,-1===l.$activeItems.indexOf(i)&&(a(i).addClass(”active“),l.$activeItems.push(i));c.preventDefault()}else”mousedown“===d&&l.isCtrlDown||”keydown“===d&&this.isShiftDown?b.hasClass(”active“)?(f=l.$activeItems.indexOf(b),l.$activeItems.splice(f,1),b.removeClass(”active“)):l.$activeItems.push(b.addClass(”active“)):(a(l.$activeItems).removeClass(”active“),l.$activeItems=[b.addClass(”active“)]);l.hideInput(),this.isFocused||l.focus()}},setActiveOption:function(b,c,d){var e,f,g,h,i,j=this;j.$activeOption&&j.$activeOption.removeClass(”active“),j.$activeOption=null,b=a(b),b.length&&(j.$activeOption=b.addClass(”active“),(c||!y©)&&(e=j.$dropdown_content.height(),f=j.$activeOption.outerHeight(!0),c=j.$dropdown_content.scrollTop()||0,g=j.$activeOption.offset().top-j.$dropdown_content.offset().top+c,h=g,i=g-e+f,g+f>e+c?j.$dropdown_content.stop().animate({scrollTop:i},d?j.settings.scrollDuration:0):c>g&&j.$dropdown_content.stop().animate({scrollTop:h},d?j.settings.scrollDuration:0)))},selectAll:function(){var a=this;”single“!==a.settings.mode&&(a.$activeItems=Array.prototype.slice.apply(a.$control.children(”:not(input)“).addClass(”active“)),a.$activeItems.length&&(a.hideInput(),a.close()),a.focus())},hideInput:function(){var a=this;a.setTextboxValue(”“),a.$control_input.css({opacity:0,position:”absolute“,left:a.rtl?1e4:-1e4}),a.isInputHidden=!0},showInput:function(){this.$control_input.css({opacity:1,position:”relative“,left:0}),this.isInputHidden=!1},focus:function(){var a=this;a.isDisabled||(a.ignoreFocus=!0,a.$control_input.focus(),window.setTimeout(function(){a.ignoreFocus=!1,a.onFocus()},0))},blur:function(a){this.$control_input.blur(),this.onBlur(null,a)},getScoreFunction:function(a){return this.sifter.getScoreFunction(a,this.getSearchOptions())},getSearchOptions:function(){var a=this.settings,b=a.sortField;return”string“==typeof b&&(b=),{fields:a.searchField,conjunction:a.searchConjunction,sort:b}},search:function(b){var c,d,e,f=this,g=f.settings,h=this.getSearchOptions();if(g.score&&(e=f.settings.score.apply(this,),”function“!=typeof e))throw new Error(’Selectize ”score“ setting must be a function that returns a function’);if(b!==f.lastQuery?(f.lastQuery=b,d=f.sifter.search(b,a.extend(h,{score:e})),f.currentResults=d):d=a.extend(!0,{},f.currentResults),g.hideSelected)for(c=d.items.length-1;c>=0;c–)-1!==f.items.indexOf(z(d.items.id))&&d.items.splice(c,1);return d},refreshOptions:function(b){var c,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;”undefined“==typeof b&&(b=!0);var t=this,u=a.trim(t.$control_input.val()),v=t.search(u),w=t.$dropdown_content,x=t.$activeOption&&z(t.$activeOption.attr(”data-value“));for(g=v.items.length,”number“==typeof t.settings.maxOptions&&(g=Math.min(g,t.settings.maxOptions)),h={},i=[],c=0;g>c;c++)for(j=t.options[v.items.id],k=t.render(”option“,j),l=j||”“,m=a.isArray(l)?l:,e=0,f=m&&m.length;f>e;e++)l=m,t.optgroups.hasOwnProperty(l)||(l=”“),h.hasOwnProperty(l)||(h=[],i.push(l)),h.push(k);for(this.settings.lockOptgroupOrder&&i.sort(function(a,b){var c=t.optgroups.$order||0,d=t.optgroups.$order||0;return c-d}),n=[],c=0,g=i.length;g>c;c++)l=i,t.optgroups.hasOwnProperty(l)&&h.length?(o=t.render(”optgroup_header“,t.optgroups)||”“,o+=h.join(”“),n.push(t.render(”optgroup“,a.extend({},t.optgroups,{html:o})))):n.push(h.join(”“));if(w.html(n.join(”“)),t.settings.highlight&&v.query.length&&v.tokens.length)for(c=0,g=v.tokens.length;g>c;c++)d(w,v.tokens.regex);if(!t.settings.hideSelected)for(c=0,g=t.items.length;g>c;c++)t.getOption(t.items).addClass(”selected“);p=t.canCreate(u),p&&(w.prepend(t.render(”option_create“,{input:u})),s=a(w.childNodes)),t.hasOptions=v.items.length>0||p,t.hasOptions?(v.items.length>0?(r=x&&t.getOption(x),r&&r.length?q=r:”single“===t.settings.mode&&t.items.length&&(q=t.getOption(t.items)),q&&q.length||(q=s&&!t.settings.addPrecedence?t.getAdjacentOption(s,1):w.find(”:first“))):q=s,t.setActiveOption(q),b&&!t.isOpen&&t.open()):(t.setActiveOption(null),b&&t.isOpen&&t.close())},addOption:function(b){var c,d,e,f=this;if(a.isArray(b))for(c=0,d=b.length;d>c;c++)f.addOption(b);else(e=f.registerOption(b))&&(f.userOptions=!0,f.lastQuery=null,f.trigger(”option_add“,e,b))},registerOption:function(a){var b=z(a);return!b||this.options.hasOwnProperty(b)?!1:(a.$order=a.$order||++this.order,this.options=a,b)},registerOptionGroup:function(a){var b=z(a);return b?(a.$order=a.$order||++this.order,this.optgroups=a,b):!1},addOptionGroup:function(a,b){b=a,(a=this.registerOptionGroup(b))&&this.trigger(”optgroup_add“,a,b)},removeOptionGroup:function(a){this.optgroups.hasOwnProperty(a)&&(delete this.optgroups,this.renderCache={},this.trigger(”optgroup_remove“,a))},clearOptionGroups:function(){this.optgroups={},this.renderCache={},this.trigger(”optgroup_clear“)},updateOption:function(b,c){var d,e,f,g,h,i,j,k=this;if(b=z(b),f=z(c),null!==b&&k.options.hasOwnProperty(b)){if(”string“!=typeof f)throw new Error(”Value must be set in option data“);j=k.options.$order,f!==b&&(delete k.options,g=k.items.indexOf(b),-1!==g&&k.items.splice(g,1,f)),c.$order=c.$order||j,k.options=c,h=k.renderCache.item,i=k.renderCache.option,h&&(delete h,delete h),i&&(delete i,delete i),-1!==k.items.indexOf(f)&&(d=k.getItem(b),e=a(k.render(”item“,c)),d.hasClass(”active“)&&e.addClass(”active“),d.replaceWith(e)),k.lastQuery=null,k.isOpen&&k.refreshOptions(!1)}},removeOption:function(a,b){var c=this;a=z(a);var d=c.renderCache.item,e=c.renderCache.option;d&&delete d,e&&delete e,delete c.userOptions,delete c.options,c.lastQuery=null,c.trigger(”option_remove“,a),c.removeItem(a,b)},clearOptions:function(){var a=this;a.loadedSearches={},a.userOptions={},a.renderCache={},a.options=a.sifter.items={},a.lastQuery=null,a.trigger(”option_clear“),a.clear()},getOption:function(a){return this.getElementWithValue(a,this.$dropdown_content.find(”“))},getAdjacentOption:function(b,c){var d=this.$dropdown.find(”“),e=d.index(b)+c;return e>=0&&e<d.length?d.eq(e):a()},getElementWithValue:function(b,c){if(b=z(b),”undefined“!=typeof b&&null!==b)for(var d=0,e=c.length;e>d;d++)if(c.getAttribute(”data-value“)===b)return a(c);return a()},getItem:function(a){return this.getElementWithValue(a,this.$control.children())},addItems:function(b,c){for(var d=a.isArray(b)?b:,e=0,f=d.length;f>e;e++)this.isPending=f-1>e,this.addItem(d,c)},addItem:function(b,c){var d=c?[]:;F(this,d,function(){var d,e,f,g,h,i=this,j=i.settings.mode;return b=z(b),-1!==i.items.indexOf(b)?void(”single“===j&&i.close()):void(i.options.hasOwnProperty(b)&&(”single“===j&&i.clear©,”multi“===j&&i.isFull()||(d=a(i.render(”item“,i.options)),h=i.isFull(),i.items.splice(i.caretPos,0,b),i.insertAtCaret(d),(!i.isPending||!h&&i.isFull())&&i.refreshState(),i.isSetup&&(f=i.$dropdown_content.find(”“),i.isPending||(e=i.getOption(b),g=i.getAdjacentOption(e,1).attr(”data-value“),i.refreshOptions(i.isFocused&&”single“!==j),g&&i.setActiveOption(i.getOption(g))),!f.length||i.isFull()?i.close():i.positionDropdown(),i.updatePlaceholder(),i.trigger(”item_add“,b,d),i.updateOriginalInput({silent:c})))))})},removeItem:function(a,b){var c,d,e,f=this;c=”object“==typeof a?a:f.getItem(a),a=z(c.attr(”data-value“)),d=f.items.indexOf(a),-1!==d&&(c.remove(),c.hasClass(”active“)&&(e=f.$activeItems.indexOf(c),f.$activeItems.splice(e,1)),f.items.splice(d,1),f.lastQuery=null,!f.settings.persist&&f.userOptions.hasOwnProperty(a)&&f.removeOption(a,b),d<f.caretPos&&f.setCaret(f.caretPos-1),f.refreshState(),f.updatePlaceholder(),f.updateOriginalInput({silent:b}),f.positionDropdown(),f.trigger(”item_remove“,a,c))},createItem:function(b,c){var d=this,e=d.caretPos;b=b||a.trim(d.$control_input.val()||”“);var f=arguments;if(”function“!=typeof f&&(f=function(){}),”boolean“!=typeof c&&(c=!0),!d.canCreate(b))return f(),!1;d.lock();var g=”function“==typeof d.settings.create?this.settings.create:function(a){var b={};return b=a,b=a,b},h=D(function(a){if(d.unlock(),!a||”object“!=typeof a)return f();var b=z(a);return”string“!=typeof b?f():(d.setTextboxValue(”“),d.addOption(a),d.setCaret(e),d.addItem(b),d.refreshOptions(c&&”single“!==d.settings.mode),void f(a))}),i=g.apply(this,);return”undefined“!=typeof i&&h(i),!0},refreshItems:function(){this.lastQuery=null,this.isSetup&&this.addItem(this.items),this.refreshState(),this.updateOriginalInput()},refreshState:function(){var a,b=this;b.isRequired&&(b.items.length&&(b.isInvalid=!1),b.$control_input.prop(”required“,a)),b.refreshClasses()},refreshClasses:function(){var b=this,c=b.isFull(),d=b.isLocked;b.$wrapper.toggleClass(”rtl“,b.rtl),b.$control.toggleClass(”focus“,b.isFocused).toggleClass(”disabled“,b.isDisabled).toggleClass(”required“,b.isRequired).toggleClass(”invalid“,b.isInvalid).toggleClass(”locked“,d).toggleClass(”full“,c).toggleClass(”not-full“,!c).toggleClass(”input-active“,b.isFocused&&!b.isInputHidden).toggleClass(”dropdown-active“,b.isOpen).toggleClass(”has-options“,!a.isEmptyObject(b.options)).toggleClass(”has-items“,b.items.length>0),b.$control_input.data(”grow“,!c&&!d)},isFull:function(){return null!==this.settings.maxItems&&this.items.length>=this.settings.maxItems},updateOriginalInput:function(a){var b,c,d,e,f=this;if(a=a||{},f.tagType===v){for(d=[],b=0,c=f.items.length;c>b;b++)e=f.options[f.items][f.settings.labelField]||”“,d.push(‘<option value=”’+A(f.items)+‘“ selected=”selected“>’+A(e)+”</option>“);d.length||this.$input.attr(”multiple“)||d.push(‘<option value=”“ selected=”selected“></option>’),f.$input.html(d.join(”“))}else f.$input.val(f.getValue()),f.$input.attr(”value“,f.$input.val());f.isSetup&&(a.silent||f.trigger(”change“,f.$input.val()))},updatePlaceholder:function(){if(this.settings.placeholder){var a=this.$control_input;this.items.length?a.removeAttr(”placeholder“):a.attr(”placeholder“,this.settings.placeholder),a.triggerHandler(”update“,{force:!0})}},open:function(){var a=this;a.isLocked||a.isOpen||”multi“===a.settings.mode&&a.isFull()||(a.focus(),a.isOpen=!0,a.refreshState(),a.$dropdown.css({visibility:”hidden“,display:”block“}),a.positionDropdown(),a.$dropdown.css({visibility:”visible“}),a.trigger(”dropdown_open“,a.$dropdown))},close:function(){var a=this,b=a.isOpen;”single“===a.settings.mode&&a.items.length&&a.hideInput(),a.isOpen=!1,a.$dropdown.hide(),a.setActiveOption(null),a.refreshState(),b&&a.trigger(”dropdown_close“,a.$dropdown)},positionDropdown:function(){var a=this.$control,b=”body“===this.settings.dropdownParent?a.offset():a.position();b.top+=a.outerHeight(!0),this.$dropdown.css({width:a.outerWidth(),top:b.top,left:b.left})},clear:function(a){var b=this;b.items.length&&(b.$control.children(”:not(input)“).remove(),b.items=[],b.lastQuery=null,b.setCaret(0),b.setActiveItem(null),b.updatePlaceholder(),b.updateOriginalInput({silent:a}),b.refreshState(),b.showInput(),b.trigger(”clear“))},insertAtCaret:function(b){var c=Math.min(this.caretPos,this.items.length);0===c?this.$control.prepend(b):a(this.$control.childNodes).before(b),this.setCaret(c+1)},deleteSelection:function(b){var c,d,e,f,g,h,i,j,k,l=this;if(e=b&&b.keyCode===p?-1:1,f=H(l.$control_input),l.$activeOption&&!l.settings.hideSelected&&(i=l.getAdjacentOption(l.$activeOption,-1).attr(”data-value“)),g=[],l.$activeItems.length){for(k=l.$control.children(”.active:“+(e>0?”last“:”first“)),h=l.$control.children(”:not(input)“).index(k),e>0&&h++,c=0,d=l.$activeItems.length;d>c;c++)g.push(a(l.$activeItems).attr(”data-value“)); b&&(b.preventDefault(),b.stopPropagation())}else(l.isFocused||”single“===l.settings.mode)&&l.items.length&&(0>e&&0===f.start&&0===f.length?g.push(l.items):e>0&&f.start===l.$control_input.val().length&&g.push(l.items));if(!g.length||”function“==typeof l.settings.onDelete&&l.settings.onDelete.apply(l,)===!1)return!1;for(”undefined“!=typeof h&&l.setCaret(h);g.length;)l.removeItem(g.pop());return l.showInput(),l.positionDropdown(),l.refreshOptions(!0),i&&(j=l.getOption(i),j.length&&l.setActiveOption(j)),!0},advanceSelection:function(a,b){var c,d,e,f,g,h,i=this;0!==a&&(i.rtl&&(a*=-1),c=a>0?”last“:”first“,d=H(i.$control_input),i.isFocused&&!i.isInputHidden?(f=i.$control_input.val().length,g=0>a?0===d.start&&0===d.length:d.start===f,g&&!f&&i.advanceCaret(a,b)):(h=i.$control.children(”.active:“+c),h.length&&(e=i.$control.children(”:not(input)“).index(h),i.setActiveItem(null),i.setCaret(a>0?e+1:e))))},advanceCaret:function(a,b){var c,d,e=this;0!==a&&(c=a>0?”next“:”prev“,e.isShiftDown?(d=e.$control_input(),d.length&&(e.hideInput(),e.setActiveItem(d),b&&b.preventDefault())):e.setCaret(e.caretPos+a))},setCaret:function(b){var c=this;if(b=”single“===c.settings.mode?c.items.length:Math.max(0,Math.min(c.items.length,b)),!c.isPending){var d,e,f,g;for(f=c.$control.children(”:not(input)“),d=0,e=f.length;e>d;d++)g=a(f).detach(),b>d?c.$control_input.before(g):c.$control.append(g)}c.caretPos=b},lock:function(){this.close(),this.isLocked=!0,this.refreshState()},unlock:function(){this.isLocked=!1,this.refreshState()},disable:function(){var a=this;a.$input.prop(”disabled“,!0),a.$control_input.prop(”disabled“,!0).prop(”tabindex“,-1),a.isDisabled=!0,a.lock()},enable:function(){var a=this;a.$input.prop(”disabled“,!1),a.$control_input.prop(”disabled“,!1).prop(”tabindex“,a.tabIndex),a.isDisabled=!1,a.unlock()},destroy:function(){var b=this,c=b.eventNS,d=b.revertSettings;b.trigger(”destroy“),b.off(),b.$wrapper.remove(),b.$dropdown.remove(),b.$input.html(”“).append(d.$children).removeAttr(”tabindex“).removeClass(”selectized“).attr({tabindex:d.tabindex}).show(),b.$control_input.removeData(”grow“),b.$input.removeData(”selectize“),a(window).off©,a(document).off©,a(document.body).off©,delete b.$input.selectize},render:function(a,b){var c,d,e=”“,f=!1,g=this,h=/^[t rn]*<([a-z][a-z0-9-_]*(?::[a-z0-9-_]*)?)/i;return(”option“===a||”item“===a)&&(c=z(b),f=!!c),f&&(y(g.renderCache)||(g.renderCache={}),g.renderCache.hasOwnProperty©)?g.renderCache[c]:(e=g.settings.render.apply(this,),(”option“===a||”option_create“===a)&&(e=e.replace(h,”<$1 data-selectable“)),”optgroup“===a&&(d=b||”“,e=e.replace(h,‘<$1 data-group=”’+B(A(d))+‘“’)),(”option“===a||”item“===a)&&(e=e.replace(h,‘<$1 data-value=”’+B(A(c||“”))+‘“’)),f&&(g.renderCache[c]=e),e)},clearCache:function(a){var b=this;”undefined“==typeof a?b.renderCache={}:delete b.renderCache},canCreate:function(a){var b=this;if(!b.settings.create)return!1;var c=b.settings.createFilter;return!(!a.length||”function“==typeof c&&!c.apply(b,)||”string“==typeof c&&!new RegExp©.test(a)||c instanceof RegExp&&!c.test(a))}}),L.count=0,L.defaults={options:[],optgroups:,plugins:[],delimiter:”,“,splitOn:null,persist:!0,diacritics:!0,create:!1,createOnBlur:!1,createFilter:null,highlight:!0,openOnFocus:!0,maxOptions:1e3,maxItems:null,hideSelected:null,addPrecedence:!1,selectOnTab:!1,preload:!1,allowEmptyOption:!1,closeAfterSelect:!1,scrollDuration:60,loadThrottle:300,loadingClass:”loading“,dataAttr:”data-data“,optgroupField:”optgroup“,valueField:”value“,labelField:”text“,optgroupLabelField:”label“,optgroupValueField:”value“,lockOptgroupOrder:!1,sortField:”$order“,searchField:,searchConjunction:”and“,mode:null,wrapperClass:”selectize-control“,inputClass:”selectize-input“,dropdownClass:”selectize-dropdown“,dropdownContentClass:”selectize-dropdown-content“,dropdownParent:null,copyClassesToDropdown:!0,render:{}},a.fn.selectize=function(b){var c=a.fn.selectize.defaults,d=a.extend({},c,b),e=d.dataAttr,f=d.labelField,g=d.valueField,h=d.optgroupField,i=d.optgroupLabelField,j=d.optgroupValueField,k=function(b,c){var h,i,j,k,l=b.attr(e);if(l)for(c.options=JSON.parse(l),h=0,i=c.options.length;i>h;h++)c.items.push(c.options[g]);else{var m=a.trim(b.val()||”“);if(!d.allowEmptyOption&&!m.length)return;for(j=m.split(d.delimiter),h=0,i=j.length;i>h;h++)k={},k=j,k=j,c.options.push(k);c.items=j}},l=function(b,c){var k,l,m,n,o=c.options,p={},q=function(a){var b=e&&a.attr(e);return”string“==typeof b&&b.length?JSON.parse(b):null},r=function(b,e){b=a(b);var i=z(b.attr(”value“));if(i||d.allowEmptyOption)if(p.hasOwnProperty(i)){if(e){var j=p[h];j?a.isArray(j)?j.push(e):p[h]=:p[h]=e}}else{var k=q(b)||{};k=k||b.text(),k=k||i,k=k||e,p=k,o.push(k),b.is(”:selected“)&&c.items.push(i)}},s=function(b){var d,e,f,g,h;for(b=a(b),f=b.attr(”label“),f&&(g=q(b)||{},g=f,g=f,c.optgroups.push(g)),h=a(”option“,b),d=0,e=h.length;e>d;d++)r(h,f)};for(c.maxItems=b.attr(”multiple“)?null:1,n=b.children(),k=0,l=n.length;l>k;k++)m=n.tagName.toLowerCase(),”optgroup“===m?s(n):”option“===m&&r(n)};return this.each(function(){if(!this.selectize){var e,f=a(this),g=this.tagName.toLowerCase(),h=f.attr(”placeholder“)||f.attr(”data-placeholder“);h||d.allowEmptyOption||(h=f.children(‘option’).text());var i={placeholder:h,options:[],optgroups:,items:[]};”select“===g?l(f,i):k(f,i),e=new L(f,a.extend(!0,{},c,i,b))}})},a.fn.selectize.defaults=L.defaults,a.fn.selectize.support={validity:x},L.define(”drag_drop“,function(){if(!a.fn.sortable)throw new Error(‘The ”drag_drop“ plugin requires jQuery UI ”sortable“.’);if(”multi“===this.settings.mode){var b=this;b.lock=function(){var a=b.lock;return function(){var c=b.$control.data(”sortable“);return c&&c.disable(),a.apply(b,arguments)}}(),b.unlock=function(){var a=b.unlock;return function(){var c=b.$control.data(”sortable“);return c&&c.enable(),a.apply(b,arguments)}}(),b.setup=function(){var c=b.setup;return function(){c.apply(this,arguments);var d=b.$control.sortable({items:”“,forcePlaceholderSize:!0,disabled:b.isLocked,start:function(a,b){b.placeholder.css(”width“,b.helper.css(”width“)),d.css({overflow:”visible“})},stop:function(){d.css({overflow:”hidden“});var c=b.$activeItems?b.$activeItems.slice():null,e=[];d.children(”“).each(function(){e.push(a(this).attr(”data-value“))}),b.setValue(e),b.setActiveItem©}})}}()}}),L.define(”dropdown_header“,function(b){var c=this;b=a.extend({title:”Untitled“,headerClass:”selectize-dropdown-header“,titleRowClass:”selectize-dropdown-header-title“,labelClass:”selectize-dropdown-header-label“,closeClass:”selectize-dropdown-header-close“,html:function(a){return’<div class=”‘a.headerClass’“><div class=”‘a.titleRowClass’“><span class=”‘a.labelClass’“>‘a.title’</span><a href=”javascript:void(0)“ class=”‘a.closeClass’“>&times;</a></div></div>‘}},b),c.setup=function(){var d=c.setup;return function(){d.apply(c,arguments),c.$dropdown_header=a(b.html(b)),c.$dropdown.prepend(c.$dropdown_header)}}()}),L.define(”optgroup_columns“,function(b){var c=this;b=a.extend({equalizeWidth:!0,equalizeHeight:!0},b),this.getAdjacentOption=function(b,c){var d=b.closest(”“).find(”“),e=d.index(b)+c;return e>=0&&e<d.length?d.eq(e):a()},this.onKeyDown=function(){var a=c.onKeyDown;return function(b){var d,e,f,g;return!this.isOpen||b.keyCode!==j&&b.keyCode!==m?a.apply(this,arguments):(c.ignoreHover=!0,g=this.$activeOption.closest(”“),d=g.find(”“).index(this.$activeOption),g=b.keyCode===j?g.prev(”“):g.next(”“),f=g.find(”“),e=f.eq(Math.min(f.length-1,d)),void(e.length&&this.setActiveOption(e)))}}();var d=function(){var a,b=d.width,c=document;return”undefined“==typeof b&&(a=c.createElement(”div“),a.innerHTML=’<div style=”width:50px;height:50px;position:absolute;left:-50px;top:-50px;overflow:auto;“><div style=”width:1px;height:100px;“></div></div>‘,a=a.firstChild,c.body.appendChild(a),b=d.width=a.offsetWidth-a.clientWidth,c.body.removeChild(a)),b},e=function(){var e,f,g,h,i,j,k;if(k=a(”“,c.$dropdown_content),f=k.length,f&&c.$dropdown_content.width()){if(b.equalizeHeight){for(g=0,e=0;f>e;e++)g=Math.max(g,k.eq(e).height());k.css({height:g})}b.equalizeWidth&&(j=c.$dropdown_content.innerWidth()-d(),h=Math.round(j/f),k.css({width:h}),f>1&&(i=j-h*(f-1),k.eq(f-1).css({width:i})))}};(b.equalizeHeight||b.equalizeWidth)&&(C.after(this,”positionDropdown“,e),C.after(this,”refreshOptions“,e))}),L.define(”remove_button“,function(b){if(”single“!==this.settings.mode){b=a.extend({label:”&times;“,title:”Remove“,className:”remove“,append:!0},b);var c=this,d=’<a href=”javascript:void(0)“ class=”‘b.className’“ tabindex=”-1“ title=”‘+A(b.title)+’“>‘b.label”</a>“,e=function(a,b){var a},this.onKeyDown=function(){var c=b.onKeyDown;return function(b){var d,e;return b.keyCode===p&&“”===this.$control_input.val()&&!this.$activeItems.length&&(d=this.caretPos-1,d>=0&&d],this.deleteSelection(b)&&(this.setTextboxValue(a.text.apply(this,)),this.refreshOptions(!0)),void b.preventDefault()):c.apply(this,arguments)}}()}),L}); (function() {

$(function() {
  return $('input[type="date"]').datepicker({
    format: 'yyyy-mm-dd',
    orientation: "top left"
  });
});

}).call(this);